batman_adv.h 15.6 KB
Newer Older
1
/* SPDX-License-Identifier: MIT */
2
/* Copyright (C) 2016-2019  B.A.T.M.A.N. contributors:
3 4 5
 *
 * Matthias Schiffer
 *
6 7 8 9 10 11
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
12
 *
13 14 15 16 17 18 19 20 21 22
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
23 24 25 26 27 28 29
 */

#ifndef _UAPI_LINUX_BATMAN_ADV_H_
#define _UAPI_LINUX_BATMAN_ADV_H_

#define BATADV_NL_NAME "batadv"

30
#define BATADV_NL_MCAST_GROUP_CONFIG	"config"
31 32
#define BATADV_NL_MCAST_GROUP_TPMETER	"tpmeter"

33 34 35 36 37 38 39 40 41 42 43 44
/**
 * enum batadv_tt_client_flags - TT client specific flags
 *
 * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
 * Bits from 8 to 15 are called _local flags_ because they are used for local
 * computations only.
 *
 * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
 * the other nodes in the network. To achieve this goal these flags are included
 * in the TT CRC computation.
 */
enum batadv_tt_client_flags {
45 46 47
	/**
	 * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
	 */
48
	BATADV_TT_CLIENT_DEL     = (1 << 0),
49 50 51 52 53 54

	/**
	 * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and
	 * the new update telling its new real location has not been
	 * received/sent yet
	 */
55
	BATADV_TT_CLIENT_ROAM    = (1 << 1),
56 57 58 59 60

	/**
	 * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi
	 * interface. This information is used by the "AP Isolation" feature
	 */
61
	BATADV_TT_CLIENT_WIFI    = (1 << 4),
62 63 64 65 66

	/**
	 * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
	 * information is used by the Extended Isolation feature
	 */
67
	BATADV_TT_CLIENT_ISOLA	 = (1 << 5),
68 69 70 71 72

	/**
	 * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from
	 * the table
	 */
73
	BATADV_TT_CLIENT_NOPURGE = (1 << 8),
74 75 76 77 78

	/**
	 * @BATADV_TT_CLIENT_NEW: this client has been added to the local table
	 * but has not been announced yet
	 */
79
	BATADV_TT_CLIENT_NEW     = (1 << 9),
80 81 82 83 84 85

	/**
	 * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it
	 * is kept in the table for one more originator interval for consistency
	 * purposes
	 */
86
	BATADV_TT_CLIENT_PENDING = (1 << 10),
87 88 89 90 91

	/**
	 * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be
	 * part of the network but no nnode has already announced it
	 */
92 93 94
	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
};

95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
/**
 * enum batadv_mcast_flags_priv - Private, own multicast flags
 *
 * These are internal, multicast related flags. Currently they describe certain
 * multicast related attributes of the segment this originator bridges into the
 * mesh.
 *
 * Those attributes are used to determine the public multicast flags this
 * originator is going to announce via TT.
 *
 * For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier
 * related flags are undefined.
 */
enum batadv_mcast_flags_priv {
	/**
	 * @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh
	 * interface.
	 */
	BATADV_MCAST_FLAGS_BRIDGED			= (1 << 0),

	/**
	 * @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier
	 * exists in the mesh
	 */
	BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS		= (1 << 1),

	/**
	 * @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier
	 * exists in the mesh
	 */
	BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS		= (1 << 2),

	/**
	 * @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier
	 * exists, whether it is potentially shadowing multicast listeners
	 * (i.e. querier is behind our own bridge segment)
	 */
	BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING	= (1 << 3),

	/**
	 * @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier
	 * exists, whether it is potentially shadowing multicast listeners
	 * (i.e. querier is behind our own bridge segment)
	 */
	BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING	= (1 << 4),
};

142 143 144 145 146 147 148 149 150 151 152 153 154 155
/**
 * enum batadv_gw_modes - gateway mode of node
 */
enum batadv_gw_modes {
	/** @BATADV_GW_MODE_OFF: gw mode disabled */
	BATADV_GW_MODE_OFF,

	/** @BATADV_GW_MODE_CLIENT: send DHCP requests to gw servers */
	BATADV_GW_MODE_CLIENT,

	/** @BATADV_GW_MODE_SERVER: announce itself as gatway server */
	BATADV_GW_MODE_SERVER,
};

156 157 158 159
/**
 * enum batadv_nl_attrs - batman-adv netlink attributes
 */
enum batadv_nl_attrs {
160 161 162
	/**
	 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
	 */
163
	BATADV_ATTR_UNSPEC,
164 165 166 167

	/**
	 * @BATADV_ATTR_VERSION: batman-adv version string
	 */
168
	BATADV_ATTR_VERSION,
169 170 171 172

	/**
	 * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
	 */
173
	BATADV_ATTR_ALGO_NAME,
174 175 176 177

	/**
	 * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
	 */
178
	BATADV_ATTR_MESH_IFINDEX,
179 180 181 182

	/**
	 * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
	 */
183
	BATADV_ATTR_MESH_IFNAME,
184 185 186 187

	/**
	 * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
	 */
188
	BATADV_ATTR_MESH_ADDRESS,
189 190 191 192

	/**
	 * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
	 */
193
	BATADV_ATTR_HARD_IFINDEX,
194 195 196 197

	/**
	 * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
	 */
198
	BATADV_ATTR_HARD_IFNAME,
199 200 201 202 203

	/**
	 * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv
	 * interface
	 */
204
	BATADV_ATTR_HARD_ADDRESS,
205 206 207 208

	/**
	 * @BATADV_ATTR_ORIG_ADDRESS: originator mac address
	 */
209
	BATADV_ATTR_ORIG_ADDRESS,
210 211 212 213 214

	/**
	 * @BATADV_ATTR_TPMETER_RESULT: result of run (see
	 * batadv_tp_meter_status)
	 */
215
	BATADV_ATTR_TPMETER_RESULT,
216 217 218 219

	/**
	 * @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
	 */
220
	BATADV_ATTR_TPMETER_TEST_TIME,
221 222 223 224

	/**
	 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
	 */
225
	BATADV_ATTR_TPMETER_BYTES,
226 227 228 229

	/**
	 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
	 */
230
	BATADV_ATTR_TPMETER_COOKIE,
231 232 233 234

	/**
	 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
	 */
235
	BATADV_ATTR_PAD,
236 237 238 239

	/**
	 * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
	 */
240
	BATADV_ATTR_ACTIVE,
241 242 243 244

	/**
	 * @BATADV_ATTR_TT_ADDRESS: Client MAC address
	 */
245
	BATADV_ATTR_TT_ADDRESS,
246 247 248 249

	/**
	 * @BATADV_ATTR_TT_TTVN: Translation table version
	 */
250
	BATADV_ATTR_TT_TTVN,
251 252 253 254

	/**
	 * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
	 */
255
	BATADV_ATTR_TT_LAST_TTVN,
256 257 258 259

	/**
	 * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
	 */
260
	BATADV_ATTR_TT_CRC32,
261 262 263 264

	/**
	 * @BATADV_ATTR_TT_VID: VLAN ID
	 */
265
	BATADV_ATTR_TT_VID,
266 267 268 269

	/**
	 * @BATADV_ATTR_TT_FLAGS: Translation table client flags
	 */
270
	BATADV_ATTR_TT_FLAGS,
271 272 273 274

	/**
	 * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
	 */
275
	BATADV_ATTR_FLAG_BEST,
276 277 278 279

	/**
	 * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
	 */
280
	BATADV_ATTR_LAST_SEEN_MSECS,
281 282 283 284

	/**
	 * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
	 */
285
	BATADV_ATTR_NEIGH_ADDRESS,
286 287 288 289

