Ethereal-dev: Re: [Ethereal-dev] nettl (HP-UX) Enhanced file handling

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

From: "Mark C. Brown" <mbrown@xxxxxxxxxx>
Date: Wed, 09 Mar 2005 06:43:55 -0500
Guy Harris wrote:

Mark C. Brown wrote:

Added nettl trace record specific fields: subsystem, trace kind,
device id, process id (actually kernel thread id for 10.X and
later), and user id...


It's a bit ugly to have special-case handling of nettl trace records in packet-frame.c, and the information in the nettl pseudo-header is at a different level from most if not all of the other pseudo-header stuff - and some link-layer types, such as Ethernet, supported by nettl already have pseudo-headers.

I knew it wasn't pretty, but was hoping it would pass the ugliness test. Nettl is such an oddball format and I didn't want to change any APIs just to support the OS related data.

It'd be a Wiretap API change, so that'd be a bit of extra work, but perhaps an additional union, similar to the pseudo-header union, could be used for non-protocol-related pseudo-header information (and, in fact, some of the CoSine L2 debug header information is arguably not protocol related) - or the "union pseudo_header *" arguments could be replaced with pointers to a structure containing both the non-protocol-related and protocol-related information).

Which would be preferable: additional union or change to structure with both unions?

In addition, a dissector could register in a new "wtap_filetype" dissector table with a WTAP_FILE_ value, and the frame dissector would call the dissector for that, if one is found, before calling the dissector for the frame type.

That would be much better, but since I didn't have visibility to the file type at the time, I chose the ugly duckling. Back to the drawing board...

Thanks for the feedback Guy!

Mark

--
"If a train station is where a train stops, | Mark C. Brown
then what's a workstation?" -- D. Huber    | mbrown@xxxxxxxxxx