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

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

?? lcp.c

?? ppp協(xié)議的lwip源代碼
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/*****************************************************************************
* lcp.c - Network Link Control 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-01 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc.
*	Original.
*****************************************************************************/

/*
 * lcp.c - PPP Link Control 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 "pppconf.h"
#if PPP_SUPPORT > 0
#include "ppp.h"
#include "fsm.h"
#include "chap.h"
#include "magic.h"
#include "auth.h"
#include "lcp.h"
#include "pppdebug.h"


/*************************/
/*** LOCAL DEFINITIONS ***/
/*************************/
/*
 * Length of each type of configuration option (in octets)
 */
#define CILEN_VOID	2
#define CILEN_CHAR	3
#define CILEN_SHORT	4	/* CILEN_VOID + sizeof(short) */
#define CILEN_CHAP	5	/* CILEN_VOID + sizeof(short) + 1 */
#define CILEN_LONG	6	/* CILEN_VOID + sizeof(long) */
#define CILEN_LQR	8	/* CILEN_VOID + sizeof(short) + sizeof(long) */
#define CILEN_CBCP	3


/***********************************/
/*** LOCAL FUNCTION DECLARATIONS ***/
/***********************************/
/*
 * Callbacks for fsm code.  (CI = Configuration Information)
 */
static void lcp_resetci (fsm*);	        /* Reset our CI */
static int  lcp_cilen (fsm*);		        /* Return length of our CI */
static void lcp_addci (fsm*, u_char*, int*);       /* Add our CI to pkt */
static int  lcp_ackci (fsm*, u_char*, int);/* Peer ack'd our CI */
static int  lcp_nakci (fsm*, u_char*, int);/* Peer nak'd our CI */
static int  lcp_rejci (fsm*, u_char*, int);/* Peer rej'd our CI */
static int  lcp_reqci (fsm*, u_char*, int*, int);  /* Rcv peer CI */
static void lcp_up (fsm*);		            /* We're UP */
static void lcp_down (fsm*);	    	    /* We're DOWN */
static void lcp_starting (fsm*);   	    /* We need lower layer up */
static void lcp_finished (fsm*);	        /* We need lower layer down */
//static int  lcp_extcode (fsm*, int, int, u_char*, int);
static int  lcp_extcode (fsm*, int, u_char, u_char*, int);

static void lcp_rprotrej (fsm*, u_char*, int);

/*
 * routines to send LCP echos to peer
 */
static void lcp_echo_lowerup (int);
static void lcp_echo_lowerdown (int);
static void LcpEchoTimeout (void*);
static void lcp_received_echo_reply (fsm*, int, u_char*, int);
static void LcpSendEchoRequest (fsm*);
static void LcpLinkFailure (fsm*);
static void LcpEchoCheck (fsm*);

/*
 * Protocol entry points.
 * Some of these are called directly.
 */
static void lcp_input (int, u_char *, int);
static void lcp_protrej (int);

#define CODENAME(x)	((x) == CONFACK ? "ACK" : \
			 (x) == CONFNAK ? "NAK" : "REJ")


/******************************/
/*** PUBLIC DATA STRUCTURES ***/
/******************************/
/* global vars */
LinkPhase lcp_phase[NUM_PPP];			/* Phase of link session (RFC 1661) */
lcp_options lcp_wantoptions[NUM_PPP];	/* Options that we want to request */
lcp_options lcp_gotoptions[NUM_PPP];	/* Options that peer ack'd */
lcp_options lcp_allowoptions[NUM_PPP];	/* Options we allow peer to request */
lcp_options lcp_hisoptions[NUM_PPP];	/* Options that we ack'd */
ext_accm xmit_accm[NUM_PPP];			/* extended transmit ACCM */



/*****************************/
/*** LOCAL DATA STRUCTURES ***/
/*****************************/
static fsm lcp_fsm[NUM_PPP];			/* LCP fsm structure (global)*/
static u_int	 lcp_echo_interval = LCP_ECHOINTERVAL; /* Interval between LCP echo-requests */
static u_int	 lcp_echo_fails = LCP_MAXECHOFAILS; /* Tolerance to unanswered echo-requests */
static u32_t lcp_echos_pending = 0;	/* Number of outstanding echo msgs */
static u32_t lcp_echo_number   = 0;	/* ID number of next echo frame */
static u32_t lcp_echo_timer_running = 0;  /* TRUE if a timer is running */

static u_char nak_buffer[PPP_MRU];	/* where we construct a nak packet */

