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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sanity.c

?? 臺(tái)灣RALink公司的 rt2570無(wú)線 802.11g 網(wǎng)卡的 驅(qū)動(dòng)的源代碼 ,支持linux2.4以上的 內(nèi)河
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	UCHAR				Sanity;

	// Add for 3 necessary EID field check
	Sanity = 0;

    *ExtendedRateIeExist = FALSE;
    *Erp = 0;
	*LengthVIE = 0;					// Set the length of VIE to init value 0
    
    Fr = (MACFRAME *)Msg;
    
    // get subtype from header
    SubType = (UCHAR)Fr->Hdr.SubType;

    // get Addr2 and BSSID from header
    COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2);
    COPY_MAC_ADDR(Bssid, &Fr->Hdr.Addr3);
    
    Ptr = Fr->Octet;
    
    // get timestamp from payload and advance the pointer
    NdisMoveMemory(Timestamp, Ptr, TIMESTAMP_LEN);
    Ptr += TIMESTAMP_LEN;

    // get beacon interval from payload and advance the pointer
    NdisMoveMemory(BeaconPeriod, Ptr, 2);
    Ptr += 2;

    // get capability info from payload and advance the pointer
    NdisMoveMemory(CapabilityInfo, Ptr, 2);
    Ptr += 2;
    if (CAP_IS_ESS_ON(*CapabilityInfo)) 
    {
        *BssType = BSS_INFRA;
    } 
    else 
    {
        *BssType = BSS_INDEP;
    }

	// Mask out unnecessary capability information
	*CapabilityInfo &= SUPPORTED_CAPABILITY_INFO;
	
    eid_ptr = (PBEACON_EID_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_SSID:
				// Already has one SSID EID in this beacon, ignore the second one
				if (Sanity & 0x1)
					break;				
                if(eid_ptr->Len <= MAX_LEN_OF_SSID)
                {
                    NdisMoveMemory(Ssid, eid_ptr->Octet, eid_ptr->Len);
                    *SsidLen = eid_ptr->Len;
					Sanity |= 0x1;
                }
                else
                {
                    DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_SSID (len=%d)\n",eid_ptr->Len);
                    return FALSE;
                }
                break;

            case IE_SUPP_RATES:
                if(eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES)
                {
            		int		index;
            		UCHAR	rate, i;
            		PUCHAR	eid_rate;

            		i = 0;
            		eid_rate = eid_ptr->Octet;
            		for (index = 0; index < eid_ptr->Len; index++)
            		{
            			rate = eid_rate[index] & 0x7f; // Mask out basic rate set bit
            			if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22) ||
            			    (rate == 12) || (rate == 18) || (rate == 24) || (rate == 36) ||
            			    (rate == 48) || (rate == 72) || (rate == 96) || (rate == 108))
            				Rate[i++] = eid_rate[index];	// Save rate with basic rate set bit if exists
            		}
            		*RateLen = i;
					Sanity |= 0x2;
					// Copy supported rate from desired AP's beacon. We are trying to match
					// AP's supported and extended rate settings.
					NdisMoveMemory(SupRate, eid_ptr->Octet, eid_ptr->Len);
					*SupRateLen = eid_ptr->Len;
					// Check against the supported rates
					RTMPCheckRates(pAd, SupRate, SupRateLen);
                }
                else
                {
                    DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_SUPP_RATES (len=%d)\n",eid_ptr->Len);
                    return FALSE;
                }
                break;

            case IE_FH_PARM:
                DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity(IE_FH_PARM) \n");
                break;

            case IE_DS_PARM:
                if(eid_ptr->Len == 1)
                {
                    *Channel = *eid_ptr->Octet;                    
                    if (ChannelSanity(pAd, *Channel) == 0)
                    {
                        DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (ch=%d)\n",*Channel);
                        return FALSE;
                    }
					Sanity |= 0x4;
                }
                else
                {
                    DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (len=%d)\n",eid_ptr->Len);
                    return FALSE;
                }
                break;

            case IE_CF_PARM:
                if(eid_ptr->Len == 6)
                {
                    *CfExist = TRUE;
                    NdisMoveMemory(CfParm, eid_ptr->Octet, eid_ptr->Len);
                }
                else
                {
                    DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_CF_PARM\n");
                    return FALSE;
                }
                break;

            case IE_IBSS_PARM:
                if(eid_ptr->Len == 2)
                {
                    NdisMoveMemory(AtimWin, eid_ptr->Octet, eid_ptr->Len);
                }
                else
                {
                    DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_IBSS_PARM\n");
                    return FALSE;
                }
                break;

            case IE_TIM:
                if(INFRA_ON(pAd) && SubType == SUBTYPE_BEACON)
                {
                    GetTimBit((PUCHAR)eid_ptr, pAd->PortCfg.Aid, &TimLen, BcastFlag, DtimCount, DtimPeriod, MessageToMe);
                }
                break;

			// New for WPA
			case IE_WPA:
				// Check the OUI version, filter out non-standard usage
				if (RTMPEqualMemory(eid_ptr->Octet, WPA_OUI, 4))
				{
					// Copy to pVIE which will report to microsoft bssid list.
					Ptr = (PUCHAR) pVIE;
					NdisMoveMemory(Ptr + *LengthVIE, &eid_ptr->Eid, eid_ptr->Len + 2);
					*LengthVIE += (eid_ptr->Len + 2);
				}
				DBGPRINT(RT_DEBUG_INFO, "PeerBeaconAndProbeRspSanity - Receive IE_WPA\n");
				break;

			case IE_EXT_SUPP_RATES:
			    // concatenate all extended rates to Rates[] and RateLen
			    *ExtendedRateIeExist = TRUE;
                if (eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES)
                {
            		int		index;
            		UCHAR	rate, i;
            		PUCHAR	eid_rate;

            		i = *RateLen;
            		eid_rate = eid_ptr->Octet;
            		for (index = 0; index < eid_ptr->Len; index++)
            		{
            			rate = eid_rate[index] & 0x7f; // Mask out basic rate set bit
            			if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22) ||
            			    (rate == 12) || (rate == 18) || (rate == 24) || (rate == 36) ||
            			    (rate == 48) || (rate == 72) || (rate == 96) || (rate == 108))
            				Rate[i++] = eid_rate[index];	// Save rate with basic rate set bit if exists

            		    if (i >= MAX_LEN_OF_SUPPORTED_RATES)
            		        break;
            		}
            		*RateLen = i;
					// Copy extended rate from desired AP's beacon. We are trying to match
					// AP's supported and extended rate settings.
					NdisMoveMemory(ExtRate, eid_ptr->Octet, eid_ptr->Len);
					*ExtRateLen = eid_ptr->Len;
					// Check against the supported rates
					RTMPCheckRates(pAd, ExtRate, ExtRateLen);
				}
			    break;

            case IE_ERP:
                if (eid_ptr->Len == 1)
                {
                    *Erp = (UCHAR)eid_ptr->Octet[0];
                }
                break;
                
			// WPA2 & 802.11i RSN
			case IE_RSN:
				// There is no OUI for version anymore, check the group cipher OUI before copying
				if (RTMPEqualMemory(eid_ptr->Octet + 2, RSN_OUI, 3))
				{
					// Copy to pVIE which will report to microsoft bssid list.
					Ptr = (PUCHAR) pVIE;
					NdisMoveMemory(Ptr + *LengthVIE, &eid_ptr->Eid, eid_ptr->Len + 2);
					*LengthVIE += (eid_ptr->Len + 2);
				}
                DBGPRINT(RT_DEBUG_INFO, "IE_RSN length = %d\n", eid_ptr->Len);
                break;
				
            default:
                DBGPRINT(RT_DEBUG_INFO, "PeerBeaconAndProbeRspSanity - unrecognized EID = %d\n", eid_ptr->Eid);
                break;
        }
        
        eid_ptr = (PBEACON_EID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);        
    }

    // in 802.11a band, AP may skip this DS IE in their BEACON
    if ((pAd->PortCfg.Channel > 14) && ((Sanity & 0x04)==0))
    {
        *Channel = pAd->PortCfg.Channel;
        Sanity |= 0x04;
    }
    
    if (Sanity != 0x7)
    {
        DBGPRINT(RT_DEBUG_WARN, "PeerBeaconAndProbeRspSanity - missing field, Sanity=0x%02x\n", Sanity);
        return FALSE;
    }
    else
    {
        return TRUE;
    }

}

