RTEMS CPU Kit with SuperCore  4.11.3
if_llc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1988, 1993
3  * The Regents of the University of California. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 4. Neither the name of the University nor the names of its contributors
14  * may be used to endorse or promote products derived from this software
15  * without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * @(#)if_llc.h 8.1 (Berkeley) 6/10/93
30  * $FreeBSD: src/sys/net/if_llc.h,v 1.13 2006/12/01 17:50:11 imp Exp $
31  */
32 
33 
34 #ifndef _NET_IF_LLC_H_
35 #define _NET_IF_LLC_H_
36 
37 #ifndef __packed
38 #if defined(__GNUC__)
39 #define __packed __attribute__((packed))
40 #else
41 #define __packed
42 #endif
43 #endif
44 
45 /*
46  * IEEE 802.2 Link Level Control headers, for use in conjunction with
47  * 802.{3,4,5} media access control methods.
48  *
49  * Headers here do not use bit fields due to shortcomings in many
50  * compilers.
51  */
52 
53 struct llc {
54  u_int8_t llc_dsap;
55  u_int8_t llc_ssap;
56  union {
57  struct {
58  u_int8_t control;
59  u_int8_t format_id;
60  u_int8_t class;
61  u_int8_t window_x2;
62  } __packed type_u;
63  struct {
64  u_int8_t num_snd_x2;
65  u_int8_t num_rcv_x2;
66  } __packed type_i;
67  struct {
68  u_int8_t control;
69  u_int8_t num_rcv_x2;
70  } __packed type_s;
71  struct {
72  u_int8_t control;
73  /*
74  * We cannot put the following fields in a structure because
75  * the structure rounding might cause padding.
76  */
77  u_int8_t frmr_rej_pdu0;
78  u_int8_t frmr_rej_pdu1;
79  u_int8_t frmr_control;
80  u_int8_t frmr_control_ext;
81  u_int8_t frmr_cause;
82  } __packed type_frmr;
83  struct {
84  u_int8_t control;
85  u_int8_t org_code[3];
86  u_int16_t ether_type;
87  } __packed type_snap;
88  struct {
89  u_int8_t control;
90  u_int8_t control_ext;
91  } __packed type_raw;
92  } __packed llc_un;
93 } __packed;
94 
95 struct frmrinfo {
96  u_int8_t frmr_rej_pdu0;
97  u_int8_t frmr_rej_pdu1;
98  u_int8_t frmr_control;
99  u_int8_t frmr_control_ext;
100  u_int8_t frmr_cause;
101 } __packed;
102 
103 #define llc_control llc_un.type_u.control
104 #define llc_control_ext llc_un.type_raw.control_ext
105 #define llc_fid llc_un.type_u.format_id
106 #define llc_class llc_un.type_u.class
107 #define llc_window llc_un.type_u.window_x2
108 #define llc_frmrinfo llc_un.type_frmr.frmr_rej_pdu0
109 #define llc_frmr_pdu0 llc_un.type_frmr.frmr_rej_pdu0
110 #define llc_frmr_pdu1 llc_un.type_frmr.frmr_rej_pdu1
111 #define llc_frmr_control llc_un.type_frmr.frmr_control
112 #define llc_frmr_control_ext llc_un.type_frmr.frmr_control_ext
113 #define llc_frmr_cause llc_un.type_frmr.frmr_cause
114 #define llc_snap llc_un.type_snap
115 
116 /*
117  * Don't use sizeof(struct llc_un) for LLC header sizes
118  */
119 #define LLC_ISFRAMELEN 4
120 #define LLC_UFRAMELEN 3
121 #define LLC_FRMRLEN 7
122 #define LLC_SNAPFRAMELEN 8
123 
124 /*
125  * Unnumbered LLC format commands
126  */
127 #define LLC_UI 0x3
128 #define LLC_UI_P 0x13
129 #define LLC_DISC 0x43
130 #define LLC_DISC_P 0x53
131 #define LLC_UA 0x63
132 #define LLC_UA_P 0x73
133 #define LLC_TEST 0xe3
134 #define LLC_TEST_P 0xf3
135 #define LLC_FRMR 0x87
136 #define LLC_FRMR_P 0x97
137 #define LLC_DM 0x0f
138 #define LLC_DM_P 0x1f
139 #define LLC_XID 0xaf
140 #define LLC_XID_P 0xbf
141 #define LLC_SABME 0x6f
142 #define LLC_SABME_P 0x7f
143 
144 /*
145  * Supervisory LLC commands
146  */
147 #define LLC_RR 0x01
148 #define LLC_RNR 0x05
149 #define LLC_REJ 0x09
150 
151 /*
152  * Info format - dummy only
153  */
154 #define LLC_INFO 0x00
155 
156 /*
157  * ISO PDTR 10178 contains among others
158  */
159 #define LLC_X25_LSAP 0x7e
160 #define LLC_SNAP_LSAP 0xaa
161 #define LLC_ISO_LSAP 0xfe
162 
163 #endif /* _NET_IF_LLC_H_ */
Definition: if_llc.h:96
Definition: if_llc.h:54