	/**
	 * @BATADV_ATTR_TQ: TQ to neighbour
	 */
290
	BATADV_ATTR_TQ,
291 292 293 294

	/**
	 * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
	 */
295
	BATADV_ATTR_THROUGHPUT,
296 297 298 299

	/**
	 * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
	 */
300
	BATADV_ATTR_BANDWIDTH_UP,
301 302 303 304

	/**
	 * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
	 */
305
	BATADV_ATTR_BANDWIDTH_DOWN,
306 307 308 309

	/**
	 * @BATADV_ATTR_ROUTER: Gateway router MAC address
	 */
310
	BATADV_ATTR_ROUTER,
311 312 313 314

	/**
	 * @BATADV_ATTR_BLA_OWN: Flag indicating own originator
	 */
315
	BATADV_ATTR_BLA_OWN,
316 317 318 319

	/**
	 * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
	 */
320
	BATADV_ATTR_BLA_ADDRESS,
321 322 323 324

	/**
	 * @BATADV_ATTR_BLA_VID: BLA VLAN ID
	 */
325
	BATADV_ATTR_BLA_VID,
326 327 328 329

	/**
	 * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
	 */
330
	BATADV_ATTR_BLA_BACKBONE,
331 332 333 334

	/**
	 * @BATADV_ATTR_BLA_CRC: BLA CRC
	 */
335
	BATADV_ATTR_BLA_CRC,
336

337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
	/**
	 * @BATADV_ATTR_DAT_CACHE_IP4ADDRESS: Client IPv4 address
	 */
	BATADV_ATTR_DAT_CACHE_IP4ADDRESS,

	/**
	 * @BATADV_ATTR_DAT_CACHE_HWADDRESS: Client MAC address
	 */
	BATADV_ATTR_DAT_CACHE_HWADDRESS,

	/**
	 * @BATADV_ATTR_DAT_CACHE_VID: VLAN ID
	 */
	BATADV_ATTR_DAT_CACHE_VID,

352 353 354 355 356 357 358 359 360 361
	/**
	 * @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags
	 */
	BATADV_ATTR_MCAST_FLAGS,

	/**
	 * @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags
	 */
	BATADV_ATTR_MCAST_FLAGS_PRIV,

362 363 364 365 366
	/**
	 * @BATADV_ATTR_VLANID: VLAN id on top of soft interface
	 */
	BATADV_ATTR_VLANID,

367 368 369 370 371 372
	/**
	 * @BATADV_ATTR_AGGREGATED_OGMS_ENABLED: whether the batman protocol
	 *  messages of the mesh interface shall be aggregated or not.
	 */
	BATADV_ATTR_AGGREGATED_OGMS_ENABLED,

373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
	/**
	 * @BATADV_ATTR_AP_ISOLATION_ENABLED: whether the data traffic going
	 *  from a wireless client to another wireless client will be silently
	 *  dropped.
	 */
	BATADV_ATTR_AP_ISOLATION_ENABLED,

	/**
	 * @BATADV_ATTR_ISOLATION_MARK: the isolation mark which is used to
	 *  classify clients as "isolated" by the Extended Isolation feature.
	 */
	BATADV_ATTR_ISOLATION_MARK,

