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/netlink.h> 16 17enum { 18 RTM_BASE = 16, 19#define RTM_BASE RTM_BASE 20 21 RTM_NEWLINK = 16, 22#define RTM_NEWLINK RTM_NEWLINK 23 RTM_DELLINK, 24#define RTM_DELLINK RTM_DELLINK 25 RTM_GETLINK, 26#define RTM_GETLINK RTM_GETLINK 27 RTM_SETLINK, 28#define RTM_SETLINK RTM_SETLINK 29 30 RTM_NEWADDR = 20, 31#define RTM_NEWADDR RTM_NEWADDR 32 RTM_DELADDR, 33#define RTM_DELADDR RTM_DELADDR 34 RTM_GETADDR, 35#define RTM_GETADDR RTM_GETADDR 36 37 RTM_NEWROUTE = 24, 38#define RTM_NEWROUTE RTM_NEWROUTE 39 RTM_DELROUTE, 40#define RTM_DELROUTE RTM_DELROUTE 41 RTM_GETROUTE, 42#define RTM_GETROUTE RTM_GETROUTE 43 44 RTM_NEWNEIGH = 28, 45#define RTM_NEWNEIGH RTM_NEWNEIGH 46 RTM_DELNEIGH, 47#define RTM_DELNEIGH RTM_DELNEIGH 48 RTM_GETNEIGH, 49#define RTM_GETNEIGH RTM_GETNEIGH 50 51 RTM_NEWRULE = 32, 52#define RTM_NEWRULE RTM_NEWRULE 53 RTM_DELRULE, 54#define RTM_DELRULE RTM_DELRULE 55 RTM_GETRULE, 56#define RTM_GETRULE RTM_GETRULE 57 58 RTM_NEWQDISC = 36, 59#define RTM_NEWQDISC RTM_NEWQDISC 60 RTM_DELQDISC, 61#define RTM_DELQDISC RTM_DELQDISC 62 RTM_GETQDISC, 63#define RTM_GETQDISC RTM_GETQDISC 64 65 RTM_NEWTCLASS = 40, 66#define RTM_NEWTCLASS RTM_NEWTCLASS 67 RTM_DELTCLASS, 68#define RTM_DELTCLASS RTM_DELTCLASS 69 RTM_GETTCLASS, 70#define RTM_GETTCLASS RTM_GETTCLASS 71 72 RTM_NEWTFILTER = 44, 73#define RTM_NEWTFILTER RTM_NEWTFILTER 74 RTM_DELTFILTER, 75#define RTM_DELTFILTER RTM_DELTFILTER 76 RTM_GETTFILTER, 77#define RTM_GETTFILTER RTM_GETTFILTER 78 79 RTM_NEWACTION = 48, 80#define RTM_NEWACTION RTM_NEWACTION 81 RTM_DELACTION, 82#define RTM_DELACTION RTM_DELACTION 83 RTM_GETACTION, 84#define RTM_GETACTION RTM_GETACTION 85 86 RTM_NEWPREFIX = 52, 87#define RTM_NEWPREFIX RTM_NEWPREFIX 88 RTM_GETPREFIX = 54, 89#define RTM_GETPREFIX RTM_GETPREFIX 90 91 RTM_GETMULTICAST = 58, 92#define RTM_GETMULTICAST RTM_GETMULTICAST 93 94 RTM_GETANYCAST = 62, 95#define RTM_GETANYCAST RTM_GETANYCAST 96 97 RTM_NEWNEIGHTBL = 64, 98#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL 99 RTM_GETNEIGHTBL = 66, 100#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL 101 RTM_SETNEIGHTBL, 102#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL 103 104 __RTM_MAX, 105#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) 106}; 107 108#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE) 109#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2) 110#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2) 111 112struct rtattr 113{ 114 unsigned short rta_len; 115 unsigned short rta_type; 116}; 117 118#define RTA_ALIGNTO 4 119#define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) 120#define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len)) 121#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len))) 122#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len)) 123#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len)) 124#define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0))) 125#define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0)) 126 127struct rtmsg 128{ 129 unsigned char rtm_family; 130 unsigned char rtm_dst_len; 131 unsigned char rtm_src_len; 132 unsigned char rtm_tos; 133 134 unsigned char rtm_table; 135 unsigned char rtm_protocol; 136 unsigned char rtm_scope; 137 unsigned char rtm_type; 138 139 unsigned rtm_flags; 140}; 141 142enum 143{ 144 RTN_UNSPEC, 145 RTN_UNICAST, 146 RTN_LOCAL, 147 RTN_BROADCAST, 148 RTN_ANYCAST, 149 RTN_MULTICAST, 150 RTN_BLACKHOLE, 151 RTN_UNREACHABLE, 152 RTN_PROHIBIT, 153 RTN_THROW, 154 RTN_NAT, 155 RTN_XRESOLVE, 156 __RTN_MAX 157}; 158 159#define RTN_MAX (__RTN_MAX - 1) 160 161#define RTPROT_UNSPEC 0 162#define RTPROT_REDIRECT 1 163#define RTPROT_KERNEL 2 164#define RTPROT_BOOT 3 165#define RTPROT_STATIC 4 166 167#define RTPROT_GATED 8 168#define RTPROT_RA 9 169#define RTPROT_MRT 10 170#define RTPROT_ZEBRA 11 171#define RTPROT_BIRD 12 172#define RTPROT_DNROUTED 13 173#define RTPROT_XORP 14 174#define RTPROT_NTK 15 175 176enum rt_scope_t 177{ 178 RT_SCOPE_UNIVERSE=0, 179 180 RT_SCOPE_SITE=200, 181 RT_SCOPE_LINK=253, 182 RT_SCOPE_HOST=254, 183 RT_SCOPE_NOWHERE=255 184}; 185 186#define RTM_F_NOTIFY 0x100 187#define RTM_F_CLONED 0x200 188#define RTM_F_EQUALIZE 0x400 189#define RTM_F_PREFIX 0x800 190 191enum rt_class_t 192{ 193 RT_TABLE_UNSPEC=0, 194 195 RT_TABLE_DEFAULT=253, 196 RT_TABLE_MAIN=254, 197 RT_TABLE_LOCAL=255, 198 __RT_TABLE_MAX 199}; 200#define RT_TABLE_MAX (__RT_TABLE_MAX - 1) 201 202enum rtattr_type_t 203{ 204 RTA_UNSPEC, 205 RTA_DST, 206 RTA_SRC, 207 RTA_IIF, 208 RTA_OIF, 209 RTA_GATEWAY, 210 RTA_PRIORITY, 211 RTA_PREFSRC, 212 RTA_METRICS, 213 RTA_MULTIPATH, 214 RTA_PROTOINFO, 215 RTA_FLOW, 216 RTA_CACHEINFO, 217 RTA_SESSION, 218 RTA_MP_ALGO, 219 __RTA_MAX 220}; 221 222#define RTA_MAX (__RTA_MAX - 1) 223 224#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) 225#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) 226 227struct rtnexthop 228{ 229 unsigned short rtnh_len; 230 unsigned char rtnh_flags; 231 unsigned char rtnh_hops; 232 int rtnh_ifindex; 233}; 234 235#define RTNH_F_DEAD 1 236#define RTNH_F_PERVASIVE 2 237#define RTNH_F_ONLINK 4 238 239#define RTNH_ALIGNTO 4 240#define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) ) 241#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int)(rtnh)->rtnh_len) <= (len)) 242#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) 243#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len)) 244#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len)) 245#define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) 246 247struct rta_cacheinfo 248{ 249 __u32 rta_clntref; 250 __u32 rta_lastuse; 251 __s32 rta_expires; 252 __u32 rta_error; 253 __u32 rta_used; 254 255#define RTNETLINK_HAVE_PEERINFO 1 256 __u32 rta_id; 257 __u32 rta_ts; 258 __u32 rta_tsage; 259}; 260 261enum 262{ 263 RTAX_UNSPEC, 264#define RTAX_UNSPEC RTAX_UNSPEC 265 RTAX_LOCK, 266#define RTAX_LOCK RTAX_LOCK 267 RTAX_MTU, 268#define RTAX_MTU RTAX_MTU 269 RTAX_WINDOW, 270#define RTAX_WINDOW RTAX_WINDOW 271 RTAX_RTT, 272#define RTAX_RTT RTAX_RTT 273 RTAX_RTTVAR, 274#define RTAX_RTTVAR RTAX_RTTVAR 275 RTAX_SSTHRESH, 276#define RTAX_SSTHRESH RTAX_SSTHRESH 277 RTAX_CWND, 278#define RTAX_CWND RTAX_CWND 279 RTAX_ADVMSS, 280#define RTAX_ADVMSS RTAX_ADVMSS 281 RTAX_REORDERING, 282#define RTAX_REORDERING RTAX_REORDERING 283 RTAX_HOPLIMIT, 284#define RTAX_HOPLIMIT RTAX_HOPLIMIT 285 RTAX_INITCWND, 286#define RTAX_INITCWND RTAX_INITCWND 287 RTAX_FEATURES, 288#define RTAX_FEATURES RTAX_FEATURES 289 __RTAX_MAX 290}; 291 292#define RTAX_MAX (__RTAX_MAX - 1) 293 294#define RTAX_FEATURE_ECN 0x00000001 295#define RTAX_FEATURE_SACK 0x00000002 296#define RTAX_FEATURE_TIMESTAMP 0x00000004 297#define RTAX_FEATURE_ALLFRAG 0x00000008 298 299struct rta_session 300{ 301 __u8 proto; 302 __u8 pad1; 303 __u16 pad2; 304 305 union { 306 struct { 307 __u16 sport; 308 __u16 dport; 309 } ports; 310 311 struct { 312 __u8 type; 313 __u8 code; 314 __u16 ident; 315 } icmpt; 316 317 __u32 spi; 318 } u; 319}; 320 321struct ifaddrmsg 322{ 323 unsigned char ifa_family; 324 unsigned char ifa_prefixlen; 325 unsigned char ifa_flags; 326 unsigned char ifa_scope; 327 int ifa_index; 328}; 329 330enum 331{ 332 IFA_UNSPEC, 333 IFA_ADDRESS, 334 IFA_LOCAL, 335 IFA_LABEL, 336 IFA_BROADCAST, 337 IFA_ANYCAST, 338 IFA_CACHEINFO, 339 IFA_MULTICAST, 340 __IFA_MAX 341}; 342 343#define IFA_MAX (__IFA_MAX - 1) 344 345#define IFA_F_SECONDARY 0x01 346#define IFA_F_TEMPORARY IFA_F_SECONDARY 347 348#define IFA_F_DEPRECATED 0x20 349#define IFA_F_TENTATIVE 0x40 350#define IFA_F_PERMANENT 0x80 351 352struct ifa_cacheinfo 353{ 354 __u32 ifa_prefered; 355 __u32 ifa_valid; 356 __u32 cstamp; 357 __u32 tstamp; 358}; 359 360#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg)))) 361#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg)) 362 363struct ndmsg 364{ 365 unsigned char ndm_family; 366 unsigned char ndm_pad1; 367 unsigned short ndm_pad2; 368 int ndm_ifindex; 369 __u16 ndm_state; 370 __u8 ndm_flags; 371 __u8 ndm_type; 372}; 373 374enum 375{ 376 NDA_UNSPEC, 377 NDA_DST, 378 NDA_LLADDR, 379 NDA_CACHEINFO, 380 NDA_PROBES, 381 __NDA_MAX 382}; 383 384#define NDA_MAX (__NDA_MAX - 1) 385 386#define NDA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndmsg)))) 387#define NDA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndmsg)) 388 389#define NTF_PROXY 0x08 390#define NTF_ROUTER 0x80 391 392#define NUD_INCOMPLETE 0x01 393#define NUD_REACHABLE 0x02 394#define NUD_STALE 0x04 395#define NUD_DELAY 0x08 396#define NUD_PROBE 0x10 397#define NUD_FAILED 0x20 398 399#define NUD_NOARP 0x40 400#define NUD_PERMANENT 0x80 401#define NUD_NONE 0x00 402 403struct nda_cacheinfo 404{ 405 __u32 ndm_confirmed; 406 __u32 ndm_used; 407 __u32 ndm_updated; 408 __u32 ndm_refcnt; 409}; 410 411struct ndt_stats 412{ 413 __u64 ndts_allocs; 414 __u64 ndts_destroys; 415 __u64 ndts_hash_grows; 416 __u64 ndts_res_failed; 417 __u64 ndts_lookups; 418 __u64 ndts_hits; 419 __u64 ndts_rcv_probes_mcast; 420 __u64 ndts_rcv_probes_ucast; 421 __u64 ndts_periodic_gc_runs; 422 __u64 ndts_forced_gc_runs; 423}; 424 425enum { 426 NDTPA_UNSPEC, 427 NDTPA_IFINDEX, 428 NDTPA_REFCNT, 429 NDTPA_REACHABLE_TIME, 430 NDTPA_BASE_REACHABLE_TIME, 431 NDTPA_RETRANS_TIME, 432 NDTPA_GC_STALETIME, 433 NDTPA_DELAY_PROBE_TIME, 434 NDTPA_QUEUE_LEN, 435 NDTPA_APP_PROBES, 436 NDTPA_UCAST_PROBES, 437 NDTPA_MCAST_PROBES, 438 NDTPA_ANYCAST_DELAY, 439 NDTPA_PROXY_DELAY, 440 NDTPA_PROXY_QLEN, 441 NDTPA_LOCKTIME, 442 __NDTPA_MAX 443}; 444#define NDTPA_MAX (__NDTPA_MAX - 1) 445 446struct ndtmsg 447{ 448 __u8 ndtm_family; 449 __u8 ndtm_pad1; 450 __u16 ndtm_pad2; 451}; 452 453struct ndt_config 454{ 455 __u16 ndtc_key_len; 456 __u16 ndtc_entry_size; 457 __u32 ndtc_entries; 458 __u32 ndtc_last_flush; 459 __u32 ndtc_last_rand; 460 __u32 ndtc_hash_rnd; 461 __u32 ndtc_hash_mask; 462 __u32 ndtc_hash_chain_gc; 463 __u32 ndtc_proxy_qlen; 464}; 465 466enum { 467 NDTA_UNSPEC, 468 NDTA_NAME, 469 NDTA_THRESH1, 470 NDTA_THRESH2, 471 NDTA_THRESH3, 472 NDTA_CONFIG, 473 NDTA_PARMS, 474 NDTA_STATS, 475 NDTA_GC_INTERVAL, 476 __NDTA_MAX 477}; 478#define NDTA_MAX (__NDTA_MAX - 1) 479 480#define NDTA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndtmsg)))) 481#define NDTA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndtmsg)) 482 483struct rtgenmsg 484{ 485 unsigned char rtgen_family; 486}; 487 488struct ifinfomsg 489{ 490 unsigned char ifi_family; 491 unsigned char __ifi_pad; 492 unsigned short ifi_type; 493 int ifi_index; 494 unsigned ifi_flags; 495 unsigned ifi_change; 496}; 497 498struct prefixmsg 499{ 500 unsigned char prefix_family; 501 unsigned char prefix_pad1; 502 unsigned short prefix_pad2; 503 int prefix_ifindex; 504 unsigned char prefix_type; 505 unsigned char prefix_len; 506 unsigned char prefix_flags; 507 unsigned char prefix_pad3; 508}; 509 510enum 511{ 512 PREFIX_UNSPEC, 513 PREFIX_ADDRESS, 514 PREFIX_CACHEINFO, 515 __PREFIX_MAX 516}; 517 518#define PREFIX_MAX (__PREFIX_MAX - 1) 519 520struct prefix_cacheinfo 521{ 522 __u32 preferred_time; 523 __u32 valid_time; 524}; 525 526struct rtnl_link_stats 527{ 528 __u32 rx_packets; 529 __u32 tx_packets; 530 __u32 rx_bytes; 531 __u32 tx_bytes; 532 __u32 rx_errors; 533 __u32 tx_errors; 534 __u32 rx_dropped; 535 __u32 tx_dropped; 536 __u32 multicast; 537 __u32 collisions; 538 539 __u32 rx_length_errors; 540 __u32 rx_over_errors; 541 __u32 rx_crc_errors; 542 __u32 rx_frame_errors; 543 __u32 rx_fifo_errors; 544 __u32 rx_missed_errors; 545 546 __u32 tx_aborted_errors; 547 __u32 tx_carrier_errors; 548 __u32 tx_fifo_errors; 549 __u32 tx_heartbeat_errors; 550 __u32 tx_window_errors; 551 552 __u32 rx_compressed; 553 __u32 tx_compressed; 554}; 555 556struct rtnl_link_ifmap 557{ 558 __u64 mem_start; 559 __u64 mem_end; 560 __u64 base_addr; 561 __u16 irq; 562 __u8 dma; 563 __u8 port; 564}; 565 566enum 567{ 568 IFLA_UNSPEC, 569 IFLA_ADDRESS, 570 IFLA_BROADCAST, 571 IFLA_IFNAME, 572 IFLA_MTU, 573 IFLA_LINK, 574 IFLA_QDISC, 575 IFLA_STATS, 576 IFLA_COST, 577#define IFLA_COST IFLA_COST 578 IFLA_PRIORITY, 579#define IFLA_PRIORITY IFLA_PRIORITY 580 IFLA_MASTER, 581#define IFLA_MASTER IFLA_MASTER 582 IFLA_WIRELESS, 583#define IFLA_WIRELESS IFLA_WIRELESS 584 IFLA_PROTINFO, 585#define IFLA_PROTINFO IFLA_PROTINFO 586 IFLA_TXQLEN, 587#define IFLA_TXQLEN IFLA_TXQLEN 588 IFLA_MAP, 589#define IFLA_MAP IFLA_MAP 590 IFLA_WEIGHT, 591#define IFLA_WEIGHT IFLA_WEIGHT 592 IFLA_OPERSTATE, 593 IFLA_LINKMODE, 594 __IFLA_MAX 595}; 596 597#define IFLA_MAX (__IFLA_MAX - 1) 598 599#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) 600#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg)) 601 602enum 603{ 604 IFLA_INET6_UNSPEC, 605 IFLA_INET6_FLAGS, 606 IFLA_INET6_CONF, 607 IFLA_INET6_STATS, 608 IFLA_INET6_MCAST, 609 IFLA_INET6_CACHEINFO, 610 __IFLA_INET6_MAX 611}; 612 613#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1) 614 615struct ifla_cacheinfo 616{ 617 __u32 max_reasm_len; 618 __u32 tstamp; 619 __u32 reachable_time; 620 __u32 retrans_time; 621}; 622 623struct tcmsg 624{ 625 unsigned char tcm_family; 626 unsigned char tcm__pad1; 627 unsigned short tcm__pad2; 628 int tcm_ifindex; 629 __u32 tcm_handle; 630 __u32 tcm_parent; 631 __u32 tcm_info; 632}; 633 634enum 635{ 636 TCA_UNSPEC, 637 TCA_KIND, 638 TCA_OPTIONS, 639 TCA_STATS, 640 TCA_XSTATS, 641 TCA_RATE, 642 TCA_FCNT, 643 TCA_STATS2, 644 __TCA_MAX 645}; 646 647#define TCA_MAX (__TCA_MAX - 1) 648 649#define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg)))) 650#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg)) 651 652#define RTMGRP_LINK 1 653#define RTMGRP_NOTIFY 2 654#define RTMGRP_NEIGH 4 655#define RTMGRP_TC 8 656 657#define RTMGRP_IPV4_IFADDR 0x10 658#define RTMGRP_IPV4_MROUTE 0x20 659#define RTMGRP_IPV4_ROUTE 0x40 660#define RTMGRP_IPV4_RULE 0x80 661 662#define RTMGRP_IPV6_IFADDR 0x100 663#define RTMGRP_IPV6_MROUTE 0x200 664#define RTMGRP_IPV6_ROUTE 0x400 665#define RTMGRP_IPV6_IFINFO 0x800 666 667#define RTMGRP_DECnet_IFADDR 0x1000 668#define RTMGRP_DECnet_ROUTE 0x4000 669 670#define RTMGRP_IPV6_PREFIX 0x20000 671 672enum rtnetlink_groups { 673 RTNLGRP_NONE, 674#define RTNLGRP_NONE RTNLGRP_NONE 675 RTNLGRP_LINK, 676#define RTNLGRP_LINK RTNLGRP_LINK 677 RTNLGRP_NOTIFY, 678#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY 679 RTNLGRP_NEIGH, 680#define RTNLGRP_NEIGH RTNLGRP_NEIGH 681 RTNLGRP_TC, 682#define RTNLGRP_TC RTNLGRP_TC 683 RTNLGRP_IPV4_IFADDR, 684#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR 685 RTNLGRP_IPV4_MROUTE, 686#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE 687 RTNLGRP_IPV4_ROUTE, 688#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE 689 RTNLGRP_IPV4_RULE, 690#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE 691 RTNLGRP_IPV6_IFADDR, 692#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR 693 RTNLGRP_IPV6_MROUTE, 694#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE 695 RTNLGRP_IPV6_ROUTE, 696#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE 697 RTNLGRP_IPV6_IFINFO, 698#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO 699 RTNLGRP_DECnet_IFADDR, 700#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR 701 RTNLGRP_NOP2, 702 RTNLGRP_DECnet_ROUTE, 703#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE 704 RTNLGRP_NOP3, 705 RTNLGRP_NOP4, 706 RTNLGRP_IPV6_PREFIX, 707#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX 708 __RTNLGRP_MAX 709}; 710#define RTNLGRP_MAX (__RTNLGRP_MAX - 1) 711 712struct tcamsg 713{ 714 unsigned char tca_family; 715 unsigned char tca__pad1; 716 unsigned short tca__pad2; 717}; 718#define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg)))) 719#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg)) 720#define TCA_ACT_TAB 1 721#define TCAA_MAX 1 722 723#endif 724