ARP输入 之 arp_process
概述 arp_process为ARP输入包的核心处理流程; 若输入为ARP请求且查路由成功,则进行如下判断:输入到本地,则进行应答;否则,允许转发,则转发,本文代码不包含转发流程; 若输入为ARP应答或者查路由失败,则更新邻居项; 源码分析 1 static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb) 2 { 3 struct net_device *dev = skb->dev; 4 struct in_device *in_dev = __in_dev_get_rcu(dev); 5 struct arphdr *arp; 6 unsigned char *arp_ptr; 7 struct rtable *rt; 8 unsigned char *sha; 9 unsigned char *tha = NULL; 10 __be32 sip, tip; 11 u16 dev_type = dev->type; 12 int addr_type; 13 struct neighbour *n; 14 struct dst_entry *reply_dst = NULL; 15 bool is_garp = false; 16 17 /* arp_rcv below verifies