summaryrefslogtreecommitdiff
path: root/wilink_6_1/stad/src/Connection_Managment/admCtrl.h
diff options
context:
space:
mode:
Diffstat (limited to 'wilink_6_1/stad/src/Connection_Managment/admCtrl.h')
-rw-r--r--wilink_6_1/stad/src/Connection_Managment/admCtrl.h287
1 files changed, 287 insertions, 0 deletions
diff --git a/wilink_6_1/stad/src/Connection_Managment/admCtrl.h b/wilink_6_1/stad/src/Connection_Managment/admCtrl.h
new file mode 100644
index 0000000..e9c14e3
--- /dev/null
+++ b/wilink_6_1/stad/src/Connection_Managment/admCtrl.h
@@ -0,0 +1,287 @@
+/*
+ * admCtrl.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 admCtrl.h
+ * \brief Admission control API
+ *
+ * \see admCtrl.c
+ */
+
+/****************************************************************************
+ * *
+ * MODULE: Admission Control *
+ * PURPOSE: Admission Control Module API *
+ * *
+ ****************************************************************************/
+
+#ifndef _ADM_CTRL_H_
+#define _ADM_CTRL_H_
+
+#include "rsnApi.h"
+#include "TWDriver.h"
+
+/* Constants */
+
+/* Enumerations */
+
+/* Typedefs */
+
+typedef struct _admCtrl_t admCtrl_t;
+
+/* RSN admission control prototypes */
+
+typedef TI_STATUS (*admCtrl_setAuthSuite_t)(admCtrl_t *pAdmCtrl, EAuthSuite authSuite);
+
+typedef TI_STATUS (*admCtrl_getAuthSuite_t)(admCtrl_t *pAdmCtrl, EAuthSuite *pSuite);
+
+typedef TI_STATUS (*admCtrl_setNetworkMode_t)(admCtrl_t *pAdmCtrl, ERsnNetworkMode mode);
+
+typedef TI_STATUS (*admCtrl_setUcastCipherSuite_t)(admCtrl_t *pAdmCtrl, ECipherSuite suite);
+
+typedef TI_STATUS (*admCtrl_setBcastCipherSuite_t)(admCtrl_t *pAdmCtrl, ECipherSuite suite);
+
+typedef TI_STATUS (*admCtrl_getCipherSuite_t)(admCtrl_t *pAdmCtrl, ECipherSuite *pSuite);
+
+typedef TI_STATUS (*admCtrl_setKeyMngSuite_t)(admCtrl_t *pAdmCtrl, ERsnKeyMngSuite suite);
+
+typedef TI_STATUS (*admCtrl_setExtAuthMode_t)(admCtrl_t *pAdmCtrl, EExternalAuthMode extAuthMode);
+
+typedef TI_STATUS (*admCtrl_getExtAuthMode_t)(admCtrl_t *pAdmCtrl, EExternalAuthMode *pExtAuthMode);
+
+typedef TI_STATUS (*admCtrl_getInfoElement_t)(admCtrl_t *pAdmCtrl, TI_UINT8 *pIe, TI_UINT32 *pLength);
+
+typedef TI_STATUS (*admCtrl_setSite_t)(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TI_UINT8 *pAssocIe, TI_UINT8 *pAssocIeLen);
+
+typedef TI_STATUS (*admCtrl_evalSite_t)(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TRsnSiteParams *pRsnSiteParams, TI_UINT32 *pEvaluation);
+
+typedef TI_STATUS (*admCtrl_setMixedMode_t)(admCtrl_t *pAdmCtrl, TI_BOOL mixedMode);
+
+typedef TI_STATUS (*admCtrl_getMixedMode_t)(admCtrl_t *pAdmCtrl, TI_BOOL *mixedMode);
+
+typedef TI_STATUS (*admCtrl_getAuthEncrCapability_t)(admCtrl_t *pAdmCtrl,
+ rsnAuthEncrCapability_t *authEncrCapability);
+
+typedef TI_STATUS (*admCtrl_setPMKIDlist_t)(admCtrl_t *pAdmCtrl, OS_802_11_PMKID *pmkIdList);
+
+typedef TI_STATUS (*admCtrl_getPMKIDlist_t)(admCtrl_t *pAdmCtrl, OS_802_11_PMKID *pmkIdList);
+
+typedef TI_STATUS (*admCtrl_resetPMKIDlist_t)(admCtrl_t *pAdmCtrl);
+
+typedef TI_STATUS (*admCtrl_sendPMKIDCandListAfterDelay_t)(admCtrl_t *pAdmCtrl, TI_UINT32 delay);
+
+typedef TI_STATUS (*admCtrl_setPromoteFlags_t)(admCtrl_t *pAdmCtrl, TI_UINT32 flags);
+
+typedef TI_STATUS (*admCtrl_getPromoteFlags_t)(admCtrl_t *pAdmCtrl, TI_UINT32 *flags);
+
+typedef TI_STATUS (*admCtrl_getWPAMixedModeSupport_t)(admCtrl_t *pAdmCtrl, TI_UINT32 *support);
+
+#ifdef XCC_MODULE_INCLUDED
+typedef TI_STATUS (*admCtrl_getNetworkEap_t)(admCtrl_t *pAdmCtrl, OS_XCC_NETWORK_EAP *networkEap);
+
+typedef TI_STATUS (*admCtrl_setNetworkEap_t)(admCtrl_t *pAdmCtrl, OS_XCC_NETWORK_EAP networkEap);
+#endif
+
+
+typedef TI_BOOL (*admCtrl_getPreAuthStatus_t)(admCtrl_t *pAdmCtrl, TMacAddr *givenAP, TI_UINT8 *cacheIndex);
+
+typedef TI_STATUS (*admCtrl_startPreAuth_t)(admCtrl_t *pAdmCtrl, TBssidList4PreAuth *pBssidList);
+
+typedef TI_STATUS (*admCtrl_get802_1x_AkmExists_t)(admCtrl_t *pAdmCtrl, TI_BOOL *wpa_802_1x_AkmExists);
+/* Constants */
+
+/* Flags for Any-WPA (WPA Mixed) mode) - set by the Supplicant */
+#define ADMCTRL_WPA_OPTION_NONE 0x00000000
+#define ADMCTRL_WPA_OPTION_ENABLE_PROMOTE_AUTH_MODE 0x00000001
+#define ADMCTRL_WPA_OPTION_ENABLE_PROMOTE_CIPHER 0x00000002
+
+#define ADMCTRL_WPA_OPTION_MAXVALUE 0x00000003
+
+
+/* Structures */
+
+/* PMKID cache structures */
+/* (PMKID cache used for WPA2 pre-authentication */
+
+#define PMKID_VALUE_SIZE 16
+typedef TI_UINT8 pmkidValue_t[PMKID_VALUE_SIZE];
+
+#define PMKID_MAX_NUMBER 16
+
+typedef struct
+{
+ TMacAddr bssId;
+ pmkidValue_t pmkId;
+ TI_BOOL preAuthenticate;
+
+} pmkidEntry_t;
+
+#define ADMCTRL_PMKID_CACHE_SIZE 32
+
+typedef struct
+{
+ TSsid ssid;
+ TI_UINT8 entriesNumber;
+ TI_UINT8 nextFreeEntry;
+ pmkidEntry_t pmkidTbl[ADMCTRL_PMKID_CACHE_SIZE];
+} pmkid_cache_t;
+
+
+
+/* Admission control object */
+struct _admCtrl_t
+{
+ ERsnPaeRole role;
+ EAuthSuite authSuite;
+ ERsnNetworkMode networkMode;
+ EExternalAuthMode externalAuthMode;
+ ECipherSuite unicastSuite;
+ ECipherSuite broadcastSuite;
+ ERsnKeyMngSuite keyMngSuite;
+ TI_BOOL wpaAkmExists;
+ TI_BOOL mixedMode;
+ TI_UINT8 AP_IP_Address[4];
+ TI_UINT16 replayCnt;
+ TI_UINT8 aironetIeReserved[8];
+ TI_BOOL encrInSw;
+ TI_BOOL micInSw;
+ TI_BOOL setSiteFirst;
+#ifdef XCC_MODULE_INCLUDED
+ OS_XCC_NETWORK_EAP networkEapMode;
+#endif
+ TI_BOOL XCCSupport;
+ TI_BOOL proxyArpEnabled;
+
+ TI_BOOL WPAMixedModeEnable;
+ TI_UINT32 WPAPromoteFlags;
+
+ TI_BOOL preAuthSupport;
+ TI_UINT32 preAuthTimeout;
+ TI_UINT8 MaxNumOfPMKIDs;
+ pmkid_cache_t pmkid_cache;
+
+ struct _rsn_t *pRsn;
+ TI_HANDLE hMlme;
+ TI_HANDLE hRx;
+ TI_HANDLE hReport;
+ TI_HANDLE hOs;
+ TI_HANDLE hXCCMngr;
+ TI_HANDLE hPowerMgr;
+ TI_HANDLE hEvHandler;
+ TI_HANDLE hTimer;
+ TI_HANDLE hCurrBss;
+ TI_HANDLE hSme;
+
+
+ admCtrl_setAuthSuite_t setAuthSuite;
+ admCtrl_getAuthSuite_t getAuthSuite;
+ admCtrl_setNetworkMode_t setNetworkMode;
+ admCtrl_setUcastCipherSuite_t setUcastSuite;
+ admCtrl_setBcastCipherSuite_t setBcastSuite;
+ admCtrl_setExtAuthMode_t setExtAuthMode;
+ admCtrl_getExtAuthMode_t getExtAuthMode;
+ admCtrl_getCipherSuite_t getCipherSuite;
+ admCtrl_setKeyMngSuite_t setKeyMngSuite;
+ admCtrl_setMixedMode_t setMixedMode;
+ admCtrl_getMixedMode_t getMixedMode;
+ admCtrl_getInfoElement_t getInfoElement;
+ admCtrl_setSite_t setSite;
+ admCtrl_evalSite_t evalSite;
+ admCtrl_getAuthEncrCapability_t getAuthEncrCap;
+ admCtrl_setPMKIDlist_t setPmkidList;
+ admCtrl_getPMKIDlist_t getPmkidList;
+ admCtrl_resetPMKIDlist_t resetPmkidList;
+ admCtrl_setPromoteFlags_t setPromoteFlags;
+ admCtrl_getPromoteFlags_t getPromoteFlags;
+ admCtrl_getWPAMixedModeSupport_t getWPAMixedModeSupport;
+ admCtrl_get802_1x_AkmExists_t get802_1x_AkmExists;
+
+
+#ifdef XCC_MODULE_INCLUDED
+ admCtrl_getNetworkEap_t getNetworkEap;
+ admCtrl_setNetworkEap_t setNetworkEap;
+#endif
+
+ admCtrl_getPreAuthStatus_t getPreAuthStatus;
+ admCtrl_startPreAuth_t startPreAuth;
+
+ void *hPreAuthTimerWpa2;
+ TI_UINT8 numberOfPreAuthCandidates;
+};
+
+/* External data definitions */
+
+/* External functions definitions */
+
+/* Function prototypes */
+
+admCtrl_t* admCtrl_create(TI_HANDLE hOs);
+
+TI_STATUS admCtrl_config (TI_HANDLE hAdmCtrl,
+ TI_HANDLE hMlme,
+ TI_HANDLE hRx,
+ TI_HANDLE hReport,
+ TI_HANDLE hOs,
+ struct _rsn_t *pRsn,
+ TI_HANDLE hXCCMngr,
+ TI_HANDLE hPowerMgr,
+ TI_HANDLE hEvHandler,
+ TI_HANDLE hTimer,
+ TI_HANDLE hCurrBss,
+ TRsnInitParams *pInitParam);
+
+TI_STATUS admCtrl_unload(admCtrl_t *pAdmCtrl);
+
+TI_STATUS admCtrlNone_config(admCtrl_t *pAdmCtrl);
+
+TI_STATUS admCtrlWpa_config(admCtrl_t *pAdmCtrl);
+
+TI_STATUS admCtrl_parseIe(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TI_UINT8 **pIe, TI_UINT8 IeId);
+
+TI_STATUS admCtrl_subConfig(TI_HANDLE hAdmCtrl);
+
+TI_STATUS admCtrl_nullSetPMKIDlist(admCtrl_t *pAdmCtrl, OS_802_11_PMKID *pmkIdList);
+
+TI_STATUS admCtrl_nullGetPMKIDlist(admCtrl_t *pAdmCtrl, OS_802_11_PMKID *pmkIdList);
+
+TI_STATUS admCtrl_resetPMKIDlist(admCtrl_t *pAdmCtrl);
+
+TI_BOOL admCtrl_nullGetPreAuthStatus(admCtrl_t *pAdmCtrl, TMacAddr *givenAP, TI_UINT8 *cacheIndex);
+
+TI_STATUS admCtrl_nullStartPreAuth(admCtrl_t *pAdmCtrl, TBssidList4PreAuth *pBssidList);
+
+TI_STATUS admCtrl_nullGet802_1x_AkmExists(admCtrl_t *pAdmCtrl, TI_BOOL *wpa_802_1x_AkmExists);
+
+void admCtrl_notifyPreAuthStatus (admCtrl_t *pAdmCtrl, preAuthStatusEvent_e newStatus);
+
+#endif /* _ADM_H_*/
+