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

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

?? mac-802_11.cc

?? 在網(wǎng)絡(luò)仿真模擬工具下實(shí)現(xiàn)MAC層802.11DCF協(xié)議
?? CC
?? 第 1 頁 / 共 4 頁
字號(hào):
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- * * Copyright (c) 1997 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the Computer Systems *	Engineering Group at Lawrence Berkeley Laboratory. * 4. Neither the name of the University nor of the Laboratory may be used *    to endorse or promote products derived from this software without *    specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND 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 REGENTS OR 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. * * $Header: /nfs/jade/vint/CVSROOT/ns-2/mac/mac-802_11.cc,v 1.46 2003/12/10 21:06:57 xuanc Exp $ * * Ported from CMU/Monarch's code, nov'98 -Padma. */#include "delay.h"#include "connector.h"#include "packet.h"#include "random.h"#include "mobilenode.h"// #define DEBUG 99#include "arp.h"#include "ll.h"#include "mac.h"#include "mac-timers.h"#include "mac-802_11.h"#include "cmu-trace.h"// Added by Sushmita to support event tracing#include "agent.h"#include "basetrace.h"// XXX Can't we make these macros inline methods? Otherwise why should we have// inline methods at all??// change wrt Mike's code/*#define CHECK_BACKOFF_TIMER()						\{									\	if(is_idle() && mhBackoff_.paused())				\		mhBackoff_.resume(difs_);				\	if(! is_idle() && mhBackoff_.busy() && ! mhBackoff_.paused())	\		mhBackoff_.pause();					\}*//*#define TRANSMIT(p, t)                                                  \{                                                                       \	tx_active_ = 1;                                                  \                                                                        \        /*                                                              \         * If I'm transmitting without doing CS, such as when           \         * sending an ACK, any incoming packet will be "missed"         \         * and hence, must be discarded.                                \                                                                      \        if(rx_state_ != MAC_IDLE) {                                      \                struct hdr_mac802_11 *dh = HDR_MAC802_11(p);                  \                                                                        \                assert(dh->dh_fc.fc_type == MAC_Type_Control);          \                assert(dh->dh_fc.fc_subtype == MAC_Subtype_ACK);        \                                                                        \                assert(pktRx_);                                          \                struct hdr_cmn *ch = HDR_CMN(pktRx_);                    \                                                                        \                ch->error() = 1;         force packet discard       \        }                                                               \                                                                        \                                                                      \         * pass the packet on the "interface" which will in turn        \         * place the packet on the channel.                             \         *                                                              \         * NOTE: a handler is passed along so that the Network          \         *       Interface can distinguish between incoming and         \         *       outgoing packets.                                      \                                                                      \        downtarget_->recv(p->copy(), this);                             \                                                                        \        mhSend_.start(t);                                                \                                                                        \	mhIF_.start(txtime(p));                                         \}*//*#define SET_RX_STATE(x)			\{					\	rx_state_ = (x);		\	CHECK_BACKOFF_TIMER();		\}#define SET_TX_STATE(x)				\{						\	tx_state_ = (x);			\	CHECK_BACKOFF_TIMER();			\}*//* ======================================================================   Global Variables   ====================================================================== *//*static PHY_MIB PMIB ={	DSSS_CWMin, DSSS_CWMax, DSSS_SlotTime, DSSS_CCATime,	DSSS_RxTxTurnaroundTime, DSSS_SIFSTime, DSSS_PreambleLength,	DSSS_PLCPHeaderLength, DSSS_PLCPDataRate};	static MAC_MIB MMIB ={	MAC_RTSThreshold, MAC_ShortRetryLimit,	MAC_LongRetryLimit, MAC_FragmentationThreshold,	MAC_MaxTransmitMSDULifetime, MAC_MaxReceiveLifetime,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};*/ /* our backoff timer doesn't count down in idle times during a!  * frame-exchange sequence as the mac tx state isn't idle; genreally!  * these idle times are less than DIFS and won't contribute to!  * counting down the backoff period, but this could be a real!  * problem if the frame exchange ends up in a timeout! in that case,!  * i.e. if a timeout happens we've not been counting down for the!  * duration of the timeout, and in fact begin counting down only!  * DIFS after the timeout!! we lose the timeout interval - which!  * will is not the REAL case! also, the backoff timer could be NULL!  * and we could have a pending transmission which we could have!  * sent! one could argue this is an implementation artifact which!  * doesn't violate the spec.. and the timeout interval is expected!  * to be less than DIFS .. which means its not a lot of time we!  * lose.. anyway if everyone hears everyone the only reason a ack will!  * be delayed will be due to a collision => the medium won't really be!  * idle for a DIFS for this to really matter!!  */ inline void Mac802_11::checkBackoffTimer() {       if(is_idle() && mhBackoff_.paused())               mhBackoff_.resume(phymib_.getDIFS());       if(! is_idle() && mhBackoff_.busy() && ! mhBackoff_.paused())               mhBackoff_.pause();  } inline void Mac802_11::transmit(Packet *p, double timeout) {       tx_active_ = 1;       if (EOTtarget_) {               assert (eotPacket_ == NULL);               eotPacket_ = p->copy();       }         /*!          * If I'm transmitting without doing CS, such as when!          * sending an ACK, any incoming packet will be "missed"!          * and hence, must be discarded.          */         if(rx_state_ != MAC_IDLE) {                 struct hdr_mac802_11 *dh = HDR_MAC802_11(p);                 assert(dh->dh_fc.fc_type == MAC_Type_Control);                 assert(dh->dh_fc.fc_subtype == MAC_Subtype_ACK);                 assert(pktRx_);                 struct hdr_cmn *ch = HDR_CMN(pktRx_);                 ch->error() = 1;        /* force packet discard */         }         /*!          * pass the packet on the "interface" which will in turn!          * place the packet on the channel.!          *!          * NOTE: a handler is passed along so that the Network!          *       Interface can distinguish between incoming and!          *       outgoing packets.          *       Interface can distinguish between incoming and!          *       outgoing packets.          */         downtarget_->recv(p->copy(), this);         mhSend_.start(timeout);       mhIF_.start(txtime(p));} inline void Mac802_11::setRxState(MacState newState) {       rx_state_ = newState;       checkBackoffTimer(); } inline void Mac802_11::setTxState(MacState newState)  {       tx_state_ = newState;       checkBackoffTimer(); } #ifdef MIKE // need to add rst_cw etc. inline void Mac802_11::postBackoff(int pri)  {       rst_cw(pri);       assert(!mhBackoff_.busy(pri));       mhBackoff_.start(pri, cw_[pri], CWOffset_[pri], true); } #endif /*  * This macro is only used in one place, and should be removed.  */ #define CFP_BEACON(__p) (                                                                       \         (((struct beacon_frame *)HDR_MAC802_11(__p))->bf_fc.fc_type == MAC_Type_Management)     \         &&                                                                                      \         (((struct beacon_frame *)HDR_MAC802_11(__p))->bf_fc.fc_subtype == MAC_Subtype_Beacon)   \ )// Mike change ends/* ======================================================================   TCL Hooks for the simulator   ====================================================================== */static class Mac802_11Class : public TclClass {public:	Mac802_11Class() : TclClass("Mac/802_11") {}	TclObject* create(int, const char*const*) {	// change wrt Mike's code	// return (new Mac802_11(&PMIB, &MMIB));	return (new Mac802_11());	// Mike change ends!}} class_mac802_11;// change wrt Mike's code  /* ======================================================================!    Mac  and Phy MIB Class Functions     ====================================================================== */ PHY_MIB::PHY_MIB(Mac802_11 *parent)  {       /*        * Bind the phy mib objects.  Note that these will be bound!        * to Mac/802_11 variables        */       parent->bind("CWMin_", &CWMin);       parent->bind("CWMax_", &CWMax);       parent->bind("SlotTime_", &SlotTime);       parent->bind("SIFS_", &SIFSTime);       parent->bind("PreambleLength_", &PreambleLength);       parent->bind("PLCPHeaderLength_", &PLCPHeaderLength);       parent->bind_bw("PLCPDataRate_", &PLCPDataRate); } MAC_MIB::MAC_MIB(Mac802_11 *parent) {       /*        * Bind the phy mib objects.  Note that these will be bound!        * to Mac/802_11 variables        */       parent->bind("RTSThreshold_", &RTSThreshold);       parent->bind("ShortRetryLimit_", &ShortRetryLimit);       parent->bind("LongRetryLimit_", &LongRetryLimit); }// Mike change ends/* ======================================================================   Mac Class Functions   ====================================================================== */// change wrt Mike's code//Mac802_11::Mac802_11(PHY_MIB *p, MAC_MIB *m) : Mac(), mhIF_(this), mhNav_(this), mhRecv_(this), mhSend_(this), mhDefer_(this, p->SlotTime), mhBackoff_(this, p->SlotTime)Mac802_11::Mac802_11() : Mac(), mhIF_(this), mhNav_(this), mhRecv_(this), mhSend_(this), mhDefer_(this), mhBackoff_(this),macmib_(this), phymib_(this), mhBeacon_(this)// Mike change ends{	// change wrt Mike	//macmib_ = m;	//phymib_ = p;	// change ends		nav_ = 0.0;		tx_state_ = rx_state_ = MAC_IDLE;	tx_active_ = 0;	// change wrt Mike	eotPacket_ = NULL;	// change ends	pktRTS_ = 0;	pktCTRL_ = 0;			// change wrt Mike's code	//cw_ = phymib_->CWMin;	cw_ = phymib_.getCWMin();	// change ends	ssrc_ = slrc_ = 0;	// change wrt Mike's code	//sifs_ = phymib_->SIFSTime;	//pifs_ = sifs_ + phymib_->SlotTime;	//difs_ = sifs_ + 2*phymib_->SlotTime;		// see (802.11-1999, 9.2.10) 	//eifs_ = sifs_ + (8 * ETHER_ACK_LEN / phymib_->PLCPDataRate) + difs_;		//tx_sifs_ = sifs_ - phymib_->RxTxTurnaroundTime;	//tx_pifs_ = tx_sifs_ + phymib_->SlotTime;	//tx_difs_ = tx_sifs_ + 2 * phymib_->SlotTime;	// Added by Sushmita        et_ = new EventTrace();		sta_seqno_ = 1;	cache_ = 0;	cache_node_count_ = 0;		// chk if basic/data rates are set	// otherwise use bandwidth_ as default;		Tcl& tcl = Tcl::instance();	tcl.evalf("Mac/802_11 set basicRate_");	if (strcmp(tcl.result(), "0") != 0) 		bind_bw("basicRate_", &basicRate_);	else		basicRate_ = bandwidth_;	tcl.evalf("Mac/802_11 set dataRate_");	if (strcmp(tcl.result(), "0") != 0) 		bind_bw("dataRate_", &dataRate_);	else		dataRate_ = bandwidth_;	// change wrt Mike        EOTtarget_ = 0;       	bss_id_ = IBSS_ID;	//-ak-----------	//printf("bssid in constructor %d\n",bss_id_);	// change ends}intMac802_11::command(int argc, const char*const* argv){	if (argc == 3) {		// change wrt Mike		//if (strcmp(argv[1], "log-target") == 0) {		 if (strcmp(argv[1], "eot-target") == 0) {                         EOTtarget_ = (NsObject*) TclObject::lookup(argv[2]);                         if (EOTtarget_ == 0)                                 return TCL_ERROR;                         return TCL_OK;               } else if (strcmp(argv[1], "bss_id") == 0) {                       bss_id_ = atoi(argv[2]);//-ak-----		       //printf("in command bssid %d \n",bss_id_);                       return TCL_OK;                 } else if (strcmp(argv[1], "log-target") == 0) {		// change ends  		logtarget_ = (NsObject*) TclObject::lookup(argv[2]);			if(logtarget_ == 0)				return TCL_ERROR;			return TCL_OK;		} else if(strcmp(argv[1], "nodes") == 0) {			if(cache_) return TCL_ERROR;			cache_node_count_ = atoi(argv[2]);			cache_ = new Host[cache_node_count_ + 1];			assert(cache_);			bzero(cache_, sizeof(Host) * (cache_node_count_+1 ));			return TCL_OK;		} else if(strcmp(argv[1], "eventtrace") == 0) {			// command added to support event tracing by Sushmita                        et_ = (EventTrace *)TclObject::lookup(argv[2]);                        return (TCL_OK);                }	}	return Mac::command(argc, argv);}// Added by Sushmita to support event tracingvoid Mac802_11::trace_event(char *eventtype, Packet *p) {        if (et_ == NULL) return;        char *wrk = et_->buffer();        char *nwrk = et_->nbuffer();	        hdr_ip *iph = hdr_ip::access(p);        //char *src_nodeaddr =	//       Address::instance().print_nodeaddr(iph->saddr());        //char *dst_nodeaddr =        //      Address::instance().print_nodeaddr(iph->daddr());	        struct hdr_mac802_11* dh = HDR_MAC802_11(p);	        //struct hdr_cmn *ch = HDR_CMN(p);		if(wrk != 0) {		sprintf(wrk, "E -t "TIME_FORMAT" %s %2x ",			et_->round(Scheduler::instance().clock()),                        eventtype,                        //ETHER_ADDR(dh->dh_sa)                        ETHER_ADDR(dh->dh_ta)                        );        }        if(nwrk != 0) {                sprintf(nwrk, "E -t "TIME_FORMAT" %s %2x ",                        et_->round(Scheduler::instance().clock()),                        eventtype,                        //ETHER_ADDR(dh->dh_sa)                        ETHER_ADDR(dh->dh_ta)                        );        }        et_->dump();}/* ======================================================================   Debugging Routines   ====================================================================== */voidMac802_11::trace_pkt(Packet *p) {	struct hdr_cmn *ch = HDR_CMN(p);	struct hdr_mac802_11* dh = HDR_MAC802_11(p);	u_int16_t *t = (u_int16_t*) &dh->dh_fc;	fprintf(stderr, "\t[ %2x %2x %2x %2x ] %x %s %d\n",		*t, dh->dh_duration,		// change wrt Mike		//ETHER_ADDR(dh->dh_da), ETHER_ADDR(dh->dh_sa),		 ETHER_ADDR(dh->dh_ra), ETHER_ADDR(dh->dh_ta),		// change ends		index_, packet_info.name(ch->ptype()), ch->size());}voidMac802_11::dump(char *fname){	fprintf(stderr,		"\n%s --- (INDEX: %d, time: %2.9f)\n",		fname, index_, Scheduler::instance().clock());	fprintf(stderr,		"\ttx_state_: %x, rx_state_: %x, nav: %2.9f, idle: %d\n",		tx_state_, rx_state_, nav_, is_idle());	fprintf(stderr,		"\tpktTx_: %x, pktRx_: %x, pktRTS_: %x, pktCTRL_: %x, callback: %x\n",		(int) pktTx_, (int) pktRx_, (int) pktRTS_,		(int) pktCTRL_, (int) callback_);	fprintf(stderr,		"\tDefer: %d, Backoff: %d (%d), Recv: %d, Timer: %d Nav: %d\n",		mhDefer_.busy(), mhBackoff_.busy(), mhBackoff_.paused(),		mhRecv_.busy(), mhSend_.busy(), mhNav_.busy());	fprintf(stderr,		"\tBackoff Expire: %f\n",		mhBackoff_.expire());}/* ======================================================================   Packet Headers Routines   ====================================================================== */inline intMac802_11::hdr_dst(char* hdr, int dst ){	struct hdr_mac802_11 *dh = (struct hdr_mac802_11*) hdr;	//dst = (u_int32_t)(dst);	// change wrt Mike	/*if(dst > -2)		STORE4BYTE(&dst, (dh->dh_da));	return ETHER_ADDR(dh->dh_da);*/	       if (dst > -2) {               if ((bss_id() == IBSS_ID) || (addr() == bss_id())) {                       /* if I'm AP (2nd condition above!), the dh_3a!                        * is already set by the MAC whilst fwding; if!                        * locally originated pkt, it might make sense!                        * to set the dh_3a to myself here! don't know!                        * how to distinguish between the two here - and!                        * the info is not critical to the dst station!                        * anyway!                        */                       STORE4BYTE(&dst, (dh->dh_ra));               } else {                       /* in BSS mode, the AP forwards everything;!                        * therefore, the real dest goes in the 3rd!                        * address, and the AP address goes in the!                        * destination address                        */                       STORE4BYTE(&bss_id_, (dh->dh_ra));                       STORE4BYTE(&dst, (dh->dh_3a));               }       }       return (u_int32_t)ETHER_ADDR(dh->dh_ra);	// change ends}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99热99| 欧美日韩精品一区视频| 韩国v欧美v亚洲v日本v| 美国三级日本三级久久99| 天天操天天色综合| 亚洲一二三四在线观看| 一区二区在线电影| 亚洲自拍偷拍综合| 亚洲第一狼人社区| 夜夜精品视频一区二区| 亚洲一区在线观看免费观看电影高清| 亚洲人快播电影网| 亚洲欧美成人一区二区三区| 亚洲制服丝袜av| 亚洲成人www| 免费人成黄页网站在线一区二区 | 亚洲图片一区二区| 亚洲伊人伊色伊影伊综合网| 亚洲成人激情社区| 青娱乐精品视频| 精品无人区卡一卡二卡三乱码免费卡| 狠狠色丁香久久婷婷综合_中| 韩国三级在线一区| 懂色av一区二区三区免费看| 99热这里都是精品| 在线日韩国产精品| 欧美精品久久天天躁| 日韩一区二区在线播放| 欧美国产日韩亚洲一区| 亚洲猫色日本管| 午夜精品免费在线| 精东粉嫩av免费一区二区三区| 国产在线一区二区| 99精品国产99久久久久久白柏| 欧美视频一区在线| 精品国产凹凸成av人网站| 国产欧美日韩麻豆91| 一区二区在线免费| 麻豆精品视频在线观看视频| 国产**成人网毛片九色 | 精品美女一区二区| 国产人久久人人人人爽| 一区二区三区 在线观看视频| 蜜臀久久久99精品久久久久久| 国产.精品.日韩.另类.中文.在线.播放| 91老师国产黑色丝袜在线| 91精品国产综合久久久久久 | 久久久777精品电影网影网| 最新不卡av在线| 青青草97国产精品免费观看 | 亚洲免费观看高清完整| 老鸭窝一区二区久久精品| 春色校园综合激情亚洲| 欧美精品自拍偷拍| 国产精品毛片高清在线完整版| 亚洲成人激情综合网| 福利电影一区二区| 91精品国产日韩91久久久久久| 欧美激情中文字幕一区二区| 香蕉成人伊视频在线观看| 国产成人免费视频网站高清观看视频 | 久久精品男人的天堂| 亚洲成人精品影院| 不卡大黄网站免费看| 精品日韩av一区二区| 伊人开心综合网| 国产suv精品一区二区三区| 7777精品久久久大香线蕉| 亚洲三级视频在线观看| 国产一区二区主播在线| 精品视频在线看| 国产精品看片你懂得| 另类的小说在线视频另类成人小视频在线| 91丝袜美女网| 国产午夜亚洲精品不卡| 日本欧美在线观看| 日本精品一级二级| 久久精品日产第一区二区三区高清版 | 国产精品一区免费视频| 欧美日韩久久不卡| 亚洲免费伊人电影| 成人听书哪个软件好| 欧美大胆人体bbbb| 日韩专区一卡二卡| 在线视频你懂得一区二区三区| 欧美激情综合在线| 国产伦精品一区二区三区免费迷| 7777精品伊人久久久大香线蕉完整版 | 亚洲素人一区二区| 国产精品一二三区| 日韩精品一区二区三区中文不卡| 婷婷丁香激情综合| 91国模大尺度私拍在线视频| 亚洲色图第一区| 97国产精品videossex| 国产欧美一区二区精品秋霞影院 | 国产乱子伦视频一区二区三区| 8v天堂国产在线一区二区| 亚洲一区二区欧美| 91成人免费网站| 亚洲精品欧美在线| 91国产免费看| 亚洲综合一区在线| 欧美午夜精品一区二区蜜桃| 亚洲黄色av一区| 色婷婷亚洲精品| 亚洲一区二区三区四区不卡| 欧美手机在线视频| 日韩电影在线免费| 91精品国产综合久久精品app| 午夜伊人狠狠久久| 91精品婷婷国产综合久久性色| 午夜视频一区二区| 欧美一区二区视频在线观看2022 | 色综合久久久久综合体桃花网| 国产精品污www在线观看| 成人黄色在线看| 国产精品久久久久久久久久久免费看| 成人一区二区在线观看| 最好看的中文字幕久久| 欧美午夜精品理论片a级按摩| 亚洲va中文字幕| 欧美videossexotv100| 国内外成人在线视频| 中文字幕乱码日本亚洲一区二区 | 国产精品一区久久久久| 国产亚洲精品久| 色综合久久综合| 午夜欧美在线一二页| 欧美一区二区三区成人| 国产综合色视频| 国产精品美女久久久久久2018| 91亚洲精华国产精华精华液| 亚洲一级电影视频| 精品国产乱码91久久久久久网站| 国产精品系列在线观看| 亚洲免费观看在线视频| 欧美精品一二三区| 国产一区二区三区黄视频 | 在线观看亚洲a| 日本成人在线网站| 国产日韩亚洲欧美综合| 色老头久久综合| 美女视频一区在线观看| 国产精品亲子伦对白| 欧美私模裸体表演在线观看| 国产毛片精品视频| 亚洲欧美国产三级| 日韩欧美国产小视频| 成人精品鲁一区一区二区| 亚洲成人手机在线| 亚洲国产精品成人综合色在线婷婷| 欧美性受xxxx黑人xyx性爽| 国产一区二区电影| 一区二区三区在线播| 欧美va在线播放| 色哟哟一区二区在线观看| 毛片基地黄久久久久久天堂| 国产精品久99| 日韩欧美一二三四区| 色噜噜夜夜夜综合网| 国产一区在线精品| 亚洲国产毛片aaaaa无费看| 图片区日韩欧美亚洲| 日本不卡高清视频| 亚洲欧洲日韩在线| 7777女厕盗摄久久久| 91丨九色丨国产丨porny| 久久福利资源站| 亚洲超碰97人人做人人爱| 国产精品二三区| 精品国产91乱码一区二区三区 | 亚洲精品精品亚洲| 欧美videossexotv100| 欧美日韩一卡二卡三卡 | 337p亚洲精品色噜噜噜| av色综合久久天堂av综合| 久久精品理论片| 亚洲第一在线综合网站| 国产精品高潮久久久久无| 精品理论电影在线| 欧美裸体bbwbbwbbw| 91亚洲精品久久久蜜桃网站| 国产成人av电影在线| 看电影不卡的网站| 午夜欧美大尺度福利影院在线看| 中文字幕亚洲区| 国产亚洲精品资源在线26u| 日韩精品一区二区三区中文不卡 | 国产精品久久久一区麻豆最新章节| 91精品国产一区二区| 欧美日韩你懂的| 欧美午夜一区二区| 欧美性生活影院| 91精品福利视频| 91麻豆免费在线观看| 9i在线看片成人免费| 成人国产亚洲欧美成人综合网| 精品剧情在线观看| 一本大道久久精品懂色aⅴ|