1*4882a593Smuzhiyun /* SPDX-License-Identifier: MIT */ 2*4882a593Smuzhiyun /* Copyright (C) 2016-2020 B.A.T.M.A.N. contributors: 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Matthias Schiffer 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _UAPI_LINUX_BATMAN_ADV_H_ 8*4882a593Smuzhiyun #define _UAPI_LINUX_BATMAN_ADV_H_ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #define BATADV_NL_NAME "batadv" 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define BATADV_NL_MCAST_GROUP_CONFIG "config" 13*4882a593Smuzhiyun #define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter" 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /** 16*4882a593Smuzhiyun * enum batadv_tt_client_flags - TT client specific flags 17*4882a593Smuzhiyun * 18*4882a593Smuzhiyun * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire. 19*4882a593Smuzhiyun * Bits from 8 to 15 are called _local flags_ because they are used for local 20*4882a593Smuzhiyun * computations only. 21*4882a593Smuzhiyun * 22*4882a593Smuzhiyun * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with 23*4882a593Smuzhiyun * the other nodes in the network. To achieve this goal these flags are included 24*4882a593Smuzhiyun * in the TT CRC computation. 25*4882a593Smuzhiyun */ 26*4882a593Smuzhiyun enum batadv_tt_client_flags { 27*4882a593Smuzhiyun /** 28*4882a593Smuzhiyun * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table 29*4882a593Smuzhiyun */ 30*4882a593Smuzhiyun BATADV_TT_CLIENT_DEL = (1 << 0), 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /** 33*4882a593Smuzhiyun * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and 34*4882a593Smuzhiyun * the new update telling its new real location has not been 35*4882a593Smuzhiyun * received/sent yet 36*4882a593Smuzhiyun */ 37*4882a593Smuzhiyun BATADV_TT_CLIENT_ROAM = (1 << 1), 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /** 40*4882a593Smuzhiyun * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi 41*4882a593Smuzhiyun * interface. This information is used by the "AP Isolation" feature 42*4882a593Smuzhiyun */ 43*4882a593Smuzhiyun BATADV_TT_CLIENT_WIFI = (1 << 4), 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /** 46*4882a593Smuzhiyun * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This 47*4882a593Smuzhiyun * information is used by the Extended Isolation feature 48*4882a593Smuzhiyun */ 49*4882a593Smuzhiyun BATADV_TT_CLIENT_ISOLA = (1 << 5), 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /** 52*4882a593Smuzhiyun * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from 53*4882a593Smuzhiyun * the table 54*4882a593Smuzhiyun */ 55*4882a593Smuzhiyun BATADV_TT_CLIENT_NOPURGE = (1 << 8), 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun /** 58*4882a593Smuzhiyun * @BATADV_TT_CLIENT_NEW: this client has been added to the local table 59*4882a593Smuzhiyun * but has not been announced yet 60*4882a593Smuzhiyun */ 61*4882a593Smuzhiyun BATADV_TT_CLIENT_NEW = (1 << 9), 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /** 64*4882a593Smuzhiyun * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it 65*4882a593Smuzhiyun * is kept in the table for one more originator interval for consistency 66*4882a593Smuzhiyun * purposes 67*4882a593Smuzhiyun */ 68*4882a593Smuzhiyun BATADV_TT_CLIENT_PENDING = (1 << 10), 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun /** 71*4882a593Smuzhiyun * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be 72*4882a593Smuzhiyun * part of the network but no node has already announced it 73*4882a593Smuzhiyun */ 74*4882a593Smuzhiyun BATADV_TT_CLIENT_TEMP = (1 << 11), 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun /** 78*4882a593Smuzhiyun * enum batadv_mcast_flags_priv - Private, own multicast flags 79*4882a593Smuzhiyun * 80*4882a593Smuzhiyun * These are internal, multicast related flags. Currently they describe certain 81*4882a593Smuzhiyun * multicast related attributes of the segment this originator bridges into the 82*4882a593Smuzhiyun * mesh. 83*4882a593Smuzhiyun * 84*4882a593Smuzhiyun * Those attributes are used to determine the public multicast flags this 85*4882a593Smuzhiyun * originator is going to announce via TT. 86*4882a593Smuzhiyun * 87*4882a593Smuzhiyun * For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier 88*4882a593Smuzhiyun * related flags are undefined. 89*4882a593Smuzhiyun */ 90*4882a593Smuzhiyun enum batadv_mcast_flags_priv { 91*4882a593Smuzhiyun /** 92*4882a593Smuzhiyun * @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh 93*4882a593Smuzhiyun * interface. 94*4882a593Smuzhiyun */ 95*4882a593Smuzhiyun BATADV_MCAST_FLAGS_BRIDGED = (1 << 0), 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun /** 98*4882a593Smuzhiyun * @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier 99*4882a593Smuzhiyun * exists in the mesh 100*4882a593Smuzhiyun */ 101*4882a593Smuzhiyun BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS = (1 << 1), 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /** 104*4882a593Smuzhiyun * @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier 105*4882a593Smuzhiyun * exists in the mesh 106*4882a593Smuzhiyun */ 107*4882a593Smuzhiyun BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS = (1 << 2), 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /** 110*4882a593Smuzhiyun * @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier 111*4882a593Smuzhiyun * exists, whether it is potentially shadowing multicast listeners 112*4882a593Smuzhiyun * (i.e. querier is behind our own bridge segment) 113*4882a593Smuzhiyun */ 114*4882a593Smuzhiyun BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3), 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /** 117*4882a593Smuzhiyun * @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier 118*4882a593Smuzhiyun * exists, whether it is potentially shadowing multicast listeners 119*4882a593Smuzhiyun * (i.e. querier is behind our own bridge segment) 120*4882a593Smuzhiyun */ 121*4882a593Smuzhiyun BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4), 122*4882a593Smuzhiyun }; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /** 125*4882a593Smuzhiyun * enum batadv_gw_modes - gateway mode of node 126*4882a593Smuzhiyun */ 127*4882a593Smuzhiyun enum batadv_gw_modes { 128*4882a593Smuzhiyun /** @BATADV_GW_MODE_OFF: gw mode disabled */ 129*4882a593Smuzhiyun BATADV_GW_MODE_OFF, 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /** @BATADV_GW_MODE_CLIENT: send DHCP requests to gw servers */ 132*4882a593Smuzhiyun BATADV_GW_MODE_CLIENT, 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun /** @BATADV_GW_MODE_SERVER: announce itself as gateway server */ 135*4882a593Smuzhiyun BATADV_GW_MODE_SERVER, 136*4882a593Smuzhiyun }; 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun /** 139*4882a593Smuzhiyun * enum batadv_nl_attrs - batman-adv netlink attributes 140*4882a593Smuzhiyun */ 141*4882a593Smuzhiyun enum batadv_nl_attrs { 142*4882a593Smuzhiyun /** 143*4882a593Smuzhiyun * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors 144*4882a593Smuzhiyun */ 145*4882a593Smuzhiyun BATADV_ATTR_UNSPEC, 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun /** 148*4882a593Smuzhiyun * @BATADV_ATTR_VERSION: batman-adv version string 149*4882a593Smuzhiyun */ 150*4882a593Smuzhiyun BATADV_ATTR_VERSION, 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun /** 153*4882a593Smuzhiyun * @BATADV_ATTR_ALGO_NAME: name of routing algorithm 154*4882a593Smuzhiyun */ 155*4882a593Smuzhiyun BATADV_ATTR_ALGO_NAME, 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun /** 158*4882a593Smuzhiyun * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface 159*4882a593Smuzhiyun */ 160*4882a593Smuzhiyun BATADV_ATTR_MESH_IFINDEX, 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun /** 163*4882a593Smuzhiyun * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface 164*4882a593Smuzhiyun */ 165*4882a593Smuzhiyun BATADV_ATTR_MESH_IFNAME, 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /** 168*4882a593Smuzhiyun * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface 169*4882a593Smuzhiyun */ 170*4882a593Smuzhiyun BATADV_ATTR_MESH_ADDRESS, 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /** 173*4882a593Smuzhiyun * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface 174*4882a593Smuzhiyun */ 175*4882a593Smuzhiyun BATADV_ATTR_HARD_IFINDEX, 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun /** 178*4882a593Smuzhiyun * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface 179*4882a593Smuzhiyun */ 180*4882a593Smuzhiyun BATADV_ATTR_HARD_IFNAME, 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /** 183*4882a593Smuzhiyun * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv 184*4882a593Smuzhiyun * interface 185*4882a593Smuzhiyun */ 186*4882a593Smuzhiyun BATADV_ATTR_HARD_ADDRESS, 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun /** 189*4882a593Smuzhiyun * @BATADV_ATTR_ORIG_ADDRESS: originator mac address 190*4882a593Smuzhiyun */ 191*4882a593Smuzhiyun BATADV_ATTR_ORIG_ADDRESS, 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun /** 194*4882a593Smuzhiyun * @BATADV_ATTR_TPMETER_RESULT: result of run (see 195*4882a593Smuzhiyun * batadv_tp_meter_status) 196*4882a593Smuzhiyun */ 197*4882a593Smuzhiyun BATADV_ATTR_TPMETER_RESULT, 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun /** 200*4882a593Smuzhiyun * @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took 201*4882a593Smuzhiyun */ 202*4882a593Smuzhiyun BATADV_ATTR_TPMETER_TEST_TIME, 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun /** 205*4882a593Smuzhiyun * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run 206*4882a593Smuzhiyun */ 207*4882a593Smuzhiyun BATADV_ATTR_TPMETER_BYTES, 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun /** 210*4882a593Smuzhiyun * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session 211*4882a593Smuzhiyun */ 212*4882a593Smuzhiyun BATADV_ATTR_TPMETER_COOKIE, 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun /** 215*4882a593Smuzhiyun * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment 216*4882a593Smuzhiyun */ 217*4882a593Smuzhiyun BATADV_ATTR_PAD, 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun /** 220*4882a593Smuzhiyun * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active 221*4882a593Smuzhiyun */ 222*4882a593Smuzhiyun BATADV_ATTR_ACTIVE, 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun /** 225*4882a593Smuzhiyun * @BATADV_ATTR_TT_ADDRESS: Client MAC address 226*4882a593Smuzhiyun */ 227*4882a593Smuzhiyun BATADV_ATTR_TT_ADDRESS, 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun /** 230*4882a593Smuzhiyun * @BATADV_ATTR_TT_TTVN: Translation table version 231*4882a593Smuzhiyun */ 232*4882a593Smuzhiyun BATADV_ATTR_TT_TTVN, 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /** 235*4882a593Smuzhiyun * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version 236*4882a593Smuzhiyun */ 237*4882a593Smuzhiyun BATADV_ATTR_TT_LAST_TTVN, 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun /** 240*4882a593Smuzhiyun * @BATADV_ATTR_TT_CRC32: CRC32 over translation table 241*4882a593Smuzhiyun */ 242*4882a593Smuzhiyun BATADV_ATTR_TT_CRC32, 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun /** 245*4882a593Smuzhiyun * @BATADV_ATTR_TT_VID: VLAN ID 246*4882a593Smuzhiyun */ 247*4882a593Smuzhiyun BATADV_ATTR_TT_VID, 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun /** 250*4882a593Smuzhiyun * @BATADV_ATTR_TT_FLAGS: Translation table client flags 251*4882a593Smuzhiyun */ 252*4882a593Smuzhiyun BATADV_ATTR_TT_FLAGS, 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun /** 255*4882a593Smuzhiyun * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best 256*4882a593Smuzhiyun */ 257*4882a593Smuzhiyun BATADV_ATTR_FLAG_BEST, 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun /** 260*4882a593Smuzhiyun * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen 261*4882a593Smuzhiyun */ 262*4882a593Smuzhiyun BATADV_ATTR_LAST_SEEN_MSECS, 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /** 265*4882a593Smuzhiyun * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address 266*4882a593Smuzhiyun */ 267*4882a593Smuzhiyun BATADV_ATTR_NEIGH_ADDRESS, 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun /** 270*4882a593Smuzhiyun * @BATADV_ATTR_TQ: TQ to neighbour 271*4882a593Smuzhiyun */ 272*4882a593Smuzhiyun BATADV_ATTR_TQ, 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun /** 275*4882a593Smuzhiyun * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour 276*4882a593Smuzhiyun */ 277*4882a593Smuzhiyun BATADV_ATTR_THROUGHPUT, 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun /** 280*4882a593Smuzhiyun * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth 281*4882a593Smuzhiyun */ 282*4882a593Smuzhiyun BATADV_ATTR_BANDWIDTH_UP, 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun /** 285*4882a593Smuzhiyun * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth 286*4882a593Smuzhiyun */ 287*4882a593Smuzhiyun BATADV_ATTR_BANDWIDTH_DOWN, 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /** 290*4882a593Smuzhiyun * @BATADV_ATTR_ROUTER: Gateway router MAC address 291*4882a593Smuzhiyun */ 292*4882a593Smuzhiyun BATADV_ATTR_ROUTER, 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun /** 295*4882a593Smuzhiyun * @BATADV_ATTR_BLA_OWN: Flag indicating own originator 296*4882a593Smuzhiyun */ 297*4882a593Smuzhiyun BATADV_ATTR_BLA_OWN, 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun /** 300*4882a593Smuzhiyun * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address 301*4882a593Smuzhiyun */ 302*4882a593Smuzhiyun BATADV_ATTR_BLA_ADDRESS, 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun /** 305*4882a593Smuzhiyun * @BATADV_ATTR_BLA_VID: BLA VLAN ID 306*4882a593Smuzhiyun */ 307*4882a593Smuzhiyun BATADV_ATTR_BLA_VID, 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun /** 310*4882a593Smuzhiyun * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address 311*4882a593Smuzhiyun */ 312*4882a593Smuzhiyun BATADV_ATTR_BLA_BACKBONE, 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun /** 315*4882a593Smuzhiyun * @BATADV_ATTR_BLA_CRC: BLA CRC 316*4882a593Smuzhiyun */ 317*4882a593Smuzhiyun BATADV_ATTR_BLA_CRC, 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun /** 320*4882a593Smuzhiyun * @BATADV_ATTR_DAT_CACHE_IP4ADDRESS: Client IPv4 address 321*4882a593Smuzhiyun */ 322*4882a593Smuzhiyun BATADV_ATTR_DAT_CACHE_IP4ADDRESS, 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun /** 325*4882a593Smuzhiyun * @BATADV_ATTR_DAT_CACHE_HWADDRESS: Client MAC address 326*4882a593Smuzhiyun */ 327*4882a593Smuzhiyun BATADV_ATTR_DAT_CACHE_HWADDRESS, 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun /** 330*4882a593Smuzhiyun * @BATADV_ATTR_DAT_CACHE_VID: VLAN ID 331*4882a593Smuzhiyun */ 332*4882a593Smuzhiyun BATADV_ATTR_DAT_CACHE_VID, 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun /** 335*4882a593Smuzhiyun * @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags 336*4882a593Smuzhiyun */ 337*4882a593Smuzhiyun BATADV_ATTR_MCAST_FLAGS, 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun /** 340*4882a593Smuzhiyun * @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags 341*4882a593Smuzhiyun */ 342*4882a593Smuzhiyun BATADV_ATTR_MCAST_FLAGS_PRIV, 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun /** 345*4882a593Smuzhiyun * @BATADV_ATTR_VLANID: VLAN id on top of soft interface 346*4882a593Smuzhiyun */ 347*4882a593Smuzhiyun BATADV_ATTR_VLANID, 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun /** 350*4882a593Smuzhiyun * @BATADV_ATTR_AGGREGATED_OGMS_ENABLED: whether the batman protocol 351*4882a593Smuzhiyun * messages of the mesh interface shall be aggregated or not. 352*4882a593Smuzhiyun */ 353*4882a593Smuzhiyun BATADV_ATTR_AGGREGATED_OGMS_ENABLED, 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun /** 356*4882a593Smuzhiyun * @BATADV_ATTR_AP_ISOLATION_ENABLED: whether the data traffic going 357*4882a593Smuzhiyun * from a wireless client to another wireless client will be silently 358*4882a593Smuzhiyun * dropped. 359*4882a593Smuzhiyun */ 360*4882a593Smuzhiyun BATADV_ATTR_AP_ISOLATION_ENABLED, 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun /** 363*4882a593Smuzhiyun * @BATADV_ATTR_ISOLATION_MARK: the isolation mark which is used to 364*4882a593Smuzhiyun * classify clients as "isolated" by the Extended Isolation feature. 365*4882a593Smuzhiyun */ 366*4882a593Smuzhiyun BATADV_ATTR_ISOLATION_MARK, 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun /** 369*4882a593Smuzhiyun * @BATADV_ATTR_ISOLATION_MASK: the isolation (bit)mask which is used to 370*4882a593Smuzhiyun * classify clients as "isolated" by the Extended Isolation feature. 371*4882a593Smuzhiyun */ 372*4882a593Smuzhiyun BATADV_ATTR_ISOLATION_MASK, 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun /** 375*4882a593Smuzhiyun * @BATADV_ATTR_BONDING_ENABLED: whether the data traffic going through 376*4882a593Smuzhiyun * the mesh will be sent using multiple interfaces at the same time. 377*4882a593Smuzhiyun */ 378*4882a593Smuzhiyun BATADV_ATTR_BONDING_ENABLED, 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun /** 381*4882a593Smuzhiyun * @BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED: whether the bridge loop 382*4882a593Smuzhiyun * avoidance feature is enabled. This feature detects and avoids loops 383*4882a593Smuzhiyun * between the mesh and devices bridged with the soft interface 384*4882a593Smuzhiyun */ 385*4882a593Smuzhiyun BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED, 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun /** 388*4882a593Smuzhiyun * @BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED: whether the distributed 389*4882a593Smuzhiyun * arp table feature is enabled. This feature uses a distributed hash 390*4882a593Smuzhiyun * table to answer ARP requests without flooding the request through 391*4882a593Smuzhiyun * the whole mesh. 392*4882a593Smuzhiyun */ 393*4882a593Smuzhiyun BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED, 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun /** 396*4882a593Smuzhiyun * @BATADV_ATTR_FRAGMENTATION_ENABLED: whether the data traffic going 397*4882a593Smuzhiyun * through the mesh will be fragmented or silently discarded if the 398*4882a593Smuzhiyun * packet size exceeds the outgoing interface MTU. 399*4882a593Smuzhiyun */ 400*4882a593Smuzhiyun BATADV_ATTR_FRAGMENTATION_ENABLED, 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun /** 403*4882a593Smuzhiyun * @BATADV_ATTR_GW_BANDWIDTH_DOWN: defines the download bandwidth which 404*4882a593Smuzhiyun * is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set 405*4882a593Smuzhiyun * to 'server'. 406*4882a593Smuzhiyun */ 407*4882a593Smuzhiyun BATADV_ATTR_GW_BANDWIDTH_DOWN, 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun /** 410*4882a593Smuzhiyun * @BATADV_ATTR_GW_BANDWIDTH_UP: defines the upload bandwidth which 411*4882a593Smuzhiyun * is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set 412*4882a593Smuzhiyun * to 'server'. 413*4882a593Smuzhiyun */ 414*4882a593Smuzhiyun BATADV_ATTR_GW_BANDWIDTH_UP, 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun /** 417*4882a593Smuzhiyun * @BATADV_ATTR_GW_MODE: defines the state of the gateway features. 418*4882a593Smuzhiyun * Possible values are specified in enum batadv_gw_modes 419*4882a593Smuzhiyun */ 420*4882a593Smuzhiyun BATADV_ATTR_GW_MODE, 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun /** 423*4882a593Smuzhiyun * @BATADV_ATTR_GW_SEL_CLASS: defines the selection criteria this node 424*4882a593Smuzhiyun * will use to choose a gateway if gw_mode was set to 'client'. 425*4882a593Smuzhiyun */ 426*4882a593Smuzhiyun BATADV_ATTR_GW_SEL_CLASS, 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun /** 429*4882a593Smuzhiyun * @BATADV_ATTR_HOP_PENALTY: defines the penalty which will be applied 430*4882a593Smuzhiyun * to an originator message's tq-field on every hop and/or per 431*4882a593Smuzhiyun * hard interface 432*4882a593Smuzhiyun */ 433*4882a593Smuzhiyun BATADV_ATTR_HOP_PENALTY, 434*4882a593Smuzhiyun 435*4882a593Smuzhiyun /** 436*4882a593Smuzhiyun * @BATADV_ATTR_LOG_LEVEL: bitmask with to define which debug messages 437*4882a593Smuzhiyun * should be send to the debug log/trace ring buffer 438*4882a593Smuzhiyun */ 439*4882a593Smuzhiyun BATADV_ATTR_LOG_LEVEL, 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun /** 442*4882a593Smuzhiyun * @BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED: whether multicast 443*4882a593Smuzhiyun * optimizations should be replaced by simple broadcast-like flooding 444*4882a593Smuzhiyun * of multicast packets. If set to non-zero then all nodes in the mesh 445*4882a593Smuzhiyun * are going to use classic flooding for any multicast packet with no 446*4882a593Smuzhiyun * optimizations. 447*4882a593Smuzhiyun */ 448*4882a593Smuzhiyun BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED, 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun /** 451*4882a593Smuzhiyun * @BATADV_ATTR_NETWORK_CODING_ENABLED: whether Network Coding (using 452*4882a593Smuzhiyun * some magic to send fewer wifi packets but still the same content) is 453*4882a593Smuzhiyun * enabled or not. 454*4882a593Smuzhiyun */ 455*4882a593Smuzhiyun BATADV_ATTR_NETWORK_CODING_ENABLED, 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun /** 458*4882a593Smuzhiyun * @BATADV_ATTR_ORIG_INTERVAL: defines the interval in milliseconds in 459*4882a593Smuzhiyun * which batman sends its protocol messages. 460*4882a593Smuzhiyun */ 461*4882a593Smuzhiyun BATADV_ATTR_ORIG_INTERVAL, 462*4882a593Smuzhiyun 463*4882a593Smuzhiyun /** 464*4882a593Smuzhiyun * @BATADV_ATTR_ELP_INTERVAL: defines the interval in milliseconds in 465*4882a593Smuzhiyun * which batman emits probing packets for neighbor sensing (ELP). 466*4882a593Smuzhiyun */ 467*4882a593Smuzhiyun BATADV_ATTR_ELP_INTERVAL, 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun /** 470*4882a593Smuzhiyun * @BATADV_ATTR_THROUGHPUT_OVERRIDE: defines the throughput value to be 471*4882a593Smuzhiyun * used by B.A.T.M.A.N. V when estimating the link throughput using 472*4882a593Smuzhiyun * this interface. If the value is set to 0 then batman-adv will try to 473*4882a593Smuzhiyun * estimate the throughput by itself. 474*4882a593Smuzhiyun */ 475*4882a593Smuzhiyun BATADV_ATTR_THROUGHPUT_OVERRIDE, 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun /** 478*4882a593Smuzhiyun * @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet 479*4882a593Smuzhiyun * copies that may be generated for a multicast-to-unicast conversion. 480*4882a593Smuzhiyun * Once this limit is exceeded distribution will fall back to broadcast. 481*4882a593Smuzhiyun */ 482*4882a593Smuzhiyun BATADV_ATTR_MULTICAST_FANOUT, 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun /* add attributes above here, update the policy in netlink.c */ 485*4882a593Smuzhiyun 486*4882a593Smuzhiyun /** 487*4882a593Smuzhiyun * @__BATADV_ATTR_AFTER_LAST: internal use 488*4882a593Smuzhiyun */ 489*4882a593Smuzhiyun __BATADV_ATTR_AFTER_LAST, 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun /** 492*4882a593Smuzhiyun * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available 493*4882a593Smuzhiyun */ 494*4882a593Smuzhiyun NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST, 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun /** 497*4882a593Smuzhiyun * @BATADV_ATTR_MAX: highest attribute number currently defined 498*4882a593Smuzhiyun */ 499*4882a593Smuzhiyun BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1 500*4882a593Smuzhiyun }; 501*4882a593Smuzhiyun 502*4882a593Smuzhiyun /** 503*4882a593Smuzhiyun * enum batadv_nl_commands - supported batman-adv netlink commands 504*4882a593Smuzhiyun */ 505*4882a593Smuzhiyun enum batadv_nl_commands { 506*4882a593Smuzhiyun /** 507*4882a593Smuzhiyun * @BATADV_CMD_UNSPEC: unspecified command to catch errors 508*4882a593Smuzhiyun */ 509*4882a593Smuzhiyun BATADV_CMD_UNSPEC, 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun /** 512*4882a593Smuzhiyun * @BATADV_CMD_GET_MESH: Get attributes from softif/mesh 513*4882a593Smuzhiyun */ 514*4882a593Smuzhiyun BATADV_CMD_GET_MESH, 515*4882a593Smuzhiyun 516*4882a593Smuzhiyun /** 517*4882a593Smuzhiyun * @BATADV_CMD_GET_MESH_INFO: Alias for @BATADV_CMD_GET_MESH 518*4882a593Smuzhiyun */ 519*4882a593Smuzhiyun BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH, 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun /** 522*4882a593Smuzhiyun * @BATADV_CMD_TP_METER: Start a tp meter session 523*4882a593Smuzhiyun */ 524*4882a593Smuzhiyun BATADV_CMD_TP_METER, 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun /** 527*4882a593Smuzhiyun * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session 528*4882a593Smuzhiyun */ 529*4882a593Smuzhiyun BATADV_CMD_TP_METER_CANCEL, 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun /** 532*4882a593Smuzhiyun * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms. 533*4882a593Smuzhiyun */ 534*4882a593Smuzhiyun BATADV_CMD_GET_ROUTING_ALGOS, 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun /** 537*4882a593Smuzhiyun * @BATADV_CMD_GET_HARDIF: Get attributes from a hardif of the 538*4882a593Smuzhiyun * current softif 539*4882a593Smuzhiyun */ 540*4882a593Smuzhiyun BATADV_CMD_GET_HARDIF, 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun /** 543*4882a593Smuzhiyun * @BATADV_CMD_GET_HARDIFS: Alias for @BATADV_CMD_GET_HARDIF 544*4882a593Smuzhiyun */ 545*4882a593Smuzhiyun BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF, 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun /** 548*4882a593Smuzhiyun * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations 549*4882a593Smuzhiyun */ 550*4882a593Smuzhiyun BATADV_CMD_GET_TRANSTABLE_LOCAL, 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun /** 553*4882a593Smuzhiyun * @BATADV_CMD_GET_TRANSTABLE_GLOBAL: Query list of global translations 554*4882a593Smuzhiyun */ 555*4882a593Smuzhiyun BATADV_CMD_GET_TRANSTABLE_GLOBAL, 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun /** 558*4882a593Smuzhiyun * @BATADV_CMD_GET_ORIGINATORS: Query list of originators 559*4882a593Smuzhiyun */ 560*4882a593Smuzhiyun BATADV_CMD_GET_ORIGINATORS, 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun /** 563*4882a593Smuzhiyun * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours 564*4882a593Smuzhiyun */ 565*4882a593Smuzhiyun BATADV_CMD_GET_NEIGHBORS, 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun /** 568*4882a593Smuzhiyun * @BATADV_CMD_GET_GATEWAYS: Query list of gateways 569*4882a593Smuzhiyun */ 570*4882a593Smuzhiyun BATADV_CMD_GET_GATEWAYS, 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun /** 573*4882a593Smuzhiyun * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims 574*4882a593Smuzhiyun */ 575*4882a593Smuzhiyun BATADV_CMD_GET_BLA_CLAIM, 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun /** 578*4882a593Smuzhiyun * @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance 579*4882a593Smuzhiyun * backbones 580*4882a593Smuzhiyun */ 581*4882a593Smuzhiyun BATADV_CMD_GET_BLA_BACKBONE, 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun /** 584*4882a593Smuzhiyun * @BATADV_CMD_GET_DAT_CACHE: Query list of DAT cache entries 585*4882a593Smuzhiyun */ 586*4882a593Smuzhiyun BATADV_CMD_GET_DAT_CACHE, 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun /** 589*4882a593Smuzhiyun * @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags 590*4882a593Smuzhiyun */ 591*4882a593Smuzhiyun BATADV_CMD_GET_MCAST_FLAGS, 592*4882a593Smuzhiyun 593*4882a593Smuzhiyun /** 594*4882a593Smuzhiyun * @BATADV_CMD_SET_MESH: Set attributes for softif/mesh 595*4882a593Smuzhiyun */ 596*4882a593Smuzhiyun BATADV_CMD_SET_MESH, 597*4882a593Smuzhiyun 598*4882a593Smuzhiyun /** 599*4882a593Smuzhiyun * @BATADV_CMD_SET_HARDIF: Set attributes for hardif of the 600*4882a593Smuzhiyun * current softif 601*4882a593Smuzhiyun */ 602*4882a593Smuzhiyun BATADV_CMD_SET_HARDIF, 603*4882a593Smuzhiyun 604*4882a593Smuzhiyun /** 605*4882a593Smuzhiyun * @BATADV_CMD_GET_VLAN: Get attributes from a VLAN of the 606*4882a593Smuzhiyun * current softif 607*4882a593Smuzhiyun */ 608*4882a593Smuzhiyun BATADV_CMD_GET_VLAN, 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun /** 611*4882a593Smuzhiyun * @BATADV_CMD_SET_VLAN: Set attributes for VLAN of the 612*4882a593Smuzhiyun * current softif 613*4882a593Smuzhiyun */ 614*4882a593Smuzhiyun BATADV_CMD_SET_VLAN, 615*4882a593Smuzhiyun 616*4882a593Smuzhiyun /* add new commands above here */ 617*4882a593Smuzhiyun 618*4882a593Smuzhiyun /** 619*4882a593Smuzhiyun * @__BATADV_CMD_AFTER_LAST: internal use 620*4882a593Smuzhiyun */ 621*4882a593Smuzhiyun __BATADV_CMD_AFTER_LAST, 622*4882a593Smuzhiyun 623*4882a593Smuzhiyun /** 624*4882a593Smuzhiyun * @BATADV_CMD_MAX: highest used command number 625*4882a593Smuzhiyun */ 626*4882a593Smuzhiyun BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1 627*4882a593Smuzhiyun }; 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun /** 630*4882a593Smuzhiyun * enum batadv_tp_meter_reason - reason of a tp meter test run stop 631*4882a593Smuzhiyun */ 632*4882a593Smuzhiyun enum batadv_tp_meter_reason { 633*4882a593Smuzhiyun /** 634*4882a593Smuzhiyun * @BATADV_TP_REASON_COMPLETE: sender finished tp run 635*4882a593Smuzhiyun */ 636*4882a593Smuzhiyun BATADV_TP_REASON_COMPLETE = 3, 637*4882a593Smuzhiyun 638*4882a593Smuzhiyun /** 639*4882a593Smuzhiyun * @BATADV_TP_REASON_CANCEL: sender was stopped during run 640*4882a593Smuzhiyun */ 641*4882a593Smuzhiyun BATADV_TP_REASON_CANCEL = 4, 642*4882a593Smuzhiyun 643*4882a593Smuzhiyun /* error status >= 128 */ 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun /** 646*4882a593Smuzhiyun * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or 647*4882a593Smuzhiyun * didn't answer 648*4882a593Smuzhiyun */ 649*4882a593Smuzhiyun BATADV_TP_REASON_DST_UNREACHABLE = 128, 650*4882a593Smuzhiyun 651*4882a593Smuzhiyun /** 652*4882a593Smuzhiyun * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit 653*4882a593Smuzhiyun */ 654*4882a593Smuzhiyun BATADV_TP_REASON_RESEND_LIMIT = 129, 655*4882a593Smuzhiyun 656*4882a593Smuzhiyun /** 657*4882a593Smuzhiyun * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node 658*4882a593Smuzhiyun * already ongoing 659*4882a593Smuzhiyun */ 660*4882a593Smuzhiyun BATADV_TP_REASON_ALREADY_ONGOING = 130, 661*4882a593Smuzhiyun 662*4882a593Smuzhiyun /** 663*4882a593Smuzhiyun * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory 664*4882a593Smuzhiyun */ 665*4882a593Smuzhiyun BATADV_TP_REASON_MEMORY_ERROR = 131, 666*4882a593Smuzhiyun 667*4882a593Smuzhiyun /** 668*4882a593Smuzhiyun * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface 669*4882a593Smuzhiyun */ 670*4882a593Smuzhiyun BATADV_TP_REASON_CANT_SEND = 132, 671*4882a593Smuzhiyun 672*4882a593Smuzhiyun /** 673*4882a593Smuzhiyun * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions 674*4882a593Smuzhiyun */ 675*4882a593Smuzhiyun BATADV_TP_REASON_TOO_MANY = 133, 676*4882a593Smuzhiyun }; 677*4882a593Smuzhiyun 678*4882a593Smuzhiyun #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */ 679