home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nics / root.2 / usr / include / sys / route.h / route
Text File  |  1998-08-19  |  5KB  |  168 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef    _IO_ODISR_ROUTE_H
  12. #define    _IO_ODISR_ROUTE_H
  13.  
  14. #ident    "@(#)route.h    2.1"
  15. #ident    "$Header: $"
  16.  
  17. #ifdef _KERNEL_HEADERS
  18.  
  19. #include <io/odi/odi.h>
  20.  
  21. #else 
  22.  
  23. #include <sys/odi.h>
  24.  
  25. #endif
  26.  
  27. #define    RT_DFLT_TIME_COUNT 10L        /* Default # of secs for counter */
  28. #define    RT_AES_TIME_PERIOD 1000L    /* period for AES Events, 1000 ms. */
  29.  
  30. /*
  31.  * Source Routing Control Field Equates.
  32.  */
  33. #define    SR_CONTROL_FLD_SZ 0x2        /* Size of the Control Field 0 & 1 */
  34.  
  35. /*
  36.  * Control Field 0.
  37.  */
  38. #define    SR_NON_BRDCAST_MASK    0x1F    /* non Broadcast Indicators mask */
  39. #define    SR_BRDCAST_IND_MASK    0xE0    /* Broadcast Indicators mask */
  40. #define    SR_LENGTH_MASK         0x1F    /* Length Mask */
  41. #define    SR_ROUT_SZ_MASK        0x1F    /* Routing Size Mask */
  42.  
  43. #define    SR_DEST_BRDCAST_BIT    0x80    /* MSB Dest. Node Address Bit */
  44.                     /* for Broadcasts */
  45. #define    SR_GEN_BRDCAST_MASK    0x80    /* General Broadcast Mask */
  46. #define    SR_LIM_BRDCAST_MASK    0xC0    /* Limited Broadcast Mask */
  47.  
  48. #define    SR_SROUTE_BROADCAST    0xC0    /* Single Route Broadcast */
  49. #define    SR_AROUTE_BROADCAST    0x80    /* All Routes Broadcast */
  50. #define    SR_NON_BROADCAST    0x00    /* Non Broadcast, ie. specific Route */
  51.  
  52. /*
  53.  * Control Field 1
  54.  */
  55. #define    SR_DIRECT_IND    0x80    /*Direction Indicator     */
  56. #define    SR_FRAME_SZ_MASK 0x70    /* Largest Frame Bits    */
  57. #define    SR_LARGEST_FRAME 0x70    /* Largest Frame size     */
  58.  
  59.  
  60.  
  61. /* Source Routing Information Field Equates    */
  62.  
  63. #define    RT_DFLT_TRA_COUNT     5L /*Default This Ring Alternate Count*/
  64. #define    RT_MAX_ROUT_INFO_SZ 30L /*Max Routing Info Size, 13 hops*2+4=30    */
  65.  
  66. #define    SR_RII_ADDR_INDIC 0x80    /*RII Indicator for Source Address    */
  67. #define    SR_RII_ADDR_IND_MASK 0x7F /*RII Indicator Mask for Source Address*/
  68.  
  69.  
  70. /*    Source Routing routine Control Functions    */
  71.  
  72. #define    SRCFN_LOADBRD    0L    /*Load Board    */
  73. #define    SRCFN_UNLOADBRD    1L    /*Unload Board    */
  74. #define    SRCFN_CLR_SR    2L    /*Clear Source Routing Table for Board    */
  75. #define    SRCFN_CHG_UKNDA    3L    /*Change Unknown Destination Address Route*/
  76. #define    SRCFN_CHG_GENBRD 4L     /*Change General Broadcast Route*/
  77. #define    SRCFN_CHG_MULBRD 5L     /*Change Multicast Broadcast Route*/
  78. #define    SRCFN_CHG_BRDRSP 6L     /*Change Broadcast Response Type*/
  79. #define    SRCFN_CHG_SRTIMER 7L    
  80.         /*Change Source Routing Update Table Timer    */
  81. #define    SRCFN_REMOV_NODE 8L /*    Remove Node from Source Route Table*/
  82.  
  83.  
  84. /*Frame Type (ID) Definitons */
  85.  
  86. #define    ODI_FRAMEID_TOKEN_RING        4
  87. #define    ODI_FRAMEID_TOKEN_RING_SNAP    11
  88. #define    ODI_FRAMEID_FDDI_8022        20
  89. #define    ODI_FRAMEID_FDDI_SNAP        23
  90.  
  91.  
  92. /*========[ Type Definitions ]================*/
  93.  
  94. /*
  95. //disable Bothersome warnings.
  96. //warning C4309: 'cast' : truncation of constant value
  97. */
  98.  
  99. #pragma warning(disable:4309)    
  100.  
  101. /*    Set PRAGMA to pack these structures    */
  102.  
  103. #pragma    pack(1)
  104.  
  105.  
  106. /*Source Routine Field    for SRT (TRN has 7 Designator Fields)    */
  107.  
  108. typedef    struct    _SRField_ {
  109.     UINT8    SRCntlFld[2];    /*Control Field    */
  110.     UINT16    SRDsgnFld[12];    /*Designator Fields*/
  111. }SRFIELD, *PSRFIELD;
  112.  
  113.  
  114. /*    Source Routing Information structure    */
  115. /*    These nodes are allocated dynamically, ie. on the fly. 
  116.     with aged out Nodes
  117.     being reused rather than returned to the Memory Pool.  A new Node is 
  118.     allocated only when no aged out Nodes can be found.  
  119.     This hopefully keep the database list of nodes small.                                                    */
  120.  
  121. typedef    struct    _RouteInfoNode_    {
  122.     struct    _RouteInfoNode_    *pRI_NextNode;
  123.     UINT32    RI_Size;
  124.     UINT8    RI_Address[ADDR_SIZE];
  125.     UINT8    RI_SRField[RT_MAX_ROUT_INFO_SZ];/*SR Field*/
  126.     UINT32    RI_Timer;    /*    Last Receive Timer    */
  127.     }ROUTEINFONODE, *PROUTEINFONODE;
  128.  
  129.  
  130. /*    Board Source Routing Tracking structure    */
  131.  
  132. typedef    struct    _Board_SRTrack_    {
  133.     struct    _Board_SRTrack_    *pNextSRTrack;
  134.     UINT32        SRBoard;
  135.         /*Board Number being Source Routed        */
  136.     UINT8    GenBrd_UnknownDestAddr[2];    
  137.         /*General Broadcast, Unknown Dest Addr    */
  138.     UINT8    GenBrd_BroadcastFrames[2];    
  139.         /*General Broadcast, Broadcast Frame    */
  140.     UINT8    GenBrd_MulticastFrames[2];    
  141.         /*General Broadcast, Multicast Frame    */
  142.     UINT32    SRBoardAge;
  143.     UINT8    Brdcast_Response[2];
  144.     BOOLEAN        Brdcast_ThisRingAlt;
  145.     BOOLEAN    Brdcast_ThisRingOnly;
  146.     BOOLEAN    PrevBrdcast_ThisRingAlt;
  147.     UINT32    Brdcast_TRACfgCount;            
  148.         /*Configured This Ring Alternate Count    */
  149.     UINT32    Brdcast_TRACurrCount;        
  150.         /*Current This Ring Alternate Count    */
  151.     ROUTEINFONODE        *pBoardSRDataBase;
  152. }BOARD_SRTRACK, *PBOARD_SRTRACK;
  153.     
  154.  
  155. /*========[ Function Prototypes ]================*/
  156.  
  157.  
  158. /*========[ Global Variables ]================*/
  159.  
  160.  
  161. /*    Reset PRAGMA to normal after packing above structures    */
  162.  
  163. #pragma    pack()
  164.  
  165. #define ODISR_HIERINIT 32
  166.  
  167. #endif        
  168.