Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Wireshark-dev: Re: [Wireshark-dev] [Wireshark-commits] rev 44860: /trunk/ /trunk/asn1/camel/: c

From: Jeff Morriss <jeff.morriss.ws@xxxxxxxxx>
Date: Tue, 18 Sep 2012 18:00:59 -0400
Evan Huus wrote:
On Tue, Sep 18, 2012 at 3:35 PM, Jeff Morriss <jeff.morriss.ws@xxxxxxxxx> wrote:
darkjames@xxxxxxxxxxxxx wrote:
http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=44860

User: darkjames
Date: 2012/09/10 02:40 PM

Log:
 Initial commit to support yet another method of passing data between
dissectors.
  Add new parameter 'data' to heur_dissector_t and new_dissector_t, for
now it's always NULL

Does anybody have an idea of how to handle this in custom dissectors which
need to be compiled in both 1.8 and trunk (without branching said
dissectors--something I really would like to avoid)?

I'm contemplating putting a macro in packet.h like
DISSECTORS_HAVE_DATA_PARAM and adding the appropriate #ifdef/#else logic in
my custom dissectors.  Any objections?  Any better ideas?

I filed something similar as a bug long before I was a core dev:
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6134

I still don't know enough about the build system to feel comfortable
fixing it myself once and for all (especially given the mix of
autotools, cmake, nmake) but I still think that a general version
macro would be a much better way than manually adding a macro for
every API change.

OK, I liked that idea too so I checked in some changes to expose VERSION_{MAJOR,MINOR,MACRO} macros.

My private (heuristic) dissector source now looks like:

#if defined(VERSION_MAJOR) && (VERSION_MAJOR > 1 || VERSION_MINOR > 8)
dissect_FOO(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
#else
dissect_FOO(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
#endif

which should solve my (and others') build problems nicely enough. :-)