xref: /original-bsd/sys/vax/if/if_hy.h (revision 7e7b101a)
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