jseldent / wireshark-dds-xrce

DDS-XRCE Protocol dissector for Wireshark
Apache License 2.0
8 stars 3 forks source link

Associate dissector with stream without session setup packets? #1

Closed gavanderhoorn closed 1 year ago

gavanderhoorn commented 1 year ago

The dissector is already capable of invoking custom dissector-snippets based on the mapping configured by the user and witnessing the session setup packets, which works great.

However, many captures don't include the packets which create the entities.

It would be very nice if there would be a way for users to manually associate certain streams/packets with data types (and consequently: dissectors for user-defined types).

Most fancy would be using some kind of gui / context menu. But a simple .lua with some additional meta-data would already work in this case.

jseldent commented 1 year ago

The mapping between object references, topic names, type names and type deserialization functions can already be configured in user-provided .lua files.

However, that still leaves the mapping between object IDs and topic names. That can be different every session, unless all entities happen to be created in the same order each time. I suppose you could populate that map in a custom .lua file, but you would have to create it separately for each capture.

Adding a GUI option to assign it on-demand would be the nicest solution. The documentation suggests that this is possible. But I would have to look into that a bit more. Or find an example dissector that does something similar.

jseldent commented 1 year ago

It turns out that this is actually quite easy. See #2. Can you test if it works for you?

gavanderhoorn commented 1 year ago

Seriously impressive @jseldent. I opened this as a maybe-nice-to-look-at-on-a-rainy-Friday-or-something kind of issue, with no expectation of it being solved so quickly.

I'll take a look and let you know.

(I'll probably not be as fast as you were though)

jseldent commented 1 year ago

With the Tools -> DDS-XRCE -> Set object... menu option you can assign a profile and/or topic name to an object (typically a data reader or writer). You still need to have a .lua file which connects topic and type names and deserialization functions. Basically the types, topic_type_names, topic_names (optional) and data_reader_topic_names and/or data_writer_topic_names tables as described in README.md.

gavanderhoorn commented 1 year ago

Yes, I'd understood that. Thanks for confirming.