batman_adv.h 7.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/* Copyright (C) 2016 B.A.T.M.A.N. contributors:
 *
 * Matthias Schiffer
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef _UAPI_LINUX_BATMAN_ADV_H_
#define _UAPI_LINUX_BATMAN_ADV_H_

#define BATADV_NL_NAME "batadv"

23 24
#define BATADV_NL_MCAST_GROUP_TPMETER	"tpmeter"

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
/**
 * enum batadv_tt_client_flags - TT client specific flags
 * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
 * @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
 * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi interface.
 *  This information is used by the "AP Isolation" feature
 * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
 *  information is used by the Extended Isolation feature
 * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from the table
 * @BATADV_TT_CLIENT_NEW: this client has been added to the local table but has
 *  not been announced yet
 * @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
 * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be part of
 *  the network but no nnode has already announced it
 *
 * 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 {
	BATADV_TT_CLIENT_DEL     = (1 << 0),
	BATADV_TT_CLIENT_ROAM    = (1 << 1),
	BATADV_TT_CLIENT_WIFI    = (1 << 4),
	BATADV_TT_CLIENT_ISOLA	 = (1 << 5),
	BATADV_TT_CLIENT_NOPURGE = (1 << 8),
	BATADV_TT_CLIENT_NEW     = (1 << 9),
	BATADV_TT_CLIENT_PENDING = (1 << 10),
	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
};

61 62 63 64
/**
 * enum batadv_nl_attrs - batman-adv netlink attributes
 *
 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
65 66 67 68 69 70 71 72
 * @BATADV_ATTR_VERSION: batman-adv version string
 * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
 * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
 * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
 * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
 * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
 * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
 * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv interface
73 74 75 76 77 78
 * @BATADV_ATTR_ORIG_ADDRESS: originator mac address
 * @BATADV_ATTR_TPMETER_RESULT: result of run (see batadv_tp_meter_status)
 * @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
79
 * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
80 81 82 83 84 85 86 87
 * @BATADV_ATTR_TT_ADDRESS: Client MAC address
 * @BATADV_ATTR_TT_TTVN: Translation table version
 * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
 * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
 * @BATADV_ATTR_TT_VID: VLAN ID
 * @BATADV_ATTR_TT_FLAGS: Translation table client flags
 * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
 * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
88 89 90 91 92 93
 * @__BATADV_ATTR_AFTER_LAST: internal use
 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
 * @BATADV_ATTR_MAX: highest attribute number currently defined
 */
enum batadv_nl_attrs {
	BATADV_ATTR_UNSPEC,
94 95 96 97 98 99 100 101
	BATADV_ATTR_VERSION,
	BATADV_ATTR_ALGO_NAME,
	BATADV_ATTR_MESH_IFINDEX,
	BATADV_ATTR_MESH_IFNAME,
	BATADV_ATTR_MESH_ADDRESS,
	BATADV_ATTR_HARD_IFINDEX,
	BATADV_ATTR_HARD_IFNAME,
	BATADV_ATTR_HARD_ADDRESS,
102 103 104 105 106 107
	BATADV_ATTR_ORIG_ADDRESS,
	BATADV_ATTR_TPMETER_RESULT,
	BATADV_ATTR_TPMETER_TEST_TIME,
	BATADV_ATTR_TPMETER_BYTES,
	BATADV_ATTR_TPMETER_COOKIE,
	BATADV_ATTR_PAD,
108
	BATADV_ATTR_ACTIVE,
109 110 111 112 113 114 115 116
	BATADV_ATTR_TT_ADDRESS,
	BATADV_ATTR_TT_TTVN,
	BATADV_ATTR_TT_LAST_TTVN,
	BATADV_ATTR_TT_CRC32,
	BATADV_ATTR_TT_VID,
	BATADV_ATTR_TT_FLAGS,
	BATADV_ATTR_FLAG_BEST,
	BATADV_ATTR_LAST_SEEN_MSECS,
117 118 119 120 121 122 123 124 125 126
	/* add attributes above here, update the policy in netlink.c */
	__BATADV_ATTR_AFTER_LAST,
	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
};

/**
 * enum batadv_nl_commands - supported batman-adv netlink commands
 *
 * @BATADV_CMD_UNSPEC: unspecified command to catch errors
127
 * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
128 129
 * @BATADV_CMD_TP_METER: Start a tp meter session
 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
130
 * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
131
 * @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
132 133
 * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
 * @BATADV_CMD_GET_TRANSTABLE_GLOBAL Query list of global translations
134 135
 * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
 * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
136 137 138 139 140
 * @__BATADV_CMD_AFTER_LAST: internal use
 * @BATADV_CMD_MAX: highest used command number
 */
enum batadv_nl_commands {
	BATADV_CMD_UNSPEC,
141
	BATADV_CMD_GET_MESH_INFO,
142 143
	BATADV_CMD_TP_METER,
	BATADV_CMD_TP_METER_CANCEL,
144
	BATADV_CMD_GET_ROUTING_ALGOS,
145
	BATADV_CMD_GET_HARDIFS,
146 147
	BATADV_CMD_GET_TRANSTABLE_LOCAL,
	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
148 149
	BATADV_CMD_GET_ORIGINATORS,
	BATADV_CMD_GET_NEIGHBORS,
150 151 152 153 154
	/* add new commands above here */
	__BATADV_CMD_AFTER_LAST,
	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
};

155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
/**
 * enum batadv_tp_meter_reason - reason of a tp meter test run stop
 * @BATADV_TP_REASON_COMPLETE: sender finished tp run
 * @BATADV_TP_REASON_CANCEL: sender was stopped during run
 * @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or didn't
 *  answer
 * @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
 * @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node already
 *  ongoing
 * @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
 * @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
 * @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
 */
enum batadv_tp_meter_reason {
	BATADV_TP_REASON_COMPLETE		= 3,
	BATADV_TP_REASON_CANCEL			= 4,
	/* error status >= 128 */
	BATADV_TP_REASON_DST_UNREACHABLE	= 128,
	BATADV_TP_REASON_RESEND_LIMIT		= 129,
	BATADV_TP_REASON_ALREADY_ONGOING	= 130,
	BATADV_TP_REASON_MEMORY_ERROR		= 131,
	BATADV_TP_REASON_CANT_SEND		= 132,
	BATADV_TP_REASON_TOO_MANY		= 133,
};

180
#endif /* _UAPI_LINUX_BATMAN_ADV_H_ */