1
2#ifndef _UAPI__LINUX_RTNETLINK_H
3#define _UAPI__LINUX_RTNETLINK_H
4
5#include <linux/types.h>
6#include <linux/netlink.h>
7#include <linux/if_link.h>
8#include <linux/if_addr.h>
9#include <linux/neighbour.h>
10
11
12
13
14#define RTNL_FAMILY_IPMR 128
15#define RTNL_FAMILY_IP6MR 129
16#define RTNL_FAMILY_MAX 129
17
18
19
20
21
22
23
24enum {
25 RTM_BASE = 16,
26#define RTM_BASE RTM_BASE
27
28 RTM_NEWLINK = 16,
29#define RTM_NEWLINK RTM_NEWLINK
30 RTM_DELLINK,
31#define RTM_DELLINK RTM_DELLINK
32 RTM_GETLINK,
33#define RTM_GETLINK RTM_GETLINK
34 RTM_SETLINK,
35#define RTM_SETLINK RTM_SETLINK
36
37 RTM_NEWADDR = 20,
38#define RTM_NEWADDR RTM_NEWADDR
39 RTM_DELADDR,
40#define RTM_DELADDR RTM_DELADDR
41 RTM_GETADDR,
42#define RTM_GETADDR RTM_GETADDR
43
44 RTM_NEWROUTE = 24,
45#define RTM_NEWROUTE RTM_NEWROUTE
46 RTM_DELROUTE,
47#define RTM_DELROUTE RTM_DELROUTE
48 RTM_GETROUTE,
49#define RTM_GETROUTE RTM_GETROUTE
50
51 RTM_NEWNEIGH = 28,
52#define RTM_NEWNEIGH RTM_NEWNEIGH
53 RTM_DELNEIGH,
54#define RTM_DELNEIGH RTM_DELNEIGH
55 RTM_GETNEIGH,
56#define RTM_GETNEIGH RTM_GETNEIGH
57
58 RTM_NEWRULE = 32,
59#define RTM_NEWRULE RTM_NEWRULE
60 RTM_DELRULE,
61#define RTM_DELRULE RTM_DELRULE
62 RTM_GETRULE,
63#define RTM_GETRULE RTM_GETRULE
64
65 RTM_NEWQDISC = 36,
66#define RTM_NEWQDISC RTM_NEWQDISC
67 RTM_DELQDISC,
68#define RTM_DELQDISC RTM_DELQDISC
69 RTM_GETQDISC,
70#define RTM_GETQDISC RTM_GETQDISC
71
72 RTM_NEWTCLASS = 40,
73#define RTM_NEWTCLASS RTM_NEWTCLASS
74 RTM_DELTCLASS,
75#define RTM_DELTCLASS RTM_DELTCLASS
76 RTM_GETTCLASS,
77#define RTM_GETTCLASS RTM_GETTCLASS
78
79 RTM_NEWTFILTER = 44,
80#define RTM_NEWTFILTER RTM_NEWTFILTER
81 RTM_DELTFILTER,
82#define RTM_DELTFILTER RTM_DELTFILTER
83 RTM_GETTFILTER,
84#define RTM_GETTFILTER RTM_GETTFILTER
85
86 RTM_NEWACTION = 48,
87#define RTM_NEWACTION RTM_NEWACTION
88 RTM_DELACTION,
89#define RTM_DELACTION RTM_DELACTION
90 RTM_GETACTION,
91#define RTM_GETACTION RTM_GETACTION
92
93 RTM_NEWPREFIX = 52,
94#define RTM_NEWPREFIX RTM_NEWPREFIX
95
96 RTM_GETMULTICAST = 58,
97#define RTM_GETMULTICAST RTM_GETMULTICAST
98
99 RTM_GETANYCAST = 62,
100#define RTM_GETANYCAST RTM_GETANYCAST
101
102 RTM_NEWNEIGHTBL = 64,
103#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
104 RTM_GETNEIGHTBL = 66,
105#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
106 RTM_SETNEIGHTBL,
107#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
108
109 RTM_NEWNDUSEROPT = 68,
110#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
111
112 RTM_NEWADDRLABEL = 72,
113#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
114 RTM_DELADDRLABEL,
115#define RTM_DELADDRLABEL RTM_DELADDRLABEL
116 RTM_GETADDRLABEL,
117#define RTM_GETADDRLABEL RTM_GETADDRLABEL
118
119 RTM_GETDCB = 78,
120#define RTM_GETDCB RTM_GETDCB
121 RTM_SETDCB,
122#define RTM_SETDCB RTM_SETDCB
123
124 RTM_NEWNETCONF = 80,
125#define RTM_NEWNETCONF RTM_NEWNETCONF
126 RTM_DELNETCONF,
127#define RTM_DELNETCONF RTM_DELNETCONF
128 RTM_GETNETCONF = 82,
129#define RTM_GETNETCONF RTM_GETNETCONF
130
131 RTM_NEWMDB = 84,
132#define RTM_NEWMDB RTM_NEWMDB
133 RTM_DELMDB = 85,
134#define RTM_DELMDB RTM_DELMDB
135 RTM_GETMDB = 86,
136#define RTM_GETMDB RTM_GETMDB
137
138 RTM_NEWNSID = 88,
139#define RTM_NEWNSID RTM_NEWNSID
140 RTM_DELNSID = 89,
141#define RTM_DELNSID RTM_DELNSID
142 RTM_GETNSID = 90,
143#define RTM_GETNSID RTM_GETNSID
144
145 RTM_NEWSTATS = 92,
146#define RTM_NEWSTATS RTM_NEWSTATS
147 RTM_GETSTATS = 94,
148#define RTM_GETSTATS RTM_GETSTATS
149
150 RTM_NEWCACHEREPORT = 96,
151#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
152
153 RTM_NEWCHAIN = 100,
154#define RTM_NEWCHAIN RTM_NEWCHAIN
155 RTM_DELCHAIN,
156#define RTM_DELCHAIN RTM_DELCHAIN
157 RTM_GETCHAIN,
158#define RTM_GETCHAIN RTM_GETCHAIN
159
160 RTM_NEWNEXTHOP = 104,
161#define RTM_NEWNEXTHOP RTM_NEWNEXTHOP
162 RTM_DELNEXTHOP,
163#define RTM_DELNEXTHOP RTM_DELNEXTHOP
164 RTM_GETNEXTHOP,
165#define RTM_GETNEXTHOP RTM_GETNEXTHOP
166
167 RTM_NEWLINKPROP = 108,
168#define RTM_NEWLINKPROP RTM_NEWLINKPROP
169 RTM_DELLINKPROP,
170#define RTM_DELLINKPROP RTM_DELLINKPROP
171 RTM_GETLINKPROP,
172#define RTM_GETLINKPROP RTM_GETLINKPROP
173
174 RTM_NEWVLAN = 112,
175#define RTM_NEWNVLAN RTM_NEWVLAN
176 RTM_DELVLAN,
177#define RTM_DELVLAN RTM_DELVLAN
178 RTM_GETVLAN,
179#define RTM_GETVLAN RTM_GETVLAN
180
181 __RTM_MAX,
182#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
183};
184
185#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
186#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
187#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
188
189
190
191
192
193
194
195struct rtattr {
196 unsigned short rta_len;
197 unsigned short rta_type;
198};
199
200
201
202#define RTA_ALIGNTO 4U
203#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
204#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
205 (rta)->rta_len >= sizeof(struct rtattr) && \
206 (rta)->rta_len <= (len))
207#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
208 (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
209#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
210#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
211#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
212#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
213
214
215
216
217
218
219
220
221struct rtmsg {
222 unsigned char rtm_family;
223 unsigned char rtm_dst_len;
224 unsigned char rtm_src_len;
225 unsigned char rtm_tos;
226
227 unsigned char rtm_table;
228 unsigned char rtm_protocol;
229 unsigned char rtm_scope;
230 unsigned char rtm_type;
231
232 unsigned rtm_flags;
233};
234
235
236
237enum {
238 RTN_UNSPEC,
239 RTN_UNICAST,
240 RTN_LOCAL,
241 RTN_BROADCAST,
242
243 RTN_ANYCAST,
244
245 RTN_MULTICAST,
246 RTN_BLACKHOLE,
247 RTN_UNREACHABLE,
248 RTN_PROHIBIT,
249 RTN_THROW,
250 RTN_NAT,
251 RTN_XRESOLVE,
252 __RTN_MAX
253};
254
255#define RTN_MAX (__RTN_MAX - 1)
256
257
258
259
260#define RTPROT_UNSPEC 0
261#define RTPROT_REDIRECT 1
262
263#define RTPROT_KERNEL 2
264#define RTPROT_BOOT 3
265#define RTPROT_STATIC 4
266
267
268
269
270
271
272
273
274#define RTPROT_GATED 8
275#define RTPROT_RA 9
276#define RTPROT_MRT 10
277#define RTPROT_ZEBRA 11
278#define RTPROT_BIRD 12
279#define RTPROT_DNROUTED 13
280#define RTPROT_XORP 14
281#define RTPROT_NTK 15
282#define RTPROT_DHCP 16
283#define RTPROT_MROUTED 17
284#define RTPROT_BABEL 42
285#define RTPROT_BGP 186
286#define RTPROT_ISIS 187
287#define RTPROT_OSPF 188
288#define RTPROT_RIP 189
289#define RTPROT_EIGRP 192
290
291
292
293
294
295
296
297
298
299
300
301
302enum rt_scope_t {
303 RT_SCOPE_UNIVERSE=0,
304
305 RT_SCOPE_SITE=200,
306 RT_SCOPE_LINK=253,
307 RT_SCOPE_HOST=254,
308 RT_SCOPE_NOWHERE=255
309};
310
311
312
313#define RTM_F_NOTIFY 0x100
314#define RTM_F_CLONED 0x200
315#define RTM_F_EQUALIZE 0x400
316#define RTM_F_PREFIX 0x800
317#define RTM_F_LOOKUP_TABLE 0x1000
318#define RTM_F_FIB_MATCH 0x2000
319#define RTM_F_OFFLOAD 0x4000
320#define RTM_F_TRAP 0x8000
321
322
323
324enum rt_class_t {
325 RT_TABLE_UNSPEC=0,
326
327 RT_TABLE_COMPAT=252,
328 RT_TABLE_DEFAULT=253,
329 RT_TABLE_MAIN=254,
330 RT_TABLE_LOCAL=255,
331 RT_TABLE_MAX=0xFFFFFFFF
332};
333
334
335
336
337enum rtattr_type_t {
338 RTA_UNSPEC,
339 RTA_DST,
340 RTA_SRC,
341 RTA_IIF,
342 RTA_OIF,
343 RTA_GATEWAY,
344 RTA_PRIORITY,
345 RTA_PREFSRC,
346 RTA_METRICS,
347 RTA_MULTIPATH,
348 RTA_PROTOINFO,
349 RTA_FLOW,
350 RTA_CACHEINFO,
351 RTA_SESSION,
352 RTA_MP_ALGO,
353 RTA_TABLE,
354 RTA_MARK,
355 RTA_MFC_STATS,
356 RTA_VIA,
357 RTA_NEWDST,
358 RTA_PREF,
359 RTA_ENCAP_TYPE,
360 RTA_ENCAP,
361 RTA_EXPIRES,
362 RTA_PAD,
363 RTA_UID,
364 RTA_TTL_PROPAGATE,
365 RTA_IP_PROTO,
366 RTA_SPORT,
367 RTA_DPORT,
368 RTA_NH_ID,
369 __RTA_MAX
370};
371
372#define RTA_MAX (__RTA_MAX - 1)
373
374#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
375#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
376
377
378
379
380
381
382
383
384
385
386struct rtnexthop {
387 unsigned short rtnh_len;
388 unsigned char rtnh_flags;
389 unsigned char rtnh_hops;
390 int rtnh_ifindex;
391};
392
393
394
395#define RTNH_F_DEAD 1
396#define RTNH_F_PERVASIVE 2
397#define RTNH_F_ONLINK 4
398#define RTNH_F_OFFLOAD 8
399#define RTNH_F_LINKDOWN 16
400#define RTNH_F_UNRESOLVED 32
401
402#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
403
404
405
406#define RTNH_ALIGNTO 4
407#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
408#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
409 ((int)(rtnh)->rtnh_len) <= (len))
410#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
411#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
412#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
413#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
414
415
416struct rtvia {
417 __kernel_sa_family_t rtvia_family;
418 __u8 rtvia_addr[0];
419};
420
421
422
423struct rta_cacheinfo {
424 __u32 rta_clntref;
425 __u32 rta_lastuse;
426 __s32 rta_expires;
427 __u32 rta_error;
428 __u32 rta_used;
429
430#define RTNETLINK_HAVE_PEERINFO 1
431 __u32 rta_id;
432 __u32 rta_ts;
433 __u32 rta_tsage;
434};
435
436
437
438enum {
439 RTAX_UNSPEC,
440#define RTAX_UNSPEC RTAX_UNSPEC
441 RTAX_LOCK,
442#define RTAX_LOCK RTAX_LOCK
443 RTAX_MTU,
444#define RTAX_MTU RTAX_MTU
445 RTAX_WINDOW,
446#define RTAX_WINDOW RTAX_WINDOW
447 RTAX_RTT,
448#define RTAX_RTT RTAX_RTT
449 RTAX_RTTVAR,
450#define RTAX_RTTVAR RTAX_RTTVAR
451 RTAX_SSTHRESH,
452#define RTAX_SSTHRESH RTAX_SSTHRESH
453 RTAX_CWND,
454#define RTAX_CWND RTAX_CWND
455 RTAX_ADVMSS,
456#define RTAX_ADVMSS RTAX_ADVMSS
457 RTAX_REORDERING,
458#define RTAX_REORDERING RTAX_REORDERING
459 RTAX_HOPLIMIT,
460#define RTAX_HOPLIMIT RTAX_HOPLIMIT
461 RTAX_INITCWND,
462#define RTAX_INITCWND RTAX_INITCWND
463 RTAX_FEATURES,
464#define RTAX_FEATURES RTAX_FEATURES
465 RTAX_RTO_MIN,
466#define RTAX_RTO_MIN RTAX_RTO_MIN
467 RTAX_INITRWND,
468#define RTAX_INITRWND RTAX_INITRWND
469 RTAX_QUICKACK,
470#define RTAX_QUICKACK RTAX_QUICKACK
471 RTAX_CC_ALGO,
472#define RTAX_CC_ALGO RTAX_CC_ALGO
473 RTAX_FASTOPEN_NO_COOKIE,
474#define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
475 __RTAX_MAX
476};
477
478#define RTAX_MAX (__RTAX_MAX - 1)
479
480#define RTAX_FEATURE_ECN (1 << 0)
481#define RTAX_FEATURE_SACK (1 << 1)
482#define RTAX_FEATURE_TIMESTAMP (1 << 2)
483#define RTAX_FEATURE_ALLFRAG (1 << 3)
484
485#define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
486 RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
487
488struct rta_session {
489 __u8 proto;
490 __u8 pad1;
491 __u16 pad2;
492
493 union {
494 struct {
495 __u16 sport;
496 __u16 dport;
497 } ports;
498
499 struct {
500 __u8 type;
501 __u8 code;
502 __u16 ident;
503 } icmpt;
504
505 __u32 spi;
506 } u;
507};
508
509struct rta_mfc_stats {
510 __u64 mfcs_packets;
511 __u64 mfcs_bytes;
512 __u64 mfcs_wrong_if;
513};
514
515
516
517
518
519struct rtgenmsg {
520 unsigned char rtgen_family;
521};
522
523
524
525
526
527
528
529
530
531
532struct ifinfomsg {
533 unsigned char ifi_family;
534 unsigned char __ifi_pad;
535 unsigned short ifi_type;
536 int ifi_index;
537 unsigned ifi_flags;
538 unsigned ifi_change;
539};
540
541
542
543
544
545struct prefixmsg {
546 unsigned char prefix_family;
547 unsigned char prefix_pad1;
548 unsigned short prefix_pad2;
549 int prefix_ifindex;
550 unsigned char prefix_type;
551 unsigned char prefix_len;
552 unsigned char prefix_flags;
553 unsigned char prefix_pad3;
554};
555
556enum
557{
558 PREFIX_UNSPEC,
559 PREFIX_ADDRESS,
560 PREFIX_CACHEINFO,
561 __PREFIX_MAX
562};
563
564#define PREFIX_MAX (__PREFIX_MAX - 1)
565
566struct prefix_cacheinfo {
567 __u32 preferred_time;
568 __u32 valid_time;
569};
570
571
572
573
574
575
576struct tcmsg {
577 unsigned char tcm_family;
578 unsigned char tcm__pad1;
579 unsigned short tcm__pad2;
580 int tcm_ifindex;
581 __u32 tcm_handle;
582 __u32 tcm_parent;
583
584
585
586#define tcm_block_index tcm_parent
587 __u32 tcm_info;
588};
589
590
591
592
593
594#define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
595
596enum {
597 TCA_UNSPEC,
598 TCA_KIND,
599 TCA_OPTIONS,
600 TCA_STATS,
601 TCA_XSTATS,
602 TCA_RATE,
603 TCA_FCNT,
604 TCA_STATS2,
605 TCA_STAB,
606 TCA_PAD,
607 TCA_DUMP_INVISIBLE,
608 TCA_CHAIN,
609 TCA_HW_OFFLOAD,
610 TCA_INGRESS_BLOCK,
611 TCA_EGRESS_BLOCK,
612 TCA_DUMP_FLAGS,
613 __TCA_MAX
614};
615
616#define TCA_MAX (__TCA_MAX - 1)
617
618#define TCA_DUMP_FLAGS_TERSE (1 << 0)
619
620
621
622
623#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
624#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
625
626
627
628
629
630struct nduseroptmsg {
631 unsigned char nduseropt_family;
632 unsigned char nduseropt_pad1;
633 unsigned short nduseropt_opts_len;
634 int nduseropt_ifindex;
635 __u8 nduseropt_icmp_type;
636 __u8 nduseropt_icmp_code;
637 unsigned short nduseropt_pad2;
638 unsigned int nduseropt_pad3;
639
640};
641
642enum {
643 NDUSEROPT_UNSPEC,
644 NDUSEROPT_SRCADDR,
645 __NDUSEROPT_MAX
646};
647
648#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
649
650#ifndef __KERNEL__
651
652#define RTMGRP_LINK 1
653#define RTMGRP_NOTIFY 2
654#define RTMGRP_NEIGH 4
655#define RTMGRP_TC 8
656
657#define RTMGRP_IPV4_IFADDR 0x10
658#define RTMGRP_IPV4_MROUTE 0x20
659#define RTMGRP_IPV4_ROUTE 0x40
660#define RTMGRP_IPV4_RULE 0x80
661
662#define RTMGRP_IPV6_IFADDR 0x100
663#define RTMGRP_IPV6_MROUTE 0x200
664#define RTMGRP_IPV6_ROUTE 0x400
665#define RTMGRP_IPV6_IFINFO 0x800
666
667#define RTMGRP_DECnet_IFADDR 0x1000
668#define RTMGRP_DECnet_ROUTE 0x4000
669
670#define RTMGRP_IPV6_PREFIX 0x20000
671#endif
672
673
674enum rtnetlink_groups {
675 RTNLGRP_NONE,
676#define RTNLGRP_NONE RTNLGRP_NONE
677 RTNLGRP_LINK,
678#define RTNLGRP_LINK RTNLGRP_LINK
679 RTNLGRP_NOTIFY,
680#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
681 RTNLGRP_NEIGH,
682#define RTNLGRP_NEIGH RTNLGRP_NEIGH
683 RTNLGRP_TC,
684#define RTNLGRP_TC RTNLGRP_TC
685 RTNLGRP_IPV4_IFADDR,
686#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
687 RTNLGRP_IPV4_MROUTE,
688#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
689 RTNLGRP_IPV4_ROUTE,
690#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
691 RTNLGRP_IPV4_RULE,
692#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
693 RTNLGRP_IPV6_IFADDR,
694#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
695 RTNLGRP_IPV6_MROUTE,
696#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
697 RTNLGRP_IPV6_ROUTE,
698#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
699 RTNLGRP_IPV6_IFINFO,
700#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
701 RTNLGRP_DECnet_IFADDR,
702#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
703 RTNLGRP_NOP2,
704 RTNLGRP_DECnet_ROUTE,
705#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
706 RTNLGRP_DECnet_RULE,
707#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
708 RTNLGRP_NOP4,
709 RTNLGRP_IPV6_PREFIX,
710#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
711 RTNLGRP_IPV6_RULE,
712#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
713 RTNLGRP_ND_USEROPT,
714#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
715 RTNLGRP_PHONET_IFADDR,
716#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
717 RTNLGRP_PHONET_ROUTE,
718#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
719 RTNLGRP_DCB,
720#define RTNLGRP_DCB RTNLGRP_DCB
721 RTNLGRP_IPV4_NETCONF,
722#define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
723 RTNLGRP_IPV6_NETCONF,
724#define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
725 RTNLGRP_MDB,
726#define RTNLGRP_MDB RTNLGRP_MDB
727 RTNLGRP_MPLS_ROUTE,
728#define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
729 RTNLGRP_NSID,
730#define RTNLGRP_NSID RTNLGRP_NSID
731 RTNLGRP_MPLS_NETCONF,
732#define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
733 RTNLGRP_IPV4_MROUTE_R,
734#define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
735 RTNLGRP_IPV6_MROUTE_R,
736#define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
737 RTNLGRP_NEXTHOP,
738#define RTNLGRP_NEXTHOP RTNLGRP_NEXTHOP
739 RTNLGRP_BRVLAN,
740#define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
741 __RTNLGRP_MAX
742};
743#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
744
745
746struct tcamsg {
747 unsigned char tca_family;
748 unsigned char tca__pad1;
749 unsigned short tca__pad2;
750};
751
752enum {
753 TCA_ROOT_UNSPEC,
754 TCA_ROOT_TAB,
755#define TCA_ACT_TAB TCA_ROOT_TAB
756#define TCAA_MAX TCA_ROOT_TAB
757 TCA_ROOT_FLAGS,
758 TCA_ROOT_COUNT,
759 TCA_ROOT_TIME_DELTA,
760 __TCA_ROOT_MAX,
761#define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
762};
763
764#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
765#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
766
767
768
769
770
771
772
773#define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
774
775
776#define RTEXT_FILTER_VF (1 << 0)
777#define RTEXT_FILTER_BRVLAN (1 << 1)
778#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
779#define RTEXT_FILTER_SKIP_STATS (1 << 3)
780
781
782
783
784
785#endif
786