1 /** \file utilsReplvl.h 2 * \brief Report level API 3 * 4 * \see utilsReplvl.c 5 */ 6 /**************************************************************************** 7 **+-----------------------------------------------------------------------+** 8 **| |** 9 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 10 **| All rights reserved. |** 11 **| |** 12 **| Redistribution and use in source and binary forms, with or without |** 13 **| modification, are permitted provided that the following conditions |** 14 **| are met: |** 15 **| |** 16 **| * Redistributions of source code must retain the above copyright |** 17 **| notice, this list of conditions and the following disclaimer. |** 18 **| * Redistributions in binary form must reproduce the above copyright |** 19 **| notice, this list of conditions and the following disclaimer in |** 20 **| the documentation and/or other materials provided with the |** 21 **| distribution. |** 22 **| * Neither the name Texas Instruments nor the names of its |** 23 **| contributors may be used to endorse or promote products derived |** 24 **| from this software without specific prior written permission. |** 25 **| |** 26 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 27 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 28 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 29 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 30 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 31 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 32 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 33 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 34 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 35 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 36 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 37 **| |** 38 **+-----------------------------------------------------------------------+** 39 ****************************************************************************/ 40 41 /***************************************************************************/ 42 /* */ 43 /* MODULE: utilsReplvl.h */ 44 /* PURPOSE: Report level API */ 45 /* */ 46 /***************************************************************************/ 47 #ifndef __RSN_API_H__ 48 #define __RSN_API_H__ 49 50 #include "osTIType.h" 51 #include "paramOut.h" 52 #include "paramIn.h" 53 #include "memMngrEx.h" 54 #include "802_11Defs.h" 55 56 /* Constants */ 57 58 #define RSN_MAC_ADDR_LEN 6 59 #define MAX_KEY_RSC_LEN 8 60 #define MAX_SSN_KEY_DATA_LENGTH 32 61 #define RSN_AUTH_FAILURE_TIMEOUT 30000 62 63 /* Enumerations */ 64 65 /** RSN key management suites */ 66 typedef enum 67 { 68 RSN_KEY_MNG_NONE = 0, /**< no key management available */ 69 RSN_KEY_MNG_802_1X = 1, /**< "802.1X" key management */ 70 RSN_KEY_MNG_WPA = 2, /**< "WPA 4 way handshake" key management */ 71 RSN_KEY_MNG_EXC = 3, /**< "EXC" key management */ 72 RSN_KEY_MNG_UNKNOWN = 255 /**< UNKNOWN key management available */ 73 } rsn_keyMngSuite_e; 74 75 /** Available cipher suites for admission control */ 76 typedef enum 77 { 78 RSN_IBSS = 0, /**< IBSS mode */ 79 RSN_INFRASTRUCTURE = 1 /**< Infrastructure mode */ 80 } rsn_networkMode_t; 81 82 /** Port Access Entity role type */ 83 typedef enum 84 { 85 RSN_PAE_AP = 0, 86 RSN_PAE_SUPP = 1 87 } rsn_paeRole_t; 88 89 /** RSN Events */ 90 typedef enum { 91 RSN_EVENT_EAPOL_RECV = 0x0, /**< EAPOL frame received in the RX */ 92 RSN_EVENT_SEC_ATTACK_DETECT = 0x1, /**< Security Attack detection */ 93 RSN_EVENT_RAW_KEY_RECV = 0x2, /**< Raw key recive */ 94 RSN_EVENT_KEY_REMOVE = 0x3 /**< Key remove event */ 95 } rsn_event_e; 96 97 /** Site ben levels */ 98 typedef enum 99 { 100 RSN_SITE_BAN_LEVEL_HALF = 1, 101 RSN_SITE_BAN_LEVEL_FULL = 2 102 } rsn_siteBanLevel_e; 103 104 105 /* Typedefs */ 106 107 /** Port Access Entity structure */ 108 typedef struct 109 { 110 externalAuthMode_e authProtocol; 111 rsn_keyMngSuite_e keyExchangeProtocol; 112 cipherSuite_e unicastSuite; 113 cipherSuite_e broadcastSuite; 114 } rsn_paeConfig_t; 115 116 typedef struct 117 { 118 BOOL privacy; 119 UINT8 *pIe; 120 UINT8 ieLen; 121 } rsnData_t; 122 123 typedef struct 124 { 125 macAddress_t bssId; 126 dot11_RSN_t *pRsnIEs; 127 UINT8 rsnIeLen; 128 } bssidRsnInfo_t; 129 130 #define MAX_NUM_OF_PRE_AUTH_BSSIDS 16 131 typedef struct 132 { 133 UINT8 NumOfItems; 134 bssidRsnInfo_t bssidList[MAX_NUM_OF_PRE_AUTH_BSSIDS]; 135 } bssidList4PreAuth_t; 136 137 138 /* Prototypes */ 139 140 TI_HANDLE rsn_create(TI_HANDLE hOs); 141 142 TI_STATUS rsn_unload(TI_HANDLE hRsn); 143 144 TI_STATUS rsn_config(TI_HANDLE hRsn, 145 TI_HANDLE hTx, 146 TI_HANDLE hRx, 147 TI_HANDLE hConn, 148 TI_HANDLE hMlme, 149 TI_HANDLE hCtrlData, 150 TI_HANDLE hWhalCtrl, 151 TI_HANDLE hMemMgr, 152 TI_HANDLE hSiteMgr, 153 TI_HANDLE hReport, 154 TI_HANDLE hOs, 155 TI_HANDLE hExcMngr, 156 TI_HANDLE hPowerMgr, 157 TI_HANDLE hEvHandler, 158 TI_HANDLE hSmeSm, 159 TI_HANDLE hAPConn, 160 rsnInitParams_t *pInitParam); 161 162 TI_STATUS rsn_reconfig(TI_HANDLE hRsn); 163 164 TI_STATUS rsn_start(TI_HANDLE hRsn); 165 166 TI_STATUS rsn_stop(TI_HANDLE hRsn, BOOL removeKeys); 167 168 TI_STATUS rsn_eventRecv(TI_HANDLE hRsn, rsn_event_e event, void* pData); 169 170 TI_STATUS rsn_setParam(TI_HANDLE hCtrlData, paramInfo_t *pParam); 171 172 TI_STATUS rsn_getParam(TI_HANDLE hCtrlData, paramInfo_t *pParam); 173 174 TI_STATUS rsn_getParamPartial(TI_HANDLE hRsn, paramInfoPartial_t *pParam); 175 176 TI_STATUS rsn_evalSite(TI_HANDLE hRsn, rsnData_t *pRsnData, bssType_e bssType, macAddress_t bssid, UINT32 *pMetric); 177 178 TI_STATUS rsn_setSite(TI_HANDLE hRsn, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen); 179 180 TI_STATUS rsn_recvEapol(TI_HANDLE hRsn, mem_MSDU_T *pMsdu); 181 182 TI_STATUS rsn_getInfoElement(TI_HANDLE hRsn, UINT8 *pRsnIe, UINT8 *pRsnIeLen); 183 184 #ifdef EXC_MODULE_INCLUDED 185 TI_STATUS rsn_getExcExtendedInfoElement(TI_HANDLE hRsn, UINT8 *pRsnIe, UINT8 *pRsnIeLen); 186 #endif 187 188 TI_STATUS rsn_reportAuthFailure(TI_HANDLE hRsn, authStatus_e authStatus); 189 190 TI_STATUS rsn_reportMicFailure(TI_HANDLE hRsn, UINT8 *pType, UINT32 Length); 191 192 TI_STATUS rsn_resetPMKIDList(TI_HANDLE hRsn); 193 194 TI_STATUS rsn_removedDefKeys(TI_HANDLE hRsn); 195 196 TI_STATUS rsn_startPreAuth(TI_HANDLE hRsn, bssidList4PreAuth_t *pBssidList); 197 198 rsn_siteBanLevel_e rsn_banSite(TI_HANDLE hRsn, macAddress_t siteBssid, rsn_siteBanLevel_e banLevel, UINT32 durationMs); 199 200 BOOL rsn_isSiteBanned(TI_HANDLE hRsn, macAddress_t siteBssid); 201 202 void rsn_MboxFlushFinishCb(TI_HANDLE handle, UINT16 MboxStatus, char *InterrogateParamsBuf); 203 204 205 #endif /* __RSN_API_H__*/ 206