meijusan123 发表于 2009-11-05 16:45

linux netfilter hook中自己构造skbuff,发送全新数据包

linux netfilter hook中自己构造skbuff,发送全新数据包!
大虾可以给点思路:em02: :em02: :em02:

如果自己申请skbuff内存,最后,到底怎么让其释放掉~

godbach 发表于 2009-11-05 16:54

我以前总结过这样一篇文章,LZ可以参考一下:
http://blog.chinaunix.net/u/33048/showart_2043789.html

至于数据包的释放,数据包最终由网卡发出去的时候,系统会将其释放的。

故哈 发表于 2009-11-06 09:10

原帖由 meijusan123 于 2009-11-5 16:45 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
linux netfilter hook中自己构造skbuff,发送全新数据包!
大虾可以给点思路:em02: :em02: :em02:

如果自己申请skbuff内存,最后,到底怎么让其释放掉~
有些封包接口会自己释放 不需要你释放

kwest 发表于 2009-11-06 10:24

参考ipt_REJECT模块代码!

meijusan123 发表于 2009-11-06 17:46

原帖由 godbach 于 2009-11-5 16:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
我以前总结过这样一篇文章,LZ可以参考一下:
http://blog.chinaunix.net/u/33048/showart_2043789.html

至于数据包的释放,数据包最终由网卡发出去的时候,系统会将其释放的。


谢谢楼主,你的文章写了很好。但,我有些疑问想提一下!
就是在hook中我手动封装一个数据包,包括对mac,ip,tcp头和数据段,最后通过dev_queue_xmit()发送,是可以实现的,我试验过。
如果,我手动封装一个数据包只封装了ip,tcp和数据段,最后还是通过dev_queue_xmit()发送出去,中途怎么让系统自己动给我封装一个mac头?

meijusan123 发表于 2009-11-06 17:47

回复 #4 kwest 的帖子

参考过,是可以实现。
但,他是        NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, nskb, NULL, nskb->dst->dev,
                dst_output);
一个过程,而不是直接dev_queue_xmit(),哪,mac头是怎么封装的

meijusan123 发表于 2009-11-06 17:48

回复 #3 故哈 的帖子

是呀,我看了dev_queue_xmit()里面,是实现了kfree_skb()的过程!~

lyl19 发表于 2009-11-06 20:17

回复 #7 meijusan123 的帖子

没有吧,我认为转发的skb最终的释放不是在dev_queue_xmit中,而是在硬件发送完成,触发的软中断中

godbach 发表于 2009-11-06 22:41

原帖由 meijusan123 于 2009-11-6 17:46 发表 http://linux.chinaunix.net/bbs/images/common/back.gif



谢谢楼主,你的文章写了很好。但,我有些疑问想提一下!
就是在hook中我手动封装一个数据包,包括对mac,ip,tcp头和数据段,最后通过dev_queue_xmit()发送,是可以实现的,我试验过。
如果,我手动封装 ...

同样是我的总结的那文章说的一种方式,封装数据包之后让它进行路由。

meijusan123 发表于 2009-11-07 08:28

回复 #8 lyl19 的帖子

难道 ,是在硬件驱动中实现释放的过程?
页: [1] 2 3
查看完整版本: linux netfilter hook中自己构造skbuff,发送全新数据包