struct pcap_pkthdr len always == zero
struct pcap_pkthdr len always == zero
不复制这里的所有源代码,我从pcap_dispatch
命中pcap_callback
函数。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,问题消失了。
pcap_dispatch()
回调函数的三个参数依次为:
- "用户数据"指针传递给
pcap_dispatch()
; 指向 - 原始数据包数据的指针。
struct pcap_pkthdr
的指针因此,myCallback
不是一个有效的回调函数,不能传递给pcap_dispatch(),因为它期望第一个参数是指向struct pcap_pkthdr
的指针。除非您有另一个函数是真正的回调,然后使用适当的参数调用myCallback
,否则所讨论的代码将无法工作,并且应该至少从C或c++编译器获得警告。
相关文章:
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- 将"模板<类型名 T>zero()"扩展/专用为可调用的"T"
- Raspberry Pi Zero W 上的 OpenCV - 浮点异常
- C++ OpenCV Randu 函数抛出'Integer division by zero'
- 为什么我的代码在"decrease to zero"问题中被时间超过了
- "ndk-build finish with non-zero exit value 2" 在编译文本仙女项目时
- Epoll zero recv() and negative(EAGAIN) send()
- CreateCompatibleDC(IntPtr.Zero) returns IntPtr.Zero
- 如何在Visual Studio 2019中修复"[member variable that is a vulkan struct] is uninitialized. Always initiali
- QT5.10.1交叉编译为Raspberry Pi Zero W使用EGLF而不是XCB
- Windows到Raspberry Pi Zero串行问题
- 使用代码调整删除"comparison is always false"警告
- C++ Zero-Initialization
- 符合要求的编译器应该能够优化哪些指针比较以"always false"?
- Win32 CreateThread() Arguments Zero'ed?
- 无锁"decrement if not zero"
- QPixmap,如何确保它是'always on top'
- 当我有多态指针时使用"rule of zero"
- GetLastInputInfo() always 0 (zero)
- struct pcap_pkthdr len always == zero