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

📄 performance.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
	        	   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");
	        	   break;
	        }
	        
	        /* 判断状态tlv类型*/ 
	        lsptype =  (LspCb->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!!!!");
	        	   break;
	        	   
	        }        	        
	        
	        sndnotifymsgproc(session, statuscode,LspCb->upMsgid,msgtype);	        	        
	     	break;     	
	     }
	    
	     default:break;
	     
	}	
	(LspCb->waitmsgtype)&= 0x3f;		
    }
     LspLblmsgFlag = (LspCb->waitmsgtype)&0x30;
     if(LspLblmsgFlag)
     {
    	switch(LspLblmsgFlag){
    		case 0x10:  /*MPLS_LBLREQ_MSGTYPE*/
    		{
    		   MPLS_INDEX_TO_SESSION(session,LspCb->downSessionIndex);
	           if(!session){
                       DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_LSP,"lblmsg_wait_Lspproce MPLS_LBLREQ_MSGTYPE,No session %x!!\n",LspCb->downifIndex);
		       printf("lblmsg_wait_Lspproce MPLS_LBLREQ_MSGTYPE,No session %x!!\n",LspCb->downifIndex);
	               return 0;
	           }    	        
	           lsptype = LspCb->lspType;
	           sndlblmsgtlvproc(session,fec,LspCb,MPLS_LBLREQ_MSGTYPE,lsptype);  	       
	     	   break;
    		    
    		}
    		case 0x20: /*MPLS_LBLABORT_MSGTYPE*/
    		{
    		   MPLS_INDEX_TO_SESSION(session,LspCb->downSessionIndex);
	           if(!session){
                       DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_LSP,"lblmsg_wait_Lspproce MPLS_LBLABORT_MSGTYPE,No session %x!!\n",LspCb->downifIndex);
		       printf("lblmsg_wait_Lspproce MPLS_LBLABORT_MSGTYPE,No session %x!!\n",LspCb->downifIndex);	
	               return 0;
	           }    	        
	           lsptype = LspCb->lspType;
	           sndlblmsgtlvproc(session,fec,LspCb,MPLS_LBLABORT_MSGTYPE,lsptype);  	       
	     	   break;
    		}
    		case 0x30: /*MPLS_LBLREL_MSGTYPE*/
    		{
    		   MPLS_INDEX_TO_SESSION(session,LspCb->downSessionIndex);
	           if(!session){
                       DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_LSP,"lblmsg_wait_Lspproce MPLS_LBLREL_MSGTYPE,No session %x!!\n",LspCb->downifIndex);
		       printf("lblmsg_wait_Lspproce MPLS_LBLREL_MSGTYPE,No session %x!!\n",LspCb->downifIndex);
	               return 0;
	           }    	        
	           lsptype = LspCb->lspType;
	           sndlblmsgtlvproc(session,fec,LspCb,MPLS_LBLREL_MSGTYPE,lsptype);  	       
	     	   break;
    		}
    		default: break;
    	}
    	(LspCb->waitmsgtype)&= 0xf;
    	
     }
     if ((LspCb->waitmsgtype)&0xf0)
          return 1;
     else return 1;
}



