xref: /trueos/sys/netatalk/at_var.h (revision 9ed1a4b5ebe734049aa444f14884ed8ad4c23aee)
1 /*-
2  * Copyright (c) 1990, 1991 Regents of The University of Michigan.
3  * All Rights Reserved.
4  *
5  * Permission to use, copy, modify, and distribute this software and
6  * its documentation for any purpose and without fee is hereby granted,
7  * provided that the above copyright notice appears in all copies and
8  * that both that copyright notice and this permission notice appear
9  * in supporting documentation, and that the name of The University
10  * of Michigan not be used in advertising or publicity pertaining to
11  * distribution of the software without specific, written prior
12  * permission. This software is supplied as is without expressed or
13  * implied warranties of any kind.
14  *
15  *	Research Systems Unix Group
16  *	The University of Michigan
17  *	c/o Mike Clark
18  *	535 W. William Street
19  *	Ann Arbor, Michigan
20  *	+1-313-763-0525
21  *	netatalk@itd.umich.edu
22  *
23  * $FreeBSD$
24  */
25 
26 #ifndef _NETATALK_AT_VAR_H_
27 #define	_NETATALK_AT_VAR_H_
28 
29 /*
30  * For phase2, we need to keep not only our address on an interface, but also
31  * the legal networks on the interface.
32  */
33 struct at_ifaddr {
34 	struct ifaddr		 aa_ifa;
35 	struct sockaddr_at	 aa_addr;
36 	struct sockaddr_at	 aa_broadaddr;
37 	struct sockaddr_at	 aa_netmask;
38 	int			 aa_flags;
39 	u_short			 aa_firstnet;
40 	u_short			 aa_lastnet;
41 	int			 aa_probcnt;
42 	struct callout		 aa_callout;
43 	TAILQ_ENTRY(at_ifaddr)	 aa_link;
44 };
45 #define	aa_ifp		aa_ifa.ifa_ifp
46 #define	aa_dstaddr	aa_broadaddr;
47 
48 TAILQ_HEAD(at_ifaddrhead, at_ifaddr);
49 
50 struct at_aliasreq {
51 	char			ifra_name[IFNAMSIZ];
52 	struct sockaddr_at	ifra_addr;
53 	struct sockaddr_at	ifra_broadaddr;
54 	struct sockaddr_at	ifra_mask;
55 };
56 #define	ifra_dstaddr	ifra_broadaddr
57 
58 #define	AA_SAT(aa)	(&(aa->aa_addr))
59 #define	satosat(sa)	((struct sockaddr_at *)(sa))
60 
61 #define	AFA_ROUTE	0x0001
62 #define	AFA_PROBING	0x0002
63 #define	AFA_PHASE2	0x0004
64 
65 #ifdef _KERNEL
66 extern struct rwlock		at_ifaddr_rw;
67 extern struct at_ifaddrhead	at_ifaddrhead;
68 
69 #define	AT_IFADDR_LOCK_INIT()	rw_init(&at_ifaddr_rw, "at_ifaddr_rw")
70 #define	AT_IFADDR_LOCK_ASSERT()	rw_assert(&at_ifaddr_rw, RA_LOCKED)
71 #define	AT_IFADDR_RLOCK()	rw_rlock(&at_ifaddr_rw)
72 #define	AT_IFADDR_RUNLOCK()	rw_runlock(&at_ifaddr_rw)
73 #define	AT_IFADDR_WLOCK()	rw_wlock(&at_ifaddr_rw)
74 #define	AT_IFADDR_WUNLOCK()	rw_wunlock(&at_ifaddr_rw)
75 #endif
76 
77 #endif /* _NETATALK_AT_VAR_H_ */
78