164064216a8433360745f69edddce19a606659163The Android Open Source Project/** \file admCtrlWpa.h
264064216a8433360745f69edddce19a606659163The Android Open Source Project *  \brief Admission control API
364064216a8433360745f69edddce19a606659163The Android Open Source Project *
464064216a8433360745f69edddce19a606659163The Android Open Source Project *  \see admCtrl.c
564064216a8433360745f69edddce19a606659163The Android Open Source Project */
664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
764064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
864064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
964064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved.                                                  |**
1164064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without    |**
1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions    |**
1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met:                                                              |**
1564064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
1664064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions of source code must retain the above copyright     |**
1764064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer.      |**
1864064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions in binary form must reproduce the above copyright  |**
1964064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer in    |**
2064064216a8433360745f69edddce19a606659163The Android Open Source Project**|    the documentation and/or other materials provided with the         |**
2164064216a8433360745f69edddce19a606659163The Android Open Source Project**|    distribution.                                                      |**
2264064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Neither the name Texas Instruments nor the names of its            |**
2364064216a8433360745f69edddce19a606659163The Android Open Source Project**|    contributors may be used to endorse or promote products derived    |**
2464064216a8433360745f69edddce19a606659163The Android Open Source Project**|    from this software without specific prior written permission.      |**
2564064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
3364064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
3464064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
3564064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
3664064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
3764064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
3864064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
3964064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
4064064216a8433360745f69edddce19a606659163The Android Open Source Project
4164064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
4264064216a8433360745f69edddce19a606659163The Android Open Source Project *                                                                          *
4364064216a8433360745f69edddce19a606659163The Android Open Source Project *   MODULE:  Admission Control	    		                                *
4464064216a8433360745f69edddce19a606659163The Android Open Source Project *   PURPOSE: Admission Control Module API                              	*
4564064216a8433360745f69edddce19a606659163The Android Open Source Project *                                                                          *
4664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
4764064216a8433360745f69edddce19a606659163The Android Open Source Project
4864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef _ADM_CTRL_WPA_H_
4964064216a8433360745f69edddce19a606659163The Android Open Source Project#define _ADM_CTRL_WPA_H_
5064064216a8433360745f69edddce19a606659163The Android Open Source Project
5164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Constants */
5264064216a8433360745f69edddce19a606659163The Android Open Source Project
5364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Enumerations */
5464064216a8433360745f69edddce19a606659163The Android Open Source Project
5564064216a8433360745f69edddce19a606659163The Android Open Source Project/* Typedefs */
5664064216a8433360745f69edddce19a606659163The Android Open Source Project
5764064216a8433360745f69edddce19a606659163The Android Open Source Project
5864064216a8433360745f69edddce19a606659163The Android Open Source Project/* RSN admission control prototypes */
5964064216a8433360745f69edddce19a606659163The Android Open Source Project
6064064216a8433360745f69edddce19a606659163The Android Open Source Project
6164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Structures */
6264064216a8433360745f69edddce19a606659163The Android Open Source Project
6364064216a8433360745f69edddce19a606659163The Android Open Source Project
6464064216a8433360745f69edddce19a606659163The Android Open Source Project
6564064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_WPA_UNICAST_SUITES      (RSN_CIPHER_CKIP+1)
6664064216a8433360745f69edddce19a606659163The Android Open Source Project
6764064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_OUI_MAX_VERSION           0x1
6864064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_OUI_DEF_TYPE              0x1
6964064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_OUI_MAX_TYPE			  0x2
7064064216a8433360745f69edddce19a606659163The Android Open Source Project
7164064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_GROUP_4_UNICAST_CAPABILITY_MASK  	0x0002
7264064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_REPLAY_COUNTERS_CAPABILITY_MASK 	0x000c
7364064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_REPLAY_GROUP4UNI_CAPABILITY_SHIFT 	1
7464064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_REPLAY_COUNTERS_CAPABILITY_SHIFT 	2
7564064216a8433360745f69edddce19a606659163The Android Open Source Project
7664064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_IE_MIN_LENGTH 				 	6
7764064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_IE_GROUP_SUITE_LENGTH 		 	10
7864064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_IE_MIN_PAIRWISE_SUITE_LENGTH 	16
7964064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_IE_MIN_DEFAULT_LENGTH 			24
8064064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA_IE_MIN_KEY_MNG_SUITE_LENGTH(pairwiseCnt) (18+4*pairwiseCnt)
8164064216a8433360745f69edddce19a606659163The Android Open Source Project
8264064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
8364064216a8433360745f69edddce19a606659163The Android Open Source Project{
8464064216a8433360745f69edddce19a606659163The Android Open Source Project	WPA_IE_KEY_MNG_NONE				= 0,		/**< no key management available */
8564064216a8433360745f69edddce19a606659163The Android Open Source Project	WPA_IE_KEY_MNG_801_1X			= 1,		/**< "802.1X" key management - WPA default*/
8664064216a8433360745f69edddce19a606659163The Android Open Source Project	WPA_IE_KEY_MNG_PSK_801_1X		= 2,		/**< "WPA PSK */
8764064216a8433360745f69edddce19a606659163The Android Open Source Project	WPA_IE_KEY_MNG_CCKM			    = 3,		/**< WPA CCKM */
8864064216a8433360745f69edddce19a606659163The Android Open Source Project	WPA_IE_KEY_MNG_NA			    = 4,		/**< NA */
8964064216a8433360745f69edddce19a606659163The Android Open Source Project} keyMngSuite_e;
9064064216a8433360745f69edddce19a606659163The Android Open Source Project
9164064216a8433360745f69edddce19a606659163The Android Open Source Project
9264064216a8433360745f69edddce19a606659163The Android Open Source Project#define	MAX_WPA_KEY_MNG_SUITES   	(WPA_IE_KEY_MNG_CCKM+1)
9364064216a8433360745f69edddce19a606659163The Android Open Source Project
9464064216a8433360745f69edddce19a606659163The Android Open Source Project
9564064216a8433360745f69edddce19a606659163The Android Open Source ProjectPACKED_STRUCT( wpaIePacket_t,
9664064216a8433360745f69edddce19a606659163The Android Open Source Project
9764064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8  				elementid;	   /* WPA information element id is 0xDD */
9864064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8  				length;
9964064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT8  				oui[DOT11_OUI_LEN];
10064064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8  				ouiType;
10164064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT16 				version;
10264064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT8 				groupSuite[DOT11_OUI_LEN+1];
10364064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT16 				pairwiseSuiteCnt;
10464064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8				pairwiseSuite[DOT11_OUI_LEN+1];
10564064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT16 				authKeyMngSuiteCnt;
10664064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8				authKeyMngSuite[DOT11_OUI_LEN+1];
10764064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT16				capabilities;
10864064216a8433360745f69edddce19a606659163The Android Open Source Project);
10964064216a8433360745f69edddce19a606659163The Android Open Source Project
11064064216a8433360745f69edddce19a606659163The Android Open Source Project
11164064216a8433360745f69edddce19a606659163The Android Open Source Project/* WPA capabilities structure */
11264064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct
11364064216a8433360745f69edddce19a606659163The Android Open Source Project{
11464064216a8433360745f69edddce19a606659163The Android Open Source Project
11564064216a8433360745f69edddce19a606659163The Android Open Source Project    cipherSuite_e 		broadcastSuite;
11664064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT16 				unicastSuiteCnt;
11764064216a8433360745f69edddce19a606659163The Android Open Source Project	cipherSuite_e		unicastSuite[MAX_WPA_UNICAST_SUITES];
11864064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT16 				KeyMngSuiteCnt;
11964064216a8433360745f69edddce19a606659163The Android Open Source Project	rsn_keyMngSuite_e	KeyMngSuite[MAX_WPA_KEY_MNG_SUITES];
12064064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT8				bcastForUnicatst;
12164064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8				replayCounters;
12264064216a8433360745f69edddce19a606659163The Android Open Source Project    BOOL excKp ;
12364064216a8433360745f69edddce19a606659163The Android Open Source Project    BOOL excMic ;
12464064216a8433360745f69edddce19a606659163The Android Open Source Project} wpaIeData_t;
12564064216a8433360745f69edddce19a606659163The Android Open Source Project
12664064216a8433360745f69edddce19a606659163The Android Open Source Project
12764064216a8433360745f69edddce19a606659163The Android Open Source Project/* External data definitions */
12864064216a8433360745f69edddce19a606659163The Android Open Source Project
12964064216a8433360745f69edddce19a606659163The Android Open Source Project/* External functions definitions */
13064064216a8433360745f69edddce19a606659163The Android Open Source Project
13164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Function prototypes */
13264064216a8433360745f69edddce19a606659163The Android Open Source Project
13364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa_getInfoElement(admCtrl_t *pAdmCtrl, UINT8 *pIe, UINT8 *pLength);
13464064216a8433360745f69edddce19a606659163The Android Open Source Project
13564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen);
13664064216a8433360745f69edddce19a606659163The Android Open Source Project
13764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa_evalSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, bssType_e bssType, UINT32 *pEvaluation);
13864064216a8433360745f69edddce19a606659163The Android Open Source Project
13964064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /*  _ADM_CTRL_WPA_H_*/
14064064216a8433360745f69edddce19a606659163The Android Open Source Project
141