libpcap:哪些平台通过pcap_set_timeout()支持数据包缓冲区超时



如果在设定的时间段内没有收到数据包,我希望pcap_dispatch()超时。类似于这个SO问题。

在pcap(3(手册页中,它说并非所有平台都支持

并非所有平台都支持数据包缓冲区超时;在平台上否则,数据包缓冲区超时将被忽略。的零值在支持数据包缓冲区超时的平台上,超时将导致读取以永远等待以允许足够的数据包到达,而没有超时。负值无效;设置的结果超时到负值是不可预测的。

在这篇文章中,user862787说";一些操作系统超时,即使没有包裹到达,其他包裹没有到达;

它被认为是特定于平台的,因为它是,但它不是被认为是bug(相信我,我就是在man page(-超时是为了防止pcap_dispatch((等待永远等待数据包缓冲区填充,而不是阻止它等待永远不会有任何数据包到达。一些操作系统超时,即使没有包裹到达,其他包裹没有user862787 2012年10月19日20:53

那么我如何知道哪些平台支持,哪些平台不支持?我已经搜索并浏览了libpcap源,但没有找到任何内容。

具体来说,Centos 8.1、内核4.18.0-147.el8.x86_64、libpcap 1.10怎么样?

在使用BPF捕获机制的系统上-*BSD、macOS、Solaris 11、AIX-即使没有数据包到达,也会发生超时。

在大多数Linux发行版的大多数版本上,它不会。

不要依赖它这样做或不这样做;编写代码时不要依赖于此。

我已经搜索并浏览了libpcap源代码,但没有找到任何内容。

您需要查看libpcap在特定平台上使用的捕获机制的源代码,而不是libpcap源代码。

最新更新