if_addr.h revision c40bba6922b470c0fd0c7a7b8b09584527c468e9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __LINUX_IF_ADDR_H 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __LINUX_IF_ADDR_H 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <linux/types.h> 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <linux/netlink.h> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ifaddrmsg 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __u8 ifa_family; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __u8 ifa_prefixlen; /* The prefix length */ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __u8 ifa_flags; /* Flags */ 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __u8 ifa_scope; /* Address scope */ 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __u32 ifa_index; /* Link index */ 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Important comment: 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) * IFA_ADDRESS is prefix address, rather than local interface address. 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch * It makes no difference for normally configured broadcast interfaces, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * but for point-to-point IFA_ADDRESS is DESTINATION address, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * local address is supplied in IFA_LOCAL attribute. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci{ 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) IFA_UNSPEC, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IFA_ADDRESS, 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IFA_LOCAL, 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) IFA_LABEL, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFA_BROADCAST, 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IFA_ANYCAST, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IFA_CACHEINFO, 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IFA_MULTICAST, 3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) __IFA_MAX, 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}; 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#define IFA_MAX (__IFA_MAX - 1) 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)/* ifa_flags */ 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define IFA_F_SECONDARY 0x01 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define IFA_F_TEMPORARY IFA_F_SECONDARY 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define IFA_F_NODAD 0x02 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#define IFA_F_OPTIMISTIC 0x04 44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define IFA_F_HOMEADDRESS 0x10 45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define IFA_F_DEPRECATED 0x20 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define IFA_F_TENTATIVE 0x40 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define IFA_F_PERMANENT 0x80 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)struct ifa_cacheinfo 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch __u32 ifa_prefered; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __u32 ifa_valid; 53bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch __u32 cstamp; /* created timestamp, hundredths of seconds */ 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __u32 tstamp; /* updated timestamp, hundredths of seconds */ 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/* backwards compatibility for userspace */ 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __KERNEL__ 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg)))) 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg)) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)