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