llc.h revision 1.1
1/*	$OpenBSD: llc.h,v 1.1 2005/10/07 19:32:39 mpf Exp $	*/
2
3/*
4 * Copyright (c) 1993, 1994, 1997
5 *	The Regents of the University of California.  All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that: (1) source code distributions
9 * retain the above copyright notice and this paragraph in its entirety, (2)
10 * distributions including binary code include the above copyright notice and
11 * this paragraph in its entirety in the documentation or other materials
12 * provided with the distribution, and (3) all advertising materials mentioning
13 * features or use of this software display the following acknowledgement:
14 * ``This product includes software developed by the University of California,
15 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
16 * the University nor the names of its contributors may be used to endorse
17 * or promote products derived from this software without specific prior
18 * written permission.
19 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
20 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22 *
23 * @(#) $Header: /usr/local/opengrok/home/cvs-mirror/mirrors/openbsd/src/lib/libpcap/llc.h,v 1.1 2005/10/07 19:32:39 mpf Exp $ (LBL)
24 */
25
26/*
27 * This stuff should come from a system header file, but there's no
28 * obviously portable way to do that and it's not really going
29 * to change from system to system.
30 */
31
32/*
33 * A somewhat abstracted view of the LLC header
34 */
35
36struct llc {
37	u_char dsap;
38	u_char ssap;
39	union {
40		u_char u_ctl;
41		u_short is_ctl;
42		struct {
43			u_char snap_ui;
44			u_char snap_pi[5];
45		} snap;
46		struct {
47			u_char snap_ui;
48			u_char snap_orgcode[3];
49			u_char snap_ethertype[2];
50		} snap_ether;
51	} ctl;
52};
53
54#define	llcui		ctl.snap.snap_ui
55#define	llcpi		ctl.snap.snap_pi
56#define	orgcode		ctl.snap_ether.snap_orgcode
57#define	ethertype	ctl.snap_ether.snap_ethertype
58#define	llcis		ctl.is_ctl
59#define	llcu		ctl.u_ctl
60
61#define	LLC_U_FMT	3
62#define	LLC_GSAP	1
63#define LLC_S_FMT	1
64
65#define	LLC_U_POLL	0x10
66#define	LLC_IS_POLL	0x0001
67#define	LLC_XID_FI	0x81
68
69#define	LLC_U_CMD(u)	((u) & 0xef)
70#define	LLC_UI		0x03
71#define	LLC_UA		0x63
72#define	LLC_DISC	0x43
73#define	LLC_DM		0x0f
74#define	LLC_SABME	0x6f
75#define	LLC_TEST	0xe3
76#define	LLC_XID		0xaf
77#define	LLC_FRMR	0x87
78
79#define	LLC_S_CMD(is)	(((is) >> 10) & 0x03)
80#define	LLC_RR		0x0100
81#define	LLC_RNR		0x0500
82#define	LLC_REJ		0x0900
83
84#define LLC_IS_NR(is)	(((is) >> 1) & 0x7f)
85#define LLC_I_NS(is)	(((is) >> 9) & 0x7f)
86
87#ifndef LLCSAP_NULL
88#define	LLCSAP_NULL		0x00
89#endif
90#ifndef LLCSAP_GLOBAL
91#define	LLCSAP_GLOBAL		0xff
92#endif
93#ifndef LLCSAP_8021B
94#define	LLCSAP_8021B_I		0x02
95#endif
96#ifndef LLCSAP_8021B
97#define	LLCSAP_8021B_G		0x03
98#endif
99#ifndef LLCSAP_IP
100#define	LLCSAP_IP		0x06
101#endif
102#ifndef LLCSAP_PROWAYNM
103#define	LLCSAP_PROWAYNM		0x0e
104#endif
105#ifndef LLCSAP_8021D
106#define	LLCSAP_8021D		0x42
107#endif
108#ifndef LLCSAP_RS511
109#define	LLCSAP_RS511		0x4e
110#endif
111#ifndef LLCSAP_ISO8208
112#define	LLCSAP_ISO8208		0x7e
113#endif
114#ifndef LLCSAP_PROWAY
115#define	LLCSAP_PROWAY		0x8e
116#endif
117#ifndef LLCSAP_SNAP
118#define	LLCSAP_SNAP		0xaa
119#endif
120#ifndef LLCSAP_ISONS
121#define	LLCSAP_ISONS		0xfe
122#endif
123