static fsm_callbacks lcp_callbacks = {	/* LCP callback routines */
    lcp_resetci,		/* Reset our Configuration Information */
    lcp_cilen,			/* Length of our Configuration Information */
    lcp_addci,			/* Add our Configuration Information */
    lcp_ackci,			/* ACK our Configuration Information */
    lcp_nakci,			/* NAK our Configuration Information */
    lcp_rejci,			/* Reject our Configuration Information */
    lcp_reqci,			/* Request peer's Configuration Information */
    lcp_up,				/* Called when fsm reaches OPENED state */
    lcp_down,			/* Called when fsm leaves OPENED state */
    lcp_starting,		/* Called when we want the lower layer up */
    lcp_finished,		/* Called when we want the lower layer down */
    NULL,				/* Called when Protocol-Reject received */
    NULL,				/* Retransmission is necessary */
    lcp_extcode,		/* Called to handle LCP-specific codes */
    "LCP"				/* String name of protocol */
};

struct protent lcp_protent = {
    PPP_LCP,
    lcp_init,
    lcp_input,
    lcp_protrej,
    lcp_lowerup,
    lcp_lowerdown,
    lcp_open,
    lcp_close,
#if 0
    lcp_printpkt,
    NULL,
#endif
    1,
    "LCP",
#if 0
    NULL,
    NULL,
    NULL
#endif
};

int lcp_loopbackfail = DEFLOOPBACKFAIL;



/***********************************/
/*** PUBLIC FUNCTION DEFINITIONS ***/
/***********************************/
/*
 * lcp_init - Initialize LCP.
 */
void lcp_init(int unit)
{
	fsm *f = &lcp_fsm[unit];
	lcp_options *wo = &lcp_wantoptions[unit];
	lcp_options *ao = &lcp_allowoptions[unit];
	
	f->unit = unit;
	f->protocol = PPP_LCP;
	f->callbacks = &lcp_callbacks;
	
	fsm_init(f);
	
	wo->passive = 0;
	wo->silent = 0;
	wo->restart = 0;			/* Set to 1 in kernels or multi-line
								 * implementations */
	wo->neg_mru = 1;
	wo->mru = PPP_DEFMRU;
	wo->neg_asyncmap = 1;
	wo->asyncmap = 0x00000000l;	/* Assume don't need to escape any ctl chars. */
	wo->neg_chap = 0;			/* Set to 1 on server */
	wo->neg_upap = 0;			/* Set to 1 on server */
	wo->chap_mdtype = CHAP_DIGEST_MD5;
	wo->neg_magicnumber = 1;
	wo->neg_pcompression = 1;
	wo->neg_accompression = 1;
	wo->neg_lqr = 0;			/* no LQR implementation yet */
	wo->neg_cbcp = 0;
	
	ao->neg_mru = 1;
	ao->mru = PPP_MAXMRU;
	ao->neg_asyncmap = 1;
	ao->asyncmap = 0x00000000l;	/* Assume don't need to escape any ctl chars. */
	ao->neg_chap = (CHAP_SUPPORT != 0);
	ao->chap_mdtype = CHAP_DIGEST_MD5;
	ao->neg_upap = (PAP_SUPPORT != 0);
	ao->neg_magicnumber = 1;
	ao->neg_pcompression = 1;
	ao->neg_accompression = 1;
	ao->neg_lqr = 0;			/* no LQR implementation yet */
	ao->neg_cbcp = (CBCP_SUPPORT != 0);

	/* 
	 * Set transmit escape for the flag and escape characters plus anything
	 * set for the allowable options.
	 */
	memset(xmit_accm[unit], 0, sizeof(xmit_accm[0]));
	xmit_accm[unit][15] = 0x60;
	xmit_accm[unit][0] = (u_char)(ao->asyncmap & 0xFF);
	xmit_accm[unit][1] = (u_char)((ao->asyncmap >> 8) & 0xFF);
	xmit_accm[unit][2] = (u_char)((ao->asyncmap >> 16) & 0xFF);
	xmit_accm[unit][3] = (u_char)((ao->asyncmap >> 24) & 0xFF);
	LCPDEBUG((LOG_INFO, "lcp_init: xmit_accm=%X %X %X %X\n",
				xmit_accm[unit][0],
				xmit_accm[unit][1],
				xmit_accm[unit][2],
				xmit_accm[unit][3]));
	
	lcp_phase[unit] = PHASE_INITIALIZE;
}


/*
 * lcp_open - LCP is allowed to come up.
 */
