xref: /csrg-svn/sys/net/if_llc.h (revision 63211)
138969Skarels /*
2*63211Sbostic  * Copyright (c) 1988, 1993
3*63211Sbostic  *	The Regents of the University of California.  All rights reserved.
438969Skarels  *
544464Sbostic  * %sccs.include.redist.c%
638969Skarels  *
7*63211Sbostic  *      @(#)if_llc.h	8.1 (Berkeley) 06/10/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 {
3758233Ssklower 	        u_char control;
3858233Ssklower 		struct frmrinfo {
3958233Ssklower 			u_char rej_pdu_0;
4058233Ssklower 			u_char rej_pdu_1;
4158233Ssklower 			u_char frmr_control;
4258233Ssklower 			u_char frmr_control_ext;
4358233Ssklower 			u_char frmr_cause;
4458233Ssklower 		} frmrinfo;
4558233Ssklower 	    } type_frmr;
4658233Ssklower 	    struct {
4738969Skarels 		u_char control;
4838969Skarels 		u_char org_code[3];
4938969Skarels 		u_short ether_type;
5038969Skarels 	    } type_snap;
5158233Ssklower 	    struct {
5258233Ssklower 		u_char control;
5358233Ssklower 		u_char control_ext;
5458233Ssklower 	    } type_raw;
5538969Skarels 	} llc_un;
5638969Skarels };
5758233Ssklower #define llc_control            llc_un.type_u.control
5858233Ssklower #define	llc_control_ext        llc_un.type_raw.control_ext
5958233Ssklower #define llc_fid                llc_un.type_u.format_id
6058233Ssklower #define llc_class              llc_un.type_u.class
6158233Ssklower #define llc_window             llc_un.type_u.window_x2
6258233Ssklower #define llc_frmrinfo           llc_un.type_frmr.frmrinfo
6358233Ssklower #define llc_frmr_pdu0          llc_un.type_frmr.frmrinfo.rej_pdu0
6458233Ssklower #define llc_frmr_pdu1          llc_un.type_frmr.frmrinfo.rej_pdu1
6558233Ssklower #define llc_frmr_control       llc_un.type_frmr.frmrinfo.frmr_control
6658233Ssklower #define llc_frmr_control_ext   llc_un.type_frmr.frmrinfo.frmr_control_ext
6758233Ssklower #define llc_frmr_cause         llc_un.type_frmr.frmrinfo.frmr_control_ext
6838969Skarels 
6958233Ssklower /*
7058233Ssklower  * Don't use sizeof(struct llc_un) for LLC header sizes
7158233Ssklower  */
7258233Ssklower #define LLC_ISFRAMELEN 4
7358233Ssklower #define LLC_UFRAMELEN  3
7458233Ssklower #define LLC_FRMRLEN    7
7558233Ssklower 
7658233Ssklower /*
7758233Ssklower  * Unnumbered LLC format commands
7858233Ssklower  */
7938969Skarels #define LLC_UI		0x3
8038969Skarels #define LLC_UI_P	0x13
8158233Ssklower #define LLC_DISC	0x43
8258233Ssklower #define	LLC_DISC_P	0x53
8358233Ssklower #define LLC_UA		0x63
8458233Ssklower #define LLC_UA_P	0x73
8558233Ssklower #define LLC_TEST	0xe3
8658233Ssklower #define LLC_TEST_P	0xf3
8758233Ssklower #define LLC_FRMR	0x87
8858233Ssklower #define	LLC_FRMR_P	0x97
8958233Ssklower #define LLC_DM		0x0f
9058233Ssklower #define	LLC_DM_P	0x1f
9138969Skarels #define LLC_XID		0xaf
9238969Skarels #define LLC_XID_P	0xbf
9358233Ssklower #define LLC_SABME	0x6f
9458233Ssklower #define LLC_SABME_P	0x7f
9538969Skarels 
9658233Ssklower /*
9758233Ssklower  * Supervisory LLC commands
9858233Ssklower  */
9958233Ssklower #define	LLC_RR		0x01
10058233Ssklower #define	LLC_RNR		0x05
10158233Ssklower #define	LLC_REJ		0x09
10258233Ssklower 
10358233Ssklower /*
10458233Ssklower  * Info format - dummy only
10558233Ssklower  */
10658233Ssklower #define	LLC_INFO	0x00
10758233Ssklower 
10858233Ssklower /*
10958233Ssklower  * ISO PDTR 10178 contains among others
11058233Ssklower  */
11158233Ssklower #define LLC_X25_LSAP	0x7e
11258233Ssklower #define LLC_SNAP_LSAP	0xaa
11338969Skarels #define LLC_ISO_LSAP	0xfe
11458233Ssklower 
11558233Ssklower 
11658233Ssklower 
11758233Ssklower 
11858233Ssklower 
11958233Ssklower 
120