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