xref: /original-bsd/sys/deprecated/bbnnet/in_var.h (revision 2c497c00)
1*2c497c00Skarels /*
2*2c497c00Skarels  * Copyright (c) 1982 Regents of the University of California.
3*2c497c00Skarels  * All rights reserved.  The Berkeley software License Agreement
4*2c497c00Skarels  * specifies the terms and conditions for redistribution.
5*2c497c00Skarels  *
6*2c497c00Skarels  *	@(#)in_var.h	6.2 (Berkeley) 6/8/85
7*2c497c00Skarels  */
8*2c497c00Skarels 
9*2c497c00Skarels /*
10*2c497c00Skarels  * Interface address, internet version.  One of these structures
11*2c497c00Skarels  * is allocated for each interface with an internet address.
12*2c497c00Skarels  * The ifaddr structure contains the protocol-independent part
13*2c497c00Skarels  * of the structure and is assumed to be first.
14*2c497c00Skarels  */
15*2c497c00Skarels struct in_ifaddr {
16*2c497c00Skarels 	struct	ifaddr ia_ifa;		/* protocol-independent info */
17*2c497c00Skarels #define	ia_addr	ia_ifa.ifa_addr
18*2c497c00Skarels #define	ia_broadaddr	ia_ifa.ifa_broadaddr
19*2c497c00Skarels #define	ia_dstaddr	ia_ifa.ifa_dstaddr
20*2c497c00Skarels #define	ia_ifp		ia_ifa.ifa_ifp
21*2c497c00Skarels 	u_long	ia_net;			/* network number of interface */
22*2c497c00Skarels 	u_long	ia_netmask;		/* mask of net part */
23*2c497c00Skarels 	u_long	ia_subnet;		/* subnet number, including net */
24*2c497c00Skarels 	u_long	ia_subnetmask;		/* mask of net + subnet */
25*2c497c00Skarels 	int	ia_flags;
26*2c497c00Skarels 	struct	in_ifaddr *ia_next;	/* next in list of internet addresses */
27*2c497c00Skarels };
28*2c497c00Skarels 
29*2c497c00Skarels /*
30*2c497c00Skarels  * Given a pointer to an in_ifaddr (ifaddr),
31*2c497c00Skarels  * return a pointer to the addr as a sockadd_in.
32*2c497c00Skarels  */
33*2c497c00Skarels #define	IA_SIN(ia) ((struct sockaddr_in *)(&((struct in_ifaddr *)ia)->ia_addr))
34*2c497c00Skarels 
35*2c497c00Skarels #define IA_B_SIN(ia) ((struct sockaddr_in *)(&((struct in_ifaddr *)ia)->ia_broadaddr))
36*2c497c00Skarels 
37*2c497c00Skarels /*
38*2c497c00Skarels  * in_ifaddr to in_addr
39*2c497c00Skarels  */
40*2c497c00Skarels #define IA_INADDR(ia) (IA_SIN(ia)->sin_addr)
41*2c497c00Skarels 
42*2c497c00Skarels #define IA_B_INADDR(ia) (IA_B_SIN(ia)->sin_addr)
43*2c497c00Skarels 
44*2c497c00Skarels /*
45*2c497c00Skarels  * ia_flags
46*2c497c00Skarels  */
47*2c497c00Skarels #define	IFA_ROUTE	0x01		/* routing entry installed */
48*2c497c00Skarels 
49*2c497c00Skarels /*
50*2c497c00Skarels  * protocol switch table built by IP at initialization time
51*2c497c00Skarels  */
52*2c497c00Skarels 
53*2c497c00Skarels struct ipswitch {
54*2c497c00Skarels     struct protosw *ipsw_user;		/* for normal user packets passed up */
55*2c497c00Skarels     struct protosw *ipsw_raw;		/* for raw packets passed up */
56*2c497c00Skarels     int		    ipsw_hlen;
57*2c497c00Skarels };
58*2c497c00Skarels extern struct ipswitch ipsw[];
59*2c497c00Skarels 
60*2c497c00Skarels extern u_char inetctlerrmap[];
61*2c497c00Skarels 
62*2c497c00Skarels /*
63*2c497c00Skarels  * Internet protocol statistics structure (should be at the head
64*2c497c00Skarels  * of protocol dependent structures).
65*2c497c00Skarels  */
66*2c497c00Skarels 
67*2c497c00Skarels struct in_stat {
68*2c497c00Skarels     int in_total;		/* total packets seen */
69*2c497c00Skarels     int in_badsum;		/* packets with bad cksums */
70*2c497c00Skarels     int in_tooshort;		/* bad sizes */
71*2c497c00Skarels     int in_drops;		/* packets no one (except raw) wanted */
72*2c497c00Skarels };
73*2c497c00Skarels 
74*2c497c00Skarels 
75*2c497c00Skarels #ifdef	KERNEL
76*2c497c00Skarels extern	struct in_ifaddr *in_ifaddr;
77*2c497c00Skarels 
78*2c497c00Skarels extern  struct in_ifaddr *in_iawithaddr();
79*2c497c00Skarels extern  struct in_ifaddr *in_iawithnet();
80*2c497c00Skarels extern  struct in_ifaddr *in_iafromif();
81*2c497c00Skarels #endif
82