/* * rsnApi.h * * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 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. * * Neither the name Texas Instruments 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. */ /** \file utilsReplvl.h * \brief Report level API * * \see utilsReplvl.c */ /***************************************************************************/ /* */ /* MODULE: utilsReplvl.h */ /* PURPOSE: Report level API */ /* */ /***************************************************************************/ #ifndef __RSN_API_H__ #define __RSN_API_H__ #include "tidef.h" #include "TWDriver.h" #include "802_11Defs.h" #include "DrvMainModules.h" /* Constants */ #define RSN_MAC_ADDR_LEN 6 #define MAX_KEY_RSC_LEN 8 #define MAX_SSN_KEY_DATA_LENGTH 32 #define RSN_AUTH_FAILURE_TIMEOUT 30000 #define MAX_NUM_OF_PRE_AUTH_BSSIDS 16 #define MAX_KEYS_NUM 4 /* Enumerations */ /** RSN supported authentication suites */ typedef enum { RSN_AUTH_OPEN = 0, /*< Legacy Open authentication suite */ RSN_AUTH_SHARED_KEY = 1, /*< Legacy Shared Key authentication suite */ RSN_AUTH_AUTO_SWITCH = 2, /*< Automatic authentication suite */ RSN_AUTH_NONE = 255 /*< no authentication suite */ } EAuthSuite; /* Available External authentication modes for admission control */ typedef enum { RSN_EXT_AUTH_MODE_OPEN = RSN_AUTH_OPEN, RSN_EXT_AUTH_MODE_SHARED_KEY = RSN_AUTH_SHARED_KEY, RSN_EXT_AUTH_MODE_AUTO_SWITCH = RSN_AUTH_AUTO_SWITCH, RSN_EXT_AUTH_MODE_WPA, RSN_EXT_AUTH_MODE_WPAPSK, RSN_EXT_AUTH_MODE_WPANONE, RSN_EXT_AUTH_MODE_WPA2, RSN_EXT_AUTH_MODE_WPA2PSK, /* Not a real mode, defined as upper bound */ RSN_EXT_AUTH_MODEMAX } EExternalAuthMode; typedef enum { RSN_AUTH_STATUS_INVALID_TYPE = 0x0001, RSN_AUTH_STATUS_TIMEOUT = 0x0002, RSN_AUTH_STATUS_CHALLENGE_FROM_AP_FAILED = 0x0003, RSN_AUTH_STATUS_CHALLENGE_TO_AP_FAILED = 0x0004 } EAuthStatus; /** RSN key management suites */ typedef enum { RSN_KEY_MNG_NONE = 0, /**< no key management available */ RSN_KEY_MNG_802_1X = 1, /**< "802.1X" key management */ RSN_KEY_MNG_WPA = 2, /**< "WPA 4 way handshake" key management */ RSN_KEY_MNG_XCC = 3, /**< "XCC" key management */ RSN_KEY_MNG_UNKNOWN = 255 /**< UNKNOWN key management available */ } ERsnKeyMngSuite; /** Available cipher suites for admission control */ typedef enum { RSN_IBSS = 0, /**< IBSS mode */ RSN_INFRASTRUCTURE = 1 /**< Infrastructure mode */ } ERsnNetworkMode; /** Port Access Entity role type */ typedef enum { RSN_PAE_AP = 0, RSN_PAE_SUPP = 1 } ERsnPaeRole; /** RSN Events */ typedef enum { RSN_EVENT_EAPOL_RECV = 0x0, /**< EAPOL frame received in the RX */ RSN_EVENT_SEC_ATTACK_DETECT = 0x1, /**< Security Attack detection */ RSN_EVENT_RAW_KEY_RECV = 0x2, /**< Raw key recive */ RSN_EVENT_KEY_REMOVE = 0x3 /**< Key remove event */ } ERsnEvent; /** Site ben levels */ typedef enum { RSN_SITE_BAN_LEVEL_HALF = 1, RSN_SITE_BAN_LEVEL_FULL = 2 } ERsnSiteBanLevel; /* Typedefs */ /** Port Access Entity structure */ typedef struct { EExternalAuthMode authProtocol; ERsnKeyMngSuite keyExchangeProtocol; ECipherSuite unicastSuite; ECipherSuite broadcastSuite; } TRsnPaeConfig; typedef struct { TI_BOOL privacy; TI_UINT8 *pIe; TI_UINT8 ieLen; } TRsnData; typedef struct { TMacAddr bssId; dot11_RSN_t *pRsnIEs; TI_UINT8 rsnIeLen; } TBssidRsnInfo; typedef struct { TI_UINT8 NumOfItems; TBssidRsnInfo bssidList[MAX_NUM_OF_PRE_AUTH_BSSIDS]; } TBssidList4PreAuth; typedef struct { EAuthSuite authSuite; TI_BOOL privacyOn; TSecurityKeys keys[MAX_KEYS_NUM]; TI_UINT8 defaultKeyId; EExternalAuthMode externalAuthMode; TI_BOOL mixedMode; TI_BOOL WPAMixedModeEnable; TI_BOOL preAuthSupport; TI_UINT32 preAuthTimeout; TI_BOOL bRsnExternalMode; TI_BOOL bPairwiseMicFailureFilter; } TRsnInitParams; typedef struct { ScanBssType_e bssType; TMacAddr bssid; Tdot11HtInformationUnparse *pHTInfo; Tdot11HtCapabilitiesUnparse *pHTCapabilities; } TRsnSiteParams; /* Prototypes */ TI_HANDLE rsn_create(TI_HANDLE hOs); TI_STATUS rsn_unload(TI_HANDLE hRsn); void rsn_init (TStadHandlesList *pStadHandles); TI_STATUS rsn_SetDefaults (TI_HANDLE hRsn, TRsnInitParams *pInitParam); TI_STATUS rsn_reconfig(TI_HANDLE hRsn); TI_STATUS rsn_start(TI_HANDLE hRsn); TI_STATUS rsn_stop(TI_HANDLE hRsn, TI_BOOL removeKeys); TI_STATUS rsn_eventRecv(TI_HANDLE hRsn, ERsnEvent event, void* pData); TI_STATUS rsn_setParam(TI_HANDLE hCtrlData, void *pParam); TI_STATUS rsn_getParamEncryptionStatus(TI_HANDLE hRsn, ECipherSuite *rsnStatus); TI_STATUS rsn_getParam(TI_HANDLE hCtrlData, void *pParam); TI_STATUS rsn_evalSite(TI_HANDLE hRsn, TRsnData *pRsnData, TRsnSiteParams *pRsnSiteParams, TI_UINT32 *pMetric); TI_STATUS rsn_setSite(TI_HANDLE hRsn, TRsnData *pRsnData, TI_UINT8 *pAssocIe, TI_UINT8 *pAssocIeLen); TI_STATUS rsn_getInfoElement(TI_HANDLE hRsn, TI_UINT8 *pRsnIe, TI_UINT32 *pRsnIeLen); #ifdef XCC_MODULE_INCLUDED TI_STATUS rsn_getXCCExtendedInfoElement(TI_HANDLE hRsn, TI_UINT8 *pRsnIe, TI_UINT8 *pRsnIeLen); #endif TI_STATUS rsn_reportAuthFailure(TI_HANDLE hRsn, EAuthStatus authStatus); TI_STATUS rsn_reportMicFailure(TI_HANDLE hRsn, TI_UINT8 *pType, TI_UINT32 Length); TI_STATUS rsn_resetPMKIDList(TI_HANDLE hRsn); TI_STATUS rsn_removedDefKeys(TI_HANDLE hRsn); TI_STATUS rsn_startPreAuth(TI_HANDLE hRsn, TBssidList4PreAuth *pBssidList); ERsnSiteBanLevel rsn_banSite(TI_HANDLE hRsn, TMacAddr siteBssid, ERsnSiteBanLevel banLevel, TI_UINT32 durationMs); TI_BOOL rsn_isSiteBanned(TI_HANDLE hRsn, TMacAddr siteBssid); void rsn_MboxFlushFinishCb(TI_HANDLE handle, TI_UINT16 MboxStatus, char *InterrogateParamsBuf); TI_STATUS rsn_setPortStatus(TI_HANDLE hRsn, TI_BOOL state); void rsn_reAuth(TI_HANDLE hRsn); #endif /* __RSN_API_H__*/