Как получить доступ к другим слоям поля в Lua tap listener или коснуться верхнего слоя? - PullRequest
0 голосов
/ 27 января 2011

Собираюсь сделать статистическую операцию по трассировке с Lua. Каждый IP-пакет может иметь несколько TCAP, и каждый TCAP может иметь несколько операций CAP, например

IP {[SCTP-M3UA-SCCP-TCAP-CAP,CAP] [SCTP-M3UA-SCCP-TCAP-CAP,CAP,CAP]}

Теперь я хочу получить доступ ко всему дереву или выполнить итерацию в слое TCAP в прослушивателе Lua. Цель такого рода итерации состоит в том, чтобы что-то вроде следования потоку TCP, потому что идентификатор транзакции хранится на уровне TCAP, в то время как должны рассматриваться операции и параметры в последовательности уровня Camel (CAP).

Как получить доступ к дереву диссектора в касании слушателя или проанализировать верхний уровень, если получить часть данных нижнего уровня?

Например, идентификатор узла входит в первую операцию 1 нового сеанса на самом высоком уровне (CAP) вместе с другими сеансами в том же пакете. Затем другой параметр, который необходимо подсчитать, входит в другую операцию / пакет, в то время как тот же TID в TCAP, который нужно проверить, чтобы убедиться, что он принадлежит тому же узлу.

1 Ответ

0 голосов
/ 05 октября 2011

Это не ответ на ваш вопрос, только совет.

Вы должны использовать массив для извлечения полей вместо простого значения.Например:

tap_diameter = nil
diaSessionIdExtr = Field.new("diameter.Session-Id")
tap_diameter = Listener.new("frame", "diameter && !tcp.analysis.retransmission && !tcp.analysis.lost_segment")

function tap_diameter.packet(pinfo,tvb,userdata)
    local answers = {diaSessionIdExtr()}  -- this is how to do it
    for i in pairs(answers) do
       debug(answers[i])
    end
end
...