Wireshark-dev: [Wireshark-dev] Refactoring use of a global variable in	epan/packet.c?
      
      
 Hello,
About a year and a half ago (Nov 2010), I mailed wireshark-{users,dev} 
about Sharktools, a library we created that provides the ability to 
access Wireshark's packet dissection features from within Python and 
Matlab.  The respective tools are called "pyshark" in Python and 
"matshark" in Matlab.  The post is here:
https://www.wireshark.org/lists/wireshark-users/201011/msg00028.html
The code is here:
http://github.com/armenb/sharktools
Since then, I've done some work trying to make the implementation more 
efficient and usable on gigantic packet capture files.  Lately, I have 
been adding Python iterator support for pyshark, and am running into an 
issue with global variables in libwireshark.  Specifically, I'd like to 
be able to support multiple independent packet capture parsing 
operations simultaneously.  This feature is important in network 
analytics.  For the most part, this functionality works fine (i.e. 
managing multiple cfile objects simultaneously just seems to work 
out-of-the-box).
However, I see an issue when it comes to applying a "decode as" string.  
Since dissector_tables is global (defined in epan/packet.c), and using 
dissector_change*() and dissector_reset*() modifies this data structure, 
I can't guarantee that my simultaneous packet parsing operations are 
independent.  Actually, I ran a test, and they are not.
Question is this: if I patch epan/packet.c and all functions 
dissector_tables-related to pass around a pointer instead of using a 
global variable, does my patch have a snowball's chance of being 
accepted into Wireshark mainline?  Of course, the simplest thing for me 
to do right now is detect a decode-as string mismatch between my Python 
iterator objects and throw a Python exception, but I'd rather go for 
clean functionality if I don't have to worry about maintainability of my 
own Wireshark source tree (this is definitely not the direction I want 
to go in, anyway).
I'd be interested in hearing your thoughts.  Thanks!
Armen
--
Armen Babikyan
Wideband Tactical Networking Group
MIT Lincoln Laboratory
armenb@xxxxxxxxxx . 781-981-1796
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature