xref: /aosp_15_r20/external/iproute2/include/uapi/linux/if_addr.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*de1e4e89SAndroid Build Coastguard Worker #ifndef __LINUX_IF_ADDR_H
3*de1e4e89SAndroid Build Coastguard Worker #define __LINUX_IF_ADDR_H
4*de1e4e89SAndroid Build Coastguard Worker 
5*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h>
6*de1e4e89SAndroid Build Coastguard Worker #include <linux/netlink.h>
7*de1e4e89SAndroid Build Coastguard Worker 
8*de1e4e89SAndroid Build Coastguard Worker struct ifaddrmsg {
9*de1e4e89SAndroid Build Coastguard Worker 	__u8		ifa_family;
10*de1e4e89SAndroid Build Coastguard Worker 	__u8		ifa_prefixlen;	/* The prefix length		*/
11*de1e4e89SAndroid Build Coastguard Worker 	__u8		ifa_flags;	/* Flags			*/
12*de1e4e89SAndroid Build Coastguard Worker 	__u8		ifa_scope;	/* Address scope		*/
13*de1e4e89SAndroid Build Coastguard Worker 	__u32		ifa_index;	/* Link index			*/
14*de1e4e89SAndroid Build Coastguard Worker };
15*de1e4e89SAndroid Build Coastguard Worker 
16*de1e4e89SAndroid Build Coastguard Worker /*
17*de1e4e89SAndroid Build Coastguard Worker  * Important comment:
18*de1e4e89SAndroid Build Coastguard Worker  * IFA_ADDRESS is prefix address, rather than local interface address.
19*de1e4e89SAndroid Build Coastguard Worker  * It makes no difference for normally configured broadcast interfaces,
20*de1e4e89SAndroid Build Coastguard Worker  * but for point-to-point IFA_ADDRESS is DESTINATION address,
21*de1e4e89SAndroid Build Coastguard Worker  * local address is supplied in IFA_LOCAL attribute.
22*de1e4e89SAndroid Build Coastguard Worker  *
23*de1e4e89SAndroid Build Coastguard Worker  * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
24*de1e4e89SAndroid Build Coastguard Worker  * If present, the value from struct ifaddrmsg will be ignored.
25*de1e4e89SAndroid Build Coastguard Worker  */
26*de1e4e89SAndroid Build Coastguard Worker enum {
27*de1e4e89SAndroid Build Coastguard Worker 	IFA_UNSPEC,
28*de1e4e89SAndroid Build Coastguard Worker 	IFA_ADDRESS,
29*de1e4e89SAndroid Build Coastguard Worker 	IFA_LOCAL,
30*de1e4e89SAndroid Build Coastguard Worker 	IFA_LABEL,
31*de1e4e89SAndroid Build Coastguard Worker 	IFA_BROADCAST,
32*de1e4e89SAndroid Build Coastguard Worker 	IFA_ANYCAST,
33*de1e4e89SAndroid Build Coastguard Worker 	IFA_CACHEINFO,
34*de1e4e89SAndroid Build Coastguard Worker 	IFA_MULTICAST,
35*de1e4e89SAndroid Build Coastguard Worker 	IFA_FLAGS,
36*de1e4e89SAndroid Build Coastguard Worker 	__IFA_MAX,
37*de1e4e89SAndroid Build Coastguard Worker };
38*de1e4e89SAndroid Build Coastguard Worker 
39*de1e4e89SAndroid Build Coastguard Worker #define IFA_MAX (__IFA_MAX - 1)
40*de1e4e89SAndroid Build Coastguard Worker 
41*de1e4e89SAndroid Build Coastguard Worker /* ifa_flags */
42*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_SECONDARY		0x01
43*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_TEMPORARY		IFA_F_SECONDARY
44*de1e4e89SAndroid Build Coastguard Worker 
45*de1e4e89SAndroid Build Coastguard Worker #define	IFA_F_NODAD		0x02
46*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_OPTIMISTIC	0x04
47*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_DADFAILED		0x08
48*de1e4e89SAndroid Build Coastguard Worker #define	IFA_F_HOMEADDRESS	0x10
49*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_DEPRECATED	0x20
50*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_TENTATIVE		0x40
51*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_PERMANENT		0x80
52*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_MANAGETEMPADDR	0x100
53*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_NOPREFIXROUTE	0x200
54*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_MCAUTOJOIN	0x400
55*de1e4e89SAndroid Build Coastguard Worker #define IFA_F_STABLE_PRIVACY	0x800
56*de1e4e89SAndroid Build Coastguard Worker 
57*de1e4e89SAndroid Build Coastguard Worker struct ifa_cacheinfo {
58*de1e4e89SAndroid Build Coastguard Worker 	__u32	ifa_prefered;
59*de1e4e89SAndroid Build Coastguard Worker 	__u32	ifa_valid;
60*de1e4e89SAndroid Build Coastguard Worker 	__u32	cstamp; /* created timestamp, hundredths of seconds */
61*de1e4e89SAndroid Build Coastguard Worker 	__u32	tstamp; /* updated timestamp, hundredths of seconds */
62*de1e4e89SAndroid Build Coastguard Worker };
63*de1e4e89SAndroid Build Coastguard Worker 
64*de1e4e89SAndroid Build Coastguard Worker /* backwards compatibility for userspace */
65*de1e4e89SAndroid Build Coastguard Worker #define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
66*de1e4e89SAndroid Build Coastguard Worker #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
67*de1e4e89SAndroid Build Coastguard Worker 
68*de1e4e89SAndroid Build Coastguard Worker #endif
69