Chinaunix

标题: 软中断调用 neigh_lookup_nodev 内核crash [打印本页]

作者: firocu    时间: 2013-09-26 10:35
标题: 软中断调用 neigh_lookup_nodev 内核crash


Hi, all

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

作者: firocu    时间: 2013-09-26 14:39
找到问题了, 缺少了一句;
neigh_release(neigh);
作者: 瀚海书香    时间: 2013-09-30 13:06
回复 2# firocu
找到问题了, 缺少了一句;
neigh_release(neigh);



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

   
作者: lantiaoxian    时间: 2016-08-03 15:03
回复 1# firocu 能贴下完整代码吗?为什么我在hook里面调您写的这个函数造成协议栈崩。


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2