1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef _UAPI__LINUX_RTNETLINK_H 7 #define _UAPI__LINUX_RTNETLINK_H 8 #include <linux/types.h> 9 #include <linux/netlink.h> 10 #include <linux/if_link.h> 11 #include <linux/if_addr.h> 12 #include <linux/neighbour.h> 13 #define RTNL_FAMILY_IPMR 128 14 #define RTNL_FAMILY_IP6MR 129 15 #define RTNL_FAMILY_MAX 129 16 enum { 17 RTM_BASE = 16, 18 #define RTM_BASE RTM_BASE 19 RTM_NEWLINK = 16, 20 #define RTM_NEWLINK RTM_NEWLINK 21 RTM_DELLINK, 22 #define RTM_DELLINK RTM_DELLINK 23 RTM_GETLINK, 24 #define RTM_GETLINK RTM_GETLINK 25 RTM_SETLINK, 26 #define RTM_SETLINK RTM_SETLINK 27 RTM_NEWADDR = 20, 28 #define RTM_NEWADDR RTM_NEWADDR 29 RTM_DELADDR, 30 #define RTM_DELADDR RTM_DELADDR 31 RTM_GETADDR, 32 #define RTM_GETADDR RTM_GETADDR 33 RTM_NEWROUTE = 24, 34 #define RTM_NEWROUTE RTM_NEWROUTE 35 RTM_DELROUTE, 36 #define RTM_DELROUTE RTM_DELROUTE 37 RTM_GETROUTE, 38 #define RTM_GETROUTE RTM_GETROUTE 39 RTM_NEWNEIGH = 28, 40 #define RTM_NEWNEIGH RTM_NEWNEIGH 41 RTM_DELNEIGH, 42 #define RTM_DELNEIGH RTM_DELNEIGH 43 RTM_GETNEIGH, 44 #define RTM_GETNEIGH RTM_GETNEIGH 45 RTM_NEWRULE = 32, 46 #define RTM_NEWRULE RTM_NEWRULE 47 RTM_DELRULE, 48 #define RTM_DELRULE RTM_DELRULE 49 RTM_GETRULE, 50 #define RTM_GETRULE RTM_GETRULE 51 RTM_NEWQDISC = 36, 52 #define RTM_NEWQDISC RTM_NEWQDISC 53 RTM_DELQDISC, 54 #define RTM_DELQDISC RTM_DELQDISC 55 RTM_GETQDISC, 56 #define RTM_GETQDISC RTM_GETQDISC 57 RTM_NEWTCLASS = 40, 58 #define RTM_NEWTCLASS RTM_NEWTCLASS 59 RTM_DELTCLASS, 60 #define RTM_DELTCLASS RTM_DELTCLASS 61 RTM_GETTCLASS, 62 #define RTM_GETTCLASS RTM_GETTCLASS 63 RTM_NEWTFILTER = 44, 64 #define RTM_NEWTFILTER RTM_NEWTFILTER 65 RTM_DELTFILTER, 66 #define RTM_DELTFILTER RTM_DELTFILTER 67 RTM_GETTFILTER, 68 #define RTM_GETTFILTER RTM_GETTFILTER 69 RTM_NEWACTION = 48, 70 #define RTM_NEWACTION RTM_NEWACTION 71 RTM_DELACTION, 72 #define RTM_DELACTION RTM_DELACTION 73 RTM_GETACTION, 74 #define RTM_GETACTION RTM_GETACTION 75 RTM_NEWPREFIX = 52, 76 #define RTM_NEWPREFIX RTM_NEWPREFIX 77 RTM_GETMULTICAST = 58, 78 #define RTM_GETMULTICAST RTM_GETMULTICAST 79 RTM_GETANYCAST = 62, 80 #define RTM_GETANYCAST RTM_GETANYCAST 81 RTM_NEWNEIGHTBL = 64, 82 #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL 83 RTM_GETNEIGHTBL = 66, 84 #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL 85 RTM_SETNEIGHTBL, 86 #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL 87 RTM_NEWNDUSEROPT = 68, 88 #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT 89 RTM_NEWADDRLABEL = 72, 90 #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL 91 RTM_DELADDRLABEL, 92 #define RTM_DELADDRLABEL RTM_DELADDRLABEL 93 RTM_GETADDRLABEL, 94 #define RTM_GETADDRLABEL RTM_GETADDRLABEL 95 RTM_GETDCB = 78, 96 #define RTM_GETDCB RTM_GETDCB 97 RTM_SETDCB, 98 #define RTM_SETDCB RTM_SETDCB 99 RTM_NEWNETCONF = 80, 100 #define RTM_NEWNETCONF RTM_NEWNETCONF 101 RTM_DELNETCONF, 102 #define RTM_DELNETCONF RTM_DELNETCONF 103 RTM_GETNETCONF = 82, 104 #define RTM_GETNETCONF RTM_GETNETCONF 105 RTM_NEWMDB = 84, 106 #define RTM_NEWMDB RTM_NEWMDB 107 RTM_DELMDB = 85, 108 #define RTM_DELMDB RTM_DELMDB 109 RTM_GETMDB = 86, 110 #define RTM_GETMDB RTM_GETMDB 111 RTM_NEWNSID = 88, 112 #define RTM_NEWNSID RTM_NEWNSID 113 RTM_DELNSID = 89, 114 #define RTM_DELNSID RTM_DELNSID 115 RTM_GETNSID = 90, 116 #define RTM_GETNSID RTM_GETNSID 117 RTM_NEWSTATS = 92, 118 #define RTM_NEWSTATS RTM_NEWSTATS 119 RTM_GETSTATS = 94, 120 #define RTM_GETSTATS RTM_GETSTATS 121 RTM_NEWCACHEREPORT = 96, 122 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT 123 RTM_NEWCHAIN = 100, 124 #define RTM_NEWCHAIN RTM_NEWCHAIN 125 RTM_DELCHAIN, 126 #define RTM_DELCHAIN RTM_DELCHAIN 127 RTM_GETCHAIN, 128 #define RTM_GETCHAIN RTM_GETCHAIN 129 __RTM_MAX, 130 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) 131 }; 132 #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE) 133 #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2) 134 #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2) 135 struct rtattr { 136 unsigned short rta_len; 137 unsigned short rta_type; 138 }; 139 #define RTA_ALIGNTO 4U 140 #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) 141 #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \ 142 (rta)->rta_len >= sizeof(struct rtattr) && \ 143 (rta)->rta_len <= (len)) 144 #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), \ 145 (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 #define RTPROT_BGP 186 194 #define RTPROT_ISIS 187 195 #define RTPROT_OSPF 188 196 #define RTPROT_RIP 189 197 #define RTPROT_EIGRP 192 198 enum rt_scope_t { 199 RT_SCOPE_UNIVERSE=0, 200 RT_SCOPE_SITE=200, 201 RT_SCOPE_LINK=253, 202 RT_SCOPE_HOST=254, 203 RT_SCOPE_NOWHERE=255 204 }; 205 #define RTM_F_NOTIFY 0x100 206 #define RTM_F_CLONED 0x200 207 #define RTM_F_EQUALIZE 0x400 208 #define RTM_F_PREFIX 0x800 209 #define RTM_F_LOOKUP_TABLE 0x1000 210 #define RTM_F_FIB_MATCH 0x2000 211 enum rt_class_t { 212 RT_TABLE_UNSPEC=0, 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 enum rtattr_type_t { 220 RTA_UNSPEC, 221 RTA_DST, 222 RTA_SRC, 223 RTA_IIF, 224 RTA_OIF, 225 RTA_GATEWAY, 226 RTA_PRIORITY, 227 RTA_PREFSRC, 228 RTA_METRICS, 229 RTA_MULTIPATH, 230 RTA_PROTOINFO, 231 RTA_FLOW, 232 RTA_CACHEINFO, 233 RTA_SESSION, 234 RTA_MP_ALGO, 235 RTA_TABLE, 236 RTA_MARK, 237 RTA_MFC_STATS, 238 RTA_VIA, 239 RTA_NEWDST, 240 RTA_PREF, 241 RTA_ENCAP_TYPE, 242 RTA_ENCAP, 243 RTA_EXPIRES, 244 RTA_PAD, 245 RTA_UID, 246 RTA_TTL_PROPAGATE, 247 RTA_IP_PROTO, 248 RTA_SPORT, 249 RTA_DPORT, 250 __RTA_MAX 251 }; 252 #define RTA_MAX (__RTA_MAX - 1) 253 #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) 254 #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) 255 struct rtnexthop { 256 unsigned short rtnh_len; 257 unsigned char rtnh_flags; 258 unsigned char rtnh_hops; 259 int rtnh_ifindex; 260 }; 261 #define RTNH_F_DEAD 1 262 #define RTNH_F_PERVASIVE 2 263 #define RTNH_F_ONLINK 4 264 #define RTNH_F_OFFLOAD 8 265 #define RTNH_F_LINKDOWN 16 266 #define RTNH_F_UNRESOLVED 32 267 #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD) 268 #define RTNH_ALIGNTO 4 269 #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) ) 270 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \ 271 ((int)(rtnh)->rtnh_len) <= (len)) 272 #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) 273 #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len)) 274 #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len)) 275 #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) 276 struct rtvia { 277 __kernel_sa_family_t rtvia_family; 278 __u8 rtvia_addr[0]; 279 }; 280 struct rta_cacheinfo { 281 __u32 rta_clntref; 282 __u32 rta_lastuse; 283 __s32 rta_expires; 284 __u32 rta_error; 285 __u32 rta_used; 286 #define RTNETLINK_HAVE_PEERINFO 1 287 __u32 rta_id; 288 __u32 rta_ts; 289 __u32 rta_tsage; 290 }; 291 enum { 292 RTAX_UNSPEC, 293 #define RTAX_UNSPEC RTAX_UNSPEC 294 RTAX_LOCK, 295 #define RTAX_LOCK RTAX_LOCK 296 RTAX_MTU, 297 #define RTAX_MTU RTAX_MTU 298 RTAX_WINDOW, 299 #define RTAX_WINDOW RTAX_WINDOW 300 RTAX_RTT, 301 #define RTAX_RTT RTAX_RTT 302 RTAX_RTTVAR, 303 #define RTAX_RTTVAR RTAX_RTTVAR 304 RTAX_SSTHRESH, 305 #define RTAX_SSTHRESH RTAX_SSTHRESH 306 RTAX_CWND, 307 #define RTAX_CWND RTAX_CWND 308 RTAX_ADVMSS, 309 #define RTAX_ADVMSS RTAX_ADVMSS 310 RTAX_REORDERING, 311 #define RTAX_REORDERING RTAX_REORDERING 312 RTAX_HOPLIMIT, 313 #define RTAX_HOPLIMIT RTAX_HOPLIMIT 314 RTAX_INITCWND, 315 #define RTAX_INITCWND RTAX_INITCWND 316 RTAX_FEATURES, 317 #define RTAX_FEATURES RTAX_FEATURES 318 RTAX_RTO_MIN, 319 #define RTAX_RTO_MIN RTAX_RTO_MIN 320 RTAX_INITRWND, 321 #define RTAX_INITRWND RTAX_INITRWND 322 RTAX_QUICKACK, 323 #define RTAX_QUICKACK RTAX_QUICKACK 324 RTAX_CC_ALGO, 325 #define RTAX_CC_ALGO RTAX_CC_ALGO 326 RTAX_FASTOPEN_NO_COOKIE, 327 #define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE 328 __RTAX_MAX 329 }; 330 #define RTAX_MAX (__RTAX_MAX - 1) 331 #define RTAX_FEATURE_ECN (1 << 0) 332 #define RTAX_FEATURE_SACK (1 << 1) 333 #define RTAX_FEATURE_TIMESTAMP (1 << 2) 334 #define RTAX_FEATURE_ALLFRAG (1 << 3) 335 #define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \ 336 RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG) 337 struct rta_session { 338 __u8 proto; 339 __u8 pad1; 340 __u16 pad2; 341 union { 342 struct { 343 __u16 sport; 344 __u16 dport; 345 } ports; 346 struct { 347 __u8 type; 348 __u8 code; 349 __u16 ident; 350 } icmpt; 351 __u32 spi; 352 } u; 353 }; 354 struct rta_mfc_stats { 355 __u64 mfcs_packets; 356 __u64 mfcs_bytes; 357 __u64 mfcs_wrong_if; 358 }; 359 struct rtgenmsg { 360 unsigned char rtgen_family; 361 }; 362 struct ifinfomsg { 363 unsigned char ifi_family; 364 unsigned char __ifi_pad; 365 unsigned short ifi_type; 366 int ifi_index; 367 unsigned ifi_flags; 368 unsigned ifi_change; 369 }; 370 struct prefixmsg { 371 unsigned char prefix_family; 372 unsigned char prefix_pad1; 373 unsigned short prefix_pad2; 374 int prefix_ifindex; 375 unsigned char prefix_type; 376 unsigned char prefix_len; 377 unsigned char prefix_flags; 378 unsigned char prefix_pad3; 379 }; 380 enum 381 { 382 PREFIX_UNSPEC, 383 PREFIX_ADDRESS, 384 PREFIX_CACHEINFO, 385 __PREFIX_MAX 386 }; 387 #define PREFIX_MAX (__PREFIX_MAX - 1) 388 struct prefix_cacheinfo { 389 __u32 preferred_time; 390 __u32 valid_time; 391 }; 392 struct tcmsg { 393 unsigned char tcm_family; 394 unsigned char tcm__pad1; 395 unsigned short tcm__pad2; 396 int tcm_ifindex; 397 __u32 tcm_handle; 398 __u32 tcm_parent; 399 #define tcm_block_index tcm_parent 400 __u32 tcm_info; 401 }; 402 #define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU) 403 enum { 404 TCA_UNSPEC, 405 TCA_KIND, 406 TCA_OPTIONS, 407 TCA_STATS, 408 TCA_XSTATS, 409 TCA_RATE, 410 TCA_FCNT, 411 TCA_STATS2, 412 TCA_STAB, 413 TCA_PAD, 414 TCA_DUMP_INVISIBLE, 415 TCA_CHAIN, 416 TCA_HW_OFFLOAD, 417 TCA_INGRESS_BLOCK, 418 TCA_EGRESS_BLOCK, 419 __TCA_MAX 420 }; 421 #define TCA_MAX (__TCA_MAX - 1) 422 #define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg)))) 423 #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg)) 424 struct nduseroptmsg { 425 unsigned char nduseropt_family; 426 unsigned char nduseropt_pad1; 427 unsigned short nduseropt_opts_len; 428 int nduseropt_ifindex; 429 __u8 nduseropt_icmp_type; 430 __u8 nduseropt_icmp_code; 431 unsigned short nduseropt_pad2; 432 unsigned int nduseropt_pad3; 433 434 }; 435 enum { 436 NDUSEROPT_UNSPEC, 437 NDUSEROPT_SRCADDR, 438 __NDUSEROPT_MAX 439 }; 440 #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1) 441 #ifndef __KERNEL__ 442 #define RTMGRP_LINK 1 443 #define RTMGRP_NOTIFY 2 444 #define RTMGRP_NEIGH 4 445 #define RTMGRP_TC 8 446 #define RTMGRP_IPV4_IFADDR 0x10 447 #define RTMGRP_IPV4_MROUTE 0x20 448 #define RTMGRP_IPV4_ROUTE 0x40 449 #define RTMGRP_IPV4_RULE 0x80 450 #define RTMGRP_IPV6_IFADDR 0x100 451 #define RTMGRP_IPV6_MROUTE 0x200 452 #define RTMGRP_IPV6_ROUTE 0x400 453 #define RTMGRP_IPV6_IFINFO 0x800 454 #define RTMGRP_DECnet_IFADDR 0x1000 455 #define RTMGRP_DECnet_ROUTE 0x4000 456 #define RTMGRP_IPV6_PREFIX 0x20000 457 #endif 458 enum rtnetlink_groups { 459 RTNLGRP_NONE, 460 #define RTNLGRP_NONE RTNLGRP_NONE 461 RTNLGRP_LINK, 462 #define RTNLGRP_LINK RTNLGRP_LINK 463 RTNLGRP_NOTIFY, 464 #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY 465 RTNLGRP_NEIGH, 466 #define RTNLGRP_NEIGH RTNLGRP_NEIGH 467 RTNLGRP_TC, 468 #define RTNLGRP_TC RTNLGRP_TC 469 RTNLGRP_IPV4_IFADDR, 470 #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR 471 RTNLGRP_IPV4_MROUTE, 472 #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE 473 RTNLGRP_IPV4_ROUTE, 474 #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE 475 RTNLGRP_IPV4_RULE, 476 #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE 477 RTNLGRP_IPV6_IFADDR, 478 #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR 479 RTNLGRP_IPV6_MROUTE, 480 #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE 481 RTNLGRP_IPV6_ROUTE, 482 #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE 483 RTNLGRP_IPV6_IFINFO, 484 #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO 485 RTNLGRP_DECnet_IFADDR, 486 #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR 487 RTNLGRP_NOP2, 488 RTNLGRP_DECnet_ROUTE, 489 #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE 490 RTNLGRP_DECnet_RULE, 491 #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE 492 RTNLGRP_NOP4, 493 RTNLGRP_IPV6_PREFIX, 494 #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX 495 RTNLGRP_IPV6_RULE, 496 #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE 497 RTNLGRP_ND_USEROPT, 498 #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT 499 RTNLGRP_PHONET_IFADDR, 500 #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR 501 RTNLGRP_PHONET_ROUTE, 502 #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE 503 RTNLGRP_DCB, 504 #define RTNLGRP_DCB RTNLGRP_DCB 505 RTNLGRP_IPV4_NETCONF, 506 #define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF 507 RTNLGRP_IPV6_NETCONF, 508 #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF 509 RTNLGRP_MDB, 510 #define RTNLGRP_MDB RTNLGRP_MDB 511 RTNLGRP_MPLS_ROUTE, 512 #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE 513 RTNLGRP_NSID, 514 #define RTNLGRP_NSID RTNLGRP_NSID 515 RTNLGRP_MPLS_NETCONF, 516 #define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF 517 RTNLGRP_IPV4_MROUTE_R, 518 #define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R 519 RTNLGRP_IPV6_MROUTE_R, 520 #define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R 521 __RTNLGRP_MAX 522 }; 523 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) 524 struct tcamsg { 525 unsigned char tca_family; 526 unsigned char tca__pad1; 527 unsigned short tca__pad2; 528 }; 529 enum { 530 TCA_ROOT_UNSPEC, 531 TCA_ROOT_TAB, 532 #define TCA_ACT_TAB TCA_ROOT_TAB 533 #define TCAA_MAX TCA_ROOT_TAB 534 TCA_ROOT_FLAGS, 535 TCA_ROOT_COUNT, 536 TCA_ROOT_TIME_DELTA, 537 __TCA_ROOT_MAX, 538 #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1) 539 }; 540 #define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg)))) 541 #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg)) 542 #define TCA_FLAG_LARGE_DUMP_ON (1 << 0) 543 #define RTEXT_FILTER_VF (1 << 0) 544 #define RTEXT_FILTER_BRVLAN (1 << 1) 545 #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2) 546 #define RTEXT_FILTER_SKIP_STATS (1 << 3) 547 #endif 548