void lcp_open(int unit)
{
	fsm *f = &lcp_fsm[unit];
	lcp_options *wo = &lcp_wantoptions[unit];
	
	f->flags = 0;
	if (wo->passive)
		f->flags |= OPT_PASSIVE;
	if (wo->silent)
		f->flags |= OPT_SILENT;
	fsm_open(f);
	
	lcp_phase[unit] = PHASE_ESTABLISH; 
}


/*
 * lcp_close - Take LCP down.
 */
void lcp_close(int unit, char *reason)
{
	fsm *f = &lcp_fsm[unit];
	
	if (lcp_phase[unit] != PHASE_DEAD)
		lcp_phase[unit] = PHASE_TERMINATE;
	if (f->state == STOPPED && f->flags & (OPT_PASSIVE|OPT_SILENT)) {
		/*
		 * This action is not strictly according to the FSM in RFC1548,
		 * but it does mean that the program terminates if you do an
		 * lcp_close() in passive/silent mode when a connection hasn't
		 * been established.
		 */
		f->state = CLOSED;
		lcp_finished(f);
	}
	else
		fsm_close(&lcp_fsm[unit], reason);
}


/*
 * lcp_lowerup - The lower layer is up.
 */
void lcp_lowerup(int unit)
{
	lcp_options *wo = &lcp_wantoptions[unit];
	
	/*
	* Don't use A/C or protocol compression on transmission,
	* but accept A/C and protocol compressed packets
	* if we are going to ask for A/C and protocol compression.
	*/
	ppp_set_xaccm(unit, &xmit_accm[unit]);
	ppp_send_config(unit, PPP_MRU, 0xffffffffl, 0, 0);
	ppp_recv_config(unit, PPP_MRU, 0x00000000l,
					wo->neg_pcompression, wo->neg_accompression);
	peer_mru[unit] = PPP_MRU;
	lcp_allowoptions[unit].asyncmap 
		= (u_long)xmit_accm[unit][0]
			| ((u_long)xmit_accm[unit][1] << 8)
			| ((u_long)xmit_accm[unit][2] << 16)
			| ((u_long)xmit_accm[unit][3] << 24);
	LCPDEBUG((LOG_INFO, "lcp_lowerup: asyncmap=%X %X %X %X\n",
				xmit_accm[unit][3],
				xmit_accm[unit][2],
				xmit_accm[unit][1],
				xmit_accm[unit][0]));
	
	fsm_lowerup(&lcp_fsm[unit]);
}


/*
 * lcp_lowerdown - The lower layer is down.
 */
void lcp_lowerdown(int unit)
{
	fsm_lowerdown(&lcp_fsm[unit]);
}

/*
 * lcp_sprotrej - Send a Protocol-Reject for some protocol.
 */
void lcp_sprotrej(int unit, u_char *p, int len)
{
	/*
	* Send back the protocol and the information field of the
	* rejected packet.  We only get here if LCP is in the OPENED state.
	*/

	fsm_sdata(&lcp_fsm[unit], PROTREJ, ++lcp_fsm[unit].id,
				p, len);
}



/**********************************/
/*** LOCAL FUNCTION DEFINITIONS ***/
/**********************************/
/*
 * lcp_input - Input LCP packet.
 */
static void lcp_input(int unit, u_char *p, int len)
{
	fsm *f = &lcp_fsm[unit];
	
	fsm_input(f, p, len);
}


/*
 * lcp_extcode - Handle a LCP-specific code.
 */
//static int lcp_extcode(fsm *f, int code, int id, u_char *inp, int len)
static int lcp_extcode(fsm *f, int code, u_char id, u_char *inp, int len)
{
	u_char *magp;
	
	switch( code ){
	case PROTREJ:
		lcp_rprotrej(f, inp, len);
		break;
	
	case ECHOREQ:
		if (f->state != OPENED)
			break;
		LCPDEBUG((LOG_INFO, "lcp: Echo-Request, Rcvd id %d\n", id));
		magp = inp;
		PUTLONG(lcp_gotoptions[f->unit].magicnumber, magp);
		fsm_sdata(f, ECHOREP, id, inp, len);
		break;
	
	case ECHOREP:
		lcp_received_echo_reply(f, id, inp, len);
		break;
	
	case DISCREQ:
		break;
	
	default:
		return 0;
	}
	return 1;
}

    
/*
 * lcp_rprotrej - Receive an Protocol-Reject.
 *
 * Figure out which protocol is rejected and inform it.
 */
