| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /**************************************************************************** | 
|  | 2 | *******                                                              ******* | 
|  | 3 | *******                 R O U T E     H E A D E R | 
|  | 4 | *******                                                              ******* | 
|  | 5 | **************************************************************************** | 
|  | 6 |  | 
|  | 7 | Author  : Ian Nandhra / Jeremy Rolls | 
|  | 8 | Date    : | 
|  | 9 |  | 
|  | 10 | * | 
|  | 11 | *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK. | 
|  | 12 | * | 
|  | 13 | *      This program is free software; you can redistribute it and/or modify | 
|  | 14 | *      it under the terms of the GNU General Public License as published by | 
|  | 15 | *      the Free Software Foundation; either version 2 of the License, or | 
|  | 16 | *      (at your option) any later version. | 
|  | 17 | * | 
|  | 18 | *      This program is distributed in the hope that it will be useful, | 
|  | 19 | *      but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 20 | *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 21 | *      GNU General Public License for more details. | 
|  | 22 | * | 
|  | 23 | *      You should have received a copy of the GNU General Public License | 
|  | 24 | *      along with this program; if not, write to the Free Software | 
|  | 25 | *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 26 |  | 
|  | 27 | Version : 0.01 | 
|  | 28 |  | 
|  | 29 |  | 
|  | 30 | Mods | 
|  | 31 | ---------------------------------------------------------------------------- | 
|  | 32 | Date     By                Description | 
|  | 33 | ---------------------------------------------------------------------------- | 
|  | 34 |  | 
|  | 35 | ***************************************************************************/ | 
|  | 36 |  | 
|  | 37 | #ifndef _route_h | 
|  | 38 | #define _route_h | 
|  | 39 |  | 
|  | 40 | #ifdef SCCS_LABELS | 
|  | 41 | #ifndef lint | 
|  | 42 | /* static char *_rio_route_h_sccs = "@(#)route.h	1.3"; */ | 
|  | 43 | #endif | 
|  | 44 | #endif | 
|  | 45 |  | 
|  | 46 | #define MAX_LINKS 4 | 
|  | 47 | #define MAX_NODES 17                          /* Maximum nodes in a subnet */ | 
|  | 48 | #define NODE_BYTES ((MAX_NODES / 8) + 1)      /* Number of bytes needed for | 
|  | 49 | 1 bit per node */ | 
|  | 50 | #define ROUTE_DATA_SIZE  (NODE_BYTES + 2)     /* Number of bytes for complete | 
|  | 51 | info about cost etc. */ | 
|  | 52 | #define ROUTES_PER_PACKET ((PKT_MAX_DATA_LEN -2)/ ROUTE_DATA_SIZE) | 
|  | 53 | /* Number of nodes we can squeeze | 
|  | 54 | into one packet */ | 
|  | 55 | #define MAX_TOPOLOGY_PACKETS (MAX_NODES / ROUTES_PER_PACKET + 1) | 
|  | 56 | /************************************************ | 
|  | 57 | * Define the types of command for the ROUTE RUP. | 
|  | 58 | ************************************************/ | 
|  | 59 | #define ROUTE_REQUEST    0                    /* Request an ID */ | 
|  | 60 | #define ROUTE_FOAD       1                    /* Kill the RTA */ | 
|  | 61 | #define ROUTE_ALREADY    2                    /* ID given already */ | 
|  | 62 | #define ROUTE_USED       3                    /* All ID's used */ | 
|  | 63 | #define ROUTE_ALLOCATE   4                    /* Here it is */ | 
|  | 64 | #define ROUTE_REQ_TOP    5                    /* I bet you didn't expect.... | 
|  | 65 | the Topological Inquisition */ | 
|  | 66 | #define ROUTE_TOPOLOGY   6                    /* Topology request answered FD */ | 
|  | 67 | /******************************************************************* | 
|  | 68 | * Define the Route Map Structure | 
|  | 69 | * | 
|  | 70 | * The route map gives a pointer to a Link Structure to use. | 
|  | 71 | * This allows Disconnected Links to be checked quickly | 
|  | 72 | ******************************************************************/ | 
|  | 73 | typedef struct COST_ROUTE COST_ROUTE; | 
|  | 74 | struct COST_ROUTE { | 
|  | 75 | unsigned char cost;        /* Cost down this link */ | 
|  | 76 | unsigned char route[NODE_BYTES]; /* Nodes thorough this route */ | 
|  | 77 | } ; | 
|  | 78 |  | 
|  | 79 | typedef struct ROUTE_STR ROUTE_STR ; | 
|  | 80 | struct  ROUTE_STR { | 
|  | 81 | COST_ROUTE cost_route[MAX_LINKS]; | 
|  | 82 | /* cost / route for this link */ | 
|  | 83 | ushort favoured;          /* favoured link */ | 
|  | 84 | } ; | 
|  | 85 |  | 
|  | 86 |  | 
|  | 87 | #define NO_LINK            (short) 5      /* Link unattached */ | 
|  | 88 | #define ROUTE_NO_ID        (short) 100    /* No Id */ | 
|  | 89 | #define ROUTE_DISCONNECT   (ushort) 0xff  /* Not connected */ | 
|  | 90 | #define ROUTE_INTERCONNECT (ushort) 0x40  /* Sub-net interconnect */ | 
|  | 91 |  | 
|  | 92 |  | 
|  | 93 | #define SYNC_RUP         (ushort) 255 | 
|  | 94 | #define COMMAND_RUP      (ushort) 254 | 
|  | 95 | #define ERROR_RUP        (ushort) 253 | 
|  | 96 | #define POLL_RUP         (ushort) 252 | 
|  | 97 | #define BOOT_RUP         (ushort) 251 | 
|  | 98 | #define ROUTE_RUP        (ushort) 250 | 
|  | 99 | #define STATUS_RUP       (ushort) 249 | 
|  | 100 | #define POWER_RUP        (ushort) 248 | 
|  | 101 |  | 
|  | 102 | #define HIGHEST_RUP      (ushort) 255   /* Set to Top one */ | 
|  | 103 | #define LOWEST_RUP       (ushort) 248   /* Set to bottom one */ | 
|  | 104 |  | 
|  | 105 | #endif | 
|  | 106 |  | 
|  | 107 | /*********** end of file ***********/ | 
|  | 108 |  |