183 lines
6.0 KiB
C
183 lines
6.0 KiB
C
/*
|
|
* 802.11 netlink interface public header
|
|
*
|
|
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
|
* Copyright 2008 Michael Wu <flamingice@sourmilk.net>
|
|
* Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com>
|
|
* Copyright 2008 Michael Buesch <m@bues.ch>
|
|
* Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
|
|
* Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
|
|
* Copyright 2008 Colin McCabe <colin@cozybit.com>
|
|
* Copyright 2015-2017 Intel Deutschland GmbH
|
|
* Copyright (C) 2018-2019 Intel Corporation
|
|
*
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* Userspace port (c) 2019 Hak5
|
|
*/
|
|
|
|
#ifndef __USERSPACE_NL80211_H__
|
|
#define __USERSPACE_NL80211_H__
|
|
|
|
#include "kernel.h"
|
|
#include "types.h"
|
|
|
|
/**
|
|
* enum nl80211_chan_width - channel width definitions
|
|
*
|
|
* These values are used with the %NL80211_ATTR_CHANNEL_WIDTH
|
|
* attribute.
|
|
*
|
|
* @NL80211_CHAN_WIDTH_20_NOHT: 20 MHz, non-HT channel
|
|
* @NL80211_CHAN_WIDTH_20: 20 MHz HT channel
|
|
* @NL80211_CHAN_WIDTH_40: 40 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
|
|
* attribute must be provided as well
|
|
* @NL80211_CHAN_WIDTH_80: 80 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
|
|
* attribute must be provided as well
|
|
* @NL80211_CHAN_WIDTH_80P80: 80+80 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
|
|
* and %NL80211_ATTR_CENTER_FREQ2 attributes must be provided as well
|
|
* @NL80211_CHAN_WIDTH_160: 160 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
|
|
* attribute must be provided as well
|
|
* @NL80211_CHAN_WIDTH_5: 5 MHz OFDM channel
|
|
* @NL80211_CHAN_WIDTH_10: 10 MHz OFDM channel
|
|
*/
|
|
enum nl80211_chan_width {
|
|
NL80211_CHAN_WIDTH_20_NOHT,
|
|
NL80211_CHAN_WIDTH_20,
|
|
NL80211_CHAN_WIDTH_40,
|
|
NL80211_CHAN_WIDTH_80,
|
|
NL80211_CHAN_WIDTH_80P80,
|
|
NL80211_CHAN_WIDTH_160,
|
|
NL80211_CHAN_WIDTH_5,
|
|
NL80211_CHAN_WIDTH_10,
|
|
};
|
|
|
|
/**
|
|
* enum nl80211_band - Frequency band
|
|
* @NL80211_BAND_2GHZ: 2.4 GHz ISM band
|
|
* @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
|
|
* @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
|
|
* @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
|
|
* since newer kernel versions may support more bands
|
|
*/
|
|
enum nl80211_band {
|
|
NL80211_BAND_2GHZ,
|
|
NL80211_BAND_5GHZ,
|
|
NL80211_BAND_60GHZ,
|
|
|
|
NUM_NL80211_BANDS,
|
|
};
|
|
|
|
/**
|
|
* enum nl80211_dfs_state - DFS states for channels
|
|
*
|
|
* Channel states used by the DFS code.
|
|
*
|
|
* @NL80211_DFS_USABLE: The channel can be used, but channel availability
|
|
* check (CAC) must be performed before using it for AP or IBSS.
|
|
* @NL80211_DFS_UNAVAILABLE: A radar has been detected on this channel, it
|
|
* is therefore marked as not available.
|
|
* @NL80211_DFS_AVAILABLE: The channel has been CAC checked and is available.
|
|
*/
|
|
enum nl80211_dfs_state {
|
|
NL80211_DFS_USABLE,
|
|
NL80211_DFS_UNAVAILABLE,
|
|
NL80211_DFS_AVAILABLE,
|
|
};
|
|
|
|
/**
|
|
* enum nl80211_tx_power_setting - TX power adjustment
|
|
* @NL80211_TX_POWER_AUTOMATIC: automatically determine transmit power
|
|
* @NL80211_TX_POWER_LIMITED: limit TX power by the mBm parameter
|
|
* @NL80211_TX_POWER_FIXED: fix TX power to the mBm parameter
|
|
*/
|
|
enum nl80211_tx_power_setting {
|
|
NL80211_TX_POWER_AUTOMATIC,
|
|
NL80211_TX_POWER_LIMITED,
|
|
NL80211_TX_POWER_FIXED,
|
|
};
|
|
|
|
/**
|
|
* enum nl80211_iftype - (virtual) interface types
|
|
*
|
|
* @NL80211_IFTYPE_UNSPECIFIED: unspecified type, driver decides
|
|
* @NL80211_IFTYPE_ADHOC: independent BSS member
|
|
* @NL80211_IFTYPE_STATION: managed BSS member
|
|
* @NL80211_IFTYPE_AP: access point
|
|
* @NL80211_IFTYPE_AP_VLAN: VLAN interface for access points; VLAN interfaces
|
|
* are a bit special in that they must always be tied to a pre-existing
|
|
* AP type interface.
|
|
* @NL80211_IFTYPE_WDS: wireless distribution interface
|
|
* @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
|
|
* @NL80211_IFTYPE_MESH_POINT: mesh point
|
|
* @NL80211_IFTYPE_P2P_CLIENT: P2P client
|
|
* @NL80211_IFTYPE_P2P_GO: P2P group owner
|
|
* @NL80211_IFTYPE_P2P_DEVICE: P2P device interface type, this is not a netdev
|
|
* and therefore can't be created in the normal ways, use the
|
|
* %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE
|
|
* commands to create and destroy one
|
|
* @NL80211_IF_TYPE_OCB: Outside Context of a BSS
|
|
* This mode corresponds to the MIB variable dot11OCBActivated=true
|
|
* @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
|
|
* @NL80211_IFTYPE_MAX: highest interface type number currently defined
|
|
* @NUM_NL80211_IFTYPES: number of defined interface types
|
|
*
|
|
* These values are used with the %NL80211_ATTR_IFTYPE
|
|
* to set the type of an interface.
|
|
*
|
|
*/
|
|
enum nl80211_iftype {
|
|
NL80211_IFTYPE_UNSPECIFIED,
|
|
NL80211_IFTYPE_ADHOC,
|
|
NL80211_IFTYPE_STATION,
|
|
NL80211_IFTYPE_AP,
|
|
NL80211_IFTYPE_AP_VLAN,
|
|
NL80211_IFTYPE_WDS,
|
|
NL80211_IFTYPE_MONITOR,
|
|
NL80211_IFTYPE_MESH_POINT,
|
|
NL80211_IFTYPE_P2P_CLIENT,
|
|
NL80211_IFTYPE_P2P_GO,
|
|
NL80211_IFTYPE_P2P_DEVICE,
|
|
NL80211_IFTYPE_OCB,
|
|
NL80211_IFTYPE_NAN,
|
|
|
|
/* keep last */
|
|
NUM_NL80211_IFTYPES,
|
|
NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
|
|
}
|
|
;
|
|
/* Notice of Absence attribute - described in P2P spec 4.1.14 */
|
|
/* Typical max value used here */
|
|
#define IEEE80211_P2P_NOA_DESC_MAX 4
|
|
|
|
struct ieee80211_p2p_noa_desc {
|
|
u8 count;
|
|
__le32 duration;
|
|
__le32 interval;
|
|
__le32 start_time;
|
|
} __packed;
|
|
|
|
struct ieee80211_p2p_noa_attr {
|
|
u8 index;
|
|
u8 oppps_ctwindow;
|
|
struct ieee80211_p2p_noa_desc desc[IEEE80211_P2P_NOA_DESC_MAX];
|
|
} __packed;
|
|
|
|
#define IEEE80211_P2P_OPPPS_ENABLE_BIT BIT(7)
|
|
#define IEEE80211_P2P_OPPPS_CTWINDOW_MASK 0x7F
|
|
|
|
#endif /* ifndef USERSPACE_NL80211_H */
|