在 tcpdump/libpcap 语法中观察这些 BPF 过滤器:
1: not host x or host y
2: not (host x or host y)
3: not (host x or y)
4: not host x or y
5: (not host x) or host y
6: (not host x) or y
我认为主机 z 匹配上述所有内容(6 除外,因为它的语法无效)。我的问题是第 4 行。tcpdump 程序认为它等同于第 5 行,但我认为这不直观,因此不正确。第 5 行是明确的,第 3 行也是如此。但是,第 4 行可以同时表示两件事,这取决于你如何看待事物。我认为,因为你不能将 y 与“host”关键字分开,所以将第 4 行视为第 5 行是错误的。
这背后的解析逻辑是什么?谁能解释为什么 1 == 4 == 5 以及为什么 2 != 4 和 3 != 4 ?