]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/netatalk/at_var.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / netatalk / at_var.h
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_ */