Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      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  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef _UAPI__LINUX_RTNETLINK_H
     20 #define _UAPI__LINUX_RTNETLINK_H
     21 #include <linux/types.h>
     22 #include <linux/netlink.h>
     23 #include <linux/if_link.h>
     24 #include <linux/if_addr.h>
     25 #include <linux/neighbour.h>
     26 #define RTNL_FAMILY_IPMR 128
     27 #define RTNL_FAMILY_IP6MR 129
     28 #define RTNL_FAMILY_MAX 129
     29 enum {
     30   RTM_BASE = 16,
     31 #define RTM_BASE RTM_BASE
     32   RTM_NEWLINK = 16,
     33 #define RTM_NEWLINK RTM_NEWLINK
     34   RTM_DELLINK,
     35 #define RTM_DELLINK RTM_DELLINK
     36   RTM_GETLINK,
     37 #define RTM_GETLINK RTM_GETLINK
     38   RTM_SETLINK,
     39 #define RTM_SETLINK RTM_SETLINK
     40   RTM_NEWADDR = 20,
     41 #define RTM_NEWADDR RTM_NEWADDR
     42   RTM_DELADDR,
     43 #define RTM_DELADDR RTM_DELADDR
     44   RTM_GETADDR,
     45 #define RTM_GETADDR RTM_GETADDR
     46   RTM_NEWROUTE = 24,
     47 #define RTM_NEWROUTE RTM_NEWROUTE
     48   RTM_DELROUTE,
     49 #define RTM_DELROUTE RTM_DELROUTE
     50   RTM_GETROUTE,
     51 #define RTM_GETROUTE RTM_GETROUTE
     52   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
     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   RTM_NEWQDISC = 36,
     65 #define RTM_NEWQDISC RTM_NEWQDISC
     66   RTM_DELQDISC,
     67 #define RTM_DELQDISC RTM_DELQDISC
     68   RTM_GETQDISC,
     69 #define RTM_GETQDISC RTM_GETQDISC
     70   RTM_NEWTCLASS = 40,
     71 #define RTM_NEWTCLASS RTM_NEWTCLASS
     72   RTM_DELTCLASS,
     73 #define RTM_DELTCLASS RTM_DELTCLASS
     74   RTM_GETTCLASS,
     75 #define RTM_GETTCLASS RTM_GETTCLASS
     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   RTM_NEWACTION = 48,
     83 #define RTM_NEWACTION RTM_NEWACTION
     84   RTM_DELACTION,
     85 #define RTM_DELACTION RTM_DELACTION
     86   RTM_GETACTION,
     87 #define RTM_GETACTION RTM_GETACTION
     88   RTM_NEWPREFIX = 52,
     89 #define RTM_NEWPREFIX RTM_NEWPREFIX
     90   RTM_GETMULTICAST = 58,
     91 #define RTM_GETMULTICAST RTM_GETMULTICAST
     92   RTM_GETANYCAST = 62,
     93 #define RTM_GETANYCAST RTM_GETANYCAST
     94   RTM_NEWNEIGHTBL = 64,
     95 #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
     96   RTM_GETNEIGHTBL = 66,
     97 #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
     98   RTM_SETNEIGHTBL,
     99 #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
    100   RTM_NEWNDUSEROPT = 68,
    101 #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
    102   RTM_NEWADDRLABEL = 72,
    103 #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
    104   RTM_DELADDRLABEL,
    105 #define RTM_DELADDRLABEL RTM_DELADDRLABEL
    106   RTM_GETADDRLABEL,
    107 #define RTM_GETADDRLABEL RTM_GETADDRLABEL
    108   RTM_GETDCB = 78,
    109 #define RTM_GETDCB RTM_GETDCB
    110   RTM_SETDCB,
    111 #define RTM_SETDCB RTM_SETDCB
    112   RTM_NEWNETCONF = 80,
    113 #define RTM_NEWNETCONF RTM_NEWNETCONF
    114   RTM_DELNETCONF,
    115 #define RTM_DELNETCONF RTM_DELNETCONF
    116   RTM_GETNETCONF = 82,
    117 #define RTM_GETNETCONF RTM_GETNETCONF
    118   RTM_NEWMDB = 84,
    119 #define RTM_NEWMDB RTM_NEWMDB
    120   RTM_DELMDB = 85,
    121 #define RTM_DELMDB RTM_DELMDB
    122   RTM_GETMDB = 86,
    123 #define RTM_GETMDB RTM_GETMDB
    124   RTM_NEWNSID = 88,
    125 #define RTM_NEWNSID RTM_NEWNSID
    126   RTM_DELNSID = 89,
    127 #define RTM_DELNSID RTM_DELNSID
    128   RTM_GETNSID = 90,
    129 #define RTM_GETNSID RTM_GETNSID
    130   RTM_NEWSTATS = 92,
    131 #define RTM_NEWSTATS RTM_NEWSTATS
    132   RTM_GETSTATS = 94,
    133 #define RTM_GETSTATS RTM_GETSTATS
    134   RTM_NEWCACHEREPORT = 96,
    135 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
    136   __RTM_MAX,
    137 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
    138 };
    139 #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
    140 #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
    141 #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
    142 struct rtattr {
    143   unsigned short rta_len;
    144   unsigned short rta_type;
    145 };
    146 #define RTA_ALIGNTO 4U
    147 #define RTA_ALIGN(len) (((len) + RTA_ALIGNTO - 1) & ~(RTA_ALIGNTO - 1))
    148 #define RTA_OK(rta,len) ((len) >= (int) sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
    149 #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr *) (((char *) (rta)) + RTA_ALIGN((rta)->rta_len)))
    150 #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
    151 #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
    152 #define RTA_DATA(rta) ((void *) (((char *) (rta)) + RTA_LENGTH(0)))
    153 #define RTA_PAYLOAD(rta) ((int) ((rta)->rta_len) - RTA_LENGTH(0))
    154 struct rtmsg {
    155   unsigned char rtm_family;
    156   unsigned char rtm_dst_len;
    157   unsigned char rtm_src_len;
    158   unsigned char rtm_tos;
    159   unsigned char rtm_table;
    160   unsigned char rtm_protocol;
    161   unsigned char rtm_scope;
    162   unsigned char rtm_type;
    163   unsigned rtm_flags;
    164 };
    165 enum {
    166   RTN_UNSPEC,
    167   RTN_UNICAST,
    168   RTN_LOCAL,
    169   RTN_BROADCAST,
    170   RTN_ANYCAST,
    171   RTN_MULTICAST,
    172   RTN_BLACKHOLE,
    173   RTN_UNREACHABLE,
    174   RTN_PROHIBIT,
    175   RTN_THROW,
    176   RTN_NAT,
    177   RTN_XRESOLVE,
    178   __RTN_MAX
    179 };
    180 #define RTN_MAX (__RTN_MAX - 1)
    181 #define RTPROT_UNSPEC 0
    182 #define RTPROT_REDIRECT 1
    183 #define RTPROT_KERNEL 2
    184 #define RTPROT_BOOT 3
    185 #define RTPROT_STATIC 4
    186 #define RTPROT_GATED 8
    187 #define RTPROT_RA 9
    188 #define RTPROT_MRT 10
    189 #define RTPROT_ZEBRA 11
    190 #define RTPROT_BIRD 12
    191 #define RTPROT_DNROUTED 13
    192 #define RTPROT_XORP 14
    193 #define RTPROT_NTK 15
    194 #define RTPROT_DHCP 16
    195 #define RTPROT_MROUTED 17
    196 #define RTPROT_BABEL 42
    197 enum rt_scope_t {
    198   RT_SCOPE_UNIVERSE = 0,
    199   RT_SCOPE_SITE = 200,
    200   RT_SCOPE_LINK = 253,
    201   RT_SCOPE_HOST = 254,
    202   RT_SCOPE_NOWHERE = 255
    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 #define RTM_F_LOOKUP_TABLE 0x1000
    209 #define RTM_F_FIB_MATCH 0x2000
    210 enum rt_class_t {
    211   RT_TABLE_UNSPEC = 0,
    212   RT_TABLE_COMPAT = 252,
    213   RT_TABLE_DEFAULT = 253,
    214   RT_TABLE_MAIN = 254,
    215   RT_TABLE_LOCAL = 255,
    216   RT_TABLE_MAX = 0xFFFFFFFF
    217 };
    218 enum rtattr_type_t {
    219   RTA_UNSPEC,
    220   RTA_DST,
    221   RTA_SRC,
    222   RTA_IIF,
    223   RTA_OIF,
    224   RTA_GATEWAY,
    225   RTA_PRIORITY,
    226   RTA_PREFSRC,
    227   RTA_METRICS,
    228   RTA_MULTIPATH,
    229   RTA_PROTOINFO,
    230   RTA_FLOW,
    231   RTA_CACHEINFO,
    232   RTA_SESSION,
    233   RTA_MP_ALGO,
    234   RTA_TABLE,
    235   RTA_MARK,
    236   RTA_MFC_STATS,
    237   RTA_VIA,
    238   RTA_NEWDST,
    239   RTA_PREF,
    240   RTA_ENCAP_TYPE,
    241   RTA_ENCAP,
    242   RTA_EXPIRES,
    243   RTA_PAD,
    244   RTA_UID,
    245   RTA_TTL_PROPAGATE,
    246   __RTA_MAX
    247 };
    248 #define RTA_MAX (__RTA_MAX - 1)
    249 #define RTM_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
    250 #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct rtmsg))
    251 struct rtnexthop {
    252   unsigned short rtnh_len;
    253   unsigned char rtnh_flags;
    254   unsigned char rtnh_hops;
    255   int rtnh_ifindex;
    256 };
    257 #define RTNH_F_DEAD 1
    258 #define RTNH_F_PERVASIVE 2
    259 #define RTNH_F_ONLINK 4
    260 #define RTNH_F_OFFLOAD 8
    261 #define RTNH_F_LINKDOWN 16
    262 #define RTNH_F_UNRESOLVED 32
    263 #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
    264 #define RTNH_ALIGNTO 4
    265 #define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
    266 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int) (rtnh)->rtnh_len) <= (len))
    267 #define RTNH_NEXT(rtnh) ((struct rtnexthop *) (((char *) (rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
    268 #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
    269 #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
    270 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
    271 struct rtvia {
    272   __kernel_sa_family_t rtvia_family;
    273   __u8 rtvia_addr[0];
    274 };
    275 struct rta_cacheinfo {
    276   __u32 rta_clntref;
    277   __u32 rta_lastuse;
    278   __s32 rta_expires;
    279   __u32 rta_error;
    280   __u32 rta_used;
    281 #define RTNETLINK_HAVE_PEERINFO 1
    282   __u32 rta_id;
    283   __u32 rta_ts;
    284   __u32 rta_tsage;
    285 };
    286 enum {
    287   RTAX_UNSPEC,
    288 #define RTAX_UNSPEC RTAX_UNSPEC
    289   RTAX_LOCK,
    290 #define RTAX_LOCK RTAX_LOCK
    291   RTAX_MTU,
    292 #define RTAX_MTU RTAX_MTU
    293   RTAX_WINDOW,
    294 #define RTAX_WINDOW RTAX_WINDOW
    295   RTAX_RTT,
    296 #define RTAX_RTT RTAX_RTT
    297   RTAX_RTTVAR,
    298 #define RTAX_RTTVAR RTAX_RTTVAR
    299   RTAX_SSTHRESH,
    300 #define RTAX_SSTHRESH RTAX_SSTHRESH
    301   RTAX_CWND,
    302 #define RTAX_CWND RTAX_CWND
    303   RTAX_ADVMSS,
    304 #define RTAX_ADVMSS RTAX_ADVMSS
    305   RTAX_REORDERING,
    306 #define RTAX_REORDERING RTAX_REORDERING
    307   RTAX_HOPLIMIT,
    308 #define RTAX_HOPLIMIT RTAX_HOPLIMIT
    309   RTAX_INITCWND,
    310 #define RTAX_INITCWND RTAX_INITCWND
    311   RTAX_FEATURES,
    312 #define RTAX_FEATURES RTAX_FEATURES
    313   RTAX_RTO_MIN,
    314 #define RTAX_RTO_MIN RTAX_RTO_MIN
    315   RTAX_INITRWND,
    316 #define RTAX_INITRWND RTAX_INITRWND
    317   RTAX_QUICKACK,
    318 #define RTAX_QUICKACK RTAX_QUICKACK
    319   RTAX_CC_ALGO,
    320 #define RTAX_CC_ALGO RTAX_CC_ALGO
    321   RTAX_FASTOPEN_NO_COOKIE,
    322 #define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
    323   __RTAX_MAX
    324 };
    325 #define RTAX_MAX (__RTAX_MAX - 1)
    326 #define RTAX_FEATURE_ECN (1 << 0)
    327 #define RTAX_FEATURE_SACK (1 << 1)
    328 #define RTAX_FEATURE_TIMESTAMP (1 << 2)
    329 #define RTAX_FEATURE_ALLFRAG (1 << 3)
    330 #define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
    331 struct rta_session {
    332   __u8 proto;
    333   __u8 pad1;
    334   __u16 pad2;
    335   union {
    336     struct {
    337       __u16 sport;
    338       __u16 dport;
    339     } ports;
    340     struct {
    341       __u8 type;
    342       __u8 code;
    343       __u16 ident;
    344     } icmpt;
    345     __u32 spi;
    346   } u;
    347 };
    348 struct rta_mfc_stats {
    349   __u64 mfcs_packets;
    350   __u64 mfcs_bytes;
    351   __u64 mfcs_wrong_if;
    352 };
    353 struct rtgenmsg {
    354   unsigned char rtgen_family;
    355 };
    356 struct ifinfomsg {
    357   unsigned char ifi_family;
    358   unsigned char __ifi_pad;
    359   unsigned short ifi_type;
    360   int ifi_index;
    361   unsigned ifi_flags;
    362   unsigned ifi_change;
    363 };
    364 struct prefixmsg {
    365   unsigned char prefix_family;
    366   unsigned char prefix_pad1;
    367   unsigned short prefix_pad2;
    368   int prefix_ifindex;
    369   unsigned char prefix_type;
    370   unsigned char prefix_len;
    371   unsigned char prefix_flags;
    372   unsigned char prefix_pad3;
    373 };
    374 enum {
    375   PREFIX_UNSPEC,
    376   PREFIX_ADDRESS,
    377   PREFIX_CACHEINFO,
    378   __PREFIX_MAX
    379 };
    380 #define PREFIX_MAX (__PREFIX_MAX - 1)
    381 struct prefix_cacheinfo {
    382   __u32 preferred_time;
    383   __u32 valid_time;
    384 };
    385 struct tcmsg {
    386   unsigned char tcm_family;
    387   unsigned char tcm__pad1;
    388   unsigned short tcm__pad2;
    389   int tcm_ifindex;
    390   __u32 tcm_handle;
    391   __u32 tcm_parent;
    392   __u32 tcm_info;
    393 };
    394 enum {
    395   TCA_UNSPEC,
    396   TCA_KIND,
    397   TCA_OPTIONS,
    398   TCA_STATS,
    399   TCA_XSTATS,
    400   TCA_RATE,
    401   TCA_FCNT,
    402   TCA_STATS2,
    403   TCA_STAB,
    404   TCA_PAD,
    405   TCA_DUMP_INVISIBLE,
    406   TCA_CHAIN,
    407   TCA_HW_OFFLOAD,
    408   __TCA_MAX
    409 };
    410 #define TCA_MAX (__TCA_MAX - 1)
    411 #define TCA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
    412 #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcmsg))
    413 struct nduseroptmsg {
    414   unsigned char nduseropt_family;
    415   unsigned char nduseropt_pad1;
    416   unsigned short nduseropt_opts_len;
    417   int nduseropt_ifindex;
    418   __u8 nduseropt_icmp_type;
    419   __u8 nduseropt_icmp_code;
    420   unsigned short nduseropt_pad2;
    421   unsigned int nduseropt_pad3;
    422 };
    423 enum {
    424   NDUSEROPT_UNSPEC,
    425   NDUSEROPT_SRCADDR,
    426   __NDUSEROPT_MAX
    427 };
    428 #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
    429 #define RTMGRP_LINK 1
    430 #define RTMGRP_NOTIFY 2
    431 #define RTMGRP_NEIGH 4
    432 #define RTMGRP_TC 8
    433 #define RTMGRP_IPV4_IFADDR 0x10
    434 #define RTMGRP_IPV4_MROUTE 0x20
    435 #define RTMGRP_IPV4_ROUTE 0x40
    436 #define RTMGRP_IPV4_RULE 0x80
    437 #define RTMGRP_IPV6_IFADDR 0x100
    438 #define RTMGRP_IPV6_MROUTE 0x200
    439 #define RTMGRP_IPV6_ROUTE 0x400
    440 #define RTMGRP_IPV6_IFINFO 0x800
    441 #define RTMGRP_DECnet_IFADDR 0x1000
    442 #define RTMGRP_DECnet_ROUTE 0x4000
    443 #define RTMGRP_IPV6_PREFIX 0x20000
    444 enum rtnetlink_groups {
    445   RTNLGRP_NONE,
    446 #define RTNLGRP_NONE RTNLGRP_NONE
    447   RTNLGRP_LINK,
    448 #define RTNLGRP_LINK RTNLGRP_LINK
    449   RTNLGRP_NOTIFY,
    450 #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
    451   RTNLGRP_NEIGH,
    452 #define RTNLGRP_NEIGH RTNLGRP_NEIGH
    453   RTNLGRP_TC,
    454 #define RTNLGRP_TC RTNLGRP_TC
    455   RTNLGRP_IPV4_IFADDR,
    456 #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
    457   RTNLGRP_IPV4_MROUTE,
    458 #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
    459   RTNLGRP_IPV4_ROUTE,
    460 #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
    461   RTNLGRP_IPV4_RULE,
    462 #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
    463   RTNLGRP_IPV6_IFADDR,
    464 #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
    465   RTNLGRP_IPV6_MROUTE,
    466 #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
    467   RTNLGRP_IPV6_ROUTE,
    468 #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
    469   RTNLGRP_IPV6_IFINFO,
    470 #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
    471   RTNLGRP_DECnet_IFADDR,
    472 #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
    473   RTNLGRP_NOP2,
    474   RTNLGRP_DECnet_ROUTE,
    475 #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
    476   RTNLGRP_DECnet_RULE,
    477 #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
    478   RTNLGRP_NOP4,
    479   RTNLGRP_IPV6_PREFIX,
    480 #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
    481   RTNLGRP_IPV6_RULE,
    482 #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
    483   RTNLGRP_ND_USEROPT,
    484 #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
    485   RTNLGRP_PHONET_IFADDR,
    486 #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
    487   RTNLGRP_PHONET_ROUTE,
    488 #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
    489   RTNLGRP_DCB,
    490 #define RTNLGRP_DCB RTNLGRP_DCB
    491   RTNLGRP_IPV4_NETCONF,
    492 #define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
    493   RTNLGRP_IPV6_NETCONF,
    494 #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
    495   RTNLGRP_MDB,
    496 #define RTNLGRP_MDB RTNLGRP_MDB
    497   RTNLGRP_MPLS_ROUTE,
    498 #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
    499   RTNLGRP_NSID,
    500 #define RTNLGRP_NSID RTNLGRP_NSID
    501   RTNLGRP_MPLS_NETCONF,
    502 #define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
    503   RTNLGRP_IPV4_MROUTE_R,
    504 #define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
    505   RTNLGRP_IPV6_MROUTE_R,
    506 #define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
    507   __RTNLGRP_MAX
    508 };
    509 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
    510 struct tcamsg {
    511   unsigned char tca_family;
    512   unsigned char tca__pad1;
    513   unsigned short tca__pad2;
    514 };
    515 enum {
    516   TCA_ROOT_UNSPEC,
    517   TCA_ROOT_TAB,
    518 #define TCA_ACT_TAB TCA_ROOT_TAB
    519 #define TCAA_MAX TCA_ROOT_TAB
    520   TCA_ROOT_FLAGS,
    521   TCA_ROOT_COUNT,
    522   TCA_ROOT_TIME_DELTA,
    523   __TCA_ROOT_MAX,
    524 #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
    525 };
    526 #define TA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
    527 #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcamsg))
    528 #define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
    529 #define RTEXT_FILTER_VF (1 << 0)
    530 #define RTEXT_FILTER_BRVLAN (1 << 1)
    531 #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
    532 #define RTEXT_FILTER_SKIP_STATS (1 << 3)
    533 #endif
    534