firocu 发表于 2013-09-26 10:35

软中断调用 neigh_lookup_nodev 内核crash



Hi, all

我想查下arp表的到对应ip的mac。
在NF PREROUTE 上加了个挂载点。 对每个包都处理。
下面就是得到mac的代码, 不知哪里出错了, 我看内核里面都是这么用的。            neigh= neigh_lookup_nodev(&arp_tbl, &init_net, &dip);
            if (neigh) {
                do {
                  seq = read_seqbegin(&neigh->ha_lock);
                  memcpy(src_mac, neigh->ha, ETH_ALEN);
                  QOS_DBG("src:%02X:%02x:%02x:%02x:%02x:%02x", src_mac, src_mac,
                              src_mac, src_mac, src_mac, src_mac);
                } while (read_seqretry(&neigh->ha_lock, seq));
            }   

firocu 发表于 2013-09-26 14:39

找到问题了, 缺少了一句;
neigh_release(neigh);

瀚海书香 发表于 2013-09-30 13:06

回复 2# firocu
找到问题了, 缺少了一句;
neigh_release(neigh);
:mrgreen:

BTW: 为什么不放到arp filter上?

   

lantiaoxian 发表于 2016-08-03 15:03

回复 1# firocu 能贴下完整代码吗?为什么我在hook里面调您写的这个函数造成协议栈崩。


   
页: [1]
查看完整版本: 软中断调用 neigh_lookup_nodev 内核crash