xref: /linux/include/uapi/linux/batman_adv.h (revision d0034a7a4ac7fae708146ac0059b9c47a1543f0d)
1a0105792SSven Eckelmann /* SPDX-License-Identifier: MIT */
2*cfa55c6dSSven Eckelmann /* Copyright (C) B.A.T.M.A.N. contributors:
309748a22SMatthias Schiffer  *
409748a22SMatthias Schiffer  * Matthias Schiffer
509748a22SMatthias Schiffer  */
609748a22SMatthias Schiffer 
709748a22SMatthias Schiffer #ifndef _UAPI_LINUX_BATMAN_ADV_H_
809748a22SMatthias Schiffer #define _UAPI_LINUX_BATMAN_ADV_H_
909748a22SMatthias Schiffer 
1009748a22SMatthias Schiffer #define BATADV_NL_NAME "batadv"
1109748a22SMatthias Schiffer 
1260040513SSven Eckelmann #define BATADV_NL_MCAST_GROUP_CONFIG	"config"
1333a3bb4aSAntonio Quartulli #define BATADV_NL_MCAST_GROUP_TPMETER	"tpmeter"
1433a3bb4aSAntonio Quartulli 
1509748a22SMatthias Schiffer /**
16d34f0550SMatthias Schiffer  * enum batadv_tt_client_flags - TT client specific flags
17d34f0550SMatthias Schiffer  *
18d34f0550SMatthias Schiffer  * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
19d34f0550SMatthias Schiffer  * Bits from 8 to 15 are called _local flags_ because they are used for local
20d34f0550SMatthias Schiffer  * computations only.
21d34f0550SMatthias Schiffer  *
22d34f0550SMatthias Schiffer  * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
23d34f0550SMatthias Schiffer  * the other nodes in the network. To achieve this goal these flags are included
24d34f0550SMatthias Schiffer  * in the TT CRC computation.
25d34f0550SMatthias Schiffer  */
26d34f0550SMatthias Schiffer enum batadv_tt_client_flags {
2740b16b9bSSven Eckelmann 	/**
2840b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
2940b16b9bSSven Eckelmann 	 */
30d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_DEL     = (1 << 0),
3140b16b9bSSven Eckelmann 
3240b16b9bSSven Eckelmann 	/**
3340b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and
3440b16b9bSSven Eckelmann 	 * the new update telling its new real location has not been
3540b16b9bSSven Eckelmann 	 * received/sent yet
3640b16b9bSSven Eckelmann 	 */
37d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_ROAM    = (1 << 1),
3840b16b9bSSven Eckelmann 
3940b16b9bSSven Eckelmann 	/**
4040b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi
4140b16b9bSSven Eckelmann 	 * interface. This information is used by the "AP Isolation" feature
4240b16b9bSSven Eckelmann 	 */
43d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_WIFI    = (1 << 4),
4440b16b9bSSven Eckelmann 
4540b16b9bSSven Eckelmann 	/**
4640b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
4740b16b9bSSven Eckelmann 	 * information is used by the Extended Isolation feature
4840b16b9bSSven Eckelmann 	 */
49d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_ISOLA	 = (1 << 5),
5040b16b9bSSven Eckelmann 
5140b16b9bSSven Eckelmann 	/**
5240b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from
5340b16b9bSSven Eckelmann 	 * the table
5440b16b9bSSven Eckelmann 	 */
55d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_NOPURGE = (1 << 8),
5640b16b9bSSven Eckelmann 
5740b16b9bSSven Eckelmann 	/**
5840b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_NEW: this client has been added to the local table
5940b16b9bSSven Eckelmann 	 * but has not been announced yet
6040b16b9bSSven Eckelmann 	 */
61d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_NEW     = (1 << 9),
6240b16b9bSSven Eckelmann 
6340b16b9bSSven Eckelmann 	/**
6440b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it
6540b16b9bSSven Eckelmann 	 * is kept in the table for one more originator interval for consistency
6640b16b9bSSven Eckelmann 	 * purposes
6740b16b9bSSven Eckelmann 	 */
68d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_PENDING = (1 << 10),
6940b16b9bSSven Eckelmann 
7040b16b9bSSven Eckelmann 	/**
7140b16b9bSSven Eckelmann 	 * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be
72bccb48c8SSven Eckelmann 	 * part of the network but no node has already announced it
7340b16b9bSSven Eckelmann 	 */
74d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
75d34f0550SMatthias Schiffer };
76d34f0550SMatthias Schiffer 
77d34f0550SMatthias Schiffer /**
7853dd9a68SLinus Lüssing  * enum batadv_mcast_flags_priv - Private, own multicast flags
7953dd9a68SLinus Lüssing  *
8053dd9a68SLinus Lüssing  * These are internal, multicast related flags. Currently they describe certain
8153dd9a68SLinus Lüssing  * multicast related attributes of the segment this originator bridges into the
8253dd9a68SLinus Lüssing  * mesh.
8353dd9a68SLinus Lüssing  *
8453dd9a68SLinus Lüssing  * Those attributes are used to determine the public multicast flags this
8553dd9a68SLinus Lüssing  * originator is going to announce via TT.
8653dd9a68SLinus Lüssing  *
8753dd9a68SLinus Lüssing  * For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier
8853dd9a68SLinus Lüssing  * related flags are undefined.
8953dd9a68SLinus Lüssing  */
9053dd9a68SLinus Lüssing enum batadv_mcast_flags_priv {
9153dd9a68SLinus Lüssing 	/**
9253dd9a68SLinus Lüssing 	 * @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh
9353dd9a68SLinus Lüssing 	 * interface.
9453dd9a68SLinus Lüssing 	 */
9553dd9a68SLinus Lüssing 	BATADV_MCAST_FLAGS_BRIDGED			= (1 << 0),
9653dd9a68SLinus Lüssing 
9753dd9a68SLinus Lüssing 	/**
9853dd9a68SLinus Lüssing 	 * @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier
9953dd9a68SLinus Lüssing 	 * exists in the mesh
10053dd9a68SLinus Lüssing 	 */
10153dd9a68SLinus Lüssing 	BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS		= (1 << 1),
10253dd9a68SLinus Lüssing 
10353dd9a68SLinus Lüssing 	/**
10453dd9a68SLinus Lüssing 	 * @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier
10553dd9a68SLinus Lüssing 	 * exists in the mesh
10653dd9a68SLinus Lüssing 	 */
10753dd9a68SLinus Lüssing 	BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS		= (1 << 2),
10853dd9a68SLinus Lüssing 
10953dd9a68SLinus Lüssing 	/**
11053dd9a68SLinus Lüssing 	 * @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier
11153dd9a68SLinus Lüssing 	 * exists, whether it is potentially shadowing multicast listeners
11253dd9a68SLinus Lüssing 	 * (i.e. querier is behind our own bridge segment)
11353dd9a68SLinus Lüssing 	 */
11453dd9a68SLinus Lüssing 	BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING	= (1 << 3),
11553dd9a68SLinus Lüssing 
11653dd9a68SLinus Lüssing 	/**
11753dd9a68SLinus Lüssing 	 * @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier
11853dd9a68SLinus Lüssing 	 * exists, whether it is potentially shadowing multicast listeners
11953dd9a68SLinus Lüssing 	 * (i.e. querier is behind our own bridge segment)
12053dd9a68SLinus Lüssing 	 */
12153dd9a68SLinus Lüssing 	BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING	= (1 << 4),
12253dd9a68SLinus Lüssing };
12353dd9a68SLinus Lüssing 
12453dd9a68SLinus Lüssing /**
125e2d0d35bSSven Eckelmann  * enum batadv_gw_modes - gateway mode of node
126e2d0d35bSSven Eckelmann  */
127e2d0d35bSSven Eckelmann enum batadv_gw_modes {
128e2d0d35bSSven Eckelmann 	/** @BATADV_GW_MODE_OFF: gw mode disabled */
129e2d0d35bSSven Eckelmann 	BATADV_GW_MODE_OFF,
130e2d0d35bSSven Eckelmann 
131e2d0d35bSSven Eckelmann 	/** @BATADV_GW_MODE_CLIENT: send DHCP requests to gw servers */
132e2d0d35bSSven Eckelmann 	BATADV_GW_MODE_CLIENT,
133e2d0d35bSSven Eckelmann 
134bccb48c8SSven Eckelmann 	/** @BATADV_GW_MODE_SERVER: announce itself as gateway server */
135e2d0d35bSSven Eckelmann 	BATADV_GW_MODE_SERVER,
136e2d0d35bSSven Eckelmann };
137e2d0d35bSSven Eckelmann 
138e2d0d35bSSven Eckelmann /**
13909748a22SMatthias Schiffer  * enum batadv_nl_attrs - batman-adv netlink attributes
14009748a22SMatthias Schiffer  */
14109748a22SMatthias Schiffer enum batadv_nl_attrs {
14240b16b9bSSven Eckelmann 	/**
14340b16b9bSSven Eckelmann 	 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
14440b16b9bSSven Eckelmann 	 */
14509748a22SMatthias Schiffer 	BATADV_ATTR_UNSPEC,
14640b16b9bSSven Eckelmann 
14740b16b9bSSven Eckelmann 	/**
14840b16b9bSSven Eckelmann 	 * @BATADV_ATTR_VERSION: batman-adv version string
14940b16b9bSSven Eckelmann 	 */
1505da0aef5SMatthias Schiffer 	BATADV_ATTR_VERSION,
15140b16b9bSSven Eckelmann 
15240b16b9bSSven Eckelmann 	/**
15340b16b9bSSven Eckelmann 	 * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
15440b16b9bSSven Eckelmann 	 */
1555da0aef5SMatthias Schiffer 	BATADV_ATTR_ALGO_NAME,
15640b16b9bSSven Eckelmann 
15740b16b9bSSven Eckelmann 	/**
15840b16b9bSSven Eckelmann 	 * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
15940b16b9bSSven Eckelmann 	 */
1605da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_IFINDEX,
16140b16b9bSSven Eckelmann 
16240b16b9bSSven Eckelmann 	/**
16340b16b9bSSven Eckelmann 	 * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
16440b16b9bSSven Eckelmann 	 */
1655da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_IFNAME,
16640b16b9bSSven Eckelmann 
16740b16b9bSSven Eckelmann 	/**
16840b16b9bSSven Eckelmann 	 * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
16940b16b9bSSven Eckelmann 	 */
1705da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_ADDRESS,
17140b16b9bSSven Eckelmann 
17240b16b9bSSven Eckelmann 	/**
17340b16b9bSSven Eckelmann 	 * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
17440b16b9bSSven Eckelmann 	 */
1755da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_IFINDEX,
17640b16b9bSSven Eckelmann 
17740b16b9bSSven Eckelmann 	/**
17840b16b9bSSven Eckelmann 	 * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
17940b16b9bSSven Eckelmann 	 */
1805da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_IFNAME,
18140b16b9bSSven Eckelmann 
18240b16b9bSSven Eckelmann 	/**
18340b16b9bSSven Eckelmann 	 * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv
18440b16b9bSSven Eckelmann 	 * interface
18540b16b9bSSven Eckelmann 	 */
1865da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_ADDRESS,
18740b16b9bSSven Eckelmann 
18840b16b9bSSven Eckelmann 	/**
18940b16b9bSSven Eckelmann 	 * @BATADV_ATTR_ORIG_ADDRESS: originator mac address
19040b16b9bSSven Eckelmann 	 */
19133a3bb4aSAntonio Quartulli 	BATADV_ATTR_ORIG_ADDRESS,
19240b16b9bSSven Eckelmann 
19340b16b9bSSven Eckelmann 	/**
19440b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TPMETER_RESULT: result of run (see
19540b16b9bSSven Eckelmann 	 * batadv_tp_meter_status)
19640b16b9bSSven Eckelmann 	 */
19733a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_RESULT,
19840b16b9bSSven Eckelmann 
19940b16b9bSSven Eckelmann 	/**
20040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
20140b16b9bSSven Eckelmann 	 */
20233a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_TEST_TIME,
20340b16b9bSSven Eckelmann 
20440b16b9bSSven Eckelmann 	/**
20540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
20640b16b9bSSven Eckelmann 	 */
20733a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_BYTES,
20840b16b9bSSven Eckelmann 
20940b16b9bSSven Eckelmann 	/**
21040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
21140b16b9bSSven Eckelmann 	 */
21233a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_COOKIE,
21340b16b9bSSven Eckelmann 
21440b16b9bSSven Eckelmann 	/**
21540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
21640b16b9bSSven Eckelmann 	 */
21733a3bb4aSAntonio Quartulli 	BATADV_ATTR_PAD,
21840b16b9bSSven Eckelmann 
21940b16b9bSSven Eckelmann 	/**
22040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
22140b16b9bSSven Eckelmann 	 */
222b60620cfSMatthias Schiffer 	BATADV_ATTR_ACTIVE,
22340b16b9bSSven Eckelmann 
22440b16b9bSSven Eckelmann 	/**
22540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TT_ADDRESS: Client MAC address
22640b16b9bSSven Eckelmann 	 */
227d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_ADDRESS,
22840b16b9bSSven Eckelmann 
22940b16b9bSSven Eckelmann 	/**
23040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TT_TTVN: Translation table version
23140b16b9bSSven Eckelmann 	 */
232d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_TTVN,
23340b16b9bSSven Eckelmann 
23440b16b9bSSven Eckelmann 	/**
23540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
23640b16b9bSSven Eckelmann 	 */
237d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_LAST_TTVN,
23840b16b9bSSven Eckelmann 
23940b16b9bSSven Eckelmann 	/**
24040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
24140b16b9bSSven Eckelmann 	 */
242d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_CRC32,
24340b16b9bSSven Eckelmann 
24440b16b9bSSven Eckelmann 	/**
24540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TT_VID: VLAN ID
24640b16b9bSSven Eckelmann 	 */
247d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_VID,
24840b16b9bSSven Eckelmann 
24940b16b9bSSven Eckelmann 	/**
25040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TT_FLAGS: Translation table client flags
25140b16b9bSSven Eckelmann 	 */
252d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_FLAGS,
25340b16b9bSSven Eckelmann 
25440b16b9bSSven Eckelmann 	/**
25540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
25640b16b9bSSven Eckelmann 	 */
257d34f0550SMatthias Schiffer 	BATADV_ATTR_FLAG_BEST,
25840b16b9bSSven Eckelmann 
25940b16b9bSSven Eckelmann 	/**
26040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
26140b16b9bSSven Eckelmann 	 */
262d34f0550SMatthias Schiffer 	BATADV_ATTR_LAST_SEEN_MSECS,
26340b16b9bSSven Eckelmann 
26440b16b9bSSven Eckelmann 	/**
26540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
26640b16b9bSSven Eckelmann 	 */
267024f99cbSMatthias Schiffer 	BATADV_ATTR_NEIGH_ADDRESS,
26840b16b9bSSven Eckelmann 
26940b16b9bSSven Eckelmann 	/**
27040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_TQ: TQ to neighbour
27140b16b9bSSven Eckelmann 	 */
272024f99cbSMatthias Schiffer 	BATADV_ATTR_TQ,
27340b16b9bSSven Eckelmann 
27440b16b9bSSven Eckelmann 	/**
27540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
27640b16b9bSSven Eckelmann 	 */
277f02a478fSMatthias Schiffer 	BATADV_ATTR_THROUGHPUT,
27840b16b9bSSven Eckelmann 
27940b16b9bSSven Eckelmann 	/**
28040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
28140b16b9bSSven Eckelmann 	 */
282d7129dafSSven Eckelmann 	BATADV_ATTR_BANDWIDTH_UP,
28340b16b9bSSven Eckelmann 
28440b16b9bSSven Eckelmann 	/**
28540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
28640b16b9bSSven Eckelmann 	 */
287d7129dafSSven Eckelmann 	BATADV_ATTR_BANDWIDTH_DOWN,
28840b16b9bSSven Eckelmann 
28940b16b9bSSven Eckelmann 	/**
29040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_ROUTER: Gateway router MAC address
29140b16b9bSSven Eckelmann 	 */
292d7129dafSSven Eckelmann 	BATADV_ATTR_ROUTER,
29340b16b9bSSven Eckelmann 
29440b16b9bSSven Eckelmann 	/**
29540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BLA_OWN: Flag indicating own originator
29640b16b9bSSven Eckelmann 	 */
29704f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_OWN,
29840b16b9bSSven Eckelmann 
29940b16b9bSSven Eckelmann 	/**
30040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
30140b16b9bSSven Eckelmann 	 */
30204f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_ADDRESS,
30340b16b9bSSven Eckelmann 
30440b16b9bSSven Eckelmann 	/**
30540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BLA_VID: BLA VLAN ID
30640b16b9bSSven Eckelmann 	 */
30704f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_VID,
30840b16b9bSSven Eckelmann 
30940b16b9bSSven Eckelmann 	/**
31040b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
31140b16b9bSSven Eckelmann 	 */
31204f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_BACKBONE,
31340b16b9bSSven Eckelmann 
31440b16b9bSSven Eckelmann 	/**
31540b16b9bSSven Eckelmann 	 * @BATADV_ATTR_BLA_CRC: BLA CRC
31640b16b9bSSven Eckelmann 	 */
31704f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_CRC,
31840b16b9bSSven Eckelmann 
31941aeefccSLinus Lüssing 	/**
32041aeefccSLinus Lüssing 	 * @BATADV_ATTR_DAT_CACHE_IP4ADDRESS: Client IPv4 address
32141aeefccSLinus Lüssing 	 */
32241aeefccSLinus Lüssing 	BATADV_ATTR_DAT_CACHE_IP4ADDRESS,
32341aeefccSLinus Lüssing 
32441aeefccSLinus Lüssing 	/**
32541aeefccSLinus Lüssing 	 * @BATADV_ATTR_DAT_CACHE_HWADDRESS: Client MAC address
32641aeefccSLinus Lüssing 	 */
32741aeefccSLinus Lüssing 	BATADV_ATTR_DAT_CACHE_HWADDRESS,
32841aeefccSLinus Lüssing 
32941aeefccSLinus Lüssing 	/**
33041aeefccSLinus Lüssing 	 * @BATADV_ATTR_DAT_CACHE_VID: VLAN ID
33141aeefccSLinus Lüssing 	 */
33241aeefccSLinus Lüssing 	BATADV_ATTR_DAT_CACHE_VID,
33341aeefccSLinus Lüssing 
33453dd9a68SLinus Lüssing 	/**
33553dd9a68SLinus Lüssing 	 * @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags
33653dd9a68SLinus Lüssing 	 */
33753dd9a68SLinus Lüssing 	BATADV_ATTR_MCAST_FLAGS,
33853dd9a68SLinus Lüssing 
33953dd9a68SLinus Lüssing 	/**
34053dd9a68SLinus Lüssing 	 * @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags
34153dd9a68SLinus Lüssing 	 */
34253dd9a68SLinus Lüssing 	BATADV_ATTR_MCAST_FLAGS_PRIV,
34353dd9a68SLinus Lüssing 
34449e7e37cSSven Eckelmann 	/**
34549e7e37cSSven Eckelmann 	 * @BATADV_ATTR_VLANID: VLAN id on top of soft interface
34649e7e37cSSven Eckelmann 	 */
34749e7e37cSSven Eckelmann 	BATADV_ATTR_VLANID,
34849e7e37cSSven Eckelmann 
3499ab4cee5SSven Eckelmann 	/**
3509ab4cee5SSven Eckelmann 	 * @BATADV_ATTR_AGGREGATED_OGMS_ENABLED: whether the batman protocol
3519ab4cee5SSven Eckelmann 	 *  messages of the mesh interface shall be aggregated or not.
3529ab4cee5SSven Eckelmann 	 */
3539ab4cee5SSven Eckelmann 	BATADV_ATTR_AGGREGATED_OGMS_ENABLED,
3549ab4cee5SSven Eckelmann 
355e43d16b8SSven Eckelmann 	/**
356e43d16b8SSven Eckelmann 	 * @BATADV_ATTR_AP_ISOLATION_ENABLED: whether the data traffic going
357e43d16b8SSven Eckelmann 	 *  from a wireless client to another wireless client will be silently
358e43d16b8SSven Eckelmann 	 *  dropped.
359e43d16b8SSven Eckelmann 	 */
360e43d16b8SSven Eckelmann 	BATADV_ATTR_AP_ISOLATION_ENABLED,
361e43d16b8SSven Eckelmann 
362e43d16b8SSven Eckelmann 	/**
363e43d16b8SSven Eckelmann 	 * @BATADV_ATTR_ISOLATION_MARK: the isolation mark which is used to
364e43d16b8SSven Eckelmann 	 *  classify clients as "isolated" by the Extended Isolation feature.
365e43d16b8SSven Eckelmann 	 */
366e43d16b8SSven Eckelmann 	BATADV_ATTR_ISOLATION_MARK,
367e43d16b8SSven Eckelmann 
368e43d16b8SSven Eckelmann 	/**
369e43d16b8SSven Eckelmann 	 * @BATADV_ATTR_ISOLATION_MASK: the isolation (bit)mask which is used to
370e43d16b8SSven Eckelmann 	 *  classify clients as "isolated" by the Extended Isolation feature.
371e43d16b8SSven Eckelmann 	 */
372e43d16b8SSven Eckelmann 	BATADV_ATTR_ISOLATION_MASK,
373e43d16b8SSven Eckelmann 
374d7e52506SSven Eckelmann 	/**
375d7e52506SSven Eckelmann 	 * @BATADV_ATTR_BONDING_ENABLED: whether the data traffic going through
376d7e52506SSven Eckelmann 	 *  the mesh will be sent using multiple interfaces at the same time.
377d7e52506SSven Eckelmann 	 */
378d7e52506SSven Eckelmann 	BATADV_ATTR_BONDING_ENABLED,
379d7e52506SSven Eckelmann 
38043ff6105SSven Eckelmann 	/**
38143ff6105SSven Eckelmann 	 * @BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED: whether the bridge loop
38243ff6105SSven Eckelmann 	 *  avoidance feature is enabled. This feature detects and avoids loops
38343ff6105SSven Eckelmann 	 *  between the mesh and devices bridged with the soft interface
38443ff6105SSven Eckelmann 	 */
38543ff6105SSven Eckelmann 	BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
38643ff6105SSven Eckelmann 
387a1c8de80SSven Eckelmann 	/**
388a1c8de80SSven Eckelmann 	 * @BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED: whether the distributed
389a1c8de80SSven Eckelmann 	 *  arp table feature is enabled. This feature uses a distributed hash
390a1c8de80SSven Eckelmann 	 *  table to answer ARP requests without flooding the request through
391a1c8de80SSven Eckelmann 	 *  the whole mesh.
392a1c8de80SSven Eckelmann 	 */
393a1c8de80SSven Eckelmann 	BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,
394a1c8de80SSven Eckelmann 
3953e15b06eSSven Eckelmann 	/**
3963e15b06eSSven Eckelmann 	 * @BATADV_ATTR_FRAGMENTATION_ENABLED: whether the data traffic going
3973e15b06eSSven Eckelmann 	 *  through the mesh will be fragmented or silently discarded if the
3983e15b06eSSven Eckelmann 	 *  packet size exceeds the outgoing interface MTU.
3993e15b06eSSven Eckelmann 	 */
4003e15b06eSSven Eckelmann 	BATADV_ATTR_FRAGMENTATION_ENABLED,
4013e15b06eSSven Eckelmann 
402e2d0d35bSSven Eckelmann 	/**
403e2d0d35bSSven Eckelmann 	 * @BATADV_ATTR_GW_BANDWIDTH_DOWN: defines the download bandwidth which
404e2d0d35bSSven Eckelmann 	 *  is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
405e2d0d35bSSven Eckelmann 	 *  to 'server'.
406e2d0d35bSSven Eckelmann 	 */
407e2d0d35bSSven Eckelmann 	BATADV_ATTR_GW_BANDWIDTH_DOWN,
408e2d0d35bSSven Eckelmann 
409e2d0d35bSSven Eckelmann 	/**
410e2d0d35bSSven Eckelmann 	 * @BATADV_ATTR_GW_BANDWIDTH_UP: defines the upload bandwidth which
411e2d0d35bSSven Eckelmann 	 *  is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
412e2d0d35bSSven Eckelmann 	 *  to 'server'.
413e2d0d35bSSven Eckelmann 	 */
414e2d0d35bSSven Eckelmann 	BATADV_ATTR_GW_BANDWIDTH_UP,
415e2d0d35bSSven Eckelmann 
416e2d0d35bSSven Eckelmann 	/**
417e2d0d35bSSven Eckelmann 	 * @BATADV_ATTR_GW_MODE: defines the state of the gateway features.
418e2d0d35bSSven Eckelmann 	 * Possible values are specified in enum batadv_gw_modes
419e2d0d35bSSven Eckelmann 	 */
420e2d0d35bSSven Eckelmann 	BATADV_ATTR_GW_MODE,
421e2d0d35bSSven Eckelmann 
422e2d0d35bSSven Eckelmann 	/**
423e2d0d35bSSven Eckelmann 	 * @BATADV_ATTR_GW_SEL_CLASS: defines the selection criteria this node
424e2d0d35bSSven Eckelmann 	 *  will use to choose a gateway if gw_mode was set to 'client'.
425e2d0d35bSSven Eckelmann 	 */
426e2d0d35bSSven Eckelmann 	BATADV_ATTR_GW_SEL_CLASS,
427e2d0d35bSSven Eckelmann 
428bfc7f1beSSven Eckelmann 	/**
429bfc7f1beSSven Eckelmann 	 * @BATADV_ATTR_HOP_PENALTY: defines the penalty which will be applied
4303bda14d0SLinus Lüssing 	 *  to an originator message's tq-field on every hop and/or per
4313bda14d0SLinus Lüssing 	 *  hard interface
432bfc7f1beSSven Eckelmann 	 */
433bfc7f1beSSven Eckelmann 	BATADV_ATTR_HOP_PENALTY,
434bfc7f1beSSven Eckelmann 
435b85bd091SSven Eckelmann 	/**
436b85bd091SSven Eckelmann 	 * @BATADV_ATTR_LOG_LEVEL: bitmask with to define which debug messages
437b85bd091SSven Eckelmann 	 *  should be send to the debug log/trace ring buffer
438b85bd091SSven Eckelmann 	 */
439b85bd091SSven Eckelmann 	BATADV_ATTR_LOG_LEVEL,
440b85bd091SSven Eckelmann 
441f75b56bcSSven Eckelmann 	/**
442f75b56bcSSven Eckelmann 	 * @BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED: whether multicast
443f75b56bcSSven Eckelmann 	 *  optimizations should be replaced by simple broadcast-like flooding
444f75b56bcSSven Eckelmann 	 *  of multicast packets. If set to non-zero then all nodes in the mesh
445f75b56bcSSven Eckelmann 	 *  are going to use classic flooding for any multicast packet with no
446f75b56bcSSven Eckelmann 	 *  optimizations.
447f75b56bcSSven Eckelmann 	 */
448f75b56bcSSven Eckelmann 	BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
449f75b56bcSSven Eckelmann 
4506c57cde6SSven Eckelmann 	/**
4516c57cde6SSven Eckelmann 	 * @BATADV_ATTR_NETWORK_CODING_ENABLED: whether Network Coding (using
4526c57cde6SSven Eckelmann 	 *  some magic to send fewer wifi packets but still the same content) is
4536c57cde6SSven Eckelmann 	 *  enabled or not.
4546c57cde6SSven Eckelmann 	 */
4556c57cde6SSven Eckelmann 	BATADV_ATTR_NETWORK_CODING_ENABLED,
4566c57cde6SSven Eckelmann 
4577b751b39SSven Eckelmann 	/**
4587b751b39SSven Eckelmann 	 * @BATADV_ATTR_ORIG_INTERVAL: defines the interval in milliseconds in
4597b751b39SSven Eckelmann 	 *  which batman sends its protocol messages.
4607b751b39SSven Eckelmann 	 */
4617b751b39SSven Eckelmann 	BATADV_ATTR_ORIG_INTERVAL,
4627b751b39SSven Eckelmann 
463a1080082SSven Eckelmann 	/**
464a1080082SSven Eckelmann 	 * @BATADV_ATTR_ELP_INTERVAL: defines the interval in milliseconds in
465a1080082SSven Eckelmann 	 *  which batman emits probing packets for neighbor sensing (ELP).
466a1080082SSven Eckelmann 	 */
467a1080082SSven Eckelmann 	BATADV_ATTR_ELP_INTERVAL,
468a1080082SSven Eckelmann 
4699a182242SSven Eckelmann 	/**
4709a182242SSven Eckelmann 	 * @BATADV_ATTR_THROUGHPUT_OVERRIDE: defines the throughput value to be
4719a182242SSven Eckelmann 	 *  used by B.A.T.M.A.N. V when estimating the link throughput using
4729a182242SSven Eckelmann 	 *  this interface. If the value is set to 0 then batman-adv will try to
4739a182242SSven Eckelmann 	 *  estimate the throughput by itself.
4749a182242SSven Eckelmann 	 */
4759a182242SSven Eckelmann 	BATADV_ATTR_THROUGHPUT_OVERRIDE,
4769a182242SSven Eckelmann 
47732e72744SLinus Lüssing 	/**
47832e72744SLinus Lüssing 	 * @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet
47932e72744SLinus Lüssing 	 * copies that may be generated for a multicast-to-unicast conversion.
48032e72744SLinus Lüssing 	 * Once this limit is exceeded distribution will fall back to broadcast.
48132e72744SLinus Lüssing 	 */
48232e72744SLinus Lüssing 	BATADV_ATTR_MULTICAST_FANOUT,
48332e72744SLinus Lüssing 
48409748a22SMatthias Schiffer 	/* add attributes above here, update the policy in netlink.c */
48540b16b9bSSven Eckelmann 
48640b16b9bSSven Eckelmann 	/**
48740b16b9bSSven Eckelmann 	 * @__BATADV_ATTR_AFTER_LAST: internal use
48840b16b9bSSven Eckelmann 	 */
48909748a22SMatthias Schiffer 	__BATADV_ATTR_AFTER_LAST,
49040b16b9bSSven Eckelmann 
49140b16b9bSSven Eckelmann 	/**
49240b16b9bSSven Eckelmann 	 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
49340b16b9bSSven Eckelmann 	 */
49409748a22SMatthias Schiffer 	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
49540b16b9bSSven Eckelmann 
49640b16b9bSSven Eckelmann 	/**
49740b16b9bSSven Eckelmann 	 * @BATADV_ATTR_MAX: highest attribute number currently defined
49840b16b9bSSven Eckelmann 	 */
49909748a22SMatthias Schiffer 	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
50009748a22SMatthias Schiffer };
50109748a22SMatthias Schiffer 
50209748a22SMatthias Schiffer /**
50309748a22SMatthias Schiffer  * enum batadv_nl_commands - supported batman-adv netlink commands
50409748a22SMatthias Schiffer  */
50509748a22SMatthias Schiffer enum batadv_nl_commands {
50640b16b9bSSven Eckelmann 	/**
50740b16b9bSSven Eckelmann 	 * @BATADV_CMD_UNSPEC: unspecified command to catch errors
50840b16b9bSSven Eckelmann 	 */
50909748a22SMatthias Schiffer 	BATADV_CMD_UNSPEC,
51040b16b9bSSven Eckelmann 
51140b16b9bSSven Eckelmann 	/**
51260040513SSven Eckelmann 	 * @BATADV_CMD_GET_MESH: Get attributes from softif/mesh
51340b16b9bSSven Eckelmann 	 */
51460040513SSven Eckelmann 	BATADV_CMD_GET_MESH,
51560040513SSven Eckelmann 
51660040513SSven Eckelmann 	/**
51760040513SSven Eckelmann 	 * @BATADV_CMD_GET_MESH_INFO: Alias for @BATADV_CMD_GET_MESH
51860040513SSven Eckelmann 	 */
51960040513SSven Eckelmann 	BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
52040b16b9bSSven Eckelmann 
52140b16b9bSSven Eckelmann 	/**
52240b16b9bSSven Eckelmann 	 * @BATADV_CMD_TP_METER: Start a tp meter session
52340b16b9bSSven Eckelmann 	 */
52433a3bb4aSAntonio Quartulli 	BATADV_CMD_TP_METER,
52540b16b9bSSven Eckelmann 
52640b16b9bSSven Eckelmann 	/**
52740b16b9bSSven Eckelmann 	 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
52840b16b9bSSven Eckelmann 	 */
52933a3bb4aSAntonio Quartulli 	BATADV_CMD_TP_METER_CANCEL,
53040b16b9bSSven Eckelmann 
53140b16b9bSSven Eckelmann 	/**
53240b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
53340b16b9bSSven Eckelmann 	 */
53407a3061eSMatthias Schiffer 	BATADV_CMD_GET_ROUTING_ALGOS,
53540b16b9bSSven Eckelmann 
53640b16b9bSSven Eckelmann 	/**
5375c55a40fSSven Eckelmann 	 * @BATADV_CMD_GET_HARDIF: Get attributes from a hardif of the
5385c55a40fSSven Eckelmann 	 *  current softif
53940b16b9bSSven Eckelmann 	 */
5405c55a40fSSven Eckelmann 	BATADV_CMD_GET_HARDIF,
5415c55a40fSSven Eckelmann 
5425c55a40fSSven Eckelmann 	/**
5435c55a40fSSven Eckelmann 	 * @BATADV_CMD_GET_HARDIFS: Alias for @BATADV_CMD_GET_HARDIF
5445c55a40fSSven Eckelmann 	 */
5455c55a40fSSven Eckelmann 	BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
54640b16b9bSSven Eckelmann 
54740b16b9bSSven Eckelmann 	/**
54840b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
54940b16b9bSSven Eckelmann 	 */
550d34f0550SMatthias Schiffer 	BATADV_CMD_GET_TRANSTABLE_LOCAL,
55140b16b9bSSven Eckelmann 
55240b16b9bSSven Eckelmann 	/**
55340b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_TRANSTABLE_GLOBAL: Query list of global translations
55440b16b9bSSven Eckelmann 	 */
555d34f0550SMatthias Schiffer 	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
55640b16b9bSSven Eckelmann 
55740b16b9bSSven Eckelmann 	/**
55840b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
55940b16b9bSSven Eckelmann 	 */
56085cf8c85SMatthias Schiffer 	BATADV_CMD_GET_ORIGINATORS,
56140b16b9bSSven Eckelmann 
56240b16b9bSSven Eckelmann 	/**
56340b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
56440b16b9bSSven Eckelmann 	 */
56585cf8c85SMatthias Schiffer 	BATADV_CMD_GET_NEIGHBORS,
56640b16b9bSSven Eckelmann 
56740b16b9bSSven Eckelmann 	/**
56840b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_GATEWAYS: Query list of gateways
56940b16b9bSSven Eckelmann 	 */
570d7129dafSSven Eckelmann 	BATADV_CMD_GET_GATEWAYS,
57140b16b9bSSven Eckelmann 
57240b16b9bSSven Eckelmann 	/**
57340b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
57440b16b9bSSven Eckelmann 	 */
57504f3f5bfSAndrew Lunn 	BATADV_CMD_GET_BLA_CLAIM,
57640b16b9bSSven Eckelmann 
57740b16b9bSSven Eckelmann 	/**
57840b16b9bSSven Eckelmann 	 * @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance
57940b16b9bSSven Eckelmann 	 * backbones
58040b16b9bSSven Eckelmann 	 */
581ea4152e1SSimon Wunderlich 	BATADV_CMD_GET_BLA_BACKBONE,
58240b16b9bSSven Eckelmann 
58341aeefccSLinus Lüssing 	/**
58441aeefccSLinus Lüssing 	 * @BATADV_CMD_GET_DAT_CACHE: Query list of DAT cache entries
58541aeefccSLinus Lüssing 	 */
58641aeefccSLinus Lüssing 	BATADV_CMD_GET_DAT_CACHE,
58741aeefccSLinus Lüssing 
58853dd9a68SLinus Lüssing 	/**
58953dd9a68SLinus Lüssing 	 * @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags
59053dd9a68SLinus Lüssing 	 */
59153dd9a68SLinus Lüssing 	BATADV_CMD_GET_MCAST_FLAGS,
59253dd9a68SLinus Lüssing 
59360040513SSven Eckelmann 	/**
59460040513SSven Eckelmann 	 * @BATADV_CMD_SET_MESH: Set attributes for softif/mesh
59560040513SSven Eckelmann 	 */
59660040513SSven Eckelmann 	BATADV_CMD_SET_MESH,
59760040513SSven Eckelmann 
5985c55a40fSSven Eckelmann 	/**
5995c55a40fSSven Eckelmann 	 * @BATADV_CMD_SET_HARDIF: Set attributes for hardif of the
6005c55a40fSSven Eckelmann 	 *  current softif
6015c55a40fSSven Eckelmann 	 */
6025c55a40fSSven Eckelmann 	BATADV_CMD_SET_HARDIF,
6035c55a40fSSven Eckelmann 
60449e7e37cSSven Eckelmann 	/**
60549e7e37cSSven Eckelmann 	 * @BATADV_CMD_GET_VLAN: Get attributes from a VLAN of the
60649e7e37cSSven Eckelmann 	 *  current softif
60749e7e37cSSven Eckelmann 	 */
60849e7e37cSSven Eckelmann 	BATADV_CMD_GET_VLAN,
60949e7e37cSSven Eckelmann 
61049e7e37cSSven Eckelmann 	/**
61149e7e37cSSven Eckelmann 	 * @BATADV_CMD_SET_VLAN: Set attributes for VLAN of the
61249e7e37cSSven Eckelmann 	 *  current softif
61349e7e37cSSven Eckelmann 	 */
61449e7e37cSSven Eckelmann 	BATADV_CMD_SET_VLAN,
61549e7e37cSSven Eckelmann 
61609748a22SMatthias Schiffer 	/* add new commands above here */
61740b16b9bSSven Eckelmann 
61840b16b9bSSven Eckelmann 	/**
61940b16b9bSSven Eckelmann 	 * @__BATADV_CMD_AFTER_LAST: internal use
62040b16b9bSSven Eckelmann 	 */
62109748a22SMatthias Schiffer 	__BATADV_CMD_AFTER_LAST,
62240b16b9bSSven Eckelmann 
62340b16b9bSSven Eckelmann 	/**
62440b16b9bSSven Eckelmann 	 * @BATADV_CMD_MAX: highest used command number
62540b16b9bSSven Eckelmann 	 */
62609748a22SMatthias Schiffer 	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
62709748a22SMatthias Schiffer };
62809748a22SMatthias Schiffer 
62933a3bb4aSAntonio Quartulli /**
63033a3bb4aSAntonio Quartulli  * enum batadv_tp_meter_reason - reason of a tp meter test run stop
63133a3bb4aSAntonio Quartulli  */
63233a3bb4aSAntonio Quartulli enum batadv_tp_meter_reason {
63340b16b9bSSven Eckelmann 	/**
63440b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_COMPLETE: sender finished tp run
63540b16b9bSSven Eckelmann 	 */
63633a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_COMPLETE		= 3,
63740b16b9bSSven Eckelmann 
63840b16b9bSSven Eckelmann 	/**
63940b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_CANCEL: sender was stopped during run
64040b16b9bSSven Eckelmann 	 */
64133a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_CANCEL			= 4,
64240b16b9bSSven Eckelmann 
64333a3bb4aSAntonio Quartulli 	/* error status >= 128 */
64440b16b9bSSven Eckelmann 
64540b16b9bSSven Eckelmann 	/**
64640b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or
64740b16b9bSSven Eckelmann 	 * didn't answer
64840b16b9bSSven Eckelmann 	 */
64933a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_DST_UNREACHABLE	= 128,
65040b16b9bSSven Eckelmann 
65140b16b9bSSven Eckelmann 	/**
65240b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
65340b16b9bSSven Eckelmann 	 */
65433a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_RESEND_LIMIT		= 129,
65540b16b9bSSven Eckelmann 
65640b16b9bSSven Eckelmann 	/**
65740b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node
65840b16b9bSSven Eckelmann 	 * already ongoing
65940b16b9bSSven Eckelmann 	 */
66033a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_ALREADY_ONGOING	= 130,
66140b16b9bSSven Eckelmann 
66240b16b9bSSven Eckelmann 	/**
66340b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
66440b16b9bSSven Eckelmann 	 */
66533a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_MEMORY_ERROR		= 131,
66640b16b9bSSven Eckelmann 
66740b16b9bSSven Eckelmann 	/**
66840b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
66940b16b9bSSven Eckelmann 	 */
67033a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_CANT_SEND		= 132,
67140b16b9bSSven Eckelmann 
67240b16b9bSSven Eckelmann 	/**
67340b16b9bSSven Eckelmann 	 * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
67440b16b9bSSven Eckelmann 	 */
67533a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_TOO_MANY		= 133,
67633a3bb4aSAntonio Quartulli };
67733a3bb4aSAntonio Quartulli 
678128254ceSSven Eckelmann /**
679128254ceSSven Eckelmann  * enum batadv_ifla_attrs - batman-adv ifla nested attributes
680128254ceSSven Eckelmann  */
681128254ceSSven Eckelmann enum batadv_ifla_attrs {
682128254ceSSven Eckelmann 	/**
683128254ceSSven Eckelmann 	 * @IFLA_BATADV_UNSPEC: unspecified attribute which is not parsed by
684128254ceSSven Eckelmann 	 *  rtnetlink
685128254ceSSven Eckelmann 	 */
686128254ceSSven Eckelmann 	IFLA_BATADV_UNSPEC,
687128254ceSSven Eckelmann 
688a5ad457eSSven Eckelmann 	/**
689a5ad457eSSven Eckelmann 	 * @IFLA_BATADV_ALGO_NAME: routing algorithm (name) which should be
690a5ad457eSSven Eckelmann 	 *  used by the newly registered batadv net_device.
691a5ad457eSSven Eckelmann 	 */
692a5ad457eSSven Eckelmann 	IFLA_BATADV_ALGO_NAME,
693a5ad457eSSven Eckelmann 
694128254ceSSven Eckelmann 	/* add attributes above here, update the policy in soft-interface.c */
695128254ceSSven Eckelmann 
696128254ceSSven Eckelmann 	/**
697128254ceSSven Eckelmann 	 * @__IFLA_BATADV_MAX: internal use
698128254ceSSven Eckelmann 	 */
699128254ceSSven Eckelmann 	__IFLA_BATADV_MAX,
700128254ceSSven Eckelmann };
701128254ceSSven Eckelmann 
702128254ceSSven Eckelmann #define IFLA_BATADV_MAX (__IFLA_BATADV_MAX - 1)
703128254ceSSven Eckelmann 
70409748a22SMatthias Schiffer #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
705