- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有两个(可能相关的)问题,但我会先描述标题中提到的那个。
我正在修改 dummy network device driver将传输的 UDP 数据包回显到传输接口(interface)。在ndo_start_xmit
的回调函数中,我添加了以下代码来回显发送的数据包:
struct sk_buff *skb2;
unsigned char *ptr;
skb2 = netdev_alloc_skb(dev, pkt_len + 2);
if(skb2)
{
ptr = skb_put(skb2 , pkt_len);
memcpy(ptr , (void*)skb->data, pkt_len);
/* Code to swap source and destination IP & Ports and increment tx rx counts here */
netif_rx(skb2);
}
现在,如果我在插入此模块后为接口(interface)分配 IP,在此接口(interface)上发送数据包,然后运行 ifconfig dummy0
,我将得到以下输出:
dummy0 Link encap:Ethernet HWaddr 42:cd:19:7d:52:3f
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::40cd:19ff:fe7d:523f/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:4 errors:0 dropped:4 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:192 (192.0 B) TX bytes:258 (258.0 B)
在这里我们可以看到,随着数据包 TX 和 RX 计数的增加,RX Drop 计数也在增加。有人可以指出数据包被丢弃的原因吗?
现在谈到第二个问题,如果我尝试运行 tcpdump
来捕获数据包,一旦一些数据包到达此 dummy0
接口(interface)的 RX,整个虚拟机器挂起(我猜内核 panic )。导致此问题的代码中是否缺少某些内容?
最佳答案
我能够通过添加来解决这两个问题:
skb2->protocol = eth_type_trans(skb2, dev);
就在 netif_rx(skb2)
之前。
关于linux - 从虚拟 Linux 网络设备驱动程序发送的 RX 数据包被丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52405181/
我正在为 Windows 创建一个 WiFi 程序,我是网络编程的新手。 我正在使用 native Wifi API 来获取有关网络的信息,但现在我想要有关连接到网络的其他设备的信息。 有人知道我应该
我正在尝试使用 AX.25 封装创建 TUN 网络设备。有效的是:- 创 build 备- 将其封装设置为 ax25 什么不起作用是设置它的硬件地址。这在 ax.25 通信中至关重要,因为它用于唯一寻
我是一名优秀的程序员,十分优秀!