我正在尝试剖析封装在UDP数据包中的专有协议。该协议是多层的,在最低层有一个非常简单的标题。该标头有一个类型字段,用于指示更高层协议的格式。
将我的最低协议链接到UDP端口号很容易,需要遵循大量示例。我不明白的是如何基于类型字段创建DissectorTable,以便我可以链接更高级别的协议。
我有低级协议的每个字段的ProtoField对象,用于在树中显示它。如何将DissectorTable及其Dissectors与类型字段中的值相关联?在更高级别的协议添加之前,我是否还需要填充DissectorTable?
答案 0 :(得分:0)
您应该能够使用DissectorTable.new()
函数为您的协议创建一个新的DissectorTable,并使用适当的参数,您可以在proto.dissector()
定义之外执行,然后在您的内部调用创建的表通过使用适当的参数调用proto.dissector()
来mydissectortable:try()
。其他Lua解剖器(即您的更高级别的解剖器)将使用DissectorTable.get()
和dissectortable:add()
注册到此表中,就像使用基于C代码的正常解剖器表一样。