|
|
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.