/* 
    ==========================================================================
    Description:
        
	IRQL = DISPATCH_LEVEL

    ==========================================================================
 */
BOOLEAN GetTimBit(
    IN CHAR *Ptr, 
    IN USHORT Aid, 
    OUT UCHAR *TimLen, 
    OUT UCHAR *BcastFlag, 
    OUT UCHAR *DtimCount, 
    OUT UCHAR *DtimPeriod,
    OUT UCHAR *MessageToMe) 
{
    UCHAR          BitCntl, N1, N2, MyByte, MyBit;
    CHAR          *IdxPtr;

    IdxPtr = Ptr;
    
    IdxPtr ++;
    *TimLen = *IdxPtr;
    
    // get DTIM Count from TIM element
    IdxPtr ++;
    *DtimCount = *IdxPtr;
    
    // get DTIM Period from TIM element
    IdxPtr++;
    *DtimPeriod = *IdxPtr;
        
    // get Bitmap Control from TIM element
    IdxPtr++;
    BitCntl = *IdxPtr;

    if ((*DtimCount == 0) && (BitCntl & 0x01)) 
        *BcastFlag = TRUE;
    else 
        *BcastFlag = FALSE;
    
    // Parse Partial Virtual Bitmap from TIM element
    N1 = BitCntl & 0xfe;    // N1 is the first bitmap byte#
    N2 = *TimLen - 4 + N1;  // N2 is the last bitmap byte#
    
    if ((Aid < (N1 << 3)) || (Aid >= ((N2 + 1) << 3)))
        *MessageToMe = FALSE;
    else
    {
        MyByte = (Aid >> 3) - N1;                       // my byte position in the bitmap byte-stream
        MyBit = Aid % 16 - ((MyByte & 0x01)? 8:0);

        IdxPtr += (MyByte + 1);

        //if (*IdxPtr)
        //    DBGPRINT(RT_DEBUG_WARN, ("TIM bitmap = 0x%02x\n", *IdxPtr));
            
        if (*IdxPtr & (0x01 << MyBit))
            *MessageToMe = TRUE;
        else 
            *MessageToMe = FALSE;
    }

    return TRUE;
}

