2013-04-05 30 views
2

我们正在使用dev_add_pack与ETH_P_ALL度日的eth1接收的所有以太网帧的sk_buff的副本阻断的eth0接收的数据包。有没有我们可以防止eth1的从转发所有的以太网帧达TCP/IP层,同时仍然可以让它捕获所有的帧,并且将它传递给我们的加载内核模块的方法吗?如何从上升到TCP/IP堆栈

+0

刚刚发现netem可以用来引起像这样100%的丢包。 : 须藤TC队列规定添加开发ETH4根netem损失100% – lithiumhead 2013-04-10 11:59:14

回答

2

最好的办法是建立一个网络过滤器钩子。而不是dev_add_pack,其获取的sk_buff(从而使原来的sk_buff传播到TCP/IP协议栈的副本,​​一个网络过滤器钩子会给你的指针到原来的sk_buff在其穿过堆栈,你的代码实际执行从堆本身的回调 - 这样你就可以选择阻止你的模块中的数据包,主张所有权,或在您的头脑做几乎任何事情

+0

谢谢正是我一直在寻找 – lithiumhead 2013-04-05 11:42:05

+0

[Linux的2.4 netfilter的架构(http://www.6test.edu.cn/~lujx/linux_networking/! 0131777203_ch19lev1sec3.html)这很有用! – lithiumhead 2013-04-05 11:42:49