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

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

?? mac-802_16.cc

?? 802.16 Qos仿真平臺的c++實現
?? CC
?? 第 1 頁 / 共 5 頁
字號:
/**************************************************************************************
* *Copyright (c) 2006 Regents of the University of Chang Gung 						*
* *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.										*
 *5. If you have any problem about these codes, 									*
       please mail to antibanish@gmail.com or b9229008@stmail.cgu.edu.tw                    			*
**************************************************************************************/
#include "delay.h"
#include "connector.h"
#include "packet.h"
#include "random.h"
#include "mobilenode.h"

#include "arp.h" 
#include "ll.h"
#include "mac.h"
#include "mac-802_16.h"
#include "cmu-trace.h"
#include "rtp.h"   
#include "agent.h"
#include "basetrace.h"
#include "geographic.h"

#define BsID 0
#define MaxProfileNum 6
#define PDUSIZE 100
#define DlSymbolNum 36
#define UlSymbolNum 12
#define DlSubchanNum 60
#define UlSubchanNum 92

extern TOMAC *CalMod;

int BasicCID_Counter = 0x0001; //0x0001 ~ 0x1000
int PrimaryCID_Counter = 0x001; //0x1001 ~ 0x2000
int TransportCID_Counter = 0x2001; //0x2001 ~ 0xFFFE
int FrameNumber_Counter = 0;
int DCD_Counter = 0;
int UCD_Counter = 0;
int ServiceFlowID_Counter0 = 0;
int ServiceFlowID_Counter1 = 0;
int ServiceFlowID_Counter2 = 0;
int ServiceFlowID_Counter3 = 0;
int ServiceFlowID_Counter4 = 0;
int ServiceFlowID_Counter5 = 0;
int ServiceFlowID_Counter6 = 0;
int ServiceFlowID_Counter7 = 0;
int ServiceFlowID_Counter8 = 0;
int ServiceFlowID_Counter9 = 0;
int UlMapIeNum, DlMapIeNum;
int DlSymbolMap[DlSymbolNum][DlSubchanNum];
int UlSymbolMap[UlSymbolNum][UlSubchanNum];
double FrameLength = 0.005, SymbolLength = 0.00010084, TtgLength = 0.00002941, RtgLength = 0.00002941;
double AllocationStartTime;
int DlAvailSymbol, UlAvailSymbol;
BsSsInfo *BsSsInfo_head;
BsSsInfo *BsSsInfo_tail;
BsServiceFlow *BsSF_head;
BsServiceFlow *BsSF_tail;
UplinkBurstProfile *UlBurstProfile_head;
UplinkBurstProfile *UlBurstProfile_tail;
DownlinkBurstProfile *DlBurstProfile_head;
DownlinkBurstProfile *DlBurstProfile_tail;
UlMapIe *UlMapIe_head;
UlMapIe *UlMapIe_tail;
DlMapIe *DlMapIe_head;
DlMapIe *DlMapIe_tail;

Mac802_16::Mac802_16() :Mac(),frameTimer(this),preambleTimer(this),downlinkTimer(this),uplinkTimer(this),ulmapTimer(this),dlmapTimer(this)
{
	NodeID = index_;
	if (NodeID == BsID) {
		TransactionID_Counter = 0x8000; //0x8000 ~ 0xFFFFF
		BsSsInfo_head = NULL;
		BsSsInfo_tail = NULL;
		BsSF_head = NULL;
		BsSF_tail = NULL;
		UlBurstProfile_head = NULL;
		UlBurstProfile_tail = NULL;
		DlBurstProfile_head = NULL;
		DlBurstProfile_tail = NULL;
		UlMapIe_head = NULL;
		UlMapIe_tail = NULL;
		DlMapIe_head = NULL;
		DlMapIe_tail = NULL;
		DlAvailSymbol = DlSymbolNum*DlSubchanNum;
		UlAvailSymbol = UlSymbolNum*UlSubchanNum;
		frameTimer.start(0);
		DlMapIeNum = 0;
		UlMapIeNum = 0;		RangingFlag=false;//BS剛初始化的時候沒有任何SS接入,設置為false
	} else {
		TransactionID_Counter = 0x0000;	//0x0000 ~ 0x7FFFF
		SsSF_head = NULL;
		SsSF_tail = NULL;
		RangingStatus = false;
	}
}  

