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

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

?? tcp.c

?? udp,tcp/ip在智能家居芯片上的代碼實現.包括芯片NE64的網絡驅動源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
#include <debug.h>
#include <datatypes.h>
#include <timers.h>
#include <ethernet.h>

#if defined(IPv6)
	#include <ipv6.h>
	extern struct _in6_addr LocalIP;
#else
	#include <ip.h>
#endif

#include <tcp_ip.h>
#include <system.h>

/**	\brief Used for storing field information about the received TCP packet
 *	
 *	Various fields from the TCP packet are stored in this variable. These
 *	values are then used to perform the necessary actions as defined 
 *	by the TCP specification: correctnes of the received TCP packet is
 *	checked by analyzing these fields, appropriate socket data is adjusted
 *	and/or control packet is sent based on it. See tcp_frame definition 
 * 	for struct information.
 */
struct tcp_frame received_tcp_packet;

/** \brief TCP table holding connection parameters for every TCP socket 
 *
 *	TCP table is an array of tcp_socket structures holding all of the 
 * necessary information about the state, timers, timeouts and sequence
 *	and port numbers of the TCP sockets opened. Number of TCP sockets
 *	that can be opened at any given time is defined by the #NO_OF_TCPSOCKETS
 *	and may be changed in order to change the amount of used RAM memory.
 *	See tcb definition for more information about the structure itself.
 *
 *	\note As seen in the code, an array size is actually bigger for one
 *	than the #NO_OF_TCPSOCKETS defines. The last entry is used for sending
 *	control packets as answers to incoming TCP packets that do not map 
 *	to any existing TCP sockets.
 */
struct tcb tcp_socket[NO_OF_TCPSOCKETS + 1]; 

UINT8 tcp_tempbuf[MIN_TCP_HLEN + 1]; /**< Temporary buffer used for sending TCP control packets */


/***********************************************************************/
/*******	TCP API functions									********/
/***********************************************************************/

/** \brief Allocate a free socket in TCP socket pool
 *  \ingroup tcp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 21.07.2002
 *	\param soctype type of socket wanted. Can take one of the following
 *		values:
 *		\li #TCP_TYPE_NONE
 *		\li #TCP_TYPE_SERVER
 *		\li #TCP_TYPE_CLIENT
 *		\li #TCP_TYPE_CLIENT_SERVER
 *	\param tos type of service for socket. For now only #TCP_TOS_NORMAL.
 *	\param tout Timeout of socket in seconds. Defines after how many seconds
 *		of inactivity (application not sending and/or receiving any data
 *		over TCP connection) will the TCP socket automatically be closed.
 *	\param listener pointer to callback function that will be invoked by
 *		the TCP/IP stack to inform socket application of certain events. See
 *		tcpc_demo_eventlistener() and tcps_demo_eventlistener() for more
 *		information on events and possible actions.
 *	\return 
 *		\li -1 - Error getting requested socket
 *		\li >=0 - Handle to reserved socket
 *
 *	Invoke this function to try to obtain a free socket from TCP socket pool.
 *	Function returns a handle to the free socket that is later used for 
 *	accessing the allocated socket (opening, connecting, sending data,
 *	closing, aborting, etc.).
 */
#ifdef IPv6
INT8 tcp_getsocket (UINT8 soctype, UINT8 tos, UINT16 tout, INT32 (*listener)(INT8, UINT8, IPv6Addr*, UINT32) )
#else
INT8 tcp_getsocket (UINT8 soctype, UINT8 tos, UINT16 tout, INT32 (*listener)(INT8, UINT8, UINT32, UINT32) )
#endif
{
	INT8 i;
	struct tcb* soc;
	
	if( NO_OF_TCPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_TCPSOCKETS == 0 )
		return(-1);
	
	if( (soctype != TCP_TYPE_SERVER) &&
		(soctype != TCP_TYPE_CLIENT) &&
		(soctype != TCP_TYPE_CLIENT_SERVER) &&
		(soctype != TCP_TYPE_NONE)				) {
		TCP_DEBUGOUT("Invalid socket type requested\r\n");
		return(-1);
	}
	
	if(listener == 0) {
		TCP_DEBUGOUT("ERROR:Event listener function not specified\r\n");
		return(-1);
	}
	
	TCP_DEBUGOUT("Searching for free TCP socket...\r\n");
	
	for(i=0; i < NO_OF_TCPSOCKETS; i++)	{
		soc = &tcp_socket[i];			/* Get Socket	*/
	
		if(soc->state == TCP_STATE_FREE) {
			/* We found it	*/
			
			TCP_DEBUGOUT("Free socket found\r\n");
			
			soc->state = TCP_STATE_RESERVED;
			soc->type = soctype;
			soc->tos = tos;
			soc->event_listener = listener;
#ifdef IPv6
//			memset (&soc->rem_ip->u.byte[0],0,sizeof(IPv6Addr));
			soc->rem_ip = (void *)0x0000;
#else
			soc->rem_ip = 0;
#endif	
			soc->remport = 0;
			soc->locport = 0;
			soc->flags = 0;
			soc->tout = tout*TIMERTIC;
			
			return(i);
		}
	
	}
	
	/* We are there so no socket found	*/
	
	TCP_DEBUGOUT("No socket found\r\n");
	return(-1);

}

