Home | History | Annotate | Download | only in linux
      1 /* Copyright (C) 2016-2017  B.A.T.M.A.N. contributors:
      2  *
      3  * Matthias Schiffer
      4  *
      5  * Permission to use, copy, modify, and/or distribute this software for any
      6  * purpose with or without fee is hereby granted, provided that the above
      7  * copyright notice and this permission notice appear in all copies.
      8  *
      9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     16  */
     17 
     18 #ifndef _UAPI_LINUX_BATMAN_ADV_H_
     19 #define _UAPI_LINUX_BATMAN_ADV_H_
     20 
     21 #define BATADV_NL_NAME "batadv"
     22 
     23 #define BATADV_NL_MCAST_GROUP_TPMETER	"tpmeter"
     24 
     25 /**
     26  * enum batadv_tt_client_flags - TT client specific flags
     27  *
     28  * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
     29  * Bits from 8 to 15 are called _local flags_ because they are used for local
     30  * computations only.
     31  *
     32  * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
     33  * the other nodes in the network. To achieve this goal these flags are included
     34  * in the TT CRC computation.
     35  */
     36 enum batadv_tt_client_flags {
     37 	/**
     38 	 * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
     39 	 */
     40 	BATADV_TT_CLIENT_DEL     = (1 << 0),
     41 
     42 	/**
     43 	 * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and
     44 	 * the new update telling its new real location has not been
     45 	 * received/sent yet
     46 	 */
     47 	BATADV_TT_CLIENT_ROAM    = (1 << 1),
     48 
     49 	/**
     50 	 * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi
     51 	 * interface. This information is used by the "AP Isolation" feature
     52 	 */
     53 	BATADV_TT_CLIENT_WIFI    = (1 << 4),
     54 
     55 	/**
     56 	 * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
     57 	 * information is used by the Extended Isolation feature
     58 	 */
     59 	BATADV_TT_CLIENT_ISOLA	 = (1 << 5),
     60 
     61 	/**
     62 	 * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from
     63 	 * the table
     64 	 */
     65 	BATADV_TT_CLIENT_NOPURGE = (1 << 8),
     66 
     67 	/**
     68 	 * @BATADV_TT_CLIENT_NEW: this client has been added to the local table
     69 	 * but has not been announced yet
     70 	 */
     71 	BATADV_TT_CLIENT_NEW     = (1 << 9),
     72 
     73 	/**
     74 	 * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it
     75 	 * is kept in the table for one more originator interval for consistency
     76 	 * purposes
     77 	 */
     78 	BATADV_TT_CLIENT_PENDING = (1 << 10),
     79 
     80 	/**
     81 	 * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be
     82 	 * part of the network but no nnode has already announced it
     83 	 */
     84 	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
     85 };
     86 
     87 /**
     88  * enum batadv_nl_attrs - batman-adv netlink attributes
     89  */
     90 enum batadv_nl_attrs {
     91 	/**
     92 	 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
     93 	 */
     94 	BATADV_ATTR_UNSPEC,
     95 
     96 	/**
     97 	 * @BATADV_ATTR_VERSION: batman-adv version string
     98 	 */
     99 	BATADV_ATTR_VERSION,
    100 
    101 	/**
    102 	 * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
    103 	 */
    104 	BATADV_ATTR_ALGO_NAME,
    105 
    106 	/**
    107 	 * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
    108 	 */
    109 	BATADV_ATTR_MESH_IFINDEX,
    110 
    111 	/**
    112 	 * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
    113 	 */
    114 	BATADV_ATTR_MESH_IFNAME,
    115 
    116 	/**
    117 	 * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
    118 	 */
    119 	BATADV_ATTR_MESH_ADDRESS,
    120 
    121 	/**
    122 	 * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
    123 	 */
    124 	BATADV_ATTR_HARD_IFINDEX,
    125 
    126 	/**
    127 	 * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
    128 	 */
    129 	BATADV_ATTR_HARD_IFNAME,
    130 
    131 	/**
    132 	 * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv
    133 	 * interface
    134 	 */
    135 	BATADV_ATTR_HARD_ADDRESS,
    136 
    137 	/**
    138 	 * @BATADV_ATTR_ORIG_ADDRESS: originator mac address
    139 	 */
    140 	BATADV_ATTR_ORIG_ADDRESS,
    141 
    142 	/**
    143 	 * @BATADV_ATTR_TPMETER_RESULT: result of run (see
    144 	 * batadv_tp_meter_status)
    145 	 */
    146 	BATADV_ATTR_TPMETER_RESULT,
    147 
    148 	/**
    149 	 * @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
    150 	 */
    151 	BATADV_ATTR_TPMETER_TEST_TIME,
    152 
    153 	/**
    154 	 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
    155 	 */
    156 	BATADV_ATTR_TPMETER_BYTES,
    157 
    158 	/**
    159 	 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
    160 	 */
    161 	BATADV_ATTR_TPMETER_COOKIE,
    162 
    163 	/**
    164 	 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
    165 	 */
    166 	BATADV_ATTR_PAD,
    167 
    168 	/**
    169 	 * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
    170 	 */
    171 	BATADV_ATTR_ACTIVE,
    172 
    173 	/**
    174 	 * @BATADV_ATTR_TT_ADDRESS: Client MAC address
    175 	 */
    176 	BATADV_ATTR_TT_ADDRESS,
    177 
    178 	/**
    179 	 * @BATADV_ATTR_TT_TTVN: Translation table version
    180 	 */
    181 	BATADV_ATTR_TT_TTVN,
    182 
    183 	/**
    184 	 * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
    185 	 */
    186 	BATADV_ATTR_TT_LAST_TTVN,
    187 
    188 	/**
    189 	 * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
    190 	 */
    191 	BATADV_ATTR_TT_CRC32,
    192 
    193 	/**
    194 	 * @BATADV_ATTR_TT_VID: VLAN ID
    195 	 */
    196 	BATADV_ATTR_TT_VID,
    197 
    198 	/**
    199 	 * @BATADV_ATTR_TT_FLAGS: Translation table client flags
    200 	 */
    201 	BATADV_ATTR_TT_FLAGS,
    202 
    203 	/**
    204 	 * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
    205 	 */
    206 	BATADV_ATTR_FLAG_BEST,
    207 
    208 	/**
    209 	 * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
    210 	 */
    211 	BATADV_ATTR_LAST_SEEN_MSECS,
    212 
    213 	/**
    214 	 * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
    215 	 */
    216 	BATADV_ATTR_NEIGH_ADDRESS,
    217 
    218 	/**
    219 	 * @BATADV_ATTR_TQ: TQ to neighbour
    220 	 */
    221 	BATADV_ATTR_TQ,
    222 
    223 	/**
    224 	 * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
    225 	 */
    226 	BATADV_ATTR_THROUGHPUT,
    227 
    228 	/**
    229 	 * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
    230 	 */
    231 	BATADV_ATTR_BANDWIDTH_UP,
    232 
    233 	/**
    234 	 * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
    235 	 */
    236 	BATADV_ATTR_BANDWIDTH_DOWN,
    237 
    238 	/**
    239 	 * @BATADV_ATTR_ROUTER: Gateway router MAC address
    240 	 */
    241 	BATADV_ATTR_ROUTER,
    242 
    243 	/**
    244 	 * @BATADV_ATTR_BLA_OWN: Flag indicating own originator
    245 	 */
    246 	BATADV_ATTR_BLA_OWN,
    247 
    248 	/**
    249 	 * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
    250 	 */
    251 	BATADV_ATTR_BLA_ADDRESS,
    252 
    253 	/**
    254 	 * @BATADV_ATTR_BLA_VID: BLA VLAN ID
    255 	 */
    256 	BATADV_ATTR_BLA_VID,
    257 
    258 	/**
    259 	 * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
    260 	 */
    261 	BATADV_ATTR_BLA_BACKBONE,
    262 
    263 	/**
    264 	 * @BATADV_ATTR_BLA_CRC: BLA CRC
    265 	 */
    266 	BATADV_ATTR_BLA_CRC,
    267 
    268 	/* add attributes above here, update the policy in netlink.c */
    269 
    270 	/**
    271 	 * @__BATADV_ATTR_AFTER_LAST: internal use
    272 	 */
    273 	__BATADV_ATTR_AFTER_LAST,
    274 
    275 	/**
    276 	 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
    277 	 */
    278 	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
    279 
    280 	/**
    281 	 * @BATADV_ATTR_MAX: highest attribute number currently defined
    282 	 */
    283 	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
    284 };
    285 
    286 /**
    287  * enum batadv_nl_commands - supported batman-adv netlink commands
    288  */
    289 enum batadv_nl_commands {
    290 	/**
    291 	 * @BATADV_CMD_UNSPEC: unspecified command to catch errors
    292 	 */
    293 	BATADV_CMD_UNSPEC,
    294 
    295 	/**
    296 	 * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv
    297 	 * device
    298 	 */
    299 	BATADV_CMD_GET_MESH_INFO,
    300 
    301 	/**
    302 	 * @BATADV_CMD_TP_METER: Start a tp meter session
    303 	 */
    304 	BATADV_CMD_TP_METER,
    305 
    306 	/**
    307 	 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
    308 	 */
    309 	BATADV_CMD_TP_METER_CANCEL,
    310 
    311 	/**
    312 	 * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
    313 	 */
    314 	BATADV_CMD_GET_ROUTING_ALGOS,
    315 
    316 	/**
    317 	 * @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
    318 	 */
    319 	BATADV_CMD_GET_HARDIFS,
    320 
    321 	/**
    322 	 * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
    323 	 */
    324 	BATADV_CMD_GET_TRANSTABLE_LOCAL,
    325 
    326 	/**
    327 	 * @BATADV_CMD_GET_TRANSTABLE_GLOBAL: Query list of global translations
    328 	 */
    329 	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
    330 
    331 	/**
    332 	 * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
    333 	 */
    334 	BATADV_CMD_GET_ORIGINATORS,
    335 
    336 	/**
    337 	 * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
    338 	 */
    339 	BATADV_CMD_GET_NEIGHBORS,
    340 
    341 	/**
    342 	 * @BATADV_CMD_GET_GATEWAYS: Query list of gateways
    343 	 */
    344 	BATADV_CMD_GET_GATEWAYS,
    345 
    346 	/**
    347 	 * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
    348 	 */
    349 	BATADV_CMD_GET_BLA_CLAIM,
    350 
    351 	/**
    352 	 * @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance
    353 	 * backbones
    354 	 */
    355 	BATADV_CMD_GET_BLA_BACKBONE,
    356 
    357 	/* add new commands above here */
    358 
    359 	/**
    360 	 * @__BATADV_CMD_AFTER_LAST: internal use
    361 	 */
    362 	__BATADV_CMD_AFTER_LAST,
    363 
    364 	/**
    365 	 * @BATADV_CMD_MAX: highest used command number
    366 	 */
    367 	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
    368 };
    369 
    370 /**
    371  * enum batadv_tp_meter_reason - reason of a tp meter test run stop
    372  */
    373 enum batadv_tp_meter_reason {
    374 	/**
    375 	 * @BATADV_TP_REASON_COMPLETE: sender finished tp run
    376 	 */
    377 	BATADV_TP_REASON_COMPLETE		= 3,
    378 
    379 	/**
    380 	 * @BATADV_TP_REASON_CANCEL: sender was stopped during run
    381 	 */
    382 	BATADV_TP_REASON_CANCEL			= 4,
    383 
    384 	/* error status >= 128 */
    385 
    386 	/**
    387 	 * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or
    388 	 * didn't answer
    389 	 */
    390 	BATADV_TP_REASON_DST_UNREACHABLE	= 128,
    391 
    392 	/**
    393 	 * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
    394 	 */
    395 	BATADV_TP_REASON_RESEND_LIMIT		= 129,
    396 
    397 	/**
    398 	 * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node
    399 	 * already ongoing
    400 	 */
    401 	BATADV_TP_REASON_ALREADY_ONGOING	= 130,
    402 
    403 	/**
    404 	 * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
    405 	 */
    406 	BATADV_TP_REASON_MEMORY_ERROR		= 131,
    407 
    408 	/**
    409 	 * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
    410 	 */
    411 	BATADV_TP_REASON_CANT_SEND		= 132,
    412 
    413 	/**
    414 	 * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
    415 	 */
    416 	BATADV_TP_REASON_TOO_MANY		= 133,
    417 };
    418 
    419 #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
    420