sdk-hwV1.3/lichee/xr806/appos/include/net/wlan/wlan_defs.h

949 lines
30 KiB
C
Executable File

/*
* Copyright (C) 2017 XRADIO TECHNOLOGY CO., LTD. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
* 3. Neither the name of XRADIO TECHNOLOGY CO., LTD. nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _NET_WLAN_WLAN_DEFS_H_
#define _NET_WLAN_WLAN_DEFS_H_
#include <stdint.h>
#include "compiler.h"
#include "net/wlan/wlan_common.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef WPA_BIT
#define WPA_BIT(x) (1 << (x))
#endif
/**
* @brief WPA cipher definition
*/
#define WPA_CIPHER_NONE WPA_BIT(0)
#define WPA_CIPHER_WEP40 WPA_BIT(1)
#define WPA_CIPHER_WEP104 WPA_BIT(2)
#define WPA_CIPHER_TKIP WPA_BIT(3)
#define WPA_CIPHER_CCMP WPA_BIT(4)
#define WPA_CIPHER_AES_128_CMAC WPA_BIT(5)
#define WPA_CIPHER_GCMP WPA_BIT(6)
#define WPA_CIPHER_SMS4 WPA_BIT(7)
#define WPA_CIPHER_GCMP_256 WPA_BIT(8)
#define WPA_CIPHER_CCMP_256 WPA_BIT(9)
#define WPA_CIPHER_BIP_GMAC_128 WPA_BIT(11)
#define WPA_CIPHER_BIP_GMAC_256 WPA_BIT(12)
#define WPA_CIPHER_BIP_CMAC_256 WPA_BIT(13)
#define WPA_CIPHER_GTK_NOT_USED WPA_BIT(14)
#define WPA_CIPHER_MASK (WPA_BIT(15) - 1)
/**
* @brief WPA key management definition
*/
#define WPA_KEY_MGMT_IEEE8021X WPA_BIT(0)
#define WPA_KEY_MGMT_PSK WPA_BIT(1)
#define WPA_KEY_MGMT_NONE WPA_BIT(2)
#define WPA_KEY_MGMT_IEEE8021X_NO_WPA WPA_BIT(3)
#define WPA_KEY_MGMT_WPA_NONE WPA_BIT(4)
#define WPA_KEY_MGMT_FT_IEEE8021X WPA_BIT(5)
#define WPA_KEY_MGMT_FT_PSK WPA_BIT(6)
#define WPA_KEY_MGMT_IEEE8021X_SHA256 WPA_BIT(7)
#define WPA_KEY_MGMT_PSK_SHA256 WPA_BIT(8)
#define WPA_KEY_MGMT_WPS WPA_BIT(9)
#define WPA_KEY_MGMT_SAE WPA_BIT(10)
#define WPA_KEY_MGMT_FT_SAE WPA_BIT(11)
#define WPA_KEY_MGMT_WAPI_PSK WPA_BIT(12)
#define WPA_KEY_MGMT_WAPI_CERT WPA_BIT(13)
#define WPA_KEY_MGMT_CCKM WPA_BIT(14)
#define WPA_KEY_MGMT_OSEN WPA_BIT(15)
#define WPA_KEY_MGMT_IEEE8021X_SUITE_B WPA_BIT(16)
#define WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 WPA_BIT(17)
#define WPA_KEY_MGMT_FILS_SHA256 WPA_BIT(18)
#define WPA_KEY_MGMT_FILS_SHA384 WPA_BIT(19)
#define WPA_KEY_MGMT_FT_FILS_SHA256 WPA_BIT(20)
#define WPA_KEY_MGMT_FT_FILS_SHA384 WPA_BIT(21)
#define WPA_KEY_MGMT_OWE WPA_BIT(22)
#define WPA_KEY_MGMT_DPP WPA_BIT(23)
#define WPA_KEY_MGMT_FT_IEEE8021X_SHA384 WPA_BIT(24)
#define WPA_KEY_MGMT_FT (WPA_KEY_MGMT_FT_PSK | \
WPA_KEY_MGMT_FT_IEEE8021X | \
WPA_KEY_MGMT_FT_IEEE8021X_SHA384 | \
WPA_KEY_MGMT_FT_SAE | \
WPA_KEY_MGMT_FT_FILS_SHA256 | \
WPA_KEY_MGMT_FT_FILS_SHA384)
#define WPA_KEY_MGMT_MASK (WPA_BIT(25) - 1)
/**
* @brief WPA protocol definition
*/
#define WPA_PROTO_WPA WPA_BIT(0)
#define WPA_PROTO_RSN WPA_BIT(1)
#define WPA_PROTO_WAPI WPA_BIT(2)
#define WPA_PROTO_OSEN WPA_BIT(3)
#define WPA_PROTO_MASK (WPA_BIT(4) - 1)
/**
* @brief WPA authentication algorithm definition
*/
#define WPA_AUTH_ALG_OPEN WPA_BIT(0)
#define WPA_AUTH_ALG_SHARED WPA_BIT(1)
#define WPA_AUTH_ALG_LEAP WPA_BIT(2)
#define WPA_AUTH_ALG_FT WPA_BIT(3)
#define WPA_AUTH_ALG_SAE WPA_BIT(4)
#define WPA_AUTH_ALG_FILS WPA_BIT(5)
#define WPA_AUTH_ALG_FILS_SK_PFS WPA_BIT(6)
#define WPA_AUTH_ALG_MASK (WPA_BIT(7) - 1)
#define WPA_AUTH_ALG_AUTO 0 /* automatic selection */
/**
* @brief enum mfp_options - Management frame protection (IEEE 802.11w) options
*/
enum mfp_options {
NO_MGMT_FRAME_PROTECTION = 0,
MGMT_FRAME_PROTECTION_OPTIONAL = 1,
MGMT_FRAME_PROTECTION_REQUIRED = 2,
};
#define MGMT_FRAME_PROTECTION_DEFAULT 3
/**
* @brief WPA scan result flags definition
*/
#define WPA_FLAGS_WPA WPA_BIT(0)
#define WPA_FLAGS_RSN WPA_BIT(1)
#define WPA_FLAGS_WEP WPA_BIT(2)
#define WPA_FLAGS_WPS_PBC WPA_BIT(3)
#define WPA_FLAGS_WPS_AUTH WPA_BIT(4)
#define WPA_FLAGS_WPS_PIN WPA_BIT(5)
#define WPA_FLAGS_WPS WPA_BIT(6)
#define WPA_FLAGS_IBSS WPA_BIT(7)
#define WPA_FLAGS_ESS WPA_BIT(8)
#define WPA_FLAGS_SAE WPA_BIT(9)
/**
* @brief WLAN SSID and passphrase definition
*/
#define WLAN_SSID_MAX_LEN 32
#define WLAN_PASSPHRASE_MIN_LEN 8
#define WLAN_PASSPHRASE_MAX_LEN 63
#define WLAN_PSK_HEX_LEN 32
#define WLAN_PSK_HEX_STR_LEN 64 /* two characters per octet of PSK */
#define WLAN_MAC_ADDR_LEN 6
/**
* @brief WLAN WEP key length definition
*/
#define WLAN_WEP40_KEY_LEN 5 /* 5-byte (40-bit) */
#define WLAN_WEP104_KEY_LEN 13 /* 13-byte (104-bit) */
#define WLAN_WEP128_KEY_LEN 16 /* 16-byte (128-bit), unsupported */
#define WLAN_WEP_KEY_MAX_LEN WLAN_WEP128_KEY_LEN
/**
* @brief IEEE 802.11 frame type definition
*/
#define IEEE80211_FC_TYPE_SHIFT 2
#define IEEE80211_FC_TYPE_MASK (0x3 << IEEE80211_FC_TYPE_SHIFT)
#define IEEE80211_FC_TYPE_MGMT (0x0 << IEEE80211_FC_TYPE_SHIFT)
#define IEEE80211_FC_TYPE_CTRL (0x1 << IEEE80211_FC_TYPE_SHIFT)
#define IEEE80211_FC_TYPE_DATA (0x2 << IEEE80211_FC_TYPE_SHIFT)
/**
* @brief IEEE 802.11 management frame subtype definition
*/
#define IEEE80211_FC_STYPE_SHIFT 4
#define IEEE80211_FC_STYPE_MASK (0xf << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_ASSOC_REQ (0x0 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_ASSOC_RESP (0x1 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_REASSOC_REQ (0x2 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_REASSOC_RESP (0x3 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_PROBE_REQ (0x4 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_PROBE_RESP (0x5 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_BEACON (0x8 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_ATIM (0x9 << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_DISASSOC (0xa << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_AUTH (0xb << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_DEAUTH (0xc << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC_STYPE_ACTION (0xd << IEEE80211_FC_STYPE_SHIFT)
#define IEEE80211_FC0_VERSION_MASK 0x03
#define IEEE80211_FC0_VERSION_SHIFT 0
#define IEEE80211_FC0_VERSION_0 0x00
#define IEEE80211_FC0_TYPE_MASK 0x0c
#define IEEE80211_FC0_TYPE_SHIFT 2
#define IEEE80211_FC0_TYPE_MGT 0x00
#define IEEE80211_FC0_TYPE_CTL 0x04
#define IEEE80211_FC0_TYPE_DATA 0x08
#define IEEE80211_FC0_SUBTYPE_MASK 0xf0
#define IEEE80211_FC0_SUBTYPE_SHIFT 4
#define IEEE80211_FC1_DIR_MASK 0x03
#define IEEE80211_FC1_DIR_NODS 0x00 /* STA->STA */
#define IEEE80211_FC1_DIR_TODS 0x01 /* STA->AP */
#define IEEE80211_FC1_DIR_FROMDS 0x02 /* AP ->STA */
#define IEEE80211_FC1_DIR_DSTODS 0x03 /* AP ->AP */
#define IEEE80211_ADDR_LEN 6
/* Status codes (IEEE Std 802.11-2016, 9.4.1.9, Table 9-46) */
#define WLAN_STATUS_SUCCESS 0
#define WLAN_STATUS_UNSPECIFIED_FAILURE 1
#define WLAN_STATUS_TDLS_WAKEUP_ALTERNATE 2
#define WLAN_STATUS_TDLS_WAKEUP_REJECT 3
#define WLAN_STATUS_SECURITY_DISABLED 5
#define WLAN_STATUS_UNACCEPTABLE_LIFETIME 6
#define WLAN_STATUS_NOT_IN_SAME_BSS 7
#define WLAN_STATUS_CAPS_UNSUPPORTED 10
#define WLAN_STATUS_REASSOC_NO_ASSOC 11
#define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12
#define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13
#define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14
#define WLAN_STATUS_CHALLENGE_FAIL 15
#define WLAN_STATUS_AUTH_TIMEOUT 16
#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17
#define WLAN_STATUS_ASSOC_DENIED_RATES 18
#define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19
#define WLAN_STATUS_SPEC_MGMT_REQUIRED 22
#define WLAN_STATUS_PWR_CAPABILITY_NOT_VALID 23
#define WLAN_STATUS_SUPPORTED_CHANNEL_NOT_VALID 24
#define WLAN_STATUS_ASSOC_DENIED_NO_SHORT_SLOT_TIME 25
#define WLAN_STATUS_ASSOC_DENIED_NO_HT 27
#define WLAN_STATUS_R0KH_UNREACHABLE 28
#define WLAN_STATUS_ASSOC_DENIED_NO_PCO 29
#define WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY 30
#define WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION 31
#define WLAN_STATUS_UNSPECIFIED_QOS_FAILURE 32
#define WLAN_STATUS_DENIED_INSUFFICIENT_BANDWIDTH 33
#define WLAN_STATUS_DENIED_POOR_CHANNEL_CONDITIONS 34
#define WLAN_STATUS_DENIED_QOS_NOT_SUPPORTED 35
#define WLAN_STATUS_REQUEST_DECLINED 37
#define WLAN_STATUS_INVALID_PARAMETERS 38
#define WLAN_STATUS_REJECTED_WITH_SUGGESTED_CHANGES 39
#define WLAN_STATUS_INVALID_IE 40
#define WLAN_STATUS_GROUP_CIPHER_NOT_VALID 41
#define WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID 42
#define WLAN_STATUS_AKMP_NOT_VALID 43
#define WLAN_STATUS_UNSUPPORTED_RSN_IE_VERSION 44
#define WLAN_STATUS_INVALID_RSN_IE_CAPAB 45
#define WLAN_STATUS_CIPHER_REJECTED_PER_POLICY 46
#define WLAN_STATUS_TS_NOT_CREATED 47
#define WLAN_STATUS_DIRECT_LINK_NOT_ALLOWED 48
#define WLAN_STATUS_DEST_STA_NOT_PRESENT 49
#define WLAN_STATUS_DEST_STA_NOT_QOS_STA 50
#define WLAN_STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE 51
#define WLAN_STATUS_INVALID_FT_ACTION_FRAME_COUNT 52
#define WLAN_STATUS_INVALID_PMKID 53
#define WLAN_STATUS_INVALID_MDIE 54
#define WLAN_STATUS_INVALID_FTIE 55
#define WLAN_STATUS_REQUESTED_TCLAS_NOT_SUPPORTED 56
#define WLAN_STATUS_INSUFFICIENT_TCLAS_PROCESSING_RESOURCES 57
#define WLAN_STATUS_TRY_ANOTHER_BSS 58
#define WLAN_STATUS_GAS_ADV_PROTO_NOT_SUPPORTED 59
#define WLAN_STATUS_NO_OUTSTANDING_GAS_REQ 60
#define WLAN_STATUS_GAS_RESP_NOT_RECEIVED 61
#define WLAN_STATUS_STA_TIMED_OUT_WAITING_FOR_GAS_RESP 62
#define WLAN_STATUS_GAS_RESP_LARGER_THAN_LIMIT 63
#define WLAN_STATUS_REQ_REFUSED_HOME 64
#define WLAN_STATUS_ADV_SRV_UNREACHABLE 65
#define WLAN_STATUS_REQ_REFUSED_SSPN 67
#define WLAN_STATUS_REQ_REFUSED_UNAUTH_ACCESS 68
#define WLAN_STATUS_INVALID_RSNIE 72
#define WLAN_STATUS_U_APSD_COEX_NOT_SUPPORTED 73
#define WLAN_STATUS_U_APSD_COEX_MODE_NOT_SUPPORTED 74
#define WLAN_STATUS_BAD_INTERVAL_WITH_U_APSD_COEX 75
#define WLAN_STATUS_ANTI_CLOGGING_TOKEN_REQ 76
#define WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED 77
#define WLAN_STATUS_CANNOT_FIND_ALT_TBTT 78
#define WLAN_STATUS_TRANSMISSION_FAILURE 79
#define WLAN_STATUS_REQ_TCLAS_NOT_SUPPORTED 80
#define WLAN_STATUS_TCLAS_RESOURCES_EXCHAUSTED 81
#define WLAN_STATUS_REJECTED_WITH_SUGGESTED_BSS_TRANSITION 82
#define WLAN_STATUS_REJECT_WITH_SCHEDULE 83
#define WLAN_STATUS_REJECT_NO_WAKEUP_SPECIFIED 84
#define WLAN_STATUS_SUCCESS_POWER_SAVE_MODE 85
#define WLAN_STATUS_PENDING_ADMITTING_FST_SESSION 86
#define WLAN_STATUS_PERFORMING_FST_NOW 87
#define WLAN_STATUS_PENDING_GAP_IN_BA_WINDOW 88
#define WLAN_STATUS_REJECT_U_PID_SETTING 89
#define WLAN_STATUS_REFUSED_EXTERNAL_REASON 92
#define WLAN_STATUS_REFUSED_AP_OUT_OF_MEMORY 93
#define WLAN_STATUS_REJECTED_EMERGENCY_SERVICE_NOT_SUPPORTED 94
#define WLAN_STATUS_QUERY_RESP_OUTSTANDING 95
#define WLAN_STATUS_REJECT_DSE_BAND 96
#define WLAN_STATUS_TCLAS_PROCESSING_TERMINATED 97
#define WLAN_STATUS_TS_SCHEDULE_CONFLICT 98
#define WLAN_STATUS_DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL 99
#define WLAN_STATUS_MCCAOP_RESERVATION_CONFLICT 100
#define WLAN_STATUS_MAF_LIMIT_EXCEEDED 101
#define WLAN_STATUS_MCCA_TRACK_LIMIT_EXCEEDED 102
#define WLAN_STATUS_DENIED_DUE_TO_SPECTRUM_MANAGEMENT 103
#define WLAN_STATUS_ASSOC_DENIED_NO_VHT 104
#define WLAN_STATUS_ENABLEMENT_DENIED 105
#define WLAN_STATUS_RESTRICTION_FROM_AUTHORIZED_GDB 106
#define WLAN_STATUS_AUTHORIZATION_DEENABLED 107
#define WLAN_STATUS_FILS_AUTHENTICATION_FAILURE 112
#define WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER 113
#define WLAN_STATUS_UNKNOWN_PASSWORD_IDENTIFIER 123
/* Reason codes (IEEE Std 802.11-2016, 9.4.1.7, Table 9-45) */
#define WLAN_REASON_UNSPECIFIED 1
#define WLAN_REASON_PREV_AUTH_NOT_VALID 2
#define WLAN_REASON_DEAUTH_LEAVING 3
#define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4
#define WLAN_REASON_DISASSOC_AP_BUSY 5
#define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6
#define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7
#define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8
#define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9
#define WLAN_REASON_PWR_CAPABILITY_NOT_VALID 10
#define WLAN_REASON_SUPPORTED_CHANNEL_NOT_VALID 11
#define WLAN_REASON_BSS_TRANSITION_DISASSOC 12
#define WLAN_REASON_INVALID_IE 13
#define WLAN_REASON_MICHAEL_MIC_FAILURE 14
#define WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT 15
#define WLAN_REASON_GROUP_KEY_UPDATE_TIMEOUT 16
#define WLAN_REASON_IE_IN_4WAY_DIFFERS 17
#define WLAN_REASON_GROUP_CIPHER_NOT_VALID 18
#define WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID 19
#define WLAN_REASON_AKMP_NOT_VALID 20
#define WLAN_REASON_UNSUPPORTED_RSN_IE_VERSION 21
#define WLAN_REASON_INVALID_RSN_IE_CAPAB 22
#define WLAN_REASON_IEEE_802_1X_AUTH_FAILED 23
#define WLAN_REASON_CIPHER_SUITE_REJECTED 24
#define WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE 25
#define WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED 26
#define WLAN_REASON_SSP_REQUESTED_DISASSOC 27
#define WLAN_REASON_NO_SSP_ROAMING_AGREEMENT 28
#define WLAN_REASON_BAD_CIPHER_OR_AKM 29
#define WLAN_REASON_NOT_AUTHORIZED_THIS_LOCATION 30
#define WLAN_REASON_SERVICE_CHANGE_PRECLUDES_TS 31
#define WLAN_REASON_UNSPECIFIED_QOS_REASON 32
#define WLAN_REASON_NOT_ENOUGH_BANDWIDTH 33
#define WLAN_REASON_DISASSOC_LOW_ACK 34
#define WLAN_REASON_EXCEEDED_TXOP 35
#define WLAN_REASON_STA_LEAVING 36
#define WLAN_REASON_END_TS_BA_DLS 37
#define WLAN_REASON_UNKNOWN_TS_BA 38
#define WLAN_REASON_TIMEOUT 39
#define WLAN_REASON_PEERKEY_MISMATCH 45
#define WLAN_REASON_AUTHORIZED_ACCESS_LIMIT_REACHED 46
#define WLAN_REASON_EXTERNAL_SERVICE_REQUIREMENTS 47
#define WLAN_REASON_INVALID_FT_ACTION_FRAME_COUNT 48
#define WLAN_REASON_INVALID_PMKID 49
#define WLAN_REASON_INVALID_MDE 50
#define WLAN_REASON_INVALID_FTE 51
#define WLAN_REASON_MESH_PEERING_CANCELLED 52
#define WLAN_REASON_MESH_MAX_PEERS 53
#define WLAN_REASON_MESH_CONFIG_POLICY_VIOLATION 54
#define WLAN_REASON_MESH_CLOSE_RCVD 55
#define WLAN_REASON_MESH_MAX_RETRIES 56
#define WLAN_REASON_MESH_CONFIRM_TIMEOUT 57
#define WLAN_REASON_MESH_INVALID_GTK 58
#define WLAN_REASON_MESH_INCONSISTENT_PARAMS 59
#define WLAN_REASON_MESH_INVALID_SECURITY_CAP 60
#define WLAN_REASON_MESH_PATH_ERROR_NO_PROXY_INFO 61
#define WLAN_REASON_MESH_PATH_ERROR_NO_FORWARDING_INFO 62
#define WLAN_REASON_MESH_PATH_ERROR_DEST_UNREACHABLE 63
#define WLAN_REASON_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS 64
#define WLAN_REASON_MESH_CHANNEL_SWITCH_REGULATORY_REQ 65
#define WLAN_REASON_MESH_CHANNEL_SWITCH_UNSPECIFIED 66
struct ieee80211_frame {
uint8_t i_fc[2];
uint8_t i_dur[2];
uint8_t i_addr1[IEEE80211_ADDR_LEN];
uint8_t i_addr2[IEEE80211_ADDR_LEN];
uint8_t i_addr3[IEEE80211_ADDR_LEN];
uint8_t i_seq[2];
/* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
} __packed;
/**
* @brief Wlan event definition
*/
typedef enum wlan_event {
WLAN_EVENT_CONNECTED,
WLAN_EVENT_DISCONNECTED,
WLAN_EVENT_SCAN_SUCCESS,
WLAN_EVENT_SCAN_FAILED,
WLAN_EVENT_4WAY_HANDSHAKE_FAILED,
WLAN_EVENT_SSID_NOT_FOUND,
WLAN_EVENT_AUTH_TIMEOUT,
WLAN_EVENT_ASSOC_TIMEOUT,
WLAN_EVENT_CONNECT_FAILED,
WLAN_EVENT_CONNECTION_LOSS,
WLAN_EVENT_ASSOC_FAILED,
WLAN_EVENT_SAE_COMMIT_FAILED,
WLAN_EVENT_SAE_CONFIRM_FAILED,
WLAN_EVENT_P2P_WAKE_UP,
WLAN_EVENT_P2P_KEEPALIVE_CONNECT_LOST,
WLAN_EVENT_P2P_IP_WAKE_UP,
WLAN_EVENT_BCN_TIM_HOLD,
WLAN_EVENT_DEV_HANG,
} wlan_event_t;
/**
* @brief Wlan power state definition
*/
typedef enum wlan_pm_state {
WLAN_PM_MODE_ON = 0,
WLAN_PM_MODE_SUSPENDED = 1,
WLAN_PM_MODE_RESUMED = 2,
WLAN_PM_MODE_OFF = 3,
WLAN_PM_MODE_MAX = 4,
} wlan_pm_state_t;
/**
* @brief Wlan ssid definition
*/
typedef struct wlan_ssid {
uint8_t ssid[WLAN_SSID_MAX_LEN];
uint8_t ssid_len;
} wlan_ssid_t;
/**
* @brief Wlan bssid definition
*/
typedef struct wlan_bssid {
uint8_t bssid[WLAN_MAC_ADDR_LEN];
uint8_t bssid_set;
} wlan_bssid_t;
/**
* @brief Wlan station configuration field definition
*/
typedef enum wlan_sta_field {
WLAN_STA_FIELD_SSID = 0,
WLAN_STA_FIELD_PSK,
WLAN_STA_FIELD_WEP_KEY0,
WLAN_STA_FIELD_WEP_KEY1,
WLAN_STA_FIELD_WEP_KEY2,
WLAN_STA_FIELD_WEP_KEY3,
WLAN_STA_FIELD_WEP_KEY_INDEX,
WLAN_STA_FIELD_KEY_MGMT,
WLAN_STA_FIELD_PAIRWISE_CIPHER,
WLAN_STA_FIELD_GROUP_CIPHER,
WLAN_STA_FIELD_GROUP_MGMT_CIPHER,
WLAN_STA_FIELD_PROTO,
WLAN_STA_FIELD_AUTH_ALG,
WLAN_STA_FIELD_IEEE80211W,
WLAN_STA_FIELD_WPA_PTK_REKEY,
WLAN_STA_FIELD_SCAN_SSID,
WLAN_STA_FIELD_BSSID,
WLAN_STA_FIELD_NUM,
} wlan_sta_field_t;
/**
* @brief Wlan station configuration definition
*/
typedef struct wlan_sta_config {
wlan_sta_field_t field;
union {
/**
* Network name
*/
wlan_ssid_t ssid;
/**
* bssid - BSSID
*
* If set, this network block is used only when associating with the AP
* using the configured BSSID
*/
wlan_bssid_t bssid;
/**
* WPA preshared key in one of the optional formats:
* - an ASCII string of passphrase, length is [8, 63]
* - a hex string of PSK (two characters per octet of PSK), length is 64
*/
uint8_t psk[65];
/**
* WEP key in one of the optional formats:
* - an ASCII string with double quotation, length is {5, 13}
* - a hex string (two characters per octet), length is {10, 26}
*/
uint8_t wep_key[WLAN_WEP_KEY_MAX_LEN * 2 + 1];
/**
* Default key index for TX frames using WEP
*/
int wep_tx_keyidx;
/**
* Bitfield of allowed key management protocols
*
* WPA_KEY_MGMT_*
*/
int key_mgmt;
/**
* Bitfield of allowed pairwise ciphers, WPA_CIPHER_*
*/
int pairwise_cipher;
/**
* Bitfield of allowed group ciphers, WPA_CIPHER_*
*/
int group_cipher;
/**
* Bitfield of allowed group management ciphers
*
* This is a bitfield of WPA_CIPHER_AES_128_CMAC and WPA_CIPHER_BIP_*
* values. If 0, no constraint is used for the cipher, i.e., whatever
* the AP uses is accepted.
*/
int group_mgmt_cipher;
/**
* Bitfield of allowed protocols
*
* WPA_PROTO_*
*/
int proto;
/**
* Bitfield of allowed authentication algorithms
*
* WPA_AUTH_ALG_*
*/
int auth_alg;
/**
* Maximum lifetime for PTK in seconds
*
* This value can be used to enforce rekeying of PTK to
* mitigate some attacks against TKIP deficiencies.
*/
int wpa_ptk_rekey;
/**
* Scan this SSID with Probe Requests
*
* scan_ssid can be used to scan for APs using hidden SSIDs.
*/
int scan_ssid;
/**
* ieee80211w - Whether management frame protection is enabled
*
* This value is used to configure policy for management frame
* protection (IEEE 802.11w). 0 = disabled, 1 = optional, 2 = required.
*/
enum mfp_options ieee80211w;
} u;
} wlan_sta_config_t;
/**
* @brief Wlan station connection state definition
*/
typedef enum wlan_sta_states {
WLAN_STA_STATE_DISCONNECTED = 0,
WLAN_STA_STATE_CONNECTED = 1,
} wlan_sta_states_t;
/**
* @brief WLAN AP status flags definition
*/
#define WLAN_STA_AP_STATUS_USE_WPA3 WPA_BIT(0)
/**
* @brief Wlan AP information definition
*/
typedef struct wlan_sta_ap {
wlan_ssid_t ssid;
uint8_t bssid[6];
uint8_t channel;
uint8_t status; /* WLAN AP status flags */
uint16_t beacon_int;
int freq;
int rssi; /* unit is 0.5db */
int level; /* signal level, unit is dbm */
int wpa_flags;
int wpa_cipher;
int wpa_key_mgmt;
int rsn_cipher; /* rsn: WPA2/WPA3 */
int rsn_key_mgmt; /* rsn: WPA2/WPA3 */
} wlan_sta_ap_t;
/**
* @brief Wlan station scan parameters definition
*/
typedef struct wlan_sta_scan_param {
uint8_t scan_only; /* do scan only */
uint8_t scan_passive; /* passive scan */
uint8_t scan_ssid; /* Scan SSID of configured network with Probe Requests */
} wlan_sta_scan_param_t;
/**
* @brief Wlan station scan results definition
*/
typedef struct wlan_sta_scan_results {
wlan_sta_ap_t *ap;
int size;
int num;
} wlan_sta_scan_results_t;
/**
* @brief Wlan station bss infomation definition
*/
typedef struct wlan_sta_bss_info {
uint8_t *bss;
uint32_t size;
} wlan_sta_bss_info_t;
/**
* @brief Parameter of generating WPA PSK based on passphrase and SSID
*/
typedef struct wlan_gen_psk_param {
uint8_t ssid[WLAN_SSID_MAX_LEN];
uint8_t ssid_len;
char passphrase[WLAN_PASSPHRASE_MAX_LEN + 1];
uint8_t psk[WLAN_PSK_HEX_LEN]; /* out */
} wlan_gen_psk_param_t;
/**
* @brief Wlan station SSID, passphrase and WPA PSK infomation definition
*/
typedef struct wlan_ssid_psk {
uint8_t ssid[WLAN_SSID_MAX_LEN];
uint8_t ssid_len;
char passphrase[WLAN_PASSPHRASE_MAX_LEN + 1];
uint8_t psk_valid;
uint8_t psk[WLAN_PSK_HEX_LEN];
} wlan_ssid_psk_t;
/**
* @brief Wlan WPS pin definition
*/
typedef struct wlan_sta_wps_pin {
uint8_t pin[9];
} wlan_sta_wps_pin_t;
/**
* @brief Wlan AP configuration field definition
*/
typedef enum wlan_ap_field {
WLAN_AP_FIELD_SSID = 0,
WLAN_AP_FIELD_PSK,
WLAN_AP_FIELD_KEY_MGMT,
WLAN_AP_FIELD_WPA_PAIRWISE_CIPHER,
WLAN_AP_FIELD_RSN_PAIRWISE_CIPHER,
WLAN_AP_FIELD_PROTO,
WLAN_AP_FIELD_AUTH_ALG,
WLAN_AP_FIELD_GROUP_REKEY,
WLAN_AP_FIELD_STRICT_REKEY,
WLAN_AP_FIELD_GMK_REKEY,
WLAN_AP_FIELD_PTK_REKEY,
WLAN_AP_FIELD_HW_MODE,
WLAN_AP_FIELD_IEEE80211N,
WLAN_AP_FIELD_CHANNEL,
WLAN_AP_FIELD_BEACON_INT,
WLAN_AP_FIELD_DTIM,
WLAN_AP_FIELD_MAX_NUM_STA,
WLAN_AP_FIELD_NUM,
} wlan_ap_field_t;
/* for compatibility only */
#define WLAN_AP_FIELD_WPA_CIPHER WLAN_AP_FIELD_WPA_PAIRWISE_CIPHER
#define WLAN_AP_FIELD_RSN_CIPHER WLAN_AP_FIELD_RSN_PAIRWISE_CIPHER
/**
* @brief Wlan AP hardware mode definition
*/
typedef enum wlan_ap_hw_mode {
WLAN_AP_HW_MODE_IEEE80211B = 0,
WLAN_AP_HW_MODE_IEEE80211G,
WLAN_AP_HW_MODE_IEEE80211A,
WLAN_AP_HW_MODE_IEEE80211AD,
WLAN_AP_HW_MODE_IEEE80211ANY,
WLAN_AP_HW_MODE_NUM,
} wlan_ap_hw_mode_t;
/**
* @brief Wlan AP configuration definition
*/
typedef struct wlan_ap_config {
wlan_ap_field_t field;
union {
/**
* Network name
*/
wlan_ssid_t ssid;
/**
* WPA preshared key in one of the optional formats:
* - an ASCII string of passphrase, length is [8, 63]
* - a hex string of PSK (two characters per octet of PSK), length is 64
*/
uint8_t psk[65];
/**
* Bitfield of allowed key management protocols
*
* WPA_KEY_MGMT_*
*/
int key_mgmt;
/**
* Bitfield of allowed WPA pairwise ciphers
*
* WPA_CIPHER_*
*/
int wpa_cipher;
/**
* Bitfield of allowed RSN pairwise ciphers
*
* WPA_CIPHER_*
*/
int rsn_cipher;
/**
* Bitfield of allowed protocols
*
* WPA_PROTO_*
*/
int proto;
/**
* Bitfield of allowed authentication algorithms
*
* WPA_AUTH_ALG_*
*/
int auth_alg;
/**
* Maximum lifetime for GTK in seconds
*/
int group_rekey;
/**
* Rekey GTK when any STA that possesses the current GTK is
* leaving the BSS
*/
int strict_rekey;
/**
* Maximum lifetime for GMK in seconds
*/
int gmk_rekey;
/**
* Maximum lifetime for PTK in seconds
*/
int ptk_rekey;
/**
* Hardware mode
*/
wlan_ap_hw_mode_t hw_mode;
/**
* IEEE802.11n mode
*/
int ieee80211n;
/**
* RF channel
*/
uint8_t channel;
/**
* MIB defines range as 1..65535, but very small values
* cause problems with the current implementation.
* Since it is unlikely that this small numbers are
* useful in real life scenarios, do not allow beacon
* period to be set below 15 TU.
*/
uint16_t beacon_int;
/**
* Delivery traffic indication message
*/
int dtim;
/**
* Maximum number of STAs in station table
*/
int max_num_sta;
} u;
} wlan_ap_config_t;
/**
* @brief Wlan AP default configuration definition
*/
typedef struct wlan_ap_default_conf {
/**
* Network name
*/
char *ssid;
/**
* Network name length
*/
uint8_t ssid_len;
/**
* First two octets: country code as described in ISO/IEC 3166-1.
* Third octet:
* ' ' (ascii 32): all environments
* 'O': Outdoor environemnt only
* 'I': Indoor environment only
*/
char country[3];
/**
* WPA preshared key in one of the optional formats:
* - an ASCII string of passphrase, length is [8, 63]
* - a hex string of PSK (two characters per octet of PSK), length is 64
*/
char *psk;
/**
* Bitfield of allowed key management protocols
*
* WPA_KEY_MGMT_*
*/
int key_mgmt;
/**
* Bitfield of allowed WPA pairwise ciphers
*
* WPA_CIPHER_*
*/
int wpa_pairwise_cipher;
/**
* Bitfield of allowed RSN pairwise ciphers
*
* WPA_CIPHER_*
*/
int rsn_pairwise_cipher;
/**
* Bitfield of allowed protocols
*
* WPA_PROTO_*
*/
int proto;
/**
* Bitfield of allowed authentication algorithms
*
* WPA_AUTH_ALG_*
*/
int auth_alg;
/**
* Maximum lifetime for GTK in seconds
*/
int group_rekey;
/**
* Maximum lifetime for GMK in seconds
*/
int gmk_rekey;
/**
* Maximum lifetime for PTK in seconds
*/
int ptk_rekey;
/**
* Rekey GTK when any STA that possesses the current GTK is
* leaving the BSS
*/
uint8_t strict_rekey;
/**
* Hardware mode
*/
wlan_ap_hw_mode_t hw_mode;
/**
* IEEE802.11n mode
*/
uint8_t ieee80211n;
/**
* RF channel
*/
uint8_t channel;
/**
* MIB defines range as 1..65535, but very small values
* cause problems with the current implementation.
* Since it is unlikely that this small numbers are
* useful in real life scenarios, do not allow beacon
* period to be set below 15 TU.
*/
uint16_t beacon_int;
/**
* Delivery traffic indication message
*/
uint8_t dtim;
/**
* Maximum number of STAs in station table
*/
uint8_t max_num_sta;
} wlan_ap_default_conf_t;
/**
* @brief Wlan station information definition
*/
typedef struct wlan_ap_sta {
uint8_t addr[6];
} wlan_ap_sta_t;
/**
* @brief Wlan connected stations information definition
*/
typedef struct wlan_ap_stas {
wlan_ap_sta_t *sta;
int size;
int num;
} wlan_ap_stas_t;
#ifdef __cplusplus
}
#endif
#endif /* _NET_WLAN_WLAN_DEFS_H_ */