/** \brief Release a TCP socket
 *  \ingroup tcp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 21.07.2002
 *	\param sochandle handle to socket to be released
 *	\return 
 *		\li -1 - Error releasing the socket (Wrong socket handle or socket
 *		not in proper state to be released)
 *		\li >=0 - handle of the released socket (can not be used any more
 *		untill allocated again with tcp_getsocket()).
 *
 *	Once the application does not need the TCP socket any more it can invoke
 *	this function in order to release it. This is usefull if there is a very
 *	limited number of sockets (in order to save some memory) shared among
 *	several applications.
 */
INT8 tcp_releasesocket (INT8 sochandle)
{
	struct tcb* soc;
	
	if( NO_OF_TCPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_TCPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_TCPSOCKETS ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	soc = &tcp_socket[sochandle];		/* Get referense	*/
	
	if( (soc->state != TCP_STATE_FREE) &&
		(soc->state != TCP_STATE_RESERVED) &&
		(soc->state != TCP_STATE_CLOSED)		) {
		TCP_DEBUGOUT("Socket is not on valid state to be released\r\n");
		return(-1);
	}
	
	/* We are there so all OK	*/
	
	soc->state = TCP_STATE_FREE;
	soc->type = TCP_TYPE_NONE;
	soc->tos = 0;
	soc->event_listener = 0;
	soc->rem_ip = 0;
	soc->remport = 0;
	soc->locport = 0;
	soc->flags = 0;
	
	return(sochandle);

}

/** \brief Put TCP socket to listen on a given port
 *  \ingroup tcp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 21.07.2002
 *	\param sochandle handle to socket to be placed to listen state
 *	\param port TCP port number on which it should listen
 *	\return
 *		\li -1 - Error
 *		\li >=0 - OK (Socket put to listening state. Handle to 
 *		socket returned)
 *
 *	This function will attempt to put socket to listening state. This
 *	is only possible if socket was defined as either #TCP_TYPE_SERVER or
 *	#TCP_TYPE_CLIENT_SERVER. If basic correctness checks pass, socket is 
 *	put to listening mode and corresponding tcb entry is initialized.
 *
 */
INT8 tcp_listen (INT8 sochandle, UINT16 port)
{
	struct tcb* soc;

	if( NO_OF_TCPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_TCPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_TCPSOCKETS ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	soc = &tcp_socket[sochandle];		/* Get referense	*/
		
	if( (soc->type & TCP_TYPE_SERVER) == 0 ) {
		TCP_DEBUGOUT("Socket has no server properties\r\n");
		return(-1);
	}
	
	if( soc->event_listener == 0) {
		TCP_DEBUGOUT("ERROR:No event listener function specified\r\n");
		return(-1);
	}
	
	
	if( (soc->state != TCP_STATE_RESERVED) &&
		(soc->state != TCP_STATE_LISTENING)	&&
		(soc->state != TCP_STATE_CLOSED) &&		
		(soc->state != TCP_STATE_TIMED_WAIT)		) {
		TCP_DEBUGOUT("Not possible to listen, socket on connected state\r\n");
		return(-1);
	
	}
	
			
	/* Init socket		*/
				
	soc->state = TCP_STATE_LISTENING;
	/*soc->type = TCP_TYPE_SERVER;*/
	soc->flags = 0;
	soc->rem_ip = 0;
	soc->remport = 0;
	soc->locport = port;
	soc->send_unacked = 0;
	soc->myflags = 0;
	soc->send_next = 0xFFFFFFFF;
	soc->send_mtu = TCP_DEF_MTU;
	soc->receive_next = 0;
	soc->retries_left = 0;
			
	TCP_DEBUGOUT("TCP listening socket created\r\n");
			
	return(sochandle);

}


/** \brief Initialize connection establishment towards remote IP&port
 *  \ingroup tcp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 21.07.2002
 *	\param sochandle handle to socket to be used for connection establishment
 *	\param ip remote IP address to connect to 
 *	\param rport remote port number to connect to
 *	\param myport local port to use for connection. This value can be
 *		specified directly or, if a value of 0 is given, TCP module will
 *		determine local TCP port automatically.
 *	\return 
 *		\li -1 - Error
 *		\li >=0 - OK (Connection establishment procedure started. Socket handle
 *			returned.)
 *
 *	Invoke this function to start connection establishment procedure towards
 *	remote host over some socket. This is only possible if socket was
 *	defined as either #TCP_TYPE_CLIENT or #TCP_TYPE_CLIENT_SERVER. Function 
 *	will make some basic checks and if everything is OK, corresponding tcb
 *	socket entry will be initialized and connection procedure started.
 */
#ifdef IPv6
INT8 tcp_connect (INT8 sochandle, struct _in6_addr* ip, UINT16 rport, UINT16 myport )
#else
INT8 tcp_connect (INT8 sochandle, UINT32 ip, UINT16 rport, UINT16 myport )
#endif
{
	struct tcb* soc;
	
	TCP_DEBUGOUT("FUNCTION: tcp_connect\r\n");

	if( NO_OF_TCPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_TCPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_TCPSOCKETS ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	/* Is the local port defined	*/
	
	if( myport == 0 )
		myport = tcp_getfreeport();
	
	if( myport == 0 )
		return(-1);
	
	soc = &tcp_socket[sochandle];		/* Get referense	*/
	
	/* Do we have client properties?	*/
	
	if( (soc->type & TCP_TYPE_CLIENT) == 0 ) {
		TCP_DEBUGOUT("Socket has no client properties\r\n");
		return(-1);
	}
	
	if( soc->event_listener == 0) {
		TCP_DEBUGOUT("ERROR:No event listener function specified\r\n");
		return(-1);
	}
	
	/* Are we on LISTENING, RESERVED or CLOSED state	*/
	
	if( (soc->state != TCP_STATE_RESERVED) &&
		(soc->state != TCP_STATE_LISTENING) &&
		(soc->state != TCP_STATE_CLOSED)		) {
		TCP_DEBUGOUT("Socket on unvalid state to initialize CONNECT\r\n");
		return(-1);
	}
	
	/* Then just set parameters and send SYN	*/
	
	soc->rem_ip = ip;
	soc->remport = rport;
	soc->locport = myport;
	soc->flags = 0;
	soc->send_mtu = TCP_DEF_MTU;
	
	/* get initial sequence number	*/
	
	soc->send_unacked = tcp_initseq(); 
	soc->send_next = soc->send_unacked + 1;
	soc->myflags = TCP_FLAG_SYN;
	tcp_sendcontrol(sochandle);
	tcp_newstate(soc, TCP_STATE_SYN_SENT);
	
	return(sochandle);
}



/** \brief Send user data over TCP using given TCP socket
 *  \ingroup tcp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 25.07.2002
 *	\param sockethandle handle to TCP socket to be used for sending data
 *	\param buf pointer to data buffer (start of user data)
 *	\param blen buffer length in bytes (without space reserved at the
 *		beginning of buffer for headers)
 *	\param dlen length of user data to be sent (in bytes)
 *	\return 
 *		\li -1 - Error
 *		\li >0 - OK (number represents number of bytes actually sent)
 *
 *	\warning
 *		\li <i>buf</i> parameter is a pointer to data to be sent in 
 *		user buffer. But note that there <b>MUST</b> be sufficient
 *		free buffer space before that data for TCP header (of #MIN_TCP_HLEN
 *		size). 
 *
 *	Invoke this function to initiate data sending over TCP connection
 *	established over a TCP socket. Since data is not buffered (in order
 *	to reduce RAM memory consumption) new data can not be sent until
 *	data that was previously sent is acknowledged. So, application knows when
 *	it can send new data either by:
 *		\li waiting for TCP_EVENT_ACK in event_listener function
 *		\li invoking tcp_check_send() function to check if it is possible
 *			to send data
 *
 */
INT16 tcp_send (INT8 sockethandle, UINT8* buf, UINT16 blen, UINT16 dlen)
{
	struct tcb* soc;
	
	TCP_DEBUGOUT("Entering to send TCP data packet\r\n");
	
	kick_WD();
	
	if( sockethandle < 0 ) {
		TCP_DEBUGOUT("ERROR:Socket Handle not valid (<0)\r\n");
		return(-1);
	}
	
	if( sockethandle > NO_OF_TCPSOCKETS ) {
		TCP_DEBUGOUT("ERROR:Socket Handle not valid (>NO_OF_TCPSOCKETS)\r\n");
		return(-1);
	}
	
	soc = &tcp_socket[sockethandle];				/* Get socket	*/
	
	if(soc->state != TCP_STATE_CONNECTED) {
		TCP_DEBUGOUT("TCP is not connected!!\r\n");
		return(-1);
	}
	
	if(soc->send_unacked != soc->send_next) {
		TCP_DEBUGOUT("TCP contains unacked data, cannot send more\r\n");
		return(-1);
	}
	
	if( dlen > blen )
		dlen = blen;
	
	if(dlen + MIN_TCP_HLEN > soc->send_mtu) {
		if(soc->send_mtu > MIN_TCP_HLEN)
			dlen = soc->send_mtu - MIN_TCP_HLEN;
		else
			return(-1);
	}
	
	soc->send_next += dlen;
	
	soc->myflags = TCP_FLAG_ACK | TCP_FLAG_PUSH;
	process_tcp_out(sockethandle, buf - MIN_TCP_HLEN, blen + MIN_TCP_HLEN + 1, dlen);
	
	return(dlen);
}


/** \brief Initiate TCP connection closing procedure
 *  \ingroup tcp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 21.07.2002
 *	\param sochandle handle to socket on which TCP connection is to be closed
 *	\return 
 *		\li -2 - there is unacked data on this socket. Try again later.
 *		\li -1 - Error
 *		\li >=0 - OK (connection closing procedure started. Handle to socket
 *			returned)
 *
 *	Invoke this function to start connetion closing procedure over a given
 *	socket. Note that connection is not immediately closed. It may take some
 *	time for that to happen. Event_listener function will be invoked with 
 *	appropriate event when that really happens.
 */
INT8 tcp_close (INT8 sochandle)
{
	struct tcb* soc;
	
	TCP_DEBUGOUT("FUNCTION: tcp_close\r\n");

	if( NO_OF_TCPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_TCPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_TCPSOCKETS ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		TCP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	soc = &tcp_socket[sochandle];		/* Get referense	*/	
	
	switch(soc->state) {
		case TCP_STATE_LISTENING:
			tcp_newstate(soc, TCP_STATE_CLOSED);
			break;
		
		case TCP_STATE_SYN_RECEIVED:
			soc->myflags = TCP_FLAG_ACK | TCP_FLAG_FIN;
			soc->send_unacked++;
			soc->send_next++;
			tcp_sendcontrol(sochandle);
			tcp_newstate(soc, TCP_STATE_FINW1);
			break;
		
		case TCP_STATE_SYN_SENT:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产制服丝袜高跟| 午夜精品在线视频一区| 一级女性全黄久久生活片免费| 日韩激情av在线| 色综合色综合色综合| 久久久久久久久久看片| 26uuu另类欧美| 日韩综合小视频| 一本久道中文字幕精品亚洲嫩| 久久久精品中文字幕麻豆发布| 视频一区二区欧美| 日本精品免费观看高清观看| 亚洲国产高清在线观看视频| 国产呦精品一区二区三区网站| 欧美日韩激情在线| 亚洲一区二区综合| 99国产精品国产精品久久| 26uuu国产一区二区三区| 美女视频黄a大片欧美| 欧美日韩国产欧美日美国产精品| 欧美国产激情二区三区 | 蜜臀精品一区二区三区在线观看| 国产在线精品一区二区夜色| 欧美丰满美乳xxx高潮www| 亚洲综合一区二区精品导航| 在线影院国内精品| 亚洲黄色av一区| 欧美亚洲一区二区在线| 亚洲欧洲综合另类| 色婷婷久久久久swag精品| 综合亚洲深深色噜噜狠狠网站| 成人黄色软件下载| 亚洲欧洲av色图| 色综合久久久网| 亚洲小说春色综合另类电影| 欧美蜜桃一区二区三区| 视频一区视频二区在线观看| 欧美一区二区三区男人的天堂| 美女尤物国产一区| 久久午夜国产精品| 国产·精品毛片| 亚洲欧美aⅴ...| 欧美日韩在线播放三区四区| 婷婷丁香久久五月婷婷| 91精品国产品国语在线不卡| 久久精品国产99| 国产精品嫩草久久久久| 93久久精品日日躁夜夜躁欧美| 亚洲一区在线观看免费 | 色狠狠桃花综合| 亚洲国产一区视频| 日韩欧美三级在线| 国产v综合v亚洲欧| 一区二区三区在线视频免费 | 亚洲色图19p| 91色视频在线| 香蕉久久夜色精品国产使用方法| 91精品国产高清一区二区三区蜜臀 | 精品久久人人做人人爰| 处破女av一区二区| 一区二区高清视频在线观看| 欧美一区二区免费视频| 成人久久18免费网站麻豆 | 中文字幕+乱码+中文字幕一区| 91免费观看在线| 日韩电影在线免费看| 国产精品视频yy9299一区| 欧美伊人久久久久久午夜久久久久| 视频一区视频二区中文| 中文字幕乱码亚洲精品一区| 91精品在线观看入口| 成人一级片网址| 亚洲国产日韩综合久久精品| 久久综合久色欧美综合狠狠| 在线视频国内一区二区| 国产一区久久久| 亚洲1区2区3区4区| 国产精品福利一区二区| 欧美大白屁股肥臀xxxxxx| 色婷婷激情综合| 国产成人免费视| 热久久免费视频| 亚洲欧美国产三级| 久久精品免费在线观看| 4hu四虎永久在线影院成人| a美女胸又www黄视频久久| 韩国欧美一区二区| 日韩成人av影视| 亚洲综合激情另类小说区| 国产欧美视频在线观看| 精品国产91乱码一区二区三区| 欧美日韩综合色| 色婷婷综合在线| 9久草视频在线视频精品| 国产九色sp调教91| 免费成人av资源网| 亚洲3atv精品一区二区三区| 亚洲另类色综合网站| 中文字幕不卡在线| 国产视频在线观看一区二区三区| 日韩欧美在线综合网| 91精品国产品国语在线不卡| 欧美在线制服丝袜| 欧美怡红院视频| 欧美性生活影院| 日本韩国精品在线| 91久久精品日日躁夜夜躁欧美| 成人黄色一级视频| 成人免费毛片app| 成人av电影免费在线播放| 国产成人8x视频一区二区| 国内精品视频一区二区三区八戒| 久久精品国产在热久久| 精品一区免费av| 国产裸体歌舞团一区二区| 国产在线播放一区二区三区| 国产精品99久久久久久似苏梦涵 | 久久久夜色精品亚洲| 精品福利二区三区| 26uuu久久综合| 国产精品无人区| 亚洲三级理论片| 亚洲成国产人片在线观看| 丝袜a∨在线一区二区三区不卡| 日韩精品一二三区| 精品在线亚洲视频| 丰满白嫩尤物一区二区| av网站一区二区三区| 色av一区二区| 欧美一区二区黄色| 久久精品亚洲国产奇米99| 亚洲国产精品t66y| 亚洲午夜久久久久久久久久久 | www.欧美精品一二区| 色综合久久88色综合天天6| 欧美日韩一区二区在线观看视频| 欧美精品xxxxbbbb| 国产亚洲福利社区一区| 亚洲男人的天堂在线观看| 午夜精品久久久久久久| 国产精品系列在线播放| 一道本成人在线| 日韩小视频在线观看专区| 久久久电影一区二区三区| 亚洲欧美另类在线| 秋霞成人午夜伦在线观看| 国产999精品久久久久久| 日本精品免费观看高清观看| 日韩精品中午字幕| 亚洲精品久久久蜜桃| 蜜桃91丨九色丨蝌蚪91桃色| av资源站一区| 欧美www视频| 亚洲综合在线第一页| 国产乱人伦偷精品视频不卡| 欧美一a一片一级一片| 久久一区二区三区四区| 一区二区三区四区在线播放 | 极品尤物av久久免费看| 91在线观看一区二区| 欧美一区二区三区婷婷月色| 国产精品电影院| 久久国产麻豆精品| 91福利在线播放| 中文av一区特黄| 久久国产精品色| 欧美日韩中字一区| 最近日韩中文字幕| 国产凹凸在线观看一区二区| 欧美一级日韩免费不卡| 亚洲靠逼com| 国产精品69久久久久水密桃| 欧美精品丝袜久久久中文字幕| 亚洲特级片在线| 成人综合日日夜夜| 欧美xxxx在线观看| 日本va欧美va精品| 精品污污网站免费看| 亚洲欧美一区二区三区孕妇| 国产精品18久久久久久久久| 日韩一区二区视频| 午夜激情久久久| 欧美性受xxxx| 亚洲午夜久久久| 日本道精品一区二区三区| 中文字幕不卡的av| 成人涩涩免费视频| 久久久精品综合| 国产麻豆视频一区二区| 欧美精品一区二区久久久| 男人操女人的视频在线观看欧美| 欧美做爰猛烈大尺度电影无法无天| 《视频一区视频二区| 91麻豆6部合集magnet| 亚洲婷婷综合久久一本伊一区| 成人av在线网| 亚洲人成网站影音先锋播放| 97se亚洲国产综合在线| 亚洲精品国久久99热| 欧美在线观看你懂的|