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

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

?? dhcpc.c

?? Linux下DHCP Client的實現。
?? C
?? 第 1 頁 / 共 5 頁
字號:

	if (ZComIOControl(SIOCDELRT, &RouteEntry) < 0)
	{
		// Ignore the error, perhaps no gateway exist.
	}

	// add new gateway
	pSockAddrIn->sin_family = AF_INET;
	pSockAddrIn->sin_addr.s_addr = ulGateway;
	RouteEntry.rt_flags = RTF_UP | RTF_GATEWAY;
	RouteEntry.rt_dev = (char*)cszIfName;

	return ZComIOControl(SIOCADDRT, &RouteEntry)>=0;
}

bool_t DHCPClientSystemDNSet(ipaddr *ip, int Len)
{
	struct in_addr addr;
	char buff[30] = {0};
	static const char cszDNSFormat[] = "nameserver %s\n";
	FILE *fp = fopen("/etc/resolv.conf", "w");
	char *szDNS = buff;
	int i;

	if (NULL == fp)
	{
		return FALSE;
	}
	for (i=0; i<Len; i++)
	{
		if (IsValidIP(ip[i]))
		{
			memset(buff, 0, sizeof(buff));
			addr.s_addr = ip[i];
			strcpy(szDNS, (char *)inet_ntoa(addr));
			fprintf(fp, cszDNSFormat, szDNS);
		}
	}
	fclose(fp);
	return TRUE;

}

void DHCPClientUpdateIfStatus(DHCPWAITEvent_t *pEvent)
{
	bool_t fIfIsUp = FALSE;
	int iIfIndex = -1;
	fIfIsUp = IsInterfaceUp(pEvent->pPointToBlock->cszIfName);
	if (FALSE == fIfIsUp) 
	{
		pEvent->pPointToBlock->uiIfIndex = -1;
		return;
	}
	iIfIndex = getIndexByIfName(pEvent->pPointToBlock->cszIfName);
	if (-1 == pEvent->pPointToBlock->uiIfIndex)
	{
		//it is first active
		pEvent->iIfIndex = iIfIndex;
		pEvent->pPointToBlock->uiIfIndex = iIfIndex;
		if (TRUE == pEvent->pPointToBlock->bDHCPClientEnabled)
		{
			//first start then send DHCP Discover to request IP Setting
			pEvent->pPointToBlock->CurrentState = DHCP_CLIENT_INITIALIZED;
			TimerStart(pEvent,
				DEFAULT_DISCOVER_TIMEOUT, 
				WAIT_DISCOVER);
			pEvent->pPointToBlock->CurrentState = DHCP_CLIENT_SELECT;
			g_pDHCPClientCurrent = pEvent->pPointToBlock;
			DHCPClientSendDHCPDiscover(pEvent->pPointToBlock);
		}
	}	

	return;
}
#define MAXDNS_NUM		DHCPC_MAX_INTERFACE_NUM*DHCP_CLIENT_MAX_DNS_NUM
static bool_t fDnsIsInArray(IPAddr_t *ulIPArray, IPAddr_t ulIP)
{
	int i = 0;
	
	for (i=0; i<MAXDNS_NUM; i++)
	{
		if (*(ulIPArray+i)==ulIP)
		{
			return TRUE;
		}
	}
	return FALSE;
}

bool_t DHCPClientDefaultConfig(
		const char *cszIfName, 
		struct DhcpcIPSetting_t	 *ConfigStruct
	)
{
	void IntotoStaticNameServerRemoveAll(void);
	bool_t IntotoStaticNameServerAdd(in_addr_t ulIP);
	bool_t i=FALSE, j=FALSE, l=FALSE, n=FALSE, m=FALSE, k=FALSE;

	if ((NULL==cszIfName) || (NULL==ConfigStruct)) 
	{
		printf("struct or ifname is null\n");
		return FALSE;
	}


	
#ifdef RUNONPC
	printf("#######################in pc mode#####################3!\n");
	if (FALSE == IsValidIP(ConfigStruct->ulIP))
#else
	if (FALSE == IsValidIP(ntohl(ConfigStruct->ulIP)))
#endif
	{
	//	printf("ip address is error: %s\n", inet_ntoa(ntohl(ConfigStruct->ulIP)));
		return FALSE;
	}
#ifdef RUNONPC
	//set ip addr
	i = InterfaceSockaddrSet(cszIfName, ConfigStruct->ulIP,
		SIOCSIFADDR);
	//set network mask
	j = InterfaceSockaddrSet(cszIfName, ConfigStruct->ulNetmask,
		SIOCSIFNETMASK);
	//set gateway (router) only set one gateway!
	if (0!=ConfigStruct->ulGateway)
	{
		m = TRUE;
		l = InterfaceGatewaySet(cszIfName, 			
			(in_addr_t)ConfigStruct->ulGateway);
	}
	//set dns

	n = DHCPClientSystemDNSet(ConfigStruct->ulDNS, 2);
	k = IntotoStaticNameServerUpdate(ConfigStruct->ulDNS[0], 
		ConfigStruct->ulDNS[1]);
#else
	//set ip addr
	i = InterfaceSockaddrSet(cszIfName, ntohl(ConfigStruct->ulIP),
		SIOCSIFADDR);
	//set network mask
	j = InterfaceSockaddrSet(cszIfName, ntohl(ConfigStruct->ulNetmask),
		SIOCSIFNETMASK);
	//set gateway (router) only set one gateway!
	if (0!=ConfigStruct->ulGateway)
	{
		m = TRUE;
		l = InterfaceGatewaySet(cszIfName, 			
			(in_addr_t)ntohl(ConfigStruct->ulGateway));
	}
	//set dns
	ConfigStruct->ulDNS[0] = ntohl(ConfigStruct->ulDNS[0]);
	ConfigStruct->ulDNS[1] = ntohl(ConfigStruct->ulDNS[1]);

	{
		IPAddr_t		ulDnsMax[MAXDNS_NUM] = {0};
		uint32_t		ulDnsNum = 0;
		uint32_t		iTmp = 0;
		DHCPClientBlock_t	*pClientBlock = pDHCPClientCtxtBlockHead;
		if (NULL==pClientBlock)
		{
			printf("Block is null\n");
		}
		while (NULL!=pClientBlock)
		{
			//printf("Card: %s Current Status: %d\n", pClientBlock->cszIfName, pClientBlock->CurrentState);

			switch (pClientBlock->CurrentState)
			{
			case DHCP_CLIENT_INITIALIZED:
			case DHCP_CLIENT_SELECT:
			case DHCP_CLIENT_REQUEST:
			case DHCP_CLIENT_STOP:
				printf("Block's not alloc Dns: %x, %x\n", 
					pClientBlock->sDefaultConfigStruct.ulDNS[0],pClientBlock->sDefaultConfigStruct.ulDNS[1]);
				printf("Card: %s Current Status: %d\n", pClientBlock->cszIfName, pClientBlock->CurrentState);
				if (IsValidIP(pClientBlock->sDefaultConfigStruct.ulDNS[0])
					&& (!fDnsIsInArray(ulDnsMax, pClientBlock->sDefaultConfigStruct.ulDNS[0]))
					)
				{
					ulDnsMax[ulDnsNum++] = pClientBlock->sDefaultConfigStruct.ulDNS[0];
				}
				if (IsValidIP(pClientBlock->sDefaultConfigStruct.ulDNS[1])
					&& (!fDnsIsInArray(ulDnsMax, pClientBlock->sDefaultConfigStruct.ulDNS[1]))
					)
				{
					ulDnsMax[ulDnsNum++] = pClientBlock->sDefaultConfigStruct.ulDNS[1];
				}
				break;
			case DHCP_CLIENT_BOUND:
			case DHCP_CLIENT_ARP_AWAIT:
			case DHCP_CLIENT_RENEW:
			case DHCP_CLIENT_REBIND:
				printf("Block's alloced Dns: %x, %x\n", 
					pClientBlock->sAllocedStruct.ulDNS[0],pClientBlock->sAllocedStruct.ulDNS[1]);
				printf("Card: %s Current Status: %d\n", pClientBlock->cszIfName, pClientBlock->CurrentState);
				if (IsValidIP(pClientBlock->sAllocedStruct.ulDNS[0])
					&& (!fDnsIsInArray(ulDnsMax, pClientBlock->sAllocedStruct.ulDNS[0]))
					)
				{
					ulDnsMax[ulDnsNum++] = pClientBlock->sAllocedStruct.ulDNS[0];
				}
				if (IsValidIP(pClientBlock->sAllocedStruct.ulDNS[1])
					&& (!fDnsIsInArray(ulDnsMax, pClientBlock->sAllocedStruct.ulDNS[1]))
					)
				{
					ulDnsMax[ulDnsNum++] = pClientBlock->sAllocedStruct.ulDNS[1];
				}
				break;
			default:
				break;
			}
			pClientBlock = pClientBlock->next;
		}
		n = DHCPClientSystemDNSet(ulDnsMax, ulDnsNum);
		IntotoStaticNameServerRemoveAll();
		//printf("Dns Num: %d\n", ulDnsNum);
		for (iTmp=0; iTmp<ulDnsNum; iTmp++)
		{
			n = IntotoStaticNameServerAdd(ulDnsMax[iTmp]);
			printf("Dns: %x\n", ulDnsMax[iTmp]);
		}
		k = n = TRUE;
		//k = IntotoStaticNameServerUpdate(ntohl(ConfigStruct->ulDNS[0]), 
		//	ntohl(ConfigStruct->ulDNS[1]));
	}
#endif

	//printf("System Set Result: IP:%d,Netmask:%d,%d, %d\n", i,j,l,m);
	
	return (i & j & n & k & (l == m));

}

int DHCPClientRequestTimeoutProcess(DHCPWAITEvent_t *p)
{
	TimerStop(p);
	p->iInitSet = FALSE;			
	if (p->pPointToBlock->CurrentState == DHCP_CLIENT_RENEW)
	{
		//
		p->fWillSend = TRUE;
		p->pPointToBlock->ulLeasedTime = p->pPointToBlock->ulLeasedTime / 2;
		p->iTimeOutNums++;
		if (4 == p->iTimeOutNums)
		{
			//already 87.5% time, the ulLeaseTime should set to full
			p->pPointToBlock->ulLeasedTime = 
				(p->pPointToBlock->ulRemainingTime * 1/8);
		}
		if (p->iTimeOutNums>4)
		{
			//Request not response over three times
			p->iTimeOutNums = 0;
			p->iInitSet = TRUE;
			p->fWillSend = FALSE;
			p->pPointToBlock->CurrentState = DHCP_CLIENT_INITIALIZED;
			TimerStart(p, DEFAULT_DISCOVER_TIMEOUT, WAIT_DISCOVER);
			p->pPointToBlock->CurrentState = DHCP_CLIENT_SELECT;
			DHCPClientSendDHCPDiscover(p->pPointToBlock);
		}
	}
	else
	{
		//
		//printf("Request timeout in SELECTING........\n");
		p->iSendNums++;
		switch (p->iSendNums)
		{
		case 1:
			p->iWaitStartTime += 6;
			p->iWaitTimeOutTime = 9;
			break;
		case 2:
			p->iWaitStartTime += 9;
			p->iWaitTimeOutTime = 15;
			break;
		case 3:
			p->iWaitStartTime += 15;
			p->iWaitTimeOutTime = 30;
			break;
		default:
			break;
		}
		p->pPointToBlock->CurrentState = DHCP_CLIENT_REQUEST;
		if (TRUE == DHCPClientSendDHCPRequest(p->pPointToBlock))
		{
			TimerStart(p, 0, WAIT_REQUEST);
		}
		if (p->iSendNums > 3)
		{
			//Request Timeout 3 times, then change state to init
			p->iSendNums = 0;
			p->iInitSet = TRUE;
			p->pPointToBlock->CurrentState = DHCP_CLIENT_INITIALIZED;
			TimerStart(p, DEFAULT_DISCOVER_TIMEOUT, WAIT_DISCOVER);
			p->pPointToBlock->CurrentState = DHCP_CLIENT_SELECT;
			DHCPClientSendDHCPDiscover(p->pPointToBlock);
		}
	}

	return TRUE;
}

int DHCPClientDiscoverTimeoutProcess(
	DHCPWAITEvent_t *p, 
	DHCPClientBlock_t *pCurCtxtBlock
	)
{
	//printf("now discover is timeout.... Event = %d  StartTime = %d   NowTime = %d\n", event.EventType, event.iWaitStartTime, CurrentTime);
	TimerStop(p);
	p->iInitSet = FALSE;
	p->iSendNums++;
	//printf("iSendNums = %d\n", iSendNums);
	switch (p->iSendNums)
	{
	case 1:
		p->iWaitStartTime += 6;
		p->iWaitTimeOutTime = 9;
		break;
	case 2:
		p->iWaitStartTime += 9;
		p->iWaitTimeOutTime = 15;
		break;
	case 3:
		p->iWaitStartTime += 15;
		p->iWaitTimeOutTime = 30;
		break;
	default:
		break;
	}
	TimerStart(p, 0, WAIT_DISCOVER);
	pCurCtxtBlock->CurrentState = DHCP_CLIENT_SELECT;
	if (FALSE == DHCPClientSendDHCPDiscover(pCurCtxtBlock))
	{
		printf("Send discover error\n");
		return FALSE;
	}
	if (p->iSendNums > 3)
	{
		//timeout is over three times, then set interface to default
		p->iSendNums = 0;
		TimerStop(p);
		pCurCtxtBlock->CurrentState = DHCP_CLIENT_STOP;
		//pCurCtxtBlock->bDHCPClientEnabled = FALSE;
		pCurCtxtBlock->bRequestToConnect = TRUE;
		time((time_t *)&(pCurCtxtBlock->ulLeaveTime));
		if (FALSE == DHCPCFunctionInfo.DHCPNetworkConfig(
			pCurCtxtBlock->cszIfName, 
			&(pCurCtxtBlock->sDefaultConfigStruct)))
		{		
			printf("timeout discover set network error!\n");
			return -1;
		}
		else
		{
			//pCurCtxtBlock->bDHCPClientEnabled = FALSE;
			//exit(0);
			// xhema 20050310 inform DNSRD module that dns updated

			//IntotoStaticNameServerUpdate(pCurCtxtBlock->sDefaultConfigStruct.ulDNS[0], 
			//	pCurCtxtBlock->sDefaultConfigStruct.ulDNS[1]);
			memcpy(&pCurCtxtBlock->sAllocedStruct, &pCurCtxtBlock->sDefaultConfigStruct, 
				sizeof(pCurCtxtBlock->sDefaultConfigStruct));
		}
		return TRUE;
	}
	return TRUE;
}


int DHCPClientSendDHCPDiscover(DHCPClientBlock_t *pCurCtxtBlock)
{
	ipaddr srvAddr;
	int index = 0, opt = 1;
	uint8_t caSendingPkt[DHCP_CLIENT_PACKET_MAXIMUM_LEN];
	struct dhcp_packet pkt;
	memset(caSendingPkt, 0, sizeof(caSendingPkt));

	make_discover(&pkt, pCurCtxtBlock);

	//set it 
	setsockopt(s_iDCSocket, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt));
	//xhema
	inet_aton("255.255.255.255", (struct in_addr *)&srvAddr);

	memcpy(caSendingPkt, (char *)&pkt, sizeof(pkt));
	index = sizeof(pkt);

	DHCPCAddOptionsToPkt(caSendingPkt, pCurCtxtBlock, &index,
		DHCPDISCOVER);

	if (-1 == (DHCPCFunctionInfo.SendPacket(pCurCtxtBlock->cszIfName, (char *)&caSendingPkt, 
		index, 0, srvAddr)))
	{
		perror("send error");
		return FALSE;
	}
	return TRUE;
}

int DHCPClientSendDHCPDecline(DHCPClientBlock_t *pCurCtxtBlock)
{
	uint8_t   caSendingPkt[DHCP_CLIENT_PACKET_MAXIMUM_LEN];
	uint32_t   index=0;
	uint8_t  *pPading = NULL,*PktPos = NULL;
	ipaddr     htonlIpAddr=0;
	uint8_t   ReasonBuf[25]="IT IS ALREADY ASSIGNED";
	memset(&DhClientRequestPkt, 0, sizeof(DhClientRequestPkt));
	memset(caSendingPkt, 0, sizeof(caSendingPkt));
	DhClientRequestPkt.op = BOOTREQUEST;
	DhClientRequestPkt.htype = 1;
	DhClientRequestPkt.hlen = 6;
	DhClientRequestPkt.xid = pCurCtxtBlock->ulTransActionId;
	DhClientRequestPkt.ciaddr = pCurCtxtBlock->LeasedIpAddress;
	//memcpy(DhClientRequestPkt.chaddr, pCurCtxtBlock->aucHwAddress, 6);
	GetHwAddr(DhClientRequestPkt.chaddr, pCurCtxtBlock->cszIfName);
	memcpy(caSendingPkt, &DhClientRequestPkt, sizeof(DhClientRequestPkt));

	index = sizeof(DhClientRequestPkt);
	PktPos = caSendingPkt + index;
	memcpy(PktPos,DHCP_OPTIONS_COOKIE, 4);
	PktPos = PktPos + 4;
	index += 4;
	*PktPos++ = DHCP_MESSAGE_TYPE;
	*PktPos++ = DHCP_MESSAGE_OPTION_LEN;
	*PktPos++ = DHCPDECLINE;
	index += 3;

	*PktPos++ = DHO_DHCP_CLIENT_IDENTIFIER;
	*PktPos++ = 7;
	index += 2;
	*PktPos += 1;
	PktPos++;
	GetHwAddr(PktPos, pCurCtxtBlock->cszIfName);
	PktPos += 6;
	index += 7;

	*PktPos++ = DHO_DHCP_REQUESTED_ADDRESS;
	*PktPos++ = IPADDR_LEN; 
	htonlIpAddr = pCurCtxtBlock->LeasedIpAddress;
	memcpy(PktPos, &htonlIpAddr, IPADDR_LEN);	
	PktPos  = PktPos + IPADDR_LEN; 
	index += (IPADDR_LEN+2);
	*PktPos++ = DHO_DHCP_SERVER_IDENTIFIER;   
	*PktPos++ = IPADDR_LEN;
	htonlIpAddr = 0;
	htonlIpAddr = pCurCtxtBlock->DHCPServerIpAddr;
	memcpy(PktPos,&htonlIpAddr,IPADDR_LEN);
	PktPos = PktPos + IPADDR_LEN;
	index += (2 + IPADDR_LEN);
	*PktPos++ = DHO_DHCP_MESSAGE;
	*PktPos++ = strlen(ReasonBuf);
	index += (strlen(ReasonBuf)+2);
	for(pPading = ReasonBuf; *pPading != '\0'; ++pPading)
	{
		*PktPos++ = *pPading;
	}
	*PktPos = END_OPTION;
	index += 1;
	DHCPCIpAddressInfo.ulServerIpAddress = BROADCAST_IP_ADDRESS;
	GetHwAddr(pCurCtxtBlock->aucHwAddress, pCurCtxtBlock->cszIfName);
	if (DHCPCFunctionInfo.SendPacket(pCurCtxtBlock->cszIfName, (uint8_t *)caSendingPkt,
				index, 0, DHCPCIpAddressInfo.ulServerIpAddress)<0)
	{
		printf("Sending DHCP decline pkt error\n");
		return FALSE;
	}

	return TRUE;
}

int DHCPClientSendDHCPRelease(DHCPClientBlock_t *pCurCtxtBlock)
{
	//DhClientRequestPkt.chaddr
	uint8_t   caSendingPkt[DHCP_CLIENT_PACKET_MAXIMUM_LEN];
	uint32_t   index=0, uiLen=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久aⅴ国产欧美74aaa| 午夜精品久久久久| 波多野结衣精品在线| 中日韩av电影| 91黄色激情网站| 日韩和欧美的一区| 欧美成人午夜电影| 国产ts人妖一区二区| 国产精品三级av| 色综合久久久久综合| 午夜精品福利一区二区蜜股av | 成人免费毛片a| **欧美大码日韩| 欧美麻豆精品久久久久久| 麻豆精品一区二区av白丝在线| 久久老女人爱爱| 91看片淫黄大片一级| 午夜精品久久久久久久久久久| 精品久久久久香蕉网| 波多野洁衣一区| 亚洲v精品v日韩v欧美v专区| 精品捆绑美女sm三区| 99久久精品免费观看| 三级欧美在线一区| 国产清纯美女被跳蛋高潮一区二区久久w | 精品sm在线观看| 91麻豆自制传媒国产之光| 丝袜亚洲精品中文字幕一区| 国产网站一区二区| 精品视频123区在线观看| 国产精品一区二区无线| 亚洲午夜久久久| 国产偷国产偷亚洲高清人白洁| 欧美在线啊v一区| 韩国欧美国产一区| 亚洲一区免费观看| 国产农村妇女毛片精品久久麻豆| 在线观看日韩电影| 成人黄色在线视频| 久久国产尿小便嘘嘘| 亚洲蜜桃精久久久久久久| 精品成人免费观看| 欧美日韩mp4| 99re热视频这里只精品| 精品在线一区二区三区| 亚洲一区二区美女| 中文字幕二三区不卡| 欧美大片国产精品| 欧美日韩电影在线| 91丝袜美女网| 成人自拍视频在线| 极品美女销魂一区二区三区免费| 亚洲一二三四在线| 国产精品久久久久久福利一牛影视 | 成人激情黄色小说| 国产曰批免费观看久久久| 首页国产丝袜综合| 亚洲国产精品久久人人爱蜜臀| 国产精品沙发午睡系列990531| 欧美成人一级视频| 日韩视频一区二区在线观看| 欧美在线观看你懂的| 色天天综合色天天久久| 成人美女视频在线观看| 国产老肥熟一区二区三区| 麻豆成人综合网| 免费精品99久久国产综合精品| 亚洲大片一区二区三区| 亚洲二区在线观看| 亚洲一区二区高清| 亚洲影视资源网| 亚洲成a人v欧美综合天堂| 亚洲最大的成人av| 亚洲精品国产第一综合99久久| 日韩一区在线看| 自拍偷自拍亚洲精品播放| 日韩美女视频一区| 综合在线观看色| 亚洲欧美日韩国产综合在线 | 久久久久久99精品| 亚洲国产精品黑人久久久| 国产精品日韩成人| 一区视频在线播放| 一区二区三区在线高清| 午夜激情综合网| 麻豆精品国产91久久久久久| 精品一区二区三区久久| 国产精品123| 91亚洲大成网污www| 欧美午夜精品理论片a级按摩| 欧美日韩精品高清| 精品国免费一区二区三区| 国产日本欧美一区二区| 最新国产成人在线观看| 亚洲国产精品人人做人人爽| 麻豆免费看一区二区三区| 国产成人啪午夜精品网站男同| 成人教育av在线| 欧美伊人精品成人久久综合97| 蜜臀91精品一区二区三区 | 一区二区三区av电影| 亚洲永久精品大片| 丝袜亚洲另类欧美| 久久99精品久久久久婷婷| 麻豆免费精品视频| caoporn国产一区二区| 91蝌蚪porny成人天涯| 欧美日韩国产色站一区二区三区| 欧美日韩综合在线| 日韩欧美一区中文| 精品久久国产字幕高潮| 亚洲欧美在线视频观看| 一区二区三区中文字幕电影| 亚洲成人免费在线观看| 美女视频一区在线观看| 国产91精品入口| 欧美日韩在线电影| 日韩你懂的在线播放| 国产欧美视频一区二区| 亚洲黄色av一区| 男男gaygay亚洲| 国产馆精品极品| 欧美色成人综合| 精品不卡在线视频| 一区二区三区在线看| 99re在线精品| 高清不卡一二三区| 91在线观看美女| 欧美一区二区视频免费观看| 久久久一区二区三区| 日韩国产在线一| 国产mv日韩mv欧美| 欧美伊人久久大香线蕉综合69| 欧美成人激情免费网| 综合电影一区二区三区| 亚洲一区二区三区四区五区黄| 美国十次综合导航| 一本久久a久久免费精品不卡| 欧美视频精品在线| 国产精品网曝门| 免费av成人在线| 欧美精品日日鲁夜夜添| 国产欧美一区二区精品婷婷| 亚洲大型综合色站| 成人免费高清在线观看| 91精品国产综合久久久蜜臀粉嫩 | 福利一区福利二区| 久久久精品欧美丰满| 午夜精品久久久久久久久久| 国产91精品露脸国语对白| 91精品综合久久久久久| 亚洲成人第一页| 91亚洲精华国产精华精华液| 精品国产网站在线观看| 亚洲国产精品久久久久婷婷884| 不卡的av在线| 久久久777精品电影网影网 | 午夜婷婷国产麻豆精品| 国产精品白丝av| 国产欧美日韩久久| 精品亚洲porn| 51午夜精品国产| 一区二区三区四区国产精品| 色噜噜久久综合| 国产精品久久毛片av大全日韩| 麻豆久久久久久久| 日韩欧美一卡二卡| 亚洲五码中文字幕| 一本色道久久综合亚洲aⅴ蜜桃| 国产日韩欧美高清| 国产一区二区美女诱惑| 久久久国际精品| 国内偷窥港台综合视频在线播放| 欧美一区二区三区精品| 亚洲高清在线视频| 色8久久精品久久久久久蜜| 亚洲国产精品精华液网站| 91国产丝袜在线播放| 亚洲最大成人网4388xx| 在线亚洲一区二区| 秋霞成人午夜伦在线观看| 欧美精品在欧美一区二区少妇| 香蕉av福利精品导航 | 一本色道综合亚洲| 亚洲国产精品尤物yw在线观看| 欧美在线一区二区三区| 亚洲欧美另类综合偷拍| 色综合久久天天| 亚洲一区二区av在线| 欧美日韩精品专区| 视频精品一区二区| 日韩三级av在线播放| 国产精品18久久久久久久网站| 国产午夜精品在线观看| 免费看欧美美女黄的网站| 国产欧美精品一区aⅴ影院 | 久久视频一区二区| 国产不卡免费视频| 亚欧色一区w666天堂| 日韩视频免费观看高清完整版 |