void vMgrDecodeReassocRequest( PWLAN_FR_REASSOCREQ pFrame ) { PWLAN_IE pItem; pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf; // Fixed Fields pFrame->pwCapInfo = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_REASSOCREQ_OFF_CAP_INFO); pFrame->pwListenInterval = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_REASSOCREQ_OFF_LISTEN_INT); pFrame->pAddrCurrAP = (PIEEE_ADDR)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_REASSOCREQ_OFF_CURR_AP); // Information elements pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_REASSOCREQ_OFF_SSID); while(((unsigned char *)pItem) < (pFrame->pBuf + pFrame->len)) { switch (pItem->byElementID){ case WLAN_EID_SSID: if (pFrame->pSSID == NULL) pFrame->pSSID = (PWLAN_IE_SSID)pItem; break; case WLAN_EID_SUPP_RATES: if (pFrame->pSuppRates == NULL) pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; case WLAN_EID_RSN: if (pFrame->pRSN == NULL) { pFrame->pRSN = (PWLAN_IE_RSN)pItem; } break; case WLAN_EID_RSN_WPA: if (pFrame->pRSNWPA == NULL) { if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == true) pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem; } break; case WLAN_EID_EXTSUPP_RATES: if (pFrame->pExtSuppRates == NULL) pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; default: DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in reassocreq decode.\n", pItem->byElementID); break; } pItem = (PWLAN_IE)(((unsigned char *)pItem) + 2 + pItem->len); } return; }
VOID vMgrDecodeAssocRequest( IN PWLAN_FR_ASSOCREQ pFrame ) { PWLAN_IE pItem; pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf; pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_ASSOCREQ_OFF_CAP_INFO); pFrame->pwListenInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_ASSOCREQ_OFF_LISTEN_INT); pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_ASSOCREQ_OFF_SSID); while (((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) { switch (pItem->byElementID){ case WLAN_EID_SSID: if (pFrame->pSSID == NULL) pFrame->pSSID = (PWLAN_IE_SSID)pItem; break; case WLAN_EID_SUPP_RATES: if (pFrame->pSuppRates == NULL) pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; case WLAN_EID_RSN: if (pFrame->pRSN == NULL) { pFrame->pRSN = (PWLAN_IE_RSN)pItem; } break; case WLAN_EID_RSN_WPA: if (pFrame->pRSNWPA == NULL) { if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE) pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem; } break; case WLAN_EID_EXTSUPP_RATES: if (pFrame->pExtSuppRates == NULL) pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; default: DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in assocreq decode.\n", pItem->byElementID); break; } pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len); } return; }
void vMgrDecodeProbeResponse( PWLAN_FR_PROBERESP pFrame ) { PWLAN_IE pItem; pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf; /* */ pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_PROBERESP_OFF_TS); pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_PROBERESP_OFF_BCN_INT); pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_PROBERESP_OFF_CAP_INFO); /* */ pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_PROBERESP_OFF_SSID); while (((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) { switch (pItem->byElementID) { case WLAN_EID_SSID: if (pFrame->pSSID == NULL) pFrame->pSSID = (PWLAN_IE_SSID)pItem; break; case WLAN_EID_SUPP_RATES: if (pFrame->pSuppRates == NULL) pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; case WLAN_EID_FH_PARMS: break; case WLAN_EID_DS_PARMS: if (pFrame->pDSParms == NULL) pFrame->pDSParms = (PWLAN_IE_DS_PARMS)pItem; break; case WLAN_EID_CF_PARMS: if (pFrame->pCFParms == NULL) pFrame->pCFParms = (PWLAN_IE_CF_PARMS)pItem; break; case WLAN_EID_IBSS_PARMS: if (pFrame->pIBSSParms == NULL) pFrame->pIBSSParms = (PWLAN_IE_IBSS_PARMS)pItem; break; case WLAN_EID_RSN: if (pFrame->pRSN == NULL) pFrame->pRSN = (PWLAN_IE_RSN)pItem; break; case WLAN_EID_RSN_WPA: if (pFrame->pRSNWPA == NULL) { if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE) pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem; } break; case WLAN_EID_ERP: if (pFrame->pERP == NULL) pFrame->pERP = (PWLAN_IE_ERP)pItem; break; case WLAN_EID_EXTSUPP_RATES: if (pFrame->pExtSuppRates == NULL) pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; case WLAN_EID_COUNTRY: /* */ if (pFrame->pIE_Country == NULL) pFrame->pIE_Country = (PWLAN_IE_COUNTRY)pItem; break; case WLAN_EID_PWR_CONSTRAINT: /* */ if (pFrame->pIE_PowerConstraint == NULL) pFrame->pIE_PowerConstraint = (PWLAN_IE_PW_CONST)pItem; break; case WLAN_EID_CH_SWITCH: /* */ if (pFrame->pIE_CHSW == NULL) pFrame->pIE_CHSW = (PWLAN_IE_CH_SW)pItem; break; case WLAN_EID_QUIET: /* */ if (pFrame->pIE_Quiet == NULL) pFrame->pIE_Quiet = (PWLAN_IE_QUIET)pItem; break; case WLAN_EID_IBSS_DFS: if (pFrame->pIE_IBSSDFS == NULL) pFrame->pIE_IBSSDFS = (PWLAN_IE_IBSS_DFS)pItem; break; default: DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Bad EID=%dd in proberesp\n", pItem->byElementID); break; } pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len); } }
void vMgrDecodeBeacon( PWLAN_FR_BEACON pFrame ) { PWLAN_IE pItem; pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf; // Fixed Fields pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_BEACON_OFF_TS); pFrame->pwBeaconInterval = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_BEACON_OFF_BCN_INT); pFrame->pwCapInfo = (unsigned short *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) + WLAN_BEACON_OFF_CAPINFO); // Information elements pItem = (PWLAN_IE)((unsigned char *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))) + WLAN_BEACON_OFF_SSID); while( ((unsigned char *)pItem) < (pFrame->pBuf + pFrame->len) ){ switch (pItem->byElementID) { case WLAN_EID_SSID: if (pFrame->pSSID == NULL) pFrame->pSSID = (PWLAN_IE_SSID)pItem; break; case WLAN_EID_SUPP_RATES: if (pFrame->pSuppRates == NULL) pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; case WLAN_EID_FH_PARMS: //pFrame->pFHParms = (PWLAN_IE_FH_PARMS)pItem; break; case WLAN_EID_DS_PARMS: if (pFrame->pDSParms == NULL) pFrame->pDSParms = (PWLAN_IE_DS_PARMS)pItem; break; case WLAN_EID_CF_PARMS: if (pFrame->pCFParms == NULL) pFrame->pCFParms = (PWLAN_IE_CF_PARMS)pItem; break; case WLAN_EID_IBSS_PARMS: if (pFrame->pIBSSParms == NULL) pFrame->pIBSSParms = (PWLAN_IE_IBSS_PARMS)pItem; break; case WLAN_EID_TIM: if (pFrame->pTIM == NULL) pFrame->pTIM = (PWLAN_IE_TIM)pItem; break; case WLAN_EID_RSN: if (pFrame->pRSN == NULL) { pFrame->pRSN = (PWLAN_IE_RSN)pItem; } break; case WLAN_EID_RSN_WPA: if (pFrame->pRSNWPA == NULL) { if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == true) pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem; } break; case WLAN_EID_ERP: if (pFrame->pERP == NULL) pFrame->pERP = (PWLAN_IE_ERP)pItem; break; case WLAN_EID_EXTSUPP_RATES: if (pFrame->pExtSuppRates == NULL) pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem; break; case WLAN_EID_COUNTRY: //7 if (pFrame->pIE_Country == NULL) pFrame->pIE_Country = (PWLAN_IE_COUNTRY)pItem; break; case WLAN_EID_PWR_CONSTRAINT: //32 if (pFrame->pIE_PowerConstraint == NULL) pFrame->pIE_PowerConstraint = (PWLAN_IE_PW_CONST)pItem; break; case WLAN_EID_CH_SWITCH: //37 if (pFrame->pIE_CHSW == NULL) pFrame->pIE_CHSW = (PWLAN_IE_CH_SW)pItem; break; case WLAN_EID_QUIET: //40 if (pFrame->pIE_Quiet == NULL) pFrame->pIE_Quiet = (PWLAN_IE_QUIET)pItem; break; case WLAN_EID_IBSS_DFS: if (pFrame->pIE_IBSSDFS == NULL) pFrame->pIE_IBSSDFS = (PWLAN_IE_IBSS_DFS)pItem; break; default: DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in beacon decode.\n", pItem->byElementID); break; } pItem = (PWLAN_IE)(((unsigned char *)pItem) + 2 + pItem->len); } return; }