xref: /linux/include/uapi/linux/batman_adv.h (revision 024f99cb4acc14dab5e55e1ecdf6aad31269ca98)
109748a22SMatthias Schiffer /* Copyright (C) 2016 B.A.T.M.A.N. contributors:
209748a22SMatthias Schiffer  *
309748a22SMatthias Schiffer  * Matthias Schiffer
409748a22SMatthias Schiffer  *
509748a22SMatthias Schiffer  * Permission to use, copy, modify, and/or distribute this software for any
609748a22SMatthias Schiffer  * purpose with or without fee is hereby granted, provided that the above
709748a22SMatthias Schiffer  * copyright notice and this permission notice appear in all copies.
809748a22SMatthias Schiffer  *
909748a22SMatthias Schiffer  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1009748a22SMatthias Schiffer  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1109748a22SMatthias Schiffer  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1209748a22SMatthias Schiffer  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1309748a22SMatthias Schiffer  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1409748a22SMatthias Schiffer  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1509748a22SMatthias Schiffer  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1609748a22SMatthias Schiffer  */
1709748a22SMatthias Schiffer 
1809748a22SMatthias Schiffer #ifndef _UAPI_LINUX_BATMAN_ADV_H_
1909748a22SMatthias Schiffer #define _UAPI_LINUX_BATMAN_ADV_H_
2009748a22SMatthias Schiffer 
2109748a22SMatthias Schiffer #define BATADV_NL_NAME "batadv"
2209748a22SMatthias Schiffer 
2333a3bb4aSAntonio Quartulli #define BATADV_NL_MCAST_GROUP_TPMETER	"tpmeter"
2433a3bb4aSAntonio Quartulli 
2509748a22SMatthias Schiffer /**
26d34f0550SMatthias Schiffer  * enum batadv_tt_client_flags - TT client specific flags
27d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
28d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and the new
29d34f0550SMatthias Schiffer  *  update telling its new real location has not been received/sent yet
30d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi interface.
31d34f0550SMatthias Schiffer  *  This information is used by the "AP Isolation" feature
32d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
33d34f0550SMatthias Schiffer  *  information is used by the Extended Isolation feature
34d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from the table
35d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_NEW: this client has been added to the local table but has
36d34f0550SMatthias Schiffer  *  not been announced yet
37d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it is kept
38d34f0550SMatthias Schiffer  *  in the table for one more originator interval for consistency purposes
39d34f0550SMatthias Schiffer  * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be part of
40d34f0550SMatthias Schiffer  *  the network but no nnode has already announced it
41d34f0550SMatthias Schiffer  *
42d34f0550SMatthias Schiffer  * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
43d34f0550SMatthias Schiffer  * Bits from 8 to 15 are called _local flags_ because they are used for local
44d34f0550SMatthias Schiffer  * computations only.
45d34f0550SMatthias Schiffer  *
46d34f0550SMatthias Schiffer  * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
47d34f0550SMatthias Schiffer  * the other nodes in the network. To achieve this goal these flags are included
48d34f0550SMatthias Schiffer  * in the TT CRC computation.
49d34f0550SMatthias Schiffer  */
50d34f0550SMatthias Schiffer enum batadv_tt_client_flags {
51d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_DEL     = (1 << 0),
52d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_ROAM    = (1 << 1),
53d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_WIFI    = (1 << 4),
54d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_ISOLA	 = (1 << 5),
55d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_NOPURGE = (1 << 8),
56d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_NEW     = (1 << 9),
57d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_PENDING = (1 << 10),
58d34f0550SMatthias Schiffer 	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
59d34f0550SMatthias Schiffer };
60d34f0550SMatthias Schiffer 
61d34f0550SMatthias Schiffer /**
6209748a22SMatthias Schiffer  * enum batadv_nl_attrs - batman-adv netlink attributes
6309748a22SMatthias Schiffer  *
6409748a22SMatthias Schiffer  * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
655da0aef5SMatthias Schiffer  * @BATADV_ATTR_VERSION: batman-adv version string
665da0aef5SMatthias Schiffer  * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
675da0aef5SMatthias Schiffer  * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
685da0aef5SMatthias Schiffer  * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
695da0aef5SMatthias Schiffer  * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
705da0aef5SMatthias Schiffer  * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
715da0aef5SMatthias Schiffer  * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
725da0aef5SMatthias Schiffer  * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv interface
7333a3bb4aSAntonio Quartulli  * @BATADV_ATTR_ORIG_ADDRESS: originator mac address
7433a3bb4aSAntonio Quartulli  * @BATADV_ATTR_TPMETER_RESULT: result of run (see batadv_tp_meter_status)
7533a3bb4aSAntonio Quartulli  * @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
7633a3bb4aSAntonio Quartulli  * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
7733a3bb4aSAntonio Quartulli  * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
7833a3bb4aSAntonio Quartulli  * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
79b60620cfSMatthias Schiffer  * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
80d34f0550SMatthias Schiffer  * @BATADV_ATTR_TT_ADDRESS: Client MAC address
81d34f0550SMatthias Schiffer  * @BATADV_ATTR_TT_TTVN: Translation table version
82d34f0550SMatthias Schiffer  * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
83d34f0550SMatthias Schiffer  * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
84d34f0550SMatthias Schiffer  * @BATADV_ATTR_TT_VID: VLAN ID
85d34f0550SMatthias Schiffer  * @BATADV_ATTR_TT_FLAGS: Translation table client flags
86d34f0550SMatthias Schiffer  * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
87d34f0550SMatthias Schiffer  * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
88*024f99cbSMatthias Schiffer  * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
89*024f99cbSMatthias Schiffer  * @BATADV_ATTR_TQ: TQ to neighbour
9009748a22SMatthias Schiffer  * @__BATADV_ATTR_AFTER_LAST: internal use
9109748a22SMatthias Schiffer  * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
9209748a22SMatthias Schiffer  * @BATADV_ATTR_MAX: highest attribute number currently defined
9309748a22SMatthias Schiffer  */
9409748a22SMatthias Schiffer enum batadv_nl_attrs {
9509748a22SMatthias Schiffer 	BATADV_ATTR_UNSPEC,
965da0aef5SMatthias Schiffer 	BATADV_ATTR_VERSION,
975da0aef5SMatthias Schiffer 	BATADV_ATTR_ALGO_NAME,
985da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_IFINDEX,
995da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_IFNAME,
1005da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_ADDRESS,
1015da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_IFINDEX,
1025da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_IFNAME,
1035da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_ADDRESS,
10433a3bb4aSAntonio Quartulli 	BATADV_ATTR_ORIG_ADDRESS,
10533a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_RESULT,
10633a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_TEST_TIME,
10733a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_BYTES,
10833a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_COOKIE,
10933a3bb4aSAntonio Quartulli 	BATADV_ATTR_PAD,
110b60620cfSMatthias Schiffer 	BATADV_ATTR_ACTIVE,
111d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_ADDRESS,
112d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_TTVN,
113d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_LAST_TTVN,
114d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_CRC32,
115d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_VID,
116d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_FLAGS,
117d34f0550SMatthias Schiffer 	BATADV_ATTR_FLAG_BEST,
118d34f0550SMatthias Schiffer 	BATADV_ATTR_LAST_SEEN_MSECS,
119*024f99cbSMatthias Schiffer 	BATADV_ATTR_NEIGH_ADDRESS,
120*024f99cbSMatthias Schiffer 	BATADV_ATTR_TQ,
12109748a22SMatthias Schiffer 	/* add attributes above here, update the policy in netlink.c */
12209748a22SMatthias Schiffer 	__BATADV_ATTR_AFTER_LAST,
12309748a22SMatthias Schiffer 	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
12409748a22SMatthias Schiffer 	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
12509748a22SMatthias Schiffer };
12609748a22SMatthias Schiffer 
12709748a22SMatthias Schiffer /**
12809748a22SMatthias Schiffer  * enum batadv_nl_commands - supported batman-adv netlink commands
12909748a22SMatthias Schiffer  *
13009748a22SMatthias Schiffer  * @BATADV_CMD_UNSPEC: unspecified command to catch errors
1315da0aef5SMatthias Schiffer  * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
13233a3bb4aSAntonio Quartulli  * @BATADV_CMD_TP_METER: Start a tp meter session
13333a3bb4aSAntonio Quartulli  * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
13407a3061eSMatthias Schiffer  * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
135b60620cfSMatthias Schiffer  * @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
136d34f0550SMatthias Schiffer  * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
137d34f0550SMatthias Schiffer  * @BATADV_CMD_GET_TRANSTABLE_GLOBAL Query list of global translations
13885cf8c85SMatthias Schiffer  * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
13985cf8c85SMatthias Schiffer  * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
14009748a22SMatthias Schiffer  * @__BATADV_CMD_AFTER_LAST: internal use
14109748a22SMatthias Schiffer  * @BATADV_CMD_MAX: highest used command number
14209748a22SMatthias Schiffer  */
14309748a22SMatthias Schiffer enum batadv_nl_commands {
14409748a22SMatthias Schiffer 	BATADV_CMD_UNSPEC,
1455da0aef5SMatthias Schiffer 	BATADV_CMD_GET_MESH_INFO,
14633a3bb4aSAntonio Quartulli 	BATADV_CMD_TP_METER,
14733a3bb4aSAntonio Quartulli 	BATADV_CMD_TP_METER_CANCEL,
14807a3061eSMatthias Schiffer 	BATADV_CMD_GET_ROUTING_ALGOS,
149b60620cfSMatthias Schiffer 	BATADV_CMD_GET_HARDIFS,
150d34f0550SMatthias Schiffer 	BATADV_CMD_GET_TRANSTABLE_LOCAL,
151d34f0550SMatthias Schiffer 	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
15285cf8c85SMatthias Schiffer 	BATADV_CMD_GET_ORIGINATORS,
15385cf8c85SMatthias Schiffer 	BATADV_CMD_GET_NEIGHBORS,
15409748a22SMatthias Schiffer 	/* add new commands above here */
15509748a22SMatthias Schiffer 	__BATADV_CMD_AFTER_LAST,
15609748a22SMatthias Schiffer 	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
15709748a22SMatthias Schiffer };
15809748a22SMatthias Schiffer 
15933a3bb4aSAntonio Quartulli /**
16033a3bb4aSAntonio Quartulli  * enum batadv_tp_meter_reason - reason of a tp meter test run stop
16133a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_COMPLETE: sender finished tp run
16233a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_CANCEL: sender was stopped during run
16333a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or didn't
16433a3bb4aSAntonio Quartulli  *  answer
16533a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
16633a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node already
16733a3bb4aSAntonio Quartulli  *  ongoing
16833a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
16933a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
17033a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
17133a3bb4aSAntonio Quartulli  */
17233a3bb4aSAntonio Quartulli enum batadv_tp_meter_reason {
17333a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_COMPLETE		= 3,
17433a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_CANCEL			= 4,
17533a3bb4aSAntonio Quartulli 	/* error status >= 128 */
17633a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_DST_UNREACHABLE	= 128,
17733a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_RESEND_LIMIT		= 129,
17833a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_ALREADY_ONGOING	= 130,
17933a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_MEMORY_ERROR		= 131,
18033a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_CANT_SEND		= 132,
18133a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_TOO_MANY		= 133,
18233a3bb4aSAntonio Quartulli };
18333a3bb4aSAntonio Quartulli 
18409748a22SMatthias Schiffer #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
185