dongni386 发表于 2005-6-9 23:35:29

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应该是一个常量。
哪位大侠能解释一下呢
谢谢

dongni386 发表于 2005-6-10 16:13:51

呵呵
问题更多了
在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的处理是不是就不对了呢
多谢指教

dongni386 发表于 2005-6-14 23:51:07

呵呵
new居然是参数,太丢人了.呵呵
第二个问题是free arp并不是标准
预防arp欺骗的最好办法是静态配置
我改了一下我自己机器的arp部分。当neighbour的type为某个值时,update时不作任何处理。然后增加一条系统调用管理这种静态配置的arp项。
呵呵
以后在局域网里,心情不爽的时候,我就一个人独用2M的带宽了。其他同学就,嘻嘻 :mrgreen:
页: [1]
查看完整版本: arp模块neigh_update函数中的new在哪里定义