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_KEEPALIVED 18
285#define RTPROT_BABEL 42
286#define RTPROT_BGP 186
287#define RTPROT_ISIS 187
288#define RTPROT_OSPF 188
289#define RTPROT_RIP 189
290#define RTPROT_EIGRP 192
291
292
293
294
295
296
297
298
299
300
301
302
303enum rt_scope_t {
304 RT_SCOPE_UNIVERSE=0,
305
306 RT_SCOPE_SITE=200,
307 RT_SCOPE_LINK=253,
308 RT_SCOPE_HOST=254,
309 RT_SCOPE_NOWHERE=255
310};
311
312
313
314#define RTM_F_NOTIFY 0x100
315#define RTM_F_CLONED 0x200
316#define RTM_F_EQUALIZE 0x400
317#define RTM_F_PREFIX 0x800
318#define RTM_F_LOOKUP_TABLE 0x1000
319#define RTM_F_FIB_MATCH 0x2000
320#define RTM_F_OFFLOAD 0x4000
321#define RTM_F_TRAP 0x8000
322
323
324
325enum rt_class_t {
326 RT_TABLE_UNSPEC=0,
327
328 RT_TABLE_COMPAT=252,
329 RT_TABLE_DEFAULT=253,
330 RT_TABLE_MAIN=254,
331 RT_TABLE_LOCAL=255,
332 RT_TABLE_MAX=0xFFFFFFFF
333};
334
335
336
337
338enum rtattr_type_t {
339 RTA_UNSPEC,
340 RTA_DST,
341 RTA_SRC,
342 RTA_IIF,
343 RTA_OIF,
344 RTA_GATEWAY,
345 RTA_PRIORITY,
346 RTA_PREFSRC,
347 RTA_METRICS,
348 RTA_MULTIPATH,
349 RTA_PROTOINFO,
350 RTA_FLOW,
351 RTA_CACHEINFO,
352 RTA_SESSION,
353 RTA_MP_ALGO,
354 RTA_TABLE,
355 RTA_MARK,
356 RTA_MFC_STATS,
357 RTA_VIA,
358 RTA_NEWDST,
359 RTA_PREF,
360 RTA_ENCAP_TYPE,
361 RTA_ENCAP,
362 RTA_EXPIRES,
363 RTA_PAD,
364 RTA_UID,
365 RTA_TTL_PROPAGATE,
366 RTA_IP_PROTO,
367 RTA_SPORT,
368 RTA_DPORT,
369 RTA_NH_ID,
370 __RTA_MAX
371};
372
373#define RTA_MAX (__RTA_MAX - 1)
374
375#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
376#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
377
378
379
380
381
382
383
384
385
386
387struct rtnexthop {
388 unsigned short rtnh_len;
389 unsigned char rtnh_flags;
390 unsigned char rtnh_hops;
391 int rtnh_ifindex;
392};
393
394
395
396#define RTNH_F_DEAD 1
397#define RTNH_F_PERVASIVE 2
398#define RTNH_F_ONLINK 4
399#define RTNH_F_OFFLOAD 8
400#define RTNH_F_LINKDOWN 16
401#define RTNH_F_UNRESOLVED 32
402
403#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
404
405
406
407#define RTNH_ALIGNTO 4
408#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
409#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
410 ((int)(rtnh)->rtnh_len) <= (len))
411#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
412#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
413#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
414#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
415
416
417struct rtvia {
418 __kernel_sa_family_t rtvia_family;
419 __u8 rtvia_addr[0];
420};
421
422
423
424struct rta_cacheinfo {
425 __u32 rta_clntref;
426 __u32 rta_lastuse;
427 __s32 rta_expires;
428 __u32 rta_error;
429 __u32 rta_used;
430
431#define RTNETLINK_HAVE_PEERINFO 1
432 __u32 rta_id;
433 __u32 rta_ts;
434 __u32 rta_tsage;
435};
436
437
438
439enum {
440 RTAX_UNSPEC,
441#define RTAX_UNSPEC RTAX_UNSPEC
442 RTAX_LOCK,
443#define RTAX_LOCK RTAX_LOCK
444 RTAX_MTU,
445#define RTAX_MTU RTAX_MTU
446 RTAX_WINDOW,
447#define RTAX_WINDOW RTAX_WINDOW
448 RTAX_RTT,
449#define RTAX_RTT RTAX_RTT
450 RTAX_RTTVAR,
451#define RTAX_RTTVAR RTAX_RTTVAR
452 RTAX_SSTHRESH,
453#define RTAX_SSTHRESH RTAX_SSTHRESH
454 RTAX_CWND,
455#define RTAX_CWND RTAX_CWND
456 RTAX_ADVMSS,
457#define RTAX_ADVMSS RTAX_ADVMSS
458 RTAX_REORDERING,
459#define RTAX_REORDERING RTAX_REORDERING
460 RTAX_HOPLIMIT,
461#define RTAX_HOPLIMIT RTAX_HOPLIMIT
462 RTAX_INITCWND,
463#define RTAX_INITCWND RTAX_INITCWND
464 RTAX_FEATURES,
465#define RTAX_FEATURES RTAX_FEATURES
466 RTAX_RTO_MIN,
467#define RTAX_RTO_MIN RTAX_RTO_MIN
468 RTAX_INITRWND,
469#define RTAX_INITRWND RTAX_INITRWND
470 RTAX_QUICKACK,
471#define RTAX_QUICKACK RTAX_QUICKACK
472 RTAX_CC_ALGO,
473#define RTAX_CC_ALGO RTAX_CC_ALGO
474 RTAX_FASTOPEN_NO_COOKIE,
475#define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
476 __RTAX_MAX
477};
478
479#define RTAX_MAX (__RTAX_MAX - 1)
480
481#define RTAX_FEATURE_ECN (1 << 0)
482#define RTAX_FEATURE_SACK (1 << 1)
483#define RTAX_FEATURE_TIMESTAMP (1 << 2)
484#define RTAX_FEATURE_ALLFRAG (1 << 3)
485
486#define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
487 RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
488
489struct rta_session {
490 __u8 proto;
491 __u8 pad1;
492 __u16 pad2;
493
494 union {
495 struct {
496 __u16 sport;
497 __u16 dport;
498 } ports;
499
500 struct {
501 __u8 type;
502 __u8 code;
503 __u16 ident;
504 } icmpt;
505
506 __u32 spi;
507 } u;
508};
509
510struct rta_mfc_stats {
511 __u64 mfcs_packets;
512 __u64 mfcs_bytes;
513 __u64 mfcs_wrong_if;
514};
515
516
517
518
519
520struct rtgenmsg {
521 unsigned char rtgen_family;
522};
523
524
525
526
527
528
529
530
531
532
533struct ifinfomsg {
534 unsigned char ifi_family;
535 unsigned char __ifi_pad;
536 unsigned short ifi_type;
537 int ifi_index;
538 unsigned ifi_flags;
539 unsigned ifi_change;
540};
541
542
543
544
545
546struct prefixmsg {
547 unsigned char prefix_family;
548 unsigned char prefix_pad1;
549 unsigned short prefix_pad2;
550 int prefix_ifindex;
551 unsigned char prefix_type;
552 unsigned char prefix_len;
553 unsigned char prefix_flags;
554 unsigned char prefix_pad3;
555};
556
557enum
558{
559 PREFIX_UNSPEC,
560 PREFIX_ADDRESS,
561 PREFIX_CACHEINFO,
562 __PREFIX_MAX
563};
564
565#define PREFIX_MAX (__PREFIX_MAX - 1)
566
567struct prefix_cacheinfo {
568 __u32 preferred_time;
569 __u32 valid_time;
570};
571
572
573
574
575
576
577struct tcmsg {
578 unsigned char tcm_family;
579 unsigned char tcm__pad1;
580 unsigned short tcm__pad2;
581 int tcm_ifindex;
582 __u32 tcm_handle;
583 __u32 tcm_parent;
584
585
586
587#define tcm_block_index tcm_parent
588 __u32 tcm_info;
589};
590
591
592
593
594
595#define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
596
597enum {
598 TCA_UNSPEC,
599 TCA_KIND,
600 TCA_OPTIONS,
601 TCA_STATS,
602 TCA_XSTATS,
603 TCA_RATE,
604 TCA_FCNT,
605 TCA_STATS2,
606 TCA_STAB,
607 TCA_PAD,
608 TCA_DUMP_INVISIBLE,
609 TCA_CHAIN,
610 TCA_HW_OFFLOAD,
611 TCA_INGRESS_BLOCK,
612 TCA_EGRESS_BLOCK,
613 TCA_DUMP_FLAGS,
614 __TCA_MAX
615};
616
617#define TCA_MAX (__TCA_MAX - 1)
618
619#define TCA_DUMP_FLAGS_TERSE (1 << 0)
620
621
622
623
624#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
625#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
626
627
628
629
630
631struct nduseroptmsg {
632 unsigned char nduseropt_family;
633 unsigned char nduseropt_pad1;
634 unsigned short nduseropt_opts_len;
635 int nduseropt_ifindex;
636 __u8 nduseropt_icmp_type;
637 __u8 nduseropt_icmp_code;
638 unsigned short nduseropt_pad2;
639 unsigned int nduseropt_pad3;
640
641};
642
643enum {
644 NDUSEROPT_UNSPEC,
645 NDUSEROPT_SRCADDR,
646 __NDUSEROPT_MAX
647};
648
649#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
650
651#ifndef __KERNEL__
652
653#define RTMGRP_LINK 1
654#define RTMGRP_NOTIFY 2
655#define RTMGRP_NEIGH 4
656#define RTMGRP_TC 8
657
658#define RTMGRP_IPV4_IFADDR 0x10
659#define RTMGRP_IPV4_MROUTE 0x20
660#define RTMGRP_IPV4_ROUTE 0x40
661#define RTMGRP_IPV4_RULE 0x80
662
663#define RTMGRP_IPV6_IFADDR 0x100
664#define RTMGRP_IPV6_MROUTE 0x200
665#define RTMGRP_IPV6_ROUTE 0x400
666#define RTMGRP_IPV6_IFINFO 0x800
667
668#define RTMGRP_DECnet_IFADDR 0x1000
669#define RTMGRP_DECnet_ROUTE 0x4000
670
671#define RTMGRP_IPV6_PREFIX 0x20000
672#endif
673
674
675enum rtnetlink_groups {
676 RTNLGRP_NONE,
677#define RTNLGRP_NONE RTNLGRP_NONE
678 RTNLGRP_LINK,
679#define RTNLGRP_LINK RTNLGRP_LINK
680 RTNLGRP_NOTIFY,
681#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
682 RTNLGRP_NEIGH,
683#define RTNLGRP_NEIGH RTNLGRP_NEIGH
684 RTNLGRP_TC,
685#define RTNLGRP_TC RTNLGRP_TC
686 RTNLGRP_IPV4_IFADDR,
687#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
688 RTNLGRP_IPV4_MROUTE,
689#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
690 RTNLGRP_IPV4_ROUTE,
691#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
692 RTNLGRP_IPV4_RULE,
693#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
694 RTNLGRP_IPV6_IFADDR,
695#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
696 RTNLGRP_IPV6_MROUTE,
697#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
698 RTNLGRP_IPV6_ROUTE,
699#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
700 RTNLGRP_IPV6_IFINFO,
701#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
702 RTNLGRP_DECnet_IFADDR,
703#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
704 RTNLGRP_NOP2,
705 RTNLGRP_DECnet_ROUTE,
706#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
707 RTNLGRP_DECnet_RULE,
708#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
709 RTNLGRP_NOP4,
710 RTNLGRP_IPV6_PREFIX,
711#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
712 RTNLGRP_IPV6_RULE,
713#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
714 RTNLGRP_ND_USEROPT,
715#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
716 RTNLGRP_PHONET_IFADDR,
717#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
718 RTNLGRP_PHONET_ROUTE,
719#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
720 RTNLGRP_DCB,
721#define RTNLGRP_DCB RTNLGRP_DCB
722 RTNLGRP_IPV4_NETCONF,
723#define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
724 RTNLGRP_IPV6_NETCONF,
725#define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
726 RTNLGRP_MDB,
727#define RTNLGRP_MDB RTNLGRP_MDB
728 RTNLGRP_MPLS_ROUTE,
729#define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
730 RTNLGRP_NSID,
731#define RTNLGRP_NSID RTNLGRP_NSID
732 RTNLGRP_MPLS_NETCONF,
733#define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
734 RTNLGRP_IPV4_MROUTE_R,
735#define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
736 RTNLGRP_IPV6_MROUTE_R,
737#define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
738 RTNLGRP_NEXTHOP,
739#define RTNLGRP_NEXTHOP RTNLGRP_NEXTHOP
740 RTNLGRP_BRVLAN,
741#define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
742 __RTNLGRP_MAX
743};
744#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
745
746
747struct tcamsg {
748 unsigned char tca_family;
749 unsigned char tca__pad1;
750 unsigned short tca__pad2;
751};
752
753enum {
754 TCA_ROOT_UNSPEC,
755 TCA_ROOT_TAB,
756#define TCA_ACT_TAB TCA_ROOT_TAB
757#define TCAA_MAX TCA_ROOT_TAB
758 TCA_ROOT_FLAGS,
759 TCA_ROOT_COUNT,
760 TCA_ROOT_TIME_DELTA,
761 __TCA_ROOT_MAX,
762#define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
763};
764
765#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
766#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
767
768
769
770
771
772
773
774#define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
775
776
777#define RTEXT_FILTER_VF (1 << 0)
778#define RTEXT_FILTER_BRVLAN (1 << 1)
779#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
780#define RTEXT_FILTER_SKIP_STATS (1 << 3)
781#define RTEXT_FILTER_MRP (1 << 4)
782
783
784
785
786
787#endif
788