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

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

?? dhcp.c

?? wince3.0的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:


HKEY
OpenDHCPKey(
    DhcpInfo * pDhcp
    )
{
	TCHAR	Buffer[MAX_REG_STR];
	HKEY	hKey;
	LONG	hRes;

	_tcscpy (Buffer, COMM_REG_KEY);
	_tcscat (Buffer, pDhcp->Name);
	_tcscat (Buffer, TEXT("\\Parms\\TcpIp"));

	hRes = RegOpenKeyEx (HKEY_LOCAL_MACHINE, Buffer, 0, 0, &hKey);
    if (hRes) {
        return NULL;
    }
    return hKey;
}

STATUS GetDhcpConfig(DhcpInfo *pDhcp) {
	HKEY	hKey;
	BOOL	fStatus;
	uint	fDhcpEnabled;
	int		i;

	DEBUGMSG (ZONE_INIT, (TEXT("+GetDhcpConfig:\r\n")));

	// Open the Registry Key.
	hKey = OpenDHCPKey(pDhcp);
	
	if (hKey) {
		fStatus = GetRegDWORDValue(hKey, TEXT("EnableDHCP"), 
			&fDhcpEnabled);

		if (fStatus && fDhcpEnabled)
			pDhcp->Flags |= DHCP_ENABLED_FL;

		fStatus = GetRegIPAddr(hKey, TEXT("DhcpIPAddress"), &pDhcp->IPAddr, 1); 
		if (fStatus && pDhcp->IPAddr) {
			fStatus = GetRegIPAddr(hKey, TEXT("DhcpSubnetMask"), &pDhcp->SubnetMask, 1);
			if (fStatus && pDhcp->SubnetMask) {
				// Get the DhcpServer
				GetRegIPAddr(hKey, TEXT("DhcpServer"), &pDhcp->DhcpServer, 1);

				// Get the DhcpDftGateway
				GetRegIPAddr(hKey, TEXT("DhcpDefaultGateway"), &pDhcp->Gateway, 1);

				GetRegIPAddr(hKey, TEXT("DhcpDNS"), pDhcp->DNS, 2);
				GetRegIPAddr(hKey, TEXT("DhcpWINS"), pDhcp->WinsServer, 2);

				// Get Lease Info
				GetRegDWORDValue(hKey, TEXT("LeaseObtainedLow"), 
					&pDhcp->LeaseObtained.dwLowDateTime);
				GetRegDWORDValue(hKey, TEXT("LeaseObtainedHigh"), 
					&pDhcp->LeaseObtained.dwHighDateTime);

				GetRegDWORDValue(hKey, TEXT("Lease"), &pDhcp->Lease);
				// Get T1 & T2
				GetRegDWORDValue(hKey, TEXT("T1"), &pDhcp->T1);
				GetRegDWORDValue(hKey, TEXT("T2"), &pDhcp->T2);
			}
		}

		pDhcp->cMaxRetry = DEFAULT_MAX_RETRIES;
		pDhcp->InitDelay = DEFAULT_INIT_DELAY;
		pDhcp->cRetryDialogue = DEFAULT_RETRY_DIALOGUE;
		// Get MaxRetries, InitDelayInterval
		GetRegDWORDValue(hKey, TEXT("DhcpMaxRetry"), &pDhcp->cMaxRetry);
		GetRegDWORDValue(hKey, TEXT("DhcpInitDelayInterval"), &pDhcp->InitDelay);
		GetRegDWORDValue(hKey, TEXT("DhcpRetryDialogue"), &pDhcp->cRetryDialogue);

		i = 0;
		GetRegDWORDValue(hKey, TEXT("DhcpNoMacCompare"), &i);

		if (i)
			pDhcp->Flags |= NO_MAC_COMPARE_FL;
		else
			pDhcp->Flags &= ~NO_MAC_COMPARE_FL;

		GetReqOptions(hKey, pDhcp);

        // Get auto IP config state
        if (GetRegDWORDValue(hKey, TEXT("AutoCfg"), (LPDWORD)&i)) {
            // auto IP config is enabled by default
            if (!i) {
                pDhcp->Flags &= ~AUTO_IP_ENABLED_FL;    // user wants it disabled
            }
        }
        if (pDhcp->Flags & AUTO_IP_ENABLED_FL) {
            GetRegDWORDValue(hKey, TEXT("AutoSeed"), &pDhcp->AutoSeed);
            GetRegIPAddr(hKey, TEXT("AutoIP"), &pDhcp->AutoIPAddr, 1);
            GetRegIPAddr(hKey, TEXT("AutoSubnet"), &pDhcp->AutoSubnet, 1);
            GetRegIPAddr(hKey, TEXT("AutoMask"), &pDhcp->AutoMask, 1);
            GetRegDWORDValue(hKey, TEXT("AutoInterval"), &pDhcp->AutoInterval);
        }


		RegCloseKey(hKey);	

	}	// if (hKey)

	DEBUGMSG (ZONE_INIT, (TEXT("-GetDhcpConfig:\r\n")));
	return DHCP_SUCCESS;

}	// GetDhcpConfig()


STATUS SetDhcpConfig(DhcpInfo *pDhcp) {
	TCHAR	Buffer[MAX_REG_STR];
	HKEY	hKey;
	LONG	hRes;
	BOOL	fStatus;
	int		i;

	DEBUGMSG (ZONE_INIT, (TEXT("+SetDhcpConfig:\r\n")));

	// Open the Registry Key.
	hKey = OpenDHCPKey(pDhcp);
	
	if (hKey) {
		SetRegDWORDValue(hKey, TEXT("EnableDHCP"), (pDhcp->Flags & DHCP_ENABLED_FL) ? 1 : 0);

		AddrToString(pDhcp->IPAddr, Buffer);
		fStatus = SetRegSZValue(hKey, TEXT("DhcpIPAddress"), Buffer);
		DEBUGMSG (ZONE_WARN, (TEXT("\tSetDhcpConfig: set IPAddr %X\r\n"),
			pDhcp->IPAddr));
		if (fStatus) {
			AddrToString(pDhcp->SubnetMask, Buffer);
			SetRegSZValue(hKey, TEXT("DhcpSubnetMask"), Buffer);

			AddrToString(pDhcp->DhcpServer, Buffer);
			SetRegSZValue(hKey, TEXT("DhcpServer"), Buffer);

			AddrToString(pDhcp->Gateway, Buffer);
			SetRegSZValue(hKey, TEXT("DhcpDefaultGateway"), Buffer);

			Buffer[0] = Buffer[1] = TEXT('\0');
			i = 0;
			if (pDhcp->DNS[0]) {
				AddrToString(pDhcp->DNS[0], Buffer);
				i = _tcslen(Buffer) + 1;
				if (pDhcp->DNS[1]) {
					AddrToString(pDhcp->DNS[1], &Buffer[i]);
					i += _tcslen(&Buffer[i]) + 1;
				}
				Buffer[i] = TEXT('\0');
			}
			// we want: dns1\0dns2\0\0
			SetRegMultiSZValue(hKey, TEXT("DhcpDNS"), Buffer);

			Buffer[0] = Buffer[1] = TEXT('\0');
			i = 0;
			if (pDhcp->WinsServer[0]) {
				AddrToString(pDhcp->WinsServer[0], Buffer);
				i = _tcslen(Buffer) + 1;
				if (pDhcp->WinsServer[1]) {
					AddrToString(pDhcp->WinsServer[1], &Buffer[i]);
					i += _tcslen(&Buffer[i]) + 1;
				}
				Buffer[i] = TEXT('\0');
			}
			// we want: wins1\0wins2\0\0
			SetRegMultiSZValue(hKey, TEXT("DhcpWINS"), Buffer);

			// Set Lease Times
			SetRegDWORDValue(hKey, TEXT("LeaseObtainedLow"), 
				pDhcp->LeaseObtained.dwLowDateTime);
			SetRegDWORDValue(hKey, TEXT("LeaseObtainedHigh"), 
				pDhcp->LeaseObtained.dwHighDateTime);
			DEBUGMSG (ZONE_WARN, 
				(TEXT("\tSetDhcpConfig: set LeaseObtained %x %x\r\n"),
				pDhcp->LeaseObtained.dwHighDateTime, 
				pDhcp->LeaseObtained.dwLowDateTime));

			SetRegDWORDValue(hKey, TEXT("Lease"), pDhcp->Lease);
			// Set T1 & T2
			SetRegDWORDValue(hKey, TEXT("T1"), pDhcp->T1);
			SetRegDWORDValue(hKey, TEXT("T2"), pDhcp->T2);
			DEBUGMSG (ZONE_WARN, 
				(TEXT("\tSetDhcpConfig: T1 %x T2 %x Lease %x\r\n"),
				pDhcp->T1, pDhcp->T2, pDhcp->Lease));

			// Store the list of params requested from server so we can tell
			// if it has changed after a reboot.
			SetRegBinaryValue(hKey,TEXT("PrevReqOptions"),pDhcp->ReqOptions,pDhcp->ReqOptions[0]+1);
		}

        // Save auto IP config state
        if (pDhcp->Flags & AUTO_IP_ENABLED_FL) {
            SetRegDWORDValue(hKey, TEXT("AutoSeed"), pDhcp->AutoSeed);
            AddrToString(pDhcp->AutoIPAddr, Buffer);
            SetRegSZValue(hKey, TEXT("AutoIP"), Buffer);
            AddrToString(pDhcp->AutoSubnet, Buffer);
            SetRegSZValue(hKey, TEXT("AutoSubnet"), Buffer);
            AddrToString(pDhcp->AutoMask, Buffer);
            SetRegSZValue(hKey, TEXT("AutoMask"), Buffer);
            SetRegDWORDValue(hKey, TEXT("AutoInterval"), pDhcp->AutoInterval);
        } else {
            SetRegDWORDValue(hKey, TEXT("AutoCfg"), 0);
        }


		RegCloseKey (hKey);	
	}	// if (hKey)

	if (pDhcp->aDomainName[0]) {
		_tcscpy (Buffer, COMM_REG_KEY);
		_tcscat (Buffer, TEXT("TcpIp\\Parms"));
		hRes = RegOpenKeyEx (HKEY_LOCAL_MACHINE, Buffer, 0, 0, &hKey);
		
		if (ERROR_SUCCESS == hRes) {
			if (-1 != mbstowcs(Buffer, &pDhcp->aDomainName[1], 
				pDhcp->aDomainName[0])) {
				Buffer[pDhcp->aDomainName[0]]= (L'\0');
				SetRegSZValue(hKey, TEXT("DNSDomain"), Buffer);
			}
			RegCloseKey(hKey);
		}
	}
	DEBUGMSG (ZONE_INIT, (TEXT("-SetDhcpConfig:\r\n")));
	return DHCP_SUCCESS;
}	// SetDhcpConfig()


// assumes caller owns pDhcp->Lock
void TakeNetDown(DhcpInfo *pDhcp, BOOL fDiscardIPAddr, BOOL fRemoveAfdInterface) {
	HKEY		hKey;

	RETAILMSG(1, (TEXT("*TakeNetDown: pDhcp 0x%x IP %X!\r\n"),
		pDhcp, pDhcp->IPAddr));

    pDhcp->ARPResult = ERROR_UNEXP_NET_ERR;
    SetEvent(pDhcp->ARPEvent);  // wake up any waiting threads

	(*pfnIPSetNTEAddr)((ushort)pDhcp->NteContext, NULL, 0, 0, 0);

	if (fRemoveAfdInterface) {
        CallAfd(AddInterface)(pDhcp->Name, pDhcp->Nte, pDhcp->NteContext, 
                              ADD_INTF_DELETE_FL, pDhcp->IPAddr, pDhcp->SubnetMask, 0, NULL, 0, NULL);    
    }

    if (fDiscardIPAddr) {
        pDhcp->IPAddr = 0;
        // Delete the IPAddr.
        hKey = OpenDHCPKey(pDhcp);
        if (hKey) {
            RegDeleteValue(hKey, TEXT("DhcpIPAddress"));
            RegCloseKey (hKey);	
        }
	}

}	// TakeNetDown()


// assumes caller has v_GlobalListLock
void PutInWorkerQ(DhcpInfo *pDhcp) {
	HANDLE		hWorkerThrd;
	DWORD		ThreadId;

	pDhcp->pNext = v_pWaitingList;
	v_pWaitingList = pDhcp;
	// if there is already a worker thread we're done
	if (! v_fWorkerThread) {
		v_fWorkerThread = TRUE;
		hWorkerThrd = CreateThread(NULL, 0, 
			(LPTHREAD_START_ROUTINE)DhcpWorkerThread, NULL, 0, 
			&ThreadId);
		if (hWorkerThrd) {
			CloseHandle(hWorkerThrd);
		} else {
			RETAILMSG(1, 
				(TEXT("!RequestDHCPAddr: can't create worker thread\r\n")));
		}
	}
}	// PutInWorkerQ

//
// Close the Dhcp interface's socket if open and set it to NULL
// (Afd doesn't check the socket parameter, so we have to)
//
void
CloseDhcpSocket(
    DhcpInfo *pDhcp
    )
{
    if (pDhcp->Socket) {
        CallSock(Close) (pDhcp->Socket);
        pDhcp->Socket = NULL;
    }
}

// called when our lease has expired!
void ProcessExpire(DhcpInfo *pDhcp) {
	DhcpInfo	**ppDhcp;

	DEBUGMSG(ZONE_TIMER|ZONE_WARN, 
		(TEXT("+ProcessExpire: pDhcp 0x%X\r\n"), pDhcp));
	
	if (*(ppDhcp = _FindDhcp(pDhcp, NULL))) {
		RETAILMSG(1, (TEXT("!Lease Time Expired, bringing net down %x\r\n"),
			pDhcp));
		
		*ppDhcp = pDhcp->pNext;

		// take the interface down!
		pDhcp->SFlags |= DHCPSTATE_LEASE_EXPIRE;
		TakeNetDown(pDhcp, TRUE, TRUE);
		ClearDHCPNTE(pDhcp);		
		CloseDhcpSocket(pDhcp);
		PutInWorkerQ(pDhcp);

		CTEFreeLock(&v_GlobalListLock, 0);
		CTEFreeLock(&pDhcp->Lock, 0);
	} else
		CTEFreeLock(&v_GlobalListLock, 0);

	DEBUGMSG(ZONE_TIMER, (TEXT("-ProcessExpire: pDhcp 0x%X\r\n"),
			pDhcp));
}	// ProcessExpire()


void CalcMidwayTime(DhcpInfo *pDhcp, int End, CTEEventRtn Rtn1, 
					CTEEventRtn Rtn2) {
	FILETIME	CurTime, EndTime, TempTime;

	// calc Expire time, if > 1 min restart T1 timer
	EndTime.dwLowDateTime = End;
	EndTime.dwHighDateTime = 0;
	mul64_32_64(&EndTime, TEN_M, &EndTime);
	add64_64_64(&pDhcp->LeaseObtained, &EndTime, &EndTime);

	GetCurrentFT(&CurTime);
	if (CompareFileTime(&CurTime, &EndTime) >= 0) {
		DEBUGMSG(ZONE_TIMER, 
			(TEXT("*CalcMidwayTime: late already! start 2nd timer %x %x\r\n"),
			EndTime.dwHighDateTime, EndTime.dwLowDateTime));
		// start next timer
		CTEStartFTimer(&pDhcp->Timer, EndTime, 
			(CTEEventRtn)Rtn2, pDhcp);
	} else {
		sub64_64_64(&EndTime, &CurTime, &TempTime);
		
		DEBUGMSG(ZONE_TIMER, 
			(TEXT("*CalcMidwayTime: CurTime %x %x Endtime %x %x dt %x %x\r\n"),
			CurTime.dwHighDateTime, CurTime.dwLowDateTime,
			EndTime.dwHighDateTime, EndTime.dwLowDateTime,
			TempTime.dwHighDateTime, TempTime.dwLowDateTime));

		// if more than 1 min remain, restart timer
		// otherwise start the next timer
		if (TempTime.dwHighDateTime > 0 ||
			(TempTime.dwHighDateTime == 0 &&
			TempTime.dwLowDateTime >= (60 * TEN_M))) {

			div64_32_64(&TempTime, 2, &TempTime);
			add64_64_64(&CurTime, &TempTime, &TempTime);

			DEBUGMSG(ZONE_TIMER, 
				(TEXT("*CalcMidwayTime: starting timer for %x %x\r\n"),
				TempTime.dwHighDateTime, TempTime.dwLowDateTime));

			// restart the timer
			CTEStartFTimer(&pDhcp->Timer, TempTime, 
				(CTEEventRtn)Rtn1, pDhcp);
		} else {
			DEBUGMSG(ZONE_TIMER, 
				(TEXT("*CalcMidwayTime: starting 2nd timer for %x %x\r\n"),
				EndTime.dwHighDateTime, EndTime.dwLowDateTime));
			// start next timer
			CTEStartFTimer(&pDhcp->Timer, EndTime, 
				(CTEEventRtn)Rtn2, pDhcp);
		}
	}

}	// CalcMidwayTime()


void CalcT1Time(DhcpInfo *pDhcp) {
	FILETIME Ft;

	Ft.dwLowDateTime = pDhcp->T1;
	Ft.dwHighDateTime = 0;
	mul64_32_64(&Ft, TEN_M, &Ft);
	add64_64_64(&pDhcp->LeaseObtained, &Ft, &Ft);
	// Start T1 timer
	DEBUGMSG(ZONE_TIMER, (TEXT("*CalcT1Time: init LO %x %x , T1 %x %x\r\n"),
		pDhcp->LeaseObtained.dwHighDateTime, pDhcp->LeaseObtained.dwLowDateTime,
		Ft.dwHighDateTime, Ft.dwLowDateTime));

	CTEStartFTimer(&pDhcp->Timer, Ft, (CTEEventRtn)ProcessT1, pDhcp);	

}	// CalcT1Time()


STATUS	DhcpInitSock(DhcpInfo *pInfo, int SrcIP) {
	SOCKADDR_IN	SockAddr;
	STATUS		Status = DHCP_SUCCESS;
	LPSOCK_INFO	Sock;

	DEBUGMSG(ZONE_INIT, (TEXT("+DhcpInitSock: pInfo 0x%X\r\n"),
			pInfo));

	memset ((char *)&SockAddr, 0, sizeof(SockAddr));
	SockAddr.sin_family = AF_INET;
	SockAddr.sin_port = net_short(DHCP_CLIENT_PORT);
	SockAddr.sin_addr.S_un.S_addr = SrcIP;	// net_long(0);

	// set flag that this is an internal socket
	Sock = (LPSOCK_INFO) CallAfd(Socket) 
					(0x80000000 | AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if (Sock) {
		int i = 1;

				if (SOCKET_ERROR == CallSock(SetOption)(Sock, SOL_SOCKET, 
				SO_REUSEADDR, &i, sizeof(i), NULL) ||
			SOCKET_ERROR == CallSock(SetOption)(Sock, SOL_SOCKET, 
				SO_BROADCAST, &i, sizeof(i), NULL) ||
			SOCKET_ERROR == CallSock(Bind)(Sock, (SOCKADDR *)&SockAddr, 
			sizeof(SockAddr), (struct CRITICAL_SECTION *)0xffffffff))
					{
			Status = GetLastError();
			DEBUGMSG(ZONE_WARN | ZONE_ERROR, 
				(TEXT("\t!DhcpInitSock: failure %d\r\n"),
				Status));

			CallSock(Close) (Sock);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线观看 | 日本韩国欧美在线| 国产真实乱子伦精品视频| 天堂久久久久va久久久久| 亚洲国产一区在线观看| 亚洲综合久久av| 亚洲成人av福利| 午夜欧美电影在线观看| 午夜精品福利一区二区三区av| 亚洲国产视频一区| 亚洲欧美日韩中文播放| 亚洲高清中文字幕| 麻豆91在线播放| 国产精品一区二区在线播放| 国产91精品露脸国语对白| 成人h动漫精品一区二区| 91小视频在线免费看| 欧美亚男人的天堂| 日韩三级精品电影久久久 | 综合分类小说区另类春色亚洲小说欧美| 久久精品一区蜜桃臀影院| 国产精品久久午夜| 亚洲成人动漫在线观看| 国产一区二区三区香蕉| 91网站视频在线观看| 欧美日韩国产精品成人| 久久久久久亚洲综合影院红桃 | 欧美一卡二卡三卡| 国产亚洲欧洲一区高清在线观看| 久久久九九九九| 一区二区三区四区视频精品免费| 久久精品国产精品青草| 91在线观看美女| 91麻豆精品国产91| 国产精品美女久久久久久久 | 国产酒店精品激情| 色天天综合久久久久综合片| 日韩精品一区二区三区视频播放| 中文字幕一区二区视频| 久久99精品视频| 欧美性大战久久久久久久蜜臀 | 在线看国产日韩| 久久久91精品国产一区二区三区| 亚洲国产一区在线观看| 成人一级黄色片| 日韩一区二区电影网| 夜夜夜精品看看| 成人在线综合网| 亚洲精品在线观| 日韩中文字幕av电影| 色综合天天综合狠狠| 国产日本一区二区| 男人的j进女人的j一区| 欧美三区在线观看| 亚洲天堂a在线| 北岛玲一区二区三区四区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美日韩中文国产| 亚洲三级在线免费观看| 国产成人自拍高清视频在线免费播放| 欧美日韩一级视频| 一区二区三区久久| 色老综合老女人久久久| 国产精品国产三级国产aⅴ无密码| 国内精品久久久久影院一蜜桃| 欧美一级生活片| 日本午夜精品一区二区三区电影| 欧美日韩国产高清一区| 亚洲午夜久久久久久久久久久| 播五月开心婷婷综合| 国产精品久久久久久一区二区三区| 国产精品一区三区| 精品成人一区二区三区四区| 国内久久精品视频| 久久综合色婷婷| 国产精品资源网| 国产精品久久久久一区二区三区| 狠狠色丁香久久婷婷综| 久久久www成人免费毛片麻豆 | 欧美三日本三级三级在线播放| 亚洲精品国产成人久久av盗摄| 色美美综合视频| 五月天激情小说综合| 777精品伊人久久久久大香线蕉| 日韩国产欧美在线观看| 日韩欧美激情四射| 丁香天五香天堂综合| 亚洲蜜桃精久久久久久久| 欧美中文字幕不卡| 奇米影视一区二区三区| 日韩欧美中文字幕精品| 国内精品自线一区二区三区视频| 久久久www成人免费无遮挡大片| 成人午夜又粗又硬又大| 亚洲影院久久精品| 91精品国产福利在线观看| 久久丁香综合五月国产三级网站| 国产欧美视频一区二区三区| 99re在线视频这里只有精品| 婷婷久久综合九色综合伊人色| 欧美成人欧美edvon| 97精品国产97久久久久久久久久久久| 亚洲六月丁香色婷婷综合久久 | 成人一区二区视频| 亚洲视频你懂的| 日韩欧美久久久| 日本久久电影网| 极品尤物av久久免费看| 国产精品第13页| 欧美一级二级三级乱码| 成人av网站大全| 蜜臀av一区二区在线观看| 中文字幕一区二区视频| 精品久久久久香蕉网| 在线欧美日韩国产| 国产成人午夜精品影院观看视频| 亚洲韩国精品一区| 国产精品乱人伦中文| 日韩亚洲欧美综合| 在线一区二区三区四区五区| 国产乱码精品一品二品| 日韩成人午夜精品| 一区二区在线观看视频在线观看| 欧美xxxxxxxx| 欧美精品免费视频| 在线观看亚洲精品| av一区二区三区在线| 国产精品影音先锋| 精品在线亚洲视频| 日韩精品视频网| 亚洲人成影院在线观看| 久久精品一级爱片| 欧美大黄免费观看| 欧美日韩www| 欧美在线视频全部完| 波多野洁衣一区| 成人一区二区在线观看| 国产乱妇无码大片在线观看| 久久国产婷婷国产香蕉| 亚洲国产精品尤物yw在线观看| 亚洲日本青草视频在线怡红院 | 国产肉丝袜一区二区| 欧美不卡一区二区| 日韩欧美卡一卡二| 欧美成人video| 精品国产一区a| 欧美tickle裸体挠脚心vk| 日韩一区二区三区视频在线观看 | 丰满白嫩尤物一区二区| 国内精品伊人久久久久影院对白| 开心九九激情九九欧美日韩精美视频电影| 亚洲专区一二三| 一区二区高清免费观看影视大全| 日韩美女视频一区| 亚洲精品乱码久久久久| 亚洲大片免费看| 天堂影院一区二区| 亚洲一级在线观看| 日韩成人免费电影| 久久99久久精品欧美| 国产麻豆精品在线| av中文字幕不卡| 欧美在线观看一区二区| 91精品国产乱| 久久青草欧美一区二区三区| 国产精品三级电影| 亚洲综合另类小说| 奇米精品一区二区三区在线观看| 免费成人美女在线观看.| 国产一区二区按摩在线观看| 白白色 亚洲乱淫| 精品视频免费看| 精品国产三级电影在线观看| 国产欧美视频一区二区三区| 亚洲男女毛片无遮挡| 全部av―极品视觉盛宴亚洲| 国产麻豆视频一区| 色婷婷综合久久久| 日韩视频免费观看高清完整版| 久久一夜天堂av一区二区三区| 国产精品国产成人国产三级 | 国产伦精品一区二区三区视频青涩| 成人免费看片app下载| 在线观看91视频| 久久久www免费人成精品| 亚洲黄网站在线观看| 极品美女销魂一区二区三区免费| 国产一区美女在线| 国产91清纯白嫩初高中在线观看 | 国产亚洲自拍一区| 亚洲精品国产精品乱码不99 | 欧美另类高清zo欧美| 日本一区二区视频在线| 日韩黄色免费电影| 成人国产视频在线观看| 日韩视频在线观看一区二区| 中文字幕一区二区三区在线观看 | 亚洲电影第三页| 成人毛片视频在线观看| 91精品国产综合久久福利|