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