How to create multi-layer Lua dissector?
I have several UDP protocols with same 12-bytes header.
I have read blog: https://mika-s.github.io/wireshark/lu...
I want to create modular dissectors with one base dissector not binded to any ports.
Base dissector looking like this:
base_protocol = Proto("my_base", "My base protocol") descriptor = ProtoField.uint16("my.descriptor", 'Descriptor', base.DEC) data = ProtoField.none('tb.data', 'Main payload', base.HEX) base_protocol.fields = { descriptor, data } function base_protocol.dissector(buffer, pinfo, tree) local length = buffer:len() if length == 0 then return end pinfo.cols.protocol = base_protocol.name local subtree = tree:add(base_protocol, buffer(), "Base protocol Header") subtree:add_le(descriptor, buffer(0, 2)) subtree:add_le(data, buffer(12, length - 12)) return 12 end local udp_port = DissectorTable.get('udp.port') udp_port:add_for_decode_as(base_protocol)
That base dissector is not attached to any particular port.
I want to create several other "child" dissectors (each one at own UDP port) which will receive Tvb where 0 offset is 12th byte from base_protocol. Child will add own subtree IN addition to header tree from base protocol.
I have tried to attach "parent" using
local my_port = DissectorTable.get('my_base')
but failed.
Also I need to access "parent's" field descriptor
.
How can I achieve this?