2014-03-29 141 views
0

我工作的项目有丢弃捕获的数据包的要求。我成功captuing包与使用libpcap像这样,丢弃捕获的数据包

pcap_loop(handle, num_packets, got_packet, NULL); 

凡在回调函数我捕捉到num_packets参数数据包的给定数。我的要求是放弃捕获的数据包。

我试过检查帮助,最后空手而归。任何引用代码片段来执行这个通过libpcap丢弃捕获的数据包的要求是非常值得赞赏的。 :)


编辑 替代建议,欢迎如果通过libpcap是不可能的。

注意的是丢弃数据包之前,我需要获取数据包的destination/ source ip address和​​被丢弃。

+1

也许这个问题有帮助http://stackoverflow.com/q/1284759/1741542 –

+0

@OlafDietsche谢谢你的评论:)这就是不幸的运气..我们必须拿出自己的机制不是它。有没有可以执行此操作的库? –

回答

1

我不知道,如果有图书馆。 Libpcap仅用于网络数据包捕获,AFAIK。

从我有限的知识,我会说丢弃分组只是忽视或不转发它。然而,这不是在某些程序中完成的,而是内核的网络堆栈。

你可以做到这一点,在netfilter定义适当的规则。在那里,你还会发现libnftnl,它允许与Linux netfilter子系统通信。但是,当我阅读它时,您只能定义规则而不放弃单个数据包。

+0

谢谢先生您的回复..我会检查你所告知的:) –

+0

“Libpcap仅用于网络数据包捕获,AFAIK。”你100%正确。 “我认为丢弃一个数据包只是忽略或不转发它,但是这不是在某些程序中完成的,而是内核的网络堆栈。”是。要做到这一点的方式取决于操作系统;这个问题被标记为“linux”,所以他们大概运行Linux。我认为有许多方法可以让用户模式代码可以决定丢弃或不丢弃数据包(而不必为内核提供规则)。 – 2014-03-29 18:48:23