在不复制这里的所有源代码的情况下,我pcap_callback
从pcap_dispatch
. 似乎显示了正确的caplen
长度(因为它总是一些东西)但 len 总是等于 0。这个字段不再填充了吗?这可能是我没有捕获的错误情况吗?
这是一个片段...
void myCallback ( const struct pcap_pkthdr *header, const u_char *packet, void* buffer )
{
if ( (uint16_t)(header->len) != (uint16_t)(header->caplen) )
/* Some Error */
streamObj << "Caplen (" << (uint16_t)(header->caplen) << " != "
<< ") Packet Len (" << (uint16_t)(header->len) << ")";
...
}
该header->len
值始终返回为零。如果需要更多信息,请告诉我。
这是在运行 libpcap.so.0.9.8 和 2.6.32 内核的 SUSE Linux 11SP1 服务器上发现的。该问题仅在使用 libpcap.so.0.9.3 从 SUSE Linux 10SP3 升级后出现。
编辑:这似乎只是 libpcap.so.0.9.8 的问题。我重新指向 /usr/lib/ 中的链接以使用 libpcap.so.0.9.3 并且问题消失了。