Ethereal-users: Re: [ethereal-users] Problems with LLC1 and OSI

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

From: Guy Harris <gharris@xxxxxxxxxxxx>
Date: Sun, 9 Apr 2000 11:33:25 -0700
> 1) LLC 1.
> --------
> In frame 185 and 186, i have a trouble with summary line, protocole
> display and filters. The info say 'response' for command' and 'command'
> for 'response'.

We got the order of "Command" and "Response" wrong in the line that sets
them; elsewhere, we correctly treated the C/R bit in the SSAP as meaning
"Command" if not set, and "Response" if set, but we did it the other way
around in that one line.

> If you try to make a 'match selected' after selected Data in protocole
> window,
> the filter take also DSAP, SSAP, Control field and data ( 6 bytes
> instead of 3 ).

When dissecting the contents of non-SNAP frames that didn't contain
higher-level protocol data, we didn't correctly start the dissection at
the octet *after* the LLC header.

I've attached a patch that should fix those problems.
Index: packet-llc.c
===================================================================
RCS file: /usr/local/cvsroot/ethereal/packet-llc.c,v
retrieving revision 1.50
diff -c -r1.50 packet-llc.c
*** packet-llc.c	2000/04/08 07:55:11	1.50
--- packet-llc.c	2000/04/09 18:29:22
***************
*** 445,451 ****
  			      "Group" : "Individual",
  			    val_to_str(pd[offset+1] & SAP_MASK, sap_vals, "%02x"),
  			    pd[offset+1] & SSAP_CR_BIT ?
! 			      "Command" : "Response"
  			);
  		}
  
--- 445,451 ----
  			      "Group" : "Individual",
  			    val_to_str(pd[offset+1] & SAP_MASK, sap_vals, "%02x"),
  			    pd[offset+1] & SSAP_CR_BIT ?
! 			      "Response" : "Command"
  			);
  		}
  
***************
*** 461,468 ****
  			else {
  				dissect_data(pd, offset, fd, tree);
  			}
! 		} else
  			dissect_data(pd, offset, fd, tree);
  	}
  }
  
--- 461,470 ----
  			else {
  				dissect_data(pd, offset, fd, tree);
  			}
! 		} else {
! 			offset += llc_header_len;
  			dissect_data(pd, offset, fd, tree);
+ 		}
  	}
  }