在libpcap中更正用于传出数据包的过滤器表达式

时间:2014-12-08 06:50:30

标签: c libpcap bpf

我想只从我的系统中嗅出传出的“TCP-ACK”数据包。因此,我在我的lib-pcap程序中将我的过滤器表达式设置为:

char filter_exp[] = "src host 172.16.0.1 and tcp[tcpflags] & (tcp-syn | tcp-fin | tcp-rst | tcp-psh) == 0";

但是它在运行时显示了一个lib-pcap语法错误:

  

无法解析过滤器src主机172.16.0.1和tcp [tcpflags]和(tcp-syn | tcp-fin | tcp-rst | tcp-psh)== 0:语法错误

任何人都可以告诉我这里有什么问题吗?这个的正确过滤表达式是什么?

我从here获得了语法(在示例部分中。)。

1 个答案:

答案 0 :(得分:0)

语法不正确,因为tcp-psh不是有效语法。正确的是tcp-push。所以正确的过滤器表达式将是:

char filter_exp[] = "src host 172.16.0.1 and tcp[tcpflags] & (tcp-syn | tcp-fin | tcp-rst | tcp-push) == 0";