xref: /aosp_15_r20/external/libnl/include/linux-private/linux/rtnetlink.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*4dc78e53SAndroid Build Coastguard Worker #ifndef __LINUX_RTNETLINK_H
3*4dc78e53SAndroid Build Coastguard Worker #define __LINUX_RTNETLINK_H
4*4dc78e53SAndroid Build Coastguard Worker 
5*4dc78e53SAndroid Build Coastguard Worker #include <linux/types.h>
6*4dc78e53SAndroid Build Coastguard Worker #include <linux/netlink.h>
7*4dc78e53SAndroid Build Coastguard Worker #include <linux/if_link.h>
8*4dc78e53SAndroid Build Coastguard Worker #include <linux/if_addr.h>
9*4dc78e53SAndroid Build Coastguard Worker #include <linux/neighbour.h>
10*4dc78e53SAndroid Build Coastguard Worker 
11*4dc78e53SAndroid Build Coastguard Worker /* rtnetlink families. Values up to 127 are reserved for real address
12*4dc78e53SAndroid Build Coastguard Worker  * families, values above 128 may be used arbitrarily.
13*4dc78e53SAndroid Build Coastguard Worker  */
14*4dc78e53SAndroid Build Coastguard Worker #define RTNL_FAMILY_IPMR		128
15*4dc78e53SAndroid Build Coastguard Worker #define RTNL_FAMILY_IP6MR		129
16*4dc78e53SAndroid Build Coastguard Worker #define RTNL_FAMILY_MAX			129
17*4dc78e53SAndroid Build Coastguard Worker 
18*4dc78e53SAndroid Build Coastguard Worker /****
19*4dc78e53SAndroid Build Coastguard Worker  *		Routing/neighbour discovery messages.
20*4dc78e53SAndroid Build Coastguard Worker  ****/
21*4dc78e53SAndroid Build Coastguard Worker 
22*4dc78e53SAndroid Build Coastguard Worker /* Types of messages */
23*4dc78e53SAndroid Build Coastguard Worker 
24*4dc78e53SAndroid Build Coastguard Worker enum {
25*4dc78e53SAndroid Build Coastguard Worker 	RTM_BASE	= 16,
26*4dc78e53SAndroid Build Coastguard Worker #define RTM_BASE	RTM_BASE
27*4dc78e53SAndroid Build Coastguard Worker 
28*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWLINK	= 16,
29*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWLINK	RTM_NEWLINK
30*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELLINK,
31*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELLINK	RTM_DELLINK
32*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETLINK,
33*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETLINK	RTM_GETLINK
34*4dc78e53SAndroid Build Coastguard Worker 	RTM_SETLINK,
35*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETLINK	RTM_SETLINK
36*4dc78e53SAndroid Build Coastguard Worker 
37*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWADDR	= 20,
38*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWADDR	RTM_NEWADDR
39*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELADDR,
40*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELADDR	RTM_DELADDR
41*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETADDR,
42*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETADDR	RTM_GETADDR
43*4dc78e53SAndroid Build Coastguard Worker 
44*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWROUTE	= 24,
45*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWROUTE	RTM_NEWROUTE
46*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELROUTE,
47*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELROUTE	RTM_DELROUTE
48*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETROUTE,
49*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETROUTE	RTM_GETROUTE
50*4dc78e53SAndroid Build Coastguard Worker 
51*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNEIGH	= 28,
52*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEIGH	RTM_NEWNEIGH
53*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELNEIGH,
54*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNEIGH	RTM_DELNEIGH
55*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETNEIGH,
56*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEIGH	RTM_GETNEIGH
57*4dc78e53SAndroid Build Coastguard Worker 
58*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWRULE	= 32,
59*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWRULE	RTM_NEWRULE
60*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELRULE,
61*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELRULE	RTM_DELRULE
62*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETRULE,
63*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETRULE	RTM_GETRULE
64*4dc78e53SAndroid Build Coastguard Worker 
65*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWQDISC	= 36,
66*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWQDISC	RTM_NEWQDISC
67*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELQDISC,
68*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELQDISC	RTM_DELQDISC
69*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETQDISC,
70*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETQDISC	RTM_GETQDISC
71*4dc78e53SAndroid Build Coastguard Worker 
72*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWTCLASS	= 40,
73*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWTCLASS	RTM_NEWTCLASS
74*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELTCLASS,
75*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELTCLASS	RTM_DELTCLASS
76*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETTCLASS,
77*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETTCLASS	RTM_GETTCLASS
78*4dc78e53SAndroid Build Coastguard Worker 
79*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWTFILTER	= 44,
80*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWTFILTER	RTM_NEWTFILTER
81*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELTFILTER,
82*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELTFILTER	RTM_DELTFILTER
83*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETTFILTER,
84*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETTFILTER	RTM_GETTFILTER
85*4dc78e53SAndroid Build Coastguard Worker 
86*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWACTION	= 48,
87*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWACTION   RTM_NEWACTION
88*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELACTION,
89*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELACTION   RTM_DELACTION
90*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETACTION,
91*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETACTION   RTM_GETACTION
92*4dc78e53SAndroid Build Coastguard Worker 
93*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWPREFIX	= 52,
94*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWPREFIX	RTM_NEWPREFIX
95*4dc78e53SAndroid Build Coastguard Worker 
96*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETMULTICAST = 58,
97*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETMULTICAST RTM_GETMULTICAST
98*4dc78e53SAndroid Build Coastguard Worker 
99*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETANYCAST	= 62,
100*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETANYCAST	RTM_GETANYCAST
101*4dc78e53SAndroid Build Coastguard Worker 
102*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNEIGHTBL	= 64,
103*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEIGHTBL	RTM_NEWNEIGHTBL
104*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETNEIGHTBL	= 66,
105*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEIGHTBL	RTM_GETNEIGHTBL
106*4dc78e53SAndroid Build Coastguard Worker 	RTM_SETNEIGHTBL,
107*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETNEIGHTBL	RTM_SETNEIGHTBL
108*4dc78e53SAndroid Build Coastguard Worker 
109*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNDUSEROPT = 68,
110*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
111*4dc78e53SAndroid Build Coastguard Worker 
112*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWADDRLABEL = 72,
113*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
114*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELADDRLABEL,
115*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELADDRLABEL RTM_DELADDRLABEL
116*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETADDRLABEL,
117*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETADDRLABEL RTM_GETADDRLABEL
118*4dc78e53SAndroid Build Coastguard Worker 
119*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETDCB = 78,
120*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETDCB RTM_GETDCB
121*4dc78e53SAndroid Build Coastguard Worker 	RTM_SETDCB,
122*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETDCB RTM_SETDCB
123*4dc78e53SAndroid Build Coastguard Worker 
124*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNETCONF = 80,
125*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNETCONF RTM_NEWNETCONF
126*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELNETCONF,
127*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNETCONF RTM_DELNETCONF
128*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETNETCONF = 82,
129*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNETCONF RTM_GETNETCONF
130*4dc78e53SAndroid Build Coastguard Worker 
131*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWMDB = 84,
132*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWMDB RTM_NEWMDB
133*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELMDB = 85,
134*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELMDB RTM_DELMDB
135*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETMDB = 86,
136*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETMDB RTM_GETMDB
137*4dc78e53SAndroid Build Coastguard Worker 
138*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNSID = 88,
139*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNSID RTM_NEWNSID
140*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELNSID = 89,
141*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNSID RTM_DELNSID
142*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETNSID = 90,
143*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNSID RTM_GETNSID
144*4dc78e53SAndroid Build Coastguard Worker 
145*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWSTATS = 92,
146*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWSTATS RTM_NEWSTATS
147*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETSTATS = 94,
148*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETSTATS RTM_GETSTATS
149*4dc78e53SAndroid Build Coastguard Worker 	RTM_SETSTATS,
150*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETSTATS RTM_SETSTATS
151*4dc78e53SAndroid Build Coastguard Worker 
152*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWCACHEREPORT = 96,
153*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
154*4dc78e53SAndroid Build Coastguard Worker 
155*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWCHAIN = 100,
156*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWCHAIN RTM_NEWCHAIN
157*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELCHAIN,
158*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELCHAIN RTM_DELCHAIN
159*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETCHAIN,
160*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETCHAIN RTM_GETCHAIN
161*4dc78e53SAndroid Build Coastguard Worker 
162*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNEXTHOP = 104,
163*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEXTHOP	RTM_NEWNEXTHOP
164*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELNEXTHOP,
165*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNEXTHOP	RTM_DELNEXTHOP
166*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETNEXTHOP,
167*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEXTHOP	RTM_GETNEXTHOP
168*4dc78e53SAndroid Build Coastguard Worker 
169*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWLINKPROP = 108,
170*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWLINKPROP	RTM_NEWLINKPROP
171*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELLINKPROP,
172*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELLINKPROP	RTM_DELLINKPROP
173*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETLINKPROP,
174*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETLINKPROP	RTM_GETLINKPROP
175*4dc78e53SAndroid Build Coastguard Worker 
176*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWVLAN = 112,
177*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNVLAN	RTM_NEWVLAN
178*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELVLAN,
179*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELVLAN	RTM_DELVLAN
180*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETVLAN,
181*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETVLAN	RTM_GETVLAN
182*4dc78e53SAndroid Build Coastguard Worker 
183*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWNEXTHOPBUCKET = 116,
184*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEXTHOPBUCKET	RTM_NEWNEXTHOPBUCKET
185*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELNEXTHOPBUCKET,
186*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNEXTHOPBUCKET	RTM_DELNEXTHOPBUCKET
187*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETNEXTHOPBUCKET,
188*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEXTHOPBUCKET	RTM_GETNEXTHOPBUCKET
189*4dc78e53SAndroid Build Coastguard Worker 
190*4dc78e53SAndroid Build Coastguard Worker 	RTM_NEWTUNNEL = 120,
191*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWTUNNEL	RTM_NEWTUNNEL
192*4dc78e53SAndroid Build Coastguard Worker 	RTM_DELTUNNEL,
193*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELTUNNEL	RTM_DELTUNNEL
194*4dc78e53SAndroid Build Coastguard Worker 	RTM_GETTUNNEL,
195*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETTUNNEL	RTM_GETTUNNEL
196*4dc78e53SAndroid Build Coastguard Worker 
197*4dc78e53SAndroid Build Coastguard Worker 	__RTM_MAX,
198*4dc78e53SAndroid Build Coastguard Worker #define RTM_MAX		(((__RTM_MAX + 3) & ~3) - 1)
199*4dc78e53SAndroid Build Coastguard Worker };
200*4dc78e53SAndroid Build Coastguard Worker 
201*4dc78e53SAndroid Build Coastguard Worker #define RTM_NR_MSGTYPES	(RTM_MAX + 1 - RTM_BASE)
202*4dc78e53SAndroid Build Coastguard Worker #define RTM_NR_FAMILIES	(RTM_NR_MSGTYPES >> 2)
203*4dc78e53SAndroid Build Coastguard Worker #define RTM_FAM(cmd)	(((cmd) - RTM_BASE) >> 2)
204*4dc78e53SAndroid Build Coastguard Worker 
205*4dc78e53SAndroid Build Coastguard Worker /*
206*4dc78e53SAndroid Build Coastguard Worker    Generic structure for encapsulation of optional route information.
207*4dc78e53SAndroid Build Coastguard Worker    It is reminiscent of sockaddr, but with sa_family replaced
208*4dc78e53SAndroid Build Coastguard Worker    with attribute type.
209*4dc78e53SAndroid Build Coastguard Worker  */
210*4dc78e53SAndroid Build Coastguard Worker 
211*4dc78e53SAndroid Build Coastguard Worker struct rtattr {
212*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	rta_len;
213*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	rta_type;
214*4dc78e53SAndroid Build Coastguard Worker };
215*4dc78e53SAndroid Build Coastguard Worker 
216*4dc78e53SAndroid Build Coastguard Worker /* Macros to handle rtattributes */
217*4dc78e53SAndroid Build Coastguard Worker 
218*4dc78e53SAndroid Build Coastguard Worker #define RTA_ALIGNTO	4U
219*4dc78e53SAndroid Build Coastguard Worker #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
220*4dc78e53SAndroid Build Coastguard Worker #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
221*4dc78e53SAndroid Build Coastguard Worker 			 (rta)->rta_len >= sizeof(struct rtattr) && \
222*4dc78e53SAndroid Build Coastguard Worker 			 (rta)->rta_len <= (len))
223*4dc78e53SAndroid Build Coastguard Worker #define RTA_NEXT(rta,attrlen)	((attrlen) -= RTA_ALIGN((rta)->rta_len), \
224*4dc78e53SAndroid Build Coastguard Worker 				 (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
225*4dc78e53SAndroid Build Coastguard Worker #define RTA_LENGTH(len)	(RTA_ALIGN(sizeof(struct rtattr)) + (len))
226*4dc78e53SAndroid Build Coastguard Worker #define RTA_SPACE(len)	RTA_ALIGN(RTA_LENGTH(len))
227*4dc78e53SAndroid Build Coastguard Worker #define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
228*4dc78e53SAndroid Build Coastguard Worker #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
229*4dc78e53SAndroid Build Coastguard Worker 
230*4dc78e53SAndroid Build Coastguard Worker 
231*4dc78e53SAndroid Build Coastguard Worker 
232*4dc78e53SAndroid Build Coastguard Worker 
233*4dc78e53SAndroid Build Coastguard Worker /******************************************************************************
234*4dc78e53SAndroid Build Coastguard Worker  *		Definitions used in routing table administration.
235*4dc78e53SAndroid Build Coastguard Worker  ****/
236*4dc78e53SAndroid Build Coastguard Worker 
237*4dc78e53SAndroid Build Coastguard Worker struct rtmsg {
238*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_family;
239*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_dst_len;
240*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_src_len;
241*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_tos;
242*4dc78e53SAndroid Build Coastguard Worker 
243*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_table;	/* Routing table id */
244*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_protocol;	/* Routing protocol; see below	*/
245*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_scope;	/* See below */
246*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtm_type;	/* See below	*/
247*4dc78e53SAndroid Build Coastguard Worker 
248*4dc78e53SAndroid Build Coastguard Worker 	unsigned		rtm_flags;
249*4dc78e53SAndroid Build Coastguard Worker };
250*4dc78e53SAndroid Build Coastguard Worker 
251*4dc78e53SAndroid Build Coastguard Worker /* rtm_type */
252*4dc78e53SAndroid Build Coastguard Worker 
253*4dc78e53SAndroid Build Coastguard Worker enum {
254*4dc78e53SAndroid Build Coastguard Worker 	RTN_UNSPEC,
255*4dc78e53SAndroid Build Coastguard Worker 	RTN_UNICAST,		/* Gateway or direct route	*/
256*4dc78e53SAndroid Build Coastguard Worker 	RTN_LOCAL,		/* Accept locally		*/
257*4dc78e53SAndroid Build Coastguard Worker 	RTN_BROADCAST,		/* Accept locally as broadcast,
258*4dc78e53SAndroid Build Coastguard Worker 				   send as broadcast */
259*4dc78e53SAndroid Build Coastguard Worker 	RTN_ANYCAST,		/* Accept locally as broadcast,
260*4dc78e53SAndroid Build Coastguard Worker 				   but send as unicast */
261*4dc78e53SAndroid Build Coastguard Worker 	RTN_MULTICAST,		/* Multicast route		*/
262*4dc78e53SAndroid Build Coastguard Worker 	RTN_BLACKHOLE,		/* Drop				*/
263*4dc78e53SAndroid Build Coastguard Worker 	RTN_UNREACHABLE,	/* Destination is unreachable   */
264*4dc78e53SAndroid Build Coastguard Worker 	RTN_PROHIBIT,		/* Administratively prohibited	*/
265*4dc78e53SAndroid Build Coastguard Worker 	RTN_THROW,		/* Not in this table		*/
266*4dc78e53SAndroid Build Coastguard Worker 	RTN_NAT,		/* Translate this address	*/
267*4dc78e53SAndroid Build Coastguard Worker 	RTN_XRESOLVE,		/* Use external resolver	*/
268*4dc78e53SAndroid Build Coastguard Worker 	__RTN_MAX
269*4dc78e53SAndroid Build Coastguard Worker };
270*4dc78e53SAndroid Build Coastguard Worker 
271*4dc78e53SAndroid Build Coastguard Worker #define RTN_MAX (__RTN_MAX - 1)
272*4dc78e53SAndroid Build Coastguard Worker 
273*4dc78e53SAndroid Build Coastguard Worker 
274*4dc78e53SAndroid Build Coastguard Worker /* rtm_protocol */
275*4dc78e53SAndroid Build Coastguard Worker 
276*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_UNSPEC		0
277*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_REDIRECT		1	/* Route installed by ICMP redirects;
278*4dc78e53SAndroid Build Coastguard Worker 					   not used by current IPv4 */
279*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_KERNEL		2	/* Route installed by kernel		*/
280*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BOOT		3	/* Route installed during boot		*/
281*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_STATIC		4	/* Route installed by administrator	*/
282*4dc78e53SAndroid Build Coastguard Worker 
283*4dc78e53SAndroid Build Coastguard Worker /* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
284*4dc78e53SAndroid Build Coastguard Worker    they are just passed from user and back as is.
285*4dc78e53SAndroid Build Coastguard Worker    It will be used by hypothetical multiple routing daemons.
286*4dc78e53SAndroid Build Coastguard Worker    Note that protocol values should be standardized in order to
287*4dc78e53SAndroid Build Coastguard Worker    avoid conflicts.
288*4dc78e53SAndroid Build Coastguard Worker  */
289*4dc78e53SAndroid Build Coastguard Worker 
290*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_GATED		8	/* Apparently, GateD */
291*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_RA		9	/* RDISC/ND router advertisements */
292*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_MRT		10	/* Merit MRT */
293*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_ZEBRA		11	/* Zebra */
294*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BIRD		12	/* BIRD */
295*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_DNROUTED		13	/* DECnet routing daemon */
296*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_XORP		14	/* XORP */
297*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_NTK		15	/* Netsukuku */
298*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_DHCP		16	/* DHCP client */
299*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_MROUTED		17	/* Multicast daemon */
300*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_KEEPALIVED	18	/* Keepalived daemon */
301*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BABEL		42	/* Babel daemon */
302*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_OPENR		99	/* Open Routing (Open/R) Routes */
303*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BGP		186	/* BGP Routes */
304*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_ISIS		187	/* ISIS Routes */
305*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_OSPF		188	/* OSPF Routes */
306*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_RIP		189	/* RIP Routes */
307*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_EIGRP		192	/* EIGRP Routes */
308*4dc78e53SAndroid Build Coastguard Worker 
309*4dc78e53SAndroid Build Coastguard Worker /* rtm_scope
310*4dc78e53SAndroid Build Coastguard Worker 
311*4dc78e53SAndroid Build Coastguard Worker    Really it is not scope, but sort of distance to the destination.
312*4dc78e53SAndroid Build Coastguard Worker    NOWHERE are reserved for not existing destinations, HOST is our
313*4dc78e53SAndroid Build Coastguard Worker    local addresses, LINK are destinations, located on directly attached
314*4dc78e53SAndroid Build Coastguard Worker    link and UNIVERSE is everywhere in the Universe.
315*4dc78e53SAndroid Build Coastguard Worker 
316*4dc78e53SAndroid Build Coastguard Worker    Intermediate values are also possible f.e. interior routes
317*4dc78e53SAndroid Build Coastguard Worker    could be assigned a value between UNIVERSE and LINK.
318*4dc78e53SAndroid Build Coastguard Worker */
319*4dc78e53SAndroid Build Coastguard Worker 
320*4dc78e53SAndroid Build Coastguard Worker enum rt_scope_t {
321*4dc78e53SAndroid Build Coastguard Worker 	RT_SCOPE_UNIVERSE=0,
322*4dc78e53SAndroid Build Coastguard Worker /* User defined values  */
323*4dc78e53SAndroid Build Coastguard Worker 	RT_SCOPE_SITE=200,
324*4dc78e53SAndroid Build Coastguard Worker 	RT_SCOPE_LINK=253,
325*4dc78e53SAndroid Build Coastguard Worker 	RT_SCOPE_HOST=254,
326*4dc78e53SAndroid Build Coastguard Worker 	RT_SCOPE_NOWHERE=255
327*4dc78e53SAndroid Build Coastguard Worker };
328*4dc78e53SAndroid Build Coastguard Worker 
329*4dc78e53SAndroid Build Coastguard Worker /* rtm_flags */
330*4dc78e53SAndroid Build Coastguard Worker 
331*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_NOTIFY		0x100	/* Notify user of route change	*/
332*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_CLONED		0x200	/* This route is cloned		*/
333*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_EQUALIZE		0x400	/* Multipath equalizer: NI	*/
334*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_PREFIX		0x800	/* Prefix addresses		*/
335*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_LOOKUP_TABLE	0x1000	/* set rtm_table to FIB lookup result */
336*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_FIB_MATCH	        0x2000	/* return full fib lookup match */
337*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_OFFLOAD		0x4000	/* route is offloaded */
338*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_TRAP		0x8000	/* route is trapping packets */
339*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_OFFLOAD_FAILED	0x20000000 /* route offload failed, this value
340*4dc78e53SAndroid Build Coastguard Worker 					    * is chosen to avoid conflicts with
341*4dc78e53SAndroid Build Coastguard Worker 					    * other flags defined in
342*4dc78e53SAndroid Build Coastguard Worker 					    * include/uapi/linux/ipv6_route.h
343*4dc78e53SAndroid Build Coastguard Worker 					    */
344*4dc78e53SAndroid Build Coastguard Worker 
345*4dc78e53SAndroid Build Coastguard Worker /* Reserved table identifiers */
346*4dc78e53SAndroid Build Coastguard Worker 
347*4dc78e53SAndroid Build Coastguard Worker enum rt_class_t {
348*4dc78e53SAndroid Build Coastguard Worker 	RT_TABLE_UNSPEC=0,
349*4dc78e53SAndroid Build Coastguard Worker /* User defined values */
350*4dc78e53SAndroid Build Coastguard Worker 	RT_TABLE_COMPAT=252,
351*4dc78e53SAndroid Build Coastguard Worker 	RT_TABLE_DEFAULT=253,
352*4dc78e53SAndroid Build Coastguard Worker 	RT_TABLE_MAIN=254,
353*4dc78e53SAndroid Build Coastguard Worker 	RT_TABLE_LOCAL=255,
354*4dc78e53SAndroid Build Coastguard Worker 	RT_TABLE_MAX=0xFFFFFFFF
355*4dc78e53SAndroid Build Coastguard Worker };
356*4dc78e53SAndroid Build Coastguard Worker 
357*4dc78e53SAndroid Build Coastguard Worker 
358*4dc78e53SAndroid Build Coastguard Worker /* Routing message attributes */
359*4dc78e53SAndroid Build Coastguard Worker 
360*4dc78e53SAndroid Build Coastguard Worker enum rtattr_type_t {
361*4dc78e53SAndroid Build Coastguard Worker 	RTA_UNSPEC,
362*4dc78e53SAndroid Build Coastguard Worker 	RTA_DST,
363*4dc78e53SAndroid Build Coastguard Worker 	RTA_SRC,
364*4dc78e53SAndroid Build Coastguard Worker 	RTA_IIF,
365*4dc78e53SAndroid Build Coastguard Worker 	RTA_OIF,
366*4dc78e53SAndroid Build Coastguard Worker 	RTA_GATEWAY,
367*4dc78e53SAndroid Build Coastguard Worker 	RTA_PRIORITY,
368*4dc78e53SAndroid Build Coastguard Worker 	RTA_PREFSRC,
369*4dc78e53SAndroid Build Coastguard Worker 	RTA_METRICS,
370*4dc78e53SAndroid Build Coastguard Worker 	RTA_MULTIPATH,
371*4dc78e53SAndroid Build Coastguard Worker 	RTA_PROTOINFO, /* no longer used */
372*4dc78e53SAndroid Build Coastguard Worker 	RTA_FLOW,
373*4dc78e53SAndroid Build Coastguard Worker 	RTA_CACHEINFO,
374*4dc78e53SAndroid Build Coastguard Worker 	RTA_SESSION, /* no longer used */
375*4dc78e53SAndroid Build Coastguard Worker 	RTA_MP_ALGO, /* no longer used */
376*4dc78e53SAndroid Build Coastguard Worker 	RTA_TABLE,
377*4dc78e53SAndroid Build Coastguard Worker 	RTA_MARK,
378*4dc78e53SAndroid Build Coastguard Worker 	RTA_MFC_STATS,
379*4dc78e53SAndroid Build Coastguard Worker 	RTA_VIA,
380*4dc78e53SAndroid Build Coastguard Worker 	RTA_NEWDST,
381*4dc78e53SAndroid Build Coastguard Worker 	RTA_PREF,
382*4dc78e53SAndroid Build Coastguard Worker 	RTA_ENCAP_TYPE,
383*4dc78e53SAndroid Build Coastguard Worker 	RTA_ENCAP,
384*4dc78e53SAndroid Build Coastguard Worker 	RTA_EXPIRES,
385*4dc78e53SAndroid Build Coastguard Worker 	RTA_PAD,
386*4dc78e53SAndroid Build Coastguard Worker 	RTA_UID,
387*4dc78e53SAndroid Build Coastguard Worker 	RTA_TTL_PROPAGATE,
388*4dc78e53SAndroid Build Coastguard Worker 	RTA_IP_PROTO,
389*4dc78e53SAndroid Build Coastguard Worker 	RTA_SPORT,
390*4dc78e53SAndroid Build Coastguard Worker 	RTA_DPORT,
391*4dc78e53SAndroid Build Coastguard Worker 	RTA_NH_ID,
392*4dc78e53SAndroid Build Coastguard Worker 	__RTA_MAX
393*4dc78e53SAndroid Build Coastguard Worker };
394*4dc78e53SAndroid Build Coastguard Worker 
395*4dc78e53SAndroid Build Coastguard Worker #define RTA_MAX (__RTA_MAX - 1)
396*4dc78e53SAndroid Build Coastguard Worker 
397*4dc78e53SAndroid Build Coastguard Worker #define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
398*4dc78e53SAndroid Build Coastguard Worker #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
399*4dc78e53SAndroid Build Coastguard Worker 
400*4dc78e53SAndroid Build Coastguard Worker /* RTM_MULTIPATH --- array of struct rtnexthop.
401*4dc78e53SAndroid Build Coastguard Worker  *
402*4dc78e53SAndroid Build Coastguard Worker  * "struct rtnexthop" describes all necessary nexthop information,
403*4dc78e53SAndroid Build Coastguard Worker  * i.e. parameters of path to a destination via this nexthop.
404*4dc78e53SAndroid Build Coastguard Worker  *
405*4dc78e53SAndroid Build Coastguard Worker  * At the moment it is impossible to set different prefsrc, mtu, window
406*4dc78e53SAndroid Build Coastguard Worker  * and rtt for different paths from multipath.
407*4dc78e53SAndroid Build Coastguard Worker  */
408*4dc78e53SAndroid Build Coastguard Worker 
409*4dc78e53SAndroid Build Coastguard Worker struct rtnexthop {
410*4dc78e53SAndroid Build Coastguard Worker 	unsigned short		rtnh_len;
411*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtnh_flags;
412*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtnh_hops;
413*4dc78e53SAndroid Build Coastguard Worker 	int			rtnh_ifindex;
414*4dc78e53SAndroid Build Coastguard Worker };
415*4dc78e53SAndroid Build Coastguard Worker 
416*4dc78e53SAndroid Build Coastguard Worker /* rtnh_flags */
417*4dc78e53SAndroid Build Coastguard Worker 
418*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_DEAD		1	/* Nexthop is dead (used by multipath)	*/
419*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_PERVASIVE	2	/* Do recursive gateway lookup	*/
420*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_ONLINK		4	/* Gateway is forced on link	*/
421*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_OFFLOAD		8	/* Nexthop is offloaded */
422*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_LINKDOWN		16	/* carrier-down on nexthop */
423*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_UNRESOLVED	32	/* The entry is unresolved (ipmr) */
424*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_TRAP		64	/* Nexthop is trapping packets */
425*4dc78e53SAndroid Build Coastguard Worker 
426*4dc78e53SAndroid Build Coastguard Worker #define RTNH_COMPARE_MASK	(RTNH_F_DEAD | RTNH_F_LINKDOWN | \
427*4dc78e53SAndroid Build Coastguard Worker 				 RTNH_F_OFFLOAD | RTNH_F_TRAP)
428*4dc78e53SAndroid Build Coastguard Worker 
429*4dc78e53SAndroid Build Coastguard Worker /* Macros to handle hexthops */
430*4dc78e53SAndroid Build Coastguard Worker 
431*4dc78e53SAndroid Build Coastguard Worker #define RTNH_ALIGNTO	4
432*4dc78e53SAndroid Build Coastguard Worker #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
433*4dc78e53SAndroid Build Coastguard Worker #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
434*4dc78e53SAndroid Build Coastguard Worker 			   ((int)(rtnh)->rtnh_len) <= (len))
435*4dc78e53SAndroid Build Coastguard Worker #define RTNH_NEXT(rtnh)	((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
436*4dc78e53SAndroid Build Coastguard Worker #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
437*4dc78e53SAndroid Build Coastguard Worker #define RTNH_SPACE(len)	RTNH_ALIGN(RTNH_LENGTH(len))
438*4dc78e53SAndroid Build Coastguard Worker #define RTNH_DATA(rtnh)   ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
439*4dc78e53SAndroid Build Coastguard Worker 
440*4dc78e53SAndroid Build Coastguard Worker /* RTA_VIA */
441*4dc78e53SAndroid Build Coastguard Worker struct rtvia {
442*4dc78e53SAndroid Build Coastguard Worker 	__kernel_sa_family_t	rtvia_family;
443*4dc78e53SAndroid Build Coastguard Worker 	__u8			rtvia_addr[];
444*4dc78e53SAndroid Build Coastguard Worker };
445*4dc78e53SAndroid Build Coastguard Worker 
446*4dc78e53SAndroid Build Coastguard Worker /* RTM_CACHEINFO */
447*4dc78e53SAndroid Build Coastguard Worker 
448*4dc78e53SAndroid Build Coastguard Worker struct rta_cacheinfo {
449*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_clntref;
450*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_lastuse;
451*4dc78e53SAndroid Build Coastguard Worker 	__s32	rta_expires;
452*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_error;
453*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_used;
454*4dc78e53SAndroid Build Coastguard Worker 
455*4dc78e53SAndroid Build Coastguard Worker #define RTNETLINK_HAVE_PEERINFO 1
456*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_id;
457*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_ts;
458*4dc78e53SAndroid Build Coastguard Worker 	__u32	rta_tsage;
459*4dc78e53SAndroid Build Coastguard Worker };
460*4dc78e53SAndroid Build Coastguard Worker 
461*4dc78e53SAndroid Build Coastguard Worker /* RTM_METRICS --- array of struct rtattr with types of RTAX_* */
462*4dc78e53SAndroid Build Coastguard Worker 
463*4dc78e53SAndroid Build Coastguard Worker enum {
464*4dc78e53SAndroid Build Coastguard Worker 	RTAX_UNSPEC,
465*4dc78e53SAndroid Build Coastguard Worker #define RTAX_UNSPEC RTAX_UNSPEC
466*4dc78e53SAndroid Build Coastguard Worker 	RTAX_LOCK,
467*4dc78e53SAndroid Build Coastguard Worker #define RTAX_LOCK RTAX_LOCK
468*4dc78e53SAndroid Build Coastguard Worker 	RTAX_MTU,
469*4dc78e53SAndroid Build Coastguard Worker #define RTAX_MTU RTAX_MTU
470*4dc78e53SAndroid Build Coastguard Worker 	RTAX_WINDOW,
471*4dc78e53SAndroid Build Coastguard Worker #define RTAX_WINDOW RTAX_WINDOW
472*4dc78e53SAndroid Build Coastguard Worker 	RTAX_RTT,
473*4dc78e53SAndroid Build Coastguard Worker #define RTAX_RTT RTAX_RTT
474*4dc78e53SAndroid Build Coastguard Worker 	RTAX_RTTVAR,
475*4dc78e53SAndroid Build Coastguard Worker #define RTAX_RTTVAR RTAX_RTTVAR
476*4dc78e53SAndroid Build Coastguard Worker 	RTAX_SSTHRESH,
477*4dc78e53SAndroid Build Coastguard Worker #define RTAX_SSTHRESH RTAX_SSTHRESH
478*4dc78e53SAndroid Build Coastguard Worker 	RTAX_CWND,
479*4dc78e53SAndroid Build Coastguard Worker #define RTAX_CWND RTAX_CWND
480*4dc78e53SAndroid Build Coastguard Worker 	RTAX_ADVMSS,
481*4dc78e53SAndroid Build Coastguard Worker #define RTAX_ADVMSS RTAX_ADVMSS
482*4dc78e53SAndroid Build Coastguard Worker 	RTAX_REORDERING,
483*4dc78e53SAndroid Build Coastguard Worker #define RTAX_REORDERING RTAX_REORDERING
484*4dc78e53SAndroid Build Coastguard Worker 	RTAX_HOPLIMIT,
485*4dc78e53SAndroid Build Coastguard Worker #define RTAX_HOPLIMIT RTAX_HOPLIMIT
486*4dc78e53SAndroid Build Coastguard Worker 	RTAX_INITCWND,
487*4dc78e53SAndroid Build Coastguard Worker #define RTAX_INITCWND RTAX_INITCWND
488*4dc78e53SAndroid Build Coastguard Worker 	RTAX_FEATURES,
489*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURES RTAX_FEATURES
490*4dc78e53SAndroid Build Coastguard Worker 	RTAX_RTO_MIN,
491*4dc78e53SAndroid Build Coastguard Worker #define RTAX_RTO_MIN RTAX_RTO_MIN
492*4dc78e53SAndroid Build Coastguard Worker 	RTAX_INITRWND,
493*4dc78e53SAndroid Build Coastguard Worker #define RTAX_INITRWND RTAX_INITRWND
494*4dc78e53SAndroid Build Coastguard Worker 	RTAX_QUICKACK,
495*4dc78e53SAndroid Build Coastguard Worker #define RTAX_QUICKACK RTAX_QUICKACK
496*4dc78e53SAndroid Build Coastguard Worker 	RTAX_CC_ALGO,
497*4dc78e53SAndroid Build Coastguard Worker #define RTAX_CC_ALGO RTAX_CC_ALGO
498*4dc78e53SAndroid Build Coastguard Worker 	RTAX_FASTOPEN_NO_COOKIE,
499*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
500*4dc78e53SAndroid Build Coastguard Worker 	__RTAX_MAX
501*4dc78e53SAndroid Build Coastguard Worker };
502*4dc78e53SAndroid Build Coastguard Worker 
503*4dc78e53SAndroid Build Coastguard Worker #define RTAX_MAX (__RTAX_MAX - 1)
504*4dc78e53SAndroid Build Coastguard Worker 
505*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_ECN	(1 << 0)
506*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_SACK	(1 << 1)
507*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_TIMESTAMP	(1 << 2)
508*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_ALLFRAG	(1 << 3)
509*4dc78e53SAndroid Build Coastguard Worker 
510*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_MASK	(RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
511*4dc78e53SAndroid Build Coastguard Worker 				 RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
512*4dc78e53SAndroid Build Coastguard Worker 
513*4dc78e53SAndroid Build Coastguard Worker struct rta_session {
514*4dc78e53SAndroid Build Coastguard Worker 	__u8	proto;
515*4dc78e53SAndroid Build Coastguard Worker 	__u8	pad1;
516*4dc78e53SAndroid Build Coastguard Worker 	__u16	pad2;
517*4dc78e53SAndroid Build Coastguard Worker 
518*4dc78e53SAndroid Build Coastguard Worker 	union {
519*4dc78e53SAndroid Build Coastguard Worker 		struct {
520*4dc78e53SAndroid Build Coastguard Worker 			__u16	sport;
521*4dc78e53SAndroid Build Coastguard Worker 			__u16	dport;
522*4dc78e53SAndroid Build Coastguard Worker 		} ports;
523*4dc78e53SAndroid Build Coastguard Worker 
524*4dc78e53SAndroid Build Coastguard Worker 		struct {
525*4dc78e53SAndroid Build Coastguard Worker 			__u8	type;
526*4dc78e53SAndroid Build Coastguard Worker 			__u8	code;
527*4dc78e53SAndroid Build Coastguard Worker 			__u16	ident;
528*4dc78e53SAndroid Build Coastguard Worker 		} icmpt;
529*4dc78e53SAndroid Build Coastguard Worker 
530*4dc78e53SAndroid Build Coastguard Worker 		__u32		spi;
531*4dc78e53SAndroid Build Coastguard Worker 	} u;
532*4dc78e53SAndroid Build Coastguard Worker };
533*4dc78e53SAndroid Build Coastguard Worker 
534*4dc78e53SAndroid Build Coastguard Worker struct rta_mfc_stats {
535*4dc78e53SAndroid Build Coastguard Worker 	__u64	mfcs_packets;
536*4dc78e53SAndroid Build Coastguard Worker 	__u64	mfcs_bytes;
537*4dc78e53SAndroid Build Coastguard Worker 	__u64	mfcs_wrong_if;
538*4dc78e53SAndroid Build Coastguard Worker };
539*4dc78e53SAndroid Build Coastguard Worker 
540*4dc78e53SAndroid Build Coastguard Worker /****
541*4dc78e53SAndroid Build Coastguard Worker  *		General form of address family dependent message.
542*4dc78e53SAndroid Build Coastguard Worker  ****/
543*4dc78e53SAndroid Build Coastguard Worker 
544*4dc78e53SAndroid Build Coastguard Worker struct rtgenmsg {
545*4dc78e53SAndroid Build Coastguard Worker 	unsigned char		rtgen_family;
546*4dc78e53SAndroid Build Coastguard Worker };
547*4dc78e53SAndroid Build Coastguard Worker 
548*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************
549*4dc78e53SAndroid Build Coastguard Worker  *		Link layer specific messages.
550*4dc78e53SAndroid Build Coastguard Worker  ****/
551*4dc78e53SAndroid Build Coastguard Worker 
552*4dc78e53SAndroid Build Coastguard Worker /* struct ifinfomsg
553*4dc78e53SAndroid Build Coastguard Worker  * passes link level specific information, not dependent
554*4dc78e53SAndroid Build Coastguard Worker  * on network protocol.
555*4dc78e53SAndroid Build Coastguard Worker  */
556*4dc78e53SAndroid Build Coastguard Worker 
557*4dc78e53SAndroid Build Coastguard Worker struct ifinfomsg {
558*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	ifi_family;
559*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	__ifi_pad;
560*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	ifi_type;		/* ARPHRD_* */
561*4dc78e53SAndroid Build Coastguard Worker 	int		ifi_index;		/* Link index	*/
562*4dc78e53SAndroid Build Coastguard Worker 	unsigned	ifi_flags;		/* IFF_* flags	*/
563*4dc78e53SAndroid Build Coastguard Worker 	unsigned	ifi_change;		/* IFF_* change mask */
564*4dc78e53SAndroid Build Coastguard Worker };
565*4dc78e53SAndroid Build Coastguard Worker 
566*4dc78e53SAndroid Build Coastguard Worker /********************************************************************
567*4dc78e53SAndroid Build Coastguard Worker  *		prefix information
568*4dc78e53SAndroid Build Coastguard Worker  ****/
569*4dc78e53SAndroid Build Coastguard Worker 
570*4dc78e53SAndroid Build Coastguard Worker struct prefixmsg {
571*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	prefix_family;
572*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	prefix_pad1;
573*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	prefix_pad2;
574*4dc78e53SAndroid Build Coastguard Worker 	int		prefix_ifindex;
575*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	prefix_type;
576*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	prefix_len;
577*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	prefix_flags;
578*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	prefix_pad3;
579*4dc78e53SAndroid Build Coastguard Worker };
580*4dc78e53SAndroid Build Coastguard Worker 
581*4dc78e53SAndroid Build Coastguard Worker enum
582*4dc78e53SAndroid Build Coastguard Worker {
583*4dc78e53SAndroid Build Coastguard Worker 	PREFIX_UNSPEC,
584*4dc78e53SAndroid Build Coastguard Worker 	PREFIX_ADDRESS,
585*4dc78e53SAndroid Build Coastguard Worker 	PREFIX_CACHEINFO,
586*4dc78e53SAndroid Build Coastguard Worker 	__PREFIX_MAX
587*4dc78e53SAndroid Build Coastguard Worker };
588*4dc78e53SAndroid Build Coastguard Worker 
589*4dc78e53SAndroid Build Coastguard Worker #define PREFIX_MAX	(__PREFIX_MAX - 1)
590*4dc78e53SAndroid Build Coastguard Worker 
591*4dc78e53SAndroid Build Coastguard Worker struct prefix_cacheinfo {
592*4dc78e53SAndroid Build Coastguard Worker 	__u32	preferred_time;
593*4dc78e53SAndroid Build Coastguard Worker 	__u32	valid_time;
594*4dc78e53SAndroid Build Coastguard Worker };
595*4dc78e53SAndroid Build Coastguard Worker 
596*4dc78e53SAndroid Build Coastguard Worker 
597*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************
598*4dc78e53SAndroid Build Coastguard Worker  *		Traffic control messages.
599*4dc78e53SAndroid Build Coastguard Worker  ****/
600*4dc78e53SAndroid Build Coastguard Worker 
601*4dc78e53SAndroid Build Coastguard Worker struct tcmsg {
602*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	tcm_family;
603*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	tcm__pad1;
604*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	tcm__pad2;
605*4dc78e53SAndroid Build Coastguard Worker 	int		tcm_ifindex;
606*4dc78e53SAndroid Build Coastguard Worker 	__u32		tcm_handle;
607*4dc78e53SAndroid Build Coastguard Worker 	__u32		tcm_parent;
608*4dc78e53SAndroid Build Coastguard Worker /* tcm_block_index is used instead of tcm_parent
609*4dc78e53SAndroid Build Coastguard Worker  * in case tcm_ifindex == TCM_IFINDEX_MAGIC_BLOCK
610*4dc78e53SAndroid Build Coastguard Worker  */
611*4dc78e53SAndroid Build Coastguard Worker #define tcm_block_index tcm_parent
612*4dc78e53SAndroid Build Coastguard Worker 	__u32		tcm_info;
613*4dc78e53SAndroid Build Coastguard Worker };
614*4dc78e53SAndroid Build Coastguard Worker 
615*4dc78e53SAndroid Build Coastguard Worker /* For manipulation of filters in shared block, tcm_ifindex is set to
616*4dc78e53SAndroid Build Coastguard Worker  * TCM_IFINDEX_MAGIC_BLOCK, and tcm_parent is aliased to tcm_block_index
617*4dc78e53SAndroid Build Coastguard Worker  * which is the block index.
618*4dc78e53SAndroid Build Coastguard Worker  */
619*4dc78e53SAndroid Build Coastguard Worker #define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
620*4dc78e53SAndroid Build Coastguard Worker 
621*4dc78e53SAndroid Build Coastguard Worker enum {
622*4dc78e53SAndroid Build Coastguard Worker 	TCA_UNSPEC,
623*4dc78e53SAndroid Build Coastguard Worker 	TCA_KIND,
624*4dc78e53SAndroid Build Coastguard Worker 	TCA_OPTIONS,
625*4dc78e53SAndroid Build Coastguard Worker 	TCA_STATS,
626*4dc78e53SAndroid Build Coastguard Worker 	TCA_XSTATS,
627*4dc78e53SAndroid Build Coastguard Worker 	TCA_RATE,
628*4dc78e53SAndroid Build Coastguard Worker 	TCA_FCNT,
629*4dc78e53SAndroid Build Coastguard Worker 	TCA_STATS2,
630*4dc78e53SAndroid Build Coastguard Worker 	TCA_STAB,
631*4dc78e53SAndroid Build Coastguard Worker 	TCA_PAD,
632*4dc78e53SAndroid Build Coastguard Worker 	TCA_DUMP_INVISIBLE,
633*4dc78e53SAndroid Build Coastguard Worker 	TCA_CHAIN,
634*4dc78e53SAndroid Build Coastguard Worker 	TCA_HW_OFFLOAD,
635*4dc78e53SAndroid Build Coastguard Worker 	TCA_INGRESS_BLOCK,
636*4dc78e53SAndroid Build Coastguard Worker 	TCA_EGRESS_BLOCK,
637*4dc78e53SAndroid Build Coastguard Worker 	TCA_DUMP_FLAGS,
638*4dc78e53SAndroid Build Coastguard Worker 	TCA_EXT_WARN_MSG,
639*4dc78e53SAndroid Build Coastguard Worker 	__TCA_MAX
640*4dc78e53SAndroid Build Coastguard Worker };
641*4dc78e53SAndroid Build Coastguard Worker 
642*4dc78e53SAndroid Build Coastguard Worker #define TCA_MAX (__TCA_MAX - 1)
643*4dc78e53SAndroid Build Coastguard Worker 
644*4dc78e53SAndroid Build Coastguard Worker #define TCA_DUMP_FLAGS_TERSE (1 << 0) /* Means that in dump user gets only basic
645*4dc78e53SAndroid Build Coastguard Worker 				       * data necessary to identify the objects
646*4dc78e53SAndroid Build Coastguard Worker 				       * (handle, cookie, etc.) and stats.
647*4dc78e53SAndroid Build Coastguard Worker 				       */
648*4dc78e53SAndroid Build Coastguard Worker 
649*4dc78e53SAndroid Build Coastguard Worker #define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
650*4dc78e53SAndroid Build Coastguard Worker #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
651*4dc78e53SAndroid Build Coastguard Worker 
652*4dc78e53SAndroid Build Coastguard Worker /********************************************************************
653*4dc78e53SAndroid Build Coastguard Worker  *		Neighbor Discovery userland options
654*4dc78e53SAndroid Build Coastguard Worker  ****/
655*4dc78e53SAndroid Build Coastguard Worker 
656*4dc78e53SAndroid Build Coastguard Worker struct nduseroptmsg {
657*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	nduseropt_family;
658*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	nduseropt_pad1;
659*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	nduseropt_opts_len;	/* Total length of options */
660*4dc78e53SAndroid Build Coastguard Worker 	int		nduseropt_ifindex;
661*4dc78e53SAndroid Build Coastguard Worker 	__u8		nduseropt_icmp_type;
662*4dc78e53SAndroid Build Coastguard Worker 	__u8		nduseropt_icmp_code;
663*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	nduseropt_pad2;
664*4dc78e53SAndroid Build Coastguard Worker 	unsigned int	nduseropt_pad3;
665*4dc78e53SAndroid Build Coastguard Worker 	/* Followed by one or more ND options */
666*4dc78e53SAndroid Build Coastguard Worker };
667*4dc78e53SAndroid Build Coastguard Worker 
668*4dc78e53SAndroid Build Coastguard Worker enum {
669*4dc78e53SAndroid Build Coastguard Worker 	NDUSEROPT_UNSPEC,
670*4dc78e53SAndroid Build Coastguard Worker 	NDUSEROPT_SRCADDR,
671*4dc78e53SAndroid Build Coastguard Worker 	__NDUSEROPT_MAX
672*4dc78e53SAndroid Build Coastguard Worker };
673*4dc78e53SAndroid Build Coastguard Worker 
674*4dc78e53SAndroid Build Coastguard Worker #define NDUSEROPT_MAX	(__NDUSEROPT_MAX - 1)
675*4dc78e53SAndroid Build Coastguard Worker 
676*4dc78e53SAndroid Build Coastguard Worker /* RTnetlink multicast groups - backwards compatibility for userspace */
677*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_LINK		1
678*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_NOTIFY		2
679*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_NEIGH		4
680*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_TC		8
681*4dc78e53SAndroid Build Coastguard Worker 
682*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_IFADDR	0x10
683*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_MROUTE	0x20
684*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_ROUTE	0x40
685*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_RULE	0x80
686*4dc78e53SAndroid Build Coastguard Worker 
687*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_IFADDR	0x100
688*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_MROUTE	0x200
689*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_ROUTE	0x400
690*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_IFINFO	0x800
691*4dc78e53SAndroid Build Coastguard Worker 
692*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_DECnet_IFADDR    0x1000
693*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_DECnet_ROUTE     0x4000
694*4dc78e53SAndroid Build Coastguard Worker 
695*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_PREFIX	0x20000
696*4dc78e53SAndroid Build Coastguard Worker 
697*4dc78e53SAndroid Build Coastguard Worker /* RTnetlink multicast groups */
698*4dc78e53SAndroid Build Coastguard Worker enum rtnetlink_groups {
699*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NONE,
700*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NONE		RTNLGRP_NONE
701*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_LINK,
702*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_LINK		RTNLGRP_LINK
703*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NOTIFY,
704*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NOTIFY		RTNLGRP_NOTIFY
705*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NEIGH,
706*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NEIGH		RTNLGRP_NEIGH
707*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_TC,
708*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_TC		RTNLGRP_TC
709*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV4_IFADDR,
710*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_IFADDR	RTNLGRP_IPV4_IFADDR
711*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV4_MROUTE,
712*4dc78e53SAndroid Build Coastguard Worker #define	RTNLGRP_IPV4_MROUTE	RTNLGRP_IPV4_MROUTE
713*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV4_ROUTE,
714*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_ROUTE	RTNLGRP_IPV4_ROUTE
715*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV4_RULE,
716*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_RULE	RTNLGRP_IPV4_RULE
717*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_IFADDR,
718*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_IFADDR	RTNLGRP_IPV6_IFADDR
719*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_MROUTE,
720*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_MROUTE	RTNLGRP_IPV6_MROUTE
721*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_ROUTE,
722*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_ROUTE	RTNLGRP_IPV6_ROUTE
723*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_IFINFO,
724*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_IFINFO	RTNLGRP_IPV6_IFINFO
725*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_DECnet_IFADDR,
726*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DECnet_IFADDR	RTNLGRP_DECnet_IFADDR
727*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NOP2,
728*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_DECnet_ROUTE,
729*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DECnet_ROUTE	RTNLGRP_DECnet_ROUTE
730*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_DECnet_RULE,
731*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DECnet_RULE	RTNLGRP_DECnet_RULE
732*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NOP4,
733*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_PREFIX,
734*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_PREFIX	RTNLGRP_IPV6_PREFIX
735*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_RULE,
736*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_RULE	RTNLGRP_IPV6_RULE
737*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_ND_USEROPT,
738*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_ND_USEROPT	RTNLGRP_ND_USEROPT
739*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_PHONET_IFADDR,
740*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_PHONET_IFADDR	RTNLGRP_PHONET_IFADDR
741*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_PHONET_ROUTE,
742*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_PHONET_ROUTE	RTNLGRP_PHONET_ROUTE
743*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_DCB,
744*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DCB		RTNLGRP_DCB
745*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV4_NETCONF,
746*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_NETCONF	RTNLGRP_IPV4_NETCONF
747*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_NETCONF,
748*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_NETCONF	RTNLGRP_IPV6_NETCONF
749*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_MDB,
750*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MDB		RTNLGRP_MDB
751*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_MPLS_ROUTE,
752*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MPLS_ROUTE	RTNLGRP_MPLS_ROUTE
753*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NSID,
754*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NSID		RTNLGRP_NSID
755*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_MPLS_NETCONF,
756*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MPLS_NETCONF	RTNLGRP_MPLS_NETCONF
757*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV4_MROUTE_R,
758*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_MROUTE_R	RTNLGRP_IPV4_MROUTE_R
759*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_IPV6_MROUTE_R,
760*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_MROUTE_R	RTNLGRP_IPV6_MROUTE_R
761*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_NEXTHOP,
762*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NEXTHOP		RTNLGRP_NEXTHOP
763*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_BRVLAN,
764*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_BRVLAN		RTNLGRP_BRVLAN
765*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_MCTP_IFADDR,
766*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MCTP_IFADDR	RTNLGRP_MCTP_IFADDR
767*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_TUNNEL,
768*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_TUNNEL		RTNLGRP_TUNNEL
769*4dc78e53SAndroid Build Coastguard Worker 	RTNLGRP_STATS,
770*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_STATS		RTNLGRP_STATS
771*4dc78e53SAndroid Build Coastguard Worker 	__RTNLGRP_MAX
772*4dc78e53SAndroid Build Coastguard Worker };
773*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MAX	(__RTNLGRP_MAX - 1)
774*4dc78e53SAndroid Build Coastguard Worker 
775*4dc78e53SAndroid Build Coastguard Worker /* TC action piece */
776*4dc78e53SAndroid Build Coastguard Worker struct tcamsg {
777*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	tca_family;
778*4dc78e53SAndroid Build Coastguard Worker 	unsigned char	tca__pad1;
779*4dc78e53SAndroid Build Coastguard Worker 	unsigned short	tca__pad2;
780*4dc78e53SAndroid Build Coastguard Worker };
781*4dc78e53SAndroid Build Coastguard Worker 
782*4dc78e53SAndroid Build Coastguard Worker enum {
783*4dc78e53SAndroid Build Coastguard Worker 	TCA_ROOT_UNSPEC,
784*4dc78e53SAndroid Build Coastguard Worker 	TCA_ROOT_TAB,
785*4dc78e53SAndroid Build Coastguard Worker #define TCA_ACT_TAB TCA_ROOT_TAB
786*4dc78e53SAndroid Build Coastguard Worker #define TCAA_MAX TCA_ROOT_TAB
787*4dc78e53SAndroid Build Coastguard Worker 	TCA_ROOT_FLAGS,
788*4dc78e53SAndroid Build Coastguard Worker 	TCA_ROOT_COUNT,
789*4dc78e53SAndroid Build Coastguard Worker 	TCA_ROOT_TIME_DELTA, /* in msecs */
790*4dc78e53SAndroid Build Coastguard Worker 	TCA_ROOT_EXT_WARN_MSG,
791*4dc78e53SAndroid Build Coastguard Worker 	__TCA_ROOT_MAX,
792*4dc78e53SAndroid Build Coastguard Worker #define	TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
793*4dc78e53SAndroid Build Coastguard Worker };
794*4dc78e53SAndroid Build Coastguard Worker 
795*4dc78e53SAndroid Build Coastguard Worker #define TA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
796*4dc78e53SAndroid Build Coastguard Worker #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
797*4dc78e53SAndroid Build Coastguard Worker /* tcamsg flags stored in attribute TCA_ROOT_FLAGS
798*4dc78e53SAndroid Build Coastguard Worker  *
799*4dc78e53SAndroid Build Coastguard Worker  * TCA_ACT_FLAG_LARGE_DUMP_ON user->kernel to request for larger than
800*4dc78e53SAndroid Build Coastguard Worker  * TCA_ACT_MAX_PRIO actions in a dump. All dump responses will contain the
801*4dc78e53SAndroid Build Coastguard Worker  * number of actions being dumped stored in for user app's consumption in
802*4dc78e53SAndroid Build Coastguard Worker  * TCA_ROOT_COUNT
803*4dc78e53SAndroid Build Coastguard Worker  *
804*4dc78e53SAndroid Build Coastguard Worker  * TCA_ACT_FLAG_TERSE_DUMP user->kernel to request terse (brief) dump that only
805*4dc78e53SAndroid Build Coastguard Worker  * includes essential action info (kind, index, etc.)
806*4dc78e53SAndroid Build Coastguard Worker  *
807*4dc78e53SAndroid Build Coastguard Worker  */
808*4dc78e53SAndroid Build Coastguard Worker #define TCA_FLAG_LARGE_DUMP_ON		(1 << 0)
809*4dc78e53SAndroid Build Coastguard Worker #define TCA_ACT_FLAG_LARGE_DUMP_ON	TCA_FLAG_LARGE_DUMP_ON
810*4dc78e53SAndroid Build Coastguard Worker #define TCA_ACT_FLAG_TERSE_DUMP		(1 << 1)
811*4dc78e53SAndroid Build Coastguard Worker 
812*4dc78e53SAndroid Build Coastguard Worker /* New extended info filters for IFLA_EXT_MASK */
813*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_VF		(1 << 0)
814*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_BRVLAN	(1 << 1)
815*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_BRVLAN_COMPRESSED	(1 << 2)
816*4dc78e53SAndroid Build Coastguard Worker #define	RTEXT_FILTER_SKIP_STATS	(1 << 3)
817*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_MRP	(1 << 4)
818*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_CFM_CONFIG	(1 << 5)
819*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_CFM_STATUS	(1 << 6)
820*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_MST	(1 << 7)
821*4dc78e53SAndroid Build Coastguard Worker 
822*4dc78e53SAndroid Build Coastguard Worker /* End of information exported to user level */
823*4dc78e53SAndroid Build Coastguard Worker 
824*4dc78e53SAndroid Build Coastguard Worker 
825*4dc78e53SAndroid Build Coastguard Worker 
826*4dc78e53SAndroid Build Coastguard Worker #endif /* __LINUX_RTNETLINK_H */
827