arp模块neigh_update函数中的new在哪里定义
在看arp部分的代码在neighbour.c的int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, int override, int arp)函数中出现了符号new,这个函数用来更新neigh,但是我没有找到new的定义(用了Source Insight)。根据代码new应该是一个常量。
哪位大侠能解释一下呢
谢谢 呵呵
问题更多了
在arp。c中
int arp_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt)
中, 为什么所有arp表的neigh_update后面都有一个neigh_release呢?
这一段代码
/* Update our ARP tables */
n = __neigh_lookup(&arp_tbl, &sip, dev, 0);
#ifdef CONFIG_IP_ACCEPT_UNSOLICITED_ARP
/* Unsolicited ARP is not accepted by default.
It is possible, that this option should be enabled for some
devices (strip is candidate)
*/
if (n == NULL &&
arp->ar_op == __constant_htons(ARPOP_REPLY) &&
inet_addr_type(sip) == RTN_UNICAST)
n = __neigh_lookup(&arp_tbl, &sip, dev, -1);
#endif
好像是说如果收到的arp请求的sip在arp表中没有,则默认不响应的。
这样一些free arp的处理是不是就不对了呢
多谢指教 呵呵
new居然是参数,太丢人了.呵呵
第二个问题是free arp并不是标准
预防arp欺骗的最好办法是静态配置
我改了一下我自己机器的arp部分。当neighbour的type为某个值时,update时不作任何处理。然后增加一条系统调用管理这种静态配置的arp项。
呵呵
以后在局域网里,心情不爽的时候,我就一个人独用2M的带宽了。其他同学就,嘻嘻 :mrgreen:
页:
[1]