Правильное выражение фильтра в libpcap для исходящих пакетов

Я хочу перехватывать только исходящий пакет 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 во время выполнения как:

Не удалось разобрать узел filter src 172.16.0.1 и tcp[tcpflags] и (tcp-syn | tcp-fin | tcp-rst | tcp-psh) == 0: синтаксическая ошибка

Может ли кто-нибудь сказать, что здесь не так и какое выражение фильтра для этого будет правильным?

Синтаксис взят из здесь (в разделе "Примеры").


person RatDon    schedule 08.12.2014    source источник


Ответы (1)


Синтаксис неверен, так как 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";
person RatDon    schedule 08.12.2014