Ethereal-dev: Re: [Ethereal-dev] v0.9.9 through v0.10.7 can't recognize Cisco ISL frames

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: Wed, 03 Nov 2004 12:28:50 -0800
Jim Young wrote:

I'm quite too naive with this project to know how best to fix this. Would moving the "Oh, Yuck" section out of the initial "if" and into an additional "else if" test be the way to go?

The way to go is probably to check for ISL frames before doing any of the other checks; I've checked in a change to do that, as well as to handle 0C-00-0C-00-00.

ISL
   Destination: 01:00:0c:00:00:07 (01:00:0c:00:00:07)
   0000 .... = Type: Ethernet (0)
   .... 0111 = User: Unknown (7)
   Source: 00:02:fd:2c:b8:97 (Cisco_2c:b8:97)
   Length: 0
   DSAP: 0xAA
   SSAP: 0xAA
   Control: 0x3
   HSA: 0x000000
   0000 0000 0000 001. = VLAN ID: 0x0001
   .... .... .... ...1 = BPDU: Yes
   Index: 0
   CRC: 0xb8970000

The length field is the one causing the problem with the current dissector. Is it supposed to be zero? According to the ISL document at the URL you sent, it "stores the actual packet size of the original packet as a 16-bit value. The LEN field represents the length of the packet in bytes excluding the DA, TYPE, USER, SA, LEN, and FCS fields. The total length of the excluded fields is 18 bytes, so the LEN field represents the total length minus 18 bytes." That seems to suggest that there's actually no encapsulated packet of any sort past the FCS (CRC) field.