www.pudn.com > TCPDUMP-36.2.rar > LLC.H


/* 
 * Copyright (c) 1993, 1994, 1997 
 *	The Regents of the University of California.  All rights reserved. 
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that: (1) source code distributions 
 * retain the above copyright notice and this paragraph in its entirety, (2) 
 * distributions including binary code include the above copyright notice and 
 * this paragraph in its entirety in the documentation or other materials 
 * provided with the distribution, and (3) all advertising materials mentioning 
 * features or use of this software display the following acknowledgement: 
 * ``This product includes software developed by the University of California, 
 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 
 * the University nor the names of its contributors may be used to endorse 
 * or promote products derived from this software without specific prior 
 * written permission. 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
 * 
 * @(#) $Header: /tcpdump/master/tcpdump/llc.h,v 1.8 2000/12/18 07:55:36 guy Exp $ (LBL) 
 */ 
 
/* 
 * This stuff should come from a system header file, but there's no 
 * obviously portable way to do that and it's not really going 
 * to change from system to system. 
 */ 
 
/* 
 * A somewhat abstracted view of the LLC header 
 */ 
 
struct llc { 
	u_int8_t dsap; 
	u_int8_t ssap; 
	union { 
		u_int8_t u_ctl; 
		u_int16_t is_ctl; 
		struct { 
			u_int8_t snap_ui; 
			u_int8_t snap_pi[5]; 
		} snap; 
		struct { 
			u_int8_t snap_ui; 
			u_int8_t snap_orgcode[3]; 
			u_int8_t snap_ethertype[2]; 
		} snap_ether; 
	} ctl; 
}; 
 
#define	llcui		ctl.snap.snap_ui 
#define	llcpi		ctl.snap.snap_pi 
#define	orgcode		ctl.snap_ether.snap_orgcode 
#define	ethertype	ctl.snap_ether.snap_ethertype 
#define	llcis		ctl.is_ctl 
#define	llcu		ctl.u_ctl 
 
#define	LLC_U_FMT	3 
#define	LLC_GSAP	1 
#define LLC_S_FMT	1 
 
#define	LLC_U_POLL	0x10 
#define	LLC_IS_POLL	0x0100 
#define	LLC_XID_FI	0x81 
 
#define	LLC_U_CMD(u)	((u) & 0xef) 
#define	LLC_UI		0x03 
#define	LLC_UA		0x63 
#define	LLC_DISC	0x43 
#define	LLC_DM		0x0f 
#define	LLC_SABME	0x6f 
#define	LLC_TEST	0xe3 
#define	LLC_XID		0xaf 
#define	LLC_FRMR	0x87 
 
#define	LLC_S_CMD(is)	(((is) >> 1) & 0x03) 
#define	LLC_RR		0x0001 
#define	LLC_RNR		0x0005 
#define	LLC_REJ		0x0009 
 
#define LLC_IS_NR(is)	(((is) >> 9) & 0x7f) 
#define LLC_I_NS(is)	(((is) >> 1) & 0x7f) 
 
#ifndef LLCSAP_NULL 
#define	LLCSAP_NULL		0x00 
#endif 
#ifndef LLCSAP_GLOBAL 
#define	LLCSAP_GLOBAL		0xff 
#endif 
#ifndef LLCSAP_8021B 
#define	LLCSAP_8021B_I		0x02 
#endif 
#ifndef LLCSAP_8021B 
#define	LLCSAP_8021B_G		0x03 
#endif 
#ifndef LLCSAP_IP 
#define	LLCSAP_IP		0x06 
#endif 
#ifndef LLCSAP_PROWAYNM 
#define	LLCSAP_PROWAYNM		0x0e 
#endif 
#ifndef LLCSAP_8021D 
#define	LLCSAP_8021D		0x42 
#endif 
#ifndef LLCSAP_RS511 
#define	LLCSAP_RS511		0x4e 
#endif 
#ifndef LLCSAP_ISO8208 
#define	LLCSAP_ISO8208		0x7e 
#endif 
#ifndef LLCSAP_PROWAY 
#define	LLCSAP_PROWAY		0x8e 
#endif 
#ifndef LLCSAP_SNAP 
#define	LLCSAP_SNAP		0xaa 
#endif 
#ifndef LLCSAP_ISONS 
#define	LLCSAP_ISONS		0xfe 
#endif