	/**
	 * @BATADV_ATTR_ISOLATION_MASK: the isolation (bit)mask which is used to
	 *  classify clients as "isolated" by the Extended Isolation feature.
	 */
	BATADV_ATTR_ISOLATION_MASK,

392 393 394 395 396 397
	/**
	 * @BATADV_ATTR_BONDING_ENABLED: whether the data traffic going through
	 *  the mesh will be sent using multiple interfaces at the same time.
	 */
	BATADV_ATTR_BONDING_ENABLED,

398 399 400 401 402 403 404
	/**
	 * @BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED: whether the bridge loop
	 *  avoidance feature is enabled. This feature detects and avoids loops
	 *  between the mesh and devices bridged with the soft interface
	 */
	BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,

405 406 407 408 409 410 411 412
	/**
	 * @BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED: whether the distributed
	 *  arp table feature is enabled. This feature uses a distributed hash
	 *  table to answer ARP requests without flooding the request through
	 *  the whole mesh.
	 */
	BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,

413 414 415 416 417 418 419
	/**
	 * @BATADV_ATTR_FRAGMENTATION_ENABLED: whether the data traffic going
	 *  through the mesh will be fragmented or silently discarded if the
	 *  packet size exceeds the outgoing interface MTU.
	 */
	BATADV_ATTR_FRAGMENTATION_ENABLED,

420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445
	/**
	 * @BATADV_ATTR_GW_BANDWIDTH_DOWN: defines the download bandwidth which
	 *  is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
	 *  to 'server'.
	 */
	BATADV_ATTR_GW_BANDWIDTH_DOWN,

	/**
	 * @BATADV_ATTR_GW_BANDWIDTH_UP: defines the upload bandwidth which
	 *  is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
	 *  to 'server'.
	 */
	BATADV_ATTR_GW_BANDWIDTH_UP,

	/**
	 * @BATADV_ATTR_GW_MODE: defines the state of the gateway features.
	 * Possible values are specified in enum batadv_gw_modes
	 */
	BATADV_ATTR_GW_MODE,

	/**
	 * @BATADV_ATTR_GW_SEL_CLASS: defines the selection criteria this node
	 *  will use to choose a gateway if gw_mode was set to 'client'.
	 */
	BATADV_ATTR_GW_SEL_CLASS,

446 447 448 449 450 451
	/**
	 * @BATADV_ATTR_HOP_PENALTY: defines the penalty which will be applied
	 *  to an originator message's tq-field on every hop.
	 */
	BATADV_ATTR_HOP_PENALTY,

452 453 454 455 456 457
	/**
	 * @BATADV_ATTR_LOG_LEVEL: bitmask with to define which debug messages
	 *  should be send to the debug log/trace ring buffer
	 */
	BATADV_ATTR_LOG_LEVEL,

458
	/* add attributes above here, update the policy in netlink.c */
459 460 461 462

	/**
	 * @__BATADV_ATTR_AFTER_LAST: internal use
	 */
463
	__BATADV_ATTR_AFTER_LAST,
464 465 466 467

	/**
	 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
	 */
468
	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
469 470 471 472

	/**
	 * @BATADV_ATTR_MAX: highest attribute number currently defined
	 */
473 474 475 476 477 478 479
	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
};

/**
 * enum batadv_nl_commands - supported batman-adv netlink commands
 */
enum batadv_nl_commands {
480 481 482
	/**
	 * @BATADV_CMD_UNSPEC: unspecified command to catch errors
	 */
483
	BATADV_CMD_UNSPEC,
484 485

	/**
486
	 * @BATADV_CMD_GET_MESH: Get attributes from softif/mesh
487
	 */
488 489 490 491 492 493
	BATADV_CMD_GET_MESH,

	/**
	 * @BATADV_CMD_GET_MESH_INFO: Alias for @BATADV_CMD_GET_MESH
	 */
	BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
494 495 496 497

	/**
	 * @BATADV_CMD_TP_METER: Start a tp meter session
	 */
498
	BATADV_CMD_TP_METER,
499 500 501 502

	/**
	 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
	 */
503
	BATADV_CMD_TP_METER_CANCEL,
504 505 506 507

	/**
	 * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
	 */
508
	BATADV_CMD_GET_ROUTING_ALGOS,
509 510

	/**
511 512
	 * @BATADV_CMD_GET_HARDIF: Get attributes from a hardif of the
	 *  current softif
513
	 */
514 515 516 517 518 519
	BATADV_CMD_GET_HARDIF,

	/**
	 * @BATADV_CMD_GET_HARDIFS: Alias for @BATADV_CMD_GET_HARDIF
	 */
	BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
520 521 522 523

