Ethereal-dev: [Ethereal-dev] Ethereal plugin versioning question

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Filonenko Alexander-AAF013 <AAF013@xxxxxxxxxxxx>
Date: Thu, 21 Oct 2004 13:21:37 -0500
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