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

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

?? gpr_route_layer.pr.c

?? opnetadhoc自組網絡源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
					return iPt;// in queue
				}
			iPt=(++iPt)%MAX_SIZE_QUEUE;
		
		}
	
	return -1;//not in queue

}


/////////////
//packet queue function

int Pkt_InitQueue(gpr_pkt_queue * lpQ)
{
	int i;
	sPkBuff pk_node;
	pk_node.pkt=NULL;
	pk_node.pkt_id=-1;
	

	if (lpQ==NULL)
		return -1;		
	
	for (i=0;i<MAX_SIZE_QUEUE;i++)
		lpQ->queue[i]=pk_node;
	
	lpQ->iHead=0;
	lpQ->iTail=0;
	
	return 0;
	
}

int Pkt_AddItemToQ(sPkBuff iItem,gpr_pkt_queue * lpQ )
{

int iPos;

	iPos=-1;

	if ( ( (lpQ->iTail+1)%MAX_SIZE_QUEUE ) ==lpQ->iHead )
	{//full,overwrite from the head one

	
		iPos=lpQ->iTail;
		lpQ->queue[iPos]=iItem;// add to tail
		lpQ->iTail=(lpQ->iTail+1)%MAX_SIZE_QUEUE;
		lpQ->iHead=(lpQ->iHead+1)%MAX_SIZE_QUEUE;
	
	
	
	}
	else
	{
						

						
		iPos=lpQ->iTail;
		lpQ->queue[iPos]=iItem;// add to tail
	
		lpQ->iTail=(lpQ->iTail +1 )%MAX_SIZE_QUEUE;	
	
	
	}
	
	return iPos;


}

int pkt_GetHeadIndex(gpr_pkt_queue * lpQ)
{
	if (lpQ!=NULL)
		return (lpQ->iHead);
	else 
		return -1;
}

int GetNum_pkt_q(gpr_pkt_queue * lpQ)
{
	if (lpQ==NULL)
		return (-2);

	if (lpQ->iHead==lpQ->iTail)
		return (1);

	
	if (lpQ->iHead<lpQ->iTail)
		return lpQ->iTail-lpQ->iHead;
	
	if (lpQ->iHead>lpQ->iTail)
		return MAX_SIZE_QUEUE+lpQ->iTail-lpQ->iHead;	
	
	
	return -1;//abnormal, i cant wonder


}

int Is_pkt_q_empty(gpr_pkt_queue * lpQ)
{
	if (lpQ==NULL)
		return (-2);

	if (lpQ->iHead==lpQ->iTail)
		return (1);
	else
		return (0);
	


}

sPkBuff  gpr_access_pkt_q(gpr_pkt_queue * lpQ)
{
Packet * pkt;
sPkBuff iItem_ret;
pkt=NULL;
iItem_ret.pkt_id=-1;
iItem_ret.pkt=NULL;
	if (lpQ==NULL)
		return (iItem_ret);

	if (lpQ->iHead!=lpQ->iTail)
		{

			iItem_ret=lpQ->queue[lpQ->iHead];

			return iItem_ret;
			
		}

	return iItem_ret;

}

sPkBuff gpr_remove_pkt_q(gpr_pkt_queue * lpQ)
{
sPkBuff iItem_ret;
Packet * pkt;
pkt=NULL;
iItem_ret.pkt_id=-1;
iItem_ret.pkt=NULL;
	if (lpQ==NULL)
		return (iItem_ret);

	if (lpQ->iHead!=lpQ->iTail)
		{

			iItem_ret=lpQ->queue[lpQ->iHead];
			lpQ->iHead=(lpQ->iHead +1)%MAX_SIZE_QUEUE;
			return iItem_ret;
			
		}

	return iItem_ret;

}

int Pkt_GetQItemAt(int iPos,sPkBuff * lpVal, gpr_pkt_queue * lpQ)
{
		
	int iNext;
	
	iNext=-1;
	
	if (iPos!=lpQ->iTail)
	{
		*lpVal=lpQ->queue[iPos];
		
		iNext=(++iPos)%MAX_SIZE_QUEUE;
		
		if (iNext==lpQ->iTail)
			iNext=-1;
	}
	
	return iNext;


}


