为什么pcap_setfilter没有生效

why pcap_setfilter did not take effect

我正在使用 libpcap 作为 lib 来编写一个 C 程序来捕获即将到来的 IP。 我的代码片段如下:

struct bpf_program filter;
pcap_compile(pcap_handle, &filter, "icmp[icmptype]=0 and '(dst 16.11.26.100 or dst 16.11.27.100)'", 1, 0);
pcap_setfilter(pcap_handle, &filter);

但是没有用,我仍然可以看到其他目标Ips,而不仅仅是上面两个Ips。

我解决了这个问题,正确答案在这里:

"icmp[icmptype]=0 and (dst 16.11.26.100 or dst 16.11.27.100)"

刚刚删除了单个配额。

您应该始终检查库例程调用中的错误。如果您检查了来自 pcap_compile() 的错误,您会看到编译失败(由于单引号,尽管错误消息可能只是 "syntax error")。