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

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

?? gpr_route_layer.pr.c

?? opnetadhoc自組網(wǎng)絡(luò)源碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
	AddItemToQ(iSeq,& q_request_list);//see this request


	//queue the request
	iItem.pkt_id=iSeq;
	iItem.pkt=pk_ptr;
	iItem.iStale=0;
	Pkt_AddItemToQ(iItem,&q_pkt_req_list);
	//send ns for the request
	gpr_send_NS_for_route(ND_REQEST);	


	printf("Node %s will issue a request\n",my_name);//

	sprintf(msg,"Node %d will issue a request\n",my_gpr_address);//reply proxyly
	//GPR_message(msg,10);
	
}	


void gpr_transmit_request_repeat(int destination_gpr_address)
{
Packet* pk_ptr;
sPkBuff iItem;
int iSeq;
	
	pk_ptr=op_pk_create_fmt("GPR_Request");
	op_pk_nfd_set(pk_ptr,"Type",REQUET_PACKET_TYPE);
	op_pk_nfd_set(pk_ptr,"SRC",my_gpr_address);


	op_pk_nfd_set(pk_ptr,"DEST",destination_gpr_address);
	op_pk_nfd_set(pk_ptr,"GP_0",my_group_id);
	op_pk_nfd_set(pk_ptr,"Size_Route",1);
	op_pk_nfd_set(pk_ptr,"SRC_GP",my_group_id);	

	op_pk_nfd_set(pk_ptr,"Seq_number",++g_pkt_id);
	op_pk_nfd_set(pk_ptr,"TTL",0);

	iSeq=g_pkt_id;
	AddItemToQ(iSeq,& q_request_list);//see this request


	//queue the request
	iItem.pkt_id=iSeq;
	iItem.pkt=pk_ptr;
	iItem.iStale=0;
	Pkt_AddItemToQ(iItem,&q_pkt_req_list);
		
	sprintf(msg,"Node %d will issue a request proxy\n",my_gpr_address);//reply proxyly
//	GPR_message(msg,10);
}	


void gpr_send_reply_proxy(Packet* pk_ptr)
{

int request_source_gpr_address;
int size_route,iSeq;
int i;
char field[10];
int iGP_id;
sPkBuff iItem;
int iTTL;



int dest_address,iDest_gp;


op_pk_nfd_get(pk_ptr,"SRC",&request_source_gpr_address);
op_pk_nfd_get(pk_ptr,"SRC_GP",&iGP_id);
op_pk_nfd_get(pk_ptr,"DEST",&dest_address);
op_pk_nfd_get(pk_ptr,"DEST_GP",&iDest_gp); 

iSeq=++g_pkt_id;	//set the new seq for reply
op_pk_nfd_set(pk_ptr,"Seq_number",iSeq);

op_pk_nfd_set(pk_ptr,"Type",REPLY_PACKET_TYPE);
op_pk_nfd_set(pk_ptr,"SRC",dest_address);
op_pk_nfd_set(pk_ptr,"SRC_GP",iDest_gp);

op_pk_nfd_get(pk_ptr,"Size_Route",&size_route);
op_pk_nfd_set(pk_ptr,"DEST",request_source_gpr_address);
op_pk_nfd_set(pk_ptr,"DEST_GP",&iGP_id); 

iTTL=GP_route_cache[dest_address].iDistance;
op_pk_nfd_set (pk_ptr, "TTL",iTTL);//fordge the ttl

	size_route=GP_route_cache[dest_address].size_route;
						if (size_route!=0)
						{
							for (i=0;i<size_route;i++)
							{
									sprintf(field,"GP_%d",i);
									op_pk_nfd_set(pk_ptr,field,GP_route_cache[dest_address].Gp_route[i] );

							}
				
							op_pk_nfd_set (pk_ptr,"Size_Route",size_route); 					
						
			
						}

		  



					
			
	AddItemToQ(iSeq,& q_reply_list);//see this request


	//queue the reply
	iItem.pkt_id=iSeq;
	iItem.pkt=pk_ptr;
	iItem.iStale=0;
	Pkt_AddItemToQ(iItem,&q_pkt_reply_list);
	//send ns for the request
	gpr_send_NS_for_route(ND_REPLY);	
	

	sprintf(msg,"Node %d will reply proxyly\n",my_gpr_address);//reply proxyly
//	GPR_message(msg,10);
	
}


void gpr_send_reply(Packet* pk_ptr)
{

int request_source_gpr_address;
int size_route,iSeq;
int i;
char field[10];
int bAppear,iGP_id;
sPkBuff iItem;
int iPos;

bAppear=0;

op_pk_nfd_get(pk_ptr,"SRC",&request_source_gpr_address);
op_pk_nfd_get(pk_ptr,"SRC_GP",&iGP_id);

iSeq=++g_pkt_id;	//set the new seq for reply
op_pk_nfd_set(pk_ptr,"Seq_number",iSeq);

op_pk_nfd_set(pk_ptr,"Type",REPLY_PACKET_TYPE);
op_pk_nfd_set(pk_ptr,"SRC",my_gpr_address);
op_pk_nfd_set(pk_ptr,"SRC_GP",my_group_id);

op_pk_nfd_get(pk_ptr,"Size_Route",&size_route);
op_pk_nfd_set(pk_ptr,"DEST",request_source_gpr_address);
op_pk_nfd_set(pk_ptr,"DEST_GP",&iGP_id); 
op_pk_nfd_set (pk_ptr, "TTL",0);//resume the ttl


	AddItemToQ(iSeq,& q_reply_list);//see this request

for (i=0;i<size_route;i++)
	{
		
		sprintf(field,"GP_%d",i);
		op_pk_nfd_get (pk_ptr,field,&iGP_id);	
		if (iGP_id==my_group_id)
			{
				bAppear=1;
				break;
			}
	
	}

//if diff group, add its group name to the gp link
if (bAppear==0)
	{
	
		if (size_route< MAX_SIZE_GROUP_LINK-1)
			{
			
		sprintf(field,"GP_%d",size_route);
		op_pk_nfd_set (pk_ptr,field,my_group_id);
	   // increment by one the Size_Route field of the packet
		op_pk_nfd_set(pk_ptr,"Size_Route",++size_route);
		}
		else
			{
			
			sprintf(field,"GP_%d",MAX_SIZE_GROUP_LINK-1);
			op_pk_nfd_set (pk_ptr,field,my_group_id);
			// increment by one the Size_Route field of the packet
			op_pk_nfd_set(pk_ptr,"Size_Route",MAX_SIZE_GROUP_LINK);		
			}
		

	 }

		//learn the route

			//gpr_update_route(pk_ptr,destination_gpr_address);
			//route 2
			if ( GP_route_cache[request_source_gpr_address].size_route!=0)//better one?
				{
					//no chg
					sprintf(msg,"old route to %d,len is %d(%d)!\n",request_source_gpr_address,size_route,GP_route_cache[request_source_gpr_address].size_route);
					//GPR_message(msg,5);	
				}
			else
				{
				
					
					iPos=-1;
					//printf("node %d learn path len %d from the request:",my_gpr_address,size_route);
					//better one,wrtie the route cache
					for (i=0;i<size_route;i++)
						{
							sprintf(field,"GP_%d",i);
							op_pk_nfd_get(pk_ptr,field,&iGP_id);
							GP_route_cache[request_source_gpr_address].Gp_route[i] = iGP_id ;
							printf("%d->",iGP_id);	
							if (iGP_id==my_group_id)
								iPos=i;										   
					   	}	
					printf("Node %s Echo a reply,time:%.2f\n",my_name,op_sim_time());
					
					GP_route_cache[request_source_gpr_address].size_route=size_route;
					GP_route_cache[request_source_gpr_address].iTimeStamp=op_sim_time();
					
				 }			
		///////////////
			




	//queue the reply
	iItem.pkt_id=iSeq;
	iItem.pkt=pk_ptr;
	iItem.iStale=0;
	Pkt_AddItemToQ(iItem,&q_pkt_reply_list);
	//send ns for the request
	gpr_send_NS_for_route(ND_REPLY);	
	

	//gpr_send_to_mac(pk_ptr,GPR_BROADCAST_ADDR);
}


/////////////
void  gpr_handle_reply(Packet* pk_ptr)
{
int source_gpr_address;
int destination_gpr_address;
int size_route,iGP_id;
int iSeq;
char field[10];
int iPos;
int iNext_hop,iRelay,iTTL;
int i;


// read the different fields of the packet
op_pk_nfd_get (pk_ptr,"SRC",&source_gpr_address);
op_pk_nfd_get (pk_ptr,"DEST",&destination_gpr_address); 
op_pk_nfd_get (pk_ptr,"Size_Route",&size_route); 
op_pk_nfd_get(pk_ptr,"Seq_number",&iSeq);
op_pk_nfd_get(pk_ptr,"RELAY",&iRelay);
op_pk_nfd_get(pk_ptr,"TTL",&iTTL);
	op_pk_nfd_get(pk_ptr,"Next_hop",&iNext_hop);

	//have ever seen it
	iPos=IsInQueue(iSeq, & q_reply_list);
	if (iPos==-1)
	{//never seen it then see it
	//if (iNext_hop==my_gpr_address)
		AddItemToQ(iSeq,& q_reply_list);
		op_ima_obj_attr_set(my_node_id,"Conceived",1);
		
				
	}
	else
		{
			return;
		
		
		}
	
	if (source_gpr_address==my_gpr_address)
		return;




	printf("%s hear a reply..\n",my_name);
	if ( (GP_route_cache[source_gpr_address].iDistance==-1)||(GP_route_cache[source_gpr_address].iDistance>=iTTL) )
		GP_route_cache[source_gpr_address].iDistance=iTTL;//move to gpr_update_route
	else
		return;
	
	if (GP_route_cache[source_gpr_address].iExpectedVal==0)
		{
		GP_route_cache[source_gpr_address].iExpectedVal= (MAX_SIZE_TTL-GP_route_cache[source_gpr_address].iDistance)*1000;
		
		}
	
	sprintf(msg,"hear reply %d from %d,TTL %d(%d) to %d",
		iSeq,iRelay,
		iTTL,GP_route_cache[source_gpr_address].iDistance,	
		iNext_hop);
	GPR_message(msg,10);	
	
	printf("%s fwd the reply..\n",my_name);
	
		////////////////
		//node on the path will learn the group link infor in the reply
			//update the route cache, intermidiate node will learn 2 route to 2 end of link
			//gpr_update_route(pk_ptr,source_gpr_address);
			//route 1
			if ( GP_route_cache[source_gpr_address].size_route!=0)//better one?
				{
					//no chg
					sprintf(msg,"old route to %d,len is %d(%d)!\n",source_gpr_address,size_route,GP_route_cache[source_gpr_address].size_route);
					//GPR_message(msg,5);	
				}
			else
				{
				
//					printf("node %d learn path1 len %d from the reply:",my_gpr_address,size_route);
					iPos=-1;
					//better one,wrtie the route cache
					for (i=0;i<size_route;i++)
						{
							sprintf(field,"GP_%d",i);
							op_pk_nfd_get(pk_ptr,field,&iGP_id);
							GP_route_cache[source_gpr_address].Gp_route[i] = iGP_id ;
							//printf("%d->",iGP_id);	
							if (iGP_id==my_group_id)
								iPos=i;
										   
					   	}	
					//printf("..\n");
					op_prg_odb_bkpt("reply");
					
					GP_route_cache[source_gpr_address].size_route=size_route;//size_route-iPos;
					
				 }
			//gpr_update_route(pk_ptr,destination_gpr_address);
			//route 2
			if ( GP_route_cache[destination_gpr_address].size_route!=0)//better one?
				{
					//no chg
					
				
						
				}
			else
				{
				
					//printf("Node %d learn from reply,route to %d is:.!\n",my_group_id,source_gpr_address);
					iPos=-1;
					//printf("node %d learn path2 len %d from the reply:",my_gpr_address,size_route);
					//better one,wrtie the route cache
					for (i=0;i<size_route;i++)
						{
							sprintf(field,"GP_%d",i);
							op_pk_nfd_get(pk_ptr,field,&iGP_id);
							GP_route_cache[destination_gpr_address].Gp_route[i] = iGP_id ;
							//printf("%d->",iGP_id);	
							if (iGP_id==my_group_id)
								iPos=i;										   
					   	}	
			
					
					GP_route_cache[destination_gpr_address].size_route=size_route;//iPos+1;
					
				 }			
		///////////////
		

	if (my_gpr_address==destination_gpr_address)
		{

			printf("node %d got the reply,time:%.2f\n",my_gpr_address,op_sim_time());
			op_prg_odb_bkpt("route");			
								
			for (i=0;i<size_route;i++)
						{
							sprintf(field,"GP_%d",i);
							op_pk_nfd_get(pk_ptr,field,&iGP_id);
							GP_route_cache[destination_gpr_address].Gp_route[i] = iGP_id ;
							printf("%d->",iGP_id);	
							if (iGP_id==my_group_id)
								iPos=i;										   
					   	}	
			printf("..\n");
			
			op_pk_destroy (pk_ptr);
		

			
		
		}
	else
		{
		

			if (iNext_hop==my_gpr_address)//
				{
				
							
					gpr_forward_reply(pk_ptr);
				}
			else
				{
					
					
				}
		
		}
	
	
	
	
	
	


}

void gpr_forward_reply(Packet* pk_ptr)
{	

int i;
char field[10];
int bAppear;
sPkBuff iItem;


int destination_gpr_address;
int size_route,iGP_id;
int iSeq;


// read the different fields of the packet

op_pk_nfd_get (pk_ptr,"DEST",&destination_gpr_address); 
op_pk_nfd_get (pk_ptr,"Size_Route",&size_route); 
op_pk_nfd_get(pk_ptr,"Seq_number",&iSeq);

bAppear=0;


op_pk_nfd_get(pk_ptr,"Size_Route",&size_route);

for (i=0;i<size_route;i++)
	{
		
		sprintf(field,"GP_%d",i);
		op_pk_nfd_get (pk_ptr,field,&iGP_id);	
		if (iGP_id==my_group_id)
			{
				bAppear=1;
				break;
			}
	
	}


if (bAppear==0)
	{
		//out of scope, need not fwd it


	 }
else
	{
	
		//has see this reply in handle fun


		//queue the reply
		iItem.pkt_id=iSeq;
		iItem.pkt=pk_ptr;
		iItem.iStale=0;
		Pkt_AddItemToQ(iItem,&q_pkt_reply_list);
		//send ns for the reply
		
		gpr_send_NS_for_route(ND_REPLY);	

	}


}


void gpr_update_route(Packet * pk_ptr,int destination_gpr_address)
{

int size_route,i;
int iGP_id;
char field[10];
int iPos;

		op_pk_nfd_get (pk_ptr,"Size_Route",&size_route); 
		
			
		if (size_route==0)
			{
				return;
			}

					
		iPos=-1;
					//better one,wrtie the route cache
	for (i=0;i<size_route;i++)
	{
		sprintf(field,"GP_%d",i);
		op_pk_nfd_get(pk_ptr,field,&iGP_id);
		GP_route_cache[destination_gpr_address].Gp_route[i] = iGP_id ;
		if (iGP_id==my_group_id)
				iPos=i;
										   
	}	

					
	GP_route_cache[destination_gpr_address].size_route=size_route;//size_route-iPos;
	GP_route_cache[destination_gpr_address].iTimeStamp=op_sim_time();
					
}

/* End of Function Block */

/* Undefine optional tracing in FIN/FOUT/FRET */
/* The FSM has its own tracing code and the other */
/* functions should not have any tracing.		  */
#undef FIN_TRACING
#define FIN_TRACING

#undef FOUTRET_TRACING
#define FOUTRET_TRACING

#if defined (__cplusplus)
extern "C" {
#endif
	void gpr_route_layer (OP_SIM_CONTEXT_ARG_OPT);
	VosT_Obtype gpr_route_layer_init (int * init_block_ptr);
	VosT_Address gpr_route_layer_alloc (VOS_THREAD_INDEX_ARG_COMMA VosT_Obtype, int);
	void gpr_route_layer_diag (OP_SIM_CONTEXT_ARG_OPT);
	void gpr_route_layer_terminate (OP_SIM_CONTEXT_ARG_OPT);
	void gpr_route_layer_svar (void *, const char *, void **);


	VosT_Fun_Status Vos_Define_Object (VosT_Obtype * obst_ptr, const char * name, unsigned int size, unsigned int init_obs, unsigned int inc_obs);
	VosT_Address Vos_Alloc_Object_MT (VOS_THREAD_INDEX_ARG_COMMA VosT_Obtype ob_hndl);
	VosT_Fun_Status Vos_Poolmem_Dealloc_MT (VOS_THREAD_INDEX_ARG_COMMA VosT_Address ob_ptr);
#if defined (__cplusplus)
} /* end of 'extern "C"' */
#endif




/* Process model interrupt handling procedure */


void
gpr_route_layer (OP_SIM_CONTEXT_ARG_OPT)
	{

#if !defined (VOSD_NO_FIN)
	int _op_block_origin = 0;
#endif
	FIN_MT (gpr_route_layer ());
	if (1)
		{
		Packet * pk_ptr;
		Ici* ici_dest_address;
		int packet_type;
		
		List*				proc_record_handle_list_ptr;
		int					record_handle_list_size;
		OmsT_Pr_Handle		process_record_handle;
		Objid				mac_module_objid;
		double				ne_address = OPC_DBL_UNDEF;
		


		FSM_ENTER ("gpr_route_layer")

		FSM_BLOCK_SWITCH
			{
			/*---------------------------------------------------------*/
			/** state (pre_ini) enter executives **/
			FSM_STATE_ENTER_UNFORCED_NOLABEL (0, "pre_ini", "gpr_route_layer [pre_ini enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer [pre_ini enter execs], state0_enter_exec)
				{
				
					char msg[50];
					int i,iPos;
				
				
				
				
				
				
				// ensure that each node has finised its pre-initialization before going in the init sate
				
				
					my_module_id=op_id_self();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩专区在线视频| 久久国产精品99精品国产| 国产精品国产三级国产aⅴ入口| 久久这里只精品最新地址| 久久久影视传媒| 亚洲嫩草精品久久| 麻豆freexxxx性91精品| 国产精品99久久久久久有的能看| 91在线一区二区三区| 欧美日韩视频在线观看一区二区三区 | 亚洲免费av观看| 青青草国产精品97视觉盛宴 | 欧美精品tushy高清| 国产精品乱码一区二区三区软件 | 在线影视一区二区三区| 精品久久国产字幕高潮| 国产精品国模大尺度视频| 欧美aaa在线| 欧美精品久久99| 日韩理论片中文av| 成人午夜精品在线| 精品国产乱子伦一区| 日韩中文字幕亚洲一区二区va在线| 国产揄拍国内精品对白| 欧美高清一级片在线| 亚洲第一主播视频| 欧美色涩在线第一页| 日精品一区二区三区| 在线播放欧美女士性生活| 亚洲成av人片在线观看| 91视频国产资源| 亚洲一区成人在线| 欧美日本乱大交xxxxx| 日韩成人免费在线| 日韩欧美一级二级三级久久久| 亚洲第一搞黄网站| 日韩欧美电影在线| 国产激情一区二区三区四区 | 国产精品综合视频| 中文字幕亚洲精品在线观看 | 国产日韩v精品一区二区| 国产成人精品午夜视频免费| **欧美大码日韩| 7777精品久久久大香线蕉| 首页国产丝袜综合| 2017欧美狠狠色| 成人av电影观看| 亚洲成人精品在线观看| 久久久久亚洲蜜桃| 欧美在线观看你懂的| 免费看欧美美女黄的网站| 日韩电影免费在线观看网站| 国产色一区二区| 91精品国产乱码久久蜜臀| 成人免费视频播放| 日韩经典一区二区| 亚洲桃色在线一区| 亚洲精品一区二区三区福利 | 成人欧美一区二区三区黑人麻豆 | 亚洲国产综合色| 国产性做久久久久久| 在线观看91视频| 成人aa视频在线观看| 国产乱码精品1区2区3区| 日韩国产精品久久| 亚洲午夜私人影院| 亚洲色图.com| 中文字幕国产一区| 26uuu亚洲综合色| 欧美一级爆毛片| 91精品国产综合久久精品| caoporen国产精品视频| 国产精品18久久久久久久久久久久| 午夜国产精品一区| 亚洲sss视频在线视频| 亚洲欧美欧美一区二区三区| 久久久久久久综合日本| 久久久久国产精品免费免费搜索| 日韩免费视频一区| 精品国产成人在线影院| 国产网站一区二区| 亚洲黄色尤物视频| 亚洲国产精品久久人人爱| 麻豆视频一区二区| 久久国产精品99久久久久久老狼| 麻豆91免费看| 成人av在线一区二区| 91亚洲男人天堂| 777欧美精品| 亚洲精品在线三区| 亚洲男同性视频| 成人不卡免费av| 日韩欧美自拍偷拍| 日本一区二区三区电影| 椎名由奈av一区二区三区| 天天综合网天天综合色| 美女任你摸久久| 丁香六月综合激情| 在线视频一区二区三| 91精品国产综合久久福利软件 | 五月天精品一区二区三区| 91婷婷韩国欧美一区二区| 九九九久久久精品| 日本高清视频一区二区| 久久蜜臀中文字幕| 亚洲一区二区在线播放相泽| 国产乱理伦片在线观看夜一区| 91麻豆免费视频| 亚洲国产精品t66y| 久久99九九99精品| 欧美一区二区三区四区五区| 亚洲另类色综合网站| aa级大片欧美| 国产精品日韩成人| 国产一区二区在线观看免费| 欧美精品在线视频| 肉肉av福利一精品导航| 欧美日韩aaaaa| 天天射综合影视| 欧美年轻男男videosbes| 亚洲国产日韩一级| 欧美二区三区的天堂| 丝瓜av网站精品一区二区| 欧美群妇大交群的观看方式| 亚洲国产毛片aaaaa无费看| 欧美午夜宅男影院| 日本强好片久久久久久aaa| 91精品国产综合久久蜜臀| 日产国产欧美视频一区精品| 欧美xxxxxxxxx| av在线一区二区三区| 亚洲精品免费电影| 91麻豆精品国产自产在线观看一区| 一区二区三区免费看视频| 亚洲国产精品成人综合色在线婷婷 | 午夜精品久久久久久久99樱桃| 欧美美女黄视频| 国产一区二区三区免费观看| 中文欧美字幕免费| 欧美色手机在线观看| 久久国产婷婷国产香蕉| 国产精品电影一区二区三区| 欧美日韩成人激情| 国产东北露脸精品视频| 亚洲国产精品自拍| 中文字幕 久热精品 视频在线| 欧美日韩国产美女| 国产麻豆精品95视频| 一区二区三区免费在线观看| 日韩一区二区三区三四区视频在线观看| 国产一区二区三区综合| 亚洲一区在线观看免费| 国产日产欧产精品推荐色 | 亚洲午夜日本在线观看| 中文幕一区二区三区久久蜜桃| 欧美精品欧美精品系列| 91一区一区三区| 不卡在线视频中文字幕| 国产一区二区三区国产| 日本不卡在线视频| 日韩极品在线观看| 日本v片在线高清不卡在线观看| 国产精品家庭影院| 亚洲欧洲av一区二区三区久久| 国产丝袜在线精品| 日韩欧美第一区| 日韩免费一区二区三区在线播放| 欧美性xxxxxx少妇| 欧美日韩精品免费| 91精品免费在线| 欧美xxxx老人做受| 久久久久久久久久久99999| 久久久亚洲午夜电影| 久久久影院官网| 国产精品视频九色porn| 最新国产の精品合集bt伙计| 国产精品久久久久久久浪潮网站 | 国产一区二区免费看| 国产九色sp调教91| 欧美午夜宅男影院| 欧美精品一二三| 精品处破学生在线二十三| 久久亚洲综合av| 国产精品久久久久久亚洲毛片| 亚洲欧洲日韩一区二区三区| 一区av在线播放| 精品亚洲国内自在自线福利| 成人免费视频免费观看| 欧美性极品少妇| 国产亚洲一本大道中文在线| 亚洲男人天堂av| 麻豆91免费看| 在线成人av网站| 国产欧美日韩综合精品一区二区 | 国产成人自拍网| 欧美精品日日鲁夜夜添| 国产欧美一区在线| 美腿丝袜在线亚洲一区| 97国产一区二区| 久久综合给合久久狠狠狠97色69|