Ethereal-dev: [Ethereal-dev] New Data Link Type

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

From: Kent Dahlgren <kent@xxxxxxxxxxx>
Date: Sat, 28 Sep 2002 14:19:19 -0700
Hi
I'd like to be able to capture packets from a non-supported
transport and transfer them to Ethereal for decoding.

Specifically I would like to be able to display packet transfers
across a RapidIO link. I have written a utility to generate
trace files in libpcap format and a dissector to the RapidIO
transport layer.

The problem that I am running into is how to communicate
the transport type to Ethereal. There is no "DLT_" value for
this transport, and therefore Ethereal has no knowledge of
where to start when decoding the file.

One approach to this problem would be to create a new
Data Link Type called "DLT_NAMED" and add an additional
parameter to the libpcap file header, as follows:

	// "libpcap" file header
	struct pcap_hdr {
		uint32 magic; 		// magic number
		uint16 version_major; 	// major version number
		uint16 version_minor; 	// minor version number
		int32 thiszone; 		// GMT to local correction
		uint32 sigfigs; 		// accuracy of timestamps
		uint32 snaplen; 		// max length of captured packets
		uint32 network; 		// data link type = DLT_NAMED
		char dlt_name[]; 	// data link protocol name
	};

The dlt_name parameter would be the PROTOABBREV name
used by the protocol dissector. Using this mechanism users could
easily add support for new data links for Ethereal such as RapidIO,
PCI Express etc.

Am I missing something? Is there an easier way to do this?
Any feedback would be appreciated.

Kent Dahlgren