Home | History | Annotate | Download | only in Connection_Managment
      1 /*
      2  * rsn.h
      3  *
      4  * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  *
     11  *  * Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  *  * Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in
     15  *    the documentation and/or other materials provided with the
     16  *    distribution.
     17  *  * Neither the name Texas Instruments nor the names of its
     18  *    contributors may be used to endorse or promote products derived
     19  *    from this software without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32  */
     33 
     34 /** \file assocSM.h
     35  *  \brief 802.11 Association SM
     36  *
     37  *  \see assocSM.c
     38  */
     39 
     40 
     41 /***************************************************************************/
     42 /*                                                                         */
     43 /*      MODULE: assocSM.h                                                  */
     44 /*    PURPOSE:  802.11 Association SM                                      */
     45 /*                                                                         */
     46 /***************************************************************************/
     47 
     48 #ifndef _RSN_H
     49 #define _RSN_H
     50 
     51 #include "rsnApi.h"
     52 #include "paramOut.h"
     53 #include "siteHash.h"
     54 
     55 /* Constants */
     56 #define RSN_MAX_IDENTITY_LEN            64
     57 #define RSN_MAX_PASSWD_LEN              128
     58 
     59 #define RSN_MAX_NUMBER_OF_EVENTS        6
     60 #define RSN_MAX_NUMBER_OF_BANNED_SITES  16
     61 #define RSN_MIC_FAILURE_REPORT_TIMEOUT     500
     62 #define RSN_MIC_FAILURE_TIMEOUT         (60000 + RSN_MIC_FAILURE_REPORT_TIMEOUT)
     63 #define RSN_MAIN_KEYS_SESSION_TIMEOUT   RSN_AUTH_FAILURE_TIMEOUT
     64 #define RSN_MIC_FAILURE_RE_KEY_TIMEOUT  3000
     65 
     66 /* Enumerations */
     67 typedef enum
     68 {
     69     MIC_FAILURE_FALSE,
     70     MIC_FAILURE_TRUE,
     71     MIC_FAILURE_BLOCK
     72 } rsn_micFailureStatus_e;
     73 
     74 typedef enum
     75 {
     76     GROUP_KEY_UPDATE_FALSE,
     77     GROUP_KEY_UPDATE_TRUE
     78 } rsn_groupKeyUpdate_e;
     79 
     80 typedef enum
     81 {
     82 	PAIRWISE_KEY_UPDATE_FALSE,
     83 	PAIRWISE_KEY_UPDATE_TRUE
     84 } rsn_pairwiseKeyUpdate_e;
     85 
     86 
     87 /* Typedefs */
     88 typedef struct _rsn_t   rsn_t;
     89 
     90 typedef TI_STATUS (*rsn_eventCallback_t)(void* pCtx, void *pData);
     91 typedef TI_STATUS (*rsn_setPaeConfig_t)(rsn_t *pRsn, TRsnPaeConfig *pPaeConfig);
     92 typedef TI_STATUS (*rsn_getNetworkMode_t)(rsn_t *pRsn, ERsnNetworkMode *pNetMode);
     93 
     94 typedef TI_STATUS (*rsn_setKey_t)(rsn_t *pMainSec, TSecurityKeys *pKey);
     95 typedef TI_STATUS (*rsn_removeKey_t)(rsn_t *pMainSec, TSecurityKeys *pKey);
     96 typedef TI_STATUS (*rsn_setDefaultKeyId_t)(rsn_t *pMainSec, TI_UINT8 keyId);
     97 typedef TI_STATUS (*rsn_reportStatus_t)(rsn_t *pRsn, TI_STATUS rsnStatus);
     98 typedef TI_STATUS (*rsn_sendEapol_t)(rsn_t *pRsn, TI_UINT8 *pPacket, TI_UINT32 length);
     99 typedef TI_STATUS (*rsn_getSiteEntry_t)(rsn_t *pRsn, TMacAddr *macAddress, siteEntry_t *curSiteEntry);
    100 
    101 typedef struct
    102 {
    103     rsn_eventCallback_t     eventFunc;
    104     void                    *pCtx;
    105 } rsn_eventStruct_t;
    106 
    107 typedef struct
    108 {
    109     char                 id[RSN_MAX_IDENTITY_LEN];       /**< User identity string */
    110     TI_UINT8             idLength;                       /**< User identity string length */
    111     char                 password[RSN_MAX_PASSWD_LEN];   /**< User password string */
    112     TI_UINT8             pwdLength;                      /**< User password string length */
    113 } authIdentity_t;
    114 
    115 typedef struct
    116 {
    117     ERsnSiteBanLevel        banLevel;
    118     TI_UINT32               banStartedMs;
    119     TI_UINT32               banDurationMs;
    120     TMacAddr                siteBssid;
    121 } rsn_siteBanEntry_t;
    122 
    123 struct _rsn_t
    124 {
    125     rsn_eventStruct_t      events[RSN_MAX_NUMBER_OF_EVENTS];
    126     TRsnPaeConfig          paeConfig;
    127     TI_BOOL                PrivacyOptionImplemented;
    128 
    129     TSecurityKeys          keys[MAX_KEYS_NUM];
    130     TI_BOOL                keys_en [MAX_KEYS_NUM];
    131     TI_UINT8               defaultKeyId;
    132     TI_BOOL                defaultKeysOn;
    133     TI_BOOL                wepDefaultKeys[MAX_KEYS_NUM];
    134     TI_BOOL                wepStaticKey;
    135     rsn_groupKeyUpdate_e   eGroupKeyUpdate;
    136     rsn_pairwiseKeyUpdate_e	ePairwiseKeyUpdate;
    137     OS_802_11_EAP_TYPES    eapType;
    138 
    139     rsn_siteBanEntry_t     bannedSites[RSN_MAX_NUMBER_OF_BANNED_SITES];
    140     TI_UINT8               numOfBannedSites;
    141 
    142     TI_HANDLE              hMicFailureReportWaitTimer;
    143 	TI_HANDLE			   hMicFailureGroupReKeyTimer;
    144 	TI_HANDLE              hMicFailurePairwiseReKeyTimer;
    145     TI_BOOL                bPairwiseMicFailureFilter;
    146 
    147     struct _admCtrl_t      *pAdmCtrl;
    148     struct _mainSec_t      *pMainSecSm;
    149 
    150     struct _keyParser_t    *pKeyParser;
    151 
    152     TI_HANDLE              hTxCtrl;
    153     TI_HANDLE              hRx;
    154     TI_HANDLE              hConn;
    155     TI_HANDLE              hCtrlData;
    156     TI_HANDLE              hTWD;
    157     TI_HANDLE              hSiteMgr;
    158     TI_HANDLE              hReport;
    159     TI_HANDLE              hOs;
    160     TI_HANDLE              hXCCMngr;
    161     TI_HANDLE              hEvHandler;
    162     TI_HANDLE              hSmeSm;
    163     TI_HANDLE              hAPConn;
    164     TI_HANDLE              hMlme;
    165     TI_HANDLE              hPowerMgr;
    166     TI_HANDLE              hTimer;
    167     TI_HANDLE              hCurrBss;
    168 
    169     rsn_setPaeConfig_t     setPaeConfig;
    170     rsn_getNetworkMode_t   getNetworkMode;
    171     rsn_setKey_t           setKey;
    172     rsn_removeKey_t        removeKey;
    173     rsn_setDefaultKeyId_t  setDefaultKeyId;
    174     rsn_reportStatus_t     reportStatus;
    175 
    176     TI_UINT32              rsnStartedTs;
    177     TI_UINT32              rsnCompletedTs;
    178     TI_BOOL                bRsnExternalMode;
    179 };
    180 
    181 /* Structures */
    182 
    183 /* External data definitions */
    184 
    185 /* External functions definitions */
    186 
    187 /* Function prototypes */
    188 
    189 TI_STATUS rsn_reportStatus(rsn_t *pRsn, TI_STATUS status);
    190 
    191 TI_STATUS rsn_setPaeConfig(rsn_t *pRsn, TRsnPaeConfig *pPaeConfig);
    192 
    193 TI_STATUS rsn_getNetworkMode(rsn_t *pRsn, ERsnNetworkMode *pNetMode);
    194 
    195 TI_STATUS rsn_setKey(rsn_t *pMainSec, TSecurityKeys *pKey);
    196 
    197 TI_STATUS rsn_removeKey(rsn_t *pMainSec, TSecurityKeys *pKey);
    198 
    199 TI_STATUS rsn_setDefaultKeyId(rsn_t *pMainSec, TI_UINT8 keyId);
    200 
    201 TI_STATUS rsn_setDefaultKeys(rsn_t *pHandle);
    202 
    203 TI_BOOL rsn_getPortStatus(rsn_t *pRsn);
    204 
    205 #endif
    206 
    207