int Pkt_SetQItemAt(int iPos,sPkBuff Val, gpr_pkt_queue * lpQ)
{
		
	int iNext;
	
	iNext=-1;
	
	if (iPos!=lpQ->iTail)
	{
	    lpQ->queue[iPos]=Val;
		iNext=iPos;
	}
	
	return iNext;


}


int Pkt_Fulsh_Depul_Queue_by_dest(sPkBuff iItem, int iDest ,gpr_pkt_queue * lpQ)
{

	int iPt;
	int iEnd;
	int iDest_pkt;
	
	iPt=lpQ->iHead;
	iEnd=lpQ->iTail;

	while (iPt!=iEnd)
		{
		

						
			op_pk_nfd_get (lpQ->queue[iPt].pkt,"DEST",&iDest_pkt);	
			if (iDest_pkt==iDest)
				{
													
					return iPt;// in queue
				}
			iPt=(iPt+1)%MAX_SIZE_QUEUE;
		
		}
	
	return -1;//not in queue

}

int Pkt_IsInQueue(sPkBuff iItem,gpr_pkt_queue * lpQ )
{

	int iPt;
	int iEnd;
	
	iPt=lpQ->iHead;
	iEnd=lpQ->iTail;

	while (iPt!=iEnd)
		{
		

	
			if (iItem.pkt_id==lpQ->queue[iPt].pkt_id)
				{
				
					
					return iPt;// in queue
				}
			iPt=(iPt+1)%MAX_SIZE_QUEUE;
		
		}
	
	return -1;//not in queue

}
/////////////




void GPR_static_Preset(int dest_addr)
{
int i;

for(i=0;i<5;i++)
	{
	GP_route_cache[dest_addr].Gp_route[i]=i;
	}
GP_route_cache[dest_addr].size_route=5;

	//temp set the group as the node addr
	//my_group_id=my_gpr_address;
}


void gpr_send_to_mac(Packet * pk_ptr, int gpr_addr)
{
int iType;
Ici* iciptr;
	//ARP


	op_pk_nfd_get (pk_ptr,"Type",&iType);	

	iciptr = op_ici_create("GPR_MAC_Dest_ICI");
	op_ici_attr_set(iciptr,"MAC_Destination",gpr_addr);//ztl temp
	op_ici_install(iciptr);
	
	op_pk_send( pk_ptr,TO_MAC_LAYER_STRM);

if (iType==DATA_PACKET_TYPE)
	{
	sprintf(msg,"send data to mac: %d",gpr_addr);
	GPR_message(msg,5);
	}


}


