xref: /original-bsd/sbin/routed/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  */
22 struct interface {
23 	struct	interface *int_next;
24 	struct	sockaddr int_addr;		/* address on this host */
25 	union {
26 		struct	sockaddr intu_broadaddr;
27 		struct	sockaddr intu_dstaddr;
28 	} int_intu;
29 #define	int_broadaddr	int_intu.intu_broadaddr	/* broadcast address */
30 #define	int_dstaddr	int_intu.intu_dstaddr	/* other end of p-to-p link */
31 	int	int_metric;			/* init's routing entry */
32 	int	int_flags;			/* see below */
33 	/* START INTERNET SPECIFIC */
34 	u_long	int_net;			/* network # */
35 	u_long	int_netmask;			/* net mask for addr */
36 	u_long	int_subnet;			/* subnet # */
37 	u_long	int_subnetmask;			/* subnet mask for addr */
38 	/* END INTERNET SPECIFIC */
39 	struct	ifdebug int_input, int_output;	/* packet tracing stuff */
40 	int	int_ipackets;			/* input packets received */
41 	int	int_opackets;			/* output packets sent */
42 	char	*int_name;			/* from kernel if structure */
43 	u_short	int_transitions;		/* times gone up-down */
44 };
45 
46 /*
47  * 0x1 to 0x10 are reused from the kernel's ifnet definitions,
48  * the others agree with the RTS_ flags defined elsewhere.
49  */
50 #define	IFF_UP		0x1		/* interface is up */
51 #define	IFF_BROADCAST	0x2		/* broadcast address valid */
52 #define	IFF_DEBUG	0x4		/* turn on debugging */
53 #define	IFF_LOOPBACK	0x8		/* software loopback net */
54 #define	IFF_POINTOPOINT	0x10		/* interface is point-to-point link */
55 
56 #define	IFF_SUBNET	0x100000	/* interface on subnetted network */
57 #define	IFF_PASSIVE	0x200000	/* can't tell if up/down */
58 #define	IFF_INTERFACE	0x400000	/* hardware interface */
59 #define	IFF_REMOTE	0x800000	/* 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