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