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