home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / net / tokendefs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  4.2 KB  |  153 lines

  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_ */
  153.