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

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

?? rpc.c

?? TCG軟件棧 linux系統(tǒng)上使用 為可信應用軟件提供和 TPM通信的 接口 其網(wǎng)站上有很多關于使用此軟件的測試用例
?? C
字號:
/* * Licensed Materials - Property of IBM * * trousers - An open source TCG Software Stack * * (C) Copyright International Business Machines Corp. 2004-2006 * */#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <stdlib.h>#include <stdio.h>#include <assert.h>#include <limits.h>#include "trousers/tss.h"#include "trousers/trousers.h"#include "trousers_types.h"#include "spi_utils.h"#include "capabilities.h"#include "tsplog.h"#include "hosttable.h"#include "tcsd_wrap.h"#include "obj.h"#include "rpc_tcstp_tsp.h"voidinitData(struct tcsd_comm_data *comm, int parm_count){	/* min packet size should be the size of the header */	memset(&comm->hdr, 0, sizeof(struct tcsd_packet_hdr));	comm->hdr.packet_size = sizeof(struct tcsd_packet_hdr);	if (parm_count > 0) {		comm->hdr.type_offset = sizeof(struct tcsd_packet_hdr);		comm->hdr.parm_offset = comm->hdr.type_offset +					(sizeof(TCSD_PACKET_TYPE) * parm_count);		comm->hdr.packet_size = comm->hdr.parm_offset;	}	memset(comm->buf, 0, comm->buf_size);}intloadData(UINT64 *offset, TCSD_PACKET_TYPE data_type, void *data, int data_size, BYTE *blob){	switch (data_type) {		case TCSD_PACKET_TYPE_BYTE:			Trspi_LoadBlob_BYTE(offset, *((BYTE *) (data)), blob);			break;		case TCSD_PACKET_TYPE_BOOL:			Trspi_LoadBlob_BOOL(offset, *((TSS_BOOL *) (data)), blob);			break;		case TCSD_PACKET_TYPE_UINT16:			Trspi_LoadBlob_UINT16(offset, *((UINT16 *) (data)), blob);			break;		case TCSD_PACKET_TYPE_UINT32:			Trspi_LoadBlob_UINT32(offset, *((UINT32 *) (data)), blob);			break;		case TCSD_PACKET_TYPE_PBYTE:			Trspi_LoadBlob(offset, data_size, blob, (BYTE *)data);			break;		case TCSD_PACKET_TYPE_NONCE:			Trspi_LoadBlob(offset, 20, blob, ((TCPA_NONCE *)data)->nonce);			break;		case TCSD_PACKET_TYPE_DIGEST:			Trspi_LoadBlob(offset, 20, blob, ((TCPA_DIGEST *)data)->digest);			break;		case TCSD_PACKET_TYPE_AUTH:			LoadBlob_AUTH(offset, blob, ((TPM_AUTH *)data));			break;		case TCSD_PACKET_TYPE_UUID:			Trspi_LoadBlob_UUID(offset, blob, *((TSS_UUID *)data));			break;		case TCSD_PACKET_TYPE_ENCAUTH:			Trspi_LoadBlob(offset, 20, blob, ((TCPA_ENCAUTH *)data)->authdata);			break;		case TCSD_PACKET_TYPE_VERSION:			Trspi_LoadBlob_TCPA_VERSION(offset, blob, *((TCPA_VERSION *)data));			break;		case TCSD_PACKET_TYPE_LOADKEY_INFO:			LoadBlob_LOADKEY_INFO(offset, blob, ((TCS_LOADKEY_INFO *)data));			break;		case TCSD_PACKET_TYPE_PCR_EVENT:			Trspi_LoadBlob_PCR_EVENT(offset, blob, ((TSS_PCR_EVENT *)data));			break;		case TCSD_PACKET_TYPE_COUNTER_VALUE:			Trspi_LoadBlob_COUNTER_VALUE(offset, blob, ((TPM_COUNTER_VALUE *)data));			break;		case TCSD_PACKET_TYPE_SECRET:			Trspi_LoadBlob(offset, 20, blob, ((TCPA_SECRET *)data)->authdata);			break;		default:			LogError("TCSD packet type unknown! (0x%x)", data_type & 0xff);			return TCSERR(TSS_E_INTERNAL_ERROR);	}	return TSS_SUCCESS;}intsetData(TCSD_PACKET_TYPE dataType,	int index,	void *theData,	int theDataSize,	struct tcsd_comm_data *comm){        UINT64 old_offset, offset;        TSS_RESULT result;        TCSD_PACKET_TYPE *type;        /* Calculate the size of the area needed (use NULL for blob address) */        offset = 0;        if ((result = loadData(&offset, dataType, theData, theDataSize, NULL)))                return result;        if (((int)comm->hdr.packet_size + (int)offset) < 0) {                LogError("Too much data to be transmitted!");                return TCSERR(TSS_E_INTERNAL_ERROR);        }        if (((int)comm->hdr.packet_size + (int)offset) > comm->buf_size) {                /* reallocate the buffer */                BYTE *buffer;                int buffer_size = comm->hdr.packet_size + offset;                LogDebug("Increasing communication buffer to %d bytes.", buffer_size);                buffer = realloc(comm->buf, buffer_size);                if (buffer == NULL) {                        LogError("realloc of %d bytes failed.", buffer_size);                        return TCSERR(TSS_E_INTERNAL_ERROR);                }                comm->buf_size = buffer_size;                comm->buf = buffer;        }        offset = old_offset = comm->hdr.parm_offset + comm->hdr.parm_size;        if ((result = loadData(&offset, dataType, theData, theDataSize, comm->buf)))                return result;        type = (TCSD_PACKET_TYPE *)(comm->buf + comm->hdr.type_offset) + index;        *type = dataType;        comm->hdr.type_size += sizeof(TCSD_PACKET_TYPE);        comm->hdr.parm_size += (offset - old_offset);        comm->hdr.packet_size = offset;        comm->hdr.num_parms++;        return TSS_SUCCESS;}UINT32getData(TCSD_PACKET_TYPE dataType,	int index,	void *theData,	int theDataSize,	struct tcsd_comm_data *comm){	TSS_RESULT result;	UINT64 old_offset, offset;	TCSD_PACKET_TYPE *type = (TCSD_PACKET_TYPE *)(comm->buf + comm->hdr.type_offset) + index;	if ((UINT32)index >= comm->hdr.num_parms || dataType != *type) {		LogDebug("Data type of TCS packet element %d doesn't match.", index);		return TSS_TCP_RPC_BAD_PACKET_TYPE;	}	old_offset = offset = comm->hdr.parm_offset;	switch (dataType) {		case TCSD_PACKET_TYPE_BYTE:			Trspi_UnloadBlob_BYTE(&offset, (BYTE *)theData, comm->buf);			break;		case TCSD_PACKET_TYPE_BOOL:			Trspi_UnloadBlob_BOOL(&offset, (TSS_BOOL *)theData, comm->buf);			break;		case TCSD_PACKET_TYPE_UINT16:			Trspi_UnloadBlob_UINT16(&offset, (UINT16 *)theData, comm->buf);			break;		case TCSD_PACKET_TYPE_UINT32:			Trspi_UnloadBlob_UINT32(&offset, (UINT32 *)theData, comm->buf);			break;		case TCSD_PACKET_TYPE_UINT64:			Trspi_UnloadBlob_UINT64(&offset, (UINT64 *)theData, comm->buf);			break;		case TCSD_PACKET_TYPE_PBYTE:			Trspi_UnloadBlob(&offset, theDataSize, comm->buf, (BYTE *)theData);			break;		case TCSD_PACKET_TYPE_NONCE:			Trspi_UnloadBlob_NONCE(&offset, comm->buf, (TPM_NONCE *)theData);			break;		case TCSD_PACKET_TYPE_DIGEST:			Trspi_UnloadBlob(&offset, sizeof(TCPA_DIGEST), comm->buf,					 ((TCPA_DIGEST *)theData)->digest);			break;		case TCSD_PACKET_TYPE_AUTH:			UnloadBlob_AUTH(&offset, comm->buf, ((TPM_AUTH *)theData));			break;		case TCSD_PACKET_TYPE_UUID:			Trspi_UnloadBlob_UUID(&offset, comm->buf, ((TSS_UUID *)theData));			break;		case TCSD_PACKET_TYPE_ENCAUTH:			Trspi_UnloadBlob(&offset, sizeof(TCPA_ENCAUTH), comm->buf,					 ((TCPA_ENCAUTH *)theData)->authdata);			break;		case TCSD_PACKET_TYPE_VERSION:			Trspi_UnloadBlob_TCPA_VERSION(&offset, comm->buf,						      ((TCPA_VERSION *)theData));			break;		case TCSD_PACKET_TYPE_KM_KEYINFO:			if ((result = Trspi_UnloadBlob_KM_KEYINFO(&offset, comm->buf,								  ((TSS_KM_KEYINFO *)theData))))				return result;			break;		case TCSD_PACKET_TYPE_KM_KEYINFO2:			if ((result = Trspi_UnloadBlob_KM_KEYINFO2(&offset, comm->buf,								   ((TSS_KM_KEYINFO2 *)theData))))				return result;			break;		case TCSD_PACKET_TYPE_LOADKEY_INFO:			UnloadBlob_LOADKEY_INFO(&offset, comm->buf, ((TCS_LOADKEY_INFO *)theData));			break;		case TCSD_PACKET_TYPE_PCR_EVENT:			if ((result = Trspi_UnloadBlob_PCR_EVENT(&offset, comm->buf,								 ((TSS_PCR_EVENT *)theData))))				return result;			break;		case TCSD_PACKET_TYPE_COUNTER_VALUE:			Trspi_UnloadBlob_COUNTER_VALUE(&offset, comm->buf,						       ((TPM_COUNTER_VALUE *)theData));			break;		case TCSD_PACKET_TYPE_SECRET:			Trspi_UnloadBlob(&offset, sizeof(TCPA_SECRET), comm->buf,					 ((TCPA_SECRET *)theData)->authdata);			break;		default:			LogError("unknown data type (%d) in TCSD packet!", dataType);			return -1;	}	comm->hdr.parm_offset = offset;	comm->hdr.parm_size -= (offset - old_offset);	return TSS_SUCCESS;}TSS_RESULTsendTCSDPacket(struct host_table_entry *hte){	TSS_RESULT rc;	UINT64 offset = 0;	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.packet_size, hte->comm.buf);	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.u.ordinal, hte->comm.buf);	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.num_parms, hte->comm.buf);	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.type_size, hte->comm.buf);	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.type_offset, hte->comm.buf);	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.parm_size, hte->comm.buf);	Trspi_LoadBlob_UINT32(&offset, hte->comm.hdr.parm_offset, hte->comm.buf);#if 0	/* ---  Send it */	printBuffer(hte->comm.buf, hte->comm.hdr.packet_size);	LogInfo("Sending Packet with TCSD ordinal 0x%X", hte->comm.hdr.u.ordinal);#endif	/* if the ordinal is open context, there are some host table entry	 * manipulations that must be done, so call _init	 */	if (hte->comm.hdr.u.ordinal == TCSD_ORD_OPENCONTEXT) {		if ((rc = send_init(hte))) {			LogError("Failed to send packet");			return rc;		}	} else {		if ((rc = sendit(hte))) {			LogError("Failed to send packet");			return rc;		}	}	/* create a platform version of the tcsd header */	offset = 0;	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.packet_size, hte->comm.buf);	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.u.result, hte->comm.buf);	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.num_parms, hte->comm.buf);	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.type_size, hte->comm.buf);	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.type_offset, hte->comm.buf);	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.parm_size, hte->comm.buf);	Trspi_UnloadBlob_UINT32(&offset, &hte->comm.hdr.parm_offset, hte->comm.buf);	return TSS_SUCCESS;}intrecv_from_socket(int sock, void *buffer, int size){	int recv_size = 0, recv_total = 0;	while (recv_total < size) {		errno = 0;		if ((recv_size = recv(sock, buffer+recv_total, size-recv_total, 0)) <= 0) {			if (recv_size < 0) {				if (errno == EINTR)					continue;				LogError("Socket receive connection error: %s.", strerror(errno));			} else {				LogDebug("Socket connection closed.");			}			return -1;		}		recv_total += recv_size;	}	return recv_total;}intsend_to_socket(int sock, void *buffer, int size){	int send_size = 0, send_total = 0;	while (send_total < size) {		if ((send_size = send(sock, buffer+send_total, size-send_total, 0)) < 0) {			LogError("Socket send connection error: %s.", strerror(errno));			return -1;		}		send_total += send_size;	}	return send_total;}TSS_RESULTsend_init(struct host_table_entry *hte){	int sd;	int recv_size;	BYTE *buffer;	TSS_RESULT result;	struct sockaddr_in addr;	struct hostent *hEnt = NULL;	sd = socket(PF_INET, SOCK_STREAM, 0);	if (sd == -1) {		LogError("socket: %s", strerror(errno));		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	memset(&addr, 0, sizeof(addr));	addr.sin_family = AF_INET;	addr.sin_port = htons(get_port());	LogDebug("Sending TSP packet to host %s.", hte->hostname);	/* try to resolve by hostname first */	hEnt = gethostbyname((char *)hte->hostname);	if (hEnt == NULL) {		/* if by hostname fails, try by dot notation */		if (inet_aton((char *)hte->hostname, &addr.sin_addr) == 0) {			LogError("hostname %s does not resolve to a valid address.", hte->hostname);			result = TSPERR(TSS_E_CONNECTION_FAILED);			goto err_exit;		}	} else {		memcpy(&addr.sin_addr, hEnt->h_addr_list[0], 4);	}	LogDebug("Connecting to %s", inet_ntoa(addr.sin_addr));	if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) {		LogError("connect: %s", strerror(errno));		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	if (send_to_socket(sd, hte->comm.buf, hte->comm.hdr.packet_size) < 0) {		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	buffer = hte->comm.buf;	recv_size = sizeof(struct tcsd_packet_hdr);	if ((recv_size = recv_from_socket(sd, buffer, recv_size)) < 0) {		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	buffer += sizeof(struct tcsd_packet_hdr);       /* increment the receive buffer pointer */	/* check the packet size */	recv_size = Decode_UINT32(hte->comm.buf);	if (recv_size < (int)sizeof(struct tcsd_packet_hdr)) {		LogError("Packet to receive from socket %d is too small (%d bytes)",				sd, recv_size);		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	if (recv_size > hte->comm.buf_size ) {		BYTE *new_buffer;		LogDebug("Increasing communication buffer to %d bytes.", recv_size);		new_buffer = realloc(hte->comm.buf, recv_size);		if (new_buffer == NULL) {			LogError("realloc of %d bytes failed.", recv_size);			result = TSPERR(TSS_E_OUTOFMEMORY);			goto err_exit;		}		buffer = new_buffer + sizeof(struct tcsd_packet_hdr);		hte->comm.buf_size = recv_size;		hte->comm.buf = new_buffer;	}	/* get the rest of the packet */	recv_size -= sizeof(struct tcsd_packet_hdr);    /* already received the header */	if ((recv_size = recv_from_socket(sd, buffer, recv_size)) < 0) {		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	hte->socket = sd;	return TSS_SUCCESS;err_exit:	close(sd);	return result;}TSS_RESULTsendit(struct host_table_entry *hte){	int recv_size;	BYTE *buffer;	TSS_RESULT result;	if (send_to_socket(hte->socket, hte->comm.buf, hte->comm.hdr.packet_size) < 0) {		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	buffer = hte->comm.buf;	recv_size = sizeof(struct tcsd_packet_hdr);	if ((recv_size = recv_from_socket(hte->socket, buffer, recv_size)) < 0) {		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	buffer += recv_size;            /* increment the receive buffer pointer */	/* check the packet size */	recv_size = Decode_UINT32(hte->comm.buf);	if (recv_size < (int)sizeof(struct tcsd_packet_hdr)) {		LogError("Packet to receive from socket %d is too small (%d bytes)",				hte->socket, recv_size);		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	if (recv_size > hte->comm.buf_size ) {		BYTE *new_buffer;		LogDebug("Increasing communication buffer to %d bytes.", recv_size);		new_buffer = realloc(hte->comm.buf, recv_size);		if (new_buffer == NULL) {			LogError("realloc of %d bytes failed.", recv_size);			result = TSPERR(TSS_E_OUTOFMEMORY);			goto err_exit;		}		buffer = new_buffer + sizeof(struct tcsd_packet_hdr);		hte->comm.buf_size = recv_size;		hte->comm.buf = new_buffer;	}	/* get the rest of the packet */	recv_size -= sizeof(struct tcsd_packet_hdr);    /* already received the header */	if ((recv_size = recv_from_socket(hte->socket, buffer, recv_size)) < 0) {		result = TSPERR(TSS_E_COMM_FAILURE);		goto err_exit;	}	return TSS_SUCCESS;err_exit:	return result;}/* XXX this should be moved out of an RPC-specific file */shortget_port(void){	char *env_port;	int port = 0;	env_port = getenv("TSS_TCSD_PORT");	if (env_port == NULL)		return TCSD_DEFAULT_PORT;	port = atoi(env_port);	if (port == 0 || port > 65535)		return TCSD_DEFAULT_PORT;	return (short)port;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清dvd| 日韩精品资源二区在线| 久久国产日韩欧美精品| 国产精品久久久久久久蜜臀| 91精品久久久久久蜜臀| 91最新地址在线播放| 久久成人免费日本黄色| 亚洲一级不卡视频| 国产精品美女www爽爽爽| 91精品国产综合久久国产大片| 99国产精品国产精品久久| 狠狠色丁香婷综合久久| 丝瓜av网站精品一区二区 | 欧美精品vⅰdeose4hd| 丁香六月久久综合狠狠色| 免费在线观看一区二区三区| 亚洲一区在线观看网站| 亚洲色图19p| 中文字幕av一区二区三区高| 精品国产青草久久久久福利| 欧美一级一区二区| 欧美日韩三级一区| 色老汉一区二区三区| 成人免费的视频| 国产精品中文字幕欧美| 麻豆91免费观看| 男人的j进女人的j一区| 男女男精品视频| 美女脱光内衣内裤视频久久网站| 亚洲国产综合视频在线观看| 亚洲免费观看高清完整版在线| 中文字幕亚洲电影| 欧美极品xxx| 国产精品色在线观看| 欧美国产日韩精品免费观看| 欧美激情资源网| 中文久久乱码一区二区| 国产精品久久久久久户外露出 | 国产精品国产三级国产aⅴ无密码| 精品欧美一区二区久久| 欧美变态口味重另类| 精品国内片67194| 国产性做久久久久久| 中文字幕一区二区三区在线播放| 国产精品丝袜久久久久久app| 日本一区二区三区久久久久久久久不 | 欧美日韩一区二区三区四区五区| 在线影院国内精品| 91精品国产手机| xnxx国产精品| 日韩理论片网站| 五月综合激情日本mⅴ| 日本不卡一区二区三区| 九一久久久久久| 国产成人综合在线| aa级大片欧美| 欧美性大战久久久| 日韩一区二区高清| 国产欧美日韩另类一区| 中文字幕亚洲电影| 天天操天天干天天综合网| 日本在线观看不卡视频| 国产乱码字幕精品高清av| 9人人澡人人爽人人精品| 色综合久久久久综合体| 欧美日韩一区二区三区不卡| 日韩午夜在线播放| 国产精品视频线看| 亚洲福利一区二区| 狠狠色丁香久久婷婷综合丁香| 成人涩涩免费视频| 欧美探花视频资源| 久久婷婷一区二区三区| 亚洲男女一区二区三区| 视频一区中文字幕国产| 国产精品123| 欧美午夜不卡在线观看免费| 欧美成人猛片aaaaaaa| 另类小说欧美激情| av激情综合网| 欧美成人vr18sexvr| 亚洲三级在线免费观看| 毛片不卡一区二区| 99久久久久久99| 欧美福利视频导航| 国产精品三级电影| 奇米精品一区二区三区在线观看一| 高清不卡一区二区在线| 欧美日韩免费观看一区三区| 欧美国产视频在线| 日韩**一区毛片| 91免费看片在线观看| 精品国产免费久久| 亚洲线精品一区二区三区| 国产不卡视频在线播放| 欧美一区二区三区在线观看| 亚洲少妇30p| 国产精品一区久久久久| 欧美一区二区视频免费观看| 一区二区成人在线| 成人免费毛片aaaaa**| 日韩免费观看2025年上映的电影| 亚洲狼人国产精品| 成人app在线| 久久久精品人体av艺术| 日精品一区二区| 在线视频你懂得一区| 国产精品久久久久桃色tv| 久久99国产精品免费| 欧美日韩一区小说| 亚洲精品你懂的| av亚洲产国偷v产偷v自拍| 久久精品网站免费观看| 精品一区二区三区香蕉蜜桃| 精品1区2区3区| 亚洲国产综合视频在线观看| 91麻豆精品视频| 国产精品国产三级国产aⅴ中文| 国产乱码一区二区三区| 久久一二三国产| 久久成人羞羞网站| 日韩视频在线永久播放| 首页亚洲欧美制服丝腿| 欧美久久婷婷综合色| 亚洲一区在线看| 欧美日韩视频在线第一区 | 国产精品1区2区3区在线观看| 欧美一区欧美二区| 美女尤物国产一区| 91精品国产高清一区二区三区蜜臀 | 亚洲欧美乱综合| 91免费版在线| 亚洲乱码国产乱码精品精的特点| 99视频热这里只有精品免费| 中文字幕中文字幕中文字幕亚洲无线| 国产成人亚洲精品狼色在线| 国产网站一区二区| www.亚洲色图| 亚洲人成网站在线| 在线视频中文字幕一区二区| 亚洲成人免费视频| 欧美一卡2卡3卡4卡| 久久se精品一区精品二区| 久久综合色8888| 国产成都精品91一区二区三| 国产精品久久久久久久浪潮网站| 成人高清免费观看| 亚洲精品国产精华液| 欧美系列一区二区| 欧美aaa在线| 国产日韩欧美制服另类| 成人手机在线视频| 亚洲国产成人av好男人在线观看| 欧美日韩国产不卡| 精东粉嫩av免费一区二区三区| 国产欧美日韩激情| 在线免费观看一区| 麻豆91精品91久久久的内涵| 午夜精品久久久久久久久| 精品精品欲导航| 成人激情午夜影院| 亚洲国产日韩一级| 欧美tickling挠脚心丨vk| 成人在线视频一区| 亚洲成a人v欧美综合天堂| 欧美成人三级在线| 91视视频在线观看入口直接观看www | 日韩电影在线看| 久久久精品免费免费| 色综合久久久久综合99| 日韩中文字幕区一区有砖一区| 欧美不卡123| 日本道色综合久久| 久久超级碰视频| 最新日韩在线视频| 日韩一区和二区| av激情综合网| 日本三级韩国三级欧美三级| 欧美激情综合五月色丁香| 精品视频色一区| 成人永久免费视频| 日本v片在线高清不卡在线观看| 亚洲国产经典视频| 日韩一区二区在线看片| 色综合久久久久网| 狠狠色狠狠色综合| 亚洲综合av网| 日本一区二区视频在线| 欧美一区二区在线视频| 97精品久久久午夜一区二区三区| 日韩不卡一区二区三区| 亚洲色图一区二区三区| 日韩精品中文字幕一区| 日本高清免费不卡视频| 国产精品一区二区男女羞羞无遮挡 | 亚洲色图丝袜美腿| 国产欧美综合在线观看第十页| 欧美日韩免费一区二区三区 | 欧美成人伊人久久综合网| 在线观看日韩高清av|