帮我看看这些代码--关于链路层转发数据包

mrrdh007 2005-01-06 04:14:01
一、内核版本2.6.10
1。在dev.c文件中定义函数指针int (*fp)(struct sk_buff *) = 0
并立即EXPORT_SYMBOL(fp)
然后在netif_rx()函数的最开始添加了我的代码:
if (fp && ((*fp)(skb_copy(skb, GFP_ATOMIC)))) {
kfree_skb(skb);
return NET_RX_DROP;
}
...
这样重新编译内核后,在kallsyms中看不到fp这个符号,而system.map中存在fp,这是怎么回事?
2。我自己编写的内核模块
int init_module(void)
{
fp = dr_test;
printk("starting\n");
return 0;
}
void cleanup_module(void)
{
fp = 0;
printk("stop\n");
}
int dr_test(struct sk_buff *skb) //回调函数
{
printk("haha\n");
return 1;
}
insmod模块之后发现并不能截获到本机的数据包,就是说在var/log/messages中没有出现“haha”字串。但是如果本机自己请求本机,就可以拦截这个数据包,这又是怎么回事??

二、内核版本2.4.20
1。内核符号导出完全正确
2。在dr_test()中截获数据包完全正常,但是我转发数据包的时候死机:
skb->dev->hard_header(skb,skb->dev,ntohs(skb->protocol),MAC_ADDR,eth->h_source,skb- >len);
skb->dev->hard_start_xmit(skb,skb->dev); //死机!!!如果没有这句就ok

唉,发现不会的、不理解的东西太多了,希望大哥解答一下。
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gettext 2005-01-08
  • 打赏
  • 举报
回复
硬件驱动装好了吗?
booming 2005-01-08
  • 打赏
  • 举报
回复
sdfi
up
mrrdh007 2005-01-08
  • 打赏
  • 举报
回复
to gettext:
硬件驱动装好了吗?
???????不太理解,没装好能上网吗?
mrrdh007 2005-01-07
  • 打赏
  • 举报
回复
唉,没人吗?
RichardQLv 2005-01-07
  • 打赏
  • 举报
回复
帮你顶一下
我现在也想搞这块
可惜自己也不懂
关注ing
jim138 2005-01-06
  • 打赏
  • 举报
回复
UP :))
沙发。。。。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