Title: Message
All,
Our users
test/troubleshoot a proprietary system. The system gets updated periodically and
part of the update are protocol changes. Since several versions of the system
coexist we maintain multiple plugin versions of same protocol. Changes from
version to version are usually not significant. It is desirable that dissector's
protocol id does not change from version to version to allow finding dissector
by name, this way other dissectors will not be affected if they use
find_dissector. Since users often share equipment to monitor different
releases of the system, different plugin sets matching version of the system
must be be installed on the same computer at the same time. I can see several
options of how this can be accomplished.
1. Modify Ethereal
to search for plugins in directory configurable at Ethereal startup.
E.g. modify Ethereal to load plugins from directory specified in environment
variable and a shell script launched by a user will set up environment variable
before starting Ethereal.
2. "Smart" plugins
residing in standard directory but register only if needed. I prototyped a
plugin that registers only if plugin version is specified in an environment
variable that matches version of the plugin. This approach requires one env.
variable per plugin. Unfortunately plugins become more complicated. On
UNIX function names must be unique for every version of plugin because of the
way dynamic libraries are implemented.
3.
Different Ethereal installations compiled to point to different plugin directories - one for each plugin set. This works without Ethereal/plugin changes but is not
flexible - for every set of plugins user need a separate Ethereal
installation.
4. ??? Is there any
other way to handle this? Again, need to enable different versions of plugin
dissecting same protocol to coexist in the same Ethereal installation. All
versions of the plugin must have same symbolic name (parameter for
find_dissector) so that other plugins using this one do not have to change with
every version change.
It seems that #1 is
the most natural solution for this issue.
I can implement
change to Ethereal (plugins.c) if this change is approved.
Thank
you for your consideration,
Alex Filonenko