本文整理汇总了C++中NdisEqualMemory函数的典型用法代码示例。如果您正苦于以下问题:C++ NdisEqualMemory函数的具体用法?C++ NdisEqualMemory怎么用?C++ NdisEqualMemory使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NdisEqualMemory函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: MlmeDelBAReqSanity
/*
==========================================================================
Description:
MLME message sanity check
Return:
TRUE if all parameters are OK, FALSE otherwise
IRQL = DISPATCH_LEVEL
==========================================================================
*/
BOOLEAN MlmeDelBAReqSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen)
{
MLME_DELBA_REQ_STRUCT *pInfo;
pInfo = (MLME_DELBA_REQ_STRUCT *)Msg;
if ((MsgLen != sizeof(MLME_DELBA_REQ_STRUCT)))
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - message lenght not correct.\n"));
return FALSE;
}
if ((pInfo->Wcid >= MAX_LEN_OF_MAC_TABLE))
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - The peer Mac is not associated yet.\n"));
return FALSE;
}
if ((pInfo->TID & 0xf0))
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - The peer TID is incorrect.\n"));
return FALSE;
}
if (NdisEqualMemory(pAd->MacTab.Content[pInfo->Wcid].Addr, pInfo->Addr, MAC_ADDR_LEN) == 0)
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - the peer addr dosen't exist.\n"));
return FALSE;
}
return TRUE;
}
开发者ID:Audioniek,项目名称:Fortis-4G,代码行数:45,代码来源:cmm_sanity.c
示例2: AutoChBssEntrySet
static inline VOID AutoChBssEntrySet(
OUT BSSENTRY *pBss,
IN PUCHAR pBssid,
IN CHAR Ssid[],
IN UCHAR SsidLen,
IN UCHAR Channel,
IN UCHAR ExtChOffset,
IN CHAR Rssi)
{
COPY_MAC_ADDR(pBss->Bssid, pBssid);
if (SsidLen > 0)
{
/*
For hidden SSID AP, it might send beacon with SSID len equal to 0,
Or send beacon /probe response with SSID len matching real SSID length,
but SSID is all zero. such as "00-00-00-00" with length 4.
We have to prevent this case overwrite correct table
*/
if (NdisEqualMemory(Ssid, ZeroSsid, SsidLen) == 0)
{
NdisMoveMemory(pBss->Ssid, Ssid, SsidLen);
pBss->SsidLen = SsidLen;
}
}
pBss->Channel = Channel;
pBss->ExtChOffset = ExtChOffset;
pBss->Rssi = Rssi;
return;
}
开发者ID:vm3vuy,项目名称:my-local-repository,代码行数:31,代码来源:ap_autoChSel.c
示例3: RTMPReplayAttackDetection
BOOLEAN RTMPReplayAttackDetection(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pAddr2,
IN CHAR Rssi0,
IN CHAR Rssi1,
IN CHAR Rssi2)
{
INT i;
for (i = 0; i < pAd->ApCfg.BssidNum; i++)
{
/* Conflict SSID detection */
if (NdisEqualMemory(pAddr2, pAd->ApCfg.MBSSID[i].Bssid, MAC_ADDR_LEN))
{
CHAR RcvdRssi;
RcvdRssi = RTMPMaxRssi(pAd, ConvertToRssi(pAd, Rssi0, RSSI_0), ConvertToRssi(pAd, Rssi1, RSSI_1), ConvertToRssi(pAd, Rssi2, RSSI_2));
pAd->ApCfg.MBSSID[i].RcvdReplayAttackCount ++;
pAd->ApCfg.MBSSID[i].RssiOfRcvdReplayAttack = RcvdRssi;
return TRUE;
}
}
return FALSE;
}
开发者ID:fitsos,项目名称:rt5572,代码行数:25,代码来源:ap_ids.c
示例4: _rtw_memcmp
int _rtw_memcmp(void *dst, void *src, u32 sz)
{
#if defined (PLATFORM_LINUX)|| defined (PLATFORM_FREEBSD)
//under Linux/GNU/GLibc, the return value of memcmp for two same mem. chunk is 0
if (!(memcmp(dst, src, sz)))
return _TRUE;
else
return _FALSE;
#endif
#ifdef PLATFORM_WINDOWS
//under Windows, the return value of NdisEqualMemory for two same mem. chunk is 1
if (NdisEqualMemory (dst, src, sz))
return _TRUE;
else
return _FALSE;
#endif
}
开发者ID:ChangYX,项目名称:Linux3188,代码行数:26,代码来源:osdep_service.c
示例5: WscAddEntryToAclList
VOID WscAddEntryToAclList(
IN PRTMP_ADAPTER pAd,
IN INT ApIdx,
IN PUCHAR pMacAddr)
{
PRT_802_11_ACL pACL = NULL;
INT i;
BOOLEAN bFound = FALSE;
pACL = &pAd->ApCfg.MBSSID[ApIdx].AccessControlList;
if ((pACL->Policy == 0) ||
(pACL->Policy == 2))
return;
if (pACL->Num >= (MAX_NUM_OF_ACL_LIST - 1))
{
DBGPRINT(RT_DEBUG_WARN, ("The AccessControlList is full, and no more entry can join the list!\n"));
return;
}
for (i=0; i<pACL->Num; i++)
{
if (NdisEqualMemory(pACL->Entry[i].Addr, pMacAddr, MAC_ADDR_LEN))
bFound = TRUE;
}
if (bFound == FALSE)
{
NdisMoveMemory(pACL->Entry[i].Addr, pMacAddr, MAC_ADDR_LEN);
pACL->Num++;
}
}
开发者ID:23171580,项目名称:ralink,代码行数:32,代码来源:wsc_v2.c
示例6: P2pPerstTabDelete
UCHAR P2pPerstTabDelete(
IN PRTMP_ADAPTER pAd,
IN UCHAR *pMacList)
{
PRT_P2P_TABLE Tab = &pAd->P2pTable;
UCHAR i;
for (i = 0; i < MAX_P2P_TABLE_SIZE; i++)
{
if (Tab->PerstEntry[i].bValid == TRUE)
{
if (NdisEqualMemory(Tab->PerstEntry[i].Addr, pMacList, 6))
{
RTMPZeroMemory(&Tab->PerstEntry[i], sizeof(RT_P2P_PERSISTENT_ENTRY));
Tab->PerstEntry[i].bValid = FALSE;
if (Tab->PerstNumber > 0)
{
Tab->PerstNumber--;
}
else
DBGPRINT(RT_DEBUG_ERROR, (" P2P - Persistent table count error. \n"));
DBGPRINT(RT_DEBUG_ERROR, (" P2P - Delete a Persistent Entry .Table Number = %d. \n", Tab->PerstNumber));
}
return i;
}
}
return 0xff;
}
开发者ID:Brainiarc7,项目名称:ralink_sdk,代码行数:32,代码来源:p2p_table.c
示例7: RTMPRepeaterReconnectionCheck
VOID RTMPRepeaterReconnectionCheck(
IN PRTMP_ADAPTER pAd)
{
#ifdef APCLI_AUTO_CONNECT_SUPPORT
INT i;
PCHAR pApCliSsid, pApCliCfgSsid;
UCHAR CfgSsidLen;
NDIS_802_11_SSID Ssid;
if (pAd->ApCfg.bMACRepeaterEn &&
pAd->ApCfg.MACRepeaterOuiMode == 2 &&
pAd->ApCfg.ApCliAutoConnectRunning == FALSE)
{
for (i = 0; i < MAX_APCLI_NUM; i++)
{
pApCliSsid = pAd->ApCfg.ApCliTab[i].Ssid;
pApCliCfgSsid = pAd->ApCfg.ApCliTab[i].CfgSsid;
CfgSsidLen = pAd->ApCfg.ApCliTab[i].CfgSsidLen;
if ((pAd->ApCfg.ApCliTab[i].CtrlCurrState < APCLI_CTRL_AUTH ||
!NdisEqualMemory(pApCliSsid, pApCliCfgSsid, CfgSsidLen)) &&
pAd->ApCfg.ApCliTab[i].CfgSsidLen > 0 &&
pAd->Mlme.OneSecPeriodicRound % 23 == 0)
{
DBGPRINT(RT_DEBUG_TRACE, (" %s(): Scan channels for AP (%s)\n",
__FUNCTION__, pApCliCfgSsid));
pAd->ApCfg.ApCliAutoConnectRunning = TRUE;
Ssid.SsidLength = CfgSsidLen;
NdisCopyMemory(Ssid.Ssid, pApCliCfgSsid, CfgSsidLen);
ApSiteSurvey(pAd, &Ssid, SCAN_ACTIVE, FALSE);
}
}
}
#endif /* APCLI_AUTO_CONNECT_SUPPORT */
}
开发者ID:jing-git,项目名称:rt-n56u,代码行数:34,代码来源:ap_repeater.c
示例8: APCls2errAction
/*
==========================================================================
Description:
Some STA/AP
Note:
This action should never trigger AUTH state transition, therefore we
separate it from AUTH state machine, and make it as a standalone service
==========================================================================
*/
VOID APCls2errAction(
IN PRTMP_ADAPTER pAd,
IN ULONG Wcid,
IN PHEADER_802_11 pHeader)
{
HEADER_802_11 Hdr;
PUCHAR pOutBuffer = NULL;
NDIS_STATUS NStatus;
ULONG FrameLen = 0;
USHORT Reason = REASON_CLS2ERR;
MAC_TABLE_ENTRY *pEntry = NULL;
UCHAR idx;
if (Wcid < MAX_LEN_OF_MAC_TABLE)
{
pEntry = &(pAd->MacTab.Content[Wcid]);
}
if (pEntry && IS_ENTRY_CLIENT(pEntry))
{
/*ApLogEvent(pAd, pAddr, EVENT_DISASSOCIATED); */
MacTableDeleteEntry(pAd, pEntry->Aid, pHeader->Addr2);
}
else
{
for (idx = 0; idx < pAd->ApCfg.BssidNum; idx++)
{
PMULTISSID_STRUCT pMbss = &pAd->ApCfg.MBSSID[idx];
if (NdisEqualMemory(pMbss->Bssid, pHeader->Addr1, MAC_ADDR_LEN))
break;
}
if (idx == pAd->ApCfg.BssidNum)
return;
}
/* send out DEAUTH request frame */
NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
if (NStatus != NDIS_STATUS_SUCCESS)
return;
DBGPRINT(RT_DEBUG_TRACE,
("AUTH - Class 2 error, Send DEAUTH frame to "
"%02x:%02x:%02x:%02x:%02x:%02x \n",
PRINT_MAC(pHeader->Addr2)));
MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, pHeader->Addr2,
#ifdef P2P_SUPPORT
pHeader->Addr1,
#endif /* P2P_SUPPORT */
pHeader->Addr1);
MakeOutgoingFrame(pOutBuffer, &FrameLen,
sizeof(HEADER_802_11), &Hdr,
2, &Reason,
END_OF_ARGS);
MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
MlmeFreeMemory(pAd, pOutBuffer);
}
开发者ID:jing-git,项目名称:rt-n56u,代码行数:68,代码来源:ap_auth.c
示例9: APCls2errAction
/*
==========================================================================
Description:
Some STA/AP
Note:
This action should never trigger AUTH state transition, therefore we
separate it from AUTH state machine, and make it as a standalone service
==========================================================================
*/
VOID APCls2errAction(
IN PRTMP_ADAPTER pAd,
IN ULONG Wcid,
IN PHEADER_802_11 pHeader)
{
HEADER_802_11 Hdr;
PUCHAR pOutBuffer = NULL;
NDIS_STATUS NStatus;
ULONG FrameLen = 0;
USHORT Reason = REASON_CLS2ERR;
MAC_TABLE_ENTRY *pEntry = NULL;
if (Wcid < MAX_LEN_OF_MAC_TABLE)
{
pEntry = &(pAd->MacTab.Content[Wcid]);
}
if (pEntry && IS_ENTRY_CLIENT(pEntry))
{
/*ApLogEvent(pAd, pAddr, EVENT_DISASSOCIATED); */
MacTableDeleteEntry(pAd, pEntry->Aid, pHeader->Addr2);
}
else
{
UCHAR bssid[MAC_ADDR_LEN];
NdisMoveMemory(bssid, pHeader->Addr1, MAC_ADDR_LEN);
bssid[5] &= pAd->ApCfg.MacMask;
if (NdisEqualMemory(pAd->CurrentAddress, bssid, MAC_ADDR_LEN) == 0)
return;
}
/* send out DEAUTH request frame */
NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
if (NStatus != NDIS_STATUS_SUCCESS)
return;
DBGPRINT(RT_DEBUG_TRACE,
("AUTH - Class 2 error, Send DEAUTH frame to "
"%02x:%02x:%02x:%02x:%02x:%02x\n",
PRINT_MAC(pHeader->Addr2)));
MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, pHeader->Addr2,
pHeader->Addr1);
MakeOutgoingFrame(pOutBuffer, &FrameLen,
sizeof(HEADER_802_11), &Hdr,
2, &Reason,
END_OF_ARGS);
MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
MlmeFreeMemory(pAd, pOutBuffer);
}
开发者ID:derekcentrico,项目名称:m6.kernel.3.x,代码行数:62,代码来源:ap_auth.c
示例10: RTMPCheckWAIframe
/*
==========================================================================
Description:
Check whether the received frame is WAPI frame.
Arguments:
pAd - pointer to our pAdapter context
pData - the received frame
DataByteCount - the received frame's length
Return:
TRUE - This frame is WAPI frame
FALSE - otherwise
==========================================================================
*/
BOOLEAN RTMPCheckWAIframe(
IN PUCHAR pData,
IN ULONG DataByteCount)
{
if(DataByteCount < (LENGTH_802_1_H + LENGTH_WAI_H))
return FALSE;
// Skip LLC header
if (NdisEqualMemory(SNAP_802_1H, pData, 6))
{
pData += 6;
}
// Skip 2-bytes EAPoL type
if (NdisEqualMemory(WAPI_TYPE, pData, 2))
{
DBGPRINT(RT_DEBUG_TRACE, ("--> Receive a WAI frame \n"));
pData += 2;
}
else
return FALSE;
return TRUE;
}
开发者ID:schidler,项目名称:flyzjhz-rt-n56u,代码行数:39,代码来源:wapi.c
示例11: RTMPCheckWAIframe
/*
==========================================================================
Description:
Check whether the received frame is WAPI frame.
Arguments:
pAd - pointer to our pAdapter context
pData - the received frame
DataByteCount - the received frame's length
Return:
TRUE - This frame is WAPI frame
FALSE - otherwise
==========================================================================
*/
BOOLEAN RTMPCheckWAIframe(
IN PUCHAR pData,
IN ULONG DataByteCount)
{
if(DataByteCount < (LENGTH_802_1_H + LENGTH_WAI_H))
return FALSE;
/* Skip LLC header */
if (NdisEqualMemory(SNAP_802_1H, pData, 6))
{
pData += 6;
}
/* Skip 2-bytes EAPoL type */
if (NdisEqualMemory(WAPI_TYPE, pData, 2))
{
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("--> Receive a WAI frame \n"));
pData += 2;
}
else
return FALSE;
return TRUE;
}
开发者ID:AnyoeDove,项目名称:mtk-sources,代码行数:39,代码来源:wapi.c
示例12: NeighborMPCheck
BOOLEAN NeighborMPCheck(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pMeshId,
IN UINT8 PathSelProtocolId,
IN UINT8 PathSelMetricId)
{
BOOLEAN result = FALSE;
if ((NdisEqualMemory(pMeshId, pAd->MeshTab.MeshId, pAd->MeshTab.MeshIdLen))
&& (PathSelProtocolId == pAd->MeshTab.PathProtocolId)
&& (PathSelMetricId == pAd->MeshTab.PathMetricId))
result = TRUE;
return result;
}
开发者ID:23171580,项目名称:ralink,代码行数:15,代码来源:mesh_ctrl.c
示例13: RTMPRepeaterReconnectionCheck
VOID RTMPRepeaterReconnectionCheck(
IN PRTMP_ADAPTER pAd)
{
#ifdef APCLI_AUTO_CONNECT_SUPPORT
INT i;
PCHAR pApCliSsid, pApCliCfgSsid;
UCHAR CfgSsidLen;
NDIS_802_11_SSID Ssid;
USHORT SiteSurveyPeriod;
if ((pAd->ApCfg.ApCliAutoConnectRunning == FALSE)
#ifdef AP_PARTIAL_SCAN_SUPPORT
&& (pAd->ApCfg.bPartialScanning == FALSE)
#endif /* AP_PARTIAL_SCAN_SUPPORT */
)
{
for (i = 0; i < MAX_APCLI_NUM; i++)
{
if (!APCLI_IF_UP_CHECK(pAd, i) ||
(pAd->ApCfg.ApCliTab[i].Enable == FALSE))
continue;
pApCliSsid = pAd->ApCfg.ApCliTab[i].Ssid;
pApCliCfgSsid = pAd->ApCfg.ApCliTab[i].CfgSsid;
CfgSsidLen = pAd->ApCfg.ApCliTab[i].CfgSsidLen;
SiteSurveyPeriod = pAd->ApCfg.ApCliTab[i].ApCliSiteSurveyPeriod;
if ((pAd->ApCfg.ApCliTab[i].CtrlCurrState < APCLI_CTRL_AUTH ||
!NdisEqualMemory(pApCliSsid, pApCliCfgSsid, CfgSsidLen)) &&
(pAd->ApCfg.ApCliTab[i].CfgSsidLen > 0) &&
(pAd->Mlme.OneSecPeriodicRound % SiteSurveyPeriod == 0))
{
DBGPRINT(RT_DEBUG_TRACE, (" %s(): Scan channels for AP (%s)\n",
__FUNCTION__, pApCliCfgSsid));
pAd->ApCfg.ApCliAutoConnectRunning = TRUE;
#ifdef AP_PARTIAL_SCAN_SUPPORT
pAd->ApCfg.bPartialScanning = TRUE;
#endif /* AP_PARTIAL_SCAN_SUPPORT */
Ssid.SsidLength = CfgSsidLen;
NdisCopyMemory(Ssid.Ssid, pApCliCfgSsid, CfgSsidLen);
ApSiteSurvey(pAd, &Ssid, SCAN_ACTIVE, FALSE);
}
}
}
#endif /* APCLI_AUTO_CONNECT_SUPPORT */
}
开发者ID:andy-padavan,项目名称:rt-n56u,代码行数:46,代码来源:ap_repeater.c
示例14: MlmeDelBAReqSanity
/*
==========================================================================
Description:
MLME message sanity check
Return:
TRUE if all parameters are OK, FALSE otherwise
IRQL = DISPATCH_LEVEL
==========================================================================
*/
BOOLEAN MlmeDelBAReqSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen)
{
MLME_DELBA_REQ_STRUCT *pInfo;
UINT32 MaxWcidNum = MAX_LEN_OF_MAC_TABLE;
pInfo = (MLME_DELBA_REQ_STRUCT *)Msg;
#ifdef MAC_REPEATER_SUPPORT
if (pAd->ApCfg.bMACRepeaterEn)
MaxWcidNum = MAX_MAC_TABLE_SIZE_WITH_REPEATER;
#endif /* MAC_REPEATER_SUPPORT */
if ((MsgLen != sizeof(MLME_DELBA_REQ_STRUCT)))
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - message lenght not correct.\n"));
return FALSE;
}
if ((pInfo->Wcid >= MaxWcidNum))
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - The peer Mac is not associated yet.\n"));
return FALSE;
}
if ((pInfo->TID & 0xf0))
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - The peer TID is incorrect.\n"));
return FALSE;
}
if (NdisEqualMemory(pAd->MacTab.Content[pInfo->Wcid].Addr, pInfo->Addr, MAC_ADDR_LEN) == 0)
{
DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - the peer addr dosen't exist.\n"));
return FALSE;
}
return TRUE;
}
开发者ID:houzhenggang,项目名称:mt7688_mips_ecos,代码行数:51,代码来源:cmm_sanity.c
示例15: P2pPerstTabSearch
UCHAR P2pPerstTabSearch(
IN PRTMP_ADAPTER pAd,
IN PUCHAR Addr,
IN PUCHAR Bssid,
IN PUCHAR InfAddr)
{
PRT_P2P_CONFIG pP2PCtrl = &pAd->P2pCfg;
UCHAR i;
PRT_P2P_TABLE Tab = &pAd->P2pTable;
UCHAR index = P2P_NOT_FOUND;
UCHAR Allff[MAC_ADDR_LEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
UCHAR AllZero[MAC_ADDR_LEN] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
if ((Addr[0] & 0x1) == 0x1)
return index;
if (Addr && NdisEqualMemory(Allff, Addr, MAC_ADDR_LEN))
return index;
if (Addr && NdisEqualMemory(AllZero, Addr, MAC_ADDR_LEN))
return index;
for (i = 0; i < MAX_P2P_TABLE_SIZE; i++)
{
if ((Tab->PerstEntry[i].bValid == TRUE) &&
((Addr && NdisEqualMemory(&Tab->PerstEntry[i].Addr, Addr, MAC_ADDR_LEN)) ||
(Bssid && NdisEqualMemory(&Tab->PerstEntry[i].Addr, Bssid, MAC_ADDR_LEN)) ||
(InfAddr && NdisEqualMemory(&Tab->PerstEntry[i].Addr, InfAddr, MAC_ADDR_LEN)))
)
{
DBGPRINT(RT_DEBUG_TRACE, (" P2P - i = %d. \n", i));
/* If My rule is client, it must be perst profile when I am in staion opmode. */
if((Tab->PerstEntry[i].MyRule == P2P_IS_CLIENT) && (pAd->OpMode == OPMODE_STA))
{
index = i;
}
else if ((Tab->PerstEntry[i].MyRule == P2P_IS_GO)
&& (NdisEqualMemory(Tab->PerstEntry[i].Profile.MacAddr, pP2PCtrl->CurrentAddress, 6)))
{
index = i;
}
}
}
return index;
}
开发者ID:Brainiarc7,项目名称:ralink_sdk,代码行数:46,代码来源:p2p_table.c
示例16: ApCliMlmeAssocReqAction
//.........这里部分代码省略.........
}
/* Append RSN_IE when WPAPSK OR WPA2PSK, */
if (((pApCliEntry->AuthMode == Ndis802_11AuthModeWPAPSK) ||
(pApCliEntry->AuthMode == Ndis802_11AuthModeWPA2PSK))
#ifdef APCLI_WPA_SUPPLICANT_SUPPORT
|| (pApCliEntry->AuthMode >= Ndis802_11AuthModeWPA)
#endif /* APCLI_WPA_SUPPLICANT_SUPPORT */
#ifdef WSC_AP_SUPPORT
&& ((pApCliEntry->WscControl.WscConfMode == WSC_DISABLE) ||
((pApCliEntry->WscControl.WscConfMode != WSC_DISABLE) &&
!(pApCliEntry->WscControl.bWscTrigger
)))
#endif /* WSC_AP_SUPPORT */
)
{
RSNIe = IE_WPA;
if ((pApCliEntry->AuthMode == Ndis802_11AuthModeWPA2PSK)
#ifdef APCLI_WPA_SUPPLICANT_SUPPORT
||(pApCliEntry->AuthMode == Ndis802_11AuthModeWPA2)
#endif/*APCLI_WPA_SUPPLICANT_SUPPORT*/
)
RSNIe = IE_WPA2;
#ifdef APCLI_WPA_SUPPLICANT_SUPPORT
if (pApCliEntry->AuthMode == Ndis802_11AuthModeWPA2)
{
INT idx;
BOOLEAN FoundPMK = FALSE;
/* Search chched PMKID, append it if existed */
for (idx = 0; idx < PMKID_NO; idx++)
{
if (NdisEqualMemory(ApAddr, &pApCliEntry->SavedPMK[idx].BSSID, 6))
{
FoundPMK = TRUE;
break;
}
}
/*
When AuthMode is WPA2-Enterprise and AP reboot or STA lost AP,
AP would not do PMK cache with STA after STA re-connect to AP again.
In this case, driver doesn't need to send PMKID to AP and WpaSupplicant.
*/
if ((pApCliEntry->AuthMode == Ndis802_11AuthModeWPA2) &&
(NdisEqualMemory(pAd->MlmeAux.Bssid, pAd->CommonCfg.LastBssid, MAC_ADDR_LEN)))
{
FoundPMK = FALSE;
}
if (FoundPMK)
{
// Set PMK number
*(PUSHORT) &pApCliEntry->RSN_IE[pApCliEntry->RSNIE_Len] = 1;
NdisMoveMemory(&pApCliEntry->RSN_IE[pApCliEntry->RSNIE_Len + 2], &pApCliEntry->SavedPMK[idx].PMKID, 16);
pApCliEntry->RSNIE_Len += 18;
}
}
#ifdef SIOCSIWGENIE
if ((pApCliEntry->WpaSupplicantUP & WPA_SUPPLICANT_ENABLE) &&
(pApCliEntry->bRSN_IE_FromWpaSupplicant == TRUE))
{
;
}
开发者ID:23171580,项目名称:ralink,代码行数:67,代码来源:apcli_assoc.c
示例17: APPeerAuthConfirmAction
static VOID APPeerAuthConfirmAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem)
{
AUTH_FRAME_INFO auth_info;
PHEADER_802_11 pRcvHdr;
MAC_TABLE_ENTRY *pEntry;
UINT32 apidx;
if (!APPeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, &auth_info))
return;
apidx = get_apidx_by_addr(pAd, auth_info.addr1);
if (apidx >= pAd->ApCfg.BssidNum)
{
DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Bssid not found\n"));
return;
}
if ((pAd->ApCfg.MBSSID[apidx].wdev.if_dev != NULL) &&
!(RTMP_OS_NETDEV_STATE_RUNNING(pAd->ApCfg.MBSSID[apidx].wdev.if_dev)))
{
DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Bssid IF didn't up yet.\n"));
return;
} /* End of if */
if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
{
DBGPRINT(RT_DEBUG_ERROR, ("AUTH - Invalid wcid (%d).\n", Elem->Wcid));
return;
}
pEntry = &pAd->MacTab.Content[Elem->Wcid];
if (pEntry && IS_ENTRY_CLIENT(pEntry))
{
if (!RTMPEqualMemory(auth_info.addr1, pAd->ApCfg.MBSSID[pEntry->func_tb_idx].wdev.bssid, MAC_ADDR_LEN))
{
MacTableDeleteEntry(pAd, pEntry->wcid, pEntry->Addr);
pEntry = NULL;
DBGPRINT(RT_DEBUG_WARN, ("AUTH - Bssid does not match\n"));
}
else
{
if (pEntry->bIAmBadAtheros == TRUE)
{
AsicUpdateProtect(pAd, 8, ALLN_SETPROTECT, FALSE, FALSE);
DBGPRINT(RT_DEBUG_TRACE, ("Atheros Problem. Turn on RTS/CTS!!!\n"));
pEntry->bIAmBadAtheros = FALSE;
}
ASSERT(pEntry->Aid == Elem->Wcid);
#ifdef DOT11_N_SUPPORT
BASessionTearDownALL(pAd, pEntry->wcid);
#endif /* DOT11_N_SUPPORT */
}
}
pRcvHdr = (PHEADER_802_11)(Elem->Msg);
DBGPRINT(RT_DEBUG_TRACE,
("AUTH - MBSS(%d), Rcv AUTH seq#%d, Alg=%d, Status=%d from "
"[wcid=%d]%02x:%02x:%02x:%02x:%02x:%02x\n",
apidx, auth_info.auth_seq, auth_info.auth_alg,
auth_info.auth_status, Elem->Wcid,
PRINT_MAC(auth_info.addr2)));
if (pEntry && MAC_ADDR_EQUAL(auth_info.addr2, pAd->ApMlmeAux.Addr))
{
if ((pRcvHdr->FC.Wep == 1) &&
NdisEqualMemory(auth_info.Chtxt, pAd->ApMlmeAux.Challenge, CIPHER_TEXT_LEN))
{
/* Successful */
APPeerAuthSimpleRspGenAndSend(pAd, pRcvHdr, auth_info.auth_alg, auth_info.auth_seq + 1, MLME_SUCCESS);
pEntry->AuthState = AS_AUTH_KEY;
pEntry->Sst = SST_AUTH;
}
else
{
/* send wireless event - Authentication rejected because of challenge failure */
RTMPSendWirelessEvent(pAd, IW_AUTH_REJECT_CHALLENGE_FAILURE, pEntry->Addr, 0, 0);
/* fail - wep bit is not set or challenge text is not equal */
APPeerAuthSimpleRspGenAndSend(pAd, pRcvHdr, auth_info.auth_alg,
auth_info.auth_seq + 1,
MLME_REJ_CHALLENGE_FAILURE);
MacTableDeleteEntry(pAd, pEntry->wcid, pEntry->Addr);
/*Chtxt[127]='\0'; */
/*pAd->ApMlmeAux.Challenge[127]='\0'; */
DBGPRINT(RT_DEBUG_TRACE, ("%s\n",
((pRcvHdr->FC.Wep == 1) ? "challenge text is not equal" : "wep bit is not set")));
/*DBGPRINT(RT_DEBUG_TRACE, ("Sent Challenge = %s\n",&pAd->ApMlmeAux.Challenge[100])); */
/*DBGPRINT(RT_DEBUG_TRACE, ("Rcv Challenge = %s\n",&Chtxt[100])); */
}
}
else
//.........这里部分代码省略.........
开发者ID:jing-git,项目名称:rt-n56u,代码行数:101,代码来源:ap_auth.c
示例18: CFG80211_ParseBeaconIE
VOID CFG80211_ParseBeaconIE(RTMP_ADAPTER *pAd, BSS_STRUCT *pMbss, struct wifi_dev *wdev, const UCHAR *wpa_ie, const UCHAR *rsn_ie)
{
PEID_STRUCT pEid;
PUCHAR pTmp;
NDIS_802_11_ENCRYPTION_STATUS TmpCipher;
NDIS_802_11_ENCRYPTION_STATUS PairCipher; /* Unicast cipher 1, this one has more secured cipher suite */
NDIS_802_11_ENCRYPTION_STATUS PairCipherAux; /* Unicast cipher 2 if AP announce two unicast cipher suite */
//NDIS_802_11_ENCRYPTION_STATUS GroupCipher; /* Group cipher */
PAKM_SUITE_STRUCT pAKM;
USHORT Count;
BOOLEAN bWPA = FALSE;
BOOLEAN bWPA2 = FALSE;
BOOLEAN bMix = FALSE;
/* Security */
PairCipher = Ndis802_11WEPDisabled;
PairCipherAux = Ndis802_11WEPDisabled;
if ((wpa_ie == NULL) && (rsn_ie == NULL)) //open case
{
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE,("%s:: Open/None case\n", __FUNCTION__));
wdev->AuthMode = Ndis802_11AuthModeOpen;
wdev->WepStatus = Ndis802_11WEPDisabled;
wdev->WpaMixPairCipher = MIX_CIPHER_NOTUSE;
}
if ((wpa_ie != NULL)) //wpapsk/tkipaes case
{
pEid = (PEID_STRUCT)wpa_ie;
pTmp = (PUCHAR)pEid;
if (NdisEqualMemory(pEid->Octet, WPA_OUI, 4))
{
wdev->AuthMode = Ndis802_11AuthModeOpen;
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE,("%s:: WPA case\n", __FUNCTION__));
bWPA = TRUE;
pTmp += 11;
switch (*pTmp)
{
case 1:
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE,("Group Ndis802_11GroupWEP40Enabled\n"));
wdev->GroupKeyWepStatus = Ndis802_11GroupWEP40Enabled;
break;
case 5:
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE,("Group Ndis802_11GroupWEP104Enabled\n"));
wdev->GroupKeyWepStatus = Ndis802_11GroupWEP104Enabled;
break;
case 2:
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE,("Group Ndis802_11TKIPEnable\n"));
wdev->GroupKeyWepStatus = Ndis802_11TKIPEnable;
break;
case 4:
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE,(" Group Ndis802_11AESEnable\n"));
wdev->GroupKeyWepStatus = Ndis802_11AESEnable;
break;
default:
break;
}
/* number of unicast suite*/
pTmp += 1;
/* skip all unicast cipher suites*/
/*Count = *(PUSHORT) pTmp; */
Count = (pTmp[1]<<8) + pTmp[0];
pTmp += sizeof(USHORT);
/* Parsing all unicast cipher suite*/
while (Count > 0)
{
/* Skip OUI*/
pTmp += 3;
TmpCipher = Ndis802_11WEPDisabled;
switch (*pTmp)
{
case 1:
case 5: /* Although WEP is not allowed in WPA related auth mode, we parse it anyway*/
TmpCipher = Ndis802_11WEPEnabled;
break;
case 2:
TmpCipher = Ndis802_11TKIPEnable;
break;
case 4:
TmpCipher = Ndis802_11AESEnable;
break;
default:
break;
}
if (TmpCipher > PairCipher)
{
/* Move the lower cipher suite to PairCipherAux*/
PairCipherAux = PairCipher;
PairCipher = TmpCipher;
}
else
{
PairCipherAux = TmpCipher;
}
pTmp++;
Count--;
}
switch (*pTmp)
//.........这里部分代码省略.........
开发者ID:andy-padavan,项目名称:rt-n56u,代码行数:101,代码来源:cfg80211_tx.c
示例19: APPeerProbeReqAction
/*
==========================================================================
Description:
Process the received ProbeRequest from clients
Parameters:
Elem - msg containing the ProbeReq frame
==========================================================================
*/
VOID APPeerProbeReqAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem)
{
UCHAR Addr2[MAC_ADDR_LEN];
CHAR Ssid[MAX_LEN_OF_SSID];
UCHAR SsidLen;
HEADER_802_11 ProbeRspHdr;
NDIS_STATUS NStatus;
PUCHAR pOutBuffer = NULL;
ULONG FrameLen = 0, TmpLen;
LARGE_INTEGER FakeTimestamp;
UCHAR DsLen = 1;
UCHAR ErpIeLen = 1;
UCHAR apidx = 0, PhyMode, SupRateLen;
UCHAR RSNIe=IE_WPA, RSNIe2=IE_WPA2;
BOOLEAN bRequestRssi=FALSE;
#ifdef WSC_AP_SUPPORT
UCHAR Addr3[MAC_ADDR_LEN];
PFRAME_802_11 pFrame = (PFRAME_802_11)Elem->Msg;
COPY_MAC_ADDR(Addr3, pFrame->Hdr.Addr3);
#endif /* WSC_AP_SUPPORT */
#ifdef WDS_SUPPORT
/* if in bridge mode, no need to reply probe req. */
if (pAd->WdsTab.Mode == WDS_BRIDGE_MODE)
return;
#endif /* WDS_SUPPORT */
if (! PeerProbeReqSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, Ssid, &SsidLen, &bRequestRssi))
return;
for(apidx=0; apidx<pAd->ApCfg.BssidNum; apidx++)
{
RSNIe = IE_WPA;
if ((pAd->ApCfg.MBSSID[apidx].MSSIDDev != NULL) &&
!(RTMP_OS_NETDEV_STATE_RUNNING(pAd->ApCfg.MBSSID[apidx].MSSIDDev)))
{
/* the interface is down, so we can not send probe response */
continue;
}
PhyMode = pAd->ApCfg.MBSSID[apidx].PhyMode;
if (((SsidLen == 0) && (! pAd->ApCfg.MBSSID[apidx].bHideSsid)) ||
#ifdef WSC_AP_SUPPORT
/* buffalo WPS testbed STA send ProbrRequest ssid length = 32 and ssid are not AP , but DA are AP. for WPS test send ProbeResponse */
((SsidLen == 32) && MAC_ADDR_EQUAL(Addr3, pAd->ApCfg.MBSSID[apidx].Bssid) && (pAd->ApCfg.MBSSID[apidx].bHideSsid == 0)) ||
#endif /* WSC_AP_SUPPORT */
((SsidLen == pAd->ApCfg.MBSSID[apidx].SsidLen) && NdisEqualMemory(Ssid, pAd->ApCfg.MBSSID[apidx].Ssid, (ULONG) SsidLen)))
;
else
continue; /* check next BSS */
#ifdef RT_CFG80211_SUPPORT
if (pAd->Cfg80211RegisterProbeReqFrame)
{
UINT32 freq;
MAP_CHANNEL_ID_TO_KHZ(Elem->Channel, freq);
freq /= 1000;
CFG80211OS_RxMgmt(pAd->ApCfg.MBSSID[apidx].MSSIDDev, freq, (PUCHAR)Elem->Msg, Elem->MsgLen);
}
#endif /* RT_CFG80211_SUPPORT */
#ifdef BAND_STEERING
BND_STRG_CHECK_CONNECTION_REQ( pAd,
NULL,
Addr2,
Elem->MsgType,
Elem->Rssi0,
Elem->Rssi1,
Elem->Rssi2,
NULL);
#endif /* BAND_STEERING */
/* allocate and send out ProbeRsp frame */
NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
if (NStatus != NDIS_STATUS_SUCCESS)
return;
MgtMacHeaderInit(pAd, &ProbeRspHdr, SUBTYPE_PROBE_RSP, 0, Addr2,
pAd->ApCfg.MBSSID[apidx].Bssid);
if ((pAd->ApCfg.MBSSID[apidx].AuthMode == Ndis802_11AuthModeWPA) ||
(pAd->ApCfg.MBSSID[apidx].AuthMode == Ndis802_11AuthModeWPAPSK))
RSNIe = IE_WPA;
else if ((pAd->ApCfg.MBSSID[apidx].AuthMode == Ndis802_11AuthModeWPA2) ||
(pAd->ApCfg.MBSSID[apidx].AuthMode == Ndis802_11AuthModeWPA2PSK))
RSNIe = IE_WPA2;
//.........这里部分代码省略.........
开发者ID:jing-git,项目名称:rt-n56u-1,代码行数:101,代码来源:ap_sync.c
示例20: APPeerAuthSanity
//.........这里部分代码省略.........
else
{
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("%s(): fail - wrong Seg# (=%d)\n",
__FUNCTION__, auth_info->auth_seq));
return FALSE;
}
}
else if (auth_info->auth_alg == AUTH_MODE_KEY)
{
if (auth_info->auth_seq == 1 || auth_info->auth_seq == 4)
return TRUE;
else if (auth_info->auth_seq == 2 || auth_info->auth_seq == 3)
{
NdisMoveMemory(auth_info->Chtxt, &Fr->Octet[8], CIPHER_TEXT_LEN);
return TRUE;
}
else
{
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("%s(): fail - wrong Seg# (=%d)\n",
__FUNCTION__, auth_info->auth_seq));
return FALSE;
}
}
#ifdef DOT11R_FT_SUPPORT
else if (auth_info->auth_alg == AUTH_MODE_FT)
{
PEID_STRUCT eid_ptr;
UCHAR *Ptr;
UCHAR WPA2_OUI[3]={0x00,0x0F,0xAC};
PFT_INFO pFtInfo = &auth_info->FtInfo;
NdisZeroMemory(pFtInfo, sizeof(FT_INFO));
Ptr = &Fr->Octet[6];
eid_ptr = (PEID_STRUCT) Ptr;
/* get variable fields from payload and advance the pointer */
while(((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen))
{
switch(eid_ptr->Eid)
{
case IE_FT_MDIE:
FT_FillMdIeInfo(eid_ptr, &pFtInfo->MdIeInfo);
break;
case IE_FT_FTIE:
FT_FillFtIeInfo(eid_ptr, &pFtInfo->FtIeInfo);
break;
case IE_FT_RIC_DATA:
/* record the pointer of first RDIE. */
if (pFtInfo->RicInfo.pRicInfo == NULL)
{
pFtInfo->RicInfo.pRicInfo = &eid_ptr->Eid;
pFtInfo->RicInfo.Len = ((UCHAR*)Fr + MsgLen)
- (UCHAR*)eid_ptr + 1;
}
if ((pFtInfo->RicInfo.RicIEsLen + eid_ptr->Len + 2) < MAX_RICIES_LEN)
{
NdisMoveMemory(&pFtInfo->RicInfo.RicIEs[pFtInfo->RicInfo.RicIEsLen],
&eid_ptr->Eid, eid_ptr->Len + 2);
pFtInfo->RicInfo.RicIEsLen += eid_ptr->Len + 2;
}
break;
case IE_FT_RIC_DESCRIPTOR:
if ((pFtInfo->RicInfo.RicIEsLen + eid_ptr->Len + 2) < MAX_RICIES_LEN)
{
NdisMoveMemory(&pFtInfo->RicInfo.RicIEs[pFtInfo->RicInfo.RicIEsLen],
&eid_ptr->Eid, eid_ptr->Len + 2);
pFtInfo->RicInfo.RicIEsLen += eid_ptr->Len + 2;
}
break;
case IE_RSN:
if (NdisEqualMemory(&eid_ptr->Octet[2], WPA2_OUI, sizeof(WPA2_OUI)))
{
NdisMoveMemory(pFtInfo->RSN_IE, eid_ptr, eid_ptr->Len + 2);
pFtInfo->RSNIE_Len = eid_ptr->Len + 2;
}
break;
default:
break;
}
eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
}
}
#endif /* DOT11R_FT_SUPPORT */
else
{
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("%s(): fail - wrong algorithm (=%d)\n",
__FUNCTION__, auth_info->auth_alg));
return FALSE;
}
return TRUE;
}
开发者ID:andy-padavan,项目名称:rt-n56u,代码行数:101,代码来源:ap_auth.c
注:本文中的NdisEqualMemory函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论