2017-01-24 19 views
2

У меня есть 2 tcp-диссектора, которые прослушивают один и тот же порт.
Поэтому я решил иметь базовый диссектор, который слушает этот порт, и этот базовый диссектор хранит информацию для 2 tcp-диссекторов.
, когда пакет поступает на этот порт, базовый диссектор делает цикл foreach и пытается вызвать каждый из 2 tcp-диссекторов по очереди.Как получить индикацию, если успешно был вызван диссектор Wireshark из другого диссектора

Я использую строку кода:

res = Dissector.get("first_tcp_dissector"):call(buffer, pinfo, tree) 

Я ожидал, что, если вызываемый рассекатель успешно проанализирован пакет будет возвращать число (если этот пакет не для него, он вернет 0) ,

но dissector:call(tvb, pinfo, tree) ничего не возвращает, и у меня нет никаких указаний, если синтаксический анализ завершен.

Как получить истинное возвращаемое значение first_tcp_dissector или довольно некоторое указание, если синтаксический анализ завершился успешно?
(Кстати, я не хочу использовать эвристику ...)

ответ

0

но dissector:call(tvb, pinfo, tree) не возвращает ничего

Вы уверены? Потому что, если вы посмотрите на исходном коде, Dissector_call() возвращает «Number of bytes dissected.»

Возможно, вы используете старую версию Wireshark перед this изменениями, сделанных Стиг Бьёрлюкка совершил Андерс Broman 17 июня 2014 года?