/* SPDX-License-Identifier: MIT */


#ifndef _UAPI_LINUX_BATMAN_ADV_H_
#define _UAPI_LINUX_BATMAN_ADV_H_

#define BATADV_NL_NAME "batadv"

#define BATADV_NL_MCAST_GROUP_CONFIG	"config"
#define BATADV_NL_MCAST_GROUP_TPMETER	"tpmeter"


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),
};


enum batadv_mcast_flags_priv {
	
	BATADV_MCAST_FLAGS_BRIDGED			= (1 << 0),

	
	BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS		= (1 << 1),

	
	BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS		= (1 << 2),

	
	BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING	= (1 << 3),

	
	BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING	= (1 << 4),
};


enum batadv_gw_modes {
	
	BATADV_GW_MODE_OFF,

	
	BATADV_GW_MODE_CLIENT,

	
	BATADV_GW_MODE_SERVER,
};


enum batadv_nl_attrs {
	
	BATADV_ATTR_UNSPEC,

	
	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,

	
	BATADV_ATTR_ORIG_ADDRESS,

	
	BATADV_ATTR_TPMETER_RESULT,

	
	BATADV_ATTR_TPMETER_TEST_TIME,

	
	BATADV_ATTR_TPMETER_BYTES,

	
	BATADV_ATTR_TPMETER_COOKIE,

	
	BATADV_ATTR_PAD,

	
	BATADV_ATTR_ACTIVE,

	
	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,

	
	BATADV_ATTR_NEIGH_ADDRESS,

	
	BATADV_ATTR_TQ,

	
	BATADV_ATTR_THROUGHPUT,

	
	BATADV_ATTR_BANDWIDTH_UP,

	
	BATADV_ATTR_BANDWIDTH_DOWN,

	
	BATADV_ATTR_ROUTER,

	
	BATADV_ATTR_BLA_OWN,

	
	BATADV_ATTR_BLA_ADDRESS,

	
	BATADV_ATTR_BLA_VID,

	
	BATADV_ATTR_BLA_BACKBONE,

	
	BATADV_ATTR_BLA_CRC,

	
	BATADV_ATTR_DAT_CACHE_IP4ADDRESS,

	
	BATADV_ATTR_DAT_CACHE_HWADDRESS,

	
	BATADV_ATTR_DAT_CACHE_VID,

	
	BATADV_ATTR_MCAST_FLAGS,

	
	BATADV_ATTR_MCAST_FLAGS_PRIV,

	
	BATADV_ATTR_VLANID,

	
	BATADV_ATTR_AGGREGATED_OGMS_ENABLED,

	
	BATADV_ATTR_AP_ISOLATION_ENABLED,

	
	BATADV_ATTR_ISOLATION_MARK,

	
	BATADV_ATTR_ISOLATION_MASK,

	
	BATADV_ATTR_BONDING_ENABLED,

	
	BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,

	
	BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,

	
	BATADV_ATTR_FRAGMENTATION_ENABLED,

	
	BATADV_ATTR_GW_BANDWIDTH_DOWN,

	
	BATADV_ATTR_GW_BANDWIDTH_UP,

	
	BATADV_ATTR_GW_MODE,

	
	BATADV_ATTR_GW_SEL_CLASS,

	
	BATADV_ATTR_HOP_PENALTY,

	
	BATADV_ATTR_LOG_LEVEL,

	
	BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,

	
	BATADV_ATTR_NETWORK_CODING_ENABLED,

	
	BATADV_ATTR_ORIG_INTERVAL,

	
	BATADV_ATTR_ELP_INTERVAL,

	
	BATADV_ATTR_THROUGHPUT_OVERRIDE,

	
	BATADV_ATTR_MULTICAST_FANOUT,

	

	
	__BATADV_ATTR_AFTER_LAST,

	
	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,

	
	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
};


enum batadv_nl_commands {
	
	BATADV_CMD_UNSPEC,

	
	BATADV_CMD_GET_MESH,

	
	BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,

	
	BATADV_CMD_TP_METER,

	
	BATADV_CMD_TP_METER_CANCEL,

	
	BATADV_CMD_GET_ROUTING_ALGOS,

	
	BATADV_CMD_GET_HARDIF,

	
	BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,

	
	BATADV_CMD_GET_TRANSTABLE_LOCAL,

	
	BATADV_CMD_GET_TRANSTABLE_GLOBAL,

	
	BATADV_CMD_GET_ORIGINATORS,

	
	BATADV_CMD_GET_NEIGHBORS,

	
	BATADV_CMD_GET_GATEWAYS,

	
	BATADV_CMD_GET_BLA_CLAIM,

	
	BATADV_CMD_GET_BLA_BACKBONE,

	
	BATADV_CMD_GET_DAT_CACHE,

	
	BATADV_CMD_GET_MCAST_FLAGS,

	
	BATADV_CMD_SET_MESH,

	
	BATADV_CMD_SET_HARDIF,

	
	BATADV_CMD_GET_VLAN,

	
	BATADV_CMD_SET_VLAN,

	

	
	__BATADV_CMD_AFTER_LAST,

	
	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
};


enum batadv_tp_meter_reason {
	
	BATADV_TP_REASON_COMPLETE		= 3,

	
	BATADV_TP_REASON_CANCEL			= 4,

	

	
	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,
};


enum batadv_ifla_attrs {
	
	IFLA_BATADV_UNSPEC,

	
	IFLA_BATADV_ALGO_NAME,

	

	
	__IFLA_BATADV_MAX,
};

#define IFLA_BATADV_MAX (__IFLA_BATADV_MAX - 1)

#endif 
