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

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

?? associola.c

?? 在linux環境下的流控制傳輸協議(sctp)的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* SCTP kernel implementation * (C) Copyright IBM Corp. 2001, 2004 * Copyright (c) 1999-2000 Cisco, Inc. * Copyright (c) 1999-2001 Motorola, Inc. * Copyright (c) 2001 Intel Corp. * Copyright (c) 2001 La Monte H.P. Yarroll * * This file is part of the SCTP kernel implementation * * This module provides the abstraction for an SCTP association. * * This SCTP implementation is free software; * you can redistribute it and/or modify it under the terms of * the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This SCTP implementation is distributed in the hope that it * will be useful, but WITHOUT ANY WARRANTY; without even the implied *                 ************************ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU CC; see the file COPYING.  If not, write to * the Free Software Foundation, 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * Please send any bug reports or fixes you make to the * email address(es): *    lksctp developers <lksctp-developers@lists.sourceforge.net> * * Or submit a bug report through the following website: *    http://www.sf.net/projects/lksctp * * Written or modified by: *    La Monte H.P. Yarroll <piggy@acm.org> *    Karl Knutson          <karl@athena.chicago.il.us> *    Jon Grimm             <jgrimm@us.ibm.com> *    Xingang Guo           <xingang.guo@intel.com> *    Hui Huang             <hui.huang@nokia.com> *    Sridhar Samudrala	    <sri@us.ibm.com> *    Daisy Chang	    <daisyc@us.ibm.com> *    Ryan Layer	    <rmlayer@us.ibm.com> *    Kevin Gao             <kevin.gao@intel.com> * * Any bugs reported given to us we will try to fix... any fixes shared will * be incorporated into the next SCTP release. */#include <linux/types.h>#include <linux/fcntl.h>#include <linux/poll.h>#include <linux/init.h>#include <linux/slab.h>#include <linux/in.h>#include <net/ipv6.h>#include <net/sctp/sctp.h>#include <net/sctp/sm.h>/* Forward declarations for internal functions. */static void sctp_assoc_bh_rcv(struct work_struct *work);static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc);/* 1st Level Abstractions. *//* Initialize a new association from provided memory. */static struct sctp_association *sctp_association_init(struct sctp_association *asoc,					  const struct sctp_endpoint *ep,					  const struct sock *sk,					  sctp_scope_t scope,					  gfp_t gfp){	struct sctp_sock *sp;	int i;	sctp_paramhdr_t *p;	int err;	/* Retrieve the SCTP per socket area.  */	sp = sctp_sk((struct sock *)sk);	/* Init all variables to a known value.  */	memset(asoc, 0, sizeof(struct sctp_association));	/* Discarding const is appropriate here.  */	asoc->ep = (struct sctp_endpoint *)ep;	sctp_endpoint_hold(asoc->ep);	/* Hold the sock.  */	asoc->base.sk = (struct sock *)sk;	sock_hold(asoc->base.sk);	/* Initialize the common base substructure.  */	asoc->base.type = SCTP_EP_TYPE_ASSOCIATION;	/* Initialize the object handling fields.  */	atomic_set(&asoc->base.refcnt, 1);	asoc->base.dead = 0;	asoc->base.malloced = 0;	/* Initialize the bind addr area.  */	sctp_bind_addr_init(&asoc->base.bind_addr, ep->base.bind_addr.port);	asoc->state = SCTP_STATE_CLOSED;	/* Set these values from the socket values, a conversion between	 * millsecons to seconds/microseconds must also be done.	 */	asoc->cookie_life.tv_sec = sp->assocparams.sasoc_cookie_life / 1000;	asoc->cookie_life.tv_usec = (sp->assocparams.sasoc_cookie_life % 1000)					* 1000;	asoc->frag_point = 0;	/* Set the association max_retrans and RTO values from the	 * socket values.	 */	asoc->max_retrans = sp->assocparams.sasoc_asocmaxrxt;	asoc->rto_initial = msecs_to_jiffies(sp->rtoinfo.srto_initial);	asoc->rto_max = msecs_to_jiffies(sp->rtoinfo.srto_max);	asoc->rto_min = msecs_to_jiffies(sp->rtoinfo.srto_min);	asoc->overall_error_count = 0;	/* Initialize the association's heartbeat interval based on the	 * sock configured value.	 */	asoc->hbinterval = msecs_to_jiffies(sp->hbinterval);	/* Initialize path max retrans value. */	asoc->pathmaxrxt = sp->pathmaxrxt;	/* Initialize default path MTU. */	asoc->pathmtu = sp->pathmtu;	/* Set association default SACK delay */	asoc->sackdelay = msecs_to_jiffies(sp->sackdelay);	/* Set the association default flags controlling	 * Heartbeat, SACK delay, and Path MTU Discovery.	 */	asoc->param_flags = sp->param_flags;	/* Initialize the maximum mumber of new data packets that can be sent	 * in a burst.	 */	asoc->max_burst = sp->max_burst;	/* initialize association timers */	asoc->timeouts[SCTP_EVENT_TIMEOUT_NONE] = 0;	asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = asoc->rto_initial;	asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc->rto_initial;	asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = asoc->rto_initial;	asoc->timeouts[SCTP_EVENT_TIMEOUT_T3_RTX] = 0;	asoc->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = 0;	/* sctpimpguide Section 2.12.2	 * If the 'T5-shutdown-guard' timer is used, it SHOULD be set to the	 * recommended value of 5 times 'RTO.Max'.	 */	asoc->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]		= 5 * asoc->rto_max;	asoc->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] = 0;	asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc->sackdelay;	asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] =		sp->autoclose * HZ;	/* Initilizes the timers */	for (i = SCTP_EVENT_TIMEOUT_NONE; i < SCTP_NUM_TIMEOUT_TYPES; ++i)		setup_timer(&asoc->timers[i], sctp_timer_events[i],				(unsigned long)asoc);	/* Pull default initialization values from the sock options.	 * Note: This assumes that the values have already been	 * validated in the sock.	 */	asoc->c.sinit_max_instreams = sp->initmsg.sinit_max_instreams;	asoc->c.sinit_num_ostreams  = sp->initmsg.sinit_num_ostreams;	asoc->max_init_attempts	= sp->initmsg.sinit_max_attempts;	asoc->max_init_timeo =		 msecs_to_jiffies(sp->initmsg.sinit_max_init_timeo);	/* Allocate storage for the ssnmap after the inbound and outbound	 * streams have been negotiated during Init.	 */	asoc->ssnmap = NULL;	/* Set the local window size for receive.	 * This is also the rcvbuf space per association.	 * RFC 6 - A SCTP receiver MUST be able to receive a minimum of	 * 1500 bytes in one SCTP packet.	 */	if ((sk->sk_rcvbuf/2) < SCTP_DEFAULT_MINWINDOW)		asoc->rwnd = SCTP_DEFAULT_MINWINDOW;	else		asoc->rwnd = sk->sk_rcvbuf/2;	asoc->a_rwnd = asoc->rwnd;	asoc->rwnd_over = 0;	/* Use my own max window until I learn something better.  */	asoc->peer.rwnd = SCTP_DEFAULT_MAXWINDOW;	/* Set the sndbuf size for transmit.  */	asoc->sndbuf_used = 0;	/* Initialize the receive memory counter */	atomic_set(&asoc->rmem_alloc, 0);	init_waitqueue_head(&asoc->wait);	asoc->c.my_vtag = sctp_generate_tag(ep);	asoc->peer.i.init_tag = 0;     /* INIT needs a vtag of 0. */	asoc->c.peer_vtag = 0;	asoc->c.my_ttag   = 0;	asoc->c.peer_ttag = 0;	asoc->c.my_port = ep->base.bind_addr.port;	asoc->c.initial_tsn = sctp_generate_tsn(ep);	asoc->next_tsn = asoc->c.initial_tsn;	asoc->ctsn_ack_point = asoc->next_tsn - 1;	asoc->adv_peer_ack_point = asoc->ctsn_ack_point;	asoc->highest_sacked = asoc->ctsn_ack_point;	asoc->last_cwr_tsn = asoc->ctsn_ack_point;	asoc->unack_data = 0;	/* ADDIP Section 4.1 Asconf Chunk Procedures	 *	 * When an endpoint has an ASCONF signaled change to be sent to the	 * remote endpoint it should do the following:	 * ...	 * A2) a serial number should be assigned to the chunk. The serial	 * number SHOULD be a monotonically increasing number. The serial	 * numbers SHOULD be initialized at the start of the	 * association to the same value as the initial TSN.	 */	asoc->addip_serial = asoc->c.initial_tsn;	INIT_LIST_HEAD(&asoc->addip_chunk_list);	INIT_LIST_HEAD(&asoc->asconf_ack_list);	/* Make an empty list of remote transport addresses.  */	INIT_LIST_HEAD(&asoc->peer.transport_addr_list);	asoc->peer.transport_count = 0;	/* RFC 2960 5.1 Normal Establishment of an Association	 *	 * After the reception of the first data chunk in an	 * association the endpoint must immediately respond with a	 * sack to acknowledge the data chunk.  Subsequent	 * acknowledgements should be done as described in Section	 * 6.2.	 *	 * [We implement this by telling a new association that it	 * already received one packet.]	 */	asoc->peer.sack_needed = 1;	/* Assume that the peer will tell us if he recognizes ASCONF	 * as part of INIT exchange.	 * The sctp_addip_noauth option is there for backward compatibilty	 * and will revert old behavior.	 */	asoc->peer.asconf_capable = 0;	if (sctp_addip_noauth)		asoc->peer.asconf_capable = 1;	/* Create an input queue.  */	sctp_inq_init(&asoc->base.inqueue);	sctp_inq_set_th_handler(&asoc->base.inqueue, sctp_assoc_bh_rcv);	/* Create an output queue.  */	sctp_outq_init(asoc, &asoc->outqueue);	if (!sctp_ulpq_init(&asoc->ulpq, asoc))		goto fail_init;	/* Set up the tsn tracking. */	sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_SIZE, 0);	asoc->need_ecne = 0;	asoc->assoc_id = 0;	/* Assume that peer would support both address types unless we are	 * told otherwise.	 */	asoc->peer.ipv4_address = 1;	asoc->peer.ipv6_address = 1;	INIT_LIST_HEAD(&asoc->asocs);	asoc->autoclose = sp->autoclose;	asoc->default_stream = sp->default_stream;	asoc->default_ppid = sp->default_ppid;	asoc->default_flags = sp->default_flags;	asoc->default_context = sp->default_context;	asoc->default_timetolive = sp->default_timetolive;	asoc->default_rcv_context = sp->default_rcv_context;	/* AUTH related initializations */	INIT_LIST_HEAD(&asoc->endpoint_shared_keys);	err = sctp_auth_asoc_copy_shkeys(ep, asoc, gfp);	if (err)		goto fail_init;	asoc->active_key_id = ep->active_key_id;	asoc->asoc_shared_key = NULL;	asoc->default_hmac_id = 0;	/* Save the hmacs and chunks list into this association */	if (ep->auth_hmacs_list)		memcpy(asoc->c.auth_hmacs, ep->auth_hmacs_list,			ntohs(ep->auth_hmacs_list->param_hdr.length));	if (ep->auth_chunk_list)		memcpy(asoc->c.auth_chunks, ep->auth_chunk_list,			ntohs(ep->auth_chunk_list->param_hdr.length));	/* Get the AUTH random number for this association */	p = (sctp_paramhdr_t *)asoc->c.auth_random;	p->type = SCTP_PARAM_RANDOM;	p->length = htons(sizeof(sctp_paramhdr_t) + SCTP_AUTH_RANDOM_LENGTH);	get_random_bytes(p+1, SCTP_AUTH_RANDOM_LENGTH);	return asoc;fail_init:	sctp_endpoint_put(asoc->ep);	sock_put(asoc->base.sk);	return NULL;}/* Allocate and initialize a new association */struct sctp_association *sctp_association_new(const struct sctp_endpoint *ep,					 const struct sock *sk,					 sctp_scope_t scope,					 gfp_t gfp){	struct sctp_association *asoc;	asoc = t_new(struct sctp_association, gfp);	if (!asoc)		goto fail;	if (!sctp_association_init(asoc, ep, sk, scope, gfp))		goto fail_init;	asoc->base.malloced = 1;	SCTP_DBG_OBJCNT_INC(assoc);	SCTP_DEBUG_PRINTK("Created asoc %p\n", asoc);	return asoc;fail_init:	kfree(asoc);fail:	return NULL;}/* Free this association if possible.  There may still be users, so * the actual deallocation may be delayed. */void sctp_association_free(struct sctp_association *asoc){	struct sock *sk = asoc->base.sk;	struct sctp_transport *transport;	struct list_head *pos, *temp;	int i;	/* Only real associations count against the endpoint, so	 * don't bother for if this is a temporary association.	 */	if (!asoc->temp) {		list_del(&asoc->asocs);		/* Decrement the backlog value for a TCP-style listening		 * socket.		 */		if (sctp_style(sk, TCP) && sctp_sstate(sk, LISTENING))			sk->sk_ack_backlog--;	}	/* Mark as dead, so other users can know this structure is	 * going away.	 */	asoc->base.dead = 1;	/* Dispose of any data lying around in the outqueue. */	sctp_outq_free(&asoc->outqueue);	/* Dispose of any pending messages for the upper layer. */	sctp_ulpq_free(&asoc->ulpq);	/* Dispose of any pending chunks on the inqueue. */	sctp_inq_free(&asoc->base.inqueue);	/* Free ssnmap storage. */	sctp_ssnmap_free(asoc->ssnmap);	/* Clean up the bound address list. */	sctp_bind_addr_free(&asoc->base.bind_addr);	/* Do we need to go through all of our timers and	 * delete them?   To be safe we will try to delete all, but we	 * should be able to go through and make a guess based	 * on our state.	 */	for (i = SCTP_EVENT_TIMEOUT_NONE; i < SCTP_NUM_TIMEOUT_TYPES; ++i) {		if (timer_pending(&asoc->timers[i]) &&		    del_timer(&asoc->timers[i]))			sctp_association_put(asoc);	}	/* Free peer's cached cookie. */	kfree(asoc->peer.cookie);	kfree(asoc->peer.peer_random);	kfree(asoc->peer.peer_chunks);	kfree(asoc->peer.peer_hmacs);	/* Release the transport structures. */	list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {		transport = list_entry(pos, struct sctp_transport, transports);		list_del(pos);		sctp_transport_free(transport);	}	asoc->peer.transport_count = 0;	/* Free any cached ASCONF_ACK chunk. */	sctp_assoc_free_asconf_acks(asoc);	/* Free any cached ASCONF chunk. */	if (asoc->addip_last_asconf)		sctp_chunk_free(asoc->addip_last_asconf);	/* AUTH - Free the endpoint shared keys */	sctp_auth_destroy_keys(&asoc->endpoint_shared_keys);	/* AUTH - Free the association shared key */	sctp_auth_key_put(asoc->asoc_shared_key);	sctp_association_put(asoc);}/* Cleanup and free up an association. */static void sctp_association_destroy(struct sctp_association *asoc){	SCTP_ASSERT(asoc->base.dead, "Assoc is not dead", return);	sctp_endpoint_put(asoc->ep);	sock_put(asoc->base.sk);	if (asoc->assoc_id != 0) {		spin_lock_bh(&sctp_assocs_id_lock);		idr_remove(&sctp_assocs_id, asoc->assoc_id);		spin_unlock_bh(&sctp_assocs_id_lock);	}	BUG_TRAP(!atomic_read(&asoc->rmem_alloc));	if (asoc->base.malloced) {		kfree(asoc);		SCTP_DBG_OBJCNT_DEC(assoc);	}}/* Change the primary destination address for the peer. */void sctp_assoc_set_primary(struct sctp_association *asoc,			    struct sctp_transport *transport){	asoc->peer.primary_path = transport;	/* Set a default msg_name for events. */	memcpy(&asoc->peer.primary_addr, &transport->ipaddr,	       sizeof(union sctp_addr));	/* If the primary path is changing, assume that the	 * user wants to use this new path.	 */	if ((transport->state == SCTP_ACTIVE) ||	    (transport->state == SCTP_UNKNOWN))		asoc->peer.active_path = transport;	/*	 * SFR-CACC algorithm:	 * Upon the receipt of a request to change the primary	 * destination address, on the data structure for the new	 * primary destination, the sender MUST do the following:	 *	 * 1) If CHANGEOVER_ACTIVE is set, then there was a switch	 * to this destination address earlier. The sender MUST set	 * CYCLING_CHANGEOVER to indicate that this switch is a	 * double switch to the same destination address.	 */	if (transport->cacc.changeover_active)		transport->cacc.cycling_changeover = 1;	/* 2) The sender MUST set CHANGEOVER_ACTIVE to indicate that	 * a changeover has occurred.	 */	transport->cacc.changeover_active = 1;	/* 3) The sender MUST store the next TSN to be sent in	 * next_tsn_at_change.	 */	transport->cacc.next_tsn_at_change = asoc->next_tsn;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产日韩a欧美在线观看 | 色天使色偷偷av一区二区| 日本一区二区三区国色天香| 国产a精品视频| 亚洲日韩欧美一区二区在线| 一本大道av一区二区在线播放| 日韩美女啊v在线免费观看| 色婷婷国产精品| 午夜视频在线观看一区二区三区 | 欧美一区午夜精品| 久久av老司机精品网站导航| 国产清纯在线一区二区www| 99久久er热在这里只有精品15| 亚洲综合丝袜美腿| 日韩欧美一区在线| 成人亚洲一区二区一| 亚洲精品欧美综合四区| 91精品国产综合久久精品 | 亚洲电影一区二区| 91精品国产91久久综合桃花| 国产乱码字幕精品高清av| 国产精品国产三级国产aⅴ原创| 在线观看日韩国产| 成人高清在线视频| 一区二区视频在线看| 日韩视频一区二区在线观看| 国产成人在线视频免费播放| 亚洲精品国产a| 精品久久五月天| 91原创在线视频| 久久精品国产精品亚洲红杏 | www.久久久久久久久| 亚洲最新视频在线播放| 欧美精品一区二区三区蜜桃视频| 99国产精品99久久久久久| 日韩激情中文字幕| 专区另类欧美日韩| 精品乱码亚洲一区二区不卡| 色婷婷综合久久久久中文一区二区 | 99久久久免费精品国产一区二区| 亚洲福利视频一区二区| 国产精品久久久久久亚洲伦| 91麻豆精品国产91久久久资源速度 | 国产亚洲一本大道中文在线| 欧美性videosxxxxx| 大胆欧美人体老妇| 精品一区二区久久| 视频一区二区三区中文字幕| 国产精品午夜免费| 日韩免费福利电影在线观看| 精品视频一区二区不卡| 成人黄色大片在线观看| 精品一区二区av| 午夜电影久久久| 亚洲一区二区黄色| 亚洲日本va午夜在线影院| 久久久久久一级片| 欧美tickling网站挠脚心| 欧美日韩一二三区| 一本色道亚洲精品aⅴ| 成人美女在线视频| 国产a精品视频| 国产米奇在线777精品观看| 日韩av网站免费在线| 亚洲无线码一区二区三区| 亚洲乱码国产乱码精品精小说| 欧美激情在线看| 国产丝袜欧美中文另类| 精品国产电影一区二区| 欧美变态口味重另类| 欧美一区二区网站| 欧美久久久一区| 91麻豆精品国产91久久久使用方法| 欧美在线免费观看亚洲| 欧美在线色视频| 欧美日韩免费一区二区三区| 欧美伊人久久久久久午夜久久久久| 一本色道久久综合亚洲精品按摩| 不卡电影免费在线播放一区| 99re亚洲国产精品| 色猫猫国产区一区二在线视频| 91麻豆精品在线观看| 日本精品视频一区二区三区| 一本大道久久a久久综合婷婷 | 麻豆极品一区二区三区| 青青草91视频| 久久99蜜桃精品| 国产美女视频91| 国产不卡高清在线观看视频| 高清不卡在线观看av| 99在线精品视频| 色网综合在线观看| 欧美撒尿777hd撒尿| 88在线观看91蜜桃国自产| 日韩欧美成人激情| 国产肉丝袜一区二区| 中文字幕 久热精品 视频在线| 亚洲欧洲精品天堂一级| 亚洲精品日韩专区silk| 性久久久久久久久| 卡一卡二国产精品| 成人综合日日夜夜| 在线免费亚洲电影| 日韩一区二区影院| 国产欧美一二三区| 一区二区三区四区不卡在线 | 91久久香蕉国产日韩欧美9色| 欧美日韩精品三区| 日韩精品中文字幕在线一区| 国产日韩av一区二区| 亚洲精品日日夜夜| 麻豆视频一区二区| 成人福利视频在线| 欧美年轻男男videosbes| 2017欧美狠狠色| 一区二区在线免费| 国产在线一区二区| 在线观看国产一区二区| 久久综合色之久久综合| 亚洲女同ⅹxx女同tv| 蜜桃久久久久久久| 色综合天天视频在线观看| 欧美一区二区三区免费观看视频| 国产精品全国免费观看高清 | 国产精品萝li| 日韩精品一二三四| 99视频一区二区| 欧美videos中文字幕| 一区二区三区四区不卡视频| 韩国欧美国产1区| 精品视频1区2区3区| 欧美激情一区二区三区全黄| 亚洲成av人**亚洲成av**| 成人一区二区三区视频| 日韩欧美一区二区视频| 亚洲制服丝袜av| 成人免费看片app下载| 日韩欧美在线综合网| 一区二区久久久| fc2成人免费人成在线观看播放| 91精品国产综合久久久久久| 亚洲日本一区二区| 处破女av一区二区| 精品福利av导航| 青娱乐精品在线视频| 欧美最猛黑人xxxxx猛交| 国产精品毛片久久久久久| 国内精品伊人久久久久av影院| 欧美嫩在线观看| 亚洲国产精品麻豆| 色诱视频网站一区| 亚洲日本成人在线观看| 大胆亚洲人体视频| 国产欧美一区二区在线观看| 精品在线视频一区| 日韩欧美成人午夜| 免费日韩伦理电影| 欧美一卡2卡3卡4卡| 亚洲电影视频在线| 欧美日韩一区二区三区视频| 亚洲精品日日夜夜| 在线观看视频91| 亚洲在线一区二区三区| 久久精品男人天堂av| 毛片av一区二区三区| 日韩欧美一二三区| 美女久久久精品| 欧美大白屁股肥臀xxxxxx| 免费观看日韩av| 亚洲国产激情av| 欧美人牲a欧美精品| 日韩中文字幕区一区有砖一区 | 日韩理论片一区二区| 日韩欧美在线123| 欧美色综合天天久久综合精品| 欧美体内she精高潮| 亚洲啪啪综合av一区二区三区| 成人国产精品免费网站| 一区在线中文字幕| 97se狠狠狠综合亚洲狠狠| 国产精品美女久久久久久2018 | 极品少妇一区二区| 精品久久五月天| 国产不卡在线视频| ...xxx性欧美| 欧美三级韩国三级日本一级| 日欧美一区二区| 91精品国产乱码| 国产91在线观看| 亚洲欧美一区二区久久| 欧美日韩国产美女| 毛片av一区二区三区| 久久精品亚洲乱码伦伦中文| 99在线精品观看| 亚洲成人精品在线观看| 日韩精品一区二区三区视频在线观看 | 国产成人8x视频一区二区| 最新日韩在线视频| 91麻豆精品久久久久蜜臀| 国产毛片精品国产一区二区三区|