Ethereal-dev: Re: [Ethereal-dev] dissector_add

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

From: Guy Harris <gharris@xxxxxxxxx>
Date: Tue, 13 Sep 2005 11:19:40 -0700
David.Kaatz@xxxxxxxxxxxx wrote:

A question on an issue I have been struggling with.
I am adding a dissector for a propietary protocol that is 'packaged' within a 802.1Q VLAN packet. I cannot find the right way to register my dissector. I have been trying to do things like:

dissector_add("802.1Q Virtual LAN.etype", 0x875b, PROTOCOL_handle);
Or
dissector_add("vlan.etype", 0x875b, PROTOCOL_handle);
Or
dissector_add("VLAN.etype", 0x875b, PROTOCOL_handle);

I also have tried with "etype" changed to "Type".

All of which fail because the name (1st parameter) is not found in the dissector_table. I assumed that I could do some operation like this,

I.e., you assumed that Ethereal distinguishes between Ethernet types used in an 802.1Q VLAN header and Ethernet types used elsewhere, e.g. in the Ethernet header, and has separate dissector tables for those fields.

It doesn't. 802.1Q speaks of the field after the tag header as an Ethernet protocol type, so Ethereal uses the same dissector table for that field that it uses for the Ethernet protocol type field and the protocol ID field in SNAP frames with an OID of 00:00:00.

Thus, you would register with

	dissector_add("ethertype", 0x875b, PROTOCOL_handle);