short wait_lsplblmsg_append(LspCBVar,TempFec,statuscode,notmsgtype,waitmsgtype)
	mplsLdpLspCB      *LspCBVar;
	void              *TempFec;
	unsigned long     statuscode;	
	unsigned long     notmsgtype;
	unsigned long     waitmsgtype;
{
	mplsLdpFecEntry   *pFecEntry;
	uchar    tempflag;
	uchar    true=0;
	uchar           FecDelFlag=0;
	
	pFecEntry = (mplsLdpFecEntry *)TempFec;	
	if(((LspCBVar->waitflag)&0x40) != MPLS_NULL)
            true = 1;
        tempflag = (LspCBVar->waitflag) & 0x40 ;
        if(!tempflag){
        	(LspCBVar->waitflag)|=0x40;
        	(LspCBVar->waitmsgtype)&=0x0;
        	(LspCBVar->waitnotype)&=0x0;
        /*根据消息类型,置相应标志位 */
        	switch(waitmsgtype){
        	   case MPLS_LBLMAP_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x40; /*因为是第一次置位,可以不考虑NOTMSG的类型*/
        	      break;
        	   case MPLS_LBLWITH_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x80;
        	      break;    
        	   case MPLS_NOT_MSGTYPE:
        	   {
        	      (LspCBVar->waitmsgtype)|=0xc0;
        	      switch(notmsgtype){
        	      	case MPLS_HELLO_MSGTYPE : 
	        	   (LspCBVar->waitmsgtype)|=0x1;
	        	break ;
	        	case MPLS_INIT_MSGTYPE :
	        	   (LspCBVar->waitmsgtype)|=0x2;
	        	break ;
	        	case MPLS_KEEPAL_MSGTYPE :
	        	   (LspCBVar->waitmsgtype)|=0x3;
	        	break ;
	        	case  MPLS_ADDR_MSGTYPE: 
	        	   (LspCBVar->waitmsgtype)|=0x4;
	        	break ;
	        	case  MPLS_ADDRWITH_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x5;
	        	break ;
	        	case  MPLS_LBLREQ_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x6;
	        	break ;
	        	case  MPLS_LBLABORT_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x7;
	        	break ;
	        	case  MPLS_LBLMAP_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x8;
	        	break ;
	        	case  MPLS_LBLWITH_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x9;
	        	break ;	        	
	        	case  MPLS_LBLREL_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0xa;
	        	break ;
	        	case  MPLS_NOT_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0xb;
	        	break ;
	        	default:
	        	   printf("Unkown Msgtype!!!!!!performance");
	        	   return MPLS_FALSE;        	      	
        	      }
        	      lblmsgswitch(statuscode,LspCBVar);       	      
        	       
        	      break;  
        	   }
        	   case MPLS_LBLREQ_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x10;
        	      break;  
        	   case MPLS_LBLABORT_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x20;
        	      break;  
        	   case MPLS_LBLREL_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x30;
        	      break;      	   
        	   default:return 0;
        	   
                }
        } 
        /*判断是否有冲突的情况 */        
        else{
           /*无上游消息标记位,有下游消息标志位*/
           if(!((LspCBVar->waitmsgtype)&0xc0)){
           	switch(waitmsgtype){
           	/* 上游直接置位,下游判断冲突情况 */
           	   case MPLS_LBLMAP_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x40; /*因为是第一次置位,可以不考虑NOTMSG的类型*/
        	      break;
        	   case MPLS_LBLWITH_MSGTYPE:
        	      (LspCBVar->waitmsgtype)|=0x80;
        	      break;    
        	   case MPLS_NOT_MSGTYPE:
        	   {
        	      (LspCBVar->waitmsgtype)|=0xc0;
        	      switch(notmsgtype){
        	      	case MPLS_HELLO_MSGTYPE : 
	        	   (LspCBVar->waitmsgtype)|=0x1;
	        	break ;
	        	case MPLS_INIT_MSGTYPE :
	        	   (LspCBVar->waitmsgtype)|=0x2;
	        	break ;
	        	case MPLS_KEEPAL_MSGTYPE :
	        	   (LspCBVar->waitmsgtype)|=0x3;
	        	break ;
	        	case  MPLS_ADDR_MSGTYPE: 
	        	   (LspCBVar->waitmsgtype)|=0x4;
	        	break ;
	        	case  MPLS_ADDRWITH_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x5;
	        	break ;
	        	case  MPLS_LBLREQ_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x6;
	        	break ;
	        	case  MPLS_LBLABORT_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x7;
	        	break ;
	        	case  MPLS_LBLMAP_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x8;
	        	break ;
	        	case  MPLS_LBLWITH_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0x9;
	        	break ;	        	
	        	case  MPLS_LBLREL_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0xa;
	        	break ;
	        	case  MPLS_NOT_MSGTYPE:
	        	   (LspCBVar->waitmsgtype)|=0xb;
	        	break ;
	        	default:
	        	   printf("Unnown Msgtype!!!!!!performance");
	        	   return MPLS_FALSE;        	      	
        	      }
        	      lblmsgswitch(statuscode,LspCBVar);       	     
        	       
        	      break;  
        	   }        	   
        	   case MPLS_LBLABORT_MSGTYPE:
        	   {   
        	  /* 已有MPLS_LBLREQ_MSGTYPE,则clear标志位,判断是否要移动LSPCB和FEC*/
        	      if(((LspCBVar->waitmsgtype)&0x30)==0x10){
        	      	 (LspCBVar->waitmsgtype)&=0x0;
        	      	 (LspCBVar->waitflag)&=0xbf;
        	      	 if(!(LspCBVar->waitflag&0x40)){
        	      	      LspCB_locat_adjust

⌨️ 快捷键说明

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