static void lcp_rprotrej(fsm *f, u_char *inp, int len)
{
	int i;
	struct protent *protp;
	u_short prot;
	
	if (len < sizeof (u_short)) {
		LCPDEBUG((LOG_INFO,
				"lcp_rprotrej: Rcvd short Protocol-Reject packet!\n"));
		return;
	}
	
	GETSHORT(prot, inp);
	
	LCPDEBUG((LOG_INFO,
			"lcp_rprotrej: Rcvd Protocol-Reject packet for %x!\n",
			prot));
	
	/*
	* Protocol-Reject packets received in any state other than the LCP
	* OPENED state SHOULD be silently discarded.
	*/
	if( f->state != OPENED ){
		LCPDEBUG((LOG_INFO, "Protocol-Reject discarded: LCP in state %d\n",
				f->state));
		return;
	}
	
	/*
	* Upcall the proper Protocol-Reject routine.
	*/
	for (i = 0; (protp = ppp_protocols[i]) != NULL; ++i)
		if (protp->protocol == prot && protp->enabled_flag) {
			(*protp->protrej)(f->unit);
			return;
		}
	
	LCPDEBUG((LOG_WARNING, "Protocol-Reject for unsupported protocol 0x%x\n",
			prot));
}


/*
 * lcp_protrej - A Protocol-Reject was received.
 */
static void lcp_protrej(int unit)
{
	(void)unit;
	/*
	* Can't reject LCP!
	*/
	LCPDEBUG((LOG_WARNING,
			"lcp_protrej: Received Protocol-Reject for LCP!\n"));
	fsm_protreject(&lcp_fsm[unit]);
}


/*
 * lcp_resetci - Reset our CI.
 */
static void lcp_resetci(fsm *f)
{
	lcp_wantoptions[f->unit].magicnumber = magic();
	lcp_wantoptions[f->unit].numloops = 0;
	lcp_gotoptions[f->unit] = lcp_wantoptions[f->unit];
	peer_mru[f->unit] = PPP_MRU;
	auth_reset(f->unit);
}


/*
 * lcp_cilen - Return length of our CI.
 */
