Ethereal-dev: Re: [Ethereal-dev] Best way to call another dissector ?

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

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Tue, 21 Oct 2003 13:33:23 -0700

On Oct 21, 2003, at 10:44 AM, Michael Lum wrote:

I am modifying the ANSI-637-A (SMS) dissector to dissect
the Transport Layer, previously it only did the Teleservice Layer.

The dissector needs to "grab" data pushed by the ANSI MAP dissector,
this data will be encoded to the Teleservice Layer.

The dissector needs to "grab" data pushed by the ANSI IOS dissector,
this data will be encoded to the Transport Layer.

My question is after the Transport Layer dissector has located
"bearer data" it needs to get the Teleservice part dissector.

The Teleservice dissector uses the Teleservice ID for the port matching.
The Transport Layer dissector will have the Teleservice ID.

The general question in the subject line has multiple answers, depending on the problem being solved. Unfortunately, not being a digital cellphonehead, I can't quite figure out from the above which problem is being solved. :-)

Do transport layer protocols run atop teleservice layer protocols, or do teleservice layer protocols run atop transport layer protocols, or is it "none of the above"?

"My question is after the Transport Layer dissector has located "bearer data" it needs to get the Teleservice part dissector." appears to imply that the teleservice layer runs atop the transport layer; "The Teleservice dissector uses the Teleservice ID for the port matching. The Transport Layer dissector will have the Teleservice ID." appears to imply that, at the transport layer, there's an identifier of some sort that specifies what's running at the teleservice layer.

If so, then I might suggest adding a dissector table for the teleservice ID, have the transport layer dissector use that table, and have the teleservice layer dissectors register in that table.