linux netfilter hook中自己构造skbuff,发送全新数据包
linux netfilter hook中自己构造skbuff,发送全新数据包!大虾可以给点思路:em02: :em02: :em02:
如果自己申请skbuff内存,最后,到底怎么让其释放掉~ 我以前总结过这样一篇文章,LZ可以参考一下:
http://blog.chinaunix.net/u/33048/showart_2043789.html
至于数据包的释放,数据包最终由网卡发出去的时候,系统会将其释放的。 原帖由 meijusan123 于 2009-11-5 16:45 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
linux netfilter hook中自己构造skbuff,发送全新数据包!
大虾可以给点思路:em02: :em02: :em02:
如果自己申请skbuff内存,最后,到底怎么让其释放掉~
有些封包接口会自己释放 不需要你释放 参考ipt_REJECT模块代码! 原帖由 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头?
回复 #4 kwest 的帖子
参考过,是可以实现。但,他是 NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, nskb, NULL, nskb->dst->dev,
dst_output);
一个过程,而不是直接dev_queue_xmit(),哪,mac头是怎么封装的
回复 #3 故哈 的帖子
是呀,我看了dev_queue_xmit()里面,是实现了kfree_skb()的过程!~回复 #7 meijusan123 的帖子
没有吧,我认为转发的skb最终的释放不是在dev_queue_xmit中,而是在硬件发送完成,触发的软中断中 原帖由 meijusan123 于 2009-11-6 17:46 发表 http://linux.chinaunix.net/bbs/images/common/back.gif谢谢楼主,你的文章写了很好。但,我有些疑问想提一下!
就是在hook中我手动封装一个数据包,包括对mac,ip,tcp头和数据段,最后通过dev_queue_xmit()发送,是可以实现的,我试验过。
如果,我手动封装 ...
同样是我的总结的那文章说的一种方式,封装数据包之后让它进行路由。