• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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