LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1481|回复: 1

PF_RING:dev_add_pcak error

[复制链接]
发表于 2010-5-19 10:12:27 | 显示全部楼层 |阅读模式
小弟现在需要用pf_ring来提高linux抓包性能(用于ARM开发板上,Linux 2.6.23.1),千辛万苦把pf_ring.ko(一内核模块)编译出来之后,一insmod,就导致板子重启,后来我一个个函数排查,发现是dev_add_pack()出问题了,因为当我把它注释掉之后加载卸载都没问题,当然,这个一注释掉需要的功能就没有了。下面我贴一下调用dev_add_pack()的代码和其本身的代码:

void register_device_handler(void) {
  if(transparent_mode != standard_linux_path) return;

  prot_hook.func = packet_rcv;
  prot_hook.type = htons(ETH_P_ALL);
  dev_add_pack(&prot_hook);
}

void dev_add_pack(struct packet_type *pt)
{
        int hash;

        spin_lock_bh(&ptype_lock);
        if (pt->type == htons(ETH_P_ALL))
                list_add_rcu(&pt->list, &ptype_all);
        else {
                hash = ntohs(pt->type) & 15;
                list_add_rcu(&pt->list, &ptype_base[hash]);
        }
        spin_unlock_bh(&ptype_lock);
}

希望高手指点一下这是什么原因,小弟在此谢过!
发表于 2010-5-20 14:23:52 | 显示全部楼层

dev_add_pack自身没有问题

(1)dev_add_pack函数自身不会问题,IP4,IP6,IPX等
   协议栈都是透过此函数添加的,并运转良好。
(2)问题最可能出现在你自身的封包过滤函数packet_rcv,
   上。你在该函数中,drop掉所有skb,然后返回0,看看
   是否还有重启现象
(3)如果没有,就确认是packet_rcv出问题了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表