1*53ee8cc1Swenshuai.xi #ifndef __LINUX_IF_ADDR_H 2*53ee8cc1Swenshuai.xi #define __LINUX_IF_ADDR_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include <linux/netlink.h> 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi struct ifaddrmsg 7*53ee8cc1Swenshuai.xi { 8*53ee8cc1Swenshuai.xi __u8 ifa_family; 9*53ee8cc1Swenshuai.xi __u8 ifa_prefixlen; /* The prefix length */ 10*53ee8cc1Swenshuai.xi __u8 ifa_flags; /* Flags */ 11*53ee8cc1Swenshuai.xi __u8 ifa_scope; /* Address scope */ 12*53ee8cc1Swenshuai.xi __u32 ifa_index; /* Link index */ 13*53ee8cc1Swenshuai.xi }; 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi /* 16*53ee8cc1Swenshuai.xi * Important comment: 17*53ee8cc1Swenshuai.xi * IFA_ADDRESS is prefix address, rather than local interface address. 18*53ee8cc1Swenshuai.xi * It makes no difference for normally configured broadcast interfaces, 19*53ee8cc1Swenshuai.xi * but for point-to-point IFA_ADDRESS is DESTINATION address, 20*53ee8cc1Swenshuai.xi * local address is supplied in IFA_LOCAL attribute. 21*53ee8cc1Swenshuai.xi */ 22*53ee8cc1Swenshuai.xi enum 23*53ee8cc1Swenshuai.xi { 24*53ee8cc1Swenshuai.xi IFA_UNSPEC, 25*53ee8cc1Swenshuai.xi IFA_ADDRESS, 26*53ee8cc1Swenshuai.xi IFA_LOCAL, 27*53ee8cc1Swenshuai.xi IFA_LABEL, 28*53ee8cc1Swenshuai.xi IFA_BROADCAST, 29*53ee8cc1Swenshuai.xi IFA_ANYCAST, 30*53ee8cc1Swenshuai.xi IFA_CACHEINFO, 31*53ee8cc1Swenshuai.xi IFA_MULTICAST, 32*53ee8cc1Swenshuai.xi __IFA_MAX, 33*53ee8cc1Swenshuai.xi }; 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi #define IFA_MAX (__IFA_MAX - 1) 36*53ee8cc1Swenshuai.xi 37*53ee8cc1Swenshuai.xi /* ifa_flags */ 38*53ee8cc1Swenshuai.xi #define IFA_F_SECONDARY 0x01 39*53ee8cc1Swenshuai.xi #define IFA_F_TEMPORARY IFA_F_SECONDARY 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi #define IFA_F_NODAD 0x02 42*53ee8cc1Swenshuai.xi #define IFA_F_OPTIMISTIC 0x04 43*53ee8cc1Swenshuai.xi #define IFA_F_HOMEADDRESS 0x10 44*53ee8cc1Swenshuai.xi #define IFA_F_DEPRECATED 0x20 45*53ee8cc1Swenshuai.xi #define IFA_F_TENTATIVE 0x40 46*53ee8cc1Swenshuai.xi #define IFA_F_PERMANENT 0x80 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi struct ifa_cacheinfo 49*53ee8cc1Swenshuai.xi { 50*53ee8cc1Swenshuai.xi __u32 ifa_prefered; 51*53ee8cc1Swenshuai.xi __u32 ifa_valid; 52*53ee8cc1Swenshuai.xi __u32 cstamp; /* created timestamp, hundredths of seconds */ 53*53ee8cc1Swenshuai.xi __u32 tstamp; /* updated timestamp, hundredths of seconds */ 54*53ee8cc1Swenshuai.xi }; 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi /* backwards compatibility for userspace */ 57*53ee8cc1Swenshuai.xi #define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg)))) 58*53ee8cc1Swenshuai.xi #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg)) 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi #endif 61