blob: e305505b07bb5f8304ccd3600bb03ab6f13c7652 [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
14
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>
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080020
21enum {
22 RTM_BASE = 16,
23#define RTM_BASE RTM_BASE
24
25 RTM_NEWLINK = 16,
26#define RTM_NEWLINK RTM_NEWLINK
27 RTM_DELLINK,
28#define RTM_DELLINK RTM_DELLINK
29 RTM_GETLINK,
30#define RTM_GETLINK RTM_GETLINK
31 RTM_SETLINK,
32#define RTM_SETLINK RTM_SETLINK
33
34 RTM_NEWADDR = 20,
35#define RTM_NEWADDR RTM_NEWADDR
36 RTM_DELADDR,
37#define RTM_DELADDR RTM_DELADDR
38 RTM_GETADDR,
39#define RTM_GETADDR RTM_GETADDR
40
41 RTM_NEWROUTE = 24,
42#define RTM_NEWROUTE RTM_NEWROUTE
43 RTM_DELROUTE,
44#define RTM_DELROUTE RTM_DELROUTE
45 RTM_GETROUTE,
46#define RTM_GETROUTE RTM_GETROUTE
47
48 RTM_NEWNEIGH = 28,
49#define RTM_NEWNEIGH RTM_NEWNEIGH
50 RTM_DELNEIGH,
51#define RTM_DELNEIGH RTM_DELNEIGH
52 RTM_GETNEIGH,
53#define RTM_GETNEIGH RTM_GETNEIGH
54
55 RTM_NEWRULE = 32,
56#define RTM_NEWRULE RTM_NEWRULE
57 RTM_DELRULE,
58#define RTM_DELRULE RTM_DELRULE
59 RTM_GETRULE,
60#define RTM_GETRULE RTM_GETRULE
61
62 RTM_NEWQDISC = 36,
63#define RTM_NEWQDISC RTM_NEWQDISC
64 RTM_DELQDISC,
65#define RTM_DELQDISC RTM_DELQDISC
66 RTM_GETQDISC,
67#define RTM_GETQDISC RTM_GETQDISC
68
69 RTM_NEWTCLASS = 40,
70#define RTM_NEWTCLASS RTM_NEWTCLASS
71 RTM_DELTCLASS,
72#define RTM_DELTCLASS RTM_DELTCLASS
73 RTM_GETTCLASS,
74#define RTM_GETTCLASS RTM_GETTCLASS
75
76 RTM_NEWTFILTER = 44,
77#define RTM_NEWTFILTER RTM_NEWTFILTER
78 RTM_DELTFILTER,
79#define RTM_DELTFILTER RTM_DELTFILTER
80 RTM_GETTFILTER,
81#define RTM_GETTFILTER RTM_GETTFILTER
82
83 RTM_NEWACTION = 48,
84#define RTM_NEWACTION RTM_NEWACTION
85 RTM_DELACTION,
86#define RTM_DELACTION RTM_DELACTION
87 RTM_GETACTION,
88#define RTM_GETACTION RTM_GETACTION
89
90 RTM_NEWPREFIX = 52,
91#define RTM_NEWPREFIX RTM_NEWPREFIX
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080092
93 RTM_GETMULTICAST = 58,
94#define RTM_GETMULTICAST RTM_GETMULTICAST
95
96 RTM_GETANYCAST = 62,
97#define RTM_GETANYCAST RTM_GETANYCAST
98
99 RTM_NEWNEIGHTBL = 64,
100#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
101 RTM_GETNEIGHTBL = 66,
102#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
103 RTM_SETNEIGHTBL,
104#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
105
San Mehat91638722010-04-06 18:49:49 -0700106 RTM_NEWNDUSEROPT = 68,
107#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
108
109 RTM_NEWADDRLABEL = 72,
110#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
111 RTM_DELADDRLABEL,
112#define RTM_DELADDRLABEL RTM_DELADDRLABEL
113 RTM_GETADDRLABEL,
114#define RTM_GETADDRLABEL RTM_GETADDRLABEL
115
116 RTM_GETDCB = 78,
117#define RTM_GETDCB RTM_GETDCB
118 RTM_SETDCB,
119#define RTM_SETDCB RTM_SETDCB
120
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800121 __RTM_MAX,
122#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
123};
124
125#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
126#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
127#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
128
129struct rtattr
130{
131 unsigned short rta_len;
132 unsigned short rta_type;
133};
134
135#define RTA_ALIGNTO 4
136#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
137#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
138#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
139#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
140#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
141#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
142#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
143
144struct rtmsg
145{
146 unsigned char rtm_family;
147 unsigned char rtm_dst_len;
148 unsigned char rtm_src_len;
149 unsigned char rtm_tos;
150
151 unsigned char rtm_table;
152 unsigned char rtm_protocol;
153 unsigned char rtm_scope;
154 unsigned char rtm_type;
155
156 unsigned rtm_flags;
157};
158
159enum
160{
161 RTN_UNSPEC,
162 RTN_UNICAST,
163 RTN_LOCAL,
164 RTN_BROADCAST,
165 RTN_ANYCAST,
166 RTN_MULTICAST,
167 RTN_BLACKHOLE,
168 RTN_UNREACHABLE,
169 RTN_PROHIBIT,
170 RTN_THROW,
171 RTN_NAT,
172 RTN_XRESOLVE,
173 __RTN_MAX
174};
175
176#define RTN_MAX (__RTN_MAX - 1)
177
178#define RTPROT_UNSPEC 0
179#define RTPROT_REDIRECT 1
180#define RTPROT_KERNEL 2
181#define RTPROT_BOOT 3
182#define RTPROT_STATIC 4
183
184#define RTPROT_GATED 8
185#define RTPROT_RA 9
186#define RTPROT_MRT 10
187#define RTPROT_ZEBRA 11
188#define RTPROT_BIRD 12
189#define RTPROT_DNROUTED 13
190#define RTPROT_XORP 14
191#define RTPROT_NTK 15
San Mehat91638722010-04-06 18:49:49 -0700192#define RTPROT_DHCP 16
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800193
194enum rt_scope_t
195{
196 RT_SCOPE_UNIVERSE=0,
197
198 RT_SCOPE_SITE=200,
199 RT_SCOPE_LINK=253,
200 RT_SCOPE_HOST=254,
201 RT_SCOPE_NOWHERE=255
202};
203
204#define RTM_F_NOTIFY 0x100
205#define RTM_F_CLONED 0x200
206#define RTM_F_EQUALIZE 0x400
207#define RTM_F_PREFIX 0x800
208
209enum rt_class_t
210{
211 RT_TABLE_UNSPEC=0,
212
San Mehat91638722010-04-06 18:49:49 -0700213 RT_TABLE_COMPAT=252,
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800214 RT_TABLE_DEFAULT=253,
215 RT_TABLE_MAIN=254,
216 RT_TABLE_LOCAL=255,
San Mehat91638722010-04-06 18:49:49 -0700217 RT_TABLE_MAX=0xFFFFFFFF
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800218};
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800219
220enum rtattr_type_t
221{
222 RTA_UNSPEC,
223 RTA_DST,
224 RTA_SRC,
225 RTA_IIF,
226 RTA_OIF,
227 RTA_GATEWAY,
228 RTA_PRIORITY,
229 RTA_PREFSRC,
230 RTA_METRICS,
231 RTA_MULTIPATH,
232 RTA_PROTOINFO,
233 RTA_FLOW,
234 RTA_CACHEINFO,
235 RTA_SESSION,
236 RTA_MP_ALGO,
San Mehat91638722010-04-06 18:49:49 -0700237 RTA_TABLE,
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800238 __RTA_MAX
239};
240
241#define RTA_MAX (__RTA_MAX - 1)
242
243#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
244#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
245
246struct rtnexthop
247{
248 unsigned short rtnh_len;
249 unsigned char rtnh_flags;
250 unsigned char rtnh_hops;
251 int rtnh_ifindex;
252};
253
254#define RTNH_F_DEAD 1
255#define RTNH_F_PERVASIVE 2
256#define RTNH_F_ONLINK 4
257
258#define RTNH_ALIGNTO 4
259#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
260#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int)(rtnh)->rtnh_len) <= (len))
261#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
262#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
263#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
264#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
265
266struct rta_cacheinfo
267{
268 __u32 rta_clntref;
269 __u32 rta_lastuse;
270 __s32 rta_expires;
271 __u32 rta_error;
272 __u32 rta_used;
273
274#define RTNETLINK_HAVE_PEERINFO 1
275 __u32 rta_id;
276 __u32 rta_ts;
277 __u32 rta_tsage;
278};
279
280enum
281{
282 RTAX_UNSPEC,
283#define RTAX_UNSPEC RTAX_UNSPEC
284 RTAX_LOCK,
285#define RTAX_LOCK RTAX_LOCK
286 RTAX_MTU,
287#define RTAX_MTU RTAX_MTU
288 RTAX_WINDOW,
289#define RTAX_WINDOW RTAX_WINDOW
290 RTAX_RTT,
291#define RTAX_RTT RTAX_RTT
292 RTAX_RTTVAR,
293#define RTAX_RTTVAR RTAX_RTTVAR
294 RTAX_SSTHRESH,
295#define RTAX_SSTHRESH RTAX_SSTHRESH
296 RTAX_CWND,
297#define RTAX_CWND RTAX_CWND
298 RTAX_ADVMSS,
299#define RTAX_ADVMSS RTAX_ADVMSS
300 RTAX_REORDERING,
301#define RTAX_REORDERING RTAX_REORDERING
302 RTAX_HOPLIMIT,
303#define RTAX_HOPLIMIT RTAX_HOPLIMIT
304 RTAX_INITCWND,
305#define RTAX_INITCWND RTAX_INITCWND
306 RTAX_FEATURES,
307#define RTAX_FEATURES RTAX_FEATURES
San Mehat91638722010-04-06 18:49:49 -0700308 RTAX_RTO_MIN,
309#define RTAX_RTO_MIN RTAX_RTO_MIN
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800310 __RTAX_MAX
311};
312
313#define RTAX_MAX (__RTAX_MAX - 1)
314
315#define RTAX_FEATURE_ECN 0x00000001
316#define RTAX_FEATURE_SACK 0x00000002
317#define RTAX_FEATURE_TIMESTAMP 0x00000004
318#define RTAX_FEATURE_ALLFRAG 0x00000008
319
320struct rta_session
321{
322 __u8 proto;
323 __u8 pad1;
324 __u16 pad2;
325
326 union {
327 struct {
328 __u16 sport;
329 __u16 dport;
330 } ports;
331
332 struct {
333 __u8 type;
334 __u8 code;
335 __u16 ident;
336 } icmpt;
337
338 __u32 spi;
339 } u;
340};
341
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800342struct rtgenmsg
343{
344 unsigned char rtgen_family;
345};
346
347struct ifinfomsg
348{
349 unsigned char ifi_family;
350 unsigned char __ifi_pad;
351 unsigned short ifi_type;
352 int ifi_index;
353 unsigned ifi_flags;
354 unsigned ifi_change;
355};
356
357struct prefixmsg
358{
359 unsigned char prefix_family;
360 unsigned char prefix_pad1;
361 unsigned short prefix_pad2;
362 int prefix_ifindex;
363 unsigned char prefix_type;
364 unsigned char prefix_len;
365 unsigned char prefix_flags;
366 unsigned char prefix_pad3;
367};
368
369enum
370{
371 PREFIX_UNSPEC,
372 PREFIX_ADDRESS,
373 PREFIX_CACHEINFO,
374 __PREFIX_MAX
375};
376
377#define PREFIX_MAX (__PREFIX_MAX - 1)
378
379struct prefix_cacheinfo
380{
381 __u32 preferred_time;
382 __u32 valid_time;
383};
384
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800385struct tcmsg
386{
387 unsigned char tcm_family;
388 unsigned char tcm__pad1;
389 unsigned short tcm__pad2;
390 int tcm_ifindex;
391 __u32 tcm_handle;
392 __u32 tcm_parent;
393 __u32 tcm_info;
394};
395
396enum
397{
398 TCA_UNSPEC,
399 TCA_KIND,
400 TCA_OPTIONS,
401 TCA_STATS,
402 TCA_XSTATS,
403 TCA_RATE,
404 TCA_FCNT,
405 TCA_STATS2,
San Mehat91638722010-04-06 18:49:49 -0700406 TCA_STAB,
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800407 __TCA_MAX
408};
409
410#define TCA_MAX (__TCA_MAX - 1)
411
412#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
413#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
414
San Mehat91638722010-04-06 18:49:49 -0700415struct nduseroptmsg
416{
417 unsigned char nduseropt_family;
418 unsigned char nduseropt_pad1;
419 unsigned short nduseropt_opts_len;
420 int nduseropt_ifindex;
421 __u8 nduseropt_icmp_type;
422 __u8 nduseropt_icmp_code;
423 unsigned short nduseropt_pad2;
424 unsigned int nduseropt_pad3;
425
426};
427
428enum
429{
430 NDUSEROPT_UNSPEC,
431 NDUSEROPT_SRCADDR,
432 __NDUSEROPT_MAX
433};
434
435#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
436
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800437#define RTMGRP_LINK 1
438#define RTMGRP_NOTIFY 2
439#define RTMGRP_NEIGH 4
440#define RTMGRP_TC 8
441
442#define RTMGRP_IPV4_IFADDR 0x10
443#define RTMGRP_IPV4_MROUTE 0x20
444#define RTMGRP_IPV4_ROUTE 0x40
445#define RTMGRP_IPV4_RULE 0x80
446
447#define RTMGRP_IPV6_IFADDR 0x100
448#define RTMGRP_IPV6_MROUTE 0x200
449#define RTMGRP_IPV6_ROUTE 0x400
450#define RTMGRP_IPV6_IFINFO 0x800
451
452#define RTMGRP_DECnet_IFADDR 0x1000
453#define RTMGRP_DECnet_ROUTE 0x4000
454
455#define RTMGRP_IPV6_PREFIX 0x20000
456
457enum rtnetlink_groups {
458 RTNLGRP_NONE,
459#define RTNLGRP_NONE RTNLGRP_NONE
460 RTNLGRP_LINK,
461#define RTNLGRP_LINK RTNLGRP_LINK
462 RTNLGRP_NOTIFY,
463#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
464 RTNLGRP_NEIGH,
465#define RTNLGRP_NEIGH RTNLGRP_NEIGH
466 RTNLGRP_TC,
467#define RTNLGRP_TC RTNLGRP_TC
468 RTNLGRP_IPV4_IFADDR,
469#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
470 RTNLGRP_IPV4_MROUTE,
471#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
472 RTNLGRP_IPV4_ROUTE,
473#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
474 RTNLGRP_IPV4_RULE,
475#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
476 RTNLGRP_IPV6_IFADDR,
477#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
478 RTNLGRP_IPV6_MROUTE,
479#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
480 RTNLGRP_IPV6_ROUTE,
481#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
482 RTNLGRP_IPV6_IFINFO,
483#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
484 RTNLGRP_DECnet_IFADDR,
485#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
486 RTNLGRP_NOP2,
487 RTNLGRP_DECnet_ROUTE,
488#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
San Mehat91638722010-04-06 18:49:49 -0700489 RTNLGRP_DECnet_RULE,
490#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800491 RTNLGRP_NOP4,
492 RTNLGRP_IPV6_PREFIX,
493#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
San Mehat91638722010-04-06 18:49:49 -0700494 RTNLGRP_IPV6_RULE,
495#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
496 RTNLGRP_ND_USEROPT,
497#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
498 RTNLGRP_PHONET_IFADDR,
499#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
500 RTNLGRP_PHONET_ROUTE,
501#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800502 __RTNLGRP_MAX
503};
504#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
505
506struct tcamsg
507{
508 unsigned char tca_family;
509 unsigned char tca__pad1;
510 unsigned short tca__pad2;
511};
512#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
513#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
514#define TCA_ACT_TAB 1
515#define TCAA_MAX 1
516
517#endif