void 
Mac802_16::recv(Packet* p, Handler* h)
{
	struct hdr_cmn *hdr = HDR_CMN(p);
	struct hdr_mac *mac = HDR_MAC(p);
	struct hdr_mac802_16 *mac16 = HDR_MAC802_16(p);	
	UcdMsg *ucd = (UcdMsg*) p->accessdata();
	DcdMsg *dcd = (DcdMsg*) p->accessdata();
	RngReqMsg *rngreq = (RngReqMsg*) p->accessdata();
	RngRspMsg *rngrsp = (RngRspMsg*) p->accessdata();
	DsaReqMsg *dsareq = (DsaReqMsg*) p->accessdata();
	DsaRspMsg *dsarsp = (DsaRspMsg*) p->accessdata();
	DsaAckMsg *dsaack = (DsaAckMsg*) p->accessdata();
	
	if (hdr_cmn::access(p)->direction() == hdr_cmn::UP) {
		if (NodeID == BsID) {
			if (hdr->ptype() == PT_UGS) {			
				if (BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)) {
					/*if (hdr->next_hop() != BsID) {	
						if (!BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_UGS, DL, -1, -1))
							sendDSAREQ(NULL, BsCreateServiceFlow(p, DL));
						BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_UGS, DL, -1, -1)->SduQueue.enque(p);
					} else*/
						uptarget_->recv(p, this);
					//printf("bs  recv UGS pkt from ss%d\n",BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr);
				}
			} else if (hdr->ptype() == PT_ertPS) {	
				if (BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)) {
					/*if (hdr->next_hop() != BsID) {	
						if (!BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_ertPS, DL, -1, -1))
							sendDSAREQ(NULL, BsCreateServiceFlow(p, DL));
						BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_ertPS, DL, -1, -1)->SduQueue.enque(p);
					} else*/
						uptarget_->recv(p, this);
					//printf("bs  recv ertPS pkt from ss%d\n",BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr);
				}				
			} else if (hdr->ptype() == PT_rtPS) { 		
				if (BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)) {
					/*if (hdr->next_hop() != BsID) {	
						if (!BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_rtPS, DL, -1, -1))
							sendDSAREQ(NULL, BsCreateServiceFlow(p, DL));
						BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_rtPS, DL, -1, -1)->SduQueue.enque(p);
					} else*/
						uptarget_->recv(p, this);
					//printf("bs  recv rtPS pkt from ss%d\n",BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr);
				}					
			} else if (hdr->ptype() == PT_nrtPS) {	
				if (BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)) {
					/*if (hdr->next_hop() != BsID) {	
						if (!BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_nrtPS, DL, -1, -1))
							sendDSAREQ(NULL, BsCreateServiceFlow(p, DL));
						BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_nrtPS, DL, -1, -1)->SduQueue.enque(p);
					} else*/
						uptarget_->recv(p, this);
					//printf("bs  recv nrtPS pkt from ss%d\n",BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr);
				}					
			} else if (hdr->ptype() == PT_BE) {
				if (BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)) {
					/*if (hdr->next_hop() != BsID) {	
						if (!BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_BE, DL, -1, -1))
							sendDSAREQ(NULL, BsCreateServiceFlow(p, DL));
						BsSearchServiceFlow(BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr, hdr->next_hop(), PT_BE, DL, -1, -1)->SduQueue.enque(p);
					} else*/
						uptarget_->recv(p, this);	
					//printf("bs  recv BE pkt from ss%d\n",BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, -1, mac16->generic_hdr.CID)->MacAddr);
				}
			} else if (hdr->ptype() == PT_ACK) {
				if (mac->macDA() == NodeID)
					uptarget_->recv(p, this);
			} else if (hdr->ptype() == PT_BWREQ) {		
				//printf("bs  recv BW-REQ from ss%d\n",mac->macSA());
				BsSearchSsInfo(-1, mac16->bwreq_hdr.CID)->UplinkBandwidth += mac16->bwreq_hdr.BR;
				mac_log(p);
			} else if (hdr->ptype() == PT_RNGREQ) {
				//printf("bs  recv RNG-REQ from ss%d \n", mac->macSA());//////////16協議中SS是競爭接入的,BS一幀內發送的測距ie只供一個SS接入,而長庚的補丁中是一個測距ie可以讓多個SS同時接入,我在在BS中增加一個變量RangingFlag,可以使BS一幀內只接收到一個測距請求				if(RangingFlag) return;//如果處于測距請求阻止狀態,拒絕接受該消息
				mac_log(p->copy());	
				if (!BsSearchSsInfo(rngreq->SS_MAC_Address, -1)) {					
					sendRNGRSP(BsCreateSsInfo(p));					RangingFlag=true;//如果BS發送了測距回復,將RangingFlag置true,阻止一幀內的其他測距請求,這個標志位在BS發送完本RNGRSP消息后將會恢復				}
			} else if (hdr->ptype() == PT_DSAREQ) {
				if (dsareq->Transaction_ID <= 0x7FFF) {
					packet_t ptype;	
					switch (dsareq->Service_Flow_Parameters.Service_Flow_Scheduling_Type.Value) {
						case 0x06: ptype = PT_UGS; break;
						case 0x05: ptype = PT_ertPS; break;
						case 0x04: ptype = PT_rtPS; break;
						case 0x03: ptype = PT_nrtPS; break;
						case 0x02: ptype = PT_BE; break;
					}		
					if (BsSearchSsInfo(-1, mac16->generic_hdr.CID) && !BsSearchServiceFlow(dsareq->Service_Flow_Parameters.Source_MAC_Address.Value, dsareq->Service_Flow_Parameters.Destination_MAC_Address.Value, ptype, UL, -1, -1)) {
						//printf("bs  recv DSA-REQ from ss%d\n", BsSearchSsInfo(-1, mac16->generic_hdr.CID)->MacAddr);
						mac_log(p->copy());
						sendDSXRVD(p->copy());
						sendDSARSP(NULL, BsCreateServiceFlow(p->copy(), UL));
					}
				}				
			} else if (hdr->ptype() == PT_DSARSP) {			
				if (dsarsp->Transaction_ID >= 0x8000)
					if (BsSearchSsInfo(-1, mac16->generic_hdr.CID)) {					
						mac_log(p->copy());
						if (dsarsp->Confirmation_Code == 0x00)
							BsSearchServiceFlow(-1, -1, PT_NTYPE, DL, dsarsp->Transaction_ID, -1)->Status = Active;
						sendDSAACK(p);
					}			
			} else if (hdr->ptype() == PT_DSAACK) {	
				if (dsaack->Transaction_ID <= 0x7FFF) {
					if (BsSearchServiceFlow(-1, -1, PT_NTYPE, UL, dsaack->Transaction_ID, -1)) {
						//printf("bs  recv DSA-ACK from ss%d\n",mac->macSA());
						mac_log(p);
					} 
				}		
			} else {	
			//	if(hdr->ptype()==PT_AODV)
					//printf("Node%d 接收從下層來的AODV信息\n",NodeID);
				sendUp(p);
				return;		
			}
			return;
		} else {
			if (hdr->ptype() == PT_UGS) {
				if (SsSearchServiceFlow(-1, PT_NTYPE, DL, -1, mac16->generic_hdr.CID)) {
					uptarget_->recv(p, this);
					//printf("ss%d recv UGS pkt\n",NodeID);
				}
			} else if (hdr->ptype() == PT_ertPS) {
				if (SsSearchServiceFlow(-1, PT_NTYPE, DL, -1, mac16->generic_hdr.CID)) {
					uptarget_->recv(p, this);
					//printf("ss%d recv ertPS pkt\n",NodeID);
				}
			} else if (hdr->ptype() == PT_rtPS) { 
				if (SsSearchServiceFlow(-1, PT_NTYPE, DL, -1, mac16->generic_hdr.CID)) {
					uptarget_->recv(p, this);
					//printf("ss%d recv rtPS pkt\n",NodeID);
				}
			} else if (hdr->ptype() == PT_nrtPS) {
				if (SsSearchServiceFlow(-1, PT_NTYPE, DL, -1, mac16->generic_hdr.CID)) {
					uptarget_->recv(p, this);
					//printf("ss%d recv nrtPS pkt\n",NodeID);
				}
			} else if (hdr->ptype() == PT_BE) {
				if (SsSearchServiceFlow(-1, PT_NTYPE, DL, -1, mac16->generic_hdr.CID)) {
					uptarget_->recv(p, this);
					//printf("ss%d recv BE pkt\n",NodeID);
				}
			} else if (hdr->ptype() == PT_ACK) {
				if (mac->macDA() == NodeID)
					uptarget_->recv(p, this);
			} else if (hdr->ptype() == PT_UCD) {
				//printf("ss%d recv UCD\n",NodeID);
				if (UcdConfigChangeCount != ucd->Config_Change_Count) {
					UcdConfigChangeCount = ucd->Config_Change_Count;
					UplinkBurstProfile *tmp = UlBurstProfile_head;
					while (tmp) {
						int FEC_Code;
						switch (ModulCoding) {
							case QPSK_12: FEC_Code = 0; break;
							case QPSK_34: FEC_Code = 1; break;
							case QAM16_12: FEC_Code = 2; break;
							case QAM16_34: FEC_Code = 3; break;
							case QAM64_23: FEC_Code = 4; break;
							case QAM64_34: FEC_Code = 5; break;
						}
						if (tmp->FEC_Code_and_modulation_type.Value == FEC_Code) {
							UplinkBurstProfileTable.UIUC = tmp->UIUC;
							UplinkBurstProfileTable.FEC_Code_and_modulation_type.Value = tmp->FEC_Code_and_modulation_type.Value;
						}
						tmp = tmp->next;
					}
				}
				mac_log(p);				
			} else if (hdr->ptype() == PT_DCD) {
				//printf("ss%d recv DCD\n",NodeID);
				if (DcdConfigChangeCount != dcd->Config_Change_Count) {
					DcdConfigChangeCount = dcd->Config_Change_Count;
					DownlinkBurstProfile *tmp = DlBurstProfile_head;
					while (tmp) {
						int FEC_Code;
						ModulCoding = CalMod->search(NodeID)->ToMod(CalMod->search(0)->x,CalMod->search(0)->y);
						switch (ModulCoding) {
							case QPSK_12: FEC_Code = 0; break;
							case QPSK_34: FEC_Code = 1; break;
							case QAM16_12: FEC_Code = 2; break;
							case QAM16_34: FEC_Code = 3; break;
							case QAM64_23: FEC_Code = 4; break;
							case QAM64_34: FEC_Code = 5; break;
						}
						if (tmp->FEC_Code_type.Value == FEC_Code) {
							DownlinkBurstProfileTable.DIUC = tmp->DIUC;
							DownlinkBurstProfileTable.FEC_Code_type.Value = tmp->FEC_Code_type.Value;
						}
						tmp = tmp->next;
					}
				}
				mac_log(p);				
			} else if (hdr->ptype() == PT_BWREQ) {		
				Packet::free(p);				
			} else if (hdr->ptype() == PT_RNGREQ) {			
				Packet::free(p);
			} else if (hdr->ptype() == PT_DLMAP) {			
				mac_log(p);			
			} else if (hdr->ptype() == PT_ULMAP) {			
				ulmapTimer.start(AllocationStartTime - Scheduler::instance().clock());
				mac_log(p);				
			} else if (hdr->ptype() == PT_RNGRSP) {				
				if ((int)rngrsp->SS_MAC_Address == NodeID) {
					//printf("ss%d recv RNG-RSP basic=%d primary=%d\n",NodeID,rngrsp->Basic_CID,rngrsp->Primary_Management_CID);					
					if (rngrsp->Ranging_Status == 0x03) {
						RangingStatus = true;
						BasicCID = rngrsp->Basic_CID;
						PrimaryCID = rngrsp->Primary_Management_CID;	
					} 
					mac_log(p);
				}			
			} else if (hdr->ptype() == PT_DSAREQ) {		
				if (dsareq->Transaction_ID >= 0x8000) {
					packet_t ptype;	
					switch (dsareq->Service_Flow_Parameters.Service_Flow_Scheduling_Type.Value) {
						case 0x06: ptype = PT_UGS; break;
						case 0x05: ptype = PT_ertPS; break;
						case 0x04: ptype = PT_rtPS; break;
						case 0x03: ptype = PT_nrtPS; break;
						case 0x02: ptype = PT_BE; break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费xxxx性欧美18vr| 亚洲专区一二三| 欧美在线观看一区二区| 国产在线一区观看| 亚洲韩国精品一区| 中文字幕高清不卡| 欧美一区二视频| 色综合中文字幕国产 | 韩国理伦片一区二区三区在线播放 | 欧美性欧美巨大黑白大战| 国产永久精品大片wwwapp| 午夜精品久久久久久| 国产精品传媒在线| 久久日一线二线三线suv| 欧美日本国产视频| 92精品国产成人观看免费 | 91理论电影在线观看| 国产综合久久久久久久久久久久| 视频在线在亚洲| 一区二区三区免费在线观看| 国产精品久久毛片| 久久久99久久精品欧美| 7777精品伊人久久久大香线蕉超级流畅 | 色欧美88888久久久久久影院| 国产精品一区在线观看你懂的| 性欧美疯狂xxxxbbbb| 精品伊人久久久久7777人| 免费国产亚洲视频| 午夜精品久久一牛影视| 一区2区3区在线看| 亚洲欧美国产高清| 欧美大黄免费观看| 亚洲少妇30p| 中文字幕成人av| 久久精品视频在线免费观看| 久久天堂av综合合色蜜桃网| 精品91自产拍在线观看一区| 日韩欧美国产综合| 7777精品伊人久久久大香线蕉的| 欧美日韩国产高清一区二区 | 97久久精品人人澡人人爽| 风流少妇一区二区| 成人国产精品免费| 成人三级伦理片| 成人精品视频一区| 97精品国产露脸对白| 一本一本大道香蕉久在线精品| 99久久综合狠狠综合久久| 波多野结衣在线aⅴ中文字幕不卡| 丁香六月久久综合狠狠色| a美女胸又www黄视频久久| 99国产精品久久久| 91久久奴性调教| 欧美视频一区二区三区四区 | 国产精品一区二区视频| 国产suv精品一区二区6| www.日韩大片| 在线观看免费一区| 欧美日韩亚洲不卡| 欧美一区二区三区视频免费播放| 欧美一级二级在线观看| 精品国产乱码久久| 国产精品久久99| 亚洲午夜影视影院在线观看| 婷婷国产v国产偷v亚洲高清| 久久精品国产亚洲aⅴ| 国产真实乱子伦精品视频| 国产精品白丝jk白祙喷水网站 | 2020国产精品久久精品美国| 国产日韩影视精品| 亚洲美女偷拍久久| 日韩电影一区二区三区| 高清成人免费视频| 欧美亚洲动漫精品| 久久影院午夜片一区| 自拍av一区二区三区| 日韩在线观看一区二区| 国产一二三精品| 在线这里只有精品| www激情久久| 一区二区欧美在线观看| 六月丁香婷婷色狠狠久久| 成人亚洲精品久久久久软件| 欧美色图12p| 久久久高清一区二区三区| 亚洲女女做受ⅹxx高潮| 久久成人免费网| 色综合激情五月| 久久综合国产精品| 亚洲成人免费av| 成人妖精视频yjsp地址| 欧美精品色综合| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日韩精品视频网| 国内精品视频一区二区三区八戒| aaa国产一区| 亚洲精品国产第一综合99久久| 久久精品国产第一区二区三区| 日韩欧美电影一二三| 国产精品免费免费| 免费看日韩a级影片| 成人h动漫精品一区二区| 日韩欧美电影一区| 亚洲私人黄色宅男| 国产成人午夜99999| 91福利精品第一导航| 亚洲国产精品ⅴa在线观看| 亚洲精品国产第一综合99久久| 国产成人自拍网| 99久久免费国产| 国产欧美一区二区精品秋霞影院| 一区二区日韩av| 国产福利一区二区三区视频 | 日本强好片久久久久久aaa| 91免费看`日韩一区二区| 精品视频一区三区九区| 国产精品麻豆网站| 丁香五精品蜜臀久久久久99网站| 91精品国产免费| 亚洲va欧美va人人爽| 91在线看国产| 亚洲日本电影在线| 国产一区二区三区在线看麻豆| 在线成人免费观看| 亚洲另类中文字| 一本久道中文字幕精品亚洲嫩| 欧美性色黄大片| 亚洲综合激情另类小说区| 色综合天天做天天爱| 国产午夜精品一区二区| 国产酒店精品激情| 欧美一级夜夜爽| 美日韩一级片在线观看| 欧美性色欧美a在线播放| 亚洲国产一区二区三区| 色呦呦国产精品| 亚洲综合精品久久| 色婷婷综合视频在线观看| 亚洲激情av在线| 欧美国产成人精品| 国产精品亚洲第一区在线暖暖韩国| 国产亚洲婷婷免费| 国产在线国偷精品产拍免费yy| 久久久777精品电影网影网 | 一区二区三区.www| 欧美日韩精品欧美日韩精品一| 香蕉乱码成人久久天堂爱免费| 中文字幕一区av| 国产精品影视在线| 久久伊99综合婷婷久久伊| 亚洲成人精品一区二区| 欧美日韩视频不卡| 日韩电影在线看| 日韩三级视频中文字幕| 国产精品一卡二| 久久久久综合网| 91美女在线观看| 亚洲香肠在线观看| 欧美老肥妇做.爰bbww| 精品一区二区影视| 久久综合九色欧美综合狠狠| 成人在线视频一区二区| 国产精品三级久久久久三级| 一本色道久久综合亚洲91| 一区二区三区在线视频免费观看| 欧美裸体一区二区三区| 韩国中文字幕2020精品| 国产日韩欧美精品一区| 99国产精品99久久久久久| 一区二区三区在线视频观看58| 717成人午夜免费福利电影| 日本不卡中文字幕| 欧美经典三级视频一区二区三区| www.日韩精品| 免费观看成人av| 中文字幕在线不卡一区| 欧洲一区二区三区在线| 精品一区二区三区不卡| 国产精品免费视频一区| 3d动漫精品啪啪一区二区竹菊| 开心九九激情九九欧美日韩精美视频电影| 欧美激情一区二区三区全黄| 国产99精品视频| 午夜影院在线观看欧美| 一区二区三区国产| 69av一区二区三区| 成人app下载| 石原莉奈在线亚洲二区| 中文乱码免费一区二区| 在线观看欧美黄色| 丰满少妇在线播放bd日韩电影| 亚洲日本一区二区| 久久久综合精品| 欧美日本一道本| 懂色中文一区二区在线播放| 日本不卡高清视频| 欧美国产一区在线| 欧美mv和日韩mv国产网站| 成人性生交大片免费| 麻豆一区二区三|