summaryrefslogtreecommitdiff
path: root/wilink_6_1/stad/src/Connection_Managment/admCtrlNone.c
diff options
context:
space:
mode:
Diffstat (limited to 'wilink_6_1/stad/src/Connection_Managment/admCtrlNone.c')
-rw-r--r--wilink_6_1/stad/src/Connection_Managment/admCtrlNone.c326
1 files changed, 326 insertions, 0 deletions
diff --git a/wilink_6_1/stad/src/Connection_Managment/admCtrlNone.c b/wilink_6_1/stad/src/Connection_Managment/admCtrlNone.c
new file mode 100644
index 0000000..a468ab1
--- /dev/null
+++ b/wilink_6_1/stad/src/Connection_Managment/admCtrlNone.c
@@ -0,0 +1,326 @@
+/*
+ * admCtrlNone.c
+ *
+ * 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 admCtrl.c
+ * \brief Admission control API implimentation
+ *
+ * \see admCtrl.h
+ */
+
+/****************************************************************************
+ * *
+ * MODULE: Admission Control *
+ * PURPOSE: Admission Control Module API *
+ * *
+ ****************************************************************************/
+
+#define __FILE_ID__ FILE_ID_17
+#include "osApi.h"
+#include "paramOut.h"
+#include "fsm.h"
+#include "report.h"
+#include "mlmeApi.h"
+#include "DataCtrl_Api.h"
+#include "rsn.h"
+#include "admCtrl.h"
+#include "admCtrlNone.h"
+#ifdef XCC_MODULE_INCLUDED
+#include "XCCMngr.h"
+#include "admCtrlWpa.h"
+#include "admCtrlXCC.h"
+#endif
+#include "TWDriver.h"
+
+
+/* Constants */
+
+/* Enumerations */
+
+/* Typedefs */
+
+/* Structures */
+
+/* External data definitions */
+
+/* Local functions definitions */
+
+/* Global variables */
+
+/* Function prototypes */
+
+/**
+*
+* admCtrlNone_config - Configure empty admission control.
+*
+* \b Description:
+*
+* Configure empty admission control.
+*
+* \b ARGS:
+*
+* I - pAdmCtrl - context \n
+*
+* \b RETURNS:
+*
+* TI_OK on success, TI_NOK on failure.
+*
+* \sa
+*/
+TI_STATUS admCtrlNone_config(admCtrl_t *pAdmCtrl)
+{
+ TI_STATUS status;
+ TRsnPaeConfig paeConfig;
+
+#ifdef XCC_MODULE_INCLUDED
+ TTwdParamInfo tTwdParam;
+#endif
+
+ if ((pAdmCtrl->authSuite != RSN_AUTH_OPEN ) &&
+ (pAdmCtrl->authSuite != RSN_AUTH_SHARED_KEY) &&
+ (pAdmCtrl->authSuite != RSN_AUTH_AUTO_SWITCH)) {
+ /* The default is OPEN */
+ pAdmCtrl->authSuite = RSN_AUTH_OPEN;
+ }
+
+ /* set admission control parameters */
+ pAdmCtrl->keyMngSuite = RSN_KEY_MNG_NONE;
+ pAdmCtrl->externalAuthMode = (EExternalAuthMode)pAdmCtrl->authSuite;
+
+ /* set callback functions (API) */
+ pAdmCtrl->getInfoElement = admCtrlNone_getInfoElement;
+ pAdmCtrl->setSite = admCtrlNone_setSite;
+ pAdmCtrl->evalSite = admCtrlNone_evalSite;
+
+ pAdmCtrl->getPmkidList = admCtrl_nullGetPMKIDlist;
+ pAdmCtrl->setPmkidList = admCtrl_nullSetPMKIDlist;
+ pAdmCtrl->resetPmkidList = admCtrl_resetPMKIDlist;
+ pAdmCtrl->getPreAuthStatus = admCtrl_nullGetPreAuthStatus;
+ pAdmCtrl->startPreAuth = admCtrl_nullStartPreAuth;
+ pAdmCtrl->get802_1x_AkmExists = admCtrl_nullGet802_1x_AkmExists;
+
+
+
+ /* set cipher suite */
+ pAdmCtrl->broadcastSuite = TWD_CIPHER_NONE;
+ pAdmCtrl->unicastSuite = TWD_CIPHER_NONE;
+
+
+ /* set PAE parametrs */
+ paeConfig.authProtocol = pAdmCtrl->externalAuthMode;
+ paeConfig.unicastSuite = pAdmCtrl->unicastSuite;
+ paeConfig.broadcastSuite = pAdmCtrl->broadcastSuite;
+ paeConfig.keyExchangeProtocol = pAdmCtrl->keyMngSuite;
+ /* set default PAE configuration */
+ status = pAdmCtrl->pRsn->setPaeConfig(pAdmCtrl->pRsn, &paeConfig);
+
+#ifdef XCC_MODULE_INCLUDED
+ /* Clean MIC and KP in HAL and re-send WEP-keys */
+ tTwdParam.paramType = TWD_RSN_XCC_SW_ENC_ENABLE_PARAM_ID;
+ tTwdParam.content.rsnXCCSwEncFlag = TI_FALSE;
+ status = TWD_SetParam(pAdmCtrl->pRsn->hTWD, &tTwdParam);
+
+ tTwdParam.paramType = TWD_RSN_XCC_MIC_FIELD_ENABLE_PARAM_ID;
+ tTwdParam.content.rsnXCCMicFieldFlag = TI_FALSE;
+ status = TWD_SetParam(pAdmCtrl->pRsn->hTWD, &tTwdParam);
+#endif /*XCC_MODULE_INCLUDED*/
+
+ return status;
+}
+
+
+/**
+*
+* admCtrlNone_getInfoElement - Get the current information element.
+*
+* \b Description:
+*
+* Get the current information element.
+*
+* \b ARGS:
+*
+* I - pAdmCtrl - context \n
+* I - pIe - IE buffer \n
+* I - pLength - length of IE \n
+*
+* \b RETURNS:
+*
+* TI_OK on success, TI_NOK on failure.
+*
+* \sa
+*/
+TI_STATUS admCtrlNone_getInfoElement(admCtrl_t *pAdmCtrl, TI_UINT8 *pIe, TI_UINT32 *pLength)
+{
+ *pLength = 0;
+ pIe = NULL;
+
+ TI_VOIDCAST(pIe);
+ return TI_OK;
+}
+/**
+*
+* admCtrlNone_setSite - Set current primary site parameters for registration.
+*
+* \b Description:
+*
+* Set current primary site parameters for registration.
+*
+* \b ARGS:
+*
+* I - pAdmCtrl - context \n
+* I - pRsnData - site's RSN data \n
+* O - pAssocIe - result IE of evaluation \n
+* O - pAssocIeLen - length of result IE of evaluation \n
+*
+* \b RETURNS:
+*
+* TI_OK on site is aproved, TI_NOK on site is rejected.
+*
+* \sa
+*/
+TI_STATUS admCtrlNone_setSite(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TI_UINT8 *pAssocIe, TI_UINT8 *pAssocIeLen)
+{
+ TI_STATUS status;
+ paramInfo_t param;
+ TTwdParamInfo tTwdParam;
+ EAuthSuite authSuite;
+
+ admCtrlNone_config(pAdmCtrl);
+
+ authSuite = pAdmCtrl->authSuite;
+
+ /* Config the default keys */
+ if ((authSuite == RSN_AUTH_SHARED_KEY) || (authSuite == RSN_AUTH_AUTO_SWITCH))
+ { /* Configure Security status in HAL */
+ tTwdParam.paramType = TWD_RSN_SECURITY_MODE_PARAM_ID;
+ tTwdParam.content.rsnEncryptionStatus = (ECipherSuite)TWD_CIPHER_WEP;
+ status = TWD_SetParam(pAdmCtrl->pRsn->hTWD, &tTwdParam);
+ /* Configure the keys in HAL */
+ rsn_setDefaultKeys(pAdmCtrl->pRsn);
+ }
+
+#ifdef XCC_MODULE_INCLUDED
+ admCtrlXCC_setExtendedParams(pAdmCtrl, pRsnData);
+#endif
+
+ /* Now we configure the MLME module with the 802.11 legacy authentication suite,
+ THe MLME will configure later the authentication module */
+ param.paramType = MLME_LEGACY_TYPE_PARAM;
+ switch (authSuite)
+ {
+ case RSN_AUTH_OPEN:
+ param.content.mlmeLegacyAuthType = AUTH_LEGACY_OPEN_SYSTEM;
+ break;
+
+ case RSN_AUTH_SHARED_KEY:
+ param.content.mlmeLegacyAuthType = AUTH_LEGACY_SHARED_KEY;
+ break;
+
+ case RSN_AUTH_AUTO_SWITCH:
+ param.content.mlmeLegacyAuthType = AUTH_LEGACY_AUTO_SWITCH;
+ break;
+
+ default:
+ return TI_NOK;
+ }
+
+ status = mlme_setParam(pAdmCtrl->hMlme, &param);
+ if (status != TI_OK)
+ {
+ return status;
+ }
+
+ param.paramType = RX_DATA_EAPOL_DESTINATION_PARAM;
+ param.content.rxDataEapolDestination = OS_ABS_LAYER;
+ status = rxData_setParam(pAdmCtrl->hRx, &param);
+ if (status != TI_OK)
+ {
+ return status;
+ }
+
+ /* Configure privacy status in HAL */
+ if (authSuite == RSN_AUTH_OPEN)
+ {
+ tTwdParam.paramType = TWD_RSN_SECURITY_MODE_PARAM_ID;
+ tTwdParam.content.rsnEncryptionStatus = (ECipherSuite)TWD_CIPHER_NONE;
+ status = TWD_SetParam(pAdmCtrl->pRsn->hTWD, &tTwdParam);
+ }
+
+ return status;
+}
+
+/**
+*
+* admCtrlNone_evalSite - Evaluate site for registration.
+*
+* \b Description:
+*
+* evaluate site RSN capabilities against the station's cap.
+* If the BSS type is infrastructure, the station matches the site only if it's WEP status is same as the site
+* In IBSS, it does not matter
+*
+* \b ARGS:
+*
+* I - pAdmCtrl - Context \n
+* I - pRsnData - site's RSN data \n
+* O - pEvaluation - Result of evaluation \n
+*
+* \b RETURNS:
+*
+* TI_OK
+*
+* \sa
+*/
+TI_STATUS admCtrlNone_evalSite(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TRsnSiteParams *pRsnSiteParams, TI_UINT32 *pEvaluation)
+{
+ if ((pAdmCtrl==NULL) || (pEvaluation==NULL)){
+ return TI_NOK;
+ }
+ *pEvaluation = 1;
+
+ /* Check privacy bit if not in mixed mode */
+ if (!pAdmCtrl->mixedMode)
+ { /* There's no mixed mode, so make sure that the privacy Bit is off*/
+ if (pRsnData->privacy)
+ {
+ *pEvaluation = 0;
+ return TI_NOK;
+ }
+ }
+
+ TRACE1(pAdmCtrl->hReport, REPORT_SEVERITY_INFORMATION, "admCtrlNone_evalSite: pEvaluation=%d\n\n", *pEvaluation);
+
+ return TI_OK;
+
+}
+
+