130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __LINUX_IF_ADDR_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __LINUX_IF_ADDR_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/netlink.h> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ifaddrmsg { 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ifa_family; 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ifa_prefixlen; /* The prefix length */ 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ifa_flags; /* Flags */ 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 ifa_scope; /* Address scope */ 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ifa_index; /* Link index */ 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Important comment: 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * IFA_ADDRESS is prefix address, rather than local interface address. 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * It makes no difference for normally configured broadcast interfaces, 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * but for point-to-point IFA_ADDRESS is DESTINATION address, 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * local address is supplied in IFA_LOCAL attribute. 21e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * 22e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags. 23e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl * If present, the value from struct ifaddrmsg will be ignored. 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum { 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_UNSPEC, 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_ADDRESS, 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_LOCAL, 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_LABEL, 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_BROADCAST, 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_ANYCAST, 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_CACHEINFO, 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IFA_MULTICAST, 34e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl IFA_FLAGS, 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __IFA_MAX, 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_MAX (__IFA_MAX - 1) 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ifa_flags */ 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_SECONDARY 0x01 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_TEMPORARY IFA_F_SECONDARY 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_NODAD 0x02 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_OPTIMISTIC 0x04 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_DADFAILED 0x08 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_HOMEADDRESS 0x10 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_DEPRECATED 0x20 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_TENTATIVE 0x40 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_F_PERMANENT 0x80 51e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define IFA_F_MANAGETEMPADDR 0x100 52e87eaf040ab639e94ed0a58ff0eac68d1d38fb0aEd Heyl#define IFA_F_NOPREFIXROUTE 0x200 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ifa_cacheinfo { 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ifa_prefered; 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ifa_valid; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 cstamp; /* created timestamp, hundredths of seconds */ 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 tstamp; /* updated timestamp, hundredths of seconds */ 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* backwards compatibility for userspace */ 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __KERNEL__ 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg)))) 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg)) 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 68