⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 performance.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
        /*     	清除标记;
             	判断是否要移动位置;
             	判断是否要将FEC移出待处理队列;
          */
             	(LspCBVar->waitflag)&=0xdb;
             	if((LspCBVar->waitflag)&0xe0)
             	   return MPLS_TRUE;
             	else 
             	{
                    LspCB_locat_adjust(LspCBVar,pFecEntry,0x2,&FecDelFlag);
                    return MPLS_TRUE;
                }
                            	   
             	
              }        	
             
             
        }        
        /*  判断是否要调整LSPCB的位置 */
        if(!true)            
        {        	
        	MPLS_LSPCB_DELETE(pFecEntry,LspCBVar)
        	if(LspCBVar != MPLS_NULL)											
            {																
	            (LspCBVar)->prev = NULL;										
	            (LspCBVar)->next = (pFecEntry)->lsp_cb_list.first;				
	            if((LspCBVar)->next != NULL)									
		            (LspCBVar)->next->prev = (LspCBVar);							
	            (pFecEntry)->lsp_cb_list.first = (LspCBVar);					
	            if((pFecEntry)->lsp_cb_list.last == NULL)				
		            (pFecEntry)->lsp_cb_list.last = (LspCBVar);			
            }	
            if(!((pFecEntry->lsp_cb_list).link))  
	                    (pFecEntry->lsp_cb_list).link =(pFecEntry->lsp_cb_list).first; 
        	
        }	        	

        true = 0;
        if(!(Mpls_bufWait_Lablelink.link))
             true = 1;
        
   
        /*  判断是否要将FEC加入到待处理队列中 */
        if((pFecEntry->FecLbNext)||(Mpls_bufWait_Lablelink.last == pFecEntry))
           return MPLS_TRUE;
        else {         
            MPLS_WAITE_FECLBL_INSERT(pFecEntry,Mpls_bufWait_Lablelink)
         }
        if(true)
           Func_FecLable_wait1();
            
        return MPLS_TRUE;       
        
        
}
#endif

short wait_crlspfeclbl_append(mplsLdpLspCB *LspCBVar,mplsLdpCrLsp *pFecEntry,uchar xcflag){
	
}


short wait_downfeclbl_append(mplsLdpDownCB *DownCBVar,mplsLdpFecEntry *pFecEntry,uchar xcflag){
	uchar    tempflag;
	uchar    true=0;
	if(((DownCBVar->waitflag)&0xe0) != MPLS_NULL)
            true = 1;
        tempflag = (DownCBVar->waitflag) & 0x20 ;
        if(!tempflag){
        	(DownCBVar->waitflag)&=0xfb;
        	switch(xcflag){
        	   case LDP_FWD_CREATE:
        	      (DownCBVar->waitflag)|=0x20;
        	      break;
        	   case LDP_FWD_CLOSE:
        	      (DownCBVar->waitflag)|=0x24;
        	      break;        	   
        	   default:return 0;
        	   
                }
        } 
        /*判断是否有冲突的情况 */        
        else{
             /* 已有CREAT,现新来CLOSE请求 */
             if((!((DownCBVar->waitflag)&0x4))&&(xcflag==LDP_FWD_CLOSE)){
      
       /*      	清除标记;
             	判断是否要移动位置;
             	判断是否要将FEC移出待处理队列;
         */
             	(DownCBVar->waitflag)&=0xdb;
             	if((DownCBVar->waitflag)&0xe0)
             	   return MPLS_TRUE;
             	else 
             	{
                    DownCB_locat_adjust(DownCBVar,pFecEntry,0x2);            	   
             	    return MPLS_TRUE;
             	}
             	
              }     
             
        }        
        /*  判断是否要调整mplsLdpDownCB的位置 */
        if(!true){
        	MPLS_DOWNCB_DELETE(pFecEntry,DownCBVar)
        	if(DownCBVar != MPLS_NULL)											
            {																
	            (DownCBVar)->prev = NULL;										
	            (DownCBVar)->next = (pFecEntry)->down_cb_list.first;				
	            if((DownCBVar)->next != NULL)									
		            (DownCBVar)->next->prev = (DownCBVar);							
	            (pFecEntry)->down_cb_list.first = (DownCBVar);					
	            if((pFecEntry)->down_cb_list.last == NULL)				
		            (pFecEntry)->down_cb_list.last = (DownCBVar);			
            }	
            if(!((pFecEntry->down_cb_list).link))  
	                    (pFecEntry->down_cb_list).link =(pFecEntry->down_cb_list).first;

        }
        /*  判断是否要将FEC加入到待处理队列中 */
        if((pFecEntry->FecLbNext)||(Mpls_bufWait_Lablelink.last == pFecEntry))
           return MPLS_TRUE;
        else {         
            MPLS_WAITE_FECLBL_INSERT(pFecEntry,Mpls_bufWait_Lablelink)
            ppp5++;
         }
        return MPLS_TRUE;        
        
        
}


