0001
0002 #ifndef _UAPI__LINUX_RTNETLINK_H
0003 #define _UAPI__LINUX_RTNETLINK_H
0004
0005 #include <linux/types.h>
0006 #include <linux/netlink.h>
0007 #include <linux/if_link.h>
0008 #include <linux/if_addr.h>
0009 #include <linux/neighbour.h>
0010
0011
0012
0013
0014 #define RTNL_FAMILY_IPMR 128
0015 #define RTNL_FAMILY_IP6MR 129
0016 #define RTNL_FAMILY_MAX 129
0017
0018
0019
0020
0021
0022
0023
0024 enum {
0025 RTM_BASE = 16,
0026 #define RTM_BASE RTM_BASE
0027
0028 RTM_NEWLINK = 16,
0029 #define RTM_NEWLINK RTM_NEWLINK
0030 RTM_DELLINK,
0031 #define RTM_DELLINK RTM_DELLINK
0032 RTM_GETLINK,
0033 #define RTM_GETLINK RTM_GETLINK
0034 RTM_SETLINK,
0035 #define RTM_SETLINK RTM_SETLINK
0036
0037 RTM_NEWADDR = 20,
0038 #define RTM_NEWADDR RTM_NEWADDR
0039 RTM_DELADDR,
0040 #define RTM_DELADDR RTM_DELADDR
0041 RTM_GETADDR,
0042 #define RTM_GETADDR RTM_GETADDR
0043
0044 RTM_NEWROUTE = 24,
0045 #define RTM_NEWROUTE RTM_NEWROUTE
0046 RTM_DELROUTE,
0047 #define RTM_DELROUTE RTM_DELROUTE
0048 RTM_GETROUTE,
0049 #define RTM_GETROUTE RTM_GETROUTE
0050
0051 RTM_NEWNEIGH = 28,
0052 #define RTM_NEWNEIGH RTM_NEWNEIGH
0053 RTM_DELNEIGH,
0054 #define RTM_DELNEIGH RTM_DELNEIGH
0055 RTM_GETNEIGH,
0056 #define RTM_GETNEIGH RTM_GETNEIGH
0057
0058 RTM_NEWRULE = 32,
0059 #define RTM_NEWRULE RTM_NEWRULE
0060 RTM_DELRULE,
0061 #define RTM_DELRULE RTM_DELRULE
0062 RTM_GETRULE,
0063 #define RTM_GETRULE RTM_GETRULE
0064
0065 RTM_NEWQDISC = 36,
0066 #define RTM_NEWQDISC RTM_NEWQDISC
0067 RTM_DELQDISC,
0068 #define RTM_DELQDISC RTM_DELQDISC
0069 RTM_GETQDISC,
0070 #define RTM_GETQDISC RTM_GETQDISC
0071
0072 RTM_NEWTCLASS = 40,
0073 #define RTM_NEWTCLASS RTM_NEWTCLASS
0074 RTM_DELTCLASS,
0075 #define RTM_DELTCLASS RTM_DELTCLASS
0076 RTM_GETTCLASS,
0077 #define RTM_GETTCLASS RTM_GETTCLASS
0078
0079 RTM_NEWTFILTER = 44,
0080 #define RTM_NEWTFILTER RTM_NEWTFILTER
0081 RTM_DELTFILTER,
0082 #define RTM_DELTFILTER RTM_DELTFILTER
0083 RTM_GETTFILTER,
0084 #define RTM_GETTFILTER RTM_GETTFILTER
0085
0086 RTM_NEWACTION = 48,
0087 #define RTM_NEWACTION RTM_NEWACTION
0088 RTM_DELACTION,
0089 #define RTM_DELACTION RTM_DELACTION
0090 RTM_GETACTION,
0091 #define RTM_GETACTION RTM_GETACTION
0092
0093 RTM_NEWPREFIX = 52,
0094 #define RTM_NEWPREFIX RTM_NEWPREFIX
0095
0096 RTM_GETMULTICAST = 58,
0097 #define RTM_GETMULTICAST RTM_GETMULTICAST
0098
0099 RTM_GETANYCAST = 62,
0100 #define RTM_GETANYCAST RTM_GETANYCAST
0101
0102 RTM_NEWNEIGHTBL = 64,
0103 #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
0104 RTM_GETNEIGHTBL = 66,
0105 #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
0106 RTM_SETNEIGHTBL,
0107 #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
0108
0109 RTM_NEWNDUSEROPT = 68,
0110 #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
0111
0112 RTM_NEWADDRLABEL = 72,
0113 #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
0114 RTM_DELADDRLABEL,
0115 #define RTM_DELADDRLABEL RTM_DELADDRLABEL
0116 RTM_GETADDRLABEL,
0117 #define RTM_GETADDRLABEL RTM_GETADDRLABEL
0118
0119 RTM_GETDCB = 78,
0120 #define RTM_GETDCB RTM_GETDCB
0121 RTM_SETDCB,
0122 #define RTM_SETDCB RTM_SETDCB
0123
0124 RTM_NEWNETCONF = 80,
0125 #define RTM_NEWNETCONF RTM_NEWNETCONF
0126 RTM_DELNETCONF,
0127 #define RTM_DELNETCONF RTM_DELNETCONF
0128 RTM_GETNETCONF = 82,
0129 #define RTM_GETNETCONF RTM_GETNETCONF
0130
0131 RTM_NEWMDB = 84,
0132 #define RTM_NEWMDB RTM_NEWMDB
0133 RTM_DELMDB = 85,
0134 #define RTM_DELMDB RTM_DELMDB
0135 RTM_GETMDB = 86,
0136 #define RTM_GETMDB RTM_GETMDB
0137
0138 RTM_NEWNSID = 88,
0139 #define RTM_NEWNSID RTM_NEWNSID
0140 RTM_DELNSID = 89,
0141 #define RTM_DELNSID RTM_DELNSID
0142 RTM_GETNSID = 90,
0143 #define RTM_GETNSID RTM_GETNSID
0144
0145 RTM_NEWSTATS = 92,
0146 #define RTM_NEWSTATS RTM_NEWSTATS
0147 RTM_GETSTATS = 94,
0148 #define RTM_GETSTATS RTM_GETSTATS
0149 RTM_SETSTATS,
0150 #define RTM_SETSTATS RTM_SETSTATS
0151
0152 RTM_NEWCACHEREPORT = 96,
0153 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
0154
0155 RTM_NEWCHAIN = 100,
0156 #define RTM_NEWCHAIN RTM_NEWCHAIN
0157 RTM_DELCHAIN,
0158 #define RTM_DELCHAIN RTM_DELCHAIN
0159 RTM_GETCHAIN,
0160 #define RTM_GETCHAIN RTM_GETCHAIN
0161
0162 RTM_NEWNEXTHOP = 104,
0163 #define RTM_NEWNEXTHOP RTM_NEWNEXTHOP
0164 RTM_DELNEXTHOP,
0165 #define RTM_DELNEXTHOP RTM_DELNEXTHOP
0166 RTM_GETNEXTHOP,
0167 #define RTM_GETNEXTHOP RTM_GETNEXTHOP
0168
0169 RTM_NEWLINKPROP = 108,
0170 #define RTM_NEWLINKPROP RTM_NEWLINKPROP
0171 RTM_DELLINKPROP,
0172 #define RTM_DELLINKPROP RTM_DELLINKPROP
0173 RTM_GETLINKPROP,
0174 #define RTM_GETLINKPROP RTM_GETLINKPROP
0175
0176 RTM_NEWVLAN = 112,
0177 #define RTM_NEWNVLAN RTM_NEWVLAN
0178 RTM_DELVLAN,
0179 #define RTM_DELVLAN RTM_DELVLAN
0180 RTM_GETVLAN,
0181 #define RTM_GETVLAN RTM_GETVLAN
0182
0183 RTM_NEWNEXTHOPBUCKET = 116,
0184 #define RTM_NEWNEXTHOPBUCKET RTM_NEWNEXTHOPBUCKET
0185 RTM_DELNEXTHOPBUCKET,
0186 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
0187 RTM_GETNEXTHOPBUCKET,
0188 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
0189
0190 RTM_NEWTUNNEL = 120,
0191 #define RTM_NEWTUNNEL RTM_NEWTUNNEL
0192 RTM_DELTUNNEL,
0193 #define RTM_DELTUNNEL RTM_DELTUNNEL
0194 RTM_GETTUNNEL,
0195 #define RTM_GETTUNNEL RTM_GETTUNNEL
0196
0197 __RTM_MAX,
0198 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
0199 };
0200
0201 #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
0202 #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
0203 #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
0204
0205
0206
0207
0208
0209
0210
0211 struct rtattr {
0212 unsigned short rta_len;
0213 unsigned short rta_type;
0214 };
0215
0216
0217
0218 #define RTA_ALIGNTO 4U
0219 #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
0220 #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \
0221 (rta)->rta_len >= sizeof(struct rtattr) && \
0222 (rta)->rta_len <= (len))
0223 #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
0224 (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
0225 #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
0226 #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
0227 #define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
0228 #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
0229
0230
0231
0232
0233
0234
0235
0236
0237 struct rtmsg {
0238 unsigned char rtm_family;
0239 unsigned char rtm_dst_len;
0240 unsigned char rtm_src_len;
0241 unsigned char rtm_tos;
0242
0243 unsigned char rtm_table;
0244 unsigned char rtm_protocol;
0245 unsigned char rtm_scope;
0246 unsigned char rtm_type;
0247
0248 unsigned rtm_flags;
0249 };
0250
0251
0252
0253 enum {
0254 RTN_UNSPEC,
0255 RTN_UNICAST,
0256 RTN_LOCAL,
0257 RTN_BROADCAST,
0258
0259 RTN_ANYCAST,
0260
0261 RTN_MULTICAST,
0262 RTN_BLACKHOLE,
0263 RTN_UNREACHABLE,
0264 RTN_PROHIBIT,
0265 RTN_THROW,
0266 RTN_NAT,
0267 RTN_XRESOLVE,
0268 __RTN_MAX
0269 };
0270
0271 #define RTN_MAX (__RTN_MAX - 1)
0272
0273
0274
0275
0276 #define RTPROT_UNSPEC 0
0277 #define RTPROT_REDIRECT 1
0278
0279 #define RTPROT_KERNEL 2
0280 #define RTPROT_BOOT 3
0281 #define RTPROT_STATIC 4
0282
0283
0284
0285
0286
0287
0288
0289
0290 #define RTPROT_GATED 8
0291 #define RTPROT_RA 9
0292 #define RTPROT_MRT 10
0293 #define RTPROT_ZEBRA 11
0294 #define RTPROT_BIRD 12
0295 #define RTPROT_DNROUTED 13
0296 #define RTPROT_XORP 14
0297 #define RTPROT_NTK 15
0298 #define RTPROT_DHCP 16
0299 #define RTPROT_MROUTED 17
0300 #define RTPROT_KEEPALIVED 18
0301 #define RTPROT_BABEL 42
0302 #define RTPROT_OPENR 99
0303 #define RTPROT_BGP 186
0304 #define RTPROT_ISIS 187
0305 #define RTPROT_OSPF 188
0306 #define RTPROT_RIP 189
0307 #define RTPROT_EIGRP 192
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320 enum rt_scope_t {
0321 RT_SCOPE_UNIVERSE=0,
0322
0323 RT_SCOPE_SITE=200,
0324 RT_SCOPE_LINK=253,
0325 RT_SCOPE_HOST=254,
0326 RT_SCOPE_NOWHERE=255
0327 };
0328
0329
0330
0331 #define RTM_F_NOTIFY 0x100
0332 #define RTM_F_CLONED 0x200
0333 #define RTM_F_EQUALIZE 0x400
0334 #define RTM_F_PREFIX 0x800
0335 #define RTM_F_LOOKUP_TABLE 0x1000
0336 #define RTM_F_FIB_MATCH 0x2000
0337 #define RTM_F_OFFLOAD 0x4000
0338 #define RTM_F_TRAP 0x8000
0339 #define RTM_F_OFFLOAD_FAILED 0x20000000
0340
0341
0342
0343
0344
0345
0346
0347 enum rt_class_t {
0348 RT_TABLE_UNSPEC=0,
0349
0350 RT_TABLE_COMPAT=252,
0351 RT_TABLE_DEFAULT=253,
0352 RT_TABLE_MAIN=254,
0353 RT_TABLE_LOCAL=255,
0354 RT_TABLE_MAX=0xFFFFFFFF
0355 };
0356
0357
0358
0359
0360 enum rtattr_type_t {
0361 RTA_UNSPEC,
0362 RTA_DST,
0363 RTA_SRC,
0364 RTA_IIF,
0365 RTA_OIF,
0366 RTA_GATEWAY,
0367 RTA_PRIORITY,
0368 RTA_PREFSRC,
0369 RTA_METRICS,
0370 RTA_MULTIPATH,
0371 RTA_PROTOINFO,
0372 RTA_FLOW,
0373 RTA_CACHEINFO,
0374 RTA_SESSION,
0375 RTA_MP_ALGO,
0376 RTA_TABLE,
0377 RTA_MARK,
0378 RTA_MFC_STATS,
0379 RTA_VIA,
0380 RTA_NEWDST,
0381 RTA_PREF,
0382 RTA_ENCAP_TYPE,
0383 RTA_ENCAP,
0384 RTA_EXPIRES,
0385 RTA_PAD,
0386 RTA_UID,
0387 RTA_TTL_PROPAGATE,
0388 RTA_IP_PROTO,
0389 RTA_SPORT,
0390 RTA_DPORT,
0391 RTA_NH_ID,
0392 __RTA_MAX
0393 };
0394
0395 #define RTA_MAX (__RTA_MAX - 1)
0396
0397 #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
0398 #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409 struct rtnexthop {
0410 unsigned short rtnh_len;
0411 unsigned char rtnh_flags;
0412 unsigned char rtnh_hops;
0413 int rtnh_ifindex;
0414 };
0415
0416
0417
0418 #define RTNH_F_DEAD 1
0419 #define RTNH_F_PERVASIVE 2
0420 #define RTNH_F_ONLINK 4
0421 #define RTNH_F_OFFLOAD 8
0422 #define RTNH_F_LINKDOWN 16
0423 #define RTNH_F_UNRESOLVED 32
0424 #define RTNH_F_TRAP 64
0425
0426 #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | \
0427 RTNH_F_OFFLOAD | RTNH_F_TRAP)
0428
0429
0430
0431 #define RTNH_ALIGNTO 4
0432 #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
0433 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
0434 ((int)(rtnh)->rtnh_len) <= (len))
0435 #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
0436 #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
0437 #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
0438 #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
0439
0440
0441 struct rtvia {
0442 __kernel_sa_family_t rtvia_family;
0443 __u8 rtvia_addr[];
0444 };
0445
0446
0447
0448 struct rta_cacheinfo {
0449 __u32 rta_clntref;
0450 __u32 rta_lastuse;
0451 __s32 rta_expires;
0452 __u32 rta_error;
0453 __u32 rta_used;
0454
0455 #define RTNETLINK_HAVE_PEERINFO 1
0456 __u32 rta_id;
0457 __u32 rta_ts;
0458 __u32 rta_tsage;
0459 };
0460
0461
0462
0463 enum {
0464 RTAX_UNSPEC,
0465 #define RTAX_UNSPEC RTAX_UNSPEC
0466 RTAX_LOCK,
0467 #define RTAX_LOCK RTAX_LOCK
0468 RTAX_MTU,
0469 #define RTAX_MTU RTAX_MTU
0470 RTAX_WINDOW,
0471 #define RTAX_WINDOW RTAX_WINDOW
0472 RTAX_RTT,
0473 #define RTAX_RTT RTAX_RTT
0474 RTAX_RTTVAR,
0475 #define RTAX_RTTVAR RTAX_RTTVAR
0476 RTAX_SSTHRESH,
0477 #define RTAX_SSTHRESH RTAX_SSTHRESH
0478 RTAX_CWND,
0479 #define RTAX_CWND RTAX_CWND
0480 RTAX_ADVMSS,
0481 #define RTAX_ADVMSS RTAX_ADVMSS
0482 RTAX_REORDERING,
0483 #define RTAX_REORDERING RTAX_REORDERING
0484 RTAX_HOPLIMIT,
0485 #define RTAX_HOPLIMIT RTAX_HOPLIMIT
0486 RTAX_INITCWND,
0487 #define RTAX_INITCWND RTAX_INITCWND
0488 RTAX_FEATURES,
0489 #define RTAX_FEATURES RTAX_FEATURES
0490 RTAX_RTO_MIN,
0491 #define RTAX_RTO_MIN RTAX_RTO_MIN
0492 RTAX_INITRWND,
0493 #define RTAX_INITRWND RTAX_INITRWND
0494 RTAX_QUICKACK,
0495 #define RTAX_QUICKACK RTAX_QUICKACK
0496 RTAX_CC_ALGO,
0497 #define RTAX_CC_ALGO RTAX_CC_ALGO
0498 RTAX_FASTOPEN_NO_COOKIE,
0499 #define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
0500 __RTAX_MAX
0501 };
0502
0503 #define RTAX_MAX (__RTAX_MAX - 1)
0504
0505 #define RTAX_FEATURE_ECN (1 << 0)
0506 #define RTAX_FEATURE_SACK (1 << 1)
0507 #define RTAX_FEATURE_TIMESTAMP (1 << 2)
0508 #define RTAX_FEATURE_ALLFRAG (1 << 3)
0509
0510 #define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
0511 RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
0512
0513 struct rta_session {
0514 __u8 proto;
0515 __u8 pad1;
0516 __u16 pad2;
0517
0518 union {
0519 struct {
0520 __u16 sport;
0521 __u16 dport;
0522 } ports;
0523
0524 struct {
0525 __u8 type;
0526 __u8 code;
0527 __u16 ident;
0528 } icmpt;
0529
0530 __u32 spi;
0531 } u;
0532 };
0533
0534 struct rta_mfc_stats {
0535 __u64 mfcs_packets;
0536 __u64 mfcs_bytes;
0537 __u64 mfcs_wrong_if;
0538 };
0539
0540
0541
0542
0543
0544 struct rtgenmsg {
0545 unsigned char rtgen_family;
0546 };
0547
0548
0549
0550
0551
0552
0553
0554
0555
0556
0557 struct ifinfomsg {
0558 unsigned char ifi_family;
0559 unsigned char __ifi_pad;
0560 unsigned short ifi_type;
0561 int ifi_index;
0562 unsigned ifi_flags;
0563 unsigned ifi_change;
0564 };
0565
0566
0567
0568
0569
0570 struct prefixmsg {
0571 unsigned char prefix_family;
0572 unsigned char prefix_pad1;
0573 unsigned short prefix_pad2;
0574 int prefix_ifindex;
0575 unsigned char prefix_type;
0576 unsigned char prefix_len;
0577 unsigned char prefix_flags;
0578 unsigned char prefix_pad3;
0579 };
0580
0581 enum
0582 {
0583 PREFIX_UNSPEC,
0584 PREFIX_ADDRESS,
0585 PREFIX_CACHEINFO,
0586 __PREFIX_MAX
0587 };
0588
0589 #define PREFIX_MAX (__PREFIX_MAX - 1)
0590
0591 struct prefix_cacheinfo {
0592 __u32 preferred_time;
0593 __u32 valid_time;
0594 };
0595
0596
0597
0598
0599
0600
0601 struct tcmsg {
0602 unsigned char tcm_family;
0603 unsigned char tcm__pad1;
0604 unsigned short tcm__pad2;
0605 int tcm_ifindex;
0606 __u32 tcm_handle;
0607 __u32 tcm_parent;
0608
0609
0610
0611 #define tcm_block_index tcm_parent
0612 __u32 tcm_info;
0613 };
0614
0615
0616
0617
0618
0619 #define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
0620
0621 enum {
0622 TCA_UNSPEC,
0623 TCA_KIND,
0624 TCA_OPTIONS,
0625 TCA_STATS,
0626 TCA_XSTATS,
0627 TCA_RATE,
0628 TCA_FCNT,
0629 TCA_STATS2,
0630 TCA_STAB,
0631 TCA_PAD,
0632 TCA_DUMP_INVISIBLE,
0633 TCA_CHAIN,
0634 TCA_HW_OFFLOAD,
0635 TCA_INGRESS_BLOCK,
0636 TCA_EGRESS_BLOCK,
0637 TCA_DUMP_FLAGS,
0638 __TCA_MAX
0639 };
0640
0641 #define TCA_MAX (__TCA_MAX - 1)
0642
0643 #define TCA_DUMP_FLAGS_TERSE (1 << 0)
0644
0645
0646
0647
0648 #define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
0649 #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
0650
0651
0652
0653
0654
0655 struct nduseroptmsg {
0656 unsigned char nduseropt_family;
0657 unsigned char nduseropt_pad1;
0658 unsigned short nduseropt_opts_len;
0659 int nduseropt_ifindex;
0660 __u8 nduseropt_icmp_type;
0661 __u8 nduseropt_icmp_code;
0662 unsigned short nduseropt_pad2;
0663 unsigned int nduseropt_pad3;
0664
0665 };
0666
0667 enum {
0668 NDUSEROPT_UNSPEC,
0669 NDUSEROPT_SRCADDR,
0670 __NDUSEROPT_MAX
0671 };
0672
0673 #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
0674
0675 #ifndef __KERNEL__
0676
0677 #define RTMGRP_LINK 1
0678 #define RTMGRP_NOTIFY 2
0679 #define RTMGRP_NEIGH 4
0680 #define RTMGRP_TC 8
0681
0682 #define RTMGRP_IPV4_IFADDR 0x10
0683 #define RTMGRP_IPV4_MROUTE 0x20
0684 #define RTMGRP_IPV4_ROUTE 0x40
0685 #define RTMGRP_IPV4_RULE 0x80
0686
0687 #define RTMGRP_IPV6_IFADDR 0x100
0688 #define RTMGRP_IPV6_MROUTE 0x200
0689 #define RTMGRP_IPV6_ROUTE 0x400
0690 #define RTMGRP_IPV6_IFINFO 0x800
0691
0692 #define RTMGRP_DECnet_IFADDR 0x1000
0693 #define RTMGRP_DECnet_ROUTE 0x4000
0694
0695 #define RTMGRP_IPV6_PREFIX 0x20000
0696 #endif
0697
0698
0699 enum rtnetlink_groups {
0700 RTNLGRP_NONE,
0701 #define RTNLGRP_NONE RTNLGRP_NONE
0702 RTNLGRP_LINK,
0703 #define RTNLGRP_LINK RTNLGRP_LINK
0704 RTNLGRP_NOTIFY,
0705 #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
0706 RTNLGRP_NEIGH,
0707 #define RTNLGRP_NEIGH RTNLGRP_NEIGH
0708 RTNLGRP_TC,
0709 #define RTNLGRP_TC RTNLGRP_TC
0710 RTNLGRP_IPV4_IFADDR,
0711 #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
0712 RTNLGRP_IPV4_MROUTE,
0713 #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
0714 RTNLGRP_IPV4_ROUTE,
0715 #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
0716 RTNLGRP_IPV4_RULE,
0717 #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
0718 RTNLGRP_IPV6_IFADDR,
0719 #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
0720 RTNLGRP_IPV6_MROUTE,
0721 #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
0722 RTNLGRP_IPV6_ROUTE,
0723 #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
0724 RTNLGRP_IPV6_IFINFO,
0725 #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
0726 RTNLGRP_DECnet_IFADDR,
0727 #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
0728 RTNLGRP_NOP2,
0729 RTNLGRP_DECnet_ROUTE,
0730 #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
0731 RTNLGRP_DECnet_RULE,
0732 #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
0733 RTNLGRP_NOP4,
0734 RTNLGRP_IPV6_PREFIX,
0735 #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
0736 RTNLGRP_IPV6_RULE,
0737 #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
0738 RTNLGRP_ND_USEROPT,
0739 #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
0740 RTNLGRP_PHONET_IFADDR,
0741 #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
0742 RTNLGRP_PHONET_ROUTE,
0743 #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
0744 RTNLGRP_DCB,
0745 #define RTNLGRP_DCB RTNLGRP_DCB
0746 RTNLGRP_IPV4_NETCONF,
0747 #define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
0748 RTNLGRP_IPV6_NETCONF,
0749 #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
0750 RTNLGRP_MDB,
0751 #define RTNLGRP_MDB RTNLGRP_MDB
0752 RTNLGRP_MPLS_ROUTE,
0753 #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
0754 RTNLGRP_NSID,
0755 #define RTNLGRP_NSID RTNLGRP_NSID
0756 RTNLGRP_MPLS_NETCONF,
0757 #define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
0758 RTNLGRP_IPV4_MROUTE_R,
0759 #define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
0760 RTNLGRP_IPV6_MROUTE_R,
0761 #define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
0762 RTNLGRP_NEXTHOP,
0763 #define RTNLGRP_NEXTHOP RTNLGRP_NEXTHOP
0764 RTNLGRP_BRVLAN,
0765 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
0766 RTNLGRP_MCTP_IFADDR,
0767 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
0768 RTNLGRP_TUNNEL,
0769 #define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
0770 RTNLGRP_STATS,
0771 #define RTNLGRP_STATS RTNLGRP_STATS
0772 __RTNLGRP_MAX
0773 };
0774 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
0775
0776
0777 struct tcamsg {
0778 unsigned char tca_family;
0779 unsigned char tca__pad1;
0780 unsigned short tca__pad2;
0781 };
0782
0783 enum {
0784 TCA_ROOT_UNSPEC,
0785 TCA_ROOT_TAB,
0786 #define TCA_ACT_TAB TCA_ROOT_TAB
0787 #define TCAA_MAX TCA_ROOT_TAB
0788 TCA_ROOT_FLAGS,
0789 TCA_ROOT_COUNT,
0790 TCA_ROOT_TIME_DELTA,
0791 __TCA_ROOT_MAX,
0792 #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
0793 };
0794
0795 #define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
0796 #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806
0807
0808 #define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
0809 #define TCA_ACT_FLAG_LARGE_DUMP_ON TCA_FLAG_LARGE_DUMP_ON
0810 #define TCA_ACT_FLAG_TERSE_DUMP (1 << 1)
0811
0812
0813 #define RTEXT_FILTER_VF (1 << 0)
0814 #define RTEXT_FILTER_BRVLAN (1 << 1)
0815 #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
0816 #define RTEXT_FILTER_SKIP_STATS (1 << 3)
0817 #define RTEXT_FILTER_MRP (1 << 4)
0818 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
0819 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
0820 #define RTEXT_FILTER_MST (1 << 7)
0821
0822
0823
0824
0825
0826 #endif