//when rcv na, select best next hop to fwd the queue items 
//returnval is the index of the neighbor
int Select_Next_hop(int iDest,int iCode,int pkt_id)
{
int iRet,iWaitValue;
int i;

int iNext_hop;

int size_route;
int iBestOne,iBig;


iRet=-3;
iWaitValue=-1;


size_route=	GP_route_cache[iDest].size_route;
switch (iCode)
	{
	case ND_REQEST:
	if (size_route!=0)
		return -2;//should dump the request list
	//no route
	iBig=iBestOne=-1;
	for (i=0;i<MAX_SIZE_NODES;i++)
		{
	
		if ( (list_neighbor[i].iINTflag == 1 ) && 
			(list_neighbor[i].dest_addr==iDest) &&
			(list_neighbor[i].iCode==iCode))//the neighbor echo ns
			{
		
			iWaitValue = list_neighbor[i].iWaitValue;
			
			//iWaitValue=iWaitValue+list_neighbor[i].iWaitValue;//component metrics
			
			if (iWaitValue>-1 )
				{
							//can be valued in term of distance to the dest


						if (iBig<iWaitValue)
						{
								iBestOne=i;
								iBig=iWaitValue;
							
						}
							
				
				}

		
			}
		
	}//end of for
		if (iBestOne!=-1)
		{
			iNext_hop=list_neighbor[iBestOne].szNeighborID;
			return iBestOne;
			}
	
	
	break;
	
	case ND_REPLY:

	
	case ND_DATA:
	

	if (size_route==0&&iCode==ND_DATA&&!EPIDEMIC&&!FULL_CONNECT)
		return -2;
	

	iBig=iBestOne=-1;
	for (i=0;i<MAX_SIZE_NODES;i++)
		{
	
		if ( (list_neighbor[i].iINTflag == 1 ) && 
			(list_neighbor[i].dest_addr==iDest) &&
			(list_neighbor[i].iCode==iCode))//the neighbor echo ns
			{
		
			iRet=-1;
			iWaitValue = IsIn_Right_Direction_NA(iDest,list_neighbor[i].szNeighborGroupID,iCode) ;   //*10

			
			if (iWaitValue>-1 )
				{
							//can be valued in term of distance to the dest

						iWaitValue=iWaitValue*100000+list_neighbor[i].iWaitValue;//component metrics
						
						if (iBig<iWaitValue)
						{
								iBestOne=i;
								iBig=iWaitValue;
							
						}
						
					
				
				}

		
			}
		
	}//end of for
	
	if (iBestOne!=-1)
		{				if (EPIDEMIC)
							return iBestOne;
							   
						if (FULL_CONNECT==1)
								return iBestOne;

						if (GP_route_cache[iDest].iExpectedVal<=list_neighbor[iBestOne].iWaitValue && 
							GP_route_cache[iDest].iDistance !=-1 )	
							{
							//better next hop than me
							GP_route_cache[iDest].iExpectedVal= (MAX_SIZE_TTL-GP_route_cache[iDest].iDistance)*1000;
							return iBestOne;
							
							}
							
							//if (GP_route_cache[iDest].iDistance ==-1 )	
							//	return iBestOne;

						

		}
	else
		{
		
		
		
		}
	
	break;
	
	}//end of switch




return  iRet;

}

