at_var.h revision 256281
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: stable/10/sys/netatalk/at_var.h 194913 2009-06-24 21:36:09Z rwatson $ 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 */ 33struct 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 48TAILQ_HEAD(at_ifaddrhead, at_ifaddr); 49 50struct 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 66extern struct rwlock at_ifaddr_rw; 67extern 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