| 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 40 | #define MAX_LINKS 4 | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 41 | #define MAX_NODES 17		/* Maximum nodes in a subnet */ | 
 | 42 | #define NODE_BYTES ((MAX_NODES / 8) + 1)	/* Number of bytes needed for | 
 | 43 | 						   1 bit per node */ | 
 | 44 | #define ROUTE_DATA_SIZE  (NODE_BYTES + 2)	/* Number of bytes for complete | 
 | 45 | 						   info about cost etc. */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 46 | #define ROUTES_PER_PACKET ((PKT_MAX_DATA_LEN -2)/ ROUTE_DATA_SIZE) | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 47 | 					      /* Number of nodes we can squeeze | 
 | 48 | 					         into one packet */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 49 | #define MAX_TOPOLOGY_PACKETS (MAX_NODES / ROUTES_PER_PACKET + 1) | 
 | 50 | /************************************************ | 
 | 51 |  * Define the types of command for the ROUTE RUP. | 
 | 52 |  ************************************************/ | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 53 | #define ROUTE_REQUEST    0	/* Request an ID */ | 
 | 54 | #define ROUTE_FOAD       1	/* Kill the RTA */ | 
 | 55 | #define ROUTE_ALREADY    2	/* ID given already */ | 
 | 56 | #define ROUTE_USED       3	/* All ID's used */ | 
 | 57 | #define ROUTE_ALLOCATE   4	/* Here it is */ | 
 | 58 | #define ROUTE_REQ_TOP    5	/* I bet you didn't expect.... | 
 | 59 | 				   the Topological Inquisition */ | 
 | 60 | #define ROUTE_TOPOLOGY   6	/* Topology request answered FD */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | /******************************************************************* | 
 | 62 |  * Define the Route Map Structure | 
 | 63 |  * | 
 | 64 |  * The route map gives a pointer to a Link Structure to use. | 
 | 65 |  * This allows Disconnected Links to be checked quickly | 
 | 66 |  ******************************************************************/ | 
 | 67 | typedef struct COST_ROUTE COST_ROUTE; | 
 | 68 | struct COST_ROUTE { | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 69 | 	unsigned char cost;	/* Cost down this link */ | 
 | 70 | 	unsigned char route[NODE_BYTES];	/* Nodes thorough this route */ | 
 | 71 | }; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 72 |  | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 73 | typedef struct ROUTE_STR ROUTE_STR; | 
 | 74 | struct ROUTE_STR { | 
 | 75 | 	COST_ROUTE cost_route[MAX_LINKS]; | 
 | 76 | 	/* cost / route for this link */ | 
 | 77 | 	ushort favoured;	/* favoured link */ | 
 | 78 | }; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 79 |  | 
 | 80 |  | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 81 | #define NO_LINK            (short) 5	/* Link unattached */ | 
 | 82 | #define ROUTE_NO_ID        (short) 100	/* No Id */ | 
 | 83 | #define ROUTE_DISCONNECT   (ushort) 0xff	/* Not connected */ | 
 | 84 | #define ROUTE_INTERCONNECT (ushort) 0x40	/* Sub-net interconnect */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 85 |  | 
 | 86 |  | 
 | 87 | #define SYNC_RUP         (ushort) 255 | 
 | 88 | #define COMMAND_RUP      (ushort) 254 | 
 | 89 | #define ERROR_RUP        (ushort) 253 | 
 | 90 | #define POLL_RUP         (ushort) 252 | 
 | 91 | #define BOOT_RUP         (ushort) 251 | 
 | 92 | #define ROUTE_RUP        (ushort) 250 | 
 | 93 | #define STATUS_RUP       (ushort) 249 | 
 | 94 | #define POWER_RUP        (ushort) 248 | 
 | 95 |  | 
| Andrew Morton | 8d8706e | 2006-01-11 12:17:49 -0800 | [diff] [blame] | 96 | #define HIGHEST_RUP      (ushort) 255	/* Set to Top one */ | 
 | 97 | #define LOWEST_RUP       (ushort) 248	/* Set to bottom one */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 98 |  | 
 | 99 | #endif | 
 | 100 |  | 
 | 101 | /*********** end of file ***********/ |