Wireshark mailing list archives

Re: RPM and inter-plugin dependencies‏


From: Austin Albright <chuckbubba777 () hotmail com>
Date: Fri, 30 Nov 2012 13:19:46 -0500


-- Alex --
It has only one library dependency, that isn't a fundamental part of Wireshark... sort of... which is the wimax plugin 
library (wimax.so)

When I run ldd on the customPlugin.so on my development system and then on the version installed via RPM on the 
production system the results are identical.

-- Japp --
It is a detailed error message that tells the exact function it can't seem to find.  Which is what leads me to think it 
can't see\access the wimax.so plugin library.  The error message is:

Couldn't load module /usr/lib/wireshark/plugins/1.6.9pre1_42613/customPlugin.so: 
/usr/lib/wireshark/plugins/1.6.9pre1_42613/customPlugin.so: undefined symbol: get_tlv_value_offset

Where get_tlv_value_offset only exist in the wimax plugin (wimax_tlv.c\h).

For some reason, when I began creating this plugin I thought 1.6.8/9 was the last release of the 1.6 trunk.  I never 
even thought to check for updates until I checked the mailing list to see if my message went through and there was 
announcement about the latest release/updates to the 1.6 trunk.

-- New thought\question --
Should I add something akin to a target_link_libraries in the CMakeList.txt pointing to the wimax plugin's library?  
But then I wonder how it ever compiled if it need that to be specified in the CMakeList file?

The problem seems related to the RPM compilation\build process.  But since everything is re-built to create the RPM and 
I receive no warnings about an undefined function during the RPM's compilation stage...

Thank you Alex and Japp for your suggestions.
Austin

From: jaap.keuter () xs4all nl
Date: Fri, 30 Nov 2012 21:44:53 +0400
To: wireshark-dev () wireshark org
Subject: Re: [Wireshark-dev] RPM and inter-plugin dependencies‏

Hi Austin, 
Forget about the #include. That's for the compiler to know which file to include in the compilation. This has nothing 
to do with the object code you're distributing. 
You state that there's a detailed error message, but you never quote it. What does it tell you?
trunk-1.6 SVN head now is version 1.6.12 now (rolled over to 1.6.13 already)
Thanks,Jaap
Send from my iPhone
On 30 nov. 2012, at 18:43, Austin Albright <chuckbubba777 () hotmail com> wrote:







Wireshark Gurus,

First things, first...
My development system is RHEL v5.6 and as it doesn't support a "new" enough version of GTK, my work uses the v1.6.9 SVN 
head.

That said, I have created my own plugin, it builds and 
works great on the system I've developed it on.  However, when I build 
the RPM, and install the RPM on another machine (identical to my 
development system minus all the source code) I always get a "couldn't 
load module" error.  The error message is quite detail and so I know it 
is because my plugin is using some common functions from the wimax 
plugin (i.e. wimax_tlv.c).

I include the wimax_tlv.h in my source as follows:
#include <plugins/wimax/wimax_tlv.h>

While grasping at straws I even tried:
#include "plugins/wimax/wimax_tlv.h"

Neither
 #include format made a difference.  My build of Wireshark worked 
regardless on my development system and gave the same exact "couldn't 
load module" error on the production system.

I don't get any 
warnings or complaints about the "#include 
<plugins/wimax/wimax_tlv.h>" on my development system when 
compiling or building the RPM, but it sure seems to have a problem with 
it on the production system.

One other notable thing is that on 
my development system when I start Wireshark and look at the plugins 
listing (Help->About->Plugins) my plugin is listed, but on the 
production system where Wireshark was installed using my RPM, it is not 
listed in the plugins listing.  I followed the directions for creating 
and including a plugin in README.plugin, but obviously I've missed 
something.  Also, my plugin library does get placed in 
/usr/lib/wireshark/plugin/<version>/ on the production system when
 I install my RPM.

 I really don't want to have a redundant copy 
of the code in my custom 
plugin's directory so that I won't have to worry about merging 
corrections\updates.  I even grep'ed my entire Wireshark directory on my
 development system looking for another dissector or plugin that 
included a header from another plugin\dissector and found one 
(gtk/voip_calls.c) which contains a #include of a header from a 
dissector (gtk/voip_calls.c:60:#include 
<plugins/unistim/packet-unistim.h>).  So it seems like what I'm 
doing should work, but clearly I'm in over my head.  Any suggestions 
would be much appreciated.

Thanks,
Austin                                                                            
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list 
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe                                    
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

Current thread: