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

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

?? sgip.c

?? SGIP協議封裝
?? C
?? 第 1 頁 / 共 2 頁
字號:
	char ppdu[SGIP_PDU_SIZE], *ptr;
	unsigned int len;
	unsigned char var8;
	unsigned long var32;
	
	if (sockfd == INVALID_SOCKET)
		return -1;

	if (SequenceNumber == NULL || pBody == NULL)
		return -1;

	memset(ppdu, 0, sizeof(ppdu));
	ptr = ppdu;

	// 消息頭
	ptr += 4;
	
	var32 = htonl(SGIP_REPORT_RESP);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[0]);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[1]);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[2]);
	memcpy(ptr, &var32, 4);
	ptr += 4;

	// 消息體
	var8 = pBody->Result;
	len = 1;
	memcpy(ptr, &var8, len);
	ptr += len;
	
	len = sizeof(pBody->Reserve) - 1;
	memcpy(ptr, pBody->Reserve, len);
	ptr += len;
	
	// 修改消息頭中長度
	len = ptr - ppdu;
	var32 = htonl(len);
	memcpy(ppdu, &var32, 4);

	// 發送數據包
	if (send(sockfd, ppdu, (int)len, 0) != (int)len) 
	{
		closesocket(sockfd);
		return -1;
	}
	
	return 0;
}

int sgipEnquireLink(SOCKET sockfd, 
	const unsigned long *SequenceNumber)
{
	char ppdu[SGIP_PDU_SIZE], *ptr;
	unsigned int len;
	unsigned long var32;
	
	if (sockfd == INVALID_SOCKET)
		return -1;

	if (SequenceNumber == NULL)
		return -1;

	memset(ppdu, 0, sizeof(ppdu));
	ptr = ppdu;

	// 消息頭
	ptr += 4;
	
	var32 = htonl(SGIP_ENQUIRELINK);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[0]);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[1]);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[2]);
	memcpy(ptr, &var32, 4);
	ptr += 4;

	// 修改消息頭中長度
	len = ptr - ppdu;
	var32 = htonl(len);
	memcpy(ppdu, &var32, 4);

	// 發送數據包
	if (send(sockfd, ppdu, (int)len, 0) != (int)len) 
	{
		closesocket(sockfd);
		return -1;
	}
	
	return 0;
}

int sgipEnquireLinkResp(SOCKET sockfd, 
	const unsigned long *SequenceNumber)
{
	char ppdu[SGIP_PDU_SIZE], *ptr;
	unsigned int len;
	unsigned long var32;
	
	if (sockfd == INVALID_SOCKET)
		return -1;

	if (SequenceNumber == NULL)
		return -1;

	memset(ppdu, 0, sizeof(ppdu));
	ptr = ppdu;	
	
	// 消息頭
	ptr += 4;
	
	var32 = htonl(SGIP_ENQUIRELINK_RESP);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[0]);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[1]);
	memcpy(ptr, &var32, 4);
	ptr += 4;
	
	var32 = htonl(SequenceNumber[2]);
	memcpy(ptr, &var32, 4);
	ptr += 4;

	// 修改消息頭中長度
	len = ptr - ppdu;
	var32 = htonl(len);
	memcpy(ppdu, &var32, 4);

	// 發送數據包
	if (send(sockfd, ppdu, (int)len, 0) != (int)len) 
	{
		closesocket(sockfd);
		return -1;
	}
	
	return 0;
}

