亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zdshared.c

?? GW-US54GXS_Linux_v2.15.0.0_CE zd1211原碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#ifndef __ZDSHARED_C__
#define __ZDSHARED_C__

#include "zd80211.h"
#include "zddebug.h"
#include "zd1205.h"
extern struct net_device *g_dev;

void mkFragment(Signal_t *signal, FrmDesc_t *pfrmDesc, U8 *pEthHdr)
{
   	struct zd1205_private *macp=g_dev->priv;
	Frame_t *mpdu, *curMpdu;
	FrmInfo_t *pfrmInfo;
	BOOLEAN bWep;
	U16 pdusize;
	U8 *pBody;
	U16 len;
	U8 fn;
	U8 *pByte;
	int i;
	Hash_t *pHash;
	MICvar *pTxMicKey = NULL;
	U8 KeyInstalled = 0;
	U8 vapId = 0;
	U8 Num;
	U8 bDataFrm = signal->bDataFrm;
	//U8 bDataFrm = pfrmDesc->bDataFrm;
	U16 HdrLen;

	ZDEBUG("mkFragment");
	pfrmDesc->CalMIC[MIC_LNG]=FALSE;
	pfrmInfo = &signal->frmInfo;
	pfrmInfo->frmDesc = pfrmDesc; //make connection for signal and frmDesc
	//PSDEBUG_V("mkFrag pfrmDesc", (U32)pfrmInfo->frmDesc);
	mpdu = pfrmDesc->mpdu;
	vapId = signal->vapId;
#if 0
	if (mDynKeyMode == DYN_KEY_TKIP || mDynKeyMode == DYN_KEY_AES){
		if (bDataFrm){
			if (isGroup(addr1(mpdu))){
				KeyInstalled = mGkInstalled;

				if (mDynKeyMode == DYN_KEY_TKIP){
					pTxMicKey = &mBcMicKey;
				if (mWpaBcKeyLen != 32) // Not TKIP, don't make MIC
					KeyInstalled = 0;
				}
			}
			else{ //unicast
				pHash = HashSearch(addr1(mpdu));
				if (!pHash){
					FPRINT("HashSearch2 failed !!!");
					zd1205_dump_data("addr1 = ", (U8 *)addr1(mpdu), 6);
					KeyInstalled = 0;
				}
				else {
					if (mDynKeyMode == DYN_KEY_TKIP)
						pTxMicKey = &pHash->TxMicKey;
					KeyInstalled = pHash->pkInstalled;
				}
			}

			if ((KeyInstalled) && (mDynKeyMode == DYN_KEY_TKIP)){
#endif
	// The following section is used for TKIP-MIC append.
	if (bDataFrm)
	{
		if (macp->cardSetting.WPAIeLen) // WPA is supported for now.
		{
			if (isGroup(addr1(mpdu)))
			{// Prepare to send the BC/MC packet.
				KeyInstalled=mGkInstalled;
				if (KeyInstalled) 
				{
					if(mWpaBcKeyLen == 32)
						pTxMicKey = &mBcMicKey;
				}
				else
					FPRINT("MkFrag: No Group key installed\n");
			}
			else
			{// Prepare to send the UC packet.
				pHash = HashSearch(addr1(mpdu));
				KeyInstalled=pHash->pkInstalled;
				if (!pHash){
					FPRINT("HashSearch2 failed !!!");
					zd1205_dump_data("addr1 = ", (U8 *)addr1(mpdu), 6);
				}
				else if(KeyInstalled)
				{
					//if (pHash->keyLength==32)
					if (pHash->encryMode == TKIP)
						pTxMicKey = &pHash->TxMicKey;
				}
				else
				{
					FPRINT("MkFrag: Can't find Pairwise key\n");
				}
			}

			if (pTxMicKey != NULL)
			{ // This section is used for TKIP-MIC append.
    
				U16 len = mpdu->bodyLen;

				// calculate and append MIC to payload before fragmentation
				MICclear(pTxMicKey);


				if(mBssType == AP_BSS || mBssType==INDEPENDENT_BSS)
				   pByte = &mpdu->header[4]; //DA=Addr1
                                else //if (mBssType == INFRASTRUCTURE_BSS)
				   pByte = &mpdu->header[16];//DA=Addr3
				for(i=0; i<6; i++){ //for DA
					MICappendByte(*pByte++, pTxMicKey);
				}

				if(mBssType == INFRASTRUCTURE_BSS || mBssType==INDEPENDENT_BSS)
				   pByte = &mpdu->header[10]; //SA=Addr2
				else //if (mBssType == AP_BSS)
				   pByte = &mpdu->header[16];
				for(i=0; i<6; i++){ //for SA
					MICappendByte(*pByte++, pTxMicKey);
				}

				MICappendByte(0, pTxMicKey);
				MICappendByte(0, pTxMicKey);
				MICappendByte(0, pTxMicKey);
				MICappendByte(0, pTxMicKey);

				pByte = mpdu->body;
				for (i=0; i<len; i++){
					MICappendByte(*pByte++, pTxMicKey);
				}
				MICgetMIC(pfrmDesc->CalMIC, pTxMicKey);	
				pfrmDesc->CalMIC[MIC_LNG]=TRUE;
				//zd1205_dump_data("add sw mic:",(u8*)pfrmDesc->CalMIC, 8);
				mpdu->bodyLen += MIC_LNG;
			}
		}
	}

	bWep = mPrivacyInvoked;
	if ((!bDataFrm) && (!(pfrmDesc->ConfigSet & FORCE_WEP_SET))){
		bWep = FALSE;
	}
	else {
		if (pfrmDesc->ConfigSet & EAPOL_FRAME_SET)
			bWep = FALSE;
	}

	if (KeyInstalled) // After pairwise key installed, even Eapol frame need to be encrypted
        {
		bWep = TRUE;
        }
        else
        {
                if (bDataFrm && !mKeyFormat && bWep)
                {
                    printk(KERN_DEBUG "chkpnt 001\n");
                    bWep = FALSE;
                }
        }

	pfrmInfo->eol = 0;

	pdusize = mFragThreshold;
	if ((!isGroup(addr1(mpdu))) && (mpdu->HdrLen + mpdu->bodyLen + CRC_LNG > pdusize)){ //Need fragment
		pdusize -= mpdu->HdrLen + CRC_LNG;
		pfrmInfo->fTot = (mpdu->bodyLen + (pdusize-1)) / pdusize;
		if (pfrmInfo->fTot == 0)
			pfrmInfo->fTot = 1;
	}
	else{
		pdusize = mpdu->bodyLen;
		pfrmInfo->fTot = 1;
	}

	curMpdu = mpdu;
	pBody = mpdu->body;
	len = mpdu->bodyLen;
	Num = pfrmInfo->fTot;
	HdrLen = mpdu->HdrLen;

	for (fn=0; fn<Num; fn++){
		if (fn){
			curMpdu = &pfrmDesc->mpdu[fn];
			memcpy(&curMpdu->header[0], &mpdu->header[0], HdrLen); //make header
			curMpdu->HdrLen = HdrLen;
			curMpdu->body = pBody;
		}
		curMpdu->header[22] = ((curMpdu->header[22] & 0xF0) | fn);

		if (fn == (Num - 1)){
			curMpdu->bodyLen = len;
			curMpdu->header[1] &= ~MORE_FRAG_BIT;
		}
		else{
			curMpdu->bodyLen = pdusize;
			pBody += pdusize;
			len -= pdusize;
			curMpdu->header[1] |= MORE_FRAG_BIT;
		}

		if (bWep)
			curMpdu->header[1] |= WEP_BIT;
	}
}


BOOLEAN sendMgtFrame(Signal_t *signal, FrmDesc_t *pfrmDesc)
{
//	ZDEBUG("sendMgtFrame");
	pfrmDesc->ConfigSet &= ~INTRA_BSS_SET;
	pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET;
	pfrmDesc->pHash = NULL;
	pdot11Obj->ReleaseBuffer(signal->buf);
	signal->buf = NULL;
	signal->bDataFrm = 0;
	//pfrmDesc->bDataFrm = 0;
	mkFragment(signal, pfrmDesc, NULL);
	return SendPkt(signal, pfrmDesc, TRUE);
}
#if 0
BOOLEAN	getElem(Frame_t	*frame, ElementID  eleID, Element  *elem)
{
	U8 k = 0; 	//offset bytes to first element
	U8 n = 0; 	//num. of element


	U8 pos;		//current position
	U8 len;
	U8 max_len=34;	
	switch (frmType(frame)){
		case ST_PROBE_REQ:
			k = 0;
			n = 4;
			if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES))	
				n++;			
			break;
		
		case ST_ASOC_REQ:

			k = 4;
			n = 4;
			if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES))	
				n++;
			break;
			
		case ST_REASOC_REQ:
			k = 10;
			n = 4;
			if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES))		
				n++;
			break;
			
		case ST_AUTH:
			k = 6;
			n = 1;
			max_len=130;
			break;	
			
		case ST_BEACON:	
		case ST_PROBE_RSP:
			k = 12;
			n = 6;
        
		if (mBssType == INDEPENDENT_BSS)
			n++;
			if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES))		
				n++;	
			n++; //for country info			
			break;	
			
		case ST_ASOC_RSP:
		case ST_REASOC_RSP:
			k = 6;
			n = 2;
       
			if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES))		
				n++;
			break;	
			
		default:
			elem->buf[1] = 0;
			return FALSE;	
	}

	//while(n--){
        while(k < frame->bodyLen)
        {
		pos = frame->body[k]; 
		len = frame->body[k+1] + 2;
		
		if ((pos == eleID) && (len <= max_len))
		{	//match
                        if (eleID == EID_WPA) //Valid WPA IE 
			{
			    if (len > 20)
			    {
				memcpy((U8 *)elem, &frame->body[k], len);
				return TRUE;
			    }
			    else
                                k += len;
			}
			else
			{
			    memcpy((U8 *)elem, &frame->body[k], len);
			    return TRUE;
                        }
		}
		else{
			k += len;
		}
	}

	elem->buf[1] = 0; //set element length to zero
	return FALSE;
}
#endif
BOOLEAN getElem(Frame_t *frame, ElementID  eleID, Element  *elem, U8 eleOrder)
{
    U8 k = 0; 	//offset bytes to first element
    U8 pos;		//current position
    U8 len;
    U8 max_len = 130;
    U8 eleCount = 0;

    switch (frmType(frame)){
        case ST_PROBE_REQ:
            k = 0;
            break;

        case ST_ASOC_REQ:
            k = 4;
            break;

        case ST_REASOC_REQ:
            k = 10;
            break;

        case ST_AUTH:
            k = 6;
            break;	

        case ST_BEACON:	
        case ST_PROBE_RSP:
            k = 12;
            break;	

        case ST_ASOC_RSP:
        case ST_REASOC_RSP:
            k = 6;
            break;	

        default:
            elem->buf[1] = 0;
            return FALSE;	
    }

    //jxiao
    while (k < frame->bodyLen)
    {
        pos=frame->body[k];
        len=frame->body[k+1]+2;
        if ((pos==eleID) && (len <= max_len))
        {
            eleCount ++;
            if(eleCount < eleOrder)
            {
                k+= len;
                continue;
            }
            memcpy((U8 *)elem, &frame->body[k], len);
            return TRUE;
        }
        else
        {  
            k += len;
        }
    }
    elem->buf[1]=0;
    return FALSE;
}

void mkAuthFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 Alg, U16 Seq, 
        U16 Status, U8 *pChalng, U8 vapId)
{
    U8 *body;
    U16 len;
    Frame_t *pf = pfrmDesc->mpdu;

    setFrameType(pf, ST_AUTH);
    pf->body = pfrmDesc->buffer;
    body = pf->body;
    setAddr1(pf, addr1);
    setAddr2(pf, &dot11MacAddress);
    setAddr3(pf, &mBssId);
    pf->HdrLen = MAC_HDR_LNG;		

    body[0] = Alg & 0xff;			//AuthAlg
    body[1] = (Alg & 0xff00) >> 8;
    body[2] = Seq & 0xff;			//AuthSeq

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美影片第一页| 五月天激情综合| 国产精品一区二区在线播放| 欧美色窝79yyyycom| 亚洲欧美另类久久久精品| 国产**成人网毛片九色| 精品久久久久久久人人人人传媒 | 91在线视频免费观看| 国产欧美日本一区二区三区| 国产综合色在线视频区| 欧美va在线播放| 国产在线精品免费| www国产成人| 国产成人综合在线观看| 久久久国产一区二区三区四区小说 | 国产精品久久久久久久久图文区| 国产一区不卡视频| 久久蜜桃av一区精品变态类天堂| 久久av老司机精品网站导航| 精品剧情在线观看| 国产在线精品一区二区夜色| 久久综合久久综合九色| 国产精品自拍在线| 久久精品男人的天堂| 国产高清亚洲一区| 欧美激情一区二区三区全黄 | 99在线热播精品免费| 亚洲三级免费观看| 91黄色激情网站| 亚洲不卡一区二区三区| 91精品国产91久久久久久最新毛片| 日韩电影一区二区三区四区| 91精品国产综合久久婷婷香蕉| 奇米精品一区二区三区四区 | 精品久久一区二区| 懂色av一区二区三区蜜臀| 国产精品久久久久aaaa| 97久久精品人人澡人人爽| 一区二区三区在线免费| 91麻豆国产福利在线观看| 久久99国产精品久久99| 欧美性欧美巨大黑白大战| 五月婷婷色综合| 精品国产乱码久久久久久免费| 国产美女精品人人做人人爽| 国产精品久久久久天堂| 欧美日韩久久一区二区| 久久99精品久久久久久| 尤物在线观看一区| 97精品国产露脸对白| 亚洲va中文字幕| www国产成人| 色婷婷一区二区| 美女mm1313爽爽久久久蜜臀| 久久久久九九视频| 在线免费亚洲电影| 久久精品国产**网站演员| 国产精品网站在线| 欧美视频在线不卡| 国产制服丝袜一区| 一区二区三区四区不卡在线| 欧美一区二区免费观在线| 成人免费毛片aaaaa**| 亚洲高清视频中文字幕| 久久嫩草精品久久久精品一| 亚洲免费视频成人| 六月丁香婷婷久久| 最新日韩在线视频| 欧美一二区视频| av一区二区不卡| 免费观看在线色综合| 国产精品国产a级| 欧美一区二区三区四区高清| 99久久久无码国产精品| 日本中文一区二区三区| 欧美激情综合在线| 欧美日韩免费一区二区三区| 国产suv精品一区二区三区| 亚洲国产另类av| 国产丝袜在线精品| 欧美高清精品3d| 成人黄色小视频| 乱一区二区av| 亚洲成人激情综合网| 国产精品乱码久久久久久| 91麻豆精品国产无毒不卡在线观看| 成人激情校园春色| 国产白丝网站精品污在线入口| 国产精品成人一区二区艾草| 日韩欧美在线123| 91久久线看在观草草青青| 国产精品主播直播| 日韩不卡一区二区三区| 亚洲欧美激情在线| 国产欧美日韩在线看| 91精品国产综合久久久蜜臀粉嫩| 97精品国产97久久久久久久久久久久 | 亚洲天堂福利av| 26uuu亚洲综合色| 欧美日韩高清一区| 色综合久久中文综合久久97| 国产乱人伦偷精品视频不卡 | 日韩国产欧美三级| 亚洲欧美aⅴ...| 欧美激情综合五月色丁香| 精品日韩欧美在线| 欧美高清hd18日本| 欧美午夜不卡在线观看免费| 91网站最新网址| 成人白浆超碰人人人人| 国产精品一区二区在线看| 久久99精品久久久久| 青青国产91久久久久久| 亚洲福利电影网| 亚洲专区一二三| 一区二区三区色| 亚洲欧洲性图库| 国产精品丝袜在线| 国产欧美一二三区| 久久久五月婷婷| 久久夜色精品一区| 精品成人私密视频| 精品国产一区二区三区不卡 | 日韩电影在线看| 日韩在线卡一卡二| 午夜亚洲福利老司机| 亚洲国产精品久久人人爱 | 亚洲视频一区二区在线| 中文欧美字幕免费| 国产午夜精品理论片a级大结局| 欧美电视剧免费观看| 日韩一区二区精品| 日韩亚洲欧美综合| 精品国产乱码久久久久久影片| 日韩免费高清视频| 精品国产第一区二区三区观看体验| 欧美一区二区不卡视频| 日韩一区二区三| 欧美tk—视频vk| 26uuu另类欧美亚洲曰本| 久久亚洲春色中文字幕久久久| 亚洲精品一区二区三区四区高清| 26uuu色噜噜精品一区二区| 久久99久久99| 国产欧美一区二区三区网站| 欧美—级在线免费片| 国产精品看片你懂得| 最新国产成人在线观看| 亚洲免费观看高清完整版在线观看熊| 亚洲欧洲av一区二区三区久久| 日韩电影免费在线观看网站| 亚洲欧美另类图片小说| 亚洲在线视频一区| 亚洲一区二区三区精品在线| 亚洲v精品v日韩v欧美v专区| 日本在线不卡视频| 狠狠狠色丁香婷婷综合久久五月| 国产精品中文字幕一区二区三区| 粉嫩av一区二区三区在线播放| 成人少妇影院yyyy| 91福利资源站| 91精品午夜视频| 国产午夜精品久久久久久免费视 | 国产大陆a不卡| av电影天堂一区二区在线观看| 91久久精品国产91性色tv| 欧美日韩一二三| 日韩一区二区三区av| 欧美激情综合五月色丁香| 亚洲综合在线观看视频| 日本美女一区二区三区视频| 国产麻豆精品在线观看| 99久久99久久免费精品蜜臀| 欧美日韩精品电影| 精品久久五月天| 亚洲柠檬福利资源导航| 视频一区二区国产| 国产精品99久久久| 色屁屁一区二区| 欧美α欧美αv大片| 国产精品福利一区| 日韩专区在线视频| 福利一区在线观看| 欧美日韩一级黄| 久久久99精品免费观看| 亚洲最新视频在线观看| 激情另类小说区图片区视频区| 99国产精品国产精品久久| 91精品国产综合久久婷婷香蕉 | 麻豆精品精品国产自在97香蕉| 国产一区二区不卡| 欧美在线你懂的| xnxx国产精品| 亚洲另类色综合网站| 看片网站欧美日韩| 色欧美88888久久久久久影院| 欧美电影免费观看高清完整版在线| 中文字幕一区二区三区精华液 | 亚洲一区二区免费视频| 国产在线一区二区综合免费视频|