void limDeletePreAuthNode(tpAniSirGlobal pMac, tSirMacAddr macAddr) { struct tLimPreAuthNode *pPrevNode, *pTempNode; pTempNode = pPrevNode = pMac->lim.pLimPreAuthList; if (pTempNode == NULL) return; if (vos_mem_compare( (tANI_U8 *) macAddr, (tANI_U8 *) &pTempNode->peerMacAddr, sizeof(tSirMacAddr)) ) { // First node to be deleted pMac->lim.pLimPreAuthList = pTempNode->next; limLog(pMac, LOG1, FL(" first node to delete")); limLog(pMac, LOG1, FL(" Release data entry:%p idx %d peer: " MAC_ADDRESS_STR), pTempNode, pTempNode->authNodeIdx, MAC_ADDR_ARRAY(macAddr)); limReleasePreAuthNode(pMac, pTempNode); return; } pTempNode = pTempNode->next; while (pTempNode != NULL) { if (vos_mem_compare( (tANI_U8 *) macAddr, (tANI_U8 *) &pTempNode->peerMacAddr, sizeof(tSirMacAddr)) ) { // Found node to be deleted pPrevNode->next = pTempNode->next; limLog(pMac, LOG1, FL(" subsequent node to delete")); limLog(pMac, LOG1, FL("Release data entry: %p id %d peer: "MAC_ADDRESS_STR), pTempNode, pTempNode->authNodeIdx, MAC_ADDR_ARRAY(macAddr)); limReleasePreAuthNode(pMac, pTempNode); return; } pPrevNode = pTempNode; pTempNode = pTempNode->next; } // Should not be here // Log error limLog(pMac, LOGP, FL("peer not found in pre-auth list, addr= ")); limPrintMacAddr(pMac, macAddr, LOGP); } /*** end limDeletePreAuthNode() ***/
void limDeletePreAuthList(tpAniSirGlobal pMac) { struct tLimPreAuthNode *pCurrNode, *pTempNode; pCurrNode = pTempNode = pMac->lim.pLimPreAuthList; while (pCurrNode != NULL) { pTempNode = pCurrNode->next; PELOG1(limLog(pMac, LOG1, FL("=====> limDeletePreAuthList "));) limReleasePreAuthNode(pMac, pCurrNode); pCurrNode = pTempNode; }
tANI_U8 limDeleteOpenAuthPreAuthNode(tpAniSirGlobal pMac) { struct tLimPreAuthNode *pPrevNode, *pTempNode, *pFoundNode; tANI_U8 authNodeFreed = false; pTempNode = pPrevNode = pMac->lim.pLimPreAuthList; if (pTempNode == NULL) return authNodeFreed; while (pTempNode != NULL) { if (pTempNode->mlmState == eLIM_MLM_AUTHENTICATED_STATE && pTempNode->authType == eSIR_OPEN_SYSTEM && (vos_timer_get_system_ticks() > (LIM_OPENAUTH_TIMEOUT + pTempNode->timestamp) || vos_timer_get_system_ticks() < pTempNode->timestamp)) { // Found node to be deleted authNodeFreed = true; pFoundNode = pTempNode; if (pMac->lim.pLimPreAuthList == pTempNode) { pPrevNode = pMac->lim.pLimPreAuthList = pTempNode = pFoundNode->next; } else { pPrevNode->next = pTempNode->next; pTempNode = pPrevNode->next; } limReleasePreAuthNode(pMac, pFoundNode); } else { pPrevNode = pTempNode; pTempNode = pPrevNode->next; } } return authNodeFreed; }