]> git.saurik.com Git - apple/xnu.git/blame - bsd/net/tokendefs.h
xnu-201.42.3.tar.gz
[apple/xnu.git] / bsd / net / tokendefs.h
CommitLineData
1c79356b
A
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
41struct token_addr {
42 u_char token_addr_octet[NUM_TR_ADDR_BYTES];
43};
44
45#define ta_byte token_addr_octet
46
47typedef 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 */
70typedef 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
116typedef 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
127typedef 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_ */