Ethereal-dev: Re: [ethereal-dev] Problem with Q931 and adding subprotocols

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

From: Guy Harris <guy@xxxxxxxxxx>
Date: Thu, 6 Apr 2000 13:42:26 -0700 (PDT)
> 1 How to let the TCP dissector know we want the H.225 port dissected by
>   the Q.931 dissector

Register "dissect_h2250()" with "dissector_add()" in the handoff
initialization routine of "packet-h323.c" or "packet-h2250.c" or
whatever...

> 2 How to let the Q.931 dissector know that we want to decode a specific
>   type of UUIE to be decoded by my H.225 dissector.

...and have "dissect_h225()" call "dissect_q931_uu()", passing it the usual
arguments plus a pointer to a routine to be called to dissect the
User-to-User IEs.  Turn "dissect_q931()" into "dissect_q931_uu()", and
make "dissect_q931()" call "dissect_q931_uu()" with a null routine
pointer, which should tell "dissect_q931_uu()" not to do anything fancy
with User-to-User IEs.

> Nr. 2 is easy and difficult at the same time. I can detect if it's H.225, but how do I let the 
> Q931 dissector call my plug-in dissector? I think I'll have to add a Q931.UUIEType 
> display filter string and let the plug-in use that. But how do I make the Q.931 dissector 
> dissect my packets first based on the tcp port?
> 
> I tried calling dissect-q931() itself, but that gave me a very weird linker
> error, i'll try and investigate this further....

If you're doing this as a plugin under Windows, you have to export any
functions called from the plugins via the "plugin_api" hack.

I wouldn't do the H.323 stuff as a plugin, however - I'd just make it a
standard dissector, assuming it's something that can go into the
Ethereal source code base.