|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved.
23: *
24: * tokendefs.h - Token-Ring MAC header definitions.
25: *
26: * HISTORY
27: * 8-Oct-92 Joel Greenblatt at NeXT
28: * created
29: */
30: #ifndef _NET_TOKENDEFS_H_
31: #define _NET_TOKENDEFS_H_
32:
33:
34: #include <sys/errno.h>
35:
36: /*
37: * Token ring address - 6 octets
38: */
39: #define NUM_TR_ADDR_BYTES 6
40:
41: struct token_addr {
42: u_char token_addr_octet[NUM_TR_ADDR_BYTES];
43: };
44:
45: #define ta_byte token_addr_octet
46:
47: typedef struct token_addr token_addr_t;
48:
49: /*
50: * MAC header size
51: */
52: #define MAC_HDR_MIN (1+1+6+6) /* MAC hdr size w/o ri field */
53: #define MAC_HDR_MAX (MAC_HDR_MIN + RISIZE) /* MAC hdr size w/max ri */
54:
55: /*
56: * The maximum size of the MAC information field as spec'd by ISO 8802/5.
57: */
58: #define MAC_INFO_4MB 4472 /* max size of mac info field -- 4 Mbs */
59: #define MAC_INFO_16MB 17800 /* max size of mac info field -- 16 Mbs */
60:
61: /*
62: * Maximum DMA packet sizes for 4 & 16 Mbit assuming no CRC.
63: */
64: #define MAC_DMA_MAX_4MB (MAC_HDR_MAX + MAC_INFO_4MB)
65: #define MAC_DMA_MAX_16MB (MAC_HDR_MAX + MAC_INFO_16MB)
66:
67: /*
68: * Routing control field.
69: */
70: typedef struct {
71:
72: #if __BIG_ENDIAN__
73: unsigned char bcast : 3, /* broadcast */
74: len : 5; /* length */
75: unsigned char dir : 1, /* direction */
76: longf : 3, /* longest frame */
77: rsrvd : 4; /* reserved */
78:
79: #elif __LITTLE_ENDIAN__
80: unsigned char len : 5, /* length */
81: bcast : 3; /* broadcast */
82: unsigned char rsrvd : 4, /* reserved */
83: longf : 3, /* longest frame */
84: dir : 1; /* direction */
85: #else
86: error
87: #endif
88: } routing_ctl_t;
89:
90: /* bcast field ... */
91: #define BI_SPECIFIC 0 /* b'0xx': non-broadcast (specific route) */
92: #define BI_AR_BCAST 4 /* b'10x': all-routes broadcast */
93: #define BI_SR_BCAST 6 /* b'11x': single-route broadcast */
94:
95: /*
96: * longf field
97: */
98: #define LF_S516 0
99: #define LF_S1500 1
100: #define LF_S2052 2
101: #define LF_S4472 3
102: #define LF_S8144 4
103: #define LF_S11407 5
104: #define LF_S17800 6
105: #define LF_BCAST 7 /* All-routes broadcast */
106:
107: #define LFB_4MB LF_S4472 /* encoded max info -- 4 Mb */
108: #define LFB_16MB LF_S17800 /* encoded max info -- 16 Mb */
109:
110: /*
111: * Source Routing field (2-18 bytes, must be even)
112: */
113:
114: #define RISIZE 18 /* max size (bytes) of 802.5 routing field */
115:
116: typedef struct {
117: routing_ctl_t rc;
118: u_char sn[RISIZE-sizeof(routing_ctl_t)];
119: } sroute_t;
120:
121: /*
122: * Token Ring MAC header (IEEE 802.5, ISO 8802/5)
123: */
124:
125: #define TR_DA_SIZE 6
126:
127: typedef struct {
128: u_char ac; /* PPPTMRRR; PPP = token priority */
129: u_char fc; /* FFrrZZZZ; FF = frame type */
130: #define TR_FC_MASK 0xc0 /* mask for frame-type */
131: #define TR_FC_MAC 0x00 /* frame-type = mac frame */
132: #define TR_FC_DATA 0x40 /* frame-type = non-mac (data frame) */
133: u_char da[TR_DA_SIZE]; /* destination address */
134: u_char sa[TR_DA_SIZE]; /* source address */
135: #define TR_RII 0x80 /* routing info indicator bit */
136: sroute_t ri; /* routing information field */
137: } tokenHeader_t;
138:
139: /*
140: * token-ring netif definitions
141: */
142: #define IFTYPE_TOKENRING "4/16Mb Token-Ring" /* netif type-string */
143:
144: /*
145: * Error codes
146: */
147: #define TRINGDOWN ENETDOWN /* interface down */
148: #define TNOBUFS ENOBUFS /* transmit queue full error */
149: #define TBADDA EINVAL /* bad dest addr */
150: #define TBADFSIZE EMSGSIZE /* bad frame size */
151:
152: #endif /* ! _NET_TOKENDEFS_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.