Wireshark-dev: Re: [Wireshark-dev] Dynamically loading all dissectors (was: Re: Finding duplica

From: Jakub Zawadzki <darkjames-ws@xxxxxxxxxxxx>
Date: Tue, 31 May 2011 20:54:42 +0200
On Tue, May 31, 2011 at 11:54:16AM -0600, Stephen Fisher wrote:
> On Wed, May 18, 2011 at 02:17:33PM -0400, Ed Beroset wrote:
> 
> > Speaking of more limited platforms, I wonder about about a way of 
> > reducing both startup time and memory usage by having the dissectors 
> > dynamically loaded (as with the current plug-in mechanism) rather than 
> > statically linked.  The current model of adding all dissectors to the 
> > main code means that Wireshark will keep getting bigger and bigger.  I 
> > wonder if it might not be time to ponder if that's the best possible 
> > option.
> 
> I thought about this not too long ago, and the problem is that the code 
> to determine which packets belong to which dissector is in the 
> dissectors themselves, so you have to load all of them anyway.

It's somehow related, so can we rediscuss idea about disabling compilation of some dissectors?
(http://www.wireshark.org/lists/wireshark-dev/201104/msg00316.html)

After exams I'll have some spare time, and I could work on it, but 
I'd really like to have some discussion before.

Some possibilites how to implement it:

1/ lot of new configuration options:
    ./configure --disable-udp --disable-ssl ...

	cmake have got some nice GUIs [1][2] for configuration but it can't do tree and dependencies 
	(like: disable POP dissector when !TCP).

2/ configuration file (easy to backup/restore)
   a/ kconfig - already used by some big projects (Linux, uclibc, Busybox)
      Syntax: http://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt

	  And there are already nice tools to do configuration (for Qt[3]/gtk[4]/ncurses[5])

   b/ our own syntax

Anyone is familliar with other configuration tools?

[1] http://www.cmake.org/cmake/img/CMakeGUI.gif
[2] http://www.cmake.org/cmake/img/ccmake.png
[3] http://www.q-vadis.net/img/homeserver/kernel-xconfig.jpg
[4] http://kerneltrap.org/sup/799/gconfig.png
[5] http://www.linux-ipv6.org/~kunitake/zaurus/menuconfig.png