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)