> I found in my vlan traces that I have some packets that look to be using a
> different frame type.
Looks like an encapsulated 802.2 frame inside the VLAN frame:
> 0000 01 00 0c cc cc cd 00 50 3e b4 e4 66 81 00 00 06 .......P >..f....
< ethernet dst > < ethernet src > etype <tci>
> 0010 00 32 aa aa 03 00 00 0c 01 0b 00 00 00 00 00 20 .2...... ........
<len> DS SS C < OUI >
> 0020 00 00 d0 63 8d e8 05 00 00 00 04 80 00 00 10 2f ...c.... ......./
> 0030 17 4e 05 82 17 01 00 14 00 02 00 0f 00 00 00 00 .N...... ........
> 0040 00 02 00 06
where "DS" is the DSAP, SS is the SSAP, and C is the control field, in
an 802.2 LLC header.
DSAP and SSAP of 0xAA means SNAP encapsulation, if, following the 3
header bytes is a 3-byte Organizational Unit Identifier of 0x00 0x00
0x00. However, I'm not sure which standard - probably some IEEE 802.x
standard, and probably available only if you hand them your credit card
- specifies what happens if the OUI *isn't* 0x00 0x00 0x00.
I figured there'd be an on-line listing of OUIs *somewhere*, and, sure
enough:
http://standards.ieee.org/regauth/oui/oui.txt
which says that 00 00 0C belongs to:
CISCO SYSTEMS, INC.
170 WEST TASMAN DRIVE
SAN JOSE CA 95134-1706
(00 00 00 belongs to Xerox; presumably they generously loaned it to the
Internet community for use with SNAP.)
I.e., the "#if 0"ed code is doing what appears to be called for here
(although you might want to pick up the
/* Convert the LLC length from the 802.3 header to a total
length, by adding in the Ethernet header size, and set
the payload and captured-payload lengths to the minima
of the total length and the frame lengths. */
stuff from "dissect_eth()" as well, for the LLC case).
However, "dissect_llc()" (and "capture_llc()") should probably check for
an OUI of 0x00 0x00 0x00 before treating the frame as a SNAP frame with
a 2-byte Ethernet type following the OUI.