1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4dc78e53SAndroid Build Coastguard Worker #ifndef __LINUX_RTNETLINK_H 3*4dc78e53SAndroid Build Coastguard Worker #define __LINUX_RTNETLINK_H 4*4dc78e53SAndroid Build Coastguard Worker 5*4dc78e53SAndroid Build Coastguard Worker #include <linux/types.h> 6*4dc78e53SAndroid Build Coastguard Worker #include <linux/netlink.h> 7*4dc78e53SAndroid Build Coastguard Worker #include <linux/if_link.h> 8*4dc78e53SAndroid Build Coastguard Worker #include <linux/if_addr.h> 9*4dc78e53SAndroid Build Coastguard Worker #include <linux/neighbour.h> 10*4dc78e53SAndroid Build Coastguard Worker 11*4dc78e53SAndroid Build Coastguard Worker /* rtnetlink families. Values up to 127 are reserved for real address 12*4dc78e53SAndroid Build Coastguard Worker * families, values above 128 may be used arbitrarily. 13*4dc78e53SAndroid Build Coastguard Worker */ 14*4dc78e53SAndroid Build Coastguard Worker #define RTNL_FAMILY_IPMR 128 15*4dc78e53SAndroid Build Coastguard Worker #define RTNL_FAMILY_IP6MR 129 16*4dc78e53SAndroid Build Coastguard Worker #define RTNL_FAMILY_MAX 129 17*4dc78e53SAndroid Build Coastguard Worker 18*4dc78e53SAndroid Build Coastguard Worker /**** 19*4dc78e53SAndroid Build Coastguard Worker * Routing/neighbour discovery messages. 20*4dc78e53SAndroid Build Coastguard Worker ****/ 21*4dc78e53SAndroid Build Coastguard Worker 22*4dc78e53SAndroid Build Coastguard Worker /* Types of messages */ 23*4dc78e53SAndroid Build Coastguard Worker 24*4dc78e53SAndroid Build Coastguard Worker enum { 25*4dc78e53SAndroid Build Coastguard Worker RTM_BASE = 16, 26*4dc78e53SAndroid Build Coastguard Worker #define RTM_BASE RTM_BASE 27*4dc78e53SAndroid Build Coastguard Worker 28*4dc78e53SAndroid Build Coastguard Worker RTM_NEWLINK = 16, 29*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWLINK RTM_NEWLINK 30*4dc78e53SAndroid Build Coastguard Worker RTM_DELLINK, 31*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELLINK RTM_DELLINK 32*4dc78e53SAndroid Build Coastguard Worker RTM_GETLINK, 33*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETLINK RTM_GETLINK 34*4dc78e53SAndroid Build Coastguard Worker RTM_SETLINK, 35*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETLINK RTM_SETLINK 36*4dc78e53SAndroid Build Coastguard Worker 37*4dc78e53SAndroid Build Coastguard Worker RTM_NEWADDR = 20, 38*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWADDR RTM_NEWADDR 39*4dc78e53SAndroid Build Coastguard Worker RTM_DELADDR, 40*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELADDR RTM_DELADDR 41*4dc78e53SAndroid Build Coastguard Worker RTM_GETADDR, 42*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETADDR RTM_GETADDR 43*4dc78e53SAndroid Build Coastguard Worker 44*4dc78e53SAndroid Build Coastguard Worker RTM_NEWROUTE = 24, 45*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWROUTE RTM_NEWROUTE 46*4dc78e53SAndroid Build Coastguard Worker RTM_DELROUTE, 47*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELROUTE RTM_DELROUTE 48*4dc78e53SAndroid Build Coastguard Worker RTM_GETROUTE, 49*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETROUTE RTM_GETROUTE 50*4dc78e53SAndroid Build Coastguard Worker 51*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNEIGH = 28, 52*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEIGH RTM_NEWNEIGH 53*4dc78e53SAndroid Build Coastguard Worker RTM_DELNEIGH, 54*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNEIGH RTM_DELNEIGH 55*4dc78e53SAndroid Build Coastguard Worker RTM_GETNEIGH, 56*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEIGH RTM_GETNEIGH 57*4dc78e53SAndroid Build Coastguard Worker 58*4dc78e53SAndroid Build Coastguard Worker RTM_NEWRULE = 32, 59*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWRULE RTM_NEWRULE 60*4dc78e53SAndroid Build Coastguard Worker RTM_DELRULE, 61*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELRULE RTM_DELRULE 62*4dc78e53SAndroid Build Coastguard Worker RTM_GETRULE, 63*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETRULE RTM_GETRULE 64*4dc78e53SAndroid Build Coastguard Worker 65*4dc78e53SAndroid Build Coastguard Worker RTM_NEWQDISC = 36, 66*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWQDISC RTM_NEWQDISC 67*4dc78e53SAndroid Build Coastguard Worker RTM_DELQDISC, 68*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELQDISC RTM_DELQDISC 69*4dc78e53SAndroid Build Coastguard Worker RTM_GETQDISC, 70*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETQDISC RTM_GETQDISC 71*4dc78e53SAndroid Build Coastguard Worker 72*4dc78e53SAndroid Build Coastguard Worker RTM_NEWTCLASS = 40, 73*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWTCLASS RTM_NEWTCLASS 74*4dc78e53SAndroid Build Coastguard Worker RTM_DELTCLASS, 75*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELTCLASS RTM_DELTCLASS 76*4dc78e53SAndroid Build Coastguard Worker RTM_GETTCLASS, 77*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETTCLASS RTM_GETTCLASS 78*4dc78e53SAndroid Build Coastguard Worker 79*4dc78e53SAndroid Build Coastguard Worker RTM_NEWTFILTER = 44, 80*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWTFILTER RTM_NEWTFILTER 81*4dc78e53SAndroid Build Coastguard Worker RTM_DELTFILTER, 82*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELTFILTER RTM_DELTFILTER 83*4dc78e53SAndroid Build Coastguard Worker RTM_GETTFILTER, 84*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETTFILTER RTM_GETTFILTER 85*4dc78e53SAndroid Build Coastguard Worker 86*4dc78e53SAndroid Build Coastguard Worker RTM_NEWACTION = 48, 87*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWACTION RTM_NEWACTION 88*4dc78e53SAndroid Build Coastguard Worker RTM_DELACTION, 89*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELACTION RTM_DELACTION 90*4dc78e53SAndroid Build Coastguard Worker RTM_GETACTION, 91*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETACTION RTM_GETACTION 92*4dc78e53SAndroid Build Coastguard Worker 93*4dc78e53SAndroid Build Coastguard Worker RTM_NEWPREFIX = 52, 94*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWPREFIX RTM_NEWPREFIX 95*4dc78e53SAndroid Build Coastguard Worker 96*4dc78e53SAndroid Build Coastguard Worker RTM_GETMULTICAST = 58, 97*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETMULTICAST RTM_GETMULTICAST 98*4dc78e53SAndroid Build Coastguard Worker 99*4dc78e53SAndroid Build Coastguard Worker RTM_GETANYCAST = 62, 100*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETANYCAST RTM_GETANYCAST 101*4dc78e53SAndroid Build Coastguard Worker 102*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNEIGHTBL = 64, 103*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL 104*4dc78e53SAndroid Build Coastguard Worker RTM_GETNEIGHTBL = 66, 105*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL 106*4dc78e53SAndroid Build Coastguard Worker RTM_SETNEIGHTBL, 107*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL 108*4dc78e53SAndroid Build Coastguard Worker 109*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNDUSEROPT = 68, 110*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT 111*4dc78e53SAndroid Build Coastguard Worker 112*4dc78e53SAndroid Build Coastguard Worker RTM_NEWADDRLABEL = 72, 113*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL 114*4dc78e53SAndroid Build Coastguard Worker RTM_DELADDRLABEL, 115*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELADDRLABEL RTM_DELADDRLABEL 116*4dc78e53SAndroid Build Coastguard Worker RTM_GETADDRLABEL, 117*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETADDRLABEL RTM_GETADDRLABEL 118*4dc78e53SAndroid Build Coastguard Worker 119*4dc78e53SAndroid Build Coastguard Worker RTM_GETDCB = 78, 120*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETDCB RTM_GETDCB 121*4dc78e53SAndroid Build Coastguard Worker RTM_SETDCB, 122*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETDCB RTM_SETDCB 123*4dc78e53SAndroid Build Coastguard Worker 124*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNETCONF = 80, 125*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNETCONF RTM_NEWNETCONF 126*4dc78e53SAndroid Build Coastguard Worker RTM_DELNETCONF, 127*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNETCONF RTM_DELNETCONF 128*4dc78e53SAndroid Build Coastguard Worker RTM_GETNETCONF = 82, 129*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNETCONF RTM_GETNETCONF 130*4dc78e53SAndroid Build Coastguard Worker 131*4dc78e53SAndroid Build Coastguard Worker RTM_NEWMDB = 84, 132*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWMDB RTM_NEWMDB 133*4dc78e53SAndroid Build Coastguard Worker RTM_DELMDB = 85, 134*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELMDB RTM_DELMDB 135*4dc78e53SAndroid Build Coastguard Worker RTM_GETMDB = 86, 136*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETMDB RTM_GETMDB 137*4dc78e53SAndroid Build Coastguard Worker 138*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNSID = 88, 139*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNSID RTM_NEWNSID 140*4dc78e53SAndroid Build Coastguard Worker RTM_DELNSID = 89, 141*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNSID RTM_DELNSID 142*4dc78e53SAndroid Build Coastguard Worker RTM_GETNSID = 90, 143*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNSID RTM_GETNSID 144*4dc78e53SAndroid Build Coastguard Worker 145*4dc78e53SAndroid Build Coastguard Worker RTM_NEWSTATS = 92, 146*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWSTATS RTM_NEWSTATS 147*4dc78e53SAndroid Build Coastguard Worker RTM_GETSTATS = 94, 148*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETSTATS RTM_GETSTATS 149*4dc78e53SAndroid Build Coastguard Worker RTM_SETSTATS, 150*4dc78e53SAndroid Build Coastguard Worker #define RTM_SETSTATS RTM_SETSTATS 151*4dc78e53SAndroid Build Coastguard Worker 152*4dc78e53SAndroid Build Coastguard Worker RTM_NEWCACHEREPORT = 96, 153*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT 154*4dc78e53SAndroid Build Coastguard Worker 155*4dc78e53SAndroid Build Coastguard Worker RTM_NEWCHAIN = 100, 156*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWCHAIN RTM_NEWCHAIN 157*4dc78e53SAndroid Build Coastguard Worker RTM_DELCHAIN, 158*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELCHAIN RTM_DELCHAIN 159*4dc78e53SAndroid Build Coastguard Worker RTM_GETCHAIN, 160*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETCHAIN RTM_GETCHAIN 161*4dc78e53SAndroid Build Coastguard Worker 162*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNEXTHOP = 104, 163*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEXTHOP RTM_NEWNEXTHOP 164*4dc78e53SAndroid Build Coastguard Worker RTM_DELNEXTHOP, 165*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNEXTHOP RTM_DELNEXTHOP 166*4dc78e53SAndroid Build Coastguard Worker RTM_GETNEXTHOP, 167*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEXTHOP RTM_GETNEXTHOP 168*4dc78e53SAndroid Build Coastguard Worker 169*4dc78e53SAndroid Build Coastguard Worker RTM_NEWLINKPROP = 108, 170*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWLINKPROP RTM_NEWLINKPROP 171*4dc78e53SAndroid Build Coastguard Worker RTM_DELLINKPROP, 172*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELLINKPROP RTM_DELLINKPROP 173*4dc78e53SAndroid Build Coastguard Worker RTM_GETLINKPROP, 174*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETLINKPROP RTM_GETLINKPROP 175*4dc78e53SAndroid Build Coastguard Worker 176*4dc78e53SAndroid Build Coastguard Worker RTM_NEWVLAN = 112, 177*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNVLAN RTM_NEWVLAN 178*4dc78e53SAndroid Build Coastguard Worker RTM_DELVLAN, 179*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELVLAN RTM_DELVLAN 180*4dc78e53SAndroid Build Coastguard Worker RTM_GETVLAN, 181*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETVLAN RTM_GETVLAN 182*4dc78e53SAndroid Build Coastguard Worker 183*4dc78e53SAndroid Build Coastguard Worker RTM_NEWNEXTHOPBUCKET = 116, 184*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWNEXTHOPBUCKET RTM_NEWNEXTHOPBUCKET 185*4dc78e53SAndroid Build Coastguard Worker RTM_DELNEXTHOPBUCKET, 186*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET 187*4dc78e53SAndroid Build Coastguard Worker RTM_GETNEXTHOPBUCKET, 188*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET 189*4dc78e53SAndroid Build Coastguard Worker 190*4dc78e53SAndroid Build Coastguard Worker RTM_NEWTUNNEL = 120, 191*4dc78e53SAndroid Build Coastguard Worker #define RTM_NEWTUNNEL RTM_NEWTUNNEL 192*4dc78e53SAndroid Build Coastguard Worker RTM_DELTUNNEL, 193*4dc78e53SAndroid Build Coastguard Worker #define RTM_DELTUNNEL RTM_DELTUNNEL 194*4dc78e53SAndroid Build Coastguard Worker RTM_GETTUNNEL, 195*4dc78e53SAndroid Build Coastguard Worker #define RTM_GETTUNNEL RTM_GETTUNNEL 196*4dc78e53SAndroid Build Coastguard Worker 197*4dc78e53SAndroid Build Coastguard Worker __RTM_MAX, 198*4dc78e53SAndroid Build Coastguard Worker #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) 199*4dc78e53SAndroid Build Coastguard Worker }; 200*4dc78e53SAndroid Build Coastguard Worker 201*4dc78e53SAndroid Build Coastguard Worker #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE) 202*4dc78e53SAndroid Build Coastguard Worker #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2) 203*4dc78e53SAndroid Build Coastguard Worker #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2) 204*4dc78e53SAndroid Build Coastguard Worker 205*4dc78e53SAndroid Build Coastguard Worker /* 206*4dc78e53SAndroid Build Coastguard Worker Generic structure for encapsulation of optional route information. 207*4dc78e53SAndroid Build Coastguard Worker It is reminiscent of sockaddr, but with sa_family replaced 208*4dc78e53SAndroid Build Coastguard Worker with attribute type. 209*4dc78e53SAndroid Build Coastguard Worker */ 210*4dc78e53SAndroid Build Coastguard Worker 211*4dc78e53SAndroid Build Coastguard Worker struct rtattr { 212*4dc78e53SAndroid Build Coastguard Worker unsigned short rta_len; 213*4dc78e53SAndroid Build Coastguard Worker unsigned short rta_type; 214*4dc78e53SAndroid Build Coastguard Worker }; 215*4dc78e53SAndroid Build Coastguard Worker 216*4dc78e53SAndroid Build Coastguard Worker /* Macros to handle rtattributes */ 217*4dc78e53SAndroid Build Coastguard Worker 218*4dc78e53SAndroid Build Coastguard Worker #define RTA_ALIGNTO 4U 219*4dc78e53SAndroid Build Coastguard Worker #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) 220*4dc78e53SAndroid Build Coastguard Worker #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \ 221*4dc78e53SAndroid Build Coastguard Worker (rta)->rta_len >= sizeof(struct rtattr) && \ 222*4dc78e53SAndroid Build Coastguard Worker (rta)->rta_len <= (len)) 223*4dc78e53SAndroid Build Coastguard Worker #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), \ 224*4dc78e53SAndroid Build Coastguard Worker (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len))) 225*4dc78e53SAndroid Build Coastguard Worker #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len)) 226*4dc78e53SAndroid Build Coastguard Worker #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len)) 227*4dc78e53SAndroid Build Coastguard Worker #define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0))) 228*4dc78e53SAndroid Build Coastguard Worker #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0)) 229*4dc78e53SAndroid Build Coastguard Worker 230*4dc78e53SAndroid Build Coastguard Worker 231*4dc78e53SAndroid Build Coastguard Worker 232*4dc78e53SAndroid Build Coastguard Worker 233*4dc78e53SAndroid Build Coastguard Worker /****************************************************************************** 234*4dc78e53SAndroid Build Coastguard Worker * Definitions used in routing table administration. 235*4dc78e53SAndroid Build Coastguard Worker ****/ 236*4dc78e53SAndroid Build Coastguard Worker 237*4dc78e53SAndroid Build Coastguard Worker struct rtmsg { 238*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_family; 239*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_dst_len; 240*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_src_len; 241*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_tos; 242*4dc78e53SAndroid Build Coastguard Worker 243*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_table; /* Routing table id */ 244*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_protocol; /* Routing protocol; see below */ 245*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_scope; /* See below */ 246*4dc78e53SAndroid Build Coastguard Worker unsigned char rtm_type; /* See below */ 247*4dc78e53SAndroid Build Coastguard Worker 248*4dc78e53SAndroid Build Coastguard Worker unsigned rtm_flags; 249*4dc78e53SAndroid Build Coastguard Worker }; 250*4dc78e53SAndroid Build Coastguard Worker 251*4dc78e53SAndroid Build Coastguard Worker /* rtm_type */ 252*4dc78e53SAndroid Build Coastguard Worker 253*4dc78e53SAndroid Build Coastguard Worker enum { 254*4dc78e53SAndroid Build Coastguard Worker RTN_UNSPEC, 255*4dc78e53SAndroid Build Coastguard Worker RTN_UNICAST, /* Gateway or direct route */ 256*4dc78e53SAndroid Build Coastguard Worker RTN_LOCAL, /* Accept locally */ 257*4dc78e53SAndroid Build Coastguard Worker RTN_BROADCAST, /* Accept locally as broadcast, 258*4dc78e53SAndroid Build Coastguard Worker send as broadcast */ 259*4dc78e53SAndroid Build Coastguard Worker RTN_ANYCAST, /* Accept locally as broadcast, 260*4dc78e53SAndroid Build Coastguard Worker but send as unicast */ 261*4dc78e53SAndroid Build Coastguard Worker RTN_MULTICAST, /* Multicast route */ 262*4dc78e53SAndroid Build Coastguard Worker RTN_BLACKHOLE, /* Drop */ 263*4dc78e53SAndroid Build Coastguard Worker RTN_UNREACHABLE, /* Destination is unreachable */ 264*4dc78e53SAndroid Build Coastguard Worker RTN_PROHIBIT, /* Administratively prohibited */ 265*4dc78e53SAndroid Build Coastguard Worker RTN_THROW, /* Not in this table */ 266*4dc78e53SAndroid Build Coastguard Worker RTN_NAT, /* Translate this address */ 267*4dc78e53SAndroid Build Coastguard Worker RTN_XRESOLVE, /* Use external resolver */ 268*4dc78e53SAndroid Build Coastguard Worker __RTN_MAX 269*4dc78e53SAndroid Build Coastguard Worker }; 270*4dc78e53SAndroid Build Coastguard Worker 271*4dc78e53SAndroid Build Coastguard Worker #define RTN_MAX (__RTN_MAX - 1) 272*4dc78e53SAndroid Build Coastguard Worker 273*4dc78e53SAndroid Build Coastguard Worker 274*4dc78e53SAndroid Build Coastguard Worker /* rtm_protocol */ 275*4dc78e53SAndroid Build Coastguard Worker 276*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_UNSPEC 0 277*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_REDIRECT 1 /* Route installed by ICMP redirects; 278*4dc78e53SAndroid Build Coastguard Worker not used by current IPv4 */ 279*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_KERNEL 2 /* Route installed by kernel */ 280*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BOOT 3 /* Route installed during boot */ 281*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_STATIC 4 /* Route installed by administrator */ 282*4dc78e53SAndroid Build Coastguard Worker 283*4dc78e53SAndroid Build Coastguard Worker /* Values of protocol >= RTPROT_STATIC are not interpreted by kernel; 284*4dc78e53SAndroid Build Coastguard Worker they are just passed from user and back as is. 285*4dc78e53SAndroid Build Coastguard Worker It will be used by hypothetical multiple routing daemons. 286*4dc78e53SAndroid Build Coastguard Worker Note that protocol values should be standardized in order to 287*4dc78e53SAndroid Build Coastguard Worker avoid conflicts. 288*4dc78e53SAndroid Build Coastguard Worker */ 289*4dc78e53SAndroid Build Coastguard Worker 290*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_GATED 8 /* Apparently, GateD */ 291*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_RA 9 /* RDISC/ND router advertisements */ 292*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_MRT 10 /* Merit MRT */ 293*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_ZEBRA 11 /* Zebra */ 294*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BIRD 12 /* BIRD */ 295*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_DNROUTED 13 /* DECnet routing daemon */ 296*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_XORP 14 /* XORP */ 297*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_NTK 15 /* Netsukuku */ 298*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_DHCP 16 /* DHCP client */ 299*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_MROUTED 17 /* Multicast daemon */ 300*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_KEEPALIVED 18 /* Keepalived daemon */ 301*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BABEL 42 /* Babel daemon */ 302*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_OPENR 99 /* Open Routing (Open/R) Routes */ 303*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_BGP 186 /* BGP Routes */ 304*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_ISIS 187 /* ISIS Routes */ 305*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_OSPF 188 /* OSPF Routes */ 306*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_RIP 189 /* RIP Routes */ 307*4dc78e53SAndroid Build Coastguard Worker #define RTPROT_EIGRP 192 /* EIGRP Routes */ 308*4dc78e53SAndroid Build Coastguard Worker 309*4dc78e53SAndroid Build Coastguard Worker /* rtm_scope 310*4dc78e53SAndroid Build Coastguard Worker 311*4dc78e53SAndroid Build Coastguard Worker Really it is not scope, but sort of distance to the destination. 312*4dc78e53SAndroid Build Coastguard Worker NOWHERE are reserved for not existing destinations, HOST is our 313*4dc78e53SAndroid Build Coastguard Worker local addresses, LINK are destinations, located on directly attached 314*4dc78e53SAndroid Build Coastguard Worker link and UNIVERSE is everywhere in the Universe. 315*4dc78e53SAndroid Build Coastguard Worker 316*4dc78e53SAndroid Build Coastguard Worker Intermediate values are also possible f.e. interior routes 317*4dc78e53SAndroid Build Coastguard Worker could be assigned a value between UNIVERSE and LINK. 318*4dc78e53SAndroid Build Coastguard Worker */ 319*4dc78e53SAndroid Build Coastguard Worker 320*4dc78e53SAndroid Build Coastguard Worker enum rt_scope_t { 321*4dc78e53SAndroid Build Coastguard Worker RT_SCOPE_UNIVERSE=0, 322*4dc78e53SAndroid Build Coastguard Worker /* User defined values */ 323*4dc78e53SAndroid Build Coastguard Worker RT_SCOPE_SITE=200, 324*4dc78e53SAndroid Build Coastguard Worker RT_SCOPE_LINK=253, 325*4dc78e53SAndroid Build Coastguard Worker RT_SCOPE_HOST=254, 326*4dc78e53SAndroid Build Coastguard Worker RT_SCOPE_NOWHERE=255 327*4dc78e53SAndroid Build Coastguard Worker }; 328*4dc78e53SAndroid Build Coastguard Worker 329*4dc78e53SAndroid Build Coastguard Worker /* rtm_flags */ 330*4dc78e53SAndroid Build Coastguard Worker 331*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_NOTIFY 0x100 /* Notify user of route change */ 332*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_CLONED 0x200 /* This route is cloned */ 333*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_EQUALIZE 0x400 /* Multipath equalizer: NI */ 334*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_PREFIX 0x800 /* Prefix addresses */ 335*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_LOOKUP_TABLE 0x1000 /* set rtm_table to FIB lookup result */ 336*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_FIB_MATCH 0x2000 /* return full fib lookup match */ 337*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_OFFLOAD 0x4000 /* route is offloaded */ 338*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_TRAP 0x8000 /* route is trapping packets */ 339*4dc78e53SAndroid Build Coastguard Worker #define RTM_F_OFFLOAD_FAILED 0x20000000 /* route offload failed, this value 340*4dc78e53SAndroid Build Coastguard Worker * is chosen to avoid conflicts with 341*4dc78e53SAndroid Build Coastguard Worker * other flags defined in 342*4dc78e53SAndroid Build Coastguard Worker * include/uapi/linux/ipv6_route.h 343*4dc78e53SAndroid Build Coastguard Worker */ 344*4dc78e53SAndroid Build Coastguard Worker 345*4dc78e53SAndroid Build Coastguard Worker /* Reserved table identifiers */ 346*4dc78e53SAndroid Build Coastguard Worker 347*4dc78e53SAndroid Build Coastguard Worker enum rt_class_t { 348*4dc78e53SAndroid Build Coastguard Worker RT_TABLE_UNSPEC=0, 349*4dc78e53SAndroid Build Coastguard Worker /* User defined values */ 350*4dc78e53SAndroid Build Coastguard Worker RT_TABLE_COMPAT=252, 351*4dc78e53SAndroid Build Coastguard Worker RT_TABLE_DEFAULT=253, 352*4dc78e53SAndroid Build Coastguard Worker RT_TABLE_MAIN=254, 353*4dc78e53SAndroid Build Coastguard Worker RT_TABLE_LOCAL=255, 354*4dc78e53SAndroid Build Coastguard Worker RT_TABLE_MAX=0xFFFFFFFF 355*4dc78e53SAndroid Build Coastguard Worker }; 356*4dc78e53SAndroid Build Coastguard Worker 357*4dc78e53SAndroid Build Coastguard Worker 358*4dc78e53SAndroid Build Coastguard Worker /* Routing message attributes */ 359*4dc78e53SAndroid Build Coastguard Worker 360*4dc78e53SAndroid Build Coastguard Worker enum rtattr_type_t { 361*4dc78e53SAndroid Build Coastguard Worker RTA_UNSPEC, 362*4dc78e53SAndroid Build Coastguard Worker RTA_DST, 363*4dc78e53SAndroid Build Coastguard Worker RTA_SRC, 364*4dc78e53SAndroid Build Coastguard Worker RTA_IIF, 365*4dc78e53SAndroid Build Coastguard Worker RTA_OIF, 366*4dc78e53SAndroid Build Coastguard Worker RTA_GATEWAY, 367*4dc78e53SAndroid Build Coastguard Worker RTA_PRIORITY, 368*4dc78e53SAndroid Build Coastguard Worker RTA_PREFSRC, 369*4dc78e53SAndroid Build Coastguard Worker RTA_METRICS, 370*4dc78e53SAndroid Build Coastguard Worker RTA_MULTIPATH, 371*4dc78e53SAndroid Build Coastguard Worker RTA_PROTOINFO, /* no longer used */ 372*4dc78e53SAndroid Build Coastguard Worker RTA_FLOW, 373*4dc78e53SAndroid Build Coastguard Worker RTA_CACHEINFO, 374*4dc78e53SAndroid Build Coastguard Worker RTA_SESSION, /* no longer used */ 375*4dc78e53SAndroid Build Coastguard Worker RTA_MP_ALGO, /* no longer used */ 376*4dc78e53SAndroid Build Coastguard Worker RTA_TABLE, 377*4dc78e53SAndroid Build Coastguard Worker RTA_MARK, 378*4dc78e53SAndroid Build Coastguard Worker RTA_MFC_STATS, 379*4dc78e53SAndroid Build Coastguard Worker RTA_VIA, 380*4dc78e53SAndroid Build Coastguard Worker RTA_NEWDST, 381*4dc78e53SAndroid Build Coastguard Worker RTA_PREF, 382*4dc78e53SAndroid Build Coastguard Worker RTA_ENCAP_TYPE, 383*4dc78e53SAndroid Build Coastguard Worker RTA_ENCAP, 384*4dc78e53SAndroid Build Coastguard Worker RTA_EXPIRES, 385*4dc78e53SAndroid Build Coastguard Worker RTA_PAD, 386*4dc78e53SAndroid Build Coastguard Worker RTA_UID, 387*4dc78e53SAndroid Build Coastguard Worker RTA_TTL_PROPAGATE, 388*4dc78e53SAndroid Build Coastguard Worker RTA_IP_PROTO, 389*4dc78e53SAndroid Build Coastguard Worker RTA_SPORT, 390*4dc78e53SAndroid Build Coastguard Worker RTA_DPORT, 391*4dc78e53SAndroid Build Coastguard Worker RTA_NH_ID, 392*4dc78e53SAndroid Build Coastguard Worker __RTA_MAX 393*4dc78e53SAndroid Build Coastguard Worker }; 394*4dc78e53SAndroid Build Coastguard Worker 395*4dc78e53SAndroid Build Coastguard Worker #define RTA_MAX (__RTA_MAX - 1) 396*4dc78e53SAndroid Build Coastguard Worker 397*4dc78e53SAndroid Build Coastguard Worker #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))) 398*4dc78e53SAndroid Build Coastguard Worker #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg)) 399*4dc78e53SAndroid Build Coastguard Worker 400*4dc78e53SAndroid Build Coastguard Worker /* RTM_MULTIPATH --- array of struct rtnexthop. 401*4dc78e53SAndroid Build Coastguard Worker * 402*4dc78e53SAndroid Build Coastguard Worker * "struct rtnexthop" describes all necessary nexthop information, 403*4dc78e53SAndroid Build Coastguard Worker * i.e. parameters of path to a destination via this nexthop. 404*4dc78e53SAndroid Build Coastguard Worker * 405*4dc78e53SAndroid Build Coastguard Worker * At the moment it is impossible to set different prefsrc, mtu, window 406*4dc78e53SAndroid Build Coastguard Worker * and rtt for different paths from multipath. 407*4dc78e53SAndroid Build Coastguard Worker */ 408*4dc78e53SAndroid Build Coastguard Worker 409*4dc78e53SAndroid Build Coastguard Worker struct rtnexthop { 410*4dc78e53SAndroid Build Coastguard Worker unsigned short rtnh_len; 411*4dc78e53SAndroid Build Coastguard Worker unsigned char rtnh_flags; 412*4dc78e53SAndroid Build Coastguard Worker unsigned char rtnh_hops; 413*4dc78e53SAndroid Build Coastguard Worker int rtnh_ifindex; 414*4dc78e53SAndroid Build Coastguard Worker }; 415*4dc78e53SAndroid Build Coastguard Worker 416*4dc78e53SAndroid Build Coastguard Worker /* rtnh_flags */ 417*4dc78e53SAndroid Build Coastguard Worker 418*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_DEAD 1 /* Nexthop is dead (used by multipath) */ 419*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_PERVASIVE 2 /* Do recursive gateway lookup */ 420*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_ONLINK 4 /* Gateway is forced on link */ 421*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_OFFLOAD 8 /* Nexthop is offloaded */ 422*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_LINKDOWN 16 /* carrier-down on nexthop */ 423*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_UNRESOLVED 32 /* The entry is unresolved (ipmr) */ 424*4dc78e53SAndroid Build Coastguard Worker #define RTNH_F_TRAP 64 /* Nexthop is trapping packets */ 425*4dc78e53SAndroid Build Coastguard Worker 426*4dc78e53SAndroid Build Coastguard Worker #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | \ 427*4dc78e53SAndroid Build Coastguard Worker RTNH_F_OFFLOAD | RTNH_F_TRAP) 428*4dc78e53SAndroid Build Coastguard Worker 429*4dc78e53SAndroid Build Coastguard Worker /* Macros to handle hexthops */ 430*4dc78e53SAndroid Build Coastguard Worker 431*4dc78e53SAndroid Build Coastguard Worker #define RTNH_ALIGNTO 4 432*4dc78e53SAndroid Build Coastguard Worker #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) ) 433*4dc78e53SAndroid Build Coastguard Worker #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \ 434*4dc78e53SAndroid Build Coastguard Worker ((int)(rtnh)->rtnh_len) <= (len)) 435*4dc78e53SAndroid Build Coastguard Worker #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len))) 436*4dc78e53SAndroid Build Coastguard Worker #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len)) 437*4dc78e53SAndroid Build Coastguard Worker #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len)) 438*4dc78e53SAndroid Build Coastguard Worker #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) 439*4dc78e53SAndroid Build Coastguard Worker 440*4dc78e53SAndroid Build Coastguard Worker /* RTA_VIA */ 441*4dc78e53SAndroid Build Coastguard Worker struct rtvia { 442*4dc78e53SAndroid Build Coastguard Worker __kernel_sa_family_t rtvia_family; 443*4dc78e53SAndroid Build Coastguard Worker __u8 rtvia_addr[]; 444*4dc78e53SAndroid Build Coastguard Worker }; 445*4dc78e53SAndroid Build Coastguard Worker 446*4dc78e53SAndroid Build Coastguard Worker /* RTM_CACHEINFO */ 447*4dc78e53SAndroid Build Coastguard Worker 448*4dc78e53SAndroid Build Coastguard Worker struct rta_cacheinfo { 449*4dc78e53SAndroid Build Coastguard Worker __u32 rta_clntref; 450*4dc78e53SAndroid Build Coastguard Worker __u32 rta_lastuse; 451*4dc78e53SAndroid Build Coastguard Worker __s32 rta_expires; 452*4dc78e53SAndroid Build Coastguard Worker __u32 rta_error; 453*4dc78e53SAndroid Build Coastguard Worker __u32 rta_used; 454*4dc78e53SAndroid Build Coastguard Worker 455*4dc78e53SAndroid Build Coastguard Worker #define RTNETLINK_HAVE_PEERINFO 1 456*4dc78e53SAndroid Build Coastguard Worker __u32 rta_id; 457*4dc78e53SAndroid Build Coastguard Worker __u32 rta_ts; 458*4dc78e53SAndroid Build Coastguard Worker __u32 rta_tsage; 459*4dc78e53SAndroid Build Coastguard Worker }; 460*4dc78e53SAndroid Build Coastguard Worker 461*4dc78e53SAndroid Build Coastguard Worker /* RTM_METRICS --- array of struct rtattr with types of RTAX_* */ 462*4dc78e53SAndroid Build Coastguard Worker 463*4dc78e53SAndroid Build Coastguard Worker enum { 464*4dc78e53SAndroid Build Coastguard Worker RTAX_UNSPEC, 465*4dc78e53SAndroid Build Coastguard Worker #define RTAX_UNSPEC RTAX_UNSPEC 466*4dc78e53SAndroid Build Coastguard Worker RTAX_LOCK, 467*4dc78e53SAndroid Build Coastguard Worker #define RTAX_LOCK RTAX_LOCK 468*4dc78e53SAndroid Build Coastguard Worker RTAX_MTU, 469*4dc78e53SAndroid Build Coastguard Worker #define RTAX_MTU RTAX_MTU 470*4dc78e53SAndroid Build Coastguard Worker RTAX_WINDOW, 471*4dc78e53SAndroid Build Coastguard Worker #define RTAX_WINDOW RTAX_WINDOW 472*4dc78e53SAndroid Build Coastguard Worker RTAX_RTT, 473*4dc78e53SAndroid Build Coastguard Worker #define RTAX_RTT RTAX_RTT 474*4dc78e53SAndroid Build Coastguard Worker RTAX_RTTVAR, 475*4dc78e53SAndroid Build Coastguard Worker #define RTAX_RTTVAR RTAX_RTTVAR 476*4dc78e53SAndroid Build Coastguard Worker RTAX_SSTHRESH, 477*4dc78e53SAndroid Build Coastguard Worker #define RTAX_SSTHRESH RTAX_SSTHRESH 478*4dc78e53SAndroid Build Coastguard Worker RTAX_CWND, 479*4dc78e53SAndroid Build Coastguard Worker #define RTAX_CWND RTAX_CWND 480*4dc78e53SAndroid Build Coastguard Worker RTAX_ADVMSS, 481*4dc78e53SAndroid Build Coastguard Worker #define RTAX_ADVMSS RTAX_ADVMSS 482*4dc78e53SAndroid Build Coastguard Worker RTAX_REORDERING, 483*4dc78e53SAndroid Build Coastguard Worker #define RTAX_REORDERING RTAX_REORDERING 484*4dc78e53SAndroid Build Coastguard Worker RTAX_HOPLIMIT, 485*4dc78e53SAndroid Build Coastguard Worker #define RTAX_HOPLIMIT RTAX_HOPLIMIT 486*4dc78e53SAndroid Build Coastguard Worker RTAX_INITCWND, 487*4dc78e53SAndroid Build Coastguard Worker #define RTAX_INITCWND RTAX_INITCWND 488*4dc78e53SAndroid Build Coastguard Worker RTAX_FEATURES, 489*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURES RTAX_FEATURES 490*4dc78e53SAndroid Build Coastguard Worker RTAX_RTO_MIN, 491*4dc78e53SAndroid Build Coastguard Worker #define RTAX_RTO_MIN RTAX_RTO_MIN 492*4dc78e53SAndroid Build Coastguard Worker RTAX_INITRWND, 493*4dc78e53SAndroid Build Coastguard Worker #define RTAX_INITRWND RTAX_INITRWND 494*4dc78e53SAndroid Build Coastguard Worker RTAX_QUICKACK, 495*4dc78e53SAndroid Build Coastguard Worker #define RTAX_QUICKACK RTAX_QUICKACK 496*4dc78e53SAndroid Build Coastguard Worker RTAX_CC_ALGO, 497*4dc78e53SAndroid Build Coastguard Worker #define RTAX_CC_ALGO RTAX_CC_ALGO 498*4dc78e53SAndroid Build Coastguard Worker RTAX_FASTOPEN_NO_COOKIE, 499*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE 500*4dc78e53SAndroid Build Coastguard Worker __RTAX_MAX 501*4dc78e53SAndroid Build Coastguard Worker }; 502*4dc78e53SAndroid Build Coastguard Worker 503*4dc78e53SAndroid Build Coastguard Worker #define RTAX_MAX (__RTAX_MAX - 1) 504*4dc78e53SAndroid Build Coastguard Worker 505*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_ECN (1 << 0) 506*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_SACK (1 << 1) 507*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_TIMESTAMP (1 << 2) 508*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_ALLFRAG (1 << 3) 509*4dc78e53SAndroid Build Coastguard Worker 510*4dc78e53SAndroid Build Coastguard Worker #define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \ 511*4dc78e53SAndroid Build Coastguard Worker RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG) 512*4dc78e53SAndroid Build Coastguard Worker 513*4dc78e53SAndroid Build Coastguard Worker struct rta_session { 514*4dc78e53SAndroid Build Coastguard Worker __u8 proto; 515*4dc78e53SAndroid Build Coastguard Worker __u8 pad1; 516*4dc78e53SAndroid Build Coastguard Worker __u16 pad2; 517*4dc78e53SAndroid Build Coastguard Worker 518*4dc78e53SAndroid Build Coastguard Worker union { 519*4dc78e53SAndroid Build Coastguard Worker struct { 520*4dc78e53SAndroid Build Coastguard Worker __u16 sport; 521*4dc78e53SAndroid Build Coastguard Worker __u16 dport; 522*4dc78e53SAndroid Build Coastguard Worker } ports; 523*4dc78e53SAndroid Build Coastguard Worker 524*4dc78e53SAndroid Build Coastguard Worker struct { 525*4dc78e53SAndroid Build Coastguard Worker __u8 type; 526*4dc78e53SAndroid Build Coastguard Worker __u8 code; 527*4dc78e53SAndroid Build Coastguard Worker __u16 ident; 528*4dc78e53SAndroid Build Coastguard Worker } icmpt; 529*4dc78e53SAndroid Build Coastguard Worker 530*4dc78e53SAndroid Build Coastguard Worker __u32 spi; 531*4dc78e53SAndroid Build Coastguard Worker } u; 532*4dc78e53SAndroid Build Coastguard Worker }; 533*4dc78e53SAndroid Build Coastguard Worker 534*4dc78e53SAndroid Build Coastguard Worker struct rta_mfc_stats { 535*4dc78e53SAndroid Build Coastguard Worker __u64 mfcs_packets; 536*4dc78e53SAndroid Build Coastguard Worker __u64 mfcs_bytes; 537*4dc78e53SAndroid Build Coastguard Worker __u64 mfcs_wrong_if; 538*4dc78e53SAndroid Build Coastguard Worker }; 539*4dc78e53SAndroid Build Coastguard Worker 540*4dc78e53SAndroid Build Coastguard Worker /**** 541*4dc78e53SAndroid Build Coastguard Worker * General form of address family dependent message. 542*4dc78e53SAndroid Build Coastguard Worker ****/ 543*4dc78e53SAndroid Build Coastguard Worker 544*4dc78e53SAndroid Build Coastguard Worker struct rtgenmsg { 545*4dc78e53SAndroid Build Coastguard Worker unsigned char rtgen_family; 546*4dc78e53SAndroid Build Coastguard Worker }; 547*4dc78e53SAndroid Build Coastguard Worker 548*4dc78e53SAndroid Build Coastguard Worker /***************************************************************** 549*4dc78e53SAndroid Build Coastguard Worker * Link layer specific messages. 550*4dc78e53SAndroid Build Coastguard Worker ****/ 551*4dc78e53SAndroid Build Coastguard Worker 552*4dc78e53SAndroid Build Coastguard Worker /* struct ifinfomsg 553*4dc78e53SAndroid Build Coastguard Worker * passes link level specific information, not dependent 554*4dc78e53SAndroid Build Coastguard Worker * on network protocol. 555*4dc78e53SAndroid Build Coastguard Worker */ 556*4dc78e53SAndroid Build Coastguard Worker 557*4dc78e53SAndroid Build Coastguard Worker struct ifinfomsg { 558*4dc78e53SAndroid Build Coastguard Worker unsigned char ifi_family; 559*4dc78e53SAndroid Build Coastguard Worker unsigned char __ifi_pad; 560*4dc78e53SAndroid Build Coastguard Worker unsigned short ifi_type; /* ARPHRD_* */ 561*4dc78e53SAndroid Build Coastguard Worker int ifi_index; /* Link index */ 562*4dc78e53SAndroid Build Coastguard Worker unsigned ifi_flags; /* IFF_* flags */ 563*4dc78e53SAndroid Build Coastguard Worker unsigned ifi_change; /* IFF_* change mask */ 564*4dc78e53SAndroid Build Coastguard Worker }; 565*4dc78e53SAndroid Build Coastguard Worker 566*4dc78e53SAndroid Build Coastguard Worker /******************************************************************** 567*4dc78e53SAndroid Build Coastguard Worker * prefix information 568*4dc78e53SAndroid Build Coastguard Worker ****/ 569*4dc78e53SAndroid Build Coastguard Worker 570*4dc78e53SAndroid Build Coastguard Worker struct prefixmsg { 571*4dc78e53SAndroid Build Coastguard Worker unsigned char prefix_family; 572*4dc78e53SAndroid Build Coastguard Worker unsigned char prefix_pad1; 573*4dc78e53SAndroid Build Coastguard Worker unsigned short prefix_pad2; 574*4dc78e53SAndroid Build Coastguard Worker int prefix_ifindex; 575*4dc78e53SAndroid Build Coastguard Worker unsigned char prefix_type; 576*4dc78e53SAndroid Build Coastguard Worker unsigned char prefix_len; 577*4dc78e53SAndroid Build Coastguard Worker unsigned char prefix_flags; 578*4dc78e53SAndroid Build Coastguard Worker unsigned char prefix_pad3; 579*4dc78e53SAndroid Build Coastguard Worker }; 580*4dc78e53SAndroid Build Coastguard Worker 581*4dc78e53SAndroid Build Coastguard Worker enum 582*4dc78e53SAndroid Build Coastguard Worker { 583*4dc78e53SAndroid Build Coastguard Worker PREFIX_UNSPEC, 584*4dc78e53SAndroid Build Coastguard Worker PREFIX_ADDRESS, 585*4dc78e53SAndroid Build Coastguard Worker PREFIX_CACHEINFO, 586*4dc78e53SAndroid Build Coastguard Worker __PREFIX_MAX 587*4dc78e53SAndroid Build Coastguard Worker }; 588*4dc78e53SAndroid Build Coastguard Worker 589*4dc78e53SAndroid Build Coastguard Worker #define PREFIX_MAX (__PREFIX_MAX - 1) 590*4dc78e53SAndroid Build Coastguard Worker 591*4dc78e53SAndroid Build Coastguard Worker struct prefix_cacheinfo { 592*4dc78e53SAndroid Build Coastguard Worker __u32 preferred_time; 593*4dc78e53SAndroid Build Coastguard Worker __u32 valid_time; 594*4dc78e53SAndroid Build Coastguard Worker }; 595*4dc78e53SAndroid Build Coastguard Worker 596*4dc78e53SAndroid Build Coastguard Worker 597*4dc78e53SAndroid Build Coastguard Worker /***************************************************************** 598*4dc78e53SAndroid Build Coastguard Worker * Traffic control messages. 599*4dc78e53SAndroid Build Coastguard Worker ****/ 600*4dc78e53SAndroid Build Coastguard Worker 601*4dc78e53SAndroid Build Coastguard Worker struct tcmsg { 602*4dc78e53SAndroid Build Coastguard Worker unsigned char tcm_family; 603*4dc78e53SAndroid Build Coastguard Worker unsigned char tcm__pad1; 604*4dc78e53SAndroid Build Coastguard Worker unsigned short tcm__pad2; 605*4dc78e53SAndroid Build Coastguard Worker int tcm_ifindex; 606*4dc78e53SAndroid Build Coastguard Worker __u32 tcm_handle; 607*4dc78e53SAndroid Build Coastguard Worker __u32 tcm_parent; 608*4dc78e53SAndroid Build Coastguard Worker /* tcm_block_index is used instead of tcm_parent 609*4dc78e53SAndroid Build Coastguard Worker * in case tcm_ifindex == TCM_IFINDEX_MAGIC_BLOCK 610*4dc78e53SAndroid Build Coastguard Worker */ 611*4dc78e53SAndroid Build Coastguard Worker #define tcm_block_index tcm_parent 612*4dc78e53SAndroid Build Coastguard Worker __u32 tcm_info; 613*4dc78e53SAndroid Build Coastguard Worker }; 614*4dc78e53SAndroid Build Coastguard Worker 615*4dc78e53SAndroid Build Coastguard Worker /* For manipulation of filters in shared block, tcm_ifindex is set to 616*4dc78e53SAndroid Build Coastguard Worker * TCM_IFINDEX_MAGIC_BLOCK, and tcm_parent is aliased to tcm_block_index 617*4dc78e53SAndroid Build Coastguard Worker * which is the block index. 618*4dc78e53SAndroid Build Coastguard Worker */ 619*4dc78e53SAndroid Build Coastguard Worker #define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU) 620*4dc78e53SAndroid Build Coastguard Worker 621*4dc78e53SAndroid Build Coastguard Worker enum { 622*4dc78e53SAndroid Build Coastguard Worker TCA_UNSPEC, 623*4dc78e53SAndroid Build Coastguard Worker TCA_KIND, 624*4dc78e53SAndroid Build Coastguard Worker TCA_OPTIONS, 625*4dc78e53SAndroid Build Coastguard Worker TCA_STATS, 626*4dc78e53SAndroid Build Coastguard Worker TCA_XSTATS, 627*4dc78e53SAndroid Build Coastguard Worker TCA_RATE, 628*4dc78e53SAndroid Build Coastguard Worker TCA_FCNT, 629*4dc78e53SAndroid Build Coastguard Worker TCA_STATS2, 630*4dc78e53SAndroid Build Coastguard Worker TCA_STAB, 631*4dc78e53SAndroid Build Coastguard Worker TCA_PAD, 632*4dc78e53SAndroid Build Coastguard Worker TCA_DUMP_INVISIBLE, 633*4dc78e53SAndroid Build Coastguard Worker TCA_CHAIN, 634*4dc78e53SAndroid Build Coastguard Worker TCA_HW_OFFLOAD, 635*4dc78e53SAndroid Build Coastguard Worker TCA_INGRESS_BLOCK, 636*4dc78e53SAndroid Build Coastguard Worker TCA_EGRESS_BLOCK, 637*4dc78e53SAndroid Build Coastguard Worker TCA_DUMP_FLAGS, 638*4dc78e53SAndroid Build Coastguard Worker TCA_EXT_WARN_MSG, 639*4dc78e53SAndroid Build Coastguard Worker __TCA_MAX 640*4dc78e53SAndroid Build Coastguard Worker }; 641*4dc78e53SAndroid Build Coastguard Worker 642*4dc78e53SAndroid Build Coastguard Worker #define TCA_MAX (__TCA_MAX - 1) 643*4dc78e53SAndroid Build Coastguard Worker 644*4dc78e53SAndroid Build Coastguard Worker #define TCA_DUMP_FLAGS_TERSE (1 << 0) /* Means that in dump user gets only basic 645*4dc78e53SAndroid Build Coastguard Worker * data necessary to identify the objects 646*4dc78e53SAndroid Build Coastguard Worker * (handle, cookie, etc.) and stats. 647*4dc78e53SAndroid Build Coastguard Worker */ 648*4dc78e53SAndroid Build Coastguard Worker 649*4dc78e53SAndroid Build Coastguard Worker #define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg)))) 650*4dc78e53SAndroid Build Coastguard Worker #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg)) 651*4dc78e53SAndroid Build Coastguard Worker 652*4dc78e53SAndroid Build Coastguard Worker /******************************************************************** 653*4dc78e53SAndroid Build Coastguard Worker * Neighbor Discovery userland options 654*4dc78e53SAndroid Build Coastguard Worker ****/ 655*4dc78e53SAndroid Build Coastguard Worker 656*4dc78e53SAndroid Build Coastguard Worker struct nduseroptmsg { 657*4dc78e53SAndroid Build Coastguard Worker unsigned char nduseropt_family; 658*4dc78e53SAndroid Build Coastguard Worker unsigned char nduseropt_pad1; 659*4dc78e53SAndroid Build Coastguard Worker unsigned short nduseropt_opts_len; /* Total length of options */ 660*4dc78e53SAndroid Build Coastguard Worker int nduseropt_ifindex; 661*4dc78e53SAndroid Build Coastguard Worker __u8 nduseropt_icmp_type; 662*4dc78e53SAndroid Build Coastguard Worker __u8 nduseropt_icmp_code; 663*4dc78e53SAndroid Build Coastguard Worker unsigned short nduseropt_pad2; 664*4dc78e53SAndroid Build Coastguard Worker unsigned int nduseropt_pad3; 665*4dc78e53SAndroid Build Coastguard Worker /* Followed by one or more ND options */ 666*4dc78e53SAndroid Build Coastguard Worker }; 667*4dc78e53SAndroid Build Coastguard Worker 668*4dc78e53SAndroid Build Coastguard Worker enum { 669*4dc78e53SAndroid Build Coastguard Worker NDUSEROPT_UNSPEC, 670*4dc78e53SAndroid Build Coastguard Worker NDUSEROPT_SRCADDR, 671*4dc78e53SAndroid Build Coastguard Worker __NDUSEROPT_MAX 672*4dc78e53SAndroid Build Coastguard Worker }; 673*4dc78e53SAndroid Build Coastguard Worker 674*4dc78e53SAndroid Build Coastguard Worker #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1) 675*4dc78e53SAndroid Build Coastguard Worker 676*4dc78e53SAndroid Build Coastguard Worker /* RTnetlink multicast groups - backwards compatibility for userspace */ 677*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_LINK 1 678*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_NOTIFY 2 679*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_NEIGH 4 680*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_TC 8 681*4dc78e53SAndroid Build Coastguard Worker 682*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_IFADDR 0x10 683*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_MROUTE 0x20 684*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_ROUTE 0x40 685*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV4_RULE 0x80 686*4dc78e53SAndroid Build Coastguard Worker 687*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_IFADDR 0x100 688*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_MROUTE 0x200 689*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_ROUTE 0x400 690*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_IFINFO 0x800 691*4dc78e53SAndroid Build Coastguard Worker 692*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_DECnet_IFADDR 0x1000 693*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_DECnet_ROUTE 0x4000 694*4dc78e53SAndroid Build Coastguard Worker 695*4dc78e53SAndroid Build Coastguard Worker #define RTMGRP_IPV6_PREFIX 0x20000 696*4dc78e53SAndroid Build Coastguard Worker 697*4dc78e53SAndroid Build Coastguard Worker /* RTnetlink multicast groups */ 698*4dc78e53SAndroid Build Coastguard Worker enum rtnetlink_groups { 699*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NONE, 700*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NONE RTNLGRP_NONE 701*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_LINK, 702*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_LINK RTNLGRP_LINK 703*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NOTIFY, 704*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY 705*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NEIGH, 706*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NEIGH RTNLGRP_NEIGH 707*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_TC, 708*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_TC RTNLGRP_TC 709*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV4_IFADDR, 710*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR 711*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV4_MROUTE, 712*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE 713*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV4_ROUTE, 714*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE 715*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV4_RULE, 716*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE 717*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_IFADDR, 718*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR 719*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_MROUTE, 720*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE 721*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_ROUTE, 722*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE 723*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_IFINFO, 724*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO 725*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_DECnet_IFADDR, 726*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR 727*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NOP2, 728*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_DECnet_ROUTE, 729*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE 730*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_DECnet_RULE, 731*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE 732*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NOP4, 733*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_PREFIX, 734*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX 735*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_RULE, 736*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE 737*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_ND_USEROPT, 738*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT 739*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_PHONET_IFADDR, 740*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR 741*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_PHONET_ROUTE, 742*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE 743*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_DCB, 744*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_DCB RTNLGRP_DCB 745*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV4_NETCONF, 746*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF 747*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_NETCONF, 748*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF 749*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_MDB, 750*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MDB RTNLGRP_MDB 751*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_MPLS_ROUTE, 752*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE 753*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NSID, 754*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NSID RTNLGRP_NSID 755*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_MPLS_NETCONF, 756*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF 757*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV4_MROUTE_R, 758*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R 759*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_IPV6_MROUTE_R, 760*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R 761*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_NEXTHOP, 762*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_NEXTHOP RTNLGRP_NEXTHOP 763*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_BRVLAN, 764*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN 765*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_MCTP_IFADDR, 766*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR 767*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_TUNNEL, 768*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_TUNNEL RTNLGRP_TUNNEL 769*4dc78e53SAndroid Build Coastguard Worker RTNLGRP_STATS, 770*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_STATS RTNLGRP_STATS 771*4dc78e53SAndroid Build Coastguard Worker __RTNLGRP_MAX 772*4dc78e53SAndroid Build Coastguard Worker }; 773*4dc78e53SAndroid Build Coastguard Worker #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) 774*4dc78e53SAndroid Build Coastguard Worker 775*4dc78e53SAndroid Build Coastguard Worker /* TC action piece */ 776*4dc78e53SAndroid Build Coastguard Worker struct tcamsg { 777*4dc78e53SAndroid Build Coastguard Worker unsigned char tca_family; 778*4dc78e53SAndroid Build Coastguard Worker unsigned char tca__pad1; 779*4dc78e53SAndroid Build Coastguard Worker unsigned short tca__pad2; 780*4dc78e53SAndroid Build Coastguard Worker }; 781*4dc78e53SAndroid Build Coastguard Worker 782*4dc78e53SAndroid Build Coastguard Worker enum { 783*4dc78e53SAndroid Build Coastguard Worker TCA_ROOT_UNSPEC, 784*4dc78e53SAndroid Build Coastguard Worker TCA_ROOT_TAB, 785*4dc78e53SAndroid Build Coastguard Worker #define TCA_ACT_TAB TCA_ROOT_TAB 786*4dc78e53SAndroid Build Coastguard Worker #define TCAA_MAX TCA_ROOT_TAB 787*4dc78e53SAndroid Build Coastguard Worker TCA_ROOT_FLAGS, 788*4dc78e53SAndroid Build Coastguard Worker TCA_ROOT_COUNT, 789*4dc78e53SAndroid Build Coastguard Worker TCA_ROOT_TIME_DELTA, /* in msecs */ 790*4dc78e53SAndroid Build Coastguard Worker TCA_ROOT_EXT_WARN_MSG, 791*4dc78e53SAndroid Build Coastguard Worker __TCA_ROOT_MAX, 792*4dc78e53SAndroid Build Coastguard Worker #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1) 793*4dc78e53SAndroid Build Coastguard Worker }; 794*4dc78e53SAndroid Build Coastguard Worker 795*4dc78e53SAndroid Build Coastguard Worker #define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg)))) 796*4dc78e53SAndroid Build Coastguard Worker #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg)) 797*4dc78e53SAndroid Build Coastguard Worker /* tcamsg flags stored in attribute TCA_ROOT_FLAGS 798*4dc78e53SAndroid Build Coastguard Worker * 799*4dc78e53SAndroid Build Coastguard Worker * TCA_ACT_FLAG_LARGE_DUMP_ON user->kernel to request for larger than 800*4dc78e53SAndroid Build Coastguard Worker * TCA_ACT_MAX_PRIO actions in a dump. All dump responses will contain the 801*4dc78e53SAndroid Build Coastguard Worker * number of actions being dumped stored in for user app's consumption in 802*4dc78e53SAndroid Build Coastguard Worker * TCA_ROOT_COUNT 803*4dc78e53SAndroid Build Coastguard Worker * 804*4dc78e53SAndroid Build Coastguard Worker * TCA_ACT_FLAG_TERSE_DUMP user->kernel to request terse (brief) dump that only 805*4dc78e53SAndroid Build Coastguard Worker * includes essential action info (kind, index, etc.) 806*4dc78e53SAndroid Build Coastguard Worker * 807*4dc78e53SAndroid Build Coastguard Worker */ 808*4dc78e53SAndroid Build Coastguard Worker #define TCA_FLAG_LARGE_DUMP_ON (1 << 0) 809*4dc78e53SAndroid Build Coastguard Worker #define TCA_ACT_FLAG_LARGE_DUMP_ON TCA_FLAG_LARGE_DUMP_ON 810*4dc78e53SAndroid Build Coastguard Worker #define TCA_ACT_FLAG_TERSE_DUMP (1 << 1) 811*4dc78e53SAndroid Build Coastguard Worker 812*4dc78e53SAndroid Build Coastguard Worker /* New extended info filters for IFLA_EXT_MASK */ 813*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_VF (1 << 0) 814*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_BRVLAN (1 << 1) 815*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2) 816*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_SKIP_STATS (1 << 3) 817*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_MRP (1 << 4) 818*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_CFM_CONFIG (1 << 5) 819*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_CFM_STATUS (1 << 6) 820*4dc78e53SAndroid Build Coastguard Worker #define RTEXT_FILTER_MST (1 << 7) 821*4dc78e53SAndroid Build Coastguard Worker 822*4dc78e53SAndroid Build Coastguard Worker /* End of information exported to user level */ 823*4dc78e53SAndroid Build Coastguard Worker 824*4dc78e53SAndroid Build Coastguard Worker 825*4dc78e53SAndroid Build Coastguard Worker 826*4dc78e53SAndroid Build Coastguard Worker #endif /* __LINUX_RTNETLINK_H */ 827