static int lcp_cilen(fsm *f)
{
	lcp_options *go = &lcp_gotoptions[f->unit];

#define LENCIVOID(neg)	((neg) ? CILEN_VOID : 0)
#define LENCICHAP(neg)	((neg) ? CILEN_CHAP : 0)
#define LENCISHORT(neg)	((neg) ? CILEN_SHORT : 0)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品是欧美日韩精品| 日本高清视频一区二区| 最新欧美精品一区二区三区| 欧美欧美午夜aⅴ在线观看| 久久99日本精品| 亚洲精品你懂的| 2017欧美狠狠色| 欧美另类z0zxhd电影| 成人免费av网站| 日韩国产一二三区| 亚洲欧美国产高清| 久久综合国产精品| 欧美日韩1234| 色狠狠一区二区三区香蕉| 激情综合色丁香一区二区| 亚洲国产视频网站| 国产精品久久久久久久久免费丝袜 | 美女尤物国产一区| 亚洲综合成人在线| 亚洲欧洲日韩女同| 久久一日本道色综合| 在线成人av网站| 色婷婷亚洲一区二区三区| 国产高清一区日本| 久久99久久99小草精品免视看| 亚洲第一在线综合网站| 亚洲人被黑人高潮完整版| 国产欧美日韩亚州综合| 欧美videos大乳护士334| 欧美伦理电影网| 欧美午夜精品久久久| 色综合天天狠狠| fc2成人免费人成在线观看播放| 国产一区二区在线观看视频| 美腿丝袜一区二区三区| 婷婷六月综合亚洲| 亚洲va中文字幕| 一区二区免费在线播放| 亚洲图片欧美激情| 国产欧美中文在线| 久久久另类综合| 久久婷婷成人综合色| 日韩精品一区国产麻豆| 日韩久久精品一区| 精品粉嫩aⅴ一区二区三区四区| 91精品欧美综合在线观看最新| 91精品1区2区| 欧美性xxxxxx少妇| 欧美军同video69gay| 欧美精品亚洲一区二区在线播放| 欧美日韩一本到| 欧美久久高跟鞋激| 欧美一级一区二区| 精品久久久久久亚洲综合网 | 日韩一区二区三区免费观看| 欧美精品乱码久久久久久| 欧美放荡的少妇| 欧美成人a在线| 久久久久久久精| 国产精品麻豆一区二区| 亚洲美女精品一区| 亚洲高清中文字幕| 美女在线视频一区| 国产精品羞羞答答xxdd| 成人av电影在线| 在线免费不卡视频| 欧美高清视频www夜色资源网| 91精品国产高清一区二区三区 | 亚洲国产日韩a在线播放性色| 日韩国产精品久久久| 国内精品国产成人国产三级粉色| 福利一区二区在线| 一本一道久久a久久精品| 欧美巨大另类极品videosbest | 亚洲成av人片| 精品一区二区日韩| 97se亚洲国产综合在线| 欧美日韩成人一区二区| 久久伊人中文字幕| 亚洲欧洲综合另类| 日本在线不卡一区| 国产91精品露脸国语对白| 99久久精品国产毛片| 欧美喷水一区二区| 国产女主播视频一区二区| 亚洲黄网站在线观看| 麻豆精品蜜桃视频网站| av在线不卡观看免费观看| 在线播放91灌醉迷j高跟美女| 久久久午夜精品| 一区二区三区在线观看视频 | 99久久99久久精品国产片果冻| 欧美人狂配大交3d怪物一区| 国产日韩欧美综合在线| 亚洲成人免费视频| 国产成人av影院| 69久久夜色精品国产69蝌蚪网| 欧美国产成人在线| 蜜臀av国产精品久久久久| 97se亚洲国产综合自在线| 日韩欧美一区二区久久婷婷| 亚洲欧美综合色| 久久97超碰色| 欧美日韩一卡二卡三卡| 国产精品视频第一区| 日本系列欧美系列| 色婷婷激情综合| 国产欧美一区在线| 久久99国产精品久久99| 欧美人与禽zozo性伦| 中文字幕在线不卡国产视频| 久草热8精品视频在线观看| 精品婷婷伊人一区三区三| 中文字幕一区日韩精品欧美| 精品无人码麻豆乱码1区2区| 欧美日韩视频在线观看一区二区三区 | 91精品国产麻豆| 亚洲综合一二三区| www.激情成人| 久久久精品国产99久久精品芒果| 肉肉av福利一精品导航| 色婷婷亚洲婷婷| 日韩一区在线播放| 成人精品小蝌蚪| 国产亚洲va综合人人澡精品| 日本免费新一区视频| 欧美午夜视频网站| 一区二区三区不卡在线观看| av福利精品导航| 国产精品素人一区二区| 国产精品亚洲第一| 久久久久99精品一区| 国产综合一区二区| 日韩精品一区二区三区视频| 视频在线在亚洲| 3atv一区二区三区| 午夜电影网亚洲视频| 欧美日韩在线电影| 亚洲一区视频在线| 欧美色中文字幕| 亚洲国产视频网站| 欧美蜜桃一区二区三区| 亚洲gay无套男同| 欧美日韩在线播放三区| 亚洲成av人**亚洲成av**| 欧美日韩中文另类| 三级一区在线视频先锋| 91精品国产91久久综合桃花| 日韩高清欧美激情| 日韩精品一区二区三区视频播放 | 成人三级伦理片| 国产精品久久久久aaaa| 99热精品一区二区| 亚洲男人天堂av网| 欧美天堂亚洲电影院在线播放| 亚洲成人一区二区| 日韩手机在线导航| 国产精品一区久久久久| 国产精品成人网| 欧美在线free| 免费人成网站在线观看欧美高清| 日韩视频在线一区二区| 国产精品一区二区在线观看网站| 国产欧美一区二区精品仙草咪| 成人午夜碰碰视频| 亚洲一区在线观看免费观看电影高清 | 中文字幕制服丝袜一区二区三区| 91麻豆自制传媒国产之光| 亚洲va欧美va人人爽| 91精品在线观看入口| 国内精品国产三级国产a久久| 日本一区二区三区电影| 91免费看视频| 日韩成人午夜精品| 久久久久国色av免费看影院| 91在线你懂得| 日韩avvvv在线播放| 久久精品一二三| 欧美在线高清视频| 经典三级在线一区| 亚洲婷婷国产精品电影人久久| 欧美日韩免费一区二区三区| 九九精品视频在线看| 日韩一区欧美一区| 欧美一区二区成人| 成人黄色av电影| 日韩电影网1区2区| 国产精品国产三级国产有无不卡| 欧美喷潮久久久xxxxx| 国产成人精品www牛牛影视| 亚洲国产视频一区二区| 久久欧美中文字幕| 欧美视频一区二区三区四区| 国产乱人伦精品一区二区在线观看 | 91精品国产综合久久精品app| 国产成人精品aa毛片| 日韩精品乱码免费| 国产精品电影一区二区三区| 欧美一区二区免费| 在线欧美日韩精品|