亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
在线欧美日韩国产| 九九精品一区二区| 91麻豆国产香蕉久久精品| 国产精品丝袜黑色高跟| 处破女av一区二区| 国产精品国模大尺度视频| 91偷拍与自偷拍精品| 亚洲摸摸操操av| 欧美午夜影院一区| 美女爽到高潮91| 欧美精品一区二| 不卡的av中国片| 亚洲chinese男男1069| 91精品免费观看| 国产精品资源网站| 亚洲精品免费在线| 欧美一区二区久久久| 国产不卡免费视频| 亚洲男人的天堂av| 欧美变态tickling挠脚心| 国产成人综合自拍| 亚洲综合免费观看高清完整版在线| 欧美三级乱人伦电影| 国产伦精品一区二区三区在线观看| 国产精品国产自产拍高清av| 欧美视频中文一区二区三区在线观看| 青青草原综合久久大伊人精品优势| 久久久久久99久久久精品网站| 99综合电影在线视频| 日韩国产一区二| 国产精品视频一二三区| 欧美精品精品一区| 不卡视频一二三| 久久精品99国产精品| 亚洲欧美国产77777| 欧美成人在线直播| 色一区在线观看| 国产综合久久久久影院| 亚洲最色的网站| 久久久欧美精品sm网站| 欧美精品在线视频| 99re这里只有精品视频首页| 六月丁香婷婷色狠狠久久| 国产精品视频观看| 91精品国产乱| 91高清视频在线| 国产91富婆露脸刺激对白| 日本欧美一区二区在线观看| 亚洲免费色视频| 日本一区二区在线不卡| 欧美不卡一二三| 91精品婷婷国产综合久久| 91丝袜国产在线播放| 国产不卡免费视频| 国产乱码精品一区二区三区av| 日日骚欧美日韩| 一级特黄大欧美久久久| 成人免费在线播放视频| 国产丝袜欧美中文另类| 精品久久久久一区二区国产| 欧美日韩在线播放三区四区| 91色九色蝌蚪| 不卡一二三区首页| 99久久综合精品| av激情成人网| 成人h动漫精品一区二区| 国产精品一区二区在线观看不卡| 日韩电影在线免费看| 五月婷婷色综合| 天天爽夜夜爽夜夜爽精品视频| 亚洲一区免费在线观看| 亚洲精品国产精华液| 亚洲免费电影在线| 亚洲一区在线观看免费观看电影高清| 亚洲男人天堂av网| 亚洲高清免费观看 | 亚洲一区二区中文在线| 色94色欧美sute亚洲线路一ni| 韩日av一区二区| 国产一区二区三区久久久| 日韩在线a电影| 久久99久国产精品黄毛片色诱| 亚洲成a人片在线观看中文| 亚洲一区二区三区精品在线| 亚洲日本成人在线观看| 亚洲女子a中天字幕| 中文字幕一区二区三区色视频| 亚洲丝袜美腿综合| 国产精品国产三级国产aⅴ无密码| 国产精品久久久99| 国产精品久久久久久久久免费相片| 国产精品女同一区二区三区| 国产精品欧美一区喷水| 亚洲桃色在线一区| 亚洲男女毛片无遮挡| 亚洲国产va精品久久久不卡综合| 亚洲精品成人a在线观看| 婷婷综合另类小说色区| 日本午夜一本久久久综合| 卡一卡二国产精品| 国模大尺度一区二区三区| 成人免费福利片| 99热国产精品| 67194成人在线观看| 欧美性淫爽ww久久久久无| 69成人精品免费视频| 在线播放中文字幕一区| www国产成人| 久久久不卡网国产精品二区| 亚洲天堂精品视频| 亚洲黄色小视频| 日韩精品电影在线观看| 日韩av在线发布| 久久精工是国产品牌吗| 风流少妇一区二区| 在线看不卡av| 欧美日韩精品一区二区天天拍小说| 欧美一区二区久久| 国产精品国产三级国产aⅴ原创| 日韩电影在线一区| 国产精品亚洲专一区二区三区 | 亚洲人精品午夜| 免费观看91视频大全| 丰满少妇久久久久久久| 欧美日韩在线免费视频| 精品国产亚洲在线| 亚洲第一主播视频| 国产一区二区三区免费观看| 欧美中文字幕一二三区视频| 日韩写真欧美这视频| 一区二区三区日本| 久久99久久精品| 欧美日韩一区视频| 中文字幕不卡在线观看| 日韩 欧美一区二区三区| 狠狠色丁香婷综合久久| 欧美亚一区二区| 欧美日韩中文字幕精品| 中文字幕一区日韩精品欧美| 激情五月激情综合网| 在线免费观看日本欧美| 亚洲欧洲日韩综合一区二区| 美女视频黄久久| 欧美人狂配大交3d怪物一区| 国产视频不卡一区| 国产在线视频一区二区三区| 在线观看区一区二| 亚洲欧美日韩在线播放| 国产真实乱对白精彩久久| 欧美一区二区三区四区视频| 中文字幕一区三区| 99麻豆久久久国产精品免费优播| 欧美在线高清视频| 国产精品日产欧美久久久久| 国产福利一区在线观看| 日韩欧美一区在线| 日本va欧美va欧美va精品| 99精品国产91久久久久久| 国产精品国产三级国产普通话三级 | 国产精品免费久久| 国产激情视频一区二区在线观看| 日韩精品一区二区三区四区 | 国产精品18久久久久久久久久久久| 欧美亚洲国产bt| 亚洲一二三区不卡| 成人免费看片app下载| 亚洲国产精品av| 男女视频一区二区| 在线成人午夜影院| 蜜臀久久久久久久| 91精品国产麻豆国产自产在线| 免费成人在线视频观看| 欧美挠脚心视频网站| 日本成人在线电影网| 欧美日韩欧美一区二区| 视频一区视频二区中文字幕| 91色综合久久久久婷婷| 亚洲国产精品精华液网站| 欧美日韩你懂的| 日本中文字幕一区二区视频| 精品国产一区二区三区不卡| 久久激情综合网| 欧美国产欧美综合| 成人高清av在线| 亚洲午夜免费视频| 91行情网站电视在线观看高清版| 亚洲国产精品久久艾草纯爱| 3atv一区二区三区| 麻豆精品久久精品色综合| 国产网红主播福利一区二区| 国产98色在线|日韩| 亚洲天堂中文字幕| 欧美日韩一卡二卡三卡| 黑人巨大精品欧美一区| 在线免费亚洲电影| 日韩avvvv在线播放| 国产清纯在线一区二区www| www.日韩在线| 奇米四色…亚洲| 欧美变态tickle挠乳网站|