Ethereal-dev: Re: [Ethereal-dev] What is the best way to get data from one dissector to anothe

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: Fri, 14 Nov 2003 11:13:33 -0800

On Nov 14, 2003, at 10:51 AM, Michael Lum wrote:

The concrete example is OPC/DPC in MTP3:

The OPC and DPC are integers that I want to make available to the SCCP
dissector.

There are a couple of ways to solve that particular problem.

If the OPC and DPC could be thought of as network-layer addresses - for example, if you'd use them with the Ethereal conversation mechanism, and you'd be willing to have them show up in the "Source" and "Destination" columns in the summary display - the right way to do that would be to:

add AT_MTP3 to the "address_type" enum in "epan/packet_info.h" - or add 3 AT_ types, for ANSI, ITU and the Chinese ITU variant MTP3;

set "pinfo->src" and "pinfo->net_src" to the source address (OPC?), using SET_ADDRESS (set it to point to the data in the tvbuff with the address);

	do the same for "pinfo->dst" and "pinfo->net_dst";

add to "address_to_str_buf()" in "epan/to_str.c()" code to construct a display string from the OPC or DPC;

have the SCCP dissector get the addresses from "pinfo->net_src" and "pinfo->net_dst".

Otherwise, if they're not network-layer addresses:

put into "packet-mtp3.h" a definition of a structure containing the two values you want to supply;

	have one of those structures in the MTP3 dissector, and fill it in;

set "pinfo->private_data" to point to that structure before calling the subdissector;

	have the SCCP dissector fetch those values from "pinfo->private_data".