2017-04-11 2 views
0

J'ai un Lua Wireshark dissecteur qui est structuré comme ceci:Exécution d'une fonction de dissection dans un dissecteur Lua Wireshark?

-- Initialize Protocol 
-- Initialize Protocol Fields 
-- Register Protocol Fields 

-- DissectionFunction(tvbuf, pktinfo, root) 

-- Initialize Protocol 

-- Function definitions. 

J'ai une fonction écrit que je voudrais utiliser pour calculer des valeurs, puis utiliser ces valeurs dans le dissecteur. J'ai donc écrit ma fonction en dehors de la fonction de dissection et dans la section des définitions de fonctions.

Mais l'appel de fonction fonctionne également dans la fonction dissecteur, s'il est appelé en dehors de la fonction dissecteur, Wireshark ne le reconnaît pas. L'appeler dans la fonction de dissection est très inefficace, car il ne doit être exécuté qu'une seule fois et sera exécuté pour chaque image à la place.

Existe-t-il un moyen de l'appeler une fois en dehors de la fonction de dissection?

Répondre

1

Je ne suis pas sûr de ce que la question est, mais vous pouvez faire ce qui suit dans Lua

local function calculate_constant_value() 
    return a * b + c 
end 
local my_constant_value = calculate_constant_value() 

function proto.dissector() 
    -- use my_constant_value here 
end 
+0

Cela fonctionne parfaitement! Je ne sais pas pourquoi je n'ai pas essayé ça avant mdr. Je vous remercie! :) –