short Func_Lblmsg_wait1(){
	mplsLdpFecEntry * TempFec;
	mplsLdpLspCB    * TempLspCB;
	mplsLdpDownCB   * TempDownCB;
	mplsLdpUpCB     * TempUpCB;
	unsigned long   tempid;
	uchar           FecDelFlag=0;
	
	if(mpls_lblmsg_req.req_num<Msg_buf_num){
		    TempFec = Mpls_bufWait_Lblmsglink.link;
            while(TempFec){  /* find the first node in the Mpls_bufWait_Lblmsglink list */
            	if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
            	return 0;
            	if(!TempFec)
            	return  MPLS_TRUE;            	
            	TempLspCB = (TempFec->lsp_cb_list).link;
      /*  process all the LspCB waited to be processed for LblMsg procedure */
            	if(TempLspCB){
            	while(TempLspCB){      /* the first three bit of waitflag are not all zero*/
            	     #ifdef MPLS_PERFORMANCE_TEMPDEBUG
            	     printf("Func_Lblmsg_wait1 running!");
            	     #endif
            	     if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
            	     return 0;
            	     if(TempLspCB->waitflag&0x40){    /* need to do FecLable process */
            	  
 
  	                          lblmsg_wait_Lspproce(TempLspCB,TempFec);
            	              TempLspCB->waitflag=(TempLspCB->waitflag)&0xbf;
            	              if(!(TempLspCB->waitflag&0x40)){
            	                  LspCB_locat_adjust(TempLspCB,TempFec,0x3,&FecDelFlag);
            	                  if(FecDelFlag){
            	                  	
            	                  	TempFec = Mpls_bufWait_Lblmsglink.link;
            	                  	break;
            	                   }
            	                
            	      /*  adjust the LspCB node if its waitflag's first three bits are all zero*/
            	                  TempLspCB = (TempFec->lsp_cb_list).link;
            	                  
            	              }
            	              else 
            	              {            	             
            	              	   TempLspCB = TempLspCB->prev;
            	              }
            	      }            	        
            	      else  TempLspCB = TempLspCB->prev;
            	      if(mpls_lblmsg_req.req_num == Msg_buf_num)
            	         return 1;            	                 	  
            	 }
            	 if(FecDelFlag){
            	 	FecDelFlag = 0;
            	    continue;
            	}
            	
            	 }
            	 
    /*  process all the DownCB waited to be processed for LblMsg procedure */
            	 TempDownCB = (TempFec->down_cb_list).link;
            	 if(TempDownCB){
            	 while(TempDownCB){      /* the first three bit of waitflag are not all zero*/
      
            	     if(TempDownCB->waitflag&0x40){    /* need to do FecLable process */
            	         if(lblmsg_wait_Downproce(TempDownCB,TempFec)){
            	              TempDownCB->waitflag=(TempDownCB->waitflag)&0xbf;
            	              if(!(TempDownCB->waitflag&0xe0)){
            	                  DownCB_locat_adjust(TempDownCB,TempFec,0x3,&FecDelFlag); 
            	                  if(FecDelFlag){
            	                  	
            	                  	TempFec = Mpls_bufWait_Lblmsglink.link;
            	                  	break;
            	                }
            	      /*  adjust the DownCB node if its waitflag's first three bits are all zero*/
            	                  TempDownCB = TempDownCB->prev;
            	              }
            	              else TempDownCB = TempDownCB->prev;
            	         }
            	         else TempDownCB = (TempFec->down_cb_list).link;
            	      }            	        
            	      else  TempDownCB = TempDownCB->prev;
            	      if(mpls_lblmsg_req.req_num == Msg_buf_num)
            	         return 1;            	                 	  
            	 }
            	 if(FecDelFlag){
            	 FecDelFlag = 0;
            	 continue;
            	}
            	
            	 }
            	 
       /*  process all the UpCB waited to be processed for LblMsg procedure */
            	 TempUpCB = (TempFec->up_cb_list).link;
            	 if(TempUpCB){
            	 while(TempUpCB){      /* the first three bit of waitflag are not all zero*/
            	
            	     if(TempUpCB->waitflag&0x40){    /* need to do FecLable process */
            	         if(lblmsg_wait_Upproce(TempUpCB,TempFec)){
            	              TempUpCB->waitflag=(TempUpCB->waitflag)&0xbf;
            	              if(!(TempUpCB->waitflag&0xe0)){
            	                  UpCB_locat_adjust(TempUpCB,TempFec,0x3,&FecDelFlag);
            	                  if(FecDelFlag){
            	                  	
            	                  	TempFec = Mpls_bufWait_Lblmsglink.link;
            	                  	break;
            	                } 
            	      /*  adjust the DownCB node if its waitflag's first three bits are all zero*/
            	                  TempUpCB = (TempFec->up_cb_list).link;
            	              }
            	              else TempUpCB = TempUpCB->prev;
            	         }
            	         else TempUpCB = TempUpCB->prev; 
            	      }            	        
            	      else  TempUpCB = TempUpCB->prev;
            	      if(mpls_lblmsg_req.req_num == Msg_buf_num)
            	         return 1;            	                 	  
            	 }
            	 if(FecDelFlag){
            	 	FecDelFlag = 0;
            	 	continue;
            	}
            	
            	 }
            	 
                 TempFec = TempFec->LblMsgNext;
             }
         }
	else return 0;
}
	  
