M7350/wlan/8192es/DriverSrcPkg/Driver/rtl8192cd_92es/8192cd_security.h
2024-09-09 08:59:52 +00:00

832 lines
23 KiB
C
Executable File

/*
* Header file defines the interface with AUTH daemon (802.1x authenticator)
*
* $Id: 8192cd_security.h,v 1.3.2.1 2010/12/01 13:38:00 button Exp $
*
* Copyright (c) 2009 Realtek Semiconductor Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _8192CD_SECURITY_H_
#define _8192CD_SECURITY_H_
#include "./8192cd_cfg.h"
#ifdef INCLUDE_WPS
#include "./wps/wsc.h"
#endif
typedef struct _DOT11_QUEUE_NODE
{
unsigned short ItemSize;
unsigned char Item[MAXDATALEN];
}DOT11_QUEUE_NODE;
typedef struct _DOT11_QUEUE
{
int Head;
int Tail;
int NumItem;
int MaxItem;
DOT11_QUEUE_NODE ItemArray[MAXQUEUESIZE];
}DOT11_QUEUE;
typedef unsigned char DOT11_KEY_RSC[8];
typedef enum{
DOT11_KeyType_Group = 0,
DOT11_KeyType_Pairwise = 1,
DOT11_KeyType_IGTK = 2
} DOT11_KEY_TYPE;
typedef enum{
DOT11_EAPOL_GROUP_INDEX = 0,
DOT11_EAPOL_PAIRWISE_INDEX = 3
} DOT11_EAPOL_KEY_INDEX;
typedef enum{
DOT11_KeyUsage_ENC,
DOT11_KeyUsage_MIC
} DOT11_KEY_USAGE;
typedef enum{
DOT11_Role_Auth,
DOT11_Role_Supp
} DOT11_ROLE;
typedef enum{
DOT11_VARIABLE_MACEnable,
DOT11_VARIABLE_SystemAuthControl,
DOT11_VARIABLE_AuthControlledPortStatus,
DOT11_VARIABLE_AuthControlledPortControl,
DOT11_VARIABLE_AuthenticationType,
DOT11_VARIABLE_KeyManagement,
DOT11_VARIABLE_MulticastCipher,
DOT11_VARIABLE_UnicastCipher
} DOT11_VARIABLE_TYPE;
typedef enum{
DOT11_SysAuthControl_Disabled,
DOT11_SysAuthControl_Enabled
} DOT11_SYSTEM_AUTHENTICATION_CONTROL;
typedef enum{
DOT11_PortControl_ForceUnauthorized,
DOT11_PortControl_ForceAuthorized,
DOT11_PortControl_Auto
} DOT11_PORT_CONTROL;
typedef enum{
DOT11_PortStatus_Unauthorized,
DOT11_PortStatus_Authorized,
DOT11_PortStatus_Guest
}DOT11_PORT_STATUS;
typedef enum{
DOT11_Association_Fail,
DOT11_Association_Success
}DOT11_ASSOCIATION_RESULT;
typedef enum{
DOT11_AuthKeyType_RSN = 1,
DOT11_AuthKeyType_PSK = 2,
DOT11_AuthKeyType_NonRSN802dot1x = 3,
DOT11_AuthKeyType_802_1X_SHA256 = 5, //CONFIG_IEEE80211W_CLI
DOT11_AuthKeyType_PSK_SHA256 = 6
} DOT11_AUTHKEY_TYPE;
typedef enum{
DOT11_AuthKeyType_RSN_MAP = 1,
DOT11_AuthKeyType_PSK_MAP = 2,
DOT11_AuthKeyType_NonRSN802dot1x_MAP = 4
} DOT11_AUTHKEY_TYPE_MAP;
typedef enum{
DOT11_Ioctl_Query = 0,
DOT11_Ioctl_Set = 1
} DOT11_Ioctl_Flag;
typedef enum{
DOT11_ENC_NONE = 0,
DOT11_ENC_WEP40 = 1,
DOT11_ENC_TKIP = 2,
DOT11_ENC_WRAP = 3,
DOT11_ENC_CCMP = 4,
DOT11_ENC_WEP104= 5,
DOT11_ENC_BIP = 6,
DOT11_ENC_WAPI = 6
} DOT11_ENC_ALGO;
typedef enum{
DOT11_ENC_NONE_MAP = 1,
DOT11_ENC_WEP40_MAP = 2,
DOT11_ENC_TKIP_MAP = 4,
DOT11_ENC_WRAP_MAP = 8,
DOT11_ENC_CCMP_MAP = 16,
DOT11_ENC_WEP104_MAP= 32
} DOT11_ENC_ALGO_MAP;
typedef enum{
DOT11_EVENT_NO_EVENT = 1,
DOT11_EVENT_REQUEST = 2,
DOT11_EVENT_ASSOCIATION_IND = 3,
DOT11_EVENT_ASSOCIATION_RSP = 4,
DOT11_EVENT_AUTHENTICATION_IND = 5,
DOT11_EVENT_REAUTHENTICATION_IND = 6,
DOT11_EVENT_DEAUTHENTICATION_IND = 7,
DOT11_EVENT_DISASSOCIATION_IND = 8,
DOT11_EVENT_DISCONNECT_REQ = 9,
DOT11_EVENT_SET_802DOT11 = 10,
DOT11_EVENT_SET_KEY = 11,
DOT11_EVENT_SET_PORT = 12,
DOT11_EVENT_DELETE_KEY = 13,
DOT11_EVENT_SET_RSNIE = 14,
DOT11_EVENT_GKEY_TSC = 15,
DOT11_EVENT_MIC_FAILURE = 16,
DOT11_EVENT_ASSOCIATION_INFO = 17,
DOT11_EVENT_INIT_QUEUE = 18,
DOT11_EVENT_EAPOLSTART = 19,
#ifdef CONFIG_IEEE80211W
DOT11_EVENT_SA_QUERY = 20,
DOT11_EVENT_SA_QUERY_RSP = 21,
#endif
DOT11_EVENT_ACC_SET_EXPIREDTIME = 31,
DOT11_EVENT_ACC_QUERY_STATS = 32,
DOT11_EVENT_ACC_QUERY_STATS_ALL = 33,
DOT11_EVENT_REASSOCIATION_IND = 34,
DOT11_EVENT_REASSOCIATION_RSP = 35,
DOT11_EVENT_STA_QUERY_BSSID = 36,
DOT11_EVENT_STA_QUERY_SSID = 37,
DOT11_EVENT_EAP_PACKET = 41,
#ifdef RTL_WPA2_PREAUTH
DOT11_EVENT_EAPOLSTART_PREAUTH = 45,
DOT11_EVENT_EAP_PACKET_PREAUTH = 46,
#endif
DOT11_EVENT_WPA2_MULTICAST_CIPHER = 47,
DOT11_EVENT_WPA_MULTICAST_CIPHER = 48,
#ifdef WIFI_SIMPLE_CONFIG
DOT11_EVENT_WSC_SET_IE = 55,
DOT11_EVENT_WSC_PROBE_REQ_IND = 56,
DOT11_EVENT_WSC_PIN_IND = 57,
DOT11_EVENT_WSC_ASSOC_REQ_IE_IND = 58,
#ifdef INCLUDE_WPS
DOT11_EVENT_WSC_SET_MIB=42,
DOT11_EVENT_WSC_GET_MIB=43,
DOT11_EVENT_REQUEST_F_INCLUDE_WPS=44,
DOT11_EVENT_WSC_INIT_IND = 70,
DOT11_EVENT_WSC_EXIT_IND = 71,
DOT11_EVENT_WSC_TERM_IND = 72,
DOT11_EVENT_WSC_GETCONF_IND = 73,
DOT11_EVENT_WSC_PUTCONF_IND = 74,
DOT11_EVENT_WSC_LEDCONTROL_IND = 75,
DOT11_EVENT_WSC_SENDMSG_IND = 76,
DOT11_EVENT_WSC_PUTCONF = 77,
DOT11_EVENT_WSC_SOAP = 78,
DOT11_EVENT_WSC_PIN = 79,
DOT11_EVENT_WSC_PBC = 80,
DOT11_EVENT_WSC_SYS = 81,
DOT11_EVENT_WSC_PUTWLANREQUEST_IND = 82,
DOT11_EVENT_WSC_PUTPKT = 83,
DOT11_EVENT_WSC_GETDEVINFO = 84,
DOT11_EVENT_WSC_M2M4M6M8 = 85,
DOT11_EVENT_WSC_PUTWLANRESPONSE = 86,
DOT11_EVENT_WSC_PUTMESSAGE = 87,
DOT11_EVENT_WSC_PUTWLREQ_PROBEIND = 88,
DOT11_EVENT_WSC_PUTWLREQ_STATUSIND = 89,
#endif
#ifdef P2P_SUPPORT
DOT11_EVENT_WSC_SWITCH_MODE = 100,
DOT11_EVENT_WSC_STOP = 101,
#endif
/* support Assigned MAC Addr,Assigned SSID,dymanic change STA's PIN code, 2011-0505 */
DOT11_EVENT_WSC_SET_MY_PIN = 102,
DOT11_EVENT_WSC_SPEC_SSID = 103,
DOT11_EVENT_WSC_SPEC_MAC_IND = 104,
/* support Assigned MAC Addr,Assigned SSID,dymanic change STA's PIN code, 2011-0505 */
#endif
#ifdef CONFIG_RTK_MESH
DOT11_EVENT_PATHSEL_GEN_RREQ = 59,
DOT11_EVENT_PATHSEL_GEN_RERR = 60,
DOT11_EVENT_PATHSEL_RECV_RREQ = 61,
DOT11_EVENT_PATHSEL_RECV_RREP = 62,
DOT11_EVENT_PATHSEL_RECV_RERR = 63,
DOT11_EVENT_PATHSEL_RECV_PANN = 65,
DOT11_EVENT_PATHSEL_RECV_RANN = 66,
#endif // CONFIG_RTK_MESH
#ifdef CONFIG_RTL_WAPI_SUPPORT
DOT11_EVENT_WAPI_INIT_QUEUE =67,
DOT11_EVENT_WAPI_READ_QUEUE = 68,
DOT11_EVENT_WAPI_WRITE_QUEUE =69,
#endif
#if defined(CONFIG_RTL_COMAPI_CFGFILE) && defined(WIFI_SIMPLE_CONFIG)
#ifdef INCLUDE_WPS
DOT11_EVENT_WSC_START_IND = 90,
//EV_MODE, EV_STATUS, EV_MEHOD, EV_STEP, EV_OOB
DOT11_EVENT_WSC_MODE_IND = 91,
DOT11_EVENT_WSC_STATUS_IND = 92,
DOT11_EVENT_WSC_METHOD_IND = 93,
DOT11_EVENT_WSC_STEP_IND = 94,
DOT11_EVENT_WSC_OOB_IND = 95,
#else
DOT11_EVENT_WSC_START_IND = 70,
//EV_MODE, EV_STATUS, EV_MEHOD, EV_STEP, EV_OOB
DOT11_EVENT_WSC_MODE_IND = 71,
DOT11_EVENT_WSC_STATUS_IND = 72,
DOT11_EVENT_WSC_METHOD_IND = 73,
DOT11_EVENT_WSC_STEP_IND = 74,
DOT11_EVENT_WSC_OOB_IND = 75,
#endif
#endif
DOT11_EVENT_WSC_RM_PBC_STA=106,
#ifdef HS2_SUPPORT
/* Hotspot 2.0 Release 1 */
DOT11_EVENT_GAS_INIT_REQ = 110,
DOT11_EVENT_GAS_COMEBACK_REQ = 111,
DOT11_EVENT_HS2_SET_IE = 112,
DOT11_EVENT_HS2_GAS_RSP = 113,
DOT11_EVENT_HS2_GET_TSF = 114,
DOT11_EVENT_HS2_TSM_REQ = 115,
DOT11_EVENT_HS2_GET_RSN = 116,
DOT11_EVENT_HS2_GET_MMPDULIMIT=117,
#endif
#ifdef USER_ADDIE
DOT11_EVENT_USER_SETIE = 118,
#endif
#ifdef CONFIG_IEEE80211W
DOT11_EVENT_SET_PMF = 120,
DOT11_EVENT_GET_IGTK_PN = 121,
DOT11_EVENT_INIT_PMF = 122, // HS2 R2 logo test
#endif
#ifdef INDICATE_LINK_CHANGE
DOT11_EVENT_LINK_CHANGE_IND = 123,
#endif
DOT11_EVENT_UNKNOWN = 124
} DOT11_EVENT;
#ifdef WIFI_SIMPLE_CONFIG
enum {SET_IE_FLAG_BEACON=1, SET_IE_FLAG_PROBE_RSP=2, SET_IE_FLAG_PROBE_REQ=3,
SET_IE_FLAG_ASSOC_RSP=4, SET_IE_FLAG_ASSOC_REQ=5};
#endif
#ifdef HS2_SUPPORT
/* Hotspot 2.0 Release 1 */
enum {SET_IE_FLAG_INTERWORKING=1, SET_IE_FLAG_ADVT_PROTO=2, SET_IE_FLAG_ROAMING=3,
SET_IE_FLAG_HS2=4, SET_IE_FLAG_TIMEADVT=5, SET_IE_FLAG_TIMEZONE=6, SET_IE_FLAG_PROXYARP=7,
SET_IE_FLAG_MMPDULIMIT=10, SET_IE_FLAG_ICMPv4ECHO=11};
#endif
#ifdef USER_ADDIE
enum {SET_IE_FLAG_INSERT=1, SET_IE_FLAG_DELETE=2};
#endif
typedef struct _DOT11_GENERAL{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char *Data;
}DOT11_GENERAL;
typedef struct _DOT11_NOEVENT{
unsigned char EventId;
unsigned char IsMoreEvent;
}DOT11_NO_EVENT;
typedef struct _DOT11_REQUEST{
unsigned char EventId;
}DOT11_REQUEST;
typedef struct _DOT11_WPA2_MULTICAST_CIPHER{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char MulticastCipher;
}DOT11_WPA2_MULTICAST_CIPHER;
typedef struct _DOT11_WPA_MULTICAST_CIPHER{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char MulticastCipher;
}DOT11_WPA_MULTICAST_CIPHER;
typedef struct _DOT11_ASSOCIATION_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned short RSNIELen;
char RSNIE[MAXRSNIELEN]; // include ID and Length by kenny
}DOT11_ASSOCIATION_IND;
typedef struct _DOT11_ASSOCIATION_RSP{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned char Status;
}DOT11_ASSOCIATIIN_RSP;
typedef struct _DOT11_REASSOCIATION_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned short RSNIELen;
char RSNIE[MAXRSNIELEN];
char OldAPaddr[MACADDRLEN];
}DOT11_REASSOCIATION_IND;
typedef struct _DOT11_REASSOCIATION_RSP{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned char Status;
char CurrAPaddr[MACADDRLEN];
}DOT11_REASSOCIATIIN_RSP;
typedef struct _DOT11_AUTHENTICATION_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
}DOT11_AUTHENTICATION_IND;
typedef struct _DOT11_REAUTHENTICATION_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
}DOT11_REAUTHENTICATION_IND;
#ifdef WIFI_SIMPLE_CONFIG
typedef struct _DOT11_PROBE_REQUEST_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned short ProbeIELen;
char ProbeIE[PROBEIELEN];
}DOT11_PROBE_REQUEST_IND;
typedef struct _DOT11_WSC_ASSOC_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned short AssocIELen;
char AssocIE[PROBEIELEN];
unsigned char wscIE_included;
}DOT11_WSC_ASSOC_IND;
typedef struct _DOT11_GETSET_MIB {
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char cmd[50];
}DOT11_GETSET_MIB;
#endif
typedef struct _DOT11_DEAUTHENTICATION_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned long tx_packets; // == transmited packets
unsigned long rx_packets; // == received packets
unsigned long tx_bytes; // == transmited bytes
unsigned long rx_bytes; // == received bytes
unsigned long Reason;
}DOT11_DEAUTHENTICATION_IND;
typedef struct _DOT11_DISASSOCIATION_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned long tx_packets; // == transmited packets
unsigned long rx_packets; // == received packets
unsigned long tx_bytes; // == transmited bytes
unsigned long rx_bytes; // == received bytes
unsigned long Reason;
}DOT11_DISASSOCIATION_IND;
typedef struct _DOT11_DISCONNECT_REQ{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned short Reason;
char MACAddr[MACADDRLEN];
}DOT11_DISCONNECT_REQ;
typedef struct _DOT11_SET_802DOT11{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char VariableType;
unsigned char VariableValue;
char MACAddr[MACADDRLEN];
}DOT11_SET_802DOT11;
typedef struct _DOT11_SET_KEY{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned long KeyIndex;
unsigned long KeyLen;
unsigned char KeyType;
unsigned char EncType;
unsigned char MACAddr[MACADDRLEN];
DOT11_KEY_RSC KeyRSC;
unsigned char KeyMaterial[64];
}DOT11_SET_KEY;
typedef struct _DOT11_DELETE_KEY{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned char KeyType;
}DOT11_DELETE_KEY;
typedef struct _DOT11_SET_RSNIE{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned short Flag;
unsigned short RSNIELen;
char RSNIE[MAXRSNIELEN];
char MACAddr[MACADDRLEN];
}DOT11_SET_RSNIE;
typedef struct _DOT11_SET_PORT{
unsigned char EventId;
unsigned char PortStatus;
unsigned char PortType;
unsigned char MACAddr[MACADDRLEN];
}DOT11_SET_PORT;
typedef struct _DOT11_GKEY_TSC{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char KeyTSC[8];
}DOT11_GKEY_TSC;
typedef struct _DOT11_MIC_FAILURE{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
}DOT11_MIC_FAILURE;
typedef struct _DOT11_STA_QUERY_BSSID{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned long IsValid;
char Bssid[MACADDRLEN];
}DOT11_STA_QUERY_BSSID;
typedef struct _DOT11_STA_QUERY_SSID{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned long IsValid;
char ssid[32];
int ssid_len;
}DOT11_STA_QUERY_SSID;
typedef struct _DOT11_EAPOL_START{
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
}DOT11_EAPOL_START;
typedef struct _DOT11_SET_EXPIREDTIME{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char MACAddr[MACADDRLEN];
unsigned long ExpireTime;
}DOT11_SET_EXPIREDTIME;
typedef struct _DOT11_QUERY_STATS{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char MACAddr[MACADDRLEN];
unsigned long IsSuccess;
unsigned long tx_packets; // == transmited packets
unsigned long rx_packets; // == received packets
unsigned long tx_bytes; // == transmited bytes
unsigned long rx_bytes; // == received bytes
}DOT11_QUERY_STATS;
typedef struct _DOT11_EAP_PACKET{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned short packet_len;
unsigned char packet[1550];
}DOT11_EAP_PACKET;
#ifdef INCLUDE_WPS
#ifndef CONFIG_MSC
typedef struct _DOT11_EVENT_PACKET{
unsigned char EventId;
unsigned char EventType;
unsigned short packet_len;
unsigned char packet[1550];
}DOT11_EVENT_PACKET;
#endif
#endif
typedef DOT11_ASSOCIATION_IND DOT11_AUTH_IND;
#ifdef WIFI_SIMPLE_CONFIG
typedef struct _DOT11_WSC_PIN_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char code[256];
} DOT11_WSC_PIN_IND;
#ifdef CONFIG_RTL_COMAPI_CFGFILE
typedef struct _DOT11_WSC_IND{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned int value;
} DOT11_WSC_IND;
#endif //CONFIG_RTL_COMAPI_CFGFILE
#endif
#define DOT11_AI_REQFI_CAPABILITIES 1
#define DOT11_AI_REQFI_LISTENINTERVAL 2
#define DOT11_AI_REQFI_CURRENTAPADDRESS 4
#define DOT11_AI_RESFI_CAPABILITIES 1
#define DOT11_AI_RESFI_STATUSCODE 2
#define DOT11_AI_RESFI_ASSOCIATIONID 4
typedef struct _DOT11_ASSOCIATION_INFO
{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char SupplicantAddress[MACADDRLEN];
UINT32 Length;
UINT16 AvailableRequestFixedIEs;
struct _DOT11_AI_REQFI {
UINT16 Capabilities;
UINT16 ListenInterval;
char CurrentAPAddress[MACADDRLEN];
} RequestFixedIEs;
UINT32 RequestIELength;
UINT32 OffsetRequestIEs;
UINT16 AvailableResponseFixedIEs;
struct _DOT11_AI_RESFI {
UINT16 Capabilities;
UINT16 StatusCode;
UINT16 AssociationId;
} ResponseFixedIEs;
UINT32 ResponseIELength;
UINT32 OffsetResponseIEs;
} DOT11_ASSOCIATION_INFO, *PDOT11_ASSOCIATION_INFO;
typedef struct _DOT11_INIT_QUEUE
{
unsigned char EventId;
unsigned char IsMoreEvent;
} DOT11_INIT_QUEUE, *PDOT11_INIT_QUEUE;
#ifdef USER_ADDIE
typedef struct _DOT11_SET_USERIE{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned short Flag;
unsigned short USERIELen;
char USERIE[256];
}DOT11_SET_USERIE;
#endif
//*------The following are defined to handle the event Queue for security event--------*/
// For Event Queue related function
void DOT11_InitQueue(DOT11_QUEUE *q);
#ifndef WITHOUT_ENQUEUE
int DOT11_EnQueue(unsigned long task_priv, DOT11_QUEUE *q, unsigned char *item, int itemsize);
int DOT11_DeQueue(unsigned long task_priv, DOT11_QUEUE *q, unsigned char *item, int *itemsize);
#endif
void DOT11_PrintQueue(DOT11_QUEUE *q);
char *DOT11_ErrMsgQueue(int err);
#define DOT11_IsEmptyQueue(q) (q->NumItem==0 ? 1:0)
#define DOT11_IsFullQueue(q) (q->NumItem==q->MaxItem? 1:0)
#define DOT11_NumItemQueue(q) q->NumItem
typedef enum{
ERROR_BUFFER_TOO_SMALL = -1,
ERROR_INVALID_PARA = -2,
ERROR_INVALID_RSNIE = -13,
ERROR_INVALID_MULTICASTCIPHER = -18,
ERROR_INVALID_UNICASTCIPHER = -19,
ERROR_INVALID_AUTHKEYMANAGE = -20,
ERROR_UNSUPPORTED_RSNEVERSION = -21,
ERROR_INVALID_CAPABILITIES = -22,
ERROR_MGMT_FRAME_PROTECTION_VIOLATION = -31
} INFO_ERROR;
#define RSN_STRERROR_BUFFER_TOO_SMALL "Input Buffer too small"
#define RSN_STRERROR_INVALID_PARAMETER "Invalid RSNIE Parameter"
#define RSN_STRERROR_INVALID_RSNIE "Invalid RSNIE"
#define RSN_STRERROR_INVALID_MULTICASTCIPHER "Multicast Cipher is not valid"
#define RSN_STRERROR_INVALID_UNICASTCIPHER "Unicast Cipher is not valid"
#define RSN_STRERROR_INVALID_AUTHKEYMANAGE "Authentication Key Management Protocol is not valid"
#define RSN_STRERROR_UNSUPPORTED_RSNEVERSION "Unsupported RSNE version"
#define RSN_STRERROR_INVALID_CAPABILITIES "Invalid RSNE Capabilities"
#define DOT11_s2n(s,c) (*((c))=(unsigned char)(((s)>> 8)&0xff), \
*((c)+1)=(unsigned char)(((s) )&0xff))
#define DOT11_n2s(c,s) (s =((unsigned short)(*((c))))<< 8, \
s|=((unsigned short)(*((c)+1))))
#define DOT11_lc2s(bc,s) (s = ((unsigned short)(*((bc)+1)))<< 8, \
s |= ((unsigned short)(*((bc)))))
void DOT11_Dump(char *fun, UINT8 *buf, int size, char *comment);
typedef enum _COUNTERMEASURE_TEST
{
TEST_TYPE_PAIRWISE_ERROR = 0,
TEST_TYPE_GROUP_ERROR = 1,
TEST_TYPE_SEND_BAD_UNICAST_PACKET = 2,
TEST_TYPE_SEND_BAD_BROADCAST_PACKET = 3
} COUNTERMEASURE_TEST;
#define MIC_TIMER_PERIOD RTL_SECONDS_TO_JIFFIES(60) //unit: 10 milli-seconds
#define REJECT_ASSOC_PERIOD RTL_SECONDS_TO_JIFFIES(60)
//*---------- The followings are for processing of RSN Information Element------------*/
#define RSN_ELEMENT_ID 0xDD
#define RSN_VER1 0x01
#define DOT11_MAX_CIPHER_ALGORITHMS 0x0a
#define DOT11_GROUPFLAG 0x02
#define DOT11_REPLAYBITSSHIFT 2
#define DOT11_REPLAYBITS 3
#define IsPairwiseUsingDefaultKey(Cap) ((Cap[0] & DOT11_GROUPFLAG)?TRUE:FALSE)
#define IsPreAuthentication(Cap) ((Cap[0] & 0x01)?TRUE:FALSE)
#define DOT11_GetNumOfRxTSC(Cap) (2<<((Cap[0] >> DOT11_REPLAYBITSSHIFT) & DOT11_REPLAYBITS))
#if defined(PACK_STRUCTURE) || defined(__ECOS)
#pragma pack(1)
#endif
typedef struct _DOT11_RSN_IE_HEADER {
UINT8 ElementID;
UINT8 Length;
UINT8 OUI[4];
UINT16 Version;
}DOT11_RSN_IE_HEADER;
typedef struct _DOT11_RSN_IE_SUITE{
UINT8 OUI[3];
UINT8 Type;
}DOT11_RSN_IE_SUITE;
typedef struct _DOT11_RSN_IE_COUNT_SUITE{
UINT16 SuiteCount;
DOT11_RSN_IE_SUITE dot11RSNIESuite[DOT11_MAX_CIPHER_ALGORITHMS];
} __WLAN_ATTRIB_PACK__ DOT11_RSN_IE_COUNT_SUITE, *PDOT11_RSN_IE_COUNT_SUITE;
typedef union _DOT11_RSN_CAPABILITY{
UINT16 shortData;
UINT8 charData[2];
#ifdef RTL_WPA2
struct
{
#ifdef _BIG_ENDIAN_
#ifdef CONFIG_IEEE80211W
unsigned short MFPC:1; // B7
unsigned short MFPR:1; // B6
#else
unsigned short Reserved1:2; // B7 B6
#endif
unsigned short GtksaReplayCounter:2; // B5 B4
unsigned short PtksaReplayCounter:2; // B3 B2
unsigned short NoPairwise:1; // B1
unsigned short PreAuthentication:1; // B0
unsigned short Reserved2:8;
#else
unsigned short PreAuthentication:1; // B0
unsigned short NoPairwise:1; // B1
unsigned short PtksaReplayCounter:2; // B3 B2
unsigned short GtksaReplayCounter:2; // B5 B4
#ifdef CONFIG_IEEE80211W
unsigned short MFPR:1; // B6
unsigned short MFPC:1; // B7
#else
unsigned short Reserved1:2; // B7 B6
#endif
unsigned short Reserved2:8;
#endif
} __WLAN_ATTRIB_PACK__ field;
#else
struct
{
#ifdef _BIG_ENDIAN_
unsigned short PreAuthentication:1;
unsigned short PairwiseAsDefaultKey:1;
unsigned short NumOfReplayCounter:2;
unsigned short Reserved:12;
#else
unsigned short Reserved1:4;
unsigned short NumOfReplayCounter:2;
unsigned short PairwiseAsDefaultKey:1;
unsigned short PreAuthentication:1;
unsigned short Reserved2:8;
#endif
} __WLAN_ATTRIB_PACK__ field;
#endif
} __WLAN_ATTRIB_PACK__ DOT11_RSN_CAPABILITY;
#ifdef HS2_SUPPORT
/* Hotspot 2.0 Release 1 */
#define MAX_GAS_CONTENTS_LEN PRE_ALLOCATED_BUFSIZE
typedef struct _DOT11_HS2_GAS_REQ{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char Dialog_token;
unsigned char MACAddr[MACADDRLEN];
unsigned char Advt_proto;
unsigned short Reqlen;
unsigned char Req[MAX_GAS_CONTENTS_LEN];
}DOT11_HS2_GAS_REQ;
typedef struct _DOT11_HS2_GAS_RSP{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char Dialog_token;
unsigned char Action;
unsigned char MACAddr[MACADDRLEN];
unsigned short StatusCode;
unsigned short Comeback_delay;
unsigned char Rsp_fragment_id;
unsigned char Advt_proto;
unsigned short Rsplen;
unsigned char Rsp[MAX_GAS_CONTENTS_LEN];
}DOT11_HS2_GAS_RSP;
typedef struct _DOT11_HS2_TSM_REQ{
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char Dialog_token;
unsigned char MACAddr[MACADDRLEN];
unsigned char Req_mode;
unsigned char Validity_intval;
unsigned short Disassoc_timer;
unsigned char term_len;
unsigned char url_len;
unsigned char list_len;
unsigned char terminal_dur[12];
unsigned char Session_url[50];
unsigned char Candidate_list[100];
}DOT11_HS2_TSM_REQ;
#endif
#ifdef CONFIG_IEEE80211W
/*HS2 R2 logo test*/
typedef struct _DOT11_INIT_11W_Flags {
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char dot11IEEE80211W;
unsigned char dot11EnableSHA256;
}DOT11_INIT_11W_Flags;
typedef struct _DOT11_SET_11W_Flags {
unsigned char EventId;
unsigned char IsMoreEvent;
unsigned char macAddr[MACADDRLEN];
unsigned char isPMF;
}DOT11_SET_11W_Flags;
typedef struct _DOT11_SA_QUERY_RSP {
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned char trans_id[2];
}DOT11_SA_QUERY_RSP;
#endif // CONFIG_IEEE80211W
#ifdef INDICATE_LINK_CHANGE
typedef struct _DOT11_LINK_CHANGE_IND {
unsigned char EventId;
unsigned char IsMoreEvent;
char MACAddr[MACADDRLEN];
unsigned char LinkStatus;
} DOT11_LINK_CHANGE_IND;
#endif
#if defined(PACK_STRUCTURE) || defined(__ECOS)
#pragma pack()
#endif
#endif // _8192CD_SECURITY_H_