![]() | 1 | initial version |
You cannot call dissectors from a tap. Taps/Listeners are after all dissection has already been done. The proper way to do this is to have your outer layer dissector call the inner layer dissector for frames of type b. That is somewhat similar to the example here, but you would need to find your other Lua dissector: https://www.wireshark.org/docs/wsdg_html_chunked/wslua_dissector_example.html
This is made a more complicated by https://gitlab.com/wireshark/wireshark/-/issues/15907 See the related https://ask.wireshark.org/question/10263/custom-sub-protocols-registering-with-a-custom-protocols-dissector-table/
You can get around that I believe by not using a table, though you want to make sure that the subdissector is registered before the outer dissector (which can involve putting them in the same file, or making sure that the inner dissector's file comes earlier in ASCII order: (https://www.wireshark.org/docs/wsdg_html_chunked/wsluarm.html#wsluarm_intro)