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

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

?? pap.c

?? 君正早期ucos系統(只有早期的才不沒有打包成庫),MPLAYER,文件系統,圖片解碼,瀏覽,電子書,錄音,想學ucos,識貨的人就下吧 russblock fmradio explore set
?? 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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产三级精品| 亚洲一二三四久久| 欧美日韩中文精品| 99久久久免费精品国产一区二区| 欧美a一区二区| 亚洲欧美另类久久久精品| 国产亚洲精久久久久久| 日韩三级中文字幕| 日韩一区二区在线播放| 欧美日本一道本| 欧美日韩国产免费| 欧美乱妇20p| 欧美精品777| 欧美欧美午夜aⅴ在线观看| 91丨九色porny丨蝌蚪| 成人久久18免费网站麻豆| 国产成人亚洲精品青草天美| 极品尤物av久久免费看| 青青草97国产精品免费观看无弹窗版| 婷婷六月综合亚洲| 三级在线观看一区二区 | 欧美成人精品二区三区99精品| 欧美在线一区二区三区| 91免费看`日韩一区二区| 成人午夜视频免费看| 99视频精品免费视频| 91浏览器打开| 欧美午夜一区二区三区免费大片| 欧美午夜寂寞影院| 欧美精品三级日韩久久| 日韩精品一区二区在线观看| 精品剧情v国产在线观看在线| 久久久久久久综合色一本| 中文无字幕一区二区三区| 中文字幕一区二区三区精华液 | 欧美网站一区二区| 91精品国产乱| 久久久激情视频| 亚洲天堂2016| 午夜精品久久久久久久蜜桃app| 午夜欧美大尺度福利影院在线看 | 最近中文字幕一区二区三区| 一区二区三区四区蜜桃| 人人狠狠综合久久亚洲| 国产裸体歌舞团一区二区| 波多野结衣中文字幕一区二区三区 | 亚洲欧美日韩综合aⅴ视频| 亚洲美女屁股眼交| 久久精品国产网站| 色综合一个色综合| 日韩免费成人网| 中文字幕一区不卡| 亚洲自拍偷拍av| 国产精品88av| 制服视频三区第一页精品| 久久夜色精品国产欧美乱极品| 亚洲欧美日韩中文字幕一区二区三区| 日本aⅴ精品一区二区三区 | 国产精品妹子av| 亚洲电影一级黄| 国产传媒日韩欧美成人| 欧美日韩一区二区三区不卡 | 亚洲美女免费在线| 九九热在线视频观看这里只有精品| 成人动漫一区二区三区| 欧美一区二区性放荡片| 亚洲欧美日韩国产手机在线 | 麻豆精品一区二区| 99在线视频精品| 精品第一国产综合精品aⅴ| 亚洲成人自拍一区| 91性感美女视频| 欧美韩国日本综合| 免费精品视频最新在线| 欧美在线不卡视频| 国产精品成人一区二区三区夜夜夜| 日韩成人免费电影| 精品视频一区 二区 三区| 国产精品污www在线观看| 激情综合五月天| 日韩欧美中文字幕精品| 亚洲国产视频一区| 91色在线porny| 中文字幕一区二区三区在线不卡| 国产黄色精品视频| 精品久久久久一区二区国产| 日韩专区一卡二卡| 777奇米四色成人影色区| 亚洲国产精品久久艾草纯爱 | 69p69国产精品| 五月天中文字幕一区二区| 一本到不卡精品视频在线观看| 国产精品高潮久久久久无| 成人av资源站| 亚洲欧洲综合另类在线| 99久久久精品| 夜夜爽夜夜爽精品视频| 欧美三级中文字幕| 日日摸夜夜添夜夜添亚洲女人| 欧美日韩一区二区三区在线| 亚洲高清视频的网址| 欧美亚洲一区三区| 午夜视频在线观看一区二区三区 | 成人一区二区三区中文字幕| 国产亚洲成av人在线观看导航| 国产在线播放一区二区三区| 精品国产乱码久久久久久闺蜜| 久久不见久久见中文字幕免费| 久久综合久久久久88| 国产精品一区二区x88av| 国产亚洲美州欧州综合国| 福利视频网站一区二区三区| 青青草国产精品97视觉盛宴| 日韩欧美电影一区| 国产高清在线精品| 亚洲欧洲日韩av| 欧美日韩一区在线观看| 另类专区欧美蜜桃臀第一页| 国产视频一区在线播放| av在线一区二区| 视频在线观看91| 久久品道一品道久久精品| 97se狠狠狠综合亚洲狠狠| 亚洲国产综合91精品麻豆| 日韩精品一区二区三区四区| 国产不卡视频在线播放| 亚洲国产sm捆绑调教视频 | 精品视频一区二区三区免费| 美女一区二区视频| 国产精品激情偷乱一区二区∴| 欧美在线视频全部完| 精品一区二区日韩| 亚洲精品中文在线影院| 日韩一级片在线播放| 成人激情免费网站| 日韩高清在线电影| 亚洲欧洲在线观看av| 欧美一二三区在线| 91啪亚洲精品| 精品一区二区综合| 亚洲一区二区在线观看视频| 亚洲欧美电影院| 日韩欧美国产综合在线一区二区三区| 成人精品视频一区二区三区尤物| 五月天视频一区| 中文字幕一区二区三区不卡| 日韩美女视频一区二区在线观看| 不卡的av网站| 黄色小说综合网站| 亚洲高清在线视频| 国产精品夫妻自拍| 欧美精品一区二区三区四区| 色999日韩国产欧美一区二区| 美女脱光内衣内裤视频久久影院| 亚洲日本一区二区三区| 国产情人综合久久777777| 91精品国产综合久久精品麻豆| 91日韩一区二区三区| 国产不卡一区视频| 国产精品乡下勾搭老头1| 另类的小说在线视频另类成人小视频在线| 亚洲欧美视频在线观看视频| 久久久一区二区三区| 日韩精品一区二区三区中文不卡| 欧美日韩视频在线第一区| 日本久久电影网| 91在线porny国产在线看| 成人综合在线观看| 国产成人精品1024| 国内精品伊人久久久久av一坑| 日韩电影免费在线| 日韩—二三区免费观看av| 一区二区成人在线| 一个色在线综合| 亚洲一区视频在线| 亚洲国产中文字幕| 日韩av中文字幕一区二区| 天天操天天色综合| 首页欧美精品中文字幕| 青青草成人在线观看| 麻豆成人免费电影| 狠狠色伊人亚洲综合成人| 久久草av在线| 国产一区二区免费看| 国产999精品久久| 成人av手机在线观看| 成人丝袜视频网| 色偷偷成人一区二区三区91 | 自拍偷拍欧美精品| 日本欧美在线观看| 麻豆精品一区二区三区| 经典三级一区二区| 国产精品99久久久久久似苏梦涵| 国产一区二区三区电影在线观看| 狠狠色综合播放一区二区| 国产**成人网毛片九色| 91麻豆国产福利在线观看| 欧美亚洲免费在线一区| 欧美一区二区精品| 欧美激情一区在线|