static int sgipDecodeBind(const char *rawBody, unsigned int len, SGIP_BODY_BIND *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->LoginType = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->LoginName) - 1;
	memcpy(msgBody->LoginName, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->LoginPassword) - 1;
	memcpy(msgBody->LoginPassword, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeBindResp(const char *rawBody, unsigned int len, SGIP_BODY_BIND_RESP *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->Result = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeSubmit(const char *rawBody, unsigned int len, SGIP_BODY_SUBMIT *msgBody)
{
	unsigned int sum = 0;
	unsigned char i, var8;
	unsigned long var32;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->SPNumber) - 1;
	memcpy(msgBody->SPNumber, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->ChargeNumber) - 1;
	memcpy(msgBody->ChargeNumber, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	if (var8 < 1 || var8 > 100)
		return -1;
	msgBody->UserCount = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	for (i = 0; i < var8; i++)
	{
		sum = sizeof(msgBody->UserNumber[i]) - 1;
		memcpy(msgBody->UserNumber[i], ptr, sum);
		ptr = ptr + sum;
		if ((unsigned int)(ptr - rawBody) >= len)
			return -1;
	}
	
	sum = sizeof(msgBody->CorpId) - 1;
	memcpy(msgBody->CorpId, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->ServiceType) - 1;
	memcpy(msgBody->ServiceType, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->FeeType = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->FeeValue) - 1;
	memcpy(msgBody->FeeValue, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->GivenValue) - 1;
	memcpy(msgBody->GivenValue, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->AgentFlag = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->MOrelatetoMTFlag = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->Priority = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->ExpireTime) - 1;
	memcpy(msgBody->ExpireTime, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->ScheduleTime) - 1;
	memcpy(msgBody->ScheduleTime, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->ReportFlag = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	memcpy(&var8, ptr, 1);
	msgBody->TP_pid = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	memcpy(&var8, ptr, 1);
	msgBody->TP_udhi = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->MessageCoding = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->MessageType = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var32, ptr, 4);
	var32 = ntohl(var32);
	msgBody->MessageLength = var32;
	if (msgBody->MessageLength > (sizeof(msgBody->MessageContent) - 1))
		msgBody->MessageLength = sizeof(msgBody->MessageContent) - 1;
	ptr = ptr + 4;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = var32;
	memcpy(msgBody->MessageContent, ptr, msgBody->MessageLength);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeSubmitResp(const char *rawBody, unsigned int len, SGIP_BODY_SUBMIT_RESP *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->Result = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeDeliver(const char *rawBody, unsigned int len, SGIP_BODY_DELIVER *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	unsigned long var32;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->UserNumber) - 1;
	memcpy(msgBody->UserNumber, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->SPNumber) - 1;
	memcpy(msgBody->SPNumber, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->TP_pid = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	memcpy(&var8, ptr, 1);
	msgBody->TP_udhi = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->MessageCoding = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;

	memcpy(&var32, ptr, 4);
	var32 = ntohl(var32);
	msgBody->MessageLength = var32;
	if (msgBody->MessageLength > (sizeof(msgBody->MessageContent) - 1))
		msgBody->MessageLength = sizeof(msgBody->MessageContent) - 1;
	ptr = ptr + 4;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = var32;
	memcpy(msgBody->MessageContent, ptr, msgBody->MessageLength);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeDeliverResp(const char *rawBody, unsigned int len, SGIP_BODY_DELIVER_RESP *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->Result = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeReport(const char *rawBody, unsigned int len, SGIP_BODY_REPORT *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	unsigned long var32;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	

	memcpy(&var32, ptr, 4);
	var32 = ntohl(var32);
	msgBody->SubmitSequenceNumber[0] = var32;
	ptr = ptr + 4;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var32, ptr, 4);
	var32 = ntohl(var32);
	msgBody->SubmitSequenceNumber[1] = var32;
	ptr = ptr + 4;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	memcpy(&var32, ptr, 4);
	var32 = ntohl(var32);
	msgBody->SubmitSequenceNumber[2] = var32;
	ptr = ptr + 4;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->ReportType = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->UserNumber) - 1;
	memcpy(msgBody->UserNumber, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->State = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;

	memcpy(&var8, ptr, 1);
	msgBody->ErrorCode = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

static int sgipDecodeReportResp(const char *rawBody, unsigned int len, SGIP_BODY_REPORT_RESP *msgBody)
{
	unsigned int sum = 0;
	unsigned char var8;
	const char *ptr = rawBody;

	if (rawBody == NULL || msgBody == NULL)
		return -1;
		
	memset(msgBody, 0, sizeof(*msgBody));

	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
	
	memcpy(&var8, ptr, 1);
	msgBody->Result = var8;
	ptr = ptr + 1;
	if ((unsigned int)(ptr - rawBody) >= len)
		return -1;
		
	sum = sizeof(msgBody->Reserve) - 1;
	memcpy(msgBody->Reserve, ptr, sum);
	ptr = ptr + sum;
	if ((unsigned int)(ptr - rawBody) > len)
		return -1;
	
	return 0;
}

int sgipDecode(const char *pszPDU, SGIP_MSG *pMsg)
{
	char PDU[SGIP_PDU_SIZE];
	unsigned long var32, len;
	int ret;

	if (pszPDU == NULL || pMsg == NULL)
		return -1;

	memset(PDU, 0, sizeof(PDU));
	memcpy(&var32, pszPDU, 4);
	var32 = ntohl(var32);
	if (var32 < 20 || var32 > sizeof(PDU))
		return -1;
	len = var32;
	memcpy(PDU, pszPDU, len);

	memcpy(&var32, PDU + 0, 4);
	pMsg->MessageLength = ntohl(var32);
	memcpy(&var32, PDU + 4, 4);
	pMsg->CommandID = ntohl(var32);
	memcpy(&var32, PDU + 8, 4);
	pMsg->SequenceNumber[0] = ntohl(var32);
	memcpy(&var32, PDU + 12, 4);
	pMsg->SequenceNumber[1] = ntohl(var32);
	memcpy(&var32, PDU + 16, 4);
	pMsg->SequenceNumber[2] = ntohl(var32);

	ret = 0;
	switch (pMsg->CommandID)
	{
	case SGIP_BIND :
		ret = sgipDecodeBind(PDU + 20, (unsigned int)(len - 20), &(pMsg->body.bind));
		break;	
		
	case SGIP_BIND_RESP :
		ret = sgipDecodeBindResp(PDU + 20, (unsigned int)(len - 20), &(pMsg->body.bind_resp));
		break;

	case SGIP_SUBMIT :
		ret = sgipDecodeSubmit(PDU + 20, (unsigned int)(len - 20), &pMsg->body.submit);
		break;
	
	case SGIP_SUBMIT_RESP :
		ret = sgipDecodeSubmitResp(PDU + 20, (unsigned int)(len - 20), &pMsg->body.submit_resp);
		break;

	case SGIP_DELIVER :
		ret = sgipDecodeDeliver(PDU + 20, (unsigned int)(len - 20), &pMsg->body.deliver);
		break;
	
	case SGIP_DELIVER_RESP :
		ret = sgipDecodeDeliverResp(PDU + 20, (unsigned int)(len - 20), &pMsg->body.deliver_resp);
		break;

	case SGIP_REPORT :
		ret = sgipDecodeReport(PDU + 20, (unsigned int)(len - 20), &pMsg->body.report);
		break;
	
	case SGIP_REPORT_RESP :
		ret = sgipDecodeReportResp(PDU + 20, (unsigned int)(len - 20), &pMsg->body.report_resp);
		break;
		
	case SGIP_UNBIND :
		break;
		
	case SGIP_UNBIND_RESP :
		break;

	case SGIP_ENQUIRELINK :
		break;
		
	case SGIP_ENQUIRELINK_RESP :
		break;

	default :
		ret = -1;
	}

	return ret;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区三区四区| 成人精品国产一区二区4080| 日本视频一区二区三区| 天天色图综合网| 国产中文一区二区三区| 国产精品91xxx| 欧洲一区二区三区在线| 欧美性极品少妇| 精品国产乱码久久久久久牛牛 | 日韩欧美在线123| 久久婷婷一区二区三区| 亚洲色欲色欲www| 午夜电影一区二区| 成人av免费观看| 777奇米四色成人影色区| 国产精品欧美久久久久一区二区| 一区二区三区四区乱视频| 手机精品视频在线观看| 国产毛片精品一区| 欧美精品久久99久久在免费线| xfplay精品久久| 日本免费在线视频不卡一不卡二| 国产99久久久国产精品| 日韩你懂的在线播放| 一区二区三区精品| 97se亚洲国产综合在线| 国产日韩三级在线| 久久精品国产亚洲高清剧情介绍| 99re这里只有精品视频首页| 精品动漫一区二区三区在线观看| 亚洲精品欧美二区三区中文字幕| 国产精品白丝jk黑袜喷水| 91精品福利在线一区二区三区| 亚洲视频在线观看一区| 99re成人在线| 自拍偷拍欧美精品| 日本韩国欧美在线| 自拍偷拍亚洲激情| 色综合久久综合网| 一区二区在线观看视频在线观看| 99久久综合精品| 亚洲欧美激情小说另类| 波多野结衣91| 一级特黄大欧美久久久| 在线观看日韩一区| 日韩av高清在线观看| 日韩一区二区精品在线观看| 日韩影院精彩在线| 宅男在线国产精品| 国产盗摄一区二区| 国产精品视频一二三区| 91福利国产成人精品照片| 亚洲视频网在线直播| 粉嫩高潮美女一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 国产美女av一区二区三区| 亚洲黄色小说网站| 精品粉嫩aⅴ一区二区三区四区| 成人午夜在线播放| 视频一区二区国产| 国产日韩成人精品| 欧美一区二视频| 成人app网站| 极品美女销魂一区二区三区| 国产精品国产自产拍在线| 日韩一级二级三级| 欧美精品1区2区| 9人人澡人人爽人人精品| 麻豆91小视频| 午夜精品久久久久久不卡8050| 国产免费成人在线视频| 欧美一级二级在线观看| 欧美午夜精品电影| 91麻豆精品在线观看| 成人一区二区三区中文字幕| 天天操天天综合网| 亚洲福利视频三区| 亚洲精品视频一区| 五月天婷婷综合| 综合久久久久久| 亚洲视频电影在线| 日韩理论在线观看| 亚洲最色的网站| 亚洲高清免费观看高清完整版在线观看 | 日本中文字幕一区| 日韩国产在线一| 日本中文字幕不卡| 久久99国产精品久久99果冻传媒| 日本美女一区二区| 韩国一区二区三区| 国产福利91精品一区二区三区| 狠狠色综合日日| 国产不卡免费视频| 成人激情综合网站| 欧美日韩一区高清| 精品国产一区久久| 国产精品久久久久久久久晋中| 日产精品久久久久久久性色| 国产精品66部| 国内精品写真在线观看| 中文字幕中文乱码欧美一区二区| 欧美一区二区福利视频| 成人动漫精品一区二区| 欧美三区免费完整视频在线观看| 91黄视频在线| 不卡的av电影| 91精品国产综合久久久久久久| 久久久综合九色合综国产精品| 日本一区二区三区四区| 亚洲成a人片在线观看中文| 麻豆高清免费国产一区| 91日韩精品一区| 日韩美女视频在线| 亚洲午夜三级在线| 国产精品一区二区在线播放| 成人精品在线视频观看| 欧美色视频在线| 国产精品久久久久久亚洲伦| 麻豆一区二区99久久久久| 99久久久久久| 中文天堂在线一区| 韩国毛片一区二区三区| 日韩欧美高清一区| 视频一区在线播放| 欧美日韩另类一区| 亚洲一区二区三区中文字幕 | 97se亚洲国产综合在线| 久久精品水蜜桃av综合天堂| 奇米精品一区二区三区在线观看一| 成人黄页毛片网站| 国产精品天干天干在观线| 国产精品香蕉一区二区三区| 欧美成人一区二区三区在线观看| 日日噜噜夜夜狠狠视频欧美人 | 亚洲午夜在线电影| 欧美亚洲禁片免费| 婷婷丁香久久五月婷婷| 欧美精品vⅰdeose4hd| 天堂av在线一区| 精品免费视频.| 成人丝袜18视频在线观看| 亚洲男同性视频| 欧美男生操女生| 国产精品911| 亚洲最色的网站| 欧美一级精品大片| 菠萝蜜视频在线观看一区| 国产精品麻豆99久久久久久| 欧美又粗又大又爽| 美女网站视频久久| 一区二区三区在线播| 欧美成人性战久久| 一本大道久久a久久综合| 免费成人你懂的| 亚洲精选视频在线| 国产午夜精品在线观看| 欧美亚洲综合网| 成人一区二区三区在线观看| 亚洲图片有声小说| 自拍偷拍亚洲欧美日韩| 欧美一卡在线观看| 色av一区二区| 成人免费看视频| 久久成人久久鬼色| 日日摸夜夜添夜夜添精品视频| 国产精品国产三级国产普通话蜜臀 | 国产精品亚洲第一区在线暖暖韩国| 亚洲国产成人高清精品| 17c精品麻豆一区二区免费| 国产日韩三级在线| 久久久久久免费网| 久久久久97国产精华液好用吗| 欧美电影在哪看比较好| 在线播放视频一区| 91精品国产品国语在线不卡| 欧美色综合久久| 日韩一区二区三区免费看| 欧美福利电影网| 日韩欧美国产综合一区 | 成人黄色777网| 91小视频在线观看| 欧美自拍偷拍一区| 91精品麻豆日日躁夜夜躁| 日韩一级欧美一级| 国产精品三级av| 亚洲精品久久久蜜桃| 亚洲一区视频在线| 国内精品国产成人| 91在线看国产| 337p亚洲精品色噜噜狠狠| 久久综合成人精品亚洲另类欧美| 久久日韩精品一区二区五区| 中文字幕不卡三区| 日韩av中文在线观看| 色综合久久中文综合久久牛| 国产精品一区在线观看乱码 | 日韩一区二区精品在线观看| 午夜激情一区二区三区| 亚洲成av人**亚洲成av**| 国产精品丝袜在线|