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