home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nwnet / root / usr / include / sys / ripx_app.h / ripx_app
Text File  |  1998-08-19  |  9KB  |  246 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. /* $Novell-NWU: $Header: /proj6/ncps/nwu_top/nwnet/include/sys/ripx_app.h,v 1.2 1996/04/05 21:56:14 vtag Exp $ */
  12. /*    Copyright (c) 1990, 1991, 1992, 1993 Novell, Inc. All Rights Reserved.    */
  13. /*    Copyright (c) 1984, 1985, 1986, 1987, 1988, 1989, 1990 Novell, Inc. All Rights Reserved.    */
  14. /*      All Rights Reserved      */
  15.  
  16. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Novell Inc.    */
  17. /*    The copyright notice above does not evidence any       */
  18. /*    actual or intended publication of such source code.    */
  19.  
  20. #ifndef _NET_NW_RIPX_APP_H  /* wrapper symbol for kernel use */
  21. #define _NET_NW_RIPX_APP_H  /* subject to change without notice */
  22.  
  23. #ident "@(#)ripx_app.h    1.2"
  24.  
  25.  
  26. /*
  27.  * Copyright 1991, 1992 Novell, Inc. 
  28.  * All Rights Reserved.
  29.  *
  30.  * This work is subject to U.S. and International copyright laws and
  31.  * treaties.  No part of this work may be used, practiced, performed,
  32.  * copied, distributed, revised, modified, translated, abridged,
  33.  * condensed, expanded, collected, compiled, linked, recast,
  34.  * transformed or adapted without the prior written consent
  35.  * of Novell.  Any use or exploitation of this work without
  36.  * authorization could subject the perpetrator to criminal and
  37.  * civil liability.
  38.  *
  39.  */
  40.  
  41. #ifdef _KERNEL_HEADERS
  42. #include <util/types.h>
  43. #include <nwu/nwnet/include/nwtdr.h>
  44. #include <nwu/nwnet/include/ipx_app.h>
  45. #else
  46. #include <sys/types.h>
  47. #include <sys/nwtdr.h>
  48. #include <sys/ipx_app.h>
  49. #endif /* _KERNEL_HEADERS */
  50.  
  51. #define RIP_SOCKET    0x453
  52.  
  53. /*
  54. **    Rip Ioctl functons
  55. */
  56. #define RIPX_SET_SAPQ                    ( ( 'r' << 8 ) | 6 )
  57. #define RIPX_RESET_ROUTER                ( ( 'r' << 8 ) | 7 )
  58. #define RIPX_GET_ROUTER_TABLE            ( ( 'r' << 8 ) | 8 )
  59. #define RIPX_DOWN_ROUTER                 ( ( 'r' << 8 ) | 13 )
  60. #define RIPX_GET_NET_INFO                 ( ( 'r' << 8 ) | 14 )
  61. #define RIPX_CHECK_SAP_SOURCE             ( ( 'r' << 8 ) | 15 )
  62. #define RIPX_DUMP_HASH_TABLE             ( ( 'r' << 8 ) | 16 )
  63. #define RIPX_START_ROUTER                 ( ( 'r' << 8 ) | 17 )
  64. #define RIPX_INITIALIZE                    ( ( 'r' << 8 ) | 18 )
  65. #define RIPX_GET_ROUTE_TABLE_HASH_SIZE     ( ( 'r' << 8 ) | 19 )
  66. #define RIPX_GET_HASH_TABLE_STATS         ( ( 'r' << 8 ) | 30 )
  67. #define RIPX_STATS                         ( ( 'r' << 8 ) | 31 )
  68. #define RIPX_SET_ROUTER_TYPE             ( ( 'r' << 8 ) | 32 )
  69.  
  70. /*
  71. **    RIPX_RESET_ROUTER - Clear all routing tables, restart with no routing info
  72. **        Requires no data
  73. */
  74.  
  75. /*
  76. ** RIPX_GET_ROUTER_TABLE forms ROUTE_TABLE_SIZE message blocks
  77. ** fills each with complete routeInfo blocks, and sends them up stream
  78. ** as data until the all routes have been sent upstream to the calling
  79. ** process.  It then returns from the ioctl with no errors.
  80. **
  81. ** If a failure occurs, the functon returns a -1 and the ioctl fails.
  82. ** If data blocks were sent, the last routeInfo entry will be have
  83. ** endOfTable set to TRUE, indicating end of data sent.
  84. **
  85. ** The calling process receives the ioctl status, and if the ioctl
  86. ** was successful, retrieves the data  with the read or getmsg system calls.
  87. */
  88.  
  89. typedef struct routeInfo {
  90.     uint32        net;                    /* Network Id in net order */
  91.     uint32        connectedLan;            /* Index of the lan for this route */
  92.     uint16        hops;                    /* Number of hops */
  93.     uint16        time;                    /* Route time */
  94.     uint16        endOfTable;                /* TRUE if last route, else FALSE */
  95.     uint8        node[IPX_NODE_SIZE];    /* Ipx Node of route*/
  96. } routeInfo_t;
  97.  
  98. #define ROUTE_INFO_SIZE sizeof(routeInfo_t)
  99. #define ROUTE_TABLE_SIZE (sizeof(routeInfo_t)*25)
  100.  
  101. /*
  102. ** RIPX_DOWN_ROUTER sends a broadcast to every known network
  103. ** informing them that this router is going down.
  104. ** It does not clear the routing tables.
  105. **        Requires no data.
  106. */
  107.  
  108. /*
  109. ** RIPX_GET_NET_INFO returns information about the network specified
  110. ** by netIDNumber
  111. */
  112. typedef struct netInfo {
  113.     uint32                netIDNumber;    /* Specified by user in net order */
  114.     uint16                timeToNet;        /* Returned by router in mach order */
  115.     uint8                hopsToNet;        /* Returned by router */
  116.     uint8                netStatus;        /* Returned by router */
  117.     int32                lanIndex;        /* Index to net's lan or -1 if none */
  118. } netInfo_t;
  119.  
  120. /* Bits for netStatus */
  121. #define NET_LOCAL_BIT        0x01    /* net connected to my lan card */
  122. #define NET_STAR_BIT        0x02    /* star lan */
  123. #define NET_RELIABLE_BIT    0x04    /* slow or WAN link */
  124. #define NET_WAN_BIT            0x08    /* slow or WAN link */
  125. #define NET_ALIVE_BIT        0x40    /* not used */
  126.  
  127. /*
  128. **  RIPX_CHECK_SAP_SOURCE validates the sap source indicated using information
  129. ** passed in the checkSapSource_t structure.  
  130. */
  131. typedef struct checkSapSource_s {
  132.     uint8 serverAddress[IPX_ADDR_SIZE];        /* Specified by user in net order */
  133.     uint8 reporterAddress[IPX_NODE_SIZE];    /* Specified by user in net order */
  134.     uint16 hops;                            /* Specified by user in net order */
  135.     uint32 connectedLan;                    /* Specified by user in mach order */
  136.     int result;                         /* returned by router */
  137.                                     /* -1 not a good source  0 good source */
  138. } checkSapSource_t;
  139.  
  140. /*
  141. ** RIPX_DUMP_HASH_TABLE returns an array of integer counters.  There is one
  142. ** entry in the array for each hash table slot.  The number of
  143. ** routes hashed on each slot is returned in the array.  You can find
  144. ** the size of the hash table by the RIPX_GET_ROUTE_TABLE_HASH_SIZE ioctl.
  145. **
  146. ** Struct for RIPX_GET_ROUTE_TABLE_HASH_SIZE
  147. */
  148. typedef struct {
  149.     uint16    size;
  150. } HashTableSize_t;
  151.  
  152. /*
  153. ** RIPX_INITIALIZE sets the size of the RIP Router hash
  154. ** table.  The value passed will be rounded up to a power of 2.
  155. ** RIPX_INITIALIZE returns the actual size of the hash table
  156. ** in the size variable..
  157. ** In addition, RIPX_INITIALIZE passes to RIPX the configured
  158. ** value for MAXIMUM HOPS and type of ROUTER (FULL, CLIENT, ...).
  159. */
  160.  
  161. /* bit definitions for router types. */
  162. #define        FULL_ROUTER        0    /* full server router */
  163. #define        CLIENT_ROUTER    1    /* client router, does not send any packets
  164.                                  * after initialization */
  165.  
  166. typedef struct {
  167.     uint16    size;
  168.     int8    hops;
  169.     int8    type;
  170. } Initialize_t;
  171.  
  172. /*
  173. ** RIPX_GET_HASH_TABLE_STATS returns a hashStats_t structure
  174. */
  175.  
  176. /* the Hash table used by the Routing Information Table (RIT)
  177.  * uses simple chaining on a simple "mod" hash function (see
  178.  * Sedgewick ISBN 0-201-06673-4 pp.234-236). Since the size of
  179.  * the hash array (# keys) is configurable on-the-fly, these 
  180.  * statistics can help give meaningful info on hash performance.  
  181.  * 
  182.  * Average length of of list examined for: 
  183.  *    unsuccessful search 
  184.  *         = links/keys.
  185.  *     successful search
  186.  *         = posXcountSum/links.
  187.  */
  188. typedef struct    hashStats {
  189.     uint16    keys;        /* # hash "buckets" */
  190.  
  191.     /* These are calculated via a table scan.
  192.      */
  193.     uint16    blankKeys;                        /* # unpopulated buckets */
  194.     uint32    links;                            /* # of table entries (nets) */
  195.     uint32    posXcountSum;                    /*
  196.                     * SUM(positionCount * #chainsHavingPositionX).
  197.                     * Divide this by "links" to get the successful search
  198.                     * average time (Sedgewick, p. 235).
  199.                     */
  200.     /*
  201.     **These are maintained, actual values.
  202.     */
  203.     uint32    accesses;
  204.     uint32    collisions;
  205.     uint32    failedFinds;
  206. } hashStats_t;
  207.  
  208. /*
  209. **    RIPX_INFO returns router statistics
  210. */
  211. typedef struct RouterInfo {
  212.      uint8    RipxMajorVersion;        /* Major Version */ 
  213.      uint8    RipxMinorVersion;        /* Minor Version */ 
  214.      char    RipxRevision[2];        /* Revision */ 
  215.      time_t StartTime;                /* Time driver started */
  216.      uint32 ReceivedPackets;        /* Number of router pkts received */
  217.      uint32 ReceivedNoLanKey;        /* Number router pkts w/NULL lan key */
  218.      uint32 ReceivedBadLength;        /* Number of bad length router pkts */
  219.      uint32 ReceivedCoalesced;        /* Number of router pkts coalesced */
  220.      uint32 ReceivedNoCoalesce;        /* Number of router pkts w/coalesce fail */
  221.      uint32 ReceivedRequestPackets;    /* Number of router request packets */
  222.      uint32 ReceivedResponsePackets;/* Number of router response packets */
  223.      uint32 ReceivedUnknownRequest;    /* Number of router unknown request */
  224.      uint32 SentRouteRequests;        /* Number of router pkts sent */
  225.      uint32 SentRequestPackets;        /* Number of router request packets sent */
  226.      uint32 SentResponsePackets;    /* Number of router request packets sent */
  227.      uint32 SentAllocFailed;        /* Number of alloc of send pkt failures */
  228.      uint32 SentBadDestination;        /* Number of sent pkts, bad destinaton */
  229.      uint32 SentLan0Dropped;        /* Number of sent pkts, lan0 dropped */
  230.      uint32 SentLan0Routed;            /* Number of sent pkts, lan0 sent */
  231.      uint32 RipxIoctlSetSapQ;        /* Number ioctl RIPX_SET_SAPQ */
  232.      uint32 RipxIoctlInitialize;    /* Number ioctl INITIALIZE */
  233.      uint32 RipxIoctlGetHashSize;    /* Number ioctl GET_ROUTE_TABLE_HASH_SIZE */
  234.      uint32 RipxIoctlGetHashStats;    /* Number ioctl GET_HASH_TABLE_STATS */
  235.      uint32 RipxIoctlDumpHashTable;    /* Number ioctl GET_DUMP_HASH_TABLE */
  236.      uint32 RipxIoctlGetRouterTable;/* Number ioctl GET_ROUTER_TABLE */
  237.      uint32 RipxIoctlGetNetInfo;    /* Number ioctl GET_NET_INFO */
  238.      uint32 RipxIoctlCheckSapSource;/* Number ioctl CHECK_SAP_SOURCE */
  239.      uint32 RipxIoctlResetRouter;    /* Number ioctl RESET_ROUTER */
  240.      uint32 RipxIoctlDownRouter;    /* Number ioctl DOWN_ROUTER */
  241.      uint32 RipxIoctlStats;            /* Number ioctl RIPX_STATS */
  242.      uint32 RipxIoctlUnknown;        /* Number ioctl Unknown */
  243.     hashStats_t    RITstats;
  244. } RouterInfo_t;
  245. #endif /* _NET_NW_RIPX_APP_H */
  246.