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_GETNETCONF = 82,
    115 #define RTM_GETNETCONF RTM_GETNETCONF
    116   RTM_NEWMDB = 84,
    117 #define RTM_NEWMDB RTM_NEWMDB
    118   RTM_DELMDB = 85,
    119 #define RTM_DELMDB RTM_DELMDB
    120   RTM_GETMDB = 86,
    121 #define RTM_GETMDB RTM_GETMDB
    122   RTM_NEWNSID = 88,
    123 #define RTM_NEWNSID RTM_NEWNSID
    124   RTM_DELNSID = 89,
    125 #define RTM_DELNSID RTM_DELNSID
    126   RTM_GETNSID = 90,
    127 #define RTM_GETNSID RTM_GETNSID
    128   RTM_NEWSTATS = 92,
    129 #define RTM_NEWSTATS RTM_NEWSTATS
    130   RTM_GETSTATS = 94,
    131 #define RTM_GETSTATS RTM_GETSTATS
    132   __RTM_MAX,
    133 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
    134 };
    135 #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
    136 #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
    137 #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
    138 struct rtattr {
    139   unsigned short rta_len;
    140   unsigned short rta_type;
    141 };
    142 #define RTA_ALIGNTO 4U
    143 #define RTA_ALIGN(len) (((len) + RTA_ALIGNTO - 1) & ~(RTA_ALIGNTO - 1))
    144 #define RTA_OK(rta,len) ((len) >= (int) sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
    145 #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr *) (((char *) (rta)) + RTA_ALIGN((rta)->rta_len)))
    146 #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
    147 #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
    148 #define RTA_DATA(rta) ((void *) (((char *) (rta)) + RTA_LENGTH(0)))
    149 #define RTA_PAYLOAD(rta) ((int) ((rta)->rta_len) - RTA_LENGTH(0))
    150 struct rtmsg {
    151   unsigned char rtm_family;
    152   unsigned char rtm_dst_len;
    153   unsigned char rtm_src_len;
    154   unsigned char rtm_tos;
    155   unsigned char rtm_table;
    156   unsigned char rtm_protocol;
    157   unsigned char rtm_scope;
    158   unsigned char rtm_type;
    159   unsigned rtm_flags;
    160 };
    161 enum {
    162   RTN_UNSPEC,
    163   RTN_UNICAST,
    164   RTN_LOCAL,
    165   RTN_BROADCAST,
    166   RTN_ANYCAST,
    167   RTN_MULTICAST,
    168   RTN_BLACKHOLE,
    169   RTN_UNREACHABLE,
    170   RTN_PROHIBIT,
    171   RTN_THROW,
    172   RTN_NAT,
    173   RTN_XRESOLVE,
    174   __RTN_MAX
    175 };
    176 #define RTN_MAX (__RTN_MAX - 1)
    177 #define RTPROT_UNSPEC 0
    178 #define RTPROT_REDIRECT 1
    179 #define RTPROT_KERNEL 2
    180 #define RTPROT_BOOT 3
    181 #define RTPROT_STATIC 4
    182 #define RTPROT_GATED 8
    183 #define RTPROT_RA 9
    184 #define RTPROT_MRT 10
    185 #define RTPROT_ZEBRA 11
    186 #define RTPROT_BIRD 12
    187 #define RTPROT_DNROUTED 13
    188 #define RTPROT_XORP 14
    189 #define RTPROT_NTK 15
    190 #define RTPROT_DHCP 16
    191 #define RTPROT_MROUTED 17
    192 #define RTPROT_BABEL 42
    193 enum rt_scope_t {
    194   RT_SCOPE_UNIVERSE = 0,
    195   RT_SCOPE_SITE = 200,
    196   RT_SCOPE_LINK = 253,
    197   RT_SCOPE_HOST = 254,
    198   RT_SCOPE_NOWHERE = 255
    199 };
    200 #define RTM_F_NOTIFY 0x100
    201 #define RTM_F_CLONED 0x200
    202 #define RTM_F_EQUALIZE 0x400
    203 #define RTM_F_PREFIX 0x800
    204 #define RTM_F_LOOKUP_TABLE 0x1000
    205 enum rt_class_t {
    206   RT_TABLE_UNSPEC = 0,
    207   RT_TABLE_COMPAT = 252,
    208   RT_TABLE_DEFAULT = 253,
    209   RT_TABLE_MAIN = 254,
    210   RT_TABLE_LOCAL = 255,
    211   RT_TABLE_MAX = 0xFFFFFFFF
    212 };
    213 enum rtattr_type_t {
    214   RTA_UNSPEC,
    215   RTA_DST,
    216   RTA_SRC,
    217   RTA_IIF,
    218   RTA_OIF,
    219   RTA_GATEWAY,
    220   RTA_PRIORITY,
    221   RTA_PREFSRC,
    222   RTA_METRICS,
    223   RTA_MULTIPATH,
    224   RTA_PROTOINFO,
    225   RTA_FLOW,
    226   RTA_CACHEINFO,
    227   RTA_SESSION,
    228   RTA_MP_ALGO,
    229   RTA_TABLE,
    230   RTA_MARK,
    231   RTA_MFC_STATS,
    232   RTA_VIA,
    233   RTA_NEWDST,
    234   RTA_PREF,
    235   RTA_ENCAP_TYPE,
    236   RTA_ENCAP,
    237   RTA_EXPIRES,
    238   RTA_PAD,
    239   RTA_UID,
    240   __RTA_MAX
    241 };
    242 #define RTA_MAX (__RTA_MAX - 1)
    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 struct rtnexthop {
    246   unsigned short rtnh_len;
    247   unsigned char rtnh_flags;
    248   unsigned char rtnh_hops;
    249   int rtnh_ifindex;
    250 };
    251 #define RTNH_F_DEAD 1
    252 #define RTNH_F_PERVASIVE 2
    253 #define RTNH_F_ONLINK 4
    254 #define RTNH_F_OFFLOAD 8
    255 #define RTNH_F_LINKDOWN 16
    256 #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
    257 #define RTNH_ALIGNTO 4
    258 #define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
    259 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int) (rtnh)->rtnh_len) <= (len))
    260 #define RTNH_NEXT(rtnh) ((struct rtnexthop *) (((char *) (rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
    261 #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
    262 #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
    263 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
    264 struct rtvia {
    265   __kernel_sa_family_t rtvia_family;
    266   __u8 rtvia_addr[0];
    267 };
    268 struct rta_cacheinfo {
    269   __u32 rta_clntref;
    270   __u32 rta_lastuse;
    271   __s32 rta_expires;
    272   __u32 rta_error;
    273   __u32 rta_used;
    274 #define RTNETLINK_HAVE_PEERINFO 1
    275   __u32 rta_id;
    276   __u32 rta_ts;
    277   __u32 rta_tsage;
    278 };
    279 enum {
    280   RTAX_UNSPEC,
    281 #define RTAX_UNSPEC RTAX_UNSPEC
    282   RTAX_LOCK,
    283 #define RTAX_LOCK RTAX_LOCK
    284   RTAX_MTU,
    285 #define RTAX_MTU RTAX_MTU
    286   RTAX_WINDOW,
    287 #define RTAX_WINDOW RTAX_WINDOW
    288   RTAX_RTT,
    289 #define RTAX_RTT RTAX_RTT
    290   RTAX_RTTVAR,
    291 #define RTAX_RTTVAR RTAX_RTTVAR
    292   RTAX_SSTHRESH,
    293 #define RTAX_SSTHRESH RTAX_SSTHRESH
    294   RTAX_CWND,
    295 #define RTAX_CWND RTAX_CWND
    296   RTAX_ADVMSS,
    297 #define RTAX_ADVMSS RTAX_ADVMSS
    298   RTAX_REORDERING,
    299 #define RTAX_REORDERING RTAX_REORDERING
    300   RTAX_HOPLIMIT,
    301 #define RTAX_HOPLIMIT RTAX_HOPLIMIT
    302   RTAX_INITCWND,
    303 #define RTAX_INITCWND RTAX_INITCWND
    304   RTAX_FEATURES,
    305 #define RTAX_FEATURES RTAX_FEATURES
    306   RTAX_RTO_MIN,
    307 #define RTAX_RTO_MIN RTAX_RTO_MIN
    308   RTAX_INITRWND,
    309 #define RTAX_INITRWND RTAX_INITRWND
    310   RTAX_QUICKACK,
    311 #define RTAX_QUICKACK RTAX_QUICKACK
    312   RTAX_CC_ALGO,
    313 #define RTAX_CC_ALGO RTAX_CC_ALGO
    314   __RTAX_MAX
    315 };
    316 #define RTAX_MAX (__RTAX_MAX - 1)
    317 #define RTAX_FEATURE_ECN (1 << 0)
    318 #define RTAX_FEATURE_SACK (1 << 1)
    319 #define RTAX_FEATURE_TIMESTAMP (1 << 2)
    320 #define RTAX_FEATURE_ALLFRAG (1 << 3)
    321 #define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
    322 struct rta_session {
    323   __u8 proto;
    324   __u8 pad1;
    325   __u16 pad2;
    326   union {
    327     struct {
    328       __u16 sport;
    329       __u16 dport;
    330     } ports;
    331     struct {
    332       __u8 type;
    333       __u8 code;
    334       __u16 ident;
    335     } icmpt;
    336     __u32 spi;
    337   } u;
    338 };
    339 struct rta_mfc_stats {
    340   __u64 mfcs_packets;
    341   __u64 mfcs_bytes;
    342   __u64 mfcs_wrong_if;
    343 };
    344 struct rtgenmsg {
    345   unsigned char rtgen_family;
    346 };
    347 struct ifinfomsg {
    348   unsigned char ifi_family;
    349   unsigned char __ifi_pad;
    350   unsigned short ifi_type;
    351   int ifi_index;
    352   unsigned ifi_flags;
    353   unsigned ifi_change;
    354 };
    355 struct prefixmsg {
    356   unsigned char prefix_family;
    357   unsigned char prefix_pad1;
    358   unsigned short prefix_pad2;
    359   int prefix_ifindex;
    360   unsigned char prefix_type;
    361   unsigned char prefix_len;
    362   unsigned char prefix_flags;
    363   unsigned char prefix_pad3;
    364 };
    365 enum {
    366   PREFIX_UNSPEC,
    367   PREFIX_ADDRESS,
    368   PREFIX_CACHEINFO,
    369   __PREFIX_MAX
    370 };
    371 #define PREFIX_MAX (__PREFIX_MAX - 1)
    372 struct prefix_cacheinfo {
    373   __u32 preferred_time;
    374   __u32 valid_time;
    375 };
    376 struct tcmsg {
    377   unsigned char tcm_family;
    378   unsigned char tcm__pad1;
    379   unsigned short tcm__pad2;
    380   int tcm_ifindex;
    381   __u32 tcm_handle;
    382   __u32 tcm_parent;
    383   __u32 tcm_info;
    384 };
    385 enum {
    386   TCA_UNSPEC,
    387   TCA_KIND,
    388   TCA_OPTIONS,
    389   TCA_STATS,
    390   TCA_XSTATS,
    391   TCA_RATE,
    392   TCA_FCNT,
    393   TCA_STATS2,
    394   TCA_STAB,
    395   TCA_PAD,
    396   __TCA_MAX
    397 };
    398 #define TCA_MAX (__TCA_MAX - 1)
    399 #define TCA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
    400 #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcmsg))
    401 struct nduseroptmsg {
    402   unsigned char nduseropt_family;
    403   unsigned char nduseropt_pad1;
    404   unsigned short nduseropt_opts_len;
    405   int nduseropt_ifindex;
    406   __u8 nduseropt_icmp_type;
    407   __u8 nduseropt_icmp_code;
    408   unsigned short nduseropt_pad2;
    409   unsigned int nduseropt_pad3;
    410 };
    411 enum {
    412   NDUSEROPT_UNSPEC,
    413   NDUSEROPT_SRCADDR,
    414   __NDUSEROPT_MAX
    415 };
    416 #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
    417 #define RTMGRP_LINK 1
    418 #define RTMGRP_NOTIFY 2
    419 #define RTMGRP_NEIGH 4
    420 #define RTMGRP_TC 8
    421 #define RTMGRP_IPV4_IFADDR 0x10
    422 #define RTMGRP_IPV4_MROUTE 0x20
    423 #define RTMGRP_IPV4_ROUTE 0x40
    424 #define RTMGRP_IPV4_RULE 0x80
    425 #define RTMGRP_IPV6_IFADDR 0x100
    426 #define RTMGRP_IPV6_MROUTE 0x200
    427 #define RTMGRP_IPV6_ROUTE 0x400
    428 #define RTMGRP_IPV6_IFINFO 0x800
    429 #define RTMGRP_DECnet_IFADDR 0x1000
    430 #define RTMGRP_DECnet_ROUTE 0x4000
    431 #define RTMGRP_IPV6_PREFIX 0x20000
    432 enum rtnetlink_groups {
    433   RTNLGRP_NONE,
    434 #define RTNLGRP_NONE RTNLGRP_NONE
    435   RTNLGRP_LINK,
    436 #define RTNLGRP_LINK RTNLGRP_LINK
    437   RTNLGRP_NOTIFY,
    438 #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
    439   RTNLGRP_NEIGH,
    440 #define RTNLGRP_NEIGH RTNLGRP_NEIGH
    441   RTNLGRP_TC,
    442 #define RTNLGRP_TC RTNLGRP_TC
    443   RTNLGRP_IPV4_IFADDR,
    444 #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
    445   RTNLGRP_IPV4_MROUTE,
    446 #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
    447   RTNLGRP_IPV4_ROUTE,
    448 #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
    449   RTNLGRP_IPV4_RULE,
    450 #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
    451   RTNLGRP_IPV6_IFADDR,
    452 #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
    453   RTNLGRP_IPV6_MROUTE,
    454 #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
    455   RTNLGRP_IPV6_ROUTE,
    456 #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
    457   RTNLGRP_IPV6_IFINFO,
    458 #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
    459   RTNLGRP_DECnet_IFADDR,
    460 #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
    461   RTNLGRP_NOP2,
    462   RTNLGRP_DECnet_ROUTE,
    463 #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
    464   RTNLGRP_DECnet_RULE,
    465 #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
    466   RTNLGRP_NOP4,
    467   RTNLGRP_IPV6_PREFIX,
    468 #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
    469   RTNLGRP_IPV6_RULE,
    470 #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
    471   RTNLGRP_ND_USEROPT,
    472 #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
    473   RTNLGRP_PHONET_IFADDR,
    474 #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
    475   RTNLGRP_PHONET_ROUTE,
    476 #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
    477   RTNLGRP_DCB,
    478 #define RTNLGRP_DCB RTNLGRP_DCB
    479   RTNLGRP_IPV4_NETCONF,
    480 #define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
    481   RTNLGRP_IPV6_NETCONF,
    482 #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
    483   RTNLGRP_MDB,
    484 #define RTNLGRP_MDB RTNLGRP_MDB
    485   RTNLGRP_MPLS_ROUTE,
    486 #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
    487   RTNLGRP_NSID,
    488 #define RTNLGRP_NSID RTNLGRP_NSID
    489   __RTNLGRP_MAX
    490 };
    491 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
    492 struct tcamsg {
    493   unsigned char tca_family;
    494   unsigned char tca__pad1;
    495   unsigned short tca__pad2;
    496 };
    497 #define TA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
    498 #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcamsg))
    499 #define TCA_ACT_TAB 1
    500 #define TCAA_MAX 1
    501 #define RTEXT_FILTER_VF (1 << 0)
    502 #define RTEXT_FILTER_BRVLAN (1 << 1)
    503 #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
    504 #define RTEXT_FILTER_SKIP_STATS (1 << 3)
    505 #endif
    506