1 /* if_hy.h 6.1 83/07/29 */ 2 3 /* 4 * Network Systems Corporation Hyperchannel 5 * routing database 6 */ 7 8 #define HYRSIZE 37 /* max number of adapters in routing tables */ 9 10 struct hyroute { 11 struct timeval hyr_lasttime; /* last update time */ 12 struct hy_hash { 13 u_short hyr_flags; /* status flags - see below */ 14 u_short hyr_key; /* desired address */ 15 union { 16 /* 17 * direct entry (can get there directly) 18 */ 19 struct { 20 u_short hyru_dst; /* adapter number & port */ 21 u_short hyru_ctl; /* trunks to try */ 22 u_short hyru_access; /* access code (mostly unused) */ 23 } hyr_d; 24 #define hyr_dst hyr_u.hyr_d.hyru_dst 25 #define hyr_ctl hyr_u.hyr_d.hyru_ctl 26 #define hyr_access hyr_u.hyr_d.hyru_access 27 /* 28 * indirect entry (one or more hops required) 29 */ 30 struct { 31 u_char hyru_pgate; /* 1st gateway slot */ 32 u_char hyru_egate; /* # gateways */ 33 u_char hyru_nextgate; /* gateway to use next */ 34 } hyr_i; 35 #define hyr_pgate hyr_u.hyr_i.hyru_pgate 36 #define hyr_egate hyr_u.hyr_i.hyru_egate 37 #define hyr_nextgate hyr_u.hyr_i.hyru_nextgate 38 } hyr_u; 39 } hyr_hash[HYRSIZE]; 40 u_char hyr_gateway[256]; 41 }; 42 43 #ifdef KERNEL 44 struct hyroute hy_route[NHY]; 45 #endif 46 47 #define HYR_INUSE 0x01 /* entry in use */ 48 #define HYR_DIR 0x02 /* direct entry */ 49 #define HYR_GATE 0x04 /* gateway entry */ 50 51 #define HYRHASH(x) (((x) ^ ((x) >> 16)) % HYRSIZE) 52 53 #define HYSETROUTE _IOW(H, 0x80, sizeof (struct hyroute)) 54 #define HYGETROUTE _IOR(H, 0x81, sizeof (struct hyroute)) 55