xref: /linux/include/uapi/linux/batman_adv.h (revision 04f3f5bf1883fbe0acba5c1fc698cf5cedebc5c5)
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
88024f99cbSMatthias Schiffer  * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
89024f99cbSMatthias Schiffer  * @BATADV_ATTR_TQ: TQ to neighbour
90f02a478fSMatthias Schiffer  * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
91d7129dafSSven Eckelmann  * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
92d7129dafSSven Eckelmann  * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
93d7129dafSSven Eckelmann  * @BATADV_ATTR_ROUTER: Gateway router MAC address
94*04f3f5bfSAndrew Lunn  * @BATADV_ATTR_BLA_OWN: Flag indicating own originator
95*04f3f5bfSAndrew Lunn  * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
96*04f3f5bfSAndrew Lunn  * @BATADV_ATTR_BLA_VID: BLA VLAN ID
97*04f3f5bfSAndrew Lunn  * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
98*04f3f5bfSAndrew Lunn  * @BATADV_ATTR_BLA_CRC: BLA CRC
9909748a22SMatthias Schiffer  * @__BATADV_ATTR_AFTER_LAST: internal use
10009748a22SMatthias Schiffer  * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
10109748a22SMatthias Schiffer  * @BATADV_ATTR_MAX: highest attribute number currently defined
10209748a22SMatthias Schiffer  */
10309748a22SMatthias Schiffer enum batadv_nl_attrs {
10409748a22SMatthias Schiffer 	BATADV_ATTR_UNSPEC,
1055da0aef5SMatthias Schiffer 	BATADV_ATTR_VERSION,
1065da0aef5SMatthias Schiffer 	BATADV_ATTR_ALGO_NAME,
1075da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_IFINDEX,
1085da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_IFNAME,
1095da0aef5SMatthias Schiffer 	BATADV_ATTR_MESH_ADDRESS,
1105da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_IFINDEX,
1115da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_IFNAME,
1125da0aef5SMatthias Schiffer 	BATADV_ATTR_HARD_ADDRESS,
11333a3bb4aSAntonio Quartulli 	BATADV_ATTR_ORIG_ADDRESS,
11433a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_RESULT,
11533a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_TEST_TIME,
11633a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_BYTES,
11733a3bb4aSAntonio Quartulli 	BATADV_ATTR_TPMETER_COOKIE,
11833a3bb4aSAntonio Quartulli 	BATADV_ATTR_PAD,
119b60620cfSMatthias Schiffer 	BATADV_ATTR_ACTIVE,
120d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_ADDRESS,
121d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_TTVN,
122d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_LAST_TTVN,
123d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_CRC32,
124d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_VID,
125d34f0550SMatthias Schiffer 	BATADV_ATTR_TT_FLAGS,
126d34f0550SMatthias Schiffer 	BATADV_ATTR_FLAG_BEST,
127d34f0550SMatthias Schiffer 	BATADV_ATTR_LAST_SEEN_MSECS,
128024f99cbSMatthias Schiffer 	BATADV_ATTR_NEIGH_ADDRESS,
129024f99cbSMatthias Schiffer 	BATADV_ATTR_TQ,
130f02a478fSMatthias Schiffer 	BATADV_ATTR_THROUGHPUT,
131d7129dafSSven Eckelmann 	BATADV_ATTR_BANDWIDTH_UP,
132d7129dafSSven Eckelmann 	BATADV_ATTR_BANDWIDTH_DOWN,
133d7129dafSSven Eckelmann 	BATADV_ATTR_ROUTER,
134*04f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_OWN,
135*04f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_ADDRESS,
136*04f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_VID,
137*04f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_BACKBONE,
138*04f3f5bfSAndrew Lunn 	BATADV_ATTR_BLA_CRC,
13909748a22SMatthias Schiffer 	/* add attributes above here, update the policy in netlink.c */
14009748a22SMatthias Schiffer 	__BATADV_ATTR_AFTER_LAST,
14109748a22SMatthias Schiffer 	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
14209748a22SMatthias Schiffer 	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
14309748a22SMatthias Schiffer };
14409748a22SMatthias Schiffer 
14509748a22SMatthias Schiffer /**
14609748a22SMatthias Schiffer  * enum batadv_nl_commands - supported batman-adv netlink commands
14709748a22SMatthias Schiffer  *
14809748a22SMatthias Schiffer  * @BATADV_CMD_UNSPEC: unspecified command to catch errors
1495da0aef5SMatthias Schiffer  * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
15033a3bb4aSAntonio Quartulli  * @BATADV_CMD_TP_METER: Start a tp meter session
15133a3bb4aSAntonio Quartulli  * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
15207a3061eSMatthias Schiffer  * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
153b60620cfSMatthias Schiffer  * @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
154d34f0550SMatthias Schiffer  * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
155d34f0550SMatthias Schiffer  * @BATADV_CMD_GET_TRANSTABLE_GLOBAL Query list of global translations
15685cf8c85SMatthias Schiffer  * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
15785cf8c85SMatthias Schiffer  * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
158d7129dafSSven Eckelmann  * @BATADV_CMD_GET_GATEWAYS: Query list of gateways
159*04f3f5bfSAndrew Lunn  * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
16009748a22SMatthias Schiffer  * @__BATADV_CMD_AFTER_LAST: internal use
16109748a22SMatthias Schiffer  * @BATADV_CMD_MAX: highest used command number
16209748a22SMatthias Schiffer  */
16309748a22SMatthias Schiffer enum batadv_nl_commands {
16409748a22SMatthias Schiffer 	BATADV_CMD_UNSPEC,
1655da0aef5SMatthias Schiffer 	BATADV_CMD_GET_MESH_INFO,
16633a3bb4aSAntonio Quartulli 	BATADV_CMD_TP_METER,
16733a3bb4aSAntonio Quartulli 	BATADV_CMD_TP_METER_CANCEL,
16807a3061eSMatthias Schiffer 	BATADV_CMD_GET_ROUTING_ALGOS,
169b60620cfSMatthias Schiffer 	BATADV_CMD_GET_HARDIFS,
170d34f0550SMatthias Schiffer 	BATADV_CMD_GET_TRANSTABLE_LOCAL,
171d34f0550SMatthias Schiffer 	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
17285cf8c85SMatthias Schiffer 	BATADV_CMD_GET_ORIGINATORS,
17385cf8c85SMatthias Schiffer 	BATADV_CMD_GET_NEIGHBORS,
174d7129dafSSven Eckelmann 	BATADV_CMD_GET_GATEWAYS,
175*04f3f5bfSAndrew Lunn 	BATADV_CMD_GET_BLA_CLAIM,
17609748a22SMatthias Schiffer 	/* add new commands above here */
17709748a22SMatthias Schiffer 	__BATADV_CMD_AFTER_LAST,
17809748a22SMatthias Schiffer 	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
17909748a22SMatthias Schiffer };
18009748a22SMatthias Schiffer 
18133a3bb4aSAntonio Quartulli /**
18233a3bb4aSAntonio Quartulli  * enum batadv_tp_meter_reason - reason of a tp meter test run stop
18333a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_COMPLETE: sender finished tp run
18433a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_CANCEL: sender was stopped during run
18533a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or didn't
18633a3bb4aSAntonio Quartulli  *  answer
18733a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
18833a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node already
18933a3bb4aSAntonio Quartulli  *  ongoing
19033a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
19133a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
19233a3bb4aSAntonio Quartulli  * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
19333a3bb4aSAntonio Quartulli  */
19433a3bb4aSAntonio Quartulli enum batadv_tp_meter_reason {
19533a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_COMPLETE		= 3,
19633a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_CANCEL			= 4,
19733a3bb4aSAntonio Quartulli 	/* error status >= 128 */
19833a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_DST_UNREACHABLE	= 128,
19933a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_RESEND_LIMIT		= 129,
20033a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_ALREADY_ONGOING	= 130,
20133a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_MEMORY_ERROR		= 131,
20233a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_CANT_SEND		= 132,
20333a3bb4aSAntonio Quartulli 	BATADV_TP_REASON_TOO_MANY		= 133,
20433a3bb4aSAntonio Quartulli };
20533a3bb4aSAntonio Quartulli 
20609748a22SMatthias Schiffer #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
207