Wireshark-dev: [Wireshark-dev] Plugins all reported as type 'file type'

From: Jaap Keuter <jaap.keuter@xxxxxxxxx>
Date: Sun, 14 Jan 2018 18:49:44 +0100
Hi,

It seems that the current way of registering plugins (dissector, wiretap or
codec) doesn't really work well. Maybe this is limited to source builds, I
haven't checked installs.

Steps to reproduce:
First build tshark from source (autotools), then run tshark:
./tshark -G plugins
docsis.so       0.0.5   file type
~/wireshark/master/plugins/docsis/.libs/docsis.so
ethercat.so     0.1.1   file type
~/wireshark/master/plugins/ethercat/.libs/ethercat.so
gryphon.so      0.0.4   file type
~/wireshark/master/plugins/gryphon/.libs/gryphon.so
...

Or build tshark from source (CMake), then run tshark:

./build/run/tshark -G plugins
docsis.so       0.0.5   file type
~/wireshark/master/build/run/plugins/2.5/docsis.so
ethercat.so     0.1.0   file type
~/wireshark/master/build/run/plugins/2.5/ethercat.so
gryphon.so      0.0.4   file type
~/wireshark/master/build/run/plugins/2.5/gryphon.so
...

Every plugin is registered with "file type". While all these are dissector
plugins, so should be registered as "dissector". This can also be seen in the
About dialog of Wireshark.

It seems that this comes from the fact that the wiretap library gets to scanning
the plugins directory first, calling plugins.c:plugins_scan_dir() with type
"file type". This finds all plugins (dissector, wiretap or codec) and registers
it. Then when the others (epan and codec) come along these are already
registered and thus skipped. So, how is this supposed to work?

Thanks,
Jaap