short Func_Lblmsg_wait(){
	mplsLdpFecEntry * TempFec;
	mplsLdpLspCB    * TempLspCB;
	mplsLdpDownCB   * TempDownCB;
	mplsLdpUpCB     * TempUpCB;
	unsigned long   tempid;
	uchar           FecDelFlag=0;
	
	MPLS_SET_TIMER(LBLMSG_WAIT_TIME,(void *)Func_Lblmsg_wait,0,ldptime_q,tempid);
	if(mpls_lblmsg_req.req_num<Msg_buf_num)
	{
		    TempFec = Mpls_bufWait_Lblmsglink.link;
            while(TempFec)
            {  /* find the first node in the Mpls_bufWait_Lblmsglink list */
            	if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
            	return 0 ;
            	if(!TempFec)
            	return  MPLS_TRUE;            	
            	TempLspCB = (TempFec->lsp_cb_list).link;
            	if(TempLspCB)
            	{
            		while(TempLspCB)
            		{      /* the first three bit of waitflag are not all zero*/
            		    #ifdef MPLS_PERFORMANCE_TEMPDEBUG
            		    printf("Func_Lblmsg_wait running!");
            		    #endif
            		    if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
            		    return 0;
            	     	if(TempLspCB->waitflag&0x40)
	            	    {    /* need to do FecLable process */
	            	         
  	                          lblmsg_wait_Lspproce(TempLspCB,TempFec);
            	              TempLspCB->waitflag=(TempLspCB->waitflag)&0xbf;
            	              if(!(TempLspCB->waitflag&0x40)){
            	                  LspCB_locat_adjust(TempLspCB,TempFec,0x3,&FecDelFlag); 
            	                  if(FecDelFlag){
            	                  	
            	                  	TempFec = Mpls_bufWait_Lblmsglink.link;
            	                  	break;
            	                   }
            	      /*  adjust the LspCB node if its waitflag's first three bits are all zero*/
	            	                  TempLspCB = (TempFec->lsp_cb_list).link;
	            	                  
            	              }
            	              else 
            	              {            	            
            	              	   TempLspCB = TempLspCB->prev;
            	              }
            	      }            	        
            	      else  TempLspCB = TempLspCB->prev;
            	 }
            	 if(FecDelFlag){
            	 	FecDelFlag = 0;
            	    continue;
            	}
            	
            	 }
            	 
    /*  process all the DownCB waited to be processed for LblMsg procedure */
            	 TempDownCB = (TempFec->down_cb_list).link;
            	 if(TempDownCB){
            	 while(TempDownCB){      /* the first three bit of waitflag are not all zero*/
                     if(mpls_lblmsg_req.req_num>=Msg_buf_num)
            		    return 0;
            	     if(TempDownCB->waitflag&0x40){    /* need to do FecLable process */
            	         if(lblmsg_wait_Downproce(TempDownCB,TempFec)){
            	              TempDownCB->waitflag=(TempDownCB->waitflag)&0xbf;
            	              if(!(TempDownCB->waitflag&0xe0)){
            	                  DownCB_locat_adjust(TempDownCB,TempFec,0x3,&FecDelFlag); 
            	                  if(FecDelFlag){
            	                  	
            	                  	TempFec = Mpls_bufWait_Lblmsglink.link;
            	                  	break;
            	                }
            	      /*  adjust the DownCB node if its waitflag's first three bits are all zero*/
            	                  TempDownCB = (TempFec->down_cb_list).link;
            	              }
            	              else TempDownCB = TempDownCB->prev;
            	         }
            	         else TempDownCB = (TempFec->down_cb_list).link;
            	      }            	        
            	      else  TempDownCB = TempDownCB->prev;
            	      if(mpls_lblmsg_req.req_num == Msg_buf_num)
            	         return 1;            	                 	  
            	 }
            	 if(FecDelFlag){
            	 FecDelFlag = 0;
            	 continue;
            	}
            	
            	 }
            	 
       /*  process all the UpCB waited to be processed for LblMsg procedure */
            	 TempUpCB = (TempFec->up_cb_list).link;
            	 if(TempUpCB){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -