15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#ifndef __LINUX_IF_ADDR_H
25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define __LINUX_IF_ADDR_H
35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include <linux/netlink.h>
50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner
60bc735ffcfb223c0186419547abaa5c84482663eChris Lattnerstruct ifaddrmsg
75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer{
85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u8		ifa_family;
95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u8		ifa_prefixlen;	/* The prefix length		*/
105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u8		ifa_flags;	/* Flags			*/
115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u8		ifa_scope;	/* Address scope		*/
125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u32		ifa_index;	/* Link index			*/
135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer};
145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer/*
165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer * Important comment:
175f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer * IFA_ADDRESS is prefix address, rather than local interface address.
189c1b750c59d510e6c9eccb1f37bccc46ccfe6844Ted Kremenek * It makes no difference for normally configured broadcast interfaces,
19eb50ed88c2aa040fac08bf2a50bde4dd3da6eb19Chris Lattner * but for point-to-point IFA_ADDRESS is DESTINATION address,
205d75de0f821023f4ed4815825bf3aea8a0b5e40dChris Lattner * local address is supplied in IFA_LOCAL attribute.
216137dc99ef0c2b14050631367057758b0d596cb3Ted Kremenek */
221b63e4f732dbc73d90abf886b4d21f8e3a165f6dChris Lattnerenum
23adc4eeb08042a35ae914fc557ffec0cef3df2374Chris Lattner{
24c7229c338c21ef26b01ef3ecf9eec4fd373fa9ecChris Lattner	IFA_UNSPEC,
255f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	IFA_ADDRESS,
26cc1a875f94630e58d24a55577ffbf0e89b7da8c7Chris Lattner	IFA_LOCAL,
27caaa7df2c78bbd40197823034c0275f3dcbd63e7Ted Kremenek	IFA_LABEL,
28f4d5eb4866a27d497f0bb75b12c2ffd48ad4d9c0Benjamin Kramer	IFA_BROADCAST,
290ea76727ae91bca918a8414ed85b530eddcfedebTed Kremenek	IFA_ANYCAST,
302e22253e03e175144aeb9d13350a12fd83f858beDouglas Gregor	IFA_CACHEINFO,
315f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	IFA_MULTICAST,
325f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__IFA_MAX,
331eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump};
345f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
3588a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor#define IFA_MAX (__IFA_MAX - 1)
365f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
375f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer/* ifa_flags */
385f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_F_SECONDARY		0x01
395f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_F_TEMPORARY		IFA_F_SECONDARY
405f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
412e22253e03e175144aeb9d13350a12fd83f858beDouglas Gregor#define	IFA_F_NODAD		0x02
425f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_F_OPTIMISTIC	0x04
435f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define	IFA_F_HOMEADDRESS	0x10
445f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_F_DEPRECATED	0x20
455f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_F_TENTATIVE		0x40
4694dc8f640ebea52241412512ed48601626edbc58Douglas Gregor#define IFA_F_PERMANENT		0x80
4794dc8f640ebea52241412512ed48601626edbc58Douglas Gregor
48e5956bd2730c051835f9acd9e957c5d79f99e7c3Chris Lattnerstruct ifa_cacheinfo
495f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer{
505f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u32	ifa_prefered;
515f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u32	ifa_valid;
525f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u32	cstamp; /* created timestamp, hundredths of seconds */
535f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer	__u32	tstamp; /* updated timestamp, hundredths of seconds */
54836040f9eafe862fb1607df5c30cd3df0c22c832Chris Lattner};
55ba1e898c64048e25cb65afec3807ad463e41914bArgyrios Kyrtzidis
56444be7366d0a1e172c0290a1ea54c1cb16b5947cDaniel Dunbar/* backwards compatibility for userspace */
575f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#ifndef __KERNEL__
585f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
595f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
605f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#endif
611eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
6288a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor#endif
6388a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor