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

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

?? mac-802_16.cc

?? WIMAX code for NS-2, v1.05
?? CC
?? 第 1 頁 / 共 3 頁
字號:
	mac_16->type=1;
	mac_16->CI=1; 
	mac_16->EKS=1;
	mac_16->LEN=3;
	mac_16->CID=0; 
	mac_16->HCS=0;
	mac_16->mmt=3; 		
	ulmap->management_message_type=3;
	ulmap->uplink_channel_id=1;
	
	allocation_start_time=Scheduler::instance().clock()+dlmapDuration_;	
	for(int i=0;i<UL_burst_profile;i++)
	{
		ULMAP_IE[i].cid=ULMAP_SS[i];	
		ULMAP_IE[i].uiuc=i+1;
		ULMAP_IE[i].OFDMA_Symbol_offset=Symbol_offset;
		ULMAP_IE[i].Subchannel_offset=0x0;
		if(Search_BCID(ULMAP_SS[i])->SS_UL_BW/(channelNO_*dataSize_)-(int)(Search_BCID(ULMAP_SS[i])->SS_UL_BW/(channelNO_*dataSize_))>0.0)
		{
			ULMAP_IE[i].OFDMA_Symbol_number = (int)(Search_BCID(ULMAP_SS[i])->SS_UL_BW/(channelNO_*dataSize_))+1;
		}
		else
		{
			ULMAP_IE[i].OFDMA_Symbol_number = (int)(Search_BCID(ULMAP_SS[i])->SS_UL_BW/(channelNO_*dataSize_));
		}
		ULMAP_IE[i].Subchannel_number=channelNO_;
		ULMAP_IE[i].Ranging_Method=0x0;
		Symbol_offset+=ULMAP_IE[i].OFDMA_Symbol_number;
	}	
	ULMAP_IE[UL_burst_profile].uiuc=0xc;
	pktULMAP_=p;
	SendUL.start(2*symbolDuration_);
}

void Mac802_16::sendDLMAP(int DL_burst_profile)
{
	printf("There are %d Downlink SSs \n",DL_burst_profile);
	Packet *p=Packet::alloc();
	struct hdr_cmn *hdr = HDR_CMN(p);
	struct hdr_mac *mac_ = HDR_MAC(p);
	struct hdr_mac802_16 *mac_16 = HDR_MAC802_16(p);
	struct DL_MAP* dlmap=HDR_MAC802_16_DL_MAP(p);
	int Symbol_offset=0;
	mac_->macDA_ = MAC_BROADCAST;
	mac_->macSA_ = creatid;
	hdr->txtime() = 0.000001;
	hdr->uid() = 0;
	hdr->ptype() = PT_DLMAP;
	hdr->size() = 10;
	hdr->iface() = -2;
	hdr->error() = 0; 
	
	mac_16->HT =0;
	mac_16->EC =1;
	mac_16->type=1;
	mac_16->CI=1; 
	mac_16->EKS=1;
	mac_16->LEN=3;
	mac_16->CID=0; 
	mac_16->HCS=0;
	mac_16->mmt=2; 		
	
	dlmap->management_message_type=2;
	dlmap->BS_ID=0;	
	
	pktDLMAP_=p;
	SendDL.start(0);	
	
	if(DL_burst_profile>0)
	{
		DLMAP_IE[0].diuc=1;
		DLMAP_IE[0].N_CID=DL_burst_profile-1;
		DLMAP_IE[0].CID=DLMAP_SS[0];
		DLMAP_IE[0].OFDMA_Symbol_offset=Symbol_offset;
		DLMAP_IE[0].Subchannel_offset=0x0;
		if(Search_BCID(DLMAP_SS[0])->SS_DL_BW/(channelNO_*dataSize_)
			-(int)(Search_BCID(DLMAP_SS[0])->SS_DL_BW/(channelNO_*dataSize_))>0.0)
		{
			DLMAP_IE[0].OFDMA_Symbol_number = (int)(Search_BCID(DLMAP_SS[0])->SS_DL_BW/(channelNO_*dataSize_))+1;
		}
		else
		{
			DLMAP_IE[0].OFDMA_Symbol_number = (int)(Search_BCID(DLMAP_SS[0])->SS_DL_BW/(channelNO_*dataSize_));
		}		
		DLMAP_IE[0].Subchannel_number=channelNO_;
		Symbol_offset+=DLMAP_IE[0].OFDMA_Symbol_number;
		dlmaptimer.start(4*symbolDuration_, 0, Symbol_offset);
	}
	else 
		DLMAP_IE[DL_burst_profile].diuc=0xe;
}

void Mac802_16::DLmapHandler(long double time, int DL_burst_num, int Symbol_offset)
{
	BS_Scheduler(DLMAP_SS[DL_burst_num],DLMAP_IE[DL_burst_num].OFDMA_Symbol_number);
	
	if(DL_burst_num+1<DL_burst_profile)
	{
		DLMAP_IE[DL_burst_num+1].diuc=DL_burst_num+1;
		DLMAP_IE[DL_burst_num+1].N_CID=DL_burst_profile-1;
		DLMAP_IE[DL_burst_num+1].CID=DLMAP_SS[DL_burst_num+1];
		DLMAP_IE[DL_burst_num+1].OFDMA_Symbol_offset=Symbol_offset;
		DLMAP_IE[DL_burst_num+1].Subchannel_offset=0x0;
		if(Search_BCID(DLMAP_SS[DL_burst_num+1])->SS_DL_BW/(channelNO_*dataSize_)
			-(int)(Search_BCID(DLMAP_SS[DL_burst_num+1])->SS_DL_BW/(channelNO_*dataSize_))>0.0)
		{
			DLMAP_IE[DL_burst_num+1].OFDMA_Symbol_number 
				= (int)(Search_BCID(DLMAP_SS[DL_burst_num+1])->SS_DL_BW/(channelNO_*dataSize_))+1;
		}
		else
		{
			DLMAP_IE[DL_burst_num+1].OFDMA_Symbol_number 
				= (int)(Search_BCID(DLMAP_SS[DL_burst_num+1])->SS_DL_BW/(channelNO_*dataSize_));
		}		
		DLMAP_IE[DL_burst_num+1].Subchannel_number=channelNO_;
		/*If we don't add 0.001s to the equation, it will lead to the overlap of PDU timer and  have segmentation fault.*/
		dlmaptimer.start(DLMAP_IE[DL_burst_num+1].OFDMA_Symbol_number*symbolDuration_+0.0001
			, DL_burst_num+1, Symbol_offset+DLMAP_IE[DL_burst_num+1].OFDMA_Symbol_number);
	}
	else
	{
		DLMAP_IE[DL_burst_profile].diuc=0xe;	
		dlmaptimer.stop();
	}
}

void Mac802_16::transmit(Packet* p, double timeout)
{	
	mhDefer_.start(timeout);
}

void Mac802_16::PDU_Generator(packet_t ser_type, int grab_byte,int bcid)
{			
	printf("Downlink Session Start (Dealing with BCID %d): \n",bcid);
	switch(ser_type){
		case PT_UGS:
			printf("BS will grab %d bytes from UGS-Queue, and There are %d bytes in Queue\n",grab_byte,Queue_list->Search_BCID(bcid)->UGS.byteLength());
			Frag_or_Pack(PT_UGS, Queue_list->Search_BCID(bcid)->UGS.count(grab_byte), bcid);
			break;
		case PT_rtPS:
			printf("BS will grab %d bytes from rtPS-Queue, and There are %d bytes in Queue \n",grab_byte,Queue_list->Search_BCID(bcid)->rtPS.byteLength());
			Frag_or_Pack(PT_rtPS, Queue_list->Search_BCID(bcid)->rtPS.count(grab_byte), bcid);
			break;
		case PT_ertPS:
			printf("BS will grab %d bytes from ertPS-Queue, and There are %d bytes in Queue \n",grab_byte,Queue_list->Search_BCID(bcid)->ertPS.byteLength());
			Frag_or_Pack(PT_ertPS, Queue_list->Search_BCID(bcid)->ertPS.count(grab_byte), bcid);
			break;					
		case PT_nrtPS:
			printf("BS will grab %d bytes from nrtPS-Queue, and There are %d bytes in Queue \n",grab_byte,Queue_list->Search_BCID(bcid)->nrtPS.byteLength());
			Frag_or_Pack(PT_nrtPS, Queue_list->Search_BCID(bcid)->nrtPS.count(grab_byte), bcid);
			break;
		case PT_BE:
			printf("BS will grab %d bytes from BE-Queue, and There are %d bytes in Queue\n",grab_byte,Queue_list->Search_BCID(bcid)->BE.byteLength());
			Frag_or_Pack(PT_BE, Queue_list->Search_BCID(bcid)->BE.count(grab_byte), bcid);
			break;
		default: 
			break;
	}	
}

void Mac802_16::Frag_or_Pack(packet_t ser_type, int num, int user)
{  
	static int32_t tmp_size = PDUSIZE;	
	Packet* pkt_tmp=Packet::alloc();
	Packet* tmp=Packet::alloc();
begin:		
	while(num)
	{		
		switch(ser_type)
		{
			case PT_UGS:				
				tmp=Queue_list->Search_BCID(user)->UGS.deque();		
				break;
			case PT_rtPS:			
				tmp=Queue_list->Search_BCID(user)->rtPS.deque();	
				break;
			case PT_ertPS:				
				tmp=Queue_list->Search_BCID(user)->ertPS.deque();	
				break;
			case PT_nrtPS:			
				tmp=Queue_list->Search_BCID(user)->nrtPS.deque();	
				break;
			case PT_BE:			
				tmp=Queue_list->Search_BCID(user)->BE.deque();		
				break;
			default:	
				break;
		}
		
		struct hdr_cmn* pkt = HDR_CMN(tmp);
		//struct hdr_cmn* pkt_tmp_cmn=HDR_CMN(pkt_tmp);
	    struct hdr_mac802_16* dh = HDR_MAC802_16(tmp);		
		//struct hdr_mac802_16* pkt_tmp_dh = HDR_MAC802_16(pkt_tmp);
		
		if(pkt->size() <= tmp_size)
		{	  //need to pack
				dh->type = 0x01;							
				pack_subheader_t* psh = sub_HDR_MAC802_16_pack(tmp);
				//printf("Add packing subheader FSN:%d\n",psh->FSN);
				psh->FSN=((psh->FSN)+1)%8;				
				if(pkt->size() < tmp_size)
				{  //Add PACKing subheader; add SDU or SDU fragment					
					psh->FC=0x0;
					psh->Length = pkt->size();
					tmp_size -= pkt->size();
					//printf("Need to Pack:\n");	
					break;
				}	
				else{ //add PACKing subheader; add fragment					
					psh->FC=0x2;					
					pkt_tmp=tmp; 
					Queue_list->Search_BCID(user)->PDUQueue.enque(pkt_tmp->copy());					
					//printf("Complete a MPDU\nPacking with fragmetation; The remaining fragment is stored in queue\n");					
					tmp_size = PDUSIZE;								
				}
				num--;
				goto begin;	
		}
		else{  //Need fragmetation
        	dh->type = 0x04; 
			tmp->type_=2;				
			if(Queue_list->Search_BCID(user)->fragQueue.length()!= 0)
			{ //Fragment-queue is not empty;								
Frag_que:		pkt_tmp=Queue_list->Search_BCID(user)->fragQueue.deque();
				struct hdr_cmn* pkt = HDR_CMN(pkt_tmp);
				struct frag_subheader_t* fsh = sub_HDR_MAC802_16_frag(pkt_tmp);						
				//printf("Add fragmentation subheader FSN:%d\n",fsh->FSN);
				fsh->FSN=((fsh->FSN)+1)%8;				
				if( pkt->size()<= tmp_size)
				{ //Add SDU to payload
						//printf("Add SDU to payload\nLast Fragment\n");						
						if(pkt->size() == tmp_size)
						{
							 fsh->FC=0x1; // last fragment
							 //printf("Complete a MPDU\n\n");							 
							 tmp_size = PDUSIZE;	
							 Queue_list->Search_BCID(user)->PDUQueue.enque(pkt_tmp->copy());							 	
						}							
						else
						{
							 fsh->FC=0x3; // continue fragment  need pack
							 tmp_size-=pkt->size();							 
						}	
				}
				else
				{
					//dh->type = 0x04;
					fsh->FC=0x3;  // continue fragment					
					//printf("Continue Fragment\n");					
					int i=pkt->size();
					pkt->size()=tmp_size;					
					Queue_list->Search_BCID(user)->PDUQueue.enque(pkt_tmp->copy());
					pkt->size()=i-tmp_size;
					Queue_list->Search_BCID(user)->fragQueue.enque(pkt_tmp->copy());					
					//printf("Complete a MPDU\n The remaining fragment is stored in queue\n");					
					tmp_size = PDUSIZE;
					goto Frag_que;	
				}
			}
			else
			{   //there're no fragments in fragment-queue
				//dh->type = 0x04;
				struct frag_subheader_t* fsh = sub_HDR_MAC802_16_frag(tmp);
				struct hdr_cmn* pkt = HDR_CMN(tmp);				
				//printf("Add fragmentation subheader FSN:%d\n",fsh->FSN);
				fsh->FSN=((fsh->FSN)+1)%8;
				if(pkt->size()>tmp_size)
				{  //need to fragmentation
					int i=pkt->size();
					pkt->size()=tmp_size;	
					//printf("First Fragmentaton\n");					 					
					fsh->FC=0x2;  //first fragment
					Queue_list->Search_BCID(user)->PDUQueue.enque(tmp->copy());
					pkt->size()=i-tmp_size;
					Queue_list->Search_BCID(user)->fragQueue.enque(tmp->copy());					
					//printf("Complete a MPDU\n The remaining fragment is stored in queue\n");					
					tmp_size = PDUSIZE;					
					goto Frag_que;
				}
			}
		}
		num--;
	}
	resumeBSBurst.start(0.00001,user);
	return;
}

void Mac802_16::SS_PDU_Generator(packet_t ser_type, int grab_byte,int bcid)
{						
	printf("Uplink Session Start (Dealing with BCID %d): \n",bcid);
	switch(ser_type)
	{                   
		case PT_UGS:
			printf("SS will grab %d bytes from UGS-Queue, and There are %d bytes in Queue\n",grab_byte
				,ss_buf->lookup(Search_BCID(bcid)->srcIP)->UGS.byteLength());
			SS_Frag_or_Pack(PT_UGS, ss_buf->lookup(Search_BCID(bcid)->srcIP)->UGS.count(grab_byte), bcid);
			break;
		case PT_rtPS:
			printf("SS will grab %d bytes from rtPS-Queue, and There are %d bytes in Queue\n",grab_byte
				,ss_buf->lookup(Search_BCID(bcid)->srcIP)->rtPS.byteLength());
			SS_Frag_or_Pack(PT_rtPS, ss_buf->lookup(Search_BCID(bcid)->srcIP)->rtPS.count(grab_byte), bcid);	
			break;
		case PT_ertPS:
			printf("SS will grab %d bytes from ertPS-Queue, and There are %d bytes in Queue\n",grab_byte
				,ss_buf->lookup(Search_BCID(bcid)->srcIP)->ertPS.byteLength());
			SS_Frag_or_Pack(PT_ertPS, ss_buf->lookup(Search_BCID(bcid)->srcIP)->ertPS.count(grab_byte), bcid);
			break;				
		case PT_nrtPS:
			printf("SS will grab %d bytes from nrtPS-Queue, and There are %d bytes in Queue\n",grab_byte
				,ss_buf->lookup(Search_BCID(bcid)->srcIP)->nrtPS.byteLength());
			SS_Frag_or_Pack(PT_nrtPS, ss_buf->lookup(Search_BCID(bcid)->srcIP)->nrtPS.count(grab_byte), bcid);
			break;
		case PT_BE:
			printf("SS will grab %d bytes from BE-Queue, and There are %d bytes in Queue\n",grab_byte
				,ss_buf->lookup(Search_BCID(bcid)->srcIP)->BE.byteLength());
			SS_Frag_or_Pack(PT_BE, ss_buf->lookup(Search_BCID(bcid)->srcIP)->BE.count(grab_byte), bcid);		
			break;
		default:return;	
	}	
	return;
}

void Mac802_16::SS_Frag_or_Pack(packet_t ser_type, int num, int user)
{
	static int32_t tmp_size = PDUSIZE;	
	Packet* pkt_tmp=Packet::alloc();
    Packet* pkt_tmp_head = Packet::alloc();
	Packet* tmp=Packet::alloc();
	pkt_tmp_head=tmp;

start:	
	while(num)
	{		
		switch(ser_type)
		{
			case PT_UGS:				
					tmp=ss_buf->lookup(Search_BCID(user)->srcIP)->UGS.deque();
					break;
			case PT_rtPS:			
					tmp=ss_buf->lookup(Search_BCID(user)->srcIP)->rtPS.deque();		
					break;
			case PT_ertPS:				
					tmp=ss_buf->lookup(Search_BCID(user)->srcIP)->ertPS.deque();	
					break;
			case PT_nrtPS:			
					tmp=ss_buf->lookup(Search_BCID(user)->srcIP)->nrtPS.deque();	
					break;
			case PT_BE:			
					tmp=ss_buf->lookup(Search_BCID(user)->srcIP)->BE.deque();		
					break;
			default:											
					break;
		}
		struct hdr_cmn* pkt = HDR_CMN(tmp);
	    struct hdr_mac802_16* dh = HDR_MAC802_16(tmp);
		//struct hdr_cmn* pkt_tmp_cmn=HDR_CMN(pkt_tmp);
		//struct hdr_mac802_16* pkt_tmp_dh = HDR_MAC802_16(pkt_tmp);	
		
		if(pkt->size() <= tmp_size)
		{  //need to pack
				dh->type = 0x01;	
				tmp->type_=1;	
				struct pack_subheader_t* psh = sub_HDR_MAC802_16_pack(tmp);
				//printf("Add packing subheader FSN:%d\n",psh->FSN);
				psh->FSN=((psh->FSN)+1)%8;				
				if(pkt->size() < tmp_size)
				{  //Add PACKing subheader; add SDU or SDU fragment					
					psh->FC=0x0;
					psh->Length = pkt->size();
					tmp_size -= pkt->size();
					//printf("Need to Pack:\n");	
				}	
				else
				{ //add PACKing subheader; add fragment					
					psh->FC=0x2;
					pkt_tmp=tmp;   
					ss_buf->lookup(Search_BCID(user)->srcIP)->PDUQUEUE.enque(tmp->copy());	
					//printf("Complete a MPDU\nPacking with fragmetation; The remaining fragment is stored in queue\n");					
					tmp_size = PDUSIZE;								
				}
				num--;
				goto start;				
		}
		else
		{//Need fragmetation
        	dh->type = 0x04; 
			tmp->type_=2;		
			if(ss_buf->lookup(Search_BCID(user)->srcIP)->fragQUEUE.length()!= 0)
			{ //Fragment-queue is not empty;
SS_Frag_que:	pkt_tmp=ss_buf->lookup(Search_BCID(user)->srcIP)->fragQUEUE.deque();
				struct hdr_cmn* pkt = HDR_CMN(pkt_tmp);
				struct frag_subheader_t* fsh = sub_HDR_MAC802_16_frag(pkt_tmp);				
				//printf("Add fragmentation subheader FSN:%d\n",fsh->FSN);
				fsh->FSN=((fsh->FSN)+1)%8;				
				if( pkt->size()<= tmp_size)
				{ //Add SDU to payload
						//printf("Add SDU to payload\nLast Fragment\n");						
						if(pkt->size() == tmp_size)
						{
							 fsh->FC=0x1; // last fragment
							 printf("Complete a MPDU\n\n");							 
							 tmp_size = PDUSIZE;	
							 ss_buf->lookup(Search_BCID(user)->srcIP)->PDUQUEUE.enque(pkt_tmp->copy());																		
						}							
						else
						{
							 fsh->FC=0x1; // last fragment  need pack	
							 tmp_size-=pkt->size();														 
						}	
				}
				else
				{
					//dh->type = 0x04;
					fsh->FC=0x3;  // continue fragment					
					//printf("Continue Fragment\n");					
					int i=pkt->size();
					pkt->size()=tmp_size;					
					ss_buf->lookup(Search_BCID(user)->srcIP)->PDUQUEUE.enque(pkt_tmp->copy());
					pkt->size()=i-tmp_size;
					ss_buf->lookup(Search_BCID(user)->srcIP)->fragQUEUE.enque(pkt_tmp->copy());
					//printf("Complete a MPDU\n The remaining fragment is stored in queue\n");					
					tmp_size = PDUSIZE;
					goto SS_Frag_que;	
				}
			}
			else
			{   //there're no fragments in fragment-queue
				//dh->type = 0x04;
				struct frag_subheader_t* fsh = sub_HDR_MAC802_16_frag(tmp);
				struct hdr_cmn* pkt = HDR_CMN(tmp);
				//printf("Add fragmentation subheader FSN:%d\n",fsh->FSN);
				fsh->FSN=((fsh->FSN)+1)%8;
				if(pkt->size()>tmp_size){  //need to fragmentation
					int i=pkt->size();
					pkt->size()=tmp_size;	
					//printf("First Fragmentaton\n");					 					
					fsh->FC=0x2;  //first fragment
					ss_buf->lookup(Search_BCID(user)->srcIP)->PDUQUEUE.enque(tmp->copy());
					pkt->size()=i-tmp_size;
					ss_buf->lookup(Search_BCID(user)->srcIP)->fragQUEUE.enque(tmp->copy());
					//printf("Complete a MPDU\n The remaining fragment is stored in queue\n");					
					tmp_size = PDUSIZE;					
					goto SS_Frag_que;
				}
			}
		}
		num--;
	}
	resumeSSBurst.start(0.00001,user);	
	return;
}

Packet* Mac802_16::Add_Mac_Header(Packet* p,int CID,packet_t ptype)
{
	struct hdr_cmn* ch=HDR_CMN(p);
	struct hdr_mac802_16* mac_16 =HDR_MAC802_16(p);

	ch->uid()   = 0;
	ch->ptype() = ptype;
	ch->iface() = -2;
	ch->error() = 0;	
	ch->size()  = 24+PDUSIZE;	
	mac_16->HT 	= 0;
	mac_16->EC 	= 0;
	mac_16->CI	= 0; 	
	mac_16->LEN	= 24+PDUSIZE;
	mac_16->CID	= CID;
	(p->type_==1) ? mac_16->type=1 : mac_16->type=2;	
	return p;	
}

void Mac802_16::ResumeBS16timerHandler(int user)
{
	if(Queue_list->Search_BCID(user)->PDUQueue.length()==0)
	{ 
		resumeBSBurst.stop();
		return;
	}
	else
	{
		//printf("BS 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频网站在线观看| 日本亚洲三级在线| 成人欧美一区二区三区白人| 一区二区三区高清不卡| 日韩av电影免费观看高清完整版| 国产综合色视频| 色系网站成人免费| 久久亚区不卡日本| 精品电影一区二区| 亚洲精品中文字幕乱码三区| 韩国一区二区三区| 欧美三级电影网| 国产亚洲欧美日韩日本| 视频一区欧美精品| 国产美女在线观看一区| 欧美日韩国产首页| 精品毛片乱码1区2区3区 | 欧美美女网站色| 久久精品男人天堂av| 午夜精品免费在线观看| 顶级嫩模精品视频在线看| 欧美日韩国产高清一区| 中文字幕日韩一区| 国产一区免费电影| 日韩一级高清毛片| 亚洲国产一区二区三区| 99国产精品一区| 久久综合中文字幕| 免费高清在线一区| 日本乱码高清不卡字幕| 中文字幕精品三区| 国产成人午夜精品影院观看视频| 欧美日韩亚洲综合一区二区三区| 中文字幕中文字幕一区二区| 蜜臀久久久久久久| 欧美三级三级三级| 亚洲精品老司机| 99久久99精品久久久久久 | 午夜精品久久久久久久久| 欧美性三三影院| 亚洲电影你懂得| 在线成人午夜影院| 精品无人码麻豆乱码1区2区 | 东方欧美亚洲色图在线| 国产精品久久久久久久蜜臀| 一本到一区二区三区| 亚洲国产人成综合网站| 91精品久久久久久久99蜜桃| 美女视频一区在线观看| 久久午夜电影网| 99久久er热在这里只有精品15| 亚洲激情欧美激情| 日韩欧美一区电影| 丰满少妇久久久久久久| 亚洲精品国产一区二区精华液 | 麻豆精品在线播放| 欧美国产乱子伦| 欧美午夜精品免费| 国产在线播放一区三区四| 国产精品日韩成人| 欧美日韩国产精选| 成人深夜在线观看| 视频一区二区欧美| 久久久久久99久久久精品网站| 91免费视频观看| 日本亚洲最大的色成网站www| 国产婷婷色一区二区三区四区| 一本色道久久综合狠狠躁的推荐| 青青草精品视频| 国产精品家庭影院| 日韩欧美色综合| 91福利区一区二区三区| 久久精品国产77777蜜臀| 国产精品家庭影院| 精品成人免费观看| 色久综合一二码| 国产精品77777竹菊影视小说| 亚洲一区二区在线播放相泽| 久久只精品国产| 欧美日韩高清不卡| 99精品1区2区| 国产精品资源站在线| 午夜精品久久久久久不卡8050| 国产亲近乱来精品视频 | 男男视频亚洲欧美| 亚洲免费电影在线| 国产欧美精品国产国产专区 | 欧美性色aⅴ视频一区日韩精品| 国产福利一区二区三区视频| 亚洲1区2区3区4区| 亚洲另类春色校园小说| 国产三级久久久| 精品免费一区二区三区| 91麻豆精品国产91久久久久久久久| www.久久精品| 高清视频一区二区| 激情欧美日韩一区二区| 裸体一区二区三区| 午夜精品久久久久久久久| 一区二区视频在线看| 国产精品灌醉下药二区| 国产亚洲人成网站| 久久婷婷成人综合色| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美军同video69gay| 欧美天堂亚洲电影院在线播放| 99精品国产视频| 成人高清在线视频| 成人免费福利片| 盗摄精品av一区二区三区| 精品一二三四区| 国产一区二区三区精品欧美日韩一区二区三区 | 国内一区二区视频| 久草中文综合在线| 美腿丝袜在线亚洲一区 | hitomi一区二区三区精品| 国产成人在线网站| 成人一级黄色片| jlzzjlzz亚洲日本少妇| 99久久精品国产精品久久| av不卡一区二区三区| 91免费视频大全| 在线精品国精品国产尤物884a| 在线精品视频小说1| 91精品国产丝袜白色高跟鞋| 7777精品伊人久久久大香线蕉| 日韩一级片网址| 久久久久久久av麻豆果冻| 国产精品不卡在线观看| 亚洲美女屁股眼交3| 午夜久久久久久久久| 麻豆成人久久精品二区三区红 | 视频一区二区欧美| 人妖欧美一区二区| 国产精品亚洲一区二区三区在线 | 国产精品久久久久影院亚瑟 | 欧美日韩精品免费观看视频| 欧美一区2区视频在线观看| 国产无一区二区| 亚洲欧美国产三级| 视频精品一区二区| 国产精品99久久久久久久女警| 成人sese在线| 制服丝袜在线91| 国产蜜臀97一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 视频一区二区国产| 成人福利视频网站| 欧美日韩国产首页在线观看| 久久女同互慰一区二区三区| 亚洲精品中文在线观看| 精品一区二区三区在线播放| 91香蕉视频污| 精品久久久久99| 亚洲综合在线第一页| 九一久久久久久| 色婷婷综合久久久中文字幕| 欧美v亚洲v综合ⅴ国产v| 亚洲天堂久久久久久久| 国内精品写真在线观看| 91麻豆成人久久精品二区三区| 日韩三级电影网址| 亚洲欧美另类小说| 国产一区二区三区国产| 欧美日韩国产bt| 自拍偷拍国产亚洲| 国产成人免费xxxxxxxx| 欧美美女喷水视频| 亚洲在线观看免费视频| 国产a级毛片一区| 日韩一区和二区| 亚洲图片自拍偷拍| 91亚洲国产成人精品一区二三| 精品奇米国产一区二区三区| 亚洲电影激情视频网站| 色网站国产精品| 国产精品拍天天在线| 国产在线麻豆精品观看| 日韩一级片在线观看| 午夜精品免费在线| 欧美午夜精品久久久久久超碰| 国产精品毛片高清在线完整版| 国产一区二区三区在线观看免费视频| 欧美性一区二区| 亚洲黄色录像片| av电影天堂一区二区在线| 国产精品无人区| 国产电影精品久久禁18| 26uuu另类欧美亚洲曰本| 免费在线看成人av| 91精品国产91久久久久久最新毛片| 亚洲国产美国国产综合一区二区| 91蝌蚪porny九色| 18欧美乱大交hd1984| av在线不卡免费看| 欧美激情一区二区在线| 丁香婷婷深情五月亚洲| 国产清纯白嫩初高生在线观看91| 国产成人免费视频| 中文字幕一区二区三|