/* * rsn.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 assocSM.h * \brief 802.11 Association SM * * \see assocSM.c */ /***************************************************************************/ /* */ /* MODULE: assocSM.h */ /* PURPOSE: 802.11 Association SM */ /* */ /***************************************************************************/ #ifndef _RSN_H #define _RSN_H #include "rsnApi.h" #include "paramOut.h" #include "siteHash.h" /* Constants */ #define RSN_MAX_IDENTITY_LEN 64 #define RSN_MAX_PASSWD_LEN 128 #define RSN_MAX_NUMBER_OF_EVENTS 6 #define RSN_MAX_NUMBER_OF_BANNED_SITES 16 #define RSN_MIC_FAILURE_REPORT_TIMEOUT 500 #define RSN_MIC_FAILURE_TIMEOUT (60000 + RSN_MIC_FAILURE_REPORT_TIMEOUT) #define RSN_MAIN_KEYS_SESSION_TIMEOUT RSN_AUTH_FAILURE_TIMEOUT #define RSN_MIC_FAILURE_RE_KEY_TIMEOUT 3000 /* Enumerations */ typedef enum { MIC_FAILURE_FALSE, MIC_FAILURE_TRUE, MIC_FAILURE_BLOCK } rsn_micFailureStatus_e; typedef enum { GROUP_KEY_UPDATE_FALSE, GROUP_KEY_UPDATE_TRUE } rsn_groupKeyUpdate_e; typedef enum { PAIRWISE_KEY_UPDATE_FALSE, PAIRWISE_KEY_UPDATE_TRUE } rsn_pairwiseKeyUpdate_e; /* Typedefs */ typedef struct _rsn_t rsn_t; typedef TI_STATUS (*rsn_eventCallback_t)(void* pCtx, void *pData); typedef TI_STATUS (*rsn_setPaeConfig_t)(rsn_t *pRsn, TRsnPaeConfig *pPaeConfig); typedef TI_STATUS (*rsn_getNetworkMode_t)(rsn_t *pRsn, ERsnNetworkMode *pNetMode); typedef TI_STATUS (*rsn_setKey_t)(rsn_t *pMainSec, TSecurityKeys *pKey); typedef TI_STATUS (*rsn_removeKey_t)(rsn_t *pMainSec, TSecurityKeys *pKey); typedef TI_STATUS (*rsn_setDefaultKeyId_t)(rsn_t *pMainSec, TI_UINT8 keyId); typedef TI_STATUS (*rsn_reportStatus_t)(rsn_t *pRsn, TI_STATUS rsnStatus); typedef TI_STATUS (*rsn_sendEapol_t)(rsn_t *pRsn, TI_UINT8 *pPacket, TI_UINT32 length); typedef TI_STATUS (*rsn_getSiteEntry_t)(rsn_t *pRsn, TMacAddr *macAddress, siteEntry_t *curSiteEntry); typedef TI_BOOL (*rsn_getPortStatus_t)(rsn_t *pRsn); typedef TI_STATUS (*rsn_setPortStatus_t)(TI_HANDLE hRsn, TI_BOOL state); typedef struct { rsn_eventCallback_t eventFunc; void *pCtx; } rsn_eventStruct_t; typedef struct { char id[RSN_MAX_IDENTITY_LEN]; /**< User identity string */ TI_UINT8 idLength; /**< User identity string length */ char password[RSN_MAX_PASSWD_LEN]; /**< User password string */ TI_UINT8 pwdLength; /**< User password string length */ } authIdentity_t; typedef struct { ERsnSiteBanLevel banLevel; TI_UINT32 banStartedMs; TI_UINT32 banDurationMs; TMacAddr siteBssid; } rsn_siteBanEntry_t; struct _rsn_t { rsn_eventStruct_t events[RSN_MAX_NUMBER_OF_EVENTS]; TRsnPaeConfig paeConfig; TI_BOOL PrivacyOptionImplemented; TSecurityKeys keys[MAX_KEYS_NUM]; TI_BOOL keys_en [MAX_KEYS_NUM]; TI_UINT8 defaultKeyId; TI_BOOL defaultKeysOn; TI_BOOL wepDefaultKeys[MAX_KEYS_NUM]; TI_BOOL wepStaticKey; rsn_groupKeyUpdate_e eGroupKeyUpdate; rsn_pairwiseKeyUpdate_e ePairwiseKeyUpdate; OS_802_11_EAP_TYPES eapType; rsnGenericIE_t genericIE; rsn_siteBanEntry_t bannedSites[RSN_MAX_NUMBER_OF_BANNED_SITES]; TI_UINT8 numOfBannedSites; TI_HANDLE hMicFailureReportWaitTimer; TI_HANDLE hMicFailureGroupReKeyTimer; TI_HANDLE hMicFailurePairwiseReKeyTimer; TI_BOOL bPairwiseMicFailureFilter; struct _admCtrl_t *pAdmCtrl; struct _mainSec_t *pMainSecSm; struct _keyParser_t *pKeyParser; TI_HANDLE hTxCtrl; TI_HANDLE hRx; TI_HANDLE hConn; TI_HANDLE hCtrlData; TI_HANDLE hTWD; TI_HANDLE hSiteMgr; TI_HANDLE hReport; TI_HANDLE hOs; TI_HANDLE hXCCMngr; TI_HANDLE hEvHandler; TI_HANDLE hSmeSm; TI_HANDLE hAPConn; TI_HANDLE hMlme; TI_HANDLE hPowerMgr; TI_HANDLE hTimer; TI_HANDLE hCurrBss; rsn_setPaeConfig_t setPaeConfig; rsn_getNetworkMode_t getNetworkMode; rsn_setKey_t setKey; rsn_removeKey_t removeKey; rsn_setDefaultKeyId_t setDefaultKeyId; rsn_reportStatus_t reportStatus; rsn_setPortStatus_t setPortStatus; rsn_getPortStatus_t getPortStatus; TI_UINT32 rsnStartedTs; TI_UINT32 rsnCompletedTs; TI_BOOL bRsnExternalMode; }; /* Structures */ /* External data definitions */ /* External functions definitions */ /* Function prototypes */ TI_STATUS rsn_reportStatus(rsn_t *pRsn, TI_STATUS status); TI_STATUS rsn_setPaeConfig(rsn_t *pRsn, TRsnPaeConfig *pPaeConfig); TI_STATUS rsn_getNetworkMode(rsn_t *pRsn, ERsnNetworkMode *pNetMode); TI_STATUS rsn_setKey(rsn_t *pMainSec, TSecurityKeys *pKey); TI_STATUS rsn_removeKey(rsn_t *pMainSec, TSecurityKeys *pKey); TI_STATUS rsn_setDefaultKeyId(rsn_t *pMainSec, TI_UINT8 keyId); TI_STATUS rsn_setDefaultKeys(rsn_t *pHandle); TI_BOOL rsn_getPortStatus(rsn_t *pRsn); TI_STATUS rsn_setPortStatus(TI_HANDLE hRsn, TI_BOOL state); TI_STATUS rsn_getGenInfoElement(rsn_t *pRsn, TI_UINT8 *out_buff, TI_UINT32 *out_buf_length); void rsn_clearGenInfoElement(rsn_t *pRsn); #endif