static int suppEapolKeyHandler( tSuppRsnFsm *fsm, tAniPacket *eapolFrame, tAniMacAddr suppMac) { int retVal; int descType; void *keyDesc; tAniEapolRsnKeyDesc *rsnDesc; tAniEapolKeyAvailEventData data; do { retVal = aniEapolParseKey(eapolFrame, &descType, &keyDesc); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) { return retVal; } if (descType == ANI_EAPOL_KEY_DESC_TYPE_RSN_NEW) { rsnDesc = (tAniEapolRsnKeyDesc *) keyDesc; /* * Pass on the event to the RSN FSM irrespective if it is * pairwise or not. */ data.keyDesc = keyDesc; data.eapolFrame = eapolFrame; retVal = suppRsnFsmProcessEvent(fsm, RSN_FSM_EAPOL_FRAME_AVAILABLE, &data); } else { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "Supp: Got unexpected 802.1x RC4 Key message \n" ); retVal = ANI_E_FAILED; break; } }while( 0 ); aniEapolKeyFreeDesc(descType, keyDesc); return retVal; }
static int authEapolKeyHandler( tAuthRsnFsm *fsm, tAniPacket *eapolFrame, tAniMacAddr staMac ) { int retVal; int descType; void *keyDesc; tAniEapolRsnKeyDesc *rsnDesc; tAniEapolKeyAvailEventData data; do { retVal = aniEapolParseKey(eapolFrame, &descType, &keyDesc); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; if ((descType == ANI_EAPOL_KEY_DESC_TYPE_RSN_NEW) || (descType == ANI_EAPOL_KEY_DESC_TYPE_RSN)) { rsnDesc = (tAniEapolRsnKeyDesc *) keyDesc; data.keyDesc = keyDesc; data.eapolFrame = eapolFrame; // Pass on the event to the RSN FSM only if it is for a pairwise key if (rsnDesc->info.unicastFlag) { retVal = authRsnFsmProcessEvent(fsm, RSN_FSM_EAPOL_FRAME_AVAILABLE, &data); } else { //Not worry about GTK stuff } } else { VOS_TRACE( VOS_MODULE_ID_BAP, VOS_TRACE_LEVEL_ERROR, "Got unexpected legacy 802.1x RC4 Key message \n" ); retVal = ANI_E_FAILED; break; } }while( 0 ); aniEapolKeyFreeDesc(descType, keyDesc); return retVal; }