xref: /original-bsd/sbin/XNSrouted/interface.h (revision c3e32dec)
1 /*
2  * Copyright (c) 1983, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)interface.h	8.1 (Berkeley) 06/05/93
8  */
9 
10 /*
11  * Routing table management daemon.
12  */
13 
14 /*
15  * An ``interface'' is similar to an ifnet structure,
16  * except it doesn't contain q'ing info, and it also
17  * handles ``logical'' interfaces (remote gateways
18  * that we want to keep polling even if they go down).
19  * The list of interfaces which we maintain is used
20  * in supplying the gratuitous routing table updates.
21  * We list only one address for  each interface, the AF_XNS one.
22  */
23 #define NIFADDR 3
24 struct interface {
25 	struct	interface *int_next;
26 	struct	sockaddr int_addr;		/* address on this host */
27 	union {
28 		struct	sockaddr intu_broadaddr;
29 		struct	sockaddr intu_dstaddr;
30 	} int_intu;
31 #define	int_broadaddr	int_intu.intu_broadaddr	/* broadcast address */
32 #define	int_dstaddr	int_intu.intu_dstaddr	/* other end of p-to-p link */
33 	int	int_metric;			/* init's routing entry */
34 	int	int_flags;			/* see below */
35 	struct	ifdebug int_input, int_output;	/* packet tracing stuff */
36 	int	int_ipackets;			/* input packets received */
37 	int	int_opackets;			/* output packets sent */
38 	char	*int_name;			/* from kernel if structure */
39 	u_short	int_transitions;		/* times gone up-down */
40 /*XNS Specific entry */
41 	struct	sameq {
42 		struct sameq *n;		/* q of other pt-to-pt links */
43 		struct sameq *p;		/* with same net # */
44 	}	int_sq;
45 };
46 
47 /*
48  * 0x1 to 0x10 are reused from the kernel's ifnet definitions,
49  * the others agree with the RTS_ flags defined elsewhere.
50  */
51 #define	IFF_UP		0x1		/* interface is up */
52 #define	IFF_BROADCAST	0x2		/* broadcast address valid */
53 #define	IFF_DEBUG	0x4		/* turn on debugging */
54 #define	IFF_ROUTE	0x8		/* routing entry installed */
55 #define	IFF_POINTOPOINT	0x10		/* interface is point-to-point link */
56 
57 #define	IFF_PASSIVE	0x2000		/* can't tell if up/down */
58 #define	IFF_INTERFACE	0x4000		/* hardware interface */
59 #define	IFF_REMOTE	0x8000		/* interface isn't on this machine */
60 
61 struct	interface *if_ifwithaddr();
62 struct	interface *if_ifwithdstaddr();
63 struct	interface *if_ifwithnet();
64 struct	interface *if_iflookup();
65