	/**
	 * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
	 */
524
	BATADV_CMD_GET_TRANSTABLE_LOCAL,
525 526 527 528

	/**
	 * @BATADV_CMD_GET_TRANSTABLE_GLOBAL: Query list of global translations
	 */
529
	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
530 531 532 533

	/**
	 * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
	 */
534
	BATADV_CMD_GET_ORIGINATORS,
535 536 537 538

	/**
	 * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
	 */
539
	BATADV_CMD_GET_NEIGHBORS,
540 541 542 543

	/**
	 * @BATADV_CMD_GET_GATEWAYS: Query list of gateways
	 */
544
	BATADV_CMD_GET_GATEWAYS,
545 546 547 548

	/**
	 * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
	 */
549
	BATADV_CMD_GET_BLA_CLAIM,
550 551 552 553 554

	/**
	 * @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance
	 * backbones
	 */
555
	BATADV_CMD_GET_BLA_BACKBONE,
556

557 558 559 560 561
	/**
	 * @BATADV_CMD_GET_DAT_CACHE: Query list of DAT cache entries
	 */
	BATADV_CMD_GET_DAT_CACHE,

562 563 564 565 566
	/**
	 * @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags
	 */
	BATADV_CMD_GET_MCAST_FLAGS,

567 568 569 570 571
	/**
	 * @BATADV_CMD_SET_MESH: Set attributes for softif/mesh
	 */
	BATADV_CMD_SET_MESH,

572 573 574 575 576 577
	/**
	 * @BATADV_CMD_SET_HARDIF: Set attributes for hardif of the
	 *  current softif
	 */
	BATADV_CMD_SET_HARDIF,

578 579 580 581 582 583 584 585 586 587 588 589
	/**
	 * @BATADV_CMD_GET_VLAN: Get attributes from a VLAN of the
	 *  current softif
	 */
	BATADV_CMD_GET_VLAN,

	/**
	 * @BATADV_CMD_SET_VLAN: Set attributes for VLAN of the
	 *  current softif
	 */
	BATADV_CMD_SET_VLAN,

590
	/* add new commands above here */
591 592 593 594

	/**
	 * @__BATADV_CMD_AFTER_LAST: internal use
	 */
595
	__BATADV_CMD_AFTER_LAST,
596 597 598 599

	/**
	 * @BATADV_CMD_MAX: highest used command number
	 */
600 601 602
	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
};

603 604 605 606
/**
 * enum batadv_tp_meter_reason - reason of a tp meter test run stop
 */
enum batadv_tp_meter_reason {
607 608 609
	/**
	 * @BATADV_TP_REASON_COMPLETE: sender finished tp run
	 */
610
	BATADV_TP_REASON_COMPLETE		= 3,
611 612 613 614

	/**
	 * @BATADV_TP_REASON_CANCEL: sender was stopped during run
	 */
615
	BATADV_TP_REASON_CANCEL			= 4,
616

617
	/* error status >= 128 */
618 619 620 621 622

	/**
	 * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or
	 * didn't answer
	 */
623
	BATADV_TP_REASON_DST_UNREACHABLE	= 128,
624 625 626 627

	/**
	 * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
	 */
628
	BATADV_TP_REASON_RESEND_LIMIT		= 129,
629 630 631 632 633

	/**
	 * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node
	 * already ongoing
	 */
634
	BATADV_TP_REASON_ALREADY_ONGOING	= 130,
635 636 637 638

	/**
	 * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
	 */
639
	BATADV_TP_REASON_MEMORY_ERROR		= 131,
640 641 642 643

	/**
	 * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
	 */
644
	BATADV_TP_REASON_CANT_SEND		= 132,
645 646 647 648

	/**
	 * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
	 */
649 650 651
	BATADV_TP_REASON_TOO_MANY		= 133,
};

652
#endif /* _UAPI_LINUX_BATMAN_ADV_H_ */