xref: /csrg-svn/sys/net/if_llc.h (revision 58233)
138969Skarels /*
2*58233Ssklower  * Copyright (c) 1988, 1993 Regents of the University of California.
338969Skarels  * All rights reserved.
438969Skarels  *
544464Sbostic  * %sccs.include.redist.c%
638969Skarels  *
7*58233Ssklower  *      @(#)if_llc.h	7.3 (Berkeley) 02/25/93
838969Skarels  */
938969Skarels 
1038969Skarels /*
1138969Skarels  * IEEE 802.2 Link Level Control headers, for use in conjunction with
1238969Skarels  * 802.{3,4,5} media access control methods.
1338969Skarels  *
1438969Skarels  * Headers here do not use bit fields due to shortcommings in many
1538969Skarels  * compilers.
1638969Skarels  */
1738969Skarels 
1838969Skarels struct llc {
1938969Skarels 	u_char	llc_dsap;
2038969Skarels 	u_char	llc_ssap;
2138969Skarels 	union {
2238969Skarels 	    struct {
2338969Skarels 		u_char control;
2438969Skarels 		u_char format_id;
2538969Skarels 		u_char class;
2638969Skarels 		u_char window_x2;
2738969Skarels 	    } type_u;
2838969Skarels 	    struct {
2938969Skarels 		u_char num_snd_x2;
3038969Skarels 		u_char num_rcv_x2;
3138969Skarels 	    } type_i;
3238969Skarels 	    struct {
3338969Skarels 		u_char control;
3438969Skarels 		u_char num_rcv_x2;
3538969Skarels 	    } type_s;
3638969Skarels 	    struct {
37*58233Ssklower 	        u_char control;
38*58233Ssklower 		struct frmrinfo {
39*58233Ssklower 			u_char rej_pdu_0;
40*58233Ssklower 			u_char rej_pdu_1;
41*58233Ssklower 			u_char frmr_control;
42*58233Ssklower 			u_char frmr_control_ext;
43*58233Ssklower 			u_char frmr_cause;
44*58233Ssklower 		} frmrinfo;
45*58233Ssklower 	    } type_frmr;
46*58233Ssklower 	    struct {
4738969Skarels 		u_char control;
4838969Skarels 		u_char org_code[3];
4938969Skarels 		u_short ether_type;
5038969Skarels 	    } type_snap;
51*58233Ssklower 	    struct {
52*58233Ssklower 		u_char control;
53*58233Ssklower 		u_char control_ext;
54*58233Ssklower 	    } type_raw;
5538969Skarels 	} llc_un;
5638969Skarels };
57*58233Ssklower #define llc_control            llc_un.type_u.control
58*58233Ssklower #define	llc_control_ext        llc_un.type_raw.control_ext
59*58233Ssklower #define llc_fid                llc_un.type_u.format_id
60*58233Ssklower #define llc_class              llc_un.type_u.class
61*58233Ssklower #define llc_window             llc_un.type_u.window_x2
62*58233Ssklower #define llc_frmrinfo           llc_un.type_frmr.frmrinfo
63*58233Ssklower #define llc_frmr_pdu0          llc_un.type_frmr.frmrinfo.rej_pdu0
64*58233Ssklower #define llc_frmr_pdu1          llc_un.type_frmr.frmrinfo.rej_pdu1
65*58233Ssklower #define llc_frmr_control       llc_un.type_frmr.frmrinfo.frmr_control
66*58233Ssklower #define llc_frmr_control_ext   llc_un.type_frmr.frmrinfo.frmr_control_ext
67*58233Ssklower #define llc_frmr_cause         llc_un.type_frmr.frmrinfo.frmr_control_ext
6838969Skarels 
69*58233Ssklower /*
70*58233Ssklower  * Don't use sizeof(struct llc_un) for LLC header sizes
71*58233Ssklower  */
72*58233Ssklower #define LLC_ISFRAMELEN 4
73*58233Ssklower #define LLC_UFRAMELEN  3
74*58233Ssklower #define LLC_FRMRLEN    7
75*58233Ssklower 
76*58233Ssklower /*
77*58233Ssklower  * Unnumbered LLC format commands
78*58233Ssklower  */
7938969Skarels #define LLC_UI		0x3
8038969Skarels #define LLC_UI_P	0x13
81*58233Ssklower #define LLC_DISC	0x43
82*58233Ssklower #define	LLC_DISC_P	0x53
83*58233Ssklower #define LLC_UA		0x63
84*58233Ssklower #define LLC_UA_P	0x73
85*58233Ssklower #define LLC_TEST	0xe3
86*58233Ssklower #define LLC_TEST_P	0xf3
87*58233Ssklower #define LLC_FRMR	0x87
88*58233Ssklower #define	LLC_FRMR_P	0x97
89*58233Ssklower #define LLC_DM		0x0f
90*58233Ssklower #define	LLC_DM_P	0x1f
9138969Skarels #define LLC_XID		0xaf
9238969Skarels #define LLC_XID_P	0xbf
93*58233Ssklower #define LLC_SABME	0x6f
94*58233Ssklower #define LLC_SABME_P	0x7f
9538969Skarels 
96*58233Ssklower /*
97*58233Ssklower  * Supervisory LLC commands
98*58233Ssklower  */
99*58233Ssklower #define	LLC_RR		0x01
100*58233Ssklower #define	LLC_RNR		0x05
101*58233Ssklower #define	LLC_REJ		0x09
102*58233Ssklower 
103*58233Ssklower /*
104*58233Ssklower  * Info format - dummy only
105*58233Ssklower  */
106*58233Ssklower #define	LLC_INFO	0x00
107*58233Ssklower 
108*58233Ssklower /*
109*58233Ssklower  * ISO PDTR 10178 contains among others
110*58233Ssklower  */
111*58233Ssklower #define LLC_X25_LSAP	0x7e
112*58233Ssklower #define LLC_SNAP_LSAP	0xaa
11338969Skarels #define LLC_ISO_LSAP	0xfe
114*58233Ssklower 
115*58233Ssklower 
116*58233Ssklower 
117*58233Ssklower 
118*58233Ssklower 
119*58233Ssklower 
120