/*!
 *  \brief Get legacy bit, right now for 11b it is always 0
 *  \param
 *  \return TRUE if the parameters are OK, FALSE otherwise. Always return TRUE
 *  \pre
 *  \post
 */
BOOLEAN GetLegacy(
    IN CHAR *Ptr, 
    OUT UCHAR *Legacy) 
{
    *Legacy = 0;
    return TRUE;
}

// IRQL = DISPATCH_LEVEL
UCHAR ChannelSanity(
    IN PRT2570ADAPTER pAd, 
    IN UCHAR channel)
{
    UCHAR index;

    for (index = 0; index < pAd->PortCfg.ChannelListNum; index ++)
    {
        if (channel == pAd->PortCfg.ChannelList[index])
            return 1;
    }
    return 0;
}

/*
	========================================================================
	Routine Description:
		Sanity check NetworkType (11b, 11g or 11a)
		
	Arguments:
		pBss - Pointer to BSS table.

	Return Value:
        Ndis802_11DS .......(11b)
        Ndis802_11OFDM24....(11g)
        Ndis802_11OFDM5.....(11a)
        
	IRQL = DISPATCH_LEVEL
	
	========================================================================
*/
NDIS_802_11_NETWORK_TYPE NetworkTypeInUseSanity(
    IN PBSS_ENTRY pBss)
{
	NDIS_802_11_NETWORK_TYPE	NetWorkType = Ndis802_11DS;
	UCHAR						rate, i;

	if (pBss->Channel <= 14)
	{
		for (i = 0; i < pBss->RatesLen; i++)
		{
			rate = pBss->Rates[i] & 0x7f; // Mask out basic rate set bit		
			if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22))
			{
				//
				// basic rate means Ndis802_11DS
				//
				NetWorkType = Ndis802_11DS;
				continue;
			}
			else
			{
				//
				// Otherwise (even rate > 108) means Ndis802_11OFDM24
				//
				NetWorkType = Ndis802_11OFDM24;
				break;
			}	
		}
	}
	else
	{
		NetWorkType = Ndis802_11OFDM5;
	}

	return NetWorkType;
}

/*
	========================================================================
	Routine Description:
		Sanity check pairwise key on pAdapter->PortCfg.AuthMode < Ndis802_11AuthModeWPA
		
	Arguments:
		pAdapter - Pointer to our adapter
		pBuf 	 - Pointer to NDIS_802_11_KEY structure

	Return Value:
		NDIS_STATUS_SUCCESS
		NDIS_STATUS_INVALID_DATA
        
	IRQL = DISPATCH_LEVEL

	Note:
		For OID_802_11_ADD_KEY setting, on old wep stuff also need to verify
		the structure of NIDS_802_11_KEY
	========================================================================
*/
NDIS_STATUS	RTMPWPAWepKeySanity(
	IN	PRT2570ADAPTER	pAdapter,
	IN	PVOID			pBuf)
{
	PNDIS_802_11_KEY	pKey;
	ULONG				KeyIdx;
	NDIS_STATUS			Status = NDIS_STATUS_SUCCESS;
	BOOLEAN 			bTxKey; 		// Set the key as transmit key
	BOOLEAN 			bPairwise;		// Indicate the key is pairwise key

	pKey = (PNDIS_802_11_KEY) pBuf;
	KeyIdx = pKey->KeyIndex & 0x0fffffff;
	// Bit 31 of Add-key, Tx Key
	bTxKey		   = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE;
	// Bit 30 of Add-key PairwiseKey
	bPairwise	   = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE;

	// 1. Check Group / Pairwise Key
	if (bPairwise)	// Pairwise Key
	{
		// 1. Check KeyIdx 
		// it is a shared key
		if (KeyIdx > 4)
			return (-EINVAL);

		// 2. Check bTx, it must be true, otherwise, return NDIS_STATUS_INVALID_DATA
		if (bTxKey == FALSE)
			return (-EINVAL);

		// 3. If BSSID is not all 0xff, return NDIS_STATUS_INVALID_DATA
		if (NdisEqualMemory(pKey->BSSID, BCAST, 6))
			return (-EINVAL);

		// check key length
		if ((pKey->KeyLength != 5) && (pKey->KeyLength != 13))
			return (-EINVAL);
	}
	else
	{
		// Group Key
		// 1. Check BSSID, if not current BSSID or Bcast, return NDIS_STATUS_INVALID_DATA
		if ((!NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) &&
			(!NdisEqualMemory(&pKey->BSSID, &pAdapter->PortCfg.Bssid, 6)))
			return (-EINVAL);
		// 2. Check Key index for supported Group Key
		if (KeyIdx > 4)
			return (-EINVAL);
	}

	pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = (UCHAR) pKey->KeyLength;
	NdisMoveMemory(pAdapter->PortCfg.SharedKey[KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength);
	if (pKey->KeyIndex & 0x80000000)
	{
		// Default key for tx (shared key)
		pAdapter->PortCfg.DefaultKeyId = (UCHAR) KeyIdx;
	}	

	return (Status);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲精品小早川怜子| 精品国产乱码久久久久久老虎 | 国产主播一区二区三区| 亚洲色大成网站www久久九九| 欧美一区二区在线不卡| 97超碰欧美中文字幕| 久久99精品久久久久久动态图 | 亚洲午夜一区二区| 国产丝袜在线精品| 欧美一区二区三区影视| 91色|porny| 成人精品视频一区二区三区尤物| 免费成人av资源网| 亚洲高清三级视频| 亚洲精品一二三区| 中文字幕一区二区三区精华液| 欧美成人福利视频| 欧美精品 国产精品| 色94色欧美sute亚洲线路二| 成人亚洲精品久久久久软件| 美腿丝袜亚洲一区| 亚洲va欧美va国产va天堂影院| 亚洲免费观看高清完整版在线| 国产日韩欧美一区二区三区乱码| 精品乱人伦一区二区三区| 欧美日本一道本在线视频| 在线日韩一区二区| 一本大道综合伊人精品热热 | 欧洲亚洲国产日韩| 91在线观看高清| 成人av动漫网站| 不卡在线观看av| 成人激情小说网站| 懂色av一区二区三区免费看| 国产精品一区二区果冻传媒| 韩国女主播成人在线| 久久福利资源站| 精品一区二区三区在线视频| 久久激五月天综合精品| 日欧美一区二区| 天天综合色天天| 日韩av一区二区三区| 一区二区三区四区中文字幕| 亚洲精品精品亚洲| 亚洲一区电影777| 亚洲国产精品精华液网站| 性欧美大战久久久久久久久| 日韩二区三区四区| 久草热8精品视频在线观看| 久久成人免费网| 伦理电影国产精品| 日韩av在线播放中文字幕| 热久久免费视频| 国内精品久久久久影院薰衣草| 国产精品亚洲а∨天堂免在线| 粉嫩av一区二区三区在线播放| 97精品国产露脸对白| 欧美这里有精品| 欧美一级一区二区| 久久久久久久久伊人| 亚洲图片另类小说| 亚洲伊人伊色伊影伊综合网 | 99精品欧美一区二区三区小说| 色综合久久久久综合99| 欧美日韩国产精选| 精品国产乱码久久久久久老虎 | 欧美日韩亚洲不卡| 欧美va亚洲va在线观看蝴蝶网| 国产亚洲欧洲997久久综合| 最新国产成人在线观看| 午夜精品久久久久| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲欧美综合另类在线卡通| 亚洲成人激情自拍| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产美女在线精品| 一本色道综合亚洲| 日韩午夜av电影| 欧美激情中文不卡| 亚洲va国产天堂va久久en| 国产真实乱子伦精品视频| 91在线观看地址| 日韩精品一区二区在线| 日韩理论片一区二区| 久久精品国产精品亚洲综合| 97久久超碰国产精品| 日韩亚洲欧美综合| 亚洲精品国产品国语在线app| 久久99精品久久久久婷婷| 一本大道久久a久久精品综合 | 亚洲精品欧美在线| 久久国产精品无码网站| 91久久精品国产91性色tv| 精品欧美久久久| 亚洲成人精品一区二区| 成人app网站| 日韩欧美国产午夜精品| 亚洲综合丝袜美腿| 成人免费视频网站在线观看| 欧美高清性hdvideosex| 亚洲色图丝袜美腿| 国产乱码精品一区二区三区av| 欧美伦理影视网| 国产精品久久网站| 国产伦理精品不卡| 51精品秘密在线观看| 亚洲激情自拍视频| 成人午夜视频在线| 精品99久久久久久| 日本不卡在线视频| 欧美日产国产精品| 亚洲自拍都市欧美小说| 97aⅴ精品视频一二三区| 久久久久久久久久久久久女国产乱| 午夜精品久久久久久不卡8050| 色诱亚洲精品久久久久久| 欧美国产日韩一二三区| 久久 天天综合| 欧美一区二区三区婷婷月色| 亚洲午夜免费视频| 在线精品亚洲一区二区不卡| 国产精品不卡视频| 国产成人午夜99999| 亚洲精品一线二线三线无人区| 日韩av电影天堂| 欧美日韩精品一二三区| 亚洲综合免费观看高清完整版 | 精品久久久久久久久久久久久久久久久 | 欧美三级电影网站| 亚洲精品免费在线观看| 91在线精品一区二区| 国产精品传媒入口麻豆| 99在线热播精品免费| 亚洲天堂av老司机| 99精品视频免费在线观看| 亚洲人成7777| 97se亚洲国产综合在线| 日韩美女精品在线| 色天使久久综合网天天| 一区二区三区四区精品在线视频| 色综合色综合色综合| 一区二区三区影院| 欧美三级乱人伦电影| 午夜精品久久久久久| 日韩限制级电影在线观看| 国产一区激情在线| 国产欧美综合在线| av欧美精品.com| 有坂深雪av一区二区精品| 精品久久久久香蕉网| 国产精品自拍一区| 国产精品久久一卡二卡| 91精品福利视频| 午夜精品福利久久久| 欧美成人女星排行榜| 国产精品亚洲人在线观看| 18欧美乱大交hd1984| 欧美视频一区二区三区四区| 日本特黄久久久高潮| 久久九九国产精品| 一本大道久久a久久精二百| 天天综合网 天天综合色| 精品入口麻豆88视频| 成人免费av网站| 亚洲成人动漫av| 亚洲精品在线网站| 99re66热这里只有精品3直播| 亚洲一二三四在线观看| 欧美xxxxxxxx| 99精品国产热久久91蜜凸| 日韩在线一二三区| 久久蜜桃一区二区| 色婷婷国产精品综合在线观看| 亚洲成国产人片在线观看| 久久久不卡影院| 欧美在线综合视频| 国产在线精品免费| 亚洲精品成人天堂一二三| 日韩欧美一二三区| 色哟哟亚洲精品| 黄色小说综合网站| 亚洲激情成人在线| 久久美女艺术照精彩视频福利播放| 不卡视频在线看| 蜜桃传媒麻豆第一区在线观看| 亚洲欧洲一区二区在线播放| 欧美一级黄色大片| 91麻豆成人久久精品二区三区| 蜜桃精品在线观看| 夜夜嗨av一区二区三区 | 亚洲综合久久av| 久久九九99视频| 91精品国产麻豆| 欧美亚洲一区二区三区四区| 国产一区二区三区国产| 五月综合激情网| 亚洲精品视频在线| 久久精品一区蜜桃臀影院| 91精品国产综合久久久蜜臀粉嫩| gogo大胆日本视频一区|