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

📄 performance.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
            	 while(TempUpCB){      /* the first three bit of waitflag are not all zero*/
            	     if(mpls_lblmsg_req.req_num>=Msg_buf_num)
            		    return 0;
            	     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 lblmsg_wait_Upproce(upCb,fec)
   mplsLdpUpCB       * upCb;
   mplsLdpFecEntry   * fec;   
{
	uchar    UpLblmsgFlag = 0;	
	mplsLdpSession_t  * session = MPLS_NULL;
	unsigned long     statuscode;	
	unsigned long     msgtype;
	uchar             lsptype;
	ushort   i;

	UpLblmsgFlag = (upCb->waitmsgtype)&0xf0;
	MPLS_INDEX_TO_SESSION(session,upCb->upSessionIndex);
	if ( ! session ){
	    printf("No session !!");	 
	    return 0; 
	}
	switch(UpLblmsgFlag){
	     case  0x10  :
	     {
	     	printf("UpCB has no Req msg !");
	     	break;
	     }
	     case  0x20 :
	     {
	     	printf("UpCB has no Abort msg !");
	     	break;
	     }
	     case  0x40 :
	     {
	     	snd_lblmap_tlvpro(session,(void*)fec,(void *)upCb,LDP_HOP_LSP);
	     	return 1;
	     }
	     case  0x30 :
	     {
	     	printf("UpCB has no Rel msg !");
	     	break;
	     }
	     case  0x80 :
	     {
	     	snd_lblwith_tlvpro(session,fec,upCb,LDP_HOP_LSP);
	     	return 1;
	        	
	     }	
	     case  0xc0 :
	     {
	     	{	     	     	
	           	        	        
	        /* 判断指向消息类型 */
	        lsptype =  (upCb->waitmsgtype)&0xf;	        
	        switch(lsptype){
	        	case  0x1: 
	        	   msgtype = MPLS_HELLO_MSGTYPE;
	        	break ;
	        	case  0x2:
	        	   msgtype = MPLS_INIT_MSGTYPE;
	        	break ;
	        	case  0x3:
	        	   msgtype = MPLS_KEEPAL_MSGTYPE;
	        	break ;
	        	case  0x4: 
	        	   msgtype = MPLS_ADDR_MSGTYPE;
	        	break ;
	        	case  0x5:
	        	   msgtype = MPLS_ADDRWITH_MSGTYPE;
	        	break ;
	        	case  0x6:
	        	   msgtype = MPLS_LBLREQ_MSGTYPE;
	        	break ;
	        	case  0x7:
	        	   msgtype = MPLS_LBLABORT_MSGTYPE;
	        	break ;
	        	case  0x8:
	        	   msgtype = MPLS_LBLMAP_MSGTYPE;
	        	break ;
	        	case  0x9:
	        	   msgtype = MPLS_LBLWITH_MSGTYPE;
	        	break ;	        	
	        	case  0xa:
	        	   msgtype = MPLS_LBLREL_MSGTYPE;
	        	break ;
	        	case  0xb:
	        	   msgtype = MPLS_NOT_MSGTYPE;
	        	break ;
	        	default:
	        	   printf("Unnown Msgtype!!!!!!performance");
	        	   return MPLS_FALSE;
	        }
	        
	        /* 判断状态tlv类型*/ 
	        lsptype =  (upCb->waitnotype)&0x3f;
	        switch(lsptype){
	        	case 0x1:
	        	   statuscode = SUCCESS;
	        	   break;
	        	case 0x2:
	        	   statuscode = BADLDPID;
	        	   break;
	        	case 0x3:
	        	   statuscode = BADPROTVER;
	        	   break;
                        case 0x4:
	        	   statuscode = BADPDULEN;
	        	   break;	        	   
	        	case 0x5:
	        	   statuscode = UNKNOWNMSGTYP;
	        	   break;
	        	case 0x6:
	        	   statuscode = BADMSGLEN;
	        	   break;
	        	case 0x7:
	        	   statuscode = UNKNOWNTLV;
	        	   break;
	        	case 0x8:
	        	   statuscode = BADTLVLEN;
	        	   break;
	        	case 0x9:
	        	   statuscode = MALFORMTLVVAL;
	        	   break;
	        	case 0xa:
	        	   statuscode = HOLDTIMEEXP;
	        	   break;
	        	case 0xb:
	        	   statuscode = SHUT_DOWN;
	        	   break;
	        	case 0xc:
	        	   statuscode = LOOPDETECT;
	        	   break;
	        	case 0xd:
	        	   statuscode = UNKNOWNFEC;
	        	   break;
	        	case 0xe:
	        	   statuscode = NOROUTE;
	        	   break;
	        	case 0xf:
	        	   statuscode = NOLBLRESRC;
	        	   break;
	        	case 0x10:
	        	   statuscode = LBLRESRCAVA;
	        	   break;
	        	case 0x11:
	        	   statuscode = SREJNOHELLO;
	        	   break;
	        	case 0x12:
	        	   statuscode = SREJPARMADEVER;
	        	   break;
	        	case 0x13:
	        	   statuscode = SREJPARMMPDUL;
	        	   break;
	        	case 0x14:
	        	   statuscode = SREJPARMLBLRNG;
	        	   break;
	        	case 0x15:
	        	   statuscode = KEEPALTIMEEXP;
	        	   break;
	        	case 0x16:
	        	   statuscode = LBLREQAB;
	        	   break;
	        	case 0x17:
	        	   statuscode = MISSPARAMETER;
	        	   break;
	        	case 0x18:
	        	   statuscode = BADERTLVERR;
	        	   break;
	        	case 0x19:
	        	   statuscode = BADSTRICNERR;
	        	   break;
	        	case 0x1a:
	        	   statuscode = BADLOOSNERR;
	        	   break;
	        	case 0x1b:
	        	   statuscode = BADINITERHOPER;
	        	   break;
	        	case 0x1c:
	        	   statuscode = RESRCUNAVA;
	        	   break;
	        	case 0x1d:
	        	   statuscode = TRAFPARAUNAVA;
	        	   break;
	        	case 0x1e:
	        	   statuscode = SETUPABORT;
	        	   break;
	        	case 0x1f:
	        	   statuscode = SHUTDOWN_REC;
	        	   break;
	        	case 0x20:
	        	   statuscode = SHUTDOWN_SENT;
	        	   break;
	        	case 0x21:
	        	   statuscode = SESSATTEMPED;
	        	   break;	        	
	        	default:
	        	   printf("Unknown statuscode of performance!!!!");
	        	   return MPLS_FALSE;
	        	   
	        }        	        
	        
	        sndnotifymsgproc(session, statuscode,upCb->msgid,msgtype);	        	        
	     	break;     	
	     }
	     }
	     default:return 0;
	     return 0; 
	}		   
}


short lblmsg_wait_Downproce(DownCb,fec)
   mplsLdpDownCB       * DownCb;
   mplsLdpFecEntry   * fec;
{
	uchar    DownLblmsgFlag = 0;	
	mplsLdpSession_t * session = MPLS_NULL;
	ushort   i;
	DownLblmsgFlag = (DownCb->waitmsgtype)&0xf0;		
	MPLS_INDEX_TO_SESSION(session,DownCb->downSessionIndex);
	if(!session){
		printf("No session!!");	
	return 0;
	}
	
	switch(DownLblmsgFlag){
	     case  0x10  :
	     {
	     	snd_lblreq_tlvpro(session,fec,DownCb,LDP_HOP_LSP);
	     	return 1;
	     }
	     case  0x20 :
	     {
	     	snd_lblabort_tlvpro(session,fec,DownCb,LDP_HOP_LSP);
	     	return 1;
	     }
	     case  0x40 :
	     {
	     	printf("DownCB has no mapping msg !");
	     	break;
	     }
	     case  0x30 :
	     {
	     	snd_lblrel_tlvpro(session,fec,DownCb,LDP_HOP_LSP);
	     	return 1;
	     }
	     case  0x80 :
	     {
	     	printf("DownCB has no withdraw msg !");
	     	break;
	     }	
	     case  0xe0 :
	     {
	     	break;
	     }
	     default:return 0;
	     return 0; 
	}		   
}

short lblmsg_wait_Lspproce(LspCb,fec)
   mplsLdpLspCB      * LspCb;
   void   * fec;
{
	uchar             LspLblmsgFlag = 0;	
	mplsLdpSession_t  * session = MPLS_NULL;
	unsigned long     statuscode;	
	unsigned long     msgtype;
	ushort   i;
	unsigned char lsptype;
	LspLblmsgFlag = (LspCb->waitmsgtype)&0xc0;		
	if(LspLblmsgFlag){
	switch(LspLblmsgFlag){
	     case  0x40  :  /*MPLS_LBLMAP_MSGTYPE */
	     {
	     	MPLS_INDEX_TO_SESSION(session,LspCb->upSessionIndex);
	        if(!session)
            {
                   DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_LSP,"lblmsg_wait_Lspproce MPLS_LBLMAP_MSGTYPE,No session %x!!\n",LspCb->upifIndex);
		         printf("lblmsg_wait_Lspproce MPLS_LBLMAP_MSGTYPE,No session %x!!\n",LspCb->upifIndex);
	           break;
	        }    	        
	        msgtype = LspCb->lspType;
	        sndlblmsgtlvproc(session,fec,LspCb,MPLS_LBLMAP_MSGTYPE,msgtype);	        
	     	break;
	     }
	     case  0x80 :   /*MPLS_LBLWITH_MSGTYPE */
	     {
	     	MPLS_INDEX_TO_SESSION(session,LspCb->upSessionIndex);
	        if(!session){
                   DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_LSP,"lblmsg_wait_Lspproce MPLS_LBLWITH_MSGTYPE,No session %x!!\n",LspCb->upifIndex);
		   printf("lblmsg_wait_Lspproce MPLS_LBLWITH_MSGTYPE,No session %x!!\n",LspCb->upifIndex);	
	           break;
	        }    	        
	        msgtype = LspCb->lspType;
	        sndlblmsgtlvproc(session,fec,LspCb,MPLS_LBLWITH_MSGTYPE,msgtype);	        
	     	break;
	     }
	     case  0xc0 :  /*MPLS_NOT_MSGTYPE*/
	     {	     	  	
	     	MPLS_INDEX_TO_SESSION(session,LspCb->upSessionIndex);
	        if(!session){
                   DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_LSP,"lblmsg_wait_Lspproce MPLS_NOT_MSGTYPE,No session %x!!\n",LspCb->upifIndex);
		   printf("lblmsg_wait_Lspproce MPLS_NOT_MSGTYPE,No session %x!!\n",LspCb->upifIndex);	
	           break;
	        }    	        	        
	        /* 判断指向消息类型 */
	        lsptype =  (LspCb->waitmsgtype)&0xf;	        
	        switch(lsptype){
	        	case  0x1: 
	        	   msgtype = MPLS_HELLO_MSGTYPE;
	        	break ;
	        	case  0x2:
	        	   msgtype = MPLS_INIT_MSGTYPE;
	        	break ;
	        	case  0x3:

⌨️ 快捷键说明

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