if_addr.h revision de3d12f48ac1869fc9f9cb442b2d692b027d8a14
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef __LINUX_IF_ADDR_H 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define __LINUX_IF_ADDR_H 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <linux/netlink.h> 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ifaddrmsg 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __u8 ifa_family; 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __u8 ifa_prefixlen; /* The prefix length */ 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __u8 ifa_flags; /* Flags */ 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __u8 ifa_scope; /* Address scope */ 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __u32 ifa_index; /* Link index */ 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Important comment: 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * IFA_ADDRESS is prefix address, rather than local interface address. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * It makes no difference for normally configured broadcast interfaces, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * but for point-to-point IFA_ADDRESS is DESTINATION address, 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * local address is supplied in IFA_LOCAL attribute. 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_UNSPEC, 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_ADDRESS, 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_LOCAL, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_LABEL, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_BROADCAST, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_ANYCAST, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_CACHEINFO, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IFA_MULTICAST, 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) __IFA_MAX, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_MAX (__IFA_MAX - 1) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* ifa_flags */ 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_SECONDARY 0x01 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_TEMPORARY IFA_F_SECONDARY 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_NODAD 0x02 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_OPTIMISTIC 0x04 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_HOMEADDRESS 0x10 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_DEPRECATED 0x20 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IFA_F_TENTATIVE 0x40 46#define IFA_F_PERMANENT 0x80 47 48struct ifa_cacheinfo 49{ 50 __u32 ifa_prefered; 51 __u32 ifa_valid; 52 __u32 cstamp; /* created timestamp, hundredths of seconds */ 53 __u32 tstamp; /* updated timestamp, hundredths of seconds */ 54}; 55 56/* backwards compatibility for userspace */ 57#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg)))) 58#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg)) 59 60#endif 61