📄 zdshared.c
字号:
body[0] = Reason & 0xff; //Reason Code body[1] = (Reason & 0xff00) >> 8; pf->bodyLen = 2; } void sendProbeRspFrm(MacAddr_t *addr1, U16 BcnInterval, U16 Cap, Element *pSsid, Element *pSupRates, Element *pDsParms, Element *pExtRates, Element *pWpa, U8 vapId) { Signal_t *signal; FrmDesc_t *pfrmDesc; if ((signal = allocSignal()) == NULL) return; if ((pfrmDesc = allocFdesc()) == NULL) { freeSignal(signal); return; } mkProbeRspFrm(pfrmDesc, addr1, BcnInterval, Cap, pSsid, pSupRates, pDsParms, pExtRates, pWpa, vapId); sendMgtFrame(signal, pfrmDesc); } void mkProbeReqFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, Element *pSsid, Element *pSupRates, Element *pExtRates, Element *pWpa, U8 vapId) { U8 *body; U8 elemLen; U16 len; Frame_t *pf = pfrmDesc->mpdu; setFrameType(pf, ST_PROBE_REQ); pf->body = pfrmDesc->buffer; body = pf->body; setAddr1(pf, addr1); setAddr2(pf, &dot11MacAddress); setAddr3(pf, &dot11BCAddress); pf->HdrLen = MAC_HDR_LNG; len = 0; if (pSsid->buf[1] > 0) { elemLen = pSsid->buf[1]+2; memcpy(&body[len], (U8 *)pSsid, elemLen); //Extended rates len += elemLen; } else { body[0] = pSsid->buf[0]; body[1] = 0; //broadcast SSID len += 2; } elemLen = pSupRates->buf[1]+2; memcpy(&body[len], (U8 *)pSupRates, elemLen); //Extended rates len += elemLen; if ((mMacMode != PURE_A_MODE) && (mMacMode != PURE_B_MODE) && (pExtRates)) { elemLen = pExtRates->buf[1]+2; memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates len += elemLen; } if ((mDynKeyMode == DYN_KEY_TKIP) && (pWpa)) { elemLen = pWpa->buf[1]+2; memcpy(&body[len], (U8 *)pWpa, elemLen); //WPA IE len += elemLen; } pf->bodyLen = len; } void mkRe_AsocReqFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, U16 Cap, U16 LisInterval, MacAddr_t *oldAP, Element *pSsid, Element *pSupRates, Element *pExtRates, Element *pWpa, U8 vapId) { U8 *body; U8 elemLen; U16 len; Frame_t *pf = pfrmDesc->mpdu; setFrameType(pf, subType); pf->body = pfrmDesc->buffer; body = pf->body; setAddr1(pf, addr1); setAddr2(pf, &dot11MacAddress); setAddr3(pf, &mBssId); pf->HdrLen = MAC_HDR_LNG; body[0] = Cap & 0xff; //Cap body[1] = (Cap & 0xff00) >> 8; body[2] = LisInterval & 0xff; //LisInterval body[3] = (LisInterval & 0xff00) >> 8; len = 4; if (subType == ST_REASOC_REQ) { memcpy(&body[4], oldAP, 6); len = 10; } elemLen = pSsid->buf[1]+2; memcpy(&body[len], (U8 *)pSsid, elemLen); //SSID len += elemLen;#ifdef DEBUG_DUMP_ASSOC_REQ zd1205_dump_data("SSID element:", (U8*) &body[len-elemLen], elemLen);#endif elemLen = pSupRates->buf[1]+2; memcpy(&body[len], (U8 *)pSupRates, elemLen); //Support Rates len += elemLen;#ifdef DEBUG_DUMP_ASSOC_REQ zd1205_dump_data("SupportedRate element:", (U8*) &body[len-elemLen], elemLen);#endif if ((mMacMode != PURE_B_MODE) && (mMacMode != PURE_A_MODE)&& (pExtRates)) { elemLen = pExtRates->buf[1]+2; memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates len += elemLen; } // WPA IE if (pWpa->buf[1] != 0) { elemLen = pWpa->buf[1]+2; memcpy(&body[len], (U8 *)pWpa, elemLen); // WPA IE len += elemLen; } pf->bodyLen = len; } BOOLEAN sendPsPollFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1, U16 aid) { FrmInfo_t *pfrmInfo; Frame_t *pf = pfrmDesc->mpdu; setFrameType(pf, ST_PS_POLL); setAid(pf, aid); setAddr1(pf, addr1); setAddr2(pf, &dot11MacAddress); pf->HdrLen = 16; pf->bodyLen = 0; pfrmDesc->ConfigSet |= PS_POLL_SET; pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; pfrmDesc->pHash = NULL; signal->buf = NULL; signal->bDataFrm = 0; //pfrmDesc->bDataFrm = 0; pfrmInfo = &signal->frmInfo; pfrmInfo->frmDesc = pfrmDesc; //make connection for signal and frmDesc return SendPkt(signal, pfrmDesc, TRUE); } BOOLEAN sendNullDataFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1) { Frame_t *pf = pfrmDesc->mpdu; setFrameType(pf, ST_NULL_FRAME); pf->header[1] = TO_DS_BIT; if (mPwrState) { pf->header[1] |= PW_SAVE_BIT; } else pf->header[1] &= ~PW_SAVE_BIT; setAddr1(pf, addr1); setAddr2(pf, &dot11MacAddress); setAddr3(pf, &mBssId); pf->HdrLen = MAC_HDR_LNG; pf->bodyLen = 0; pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; pfrmDesc->pHash = NULL; signal->buf = NULL; signal->bDataFrm = 1; //pfrmDesc->bDataFrm = 0; mkFragment(signal, pfrmDesc, NULL); return SendPkt(signal, pfrmDesc, TRUE); } U8 RateConvert(U8 rate) {#if defined(OFDM) switch (rate) { case 2 : return 0; // 1M case 4 : return 1; // 2M case 11 : return 2; // 5.5M case 22 : return 3; // 11M case 12 : return 4; // 6M case 18 : return 5; // 9M case 24 : return 6; // 12M case 36 : return 7; // 18M case 48 : return 8; // 24M case 72 : return 9; // 36M case 96 : return 0xa; // 48M case 108: return 0xb; // 54M }#else switch (rate) { case 2 : return 0; // 1M case 4 : return 1; // 2M case 11 : return 2; // 5.5M case 22 : return 3; // 11M case 33 : return 4; // 16.5M case 44 : return 5; // 22M case 55 : return 6; // 27.5M#if defined(ECCK_60_5) case 66 : return 7; // 33M case 77 : return 8; // 38.5M case 88 : return 9; // 44M case 99 : return 10; // 49.5M case 110: return 11; // 55M case 121: return 12; // 60.5M#endif }#endif return 3; // 11M }#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -