Я пишу диссектор Lua для Wireshark для сложного протокола. У протокола есть заголовок сообщения, который включает поле msgType. Я хочу написать субдиссектор для каждого типа сообщения, причем каждый субдиссектор хранится в отдельном исходном файле.
Мой сценарий верхнего уровня - general.lua, который анализирует заголовок сообщения и создает таблицу диссектора:
DissectorTable.new("myProtocol.Message")
dofile(DATA_DIR.."cplane.lua")
cplane.lua является субдиссектором для типа сообщения cplane и включает в себя код:
my_dissector_table = DissectorTable.get("myProtocol.Message")
my_dissector_table:add(0x02, myProtocol_cplane_proto)
Оба сценария находятся в одном подкаталоге каталога плагинов Wireshark.
Когда я загружаю плагины, я получаю сообщение об ошибке:
Lua: Error during loading:
[string "C:\Program Files (x86)\Wireshark\plugins\2.4...."]:9: bad argument
#1 to 'get' (DissectorTable_get: no such dissector_table)
Lua: Error during loading:
[string "C:\Program Files (x86)\Wireshark\plugins\2.4...."]:170: bad
argument #1 to 'dofile' (dofile: file does not exist)
Как я могу это исправить? Проблема в порядке загрузки скриптов? Необходим ли вызов dofile ()?