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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pap.c

?? FreeRTOS V4.2.1,增加了AVR32 UC3 和 LPC2368 的支持
?? C
字號:
/****************************************************************************** pap.c - Network Password Authentication Protocol program file.** Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.* portions Copyright (c) 1997 by Global Election Systems Inc.** The authors hereby grant permission to use, copy, modify, distribute,* and license this software and its documentation for any purpose, provided* that existing copyright notices are retained in all copies and that this* notice and the following disclaimer are included verbatim in any * distributions. No written agreement, license, or royalty fee is required* for any of the authorized uses.** THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** REVISION HISTORY** 03-01-01 Marc Boucher <marc@mbsi.ca>*   Ported to lwIP.* 97-12-12 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc.*	Original.*****************************************************************************//* * upap.c - User/Password Authentication Protocol. * * Copyright (c) 1989 Carnegie Mellon University. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by Carnegie Mellon University.  The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#include "ppp.h"#include "auth.h"#include "pap.h"#include "pppdebug.h"#if PAP_SUPPORT > 0/***********************************//*** LOCAL FUNCTION DECLARATIONS ***//***********************************//* * Protocol entry points. */static void upap_init (int);static void upap_lowerup (int);static void upap_lowerdown (int);static void upap_input (int, u_char *, int);static void upap_protrej (int);static void upap_timeout (void *);static void upap_reqtimeout (void *);static void upap_rauthreq (upap_state *, u_char *, int, int);static void upap_rauthack (upap_state *, u_char *, int, int);static void upap_rauthnak (upap_state *, u_char *, int, int);static void upap_sauthreq (upap_state *);static void upap_sresp (upap_state *, u_char, u_char, char *, int);/******************************//*** PUBLIC DATA STRUCTURES ***//******************************/struct protent pap_protent = {    PPP_PAP,    upap_init,    upap_input,    upap_protrej,    upap_lowerup,    upap_lowerdown,    NULL,    NULL,#if 0    upap_printpkt,    NULL,#endif    1,    "PAP",#if 0    NULL,    NULL,    NULL#endif};upap_state upap[NUM_PPP];		/* UPAP state; one for each unit *//***********************************//*** PUBLIC FUNCTION DEFINITIONS ***//***********************************//* *  Set the default login name and password for the pap sessions */void upap_setloginpasswd(int unit, const char *luser, const char *lpassword){	upap_state *u = &upap[unit];		/* Save the username and password we're given */	u->us_user = luser;	u->us_userlen = strlen(luser);	u->us_passwd = lpassword;	u->us_passwdlen = strlen(lpassword);}/* * upap_authwithpeer - Authenticate us with our peer (start client). * * Set new state and send authenticate's. */void upap_authwithpeer(int unit, char *user, char *password){	upap_state *u = &upap[unit];		UPAPDEBUG((LOG_INFO, "upap_authwithpeer: %d user=%s password=%s s=%d\n",				unit, user, password, u->us_clientstate));		upap_setloginpasswd(unit, user, password);	u->us_transmits = 0;		/* Lower layer up yet? */	if (u->us_clientstate == UPAPCS_INITIAL ||			u->us_clientstate == UPAPCS_PENDING) {		u->us_clientstate = UPAPCS_PENDING;		return;	}		upap_sauthreq(u);			/* Start protocol */}/* * upap_authpeer - Authenticate our peer (start server). * * Set new state. */void upap_authpeer(int unit){	upap_state *u = &upap[unit];		/* Lower layer up yet? */	if (u->us_serverstate == UPAPSS_INITIAL ||			u->us_serverstate == UPAPSS_PENDING) {		u->us_serverstate = UPAPSS_PENDING;		return;	}		u->us_serverstate = UPAPSS_LISTEN;	if (u->us_reqtimeout > 0)		TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout);}/**********************************//*** LOCAL FUNCTION DEFINITIONS ***//**********************************//* * upap_init - Initialize a UPAP unit. */static void upap_init(int unit){	upap_state *u = &upap[unit];	UPAPDEBUG((LOG_INFO, "upap_init: %d\n", unit));		u->us_unit = unit;	u->us_user = NULL;	u->us_userlen = 0;	u->us_passwd = NULL;	u->us_passwdlen = 0;	u->us_clientstate = UPAPCS_INITIAL;	u->us_serverstate = UPAPSS_INITIAL;	u->us_id = 0;	u->us_timeouttime = UPAP_DEFTIMEOUT;	u->us_maxtransmits = 10;	u->us_reqtimeout = UPAP_DEFREQTIME;}/* * upap_timeout - Retransmission timer for sending auth-reqs expired. */static void upap_timeout(void *arg){	upap_state *u = (upap_state *) arg;		UPAPDEBUG((LOG_INFO, "upap_timeout: %d timeout %d expired s=%d\n", 				u->us_unit, u->us_timeouttime, u->us_clientstate));		if (u->us_clientstate != UPAPCS_AUTHREQ)		return;		if (u->us_transmits >= u->us_maxtransmits) {		/* give up in disgust */		UPAPDEBUG((LOG_ERR, "No response to PAP authenticate-requests\n"));		u->us_clientstate = UPAPCS_BADAUTH;		auth_withpeer_fail(u->us_unit, PPP_PAP);		return;	}		upap_sauthreq(u);		/* Send Authenticate-Request */}/* * upap_reqtimeout - Give up waiting for the peer to send an auth-req. */static void upap_reqtimeout(void *arg){	upap_state *u = (upap_state *) arg;		if (u->us_serverstate != UPAPSS_LISTEN)		return;			/* huh?? */		auth_peer_fail(u->us_unit, PPP_PAP);	u->us_serverstate = UPAPSS_BADAUTH;}/* * upap_lowerup - The lower layer is up. * * Start authenticating if pending. */static void upap_lowerup(int unit){	upap_state *u = &upap[unit];		UPAPDEBUG((LOG_INFO, "upap_lowerup: %d s=%d\n", unit, u->us_clientstate));		if (u->us_clientstate == UPAPCS_INITIAL)		u->us_clientstate = UPAPCS_CLOSED;	else if (u->us_clientstate == UPAPCS_PENDING) {		upap_sauthreq(u);	/* send an auth-request */	}		if (u->us_serverstate == UPAPSS_INITIAL)		u->us_serverstate = UPAPSS_CLOSED;	else if (u->us_serverstate == UPAPSS_PENDING) {		u->us_serverstate = UPAPSS_LISTEN;		if (u->us_reqtimeout > 0)			TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout);	}}/* * upap_lowerdown - The lower layer is down. * * Cancel all timeouts. */static void upap_lowerdown(int unit){	upap_state *u = &upap[unit];		UPAPDEBUG((LOG_INFO, "upap_lowerdown: %d s=%d\n", unit, u->us_clientstate));		if (u->us_clientstate == UPAPCS_AUTHREQ)	/* Timeout pending? */		UNTIMEOUT(upap_timeout, u);		/* Cancel timeout */	if (u->us_serverstate == UPAPSS_LISTEN && u->us_reqtimeout > 0)		UNTIMEOUT(upap_reqtimeout, u);		u->us_clientstate = UPAPCS_INITIAL;	u->us_serverstate = UPAPSS_INITIAL;}/* * upap_protrej - Peer doesn't speak this protocol. * * This shouldn't happen.  In any case, pretend lower layer went down. */static void upap_protrej(int unit){	upap_state *u = &upap[unit];		if (u->us_clientstate == UPAPCS_AUTHREQ) {		UPAPDEBUG((LOG_ERR, "PAP authentication failed due to protocol-reject\n"));		auth_withpeer_fail(unit, PPP_PAP);	}	if (u->us_serverstate == UPAPSS_LISTEN) {		UPAPDEBUG((LOG_ERR, "PAP authentication of peer failed (protocol-reject)\n"));		auth_peer_fail(unit, PPP_PAP);	}	upap_lowerdown(unit);}/* * upap_input - Input UPAP packet. */static void upap_input(int unit, u_char *inpacket, int l){	upap_state *u = &upap[unit];	u_char *inp;	u_char code, id;	int len;		/*	 * Parse header (code, id and length).	 * If packet too short, drop it.	 */	inp = inpacket;	if (l < UPAP_HEADERLEN) {		UPAPDEBUG((LOG_INFO, "pap_input: rcvd short header.\n"));		return;	}	GETCHAR(code, inp);	GETCHAR(id, inp);	GETSHORT(len, inp);	if (len < UPAP_HEADERLEN) {		UPAPDEBUG((LOG_INFO, "pap_input: rcvd illegal length.\n"));		return;	}	if (len > l) {		UPAPDEBUG((LOG_INFO, "pap_input: rcvd short packet.\n"));		return;	}	len -= UPAP_HEADERLEN;		/*	 * Action depends on code.	 */	switch (code) {	case UPAP_AUTHREQ:		upap_rauthreq(u, inp, id, len);		break;		case UPAP_AUTHACK:		upap_rauthack(u, inp, id, len);		break;		case UPAP_AUTHNAK:		upap_rauthnak(u, inp, id, len);		break;		default:				/* XXX Need code reject */		break;	}}/* * upap_rauth - Receive Authenticate. */static void upap_rauthreq(	upap_state *u, 	u_char *inp, 	int id,	int len){	u_char ruserlen, rpasswdlen;	char *ruser, *rpasswd;	int retcode;	char *msg;	int msglen;		UPAPDEBUG((LOG_INFO, "pap_rauth: Rcvd id %d.\n", id));		if (u->us_serverstate < UPAPSS_LISTEN)		return;		/*	 * If we receive a duplicate authenticate-request, we are	 * supposed to return the same status as for the first request.	 */	if (u->us_serverstate == UPAPSS_OPEN) {		upap_sresp(u, UPAP_AUTHACK, id, "", 0);	/* return auth-ack */		return;	}	if (u->us_serverstate == UPAPSS_BADAUTH) {		upap_sresp(u, UPAP_AUTHNAK, id, "", 0);	/* return auth-nak */		return;	}		/*	 * Parse user/passwd.	 */	if (len < sizeof (u_char)) {		UPAPDEBUG((LOG_INFO, "pap_rauth: rcvd short packet.\n"));		return;	}	GETCHAR(ruserlen, inp);	len -= sizeof (u_char) + ruserlen + sizeof (u_char);	if (len < 0) {		UPAPDEBUG((LOG_INFO, "pap_rauth: rcvd short packet.\n"));		return;	}	ruser = (char *) inp;	INCPTR(ruserlen, inp);	GETCHAR(rpasswdlen, inp);	if (len < rpasswdlen) {		UPAPDEBUG((LOG_INFO, "pap_rauth: rcvd short packet.\n"));		return;	}	rpasswd = (char *) inp;		/*	 * Check the username and password given.	 */	retcode = check_passwd(u->us_unit, ruser, ruserlen, rpasswd,			   rpasswdlen, &msg, &msglen);	BZERO(rpasswd, rpasswdlen);		upap_sresp(u, retcode, id, msg, msglen);		if (retcode == UPAP_AUTHACK) {		u->us_serverstate = UPAPSS_OPEN;		auth_peer_success(u->us_unit, PPP_PAP, ruser, ruserlen);	} else {		u->us_serverstate = UPAPSS_BADAUTH;		auth_peer_fail(u->us_unit, PPP_PAP);	}		if (u->us_reqtimeout > 0)		UNTIMEOUT(upap_reqtimeout, u);}/* * upap_rauthack - Receive Authenticate-Ack. */static void upap_rauthack(	upap_state *u,	u_char *inp,	int id,	int len){	u_char msglen;	char *msg;		UPAPDEBUG((LOG_INFO, "pap_rauthack: Rcvd id %d s=%d\n", id, u->us_clientstate));		if (u->us_clientstate != UPAPCS_AUTHREQ) /* XXX */		return;		/*	 * Parse message.	 */	if (len < sizeof (u_char)) {		UPAPDEBUG((LOG_INFO, "pap_rauthack: rcvd short packet.\n"));		return;	}	GETCHAR(msglen, inp);	len -= sizeof (u_char);	if (len < msglen) {		UPAPDEBUG((LOG_INFO, "pap_rauthack: rcvd short packet.\n"));		return;	}	msg = (char *) inp;	PRINTMSG(msg, msglen);		u->us_clientstate = UPAPCS_OPEN;		auth_withpeer_success(u->us_unit, PPP_PAP);}/* * upap_rauthnak - Receive Authenticate-Nakk. */static void upap_rauthnak(	upap_state *u,	u_char *inp,	int id,	int len){	u_char msglen;	char *msg;		UPAPDEBUG((LOG_INFO, "pap_rauthnak: Rcvd id %d s=%d\n", id, u->us_clientstate));		if (u->us_clientstate != UPAPCS_AUTHREQ) /* XXX */		return;		/*	 * Parse message.	 */	if (len < sizeof (u_char)) {		UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n"));		return;	}	GETCHAR(msglen, inp);	len -= sizeof (u_char);	if (len < msglen) {		UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n"));		return;	}	msg = (char *) inp;	PRINTMSG(msg, msglen);		u->us_clientstate = UPAPCS_BADAUTH;		UPAPDEBUG((LOG_ERR, "PAP authentication failed\n"));	auth_withpeer_fail(u->us_unit, PPP_PAP);}/* * upap_sauthreq - Send an Authenticate-Request. */static void upap_sauthreq(upap_state *u){	u_char *outp;	int outlen;		outlen = UPAP_HEADERLEN + 2 * sizeof (u_char) 			+ u->us_userlen + u->us_passwdlen;	outp = outpacket_buf[u->us_unit];		MAKEHEADER(outp, PPP_PAP);		PUTCHAR(UPAP_AUTHREQ, outp);	PUTCHAR(++u->us_id, outp);	PUTSHORT(outlen, outp);	PUTCHAR(u->us_userlen, outp);	BCOPY(u->us_user, outp, u->us_userlen);	INCPTR(u->us_userlen, outp);	PUTCHAR(u->us_passwdlen, outp);	BCOPY(u->us_passwd, outp, u->us_passwdlen);		pppWrite(u->us_unit, outpacket_buf[u->us_unit], outlen + PPP_HDRLEN);		UPAPDEBUG((LOG_INFO, "pap_sauth: Sent id %d\n", u->us_id));		TIMEOUT(upap_timeout, u, u->us_timeouttime);	++u->us_transmits;	u->us_clientstate = UPAPCS_AUTHREQ;}/* * upap_sresp - Send a response (ack or nak). */static void upap_sresp(	upap_state *u,	u_char code, 	u_char id,	char *msg,	int msglen){	u_char *outp;	int outlen;		outlen = UPAP_HEADERLEN + sizeof (u_char) + msglen;	outp = outpacket_buf[u->us_unit];	MAKEHEADER(outp, PPP_PAP);		PUTCHAR(code, outp);	PUTCHAR(id, outp);	PUTSHORT(outlen, outp);	PUTCHAR(msglen, outp);	BCOPY(msg, outp, msglen);	pppWrite(u->us_unit, outpacket_buf[u->us_unit], outlen + PPP_HDRLEN);		UPAPDEBUG((LOG_INFO, "pap_sresp: Sent code %d, id %d s=%d\n", 				code, id, u->us_clientstate));}#if 0/* * upap_printpkt - print the contents of a PAP packet. */static int upap_printpkt(	u_char *p,	int plen,	void (*printer) (void *, char *, ...),	void *arg){	(void)p;	(void)plen;	(void)printer;	(void)arg;	return 0;}#endif#endif /* PAP_SUPPORT */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美在线播放| 国产欧美中文在线| 亚洲福利一二三区| 欧美日韩高清一区二区不卡| 亚洲一区二区三区四区中文字幕 | 国产日产欧美一区| 国产呦萝稀缺另类资源| 久久精品一区二区三区不卡牛牛| 国产一区二区福利| 国产精品狼人久久影院观看方式| 91网站黄www| 日韩国产精品久久| 国产亚洲精品aa| 91色综合久久久久婷婷| 亚洲h精品动漫在线观看| 91精选在线观看| 国产福利一区在线| 亚洲欧美偷拍卡通变态| 欧美日韩精品一区视频| 久久99精品国产麻豆婷婷洗澡| 国产亚洲一区二区三区四区| 91免费国产在线| 秋霞午夜鲁丝一区二区老狼| 久久综合久久鬼色| 色八戒一区二区三区| 男男成人高潮片免费网站| 久久奇米777| 日本久久电影网| 久久精品国产**网站演员| 精品在线视频一区| 中文字幕av免费专区久久| 色综合天天狠狠| 精品一区二区在线观看| 亚洲人妖av一区二区| 日韩欧美一区二区三区在线| 成人免费看视频| 青娱乐精品在线视频| 日韩理论片网站| 日韩午夜电影在线观看| 一本久久a久久免费精品不卡| 日韩电影在线一区二区| 国产精品久久久久久亚洲毛片 | 日韩avvvv在线播放| 日本一区二区三级电影在线观看| 欧美日韩一区二区三区在线看| 九色综合狠狠综合久久| 亚洲一区二区三区三| 欧美—级在线免费片| 6080午夜不卡| 欧美自拍丝袜亚洲| 成人一区二区三区视频| 麻豆精品一区二区三区| 一区二区久久久| 国产精品国产三级国产普通话99| 6080yy午夜一二三区久久| 99久久精品国产精品久久| 国产综合久久久久影院| 日韩高清中文字幕一区| 亚洲激情自拍视频| 国产精品久久久久久久久晋中| 午夜影视日本亚洲欧洲精品| 国产精品麻豆一区二区| 久久一二三国产| 欧美电视剧免费全集观看| 欧美亚洲国产bt| 99精品黄色片免费大全| 粉嫩aⅴ一区二区三区四区 | 在线精品视频一区二区三四| 成人精品国产一区二区4080| 国产一级精品在线| 蜜臀av一级做a爰片久久| 日韩中文字幕一区二区三区| 亚洲一线二线三线久久久| 亚洲精品国产视频| 亚洲人成伊人成综合网小说| 中文字幕一区二区三| 中文字幕免费一区| 国产免费久久精品| 中文字幕不卡在线播放| 欧美国产精品久久| 中文一区一区三区高中清不卡| 国产亚洲一区字幕| 日本一区二区成人在线| 国产精品免费丝袜| 中文字幕中文在线不卡住| 国产精品久久午夜| 亚洲天天做日日做天天谢日日欢| 中文字幕制服丝袜一区二区三区 | 国v精品久久久网| 国产成人超碰人人澡人人澡| 国产v日产∨综合v精品视频| 成人夜色视频网站在线观看| 久久精品这里都是精品| 久久精品一区二区三区四区| 中文av一区特黄| 亚洲色图在线看| 亚洲国产日产av| 美腿丝袜亚洲一区| 激情偷乱视频一区二区三区| 国产91精品入口| 91亚洲男人天堂| 欧美日韩精品专区| 精品国产乱码久久久久久久久 | 丁香六月综合激情| 91亚洲精品久久久蜜桃网站| 欧美日韩免费视频| 精品成人在线观看| 欧美激情资源网| 一二三区精品福利视频| 日韩电影免费在线看| 国产精品一区二区在线播放 | 亚洲夂夂婷婷色拍ww47| 婷婷激情综合网| 国产精品综合一区二区| 色噜噜久久综合| 日韩精品一区二区三区在线观看 | 国产精品不卡一区二区三区| 亚洲国产精品尤物yw在线观看| 美女视频一区二区三区| 国产成人在线视频免费播放| 欧美这里有精品| 久久综合九色欧美综合狠狠| 亚洲精品成a人| 激情文学综合丁香| 欧洲av一区二区嗯嗯嗯啊| 精品国产91亚洲一区二区三区婷婷| 国产精品麻豆网站| 精品综合免费视频观看| 色噜噜久久综合| 欧美激情一区二区三区蜜桃视频 | 日韩女优制服丝袜电影| 国产精品久久久久aaaa| 麻豆精品国产91久久久久久| 日本精品视频一区二区三区| 久久人人爽人人爽| 日韩极品在线观看| k8久久久一区二区三区 | 亚洲欧美另类久久久精品| 麻豆精品一区二区三区| 欧美性猛交一区二区三区精品| 久久久综合网站| 日韩**一区毛片| 欧美无乱码久久久免费午夜一区| 国产亚洲一区二区在线观看| 久久精品免费观看| 欧美日韩一区中文字幕| 亚洲免费资源在线播放| 国产成人精品三级| 亚洲精品在线网站| 奇米一区二区三区| 欧美日韩一区在线观看| 有坂深雪av一区二区精品| 丁香激情综合国产| 久久精品一区二区三区不卡| 久久成人麻豆午夜电影| 91精品久久久久久久91蜜桃| 亚洲成人资源网| 色哦色哦哦色天天综合| 亚洲欧美日韩一区二区三区在线观看| 高清不卡一区二区| 国产亚洲女人久久久久毛片| 国产最新精品免费| 精品国产亚洲一区二区三区在线观看| 免费观看91视频大全| 欧美久久高跟鞋激| 午夜精品一区二区三区三上悠亚| 欧美亚洲一区二区在线| 亚洲日本va在线观看| 91在线视频播放| 亚洲色图制服诱惑| 91在线精品秘密一区二区| 成人欧美一区二区三区白人| jvid福利写真一区二区三区| 亚洲蜜桃精久久久久久久| 色婷婷综合在线| 午夜在线电影亚洲一区| 欧美一级在线视频| 国产自产高清不卡| 欧美高清在线一区二区| 99久久免费视频.com| 亚洲精品国产成人久久av盗摄| 欧美最猛性xxxxx直播| 亚洲午夜免费视频| 欧美高清精品3d| 精品一区二区在线视频| 国产亚洲婷婷免费| 91视频精品在这里| 亚洲成人免费视频| 日韩一本二本av| 国产大片一区二区| 亚洲色欲色欲www在线观看| 欧美午夜精品久久久久久超碰 | 久久精品99国产国产精| 精品日产卡一卡二卡麻豆| 国产高清视频一区| 亚洲精品高清在线| 欧美大白屁股肥臀xxxxxx| 国产91丝袜在线观看| 亚洲综合激情另类小说区| 日韩一区二区三区观看|