Linux邻居子系统:ARP与NDISC协议深度解析
1. ARP协议处理流程
1.1 arp_xmit()方法
arp_xmit() 方法的主要作用是通过 NF_HOOK() 宏调用 dev_queue_xmit() ,以下是简单示例代码:
arp_xmit(skb);
1.2 arp_rcv()方法
在IPv4中, arp_rcv() 方法负责处理ARP数据包。其处理流程如下:
1. 检查接收ARP数据包的网络设备是否设置了 IFF_NOARP 标志,或者数据包是否不是发往本地机器,或者是否是环回设备的数据包。如果是,则丢弃该数据包。
2. 如果SKB是共享的,使用 skb_share_check() 方法克隆它。
3. 检查ARP头的长度和格式是否正确。
4. 调用 arp_process() 方法进行进一步处理。
以下是 arp_rcv() 方法的代码:
static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
struct packet_type *pt, struct net_de
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



