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