blob: bbd991ac4acc12fda958a68ad7662a4dabff881c [file] [log] [blame]
The Android Open Source Project1dc9e472009-03-03 19:28:35 -08001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef __LINUX_RTNETLINK_H
13#define __LINUX_RTNETLINK_H
Ben Cheng4b29af02012-03-07 16:14:53 -080014
San Mehat91638722010-04-06 18:49:49 -070015#include <linux/types.h>
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080016#include <linux/netlink.h>
San Mehat91638722010-04-06 18:49:49 -070017#include <linux/if_link.h>
18#include <linux/if_addr.h>
19#include <linux/neighbour.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080020
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -080021#define RTNL_FAMILY_IPMR 128
22#define RTNL_FAMILY_IP6MR 129
23#define RTNL_FAMILY_MAX 129
Ben Cheng4b29af02012-03-07 16:14:53 -080024
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080025enum {
26 RTM_BASE = 16,
27#define RTM_BASE RTM_BASE
Ben Cheng4b29af02012-03-07 16:14:53 -080028
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080029 RTM_NEWLINK = 16,
30#define RTM_NEWLINK RTM_NEWLINK
31 RTM_DELLINK,
32#define RTM_DELLINK RTM_DELLINK
33 RTM_GETLINK,
34#define RTM_GETLINK RTM_GETLINK
35 RTM_SETLINK,
36#define RTM_SETLINK RTM_SETLINK
Ben Cheng4b29af02012-03-07 16:14:53 -080037
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080038 RTM_NEWADDR = 20,
39#define RTM_NEWADDR RTM_NEWADDR
40 RTM_DELADDR,
41#define RTM_DELADDR RTM_DELADDR
42 RTM_GETADDR,
43#define RTM_GETADDR RTM_GETADDR
Ben Cheng4b29af02012-03-07 16:14:53 -080044
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080045 RTM_NEWROUTE = 24,
46#define RTM_NEWROUTE RTM_NEWROUTE
47 RTM_DELROUTE,
48#define RTM_DELROUTE RTM_DELROUTE
49 RTM_GETROUTE,
50#define RTM_GETROUTE RTM_GETROUTE
Ben Cheng4b29af02012-03-07 16:14:53 -080051
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080052 RTM_NEWNEIGH = 28,
53#define RTM_NEWNEIGH RTM_NEWNEIGH
54 RTM_DELNEIGH,
55#define RTM_DELNEIGH RTM_DELNEIGH
56 RTM_GETNEIGH,
57#define RTM_GETNEIGH RTM_GETNEIGH
Ben Cheng4b29af02012-03-07 16:14:53 -080058
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080059 RTM_NEWRULE = 32,
60#define RTM_NEWRULE RTM_NEWRULE
61 RTM_DELRULE,
62#define RTM_DELRULE RTM_DELRULE
63 RTM_GETRULE,
64#define RTM_GETRULE RTM_GETRULE
Ben Cheng4b29af02012-03-07 16:14:53 -080065
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080066 RTM_NEWQDISC = 36,
67#define RTM_NEWQDISC RTM_NEWQDISC
68 RTM_DELQDISC,
69#define RTM_DELQDISC RTM_DELQDISC
70 RTM_GETQDISC,
71#define RTM_GETQDISC RTM_GETQDISC
Ben Cheng4b29af02012-03-07 16:14:53 -080072
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080073 RTM_NEWTCLASS = 40,
74#define RTM_NEWTCLASS RTM_NEWTCLASS
75 RTM_DELTCLASS,
76#define RTM_DELTCLASS RTM_DELTCLASS
77 RTM_GETTCLASS,
78#define RTM_GETTCLASS RTM_GETTCLASS
Ben Cheng4b29af02012-03-07 16:14:53 -080079
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080080 RTM_NEWTFILTER = 44,
81#define RTM_NEWTFILTER RTM_NEWTFILTER
82 RTM_DELTFILTER,
83#define RTM_DELTFILTER RTM_DELTFILTER
84 RTM_GETTFILTER,
85#define RTM_GETTFILTER RTM_GETTFILTER
Ben Cheng4b29af02012-03-07 16:14:53 -080086
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080087 RTM_NEWACTION = 48,
88#define RTM_NEWACTION RTM_NEWACTION
89 RTM_DELACTION,
90#define RTM_DELACTION RTM_DELACTION
91 RTM_GETACTION,
92#define RTM_GETACTION RTM_GETACTION
Ben Cheng4b29af02012-03-07 16:14:53 -080093
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080094 RTM_NEWPREFIX = 52,
95#define RTM_NEWPREFIX RTM_NEWPREFIX
Ben Cheng4b29af02012-03-07 16:14:53 -080096
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080097 RTM_GETMULTICAST = 58,
98#define RTM_GETMULTICAST RTM_GETMULTICAST
Ben Cheng4b29af02012-03-07 16:14:53 -080099
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800100 RTM_GETANYCAST = 62,
101#define RTM_GETANYCAST RTM_GETANYCAST
Ben Cheng4b29af02012-03-07 16:14:53 -0800102
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800103 RTM_NEWNEIGHTBL = 64,
104#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
105 RTM_GETNEIGHTBL = 66,
106#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
107 RTM_SETNEIGHTBL,
108#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
Ben Cheng4b29af02012-03-07 16:14:53 -0800109
San Mehat91638722010-04-06 18:49:49 -0700110 RTM_NEWNDUSEROPT = 68,
111#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
Ben Cheng4b29af02012-03-07 16:14:53 -0800112
San Mehat91638722010-04-06 18:49:49 -0700113 RTM_NEWADDRLABEL = 72,
114#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
115 RTM_DELADDRLABEL,
116#define RTM_DELADDRLABEL RTM_DELADDRLABEL
117 RTM_GETADDRLABEL,
118#define RTM_GETADDRLABEL RTM_GETADDRLABEL
Ben Cheng4b29af02012-03-07 16:14:53 -0800119
San Mehat91638722010-04-06 18:49:49 -0700120 RTM_GETDCB = 78,
121#define RTM_GETDCB RTM_GETDCB
122 RTM_SETDCB,
123#define RTM_SETDCB RTM_SETDCB
Ben Cheng4b29af02012-03-07 16:14:53 -0800124
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800125 __RTM_MAX,
126#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
127};
Ben Cheng4b29af02012-03-07 16:14:53 -0800128
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800129#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
130#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
131#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
Ben Cheng4b29af02012-03-07 16:14:53 -0800132
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800133struct rtattr {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800134 unsigned short rta_len;
135 unsigned short rta_type;
136};
Ben Cheng4b29af02012-03-07 16:14:53 -0800137
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800138#define RTA_ALIGNTO 4
139#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
140#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
141#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
142#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
143#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
144#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
145#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
Ben Cheng4b29af02012-03-07 16:14:53 -0800146
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800147struct rtmsg {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800148 unsigned char rtm_family;
149 unsigned char rtm_dst_len;
150 unsigned char rtm_src_len;
151 unsigned char rtm_tos;
Ben Cheng4b29af02012-03-07 16:14:53 -0800152
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800153 unsigned char rtm_table;
154 unsigned char rtm_protocol;
155 unsigned char rtm_scope;
156 unsigned char rtm_type;
Ben Cheng4b29af02012-03-07 16:14:53 -0800157
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800158 unsigned rtm_flags;
159};
Ben Cheng4b29af02012-03-07 16:14:53 -0800160
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800161enum {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800162 RTN_UNSPEC,
163 RTN_UNICAST,
164 RTN_LOCAL,
165 RTN_BROADCAST,
166 RTN_ANYCAST,
167 RTN_MULTICAST,
168 RTN_BLACKHOLE,
169 RTN_UNREACHABLE,
170 RTN_PROHIBIT,
171 RTN_THROW,
172 RTN_NAT,
173 RTN_XRESOLVE,
174 __RTN_MAX
175};
Ben Cheng4b29af02012-03-07 16:14:53 -0800176
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800177#define RTN_MAX (__RTN_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800178
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800179#define RTPROT_UNSPEC 0
180#define RTPROT_REDIRECT 1
181#define RTPROT_KERNEL 2
182#define RTPROT_BOOT 3
183#define RTPROT_STATIC 4
Ben Cheng4b29af02012-03-07 16:14:53 -0800184
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800185#define RTPROT_GATED 8
186#define RTPROT_RA 9
187#define RTPROT_MRT 10
188#define RTPROT_ZEBRA 11
189#define RTPROT_BIRD 12
190#define RTPROT_DNROUTED 13
191#define RTPROT_XORP 14
192#define RTPROT_NTK 15
San Mehat91638722010-04-06 18:49:49 -0700193#define RTPROT_DHCP 16
Ben Cheng4b29af02012-03-07 16:14:53 -0800194
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800195enum rt_scope_t {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800196 RT_SCOPE_UNIVERSE=0,
Ben Cheng4b29af02012-03-07 16:14:53 -0800197
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800198 RT_SCOPE_SITE=200,
199 RT_SCOPE_LINK=253,
200 RT_SCOPE_HOST=254,
201 RT_SCOPE_NOWHERE=255
202};
Ben Cheng4b29af02012-03-07 16:14:53 -0800203
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800204#define RTM_F_NOTIFY 0x100
205#define RTM_F_CLONED 0x200
206#define RTM_F_EQUALIZE 0x400
207#define RTM_F_PREFIX 0x800
Ben Cheng4b29af02012-03-07 16:14:53 -0800208
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800209enum rt_class_t {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800210 RT_TABLE_UNSPEC=0,
Ben Cheng4b29af02012-03-07 16:14:53 -0800211
San Mehat91638722010-04-06 18:49:49 -0700212 RT_TABLE_COMPAT=252,
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800213 RT_TABLE_DEFAULT=253,
214 RT_TABLE_MAIN=254,
215 RT_TABLE_LOCAL=255,
San Mehat91638722010-04-06 18:49:49 -0700216 RT_TABLE_MAX=0xFFFFFFFF
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800217};
Ben Cheng4b29af02012-03-07 16:14:53 -0800218
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800219enum rtattr_type_t {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800220 RTA_UNSPEC,
221 RTA_DST,
222 RTA_SRC,
223 RTA_IIF,
224 RTA_OIF,
225 RTA_GATEWAY,
226 RTA_PRIORITY,
227 RTA_PREFSRC,
228 RTA_METRICS,
229 RTA_MULTIPATH,
230 RTA_PROTOINFO,
231 RTA_FLOW,
232 RTA_CACHEINFO,
233 RTA_SESSION,
234 RTA_MP_ALGO,
San Mehat91638722010-04-06 18:49:49 -0700235 RTA_TABLE,
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800236 RTA_MARK,
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800237 __RTA_MAX
238};
Ben Cheng4b29af02012-03-07 16:14:53 -0800239
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800240#define RTA_MAX (__RTA_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800241
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800242#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
243#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
Ben Cheng4b29af02012-03-07 16:14:53 -0800244
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800245struct rtnexthop {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800246 unsigned short rtnh_len;
247 unsigned char rtnh_flags;
248 unsigned char rtnh_hops;
249 int rtnh_ifindex;
250};
Ben Cheng4b29af02012-03-07 16:14:53 -0800251
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800252#define RTNH_F_DEAD 1
253#define RTNH_F_PERVASIVE 2
254#define RTNH_F_ONLINK 4
Ben Cheng4b29af02012-03-07 16:14:53 -0800255
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800256#define RTNH_ALIGNTO 4
257#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
258#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int)(rtnh)->rtnh_len) <= (len))
259#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
260#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
261#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
262#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
Ben Cheng4b29af02012-03-07 16:14:53 -0800263
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800264struct rta_cacheinfo {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800265 __u32 rta_clntref;
266 __u32 rta_lastuse;
267 __s32 rta_expires;
268 __u32 rta_error;
269 __u32 rta_used;
Ben Cheng4b29af02012-03-07 16:14:53 -0800270
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800271#define RTNETLINK_HAVE_PEERINFO 1
272 __u32 rta_id;
273 __u32 rta_ts;
274 __u32 rta_tsage;
275};
Ben Cheng4b29af02012-03-07 16:14:53 -0800276
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800277enum {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800278 RTAX_UNSPEC,
279#define RTAX_UNSPEC RTAX_UNSPEC
280 RTAX_LOCK,
281#define RTAX_LOCK RTAX_LOCK
282 RTAX_MTU,
283#define RTAX_MTU RTAX_MTU
284 RTAX_WINDOW,
285#define RTAX_WINDOW RTAX_WINDOW
286 RTAX_RTT,
287#define RTAX_RTT RTAX_RTT
288 RTAX_RTTVAR,
289#define RTAX_RTTVAR RTAX_RTTVAR
290 RTAX_SSTHRESH,
291#define RTAX_SSTHRESH RTAX_SSTHRESH
292 RTAX_CWND,
293#define RTAX_CWND RTAX_CWND
294 RTAX_ADVMSS,
295#define RTAX_ADVMSS RTAX_ADVMSS
296 RTAX_REORDERING,
297#define RTAX_REORDERING RTAX_REORDERING
298 RTAX_HOPLIMIT,
299#define RTAX_HOPLIMIT RTAX_HOPLIMIT
300 RTAX_INITCWND,
301#define RTAX_INITCWND RTAX_INITCWND
302 RTAX_FEATURES,
303#define RTAX_FEATURES RTAX_FEATURES
San Mehat91638722010-04-06 18:49:49 -0700304 RTAX_RTO_MIN,
305#define RTAX_RTO_MIN RTAX_RTO_MIN
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800306 RTAX_INITRWND,
307#define RTAX_INITRWND RTAX_INITRWND
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800308 __RTAX_MAX
309};
Ben Cheng4b29af02012-03-07 16:14:53 -0800310
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800311#define RTAX_MAX (__RTAX_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800312
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800313#define RTAX_FEATURE_ECN 0x00000001
314#define RTAX_FEATURE_SACK 0x00000002
315#define RTAX_FEATURE_TIMESTAMP 0x00000004
316#define RTAX_FEATURE_ALLFRAG 0x00000008
Ben Cheng4b29af02012-03-07 16:14:53 -0800317
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800318struct rta_session {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800319 __u8 proto;
320 __u8 pad1;
321 __u16 pad2;
Ben Cheng4b29af02012-03-07 16:14:53 -0800322
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800323 union {
324 struct {
325 __u16 sport;
326 __u16 dport;
327 } ports;
Ben Cheng4b29af02012-03-07 16:14:53 -0800328
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800329 struct {
330 __u8 type;
331 __u8 code;
332 __u16 ident;
333 } icmpt;
Ben Cheng4b29af02012-03-07 16:14:53 -0800334
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800335 __u32 spi;
336 } u;
337};
Ben Cheng4b29af02012-03-07 16:14:53 -0800338
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800339struct rtgenmsg {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800340 unsigned char rtgen_family;
341};
Ben Cheng4b29af02012-03-07 16:14:53 -0800342
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800343struct ifinfomsg {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800344 unsigned char ifi_family;
345 unsigned char __ifi_pad;
346 unsigned short ifi_type;
347 int ifi_index;
348 unsigned ifi_flags;
349 unsigned ifi_change;
350};
Ben Cheng4b29af02012-03-07 16:14:53 -0800351
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800352struct prefixmsg {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800353 unsigned char prefix_family;
354 unsigned char prefix_pad1;
355 unsigned short prefix_pad2;
356 int prefix_ifindex;
357 unsigned char prefix_type;
358 unsigned char prefix_len;
359 unsigned char prefix_flags;
360 unsigned char prefix_pad3;
361};
Ben Cheng4b29af02012-03-07 16:14:53 -0800362
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800363enum
364{
365 PREFIX_UNSPEC,
366 PREFIX_ADDRESS,
367 PREFIX_CACHEINFO,
368 __PREFIX_MAX
369};
Ben Cheng4b29af02012-03-07 16:14:53 -0800370
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800371#define PREFIX_MAX (__PREFIX_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800372
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800373struct prefix_cacheinfo {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800374 __u32 preferred_time;
375 __u32 valid_time;
376};
Ben Cheng4b29af02012-03-07 16:14:53 -0800377
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800378struct tcmsg {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800379 unsigned char tcm_family;
380 unsigned char tcm__pad1;
381 unsigned short tcm__pad2;
382 int tcm_ifindex;
383 __u32 tcm_handle;
384 __u32 tcm_parent;
385 __u32 tcm_info;
386};
Ben Cheng4b29af02012-03-07 16:14:53 -0800387
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800388enum {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800389 TCA_UNSPEC,
390 TCA_KIND,
391 TCA_OPTIONS,
392 TCA_STATS,
393 TCA_XSTATS,
394 TCA_RATE,
395 TCA_FCNT,
396 TCA_STATS2,
San Mehat91638722010-04-06 18:49:49 -0700397 TCA_STAB,
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800398 __TCA_MAX
399};
Ben Cheng4b29af02012-03-07 16:14:53 -0800400
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800401#define TCA_MAX (__TCA_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800402
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800403#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
404#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
Ben Cheng4b29af02012-03-07 16:14:53 -0800405
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800406struct nduseroptmsg {
San Mehat91638722010-04-06 18:49:49 -0700407 unsigned char nduseropt_family;
408 unsigned char nduseropt_pad1;
409 unsigned short nduseropt_opts_len;
410 int nduseropt_ifindex;
411 __u8 nduseropt_icmp_type;
412 __u8 nduseropt_icmp_code;
413 unsigned short nduseropt_pad2;
414 unsigned int nduseropt_pad3;
Ben Cheng4b29af02012-03-07 16:14:53 -0800415
San Mehat91638722010-04-06 18:49:49 -0700416};
Ben Cheng4b29af02012-03-07 16:14:53 -0800417
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800418enum {
San Mehat91638722010-04-06 18:49:49 -0700419 NDUSEROPT_UNSPEC,
420 NDUSEROPT_SRCADDR,
421 __NDUSEROPT_MAX
422};
Ben Cheng4b29af02012-03-07 16:14:53 -0800423
San Mehat91638722010-04-06 18:49:49 -0700424#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800425
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800426#define RTMGRP_LINK 1
427#define RTMGRP_NOTIFY 2
428#define RTMGRP_NEIGH 4
429#define RTMGRP_TC 8
Ben Cheng4b29af02012-03-07 16:14:53 -0800430
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800431#define RTMGRP_IPV4_IFADDR 0x10
432#define RTMGRP_IPV4_MROUTE 0x20
433#define RTMGRP_IPV4_ROUTE 0x40
434#define RTMGRP_IPV4_RULE 0x80
Ben Cheng4b29af02012-03-07 16:14:53 -0800435
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800436#define RTMGRP_IPV6_IFADDR 0x100
437#define RTMGRP_IPV6_MROUTE 0x200
438#define RTMGRP_IPV6_ROUTE 0x400
439#define RTMGRP_IPV6_IFINFO 0x800
Ben Cheng4b29af02012-03-07 16:14:53 -0800440
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800441#define RTMGRP_DECnet_IFADDR 0x1000
442#define RTMGRP_DECnet_ROUTE 0x4000
Ben Cheng4b29af02012-03-07 16:14:53 -0800443
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800444#define RTMGRP_IPV6_PREFIX 0x20000
Ben Cheng4b29af02012-03-07 16:14:53 -0800445
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800446enum rtnetlink_groups {
447 RTNLGRP_NONE,
448#define RTNLGRP_NONE RTNLGRP_NONE
449 RTNLGRP_LINK,
450#define RTNLGRP_LINK RTNLGRP_LINK
451 RTNLGRP_NOTIFY,
452#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
453 RTNLGRP_NEIGH,
454#define RTNLGRP_NEIGH RTNLGRP_NEIGH
455 RTNLGRP_TC,
456#define RTNLGRP_TC RTNLGRP_TC
457 RTNLGRP_IPV4_IFADDR,
458#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
459 RTNLGRP_IPV4_MROUTE,
460#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
461 RTNLGRP_IPV4_ROUTE,
462#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
463 RTNLGRP_IPV4_RULE,
464#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
465 RTNLGRP_IPV6_IFADDR,
466#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
467 RTNLGRP_IPV6_MROUTE,
468#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
469 RTNLGRP_IPV6_ROUTE,
470#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
471 RTNLGRP_IPV6_IFINFO,
472#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
473 RTNLGRP_DECnet_IFADDR,
474#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
475 RTNLGRP_NOP2,
476 RTNLGRP_DECnet_ROUTE,
477#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
San Mehat91638722010-04-06 18:49:49 -0700478 RTNLGRP_DECnet_RULE,
479#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800480 RTNLGRP_NOP4,
481 RTNLGRP_IPV6_PREFIX,
482#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
San Mehat91638722010-04-06 18:49:49 -0700483 RTNLGRP_IPV6_RULE,
484#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
485 RTNLGRP_ND_USEROPT,
486#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
487 RTNLGRP_PHONET_IFADDR,
488#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
489 RTNLGRP_PHONET_ROUTE,
490#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800491 __RTNLGRP_MAX
492};
493#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
Ben Cheng4b29af02012-03-07 16:14:53 -0800494
Dmitry Shmidtce69c5e2011-01-06 15:30:35 -0800495struct tcamsg {
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800496 unsigned char tca_family;
497 unsigned char tca__pad1;
498 unsigned short tca__pad2;
499};
500#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
501#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
502#define TCA_ACT_TAB 1
503#define TCAA_MAX 1
Ben Cheng4b29af02012-03-07 16:14:53 -0800504
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800505#endif
Ben Cheng4b29af02012-03-07 16:14:53 -0800506