int IsIn_Right_Direction_NS(int iDest_addr,int iTest_GP,int iCode)
{
int iRet;
//////////////////////////
//iRet metrics assinged:
///////////////////////////
// -1:	wrong direction 
//	0: 	same group,but no route   
//	1:	same group, has route  or for request
//	2~:	has route and cross group
///////////////////////////   
int size_route;
int iPos_nb,iPos_me;	
int i,iTTL,iWaitValue;
int iBig,iBestOne;

iRet=-9990;
iPos_nb=iPos_me=-1;

if (FULL_CONNECT==1)
	return MAX_SIZE_TTL*500;//fixed valid level

if (iDest_addr==my_gpr_address)
	return MAX_SIZE_TTL*1000;//max level
size_route=	GP_route_cache[iDest_addr].size_route;

	if (GP_route_cache[iDest_addr].iDistance !=-1)
				iTTL=GP_route_cache[iDest_addr].iDistance;
	else 
				iTTL=MAX_SIZE_TTL;
		
		
	iWaitValue=iBig=iBestOne=-1;	
		
	for (i=0;i<MAX_SIZE_NODES;i++)
	{
	
		if (
			(list_neighbor[i].dest_addr==iDest_addr) &&
			(list_neighbor[i].iCode==iCode))//the neighbor echo ns
			{
		
			iWaitValue = list_neighbor[i].iWaitValue;
			
			//iWaitValue=iWaitValue+list_neighbor[i].iWaitValue;//component metrics
			
			//can be valued in term of distance to the dest
						if (iWaitValue!=-1&&iBig<iWaitValue)
						{
								iBestOne=i;
								iBig=iWaitValue;
						}
				}
		
		}//end of for
		
		
	if (size_route==0)
	{
													

			//filter:
			switch (iCode)
				{
										
				case ND_DATA:
							iRet= -9992;
				break;
										
				case ND_REQEST:
				if (iTest_GP==my_group_id)
					iRet= 1;
				else
					iRet=2;
				
				break;				
						
				case ND_REPLY:
																				
							sprintf(msg,"1)ND_REPLY,No route:metirc is %d\n",iTTL);
							GPR_message(msg,10);				
							return (MAX_SIZE_TTL-iTTL)*1000;

				break;
					
										
				
				}

	
	}
	else
	{

			//has route:
			iRet=-9991;

			for (i=0;i<size_route;i++)
			{
	
					if (GP_route_cache[iDest_addr].Gp_route[i] == iTest_GP )
					{	
						iPos_nb=i;
						}
					
					if (GP_route_cache[iDest_addr].Gp_route[i] == my_group_id )
					{	
						iPos_me=i;
					}
					
			 }//end of for
			

		
		
			//filter:
			switch (iCode)
				{
						case ND_DATA:
						//big endian
		
						if ( (iPos_me!=-1)&&(iPos_nb!=-1)&&(iPos_me>iPos_nb) )
							{
								//path is in right direction
													sprintf(msg,"2)DATA:metirc is %d\n",iTTL);
//													GPR_message(msg,10);
							iRet=( (iPos_me-iPos_nb+1)*MAX_SIZE_TTL-iTTL )*1000 +GP_route_cache[iDest_addr].iHistory*5+iBig/1000+1;													
							return iRet;
								
							}						
						if ( (iPos_me==iPos_nb)&&(iPos_nb!=-1) )
							{
																				

							iRet=(MAX_SIZE_TTL-iTTL)*1000 +GP_route_cache[iDest_addr].iHistory*5+iBig/1000+1;
							sprintf(msg,"3)DATA:TTL %d,metirc is %d\n",iTTL,iRet);
//							GPR_message(msg,10);								
							return iRet;
							
							}
												
						if ( (iPos_me!=-1)&&(iPos_nb!=-1)&&(iPos_me<iPos_nb) )
							{
									
								//path is in wrong direction 
								return  -1;
							}						
						sprintf(msg,"DATA:no direction infor,TTL(%d) to  %d\n",iTTL,iDest_addr);
//						GPR_message(msg,10);						
						iRet=(MAX_SIZE_TTL-iTTL)*1000+1;
						return iRet;
						
						break;
							
						case ND_REQEST:
						//all pass
						
							return 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩在线一二三区| 欧美理论在线播放| 88在线观看91蜜桃国自产| 欧美mv日韩mv国产网站| 亚洲天堂av一区| 国产又黄又大久久| 欧美高清精品3d| 亚洲欧美激情小说另类| 九九九精品视频| 精品视频123区在线观看| 中文字幕在线视频一区| 国产一区二区免费视频| 7777精品久久久大香线蕉| 中文字幕一区二区三区不卡 | 精品国产网站在线观看| 亚洲愉拍自拍另类高清精品| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 日韩欧美成人激情| 亚洲国产人成综合网站| 99精品偷自拍| 国产精品久久久久天堂| 国产精品一区在线观看乱码| 欧美一级二级三级乱码| 天天免费综合色| 欧美日韩视频专区在线播放| 亚洲人成在线观看一区二区| 成人精品小蝌蚪| 国产精品乱码妇女bbbb| 国产精品66部| 欧美激情一区二区| 懂色中文一区二区在线播放| 国产午夜精品一区二区| 国产成人av电影在线播放| 久久久久久久综合日本| 国产一区二区精品久久99| 久久午夜老司机| 国产传媒一区在线| 日本一二三不卡| 91色在线porny| 一区二区三区在线免费播放| 色狠狠桃花综合| 亚洲国产精品一区二区久久恐怖片 | 中文字幕一区二区三中文字幕| 国产电影一区在线| 亚洲色图清纯唯美| 91蜜桃免费观看视频| 夜夜夜精品看看| 51精品秘密在线观看| 人人精品人人爱| 久久精品人人做人人综合 | 中文字幕中文字幕在线一区| 91美女在线视频| 日韩av一区二区三区| 久久久久国色av免费看影院| 成人黄色在线视频| 亚洲免费视频中文字幕| 91精品国产91久久久久久一区二区 | 中文字幕亚洲综合久久菠萝蜜| 色婷婷综合久久久| 日本不卡在线视频| 国产亚洲欧美在线| 色哟哟一区二区在线观看| 午夜私人影院久久久久| 欧美成人精品1314www| 成人黄色免费短视频| 亚洲欧美日韩国产中文在线| 99re热视频这里只精品| 日韩av一级片| 综合色中文字幕| 69堂亚洲精品首页| 99久久777色| 久久精品国产99| 国产精品毛片无遮挡高清| 欧美日韩国产天堂| 国产suv一区二区三区88区| 亚洲一本大道在线| 久久看人人爽人人| 欧美精品日韩综合在线| 成人动漫精品一区二区| 免费高清在线一区| 亚洲精品视频在线看| 精品乱人伦小说| 一本一本大道香蕉久在线精品 | 亚洲午夜三级在线| 国产欧美视频一区二区三区| 欧美日韩视频在线一区二区| 国产成人午夜视频| 天天爽夜夜爽夜夜爽精品视频| 国产精品国产三级国产| 精品国产麻豆免费人成网站| 91黄色激情网站| a美女胸又www黄视频久久| 蜜臀国产一区二区三区在线播放| 亚洲伦在线观看| 国产欧美日韩亚州综合| 日韩欧美一卡二卡| 欧美日本国产视频| 日本乱码高清不卡字幕| 国产成人免费在线观看不卡| 九色综合狠狠综合久久| 免费在线视频一区| 午夜精品一区二区三区三上悠亚| 亚洲三级在线免费观看| 国产精品丝袜一区| 久久久久久久久久久久久夜| 日韩亚洲欧美综合| 欧美精品xxxxbbbb| 欧美三级在线视频| 91福利在线导航| 色综合激情久久| 一本到不卡精品视频在线观看| 国产91富婆露脸刺激对白| 国产麻豆精品在线| 国产原创一区二区三区| 国产精品一品视频| 国产精品一级黄| 粉嫩一区二区三区在线看| 国产一区在线不卡| 国产精品1区2区3区在线观看| 精品一区二区日韩| 国产麻豆日韩欧美久久| 丁香婷婷综合色啪| 99re在线精品| 欧美日韩中文精品| 欧美一级一区二区| 久久综合久久综合久久| 久久精品男人天堂av| 日本一区二区三区高清不卡| 中文文精品字幕一区二区| 一色屋精品亚洲香蕉网站| 亚洲黄色小视频| 亚洲v日本v欧美v久久精品| 三级欧美在线一区| 蓝色福利精品导航| 国产成人午夜精品影院观看视频| 国产suv精品一区二区6| 色综合久久久久综合体| 欧美一区二区性放荡片| 26uuu精品一区二区在线观看| 欧美激情一区二区三区全黄| 亚洲激情在线激情| 日本亚洲天堂网| 国产ts人妖一区二区| 欧美日韩一级大片网址| 日韩欧美一区二区免费| 国产精品久久久久久久裸模| 亚洲成人激情综合网| 蜜桃精品视频在线观看| 成人午夜伦理影院| 欧美在线短视频| www成人在线观看| 亚洲区小说区图片区qvod| 视频一区二区不卡| 成人福利视频在线看| 欧美另类z0zxhd电影| 国产欧美日韩不卡| 丝袜美腿高跟呻吟高潮一区| 国产精品18久久久久久久网站| 在线日韩国产精品| 久久久国产精华| 亚洲18影院在线观看| 国产成人av电影免费在线观看| 欧美在线播放高清精品| 久久久久综合网| 天堂va蜜桃一区二区三区| 99久久久精品免费观看国产蜜| 91精品午夜视频| 亚洲激情综合网| 成人午夜av电影| 日韩一区二区电影| 亚洲一区二区五区| 不卡视频一二三四| 国产丝袜欧美中文另类| 日韩女同互慰一区二区| 91在线视频免费观看| 精品久久久久久久久久久久久久久久久| 国产精品日韩成人| 国产中文字幕精品| 91麻豆精品国产91久久久资源速度 | 欧美一区二区三区四区五区| 亚洲日本电影在线| 高清国产午夜精品久久久久久| 日韩视频在线一区二区| 亚洲综合久久久| 91亚洲精华国产精华精华液| 久久精品欧美一区二区三区不卡| 精品一区在线看| 91麻豆精品国产91久久久久久久久| 亚洲欧美日韩电影| 99久久婷婷国产| 国产精品视频第一区| 国产一区二区电影| 精品黑人一区二区三区久久 | 国产白丝精品91爽爽久久| 精品国产免费久久| 狠狠色丁香婷婷综合久久片| 欧美一级日韩不卡播放免费| 日本午夜精品一区二区三区电影| 欧美色偷偷大香| 日本一不卡视频|