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

📄 mplsfun.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
		    mplsLdpAtmSessionEntry[num3].ifIndex     = sessionData.req.set.ifIndex;
		    mplsLdpAtmSessionEntry[num3].lowerVpi    = 
		                                        sessionData.req.set.LdpLblRng.atmlblrnglist[0].flags.flags.minVpi;
		    mplsLdpAtmSessionEntry[num3].lowerVci    = 
		                                        sessionData.req.set.LdpLblRng.atmlblrnglist[0].flags.flags.minVci;
		    mplsLdpAtmSessionEntry[num3].UpperVpi    = 
		                                        sessionData.req.set.LdpLblRng.atmlblrnglist[0].flags.flags.maxVpi;
		    mplsLdpAtmSessionEntry[num3].UpperVci    = 
		                                        sessionData.req.set.LdpLblRng.atmlblrnglist[0].flags.flags.maxVci;
		    mplsLdpAtmSessionEntry[num3].module      = module;
		}
		else if(sessionData.req.set.lblflag==IF_TYPE_FR)
		{
		    ;
		}
		/* 写HELLO表的connect */
		num1    = arrayLen[NOADJACENCY];
		for(num2=0; num2<num1; num2++)
		{
		     if(mplsLdpSessionEntry[num].ifIndex     == mplsLdpHelloAdjacencyEntry[num2].ifIndex &&
		        mplsLdpSessionEntry[num].ifName.module == mplsLdpHelloAdjacencyEntry[num2].ifName.module)
		     {
		        mplsLdpHelloAdjacencyEntry[num2].connect = mplsLdpSessionEntry[num].connect;
		        break;
		     }
		}
	}
	else if(sessionData.operateType==MPLS_OAM_SEARCH)
	{ ; }
	else
	{
	    for(num1=0; num1<num; num1++)
	    {
	        /*2004-6-5 lixia 修改匹配条件,防止删除错误*/
	        if(mplsLdpSessionEntry[num1].ifName.module == module &&
	          mplsLdpSessionEntry[num1].ifIndex == sessionData.req.set.ifIndex&&
	          mplsLdpSessionEntry[num1].entityLdpId.labelSpace == sessionData.req.set.entityLdpId.labelSpace&&
	           mplsLdpSessionEntry[num1].peerLdpId.labelSpace == sessionData.req.set.peerLdpId.labelSpace) 
	       // if(mplsLdpSessionEntry[num1].ifName.module == module &&
	          /*mplsLdpSessionEntry[num1].ifIndex == sessionData.req.del.ifIndex)*/
	      //    mplsLdpSessionEntry[num1].ifIndex == sessionData.req.set.ifIndex)
	        {
	            for( ; num1<num-1; num1++)
	            {
	                mplsLdpSessionEntry[num1]=mplsLdpSessionEntry[num1+1];
	            }
	            if(arrayLen[NOSESSION]>0)
	                arrayLen[NOSESSION]--;
	            MPLS_MEMSET(&mplsLdpSessionEntry[num-1],0,sizeof(MplsLdpSessionTable_t));
	            
	            break;
	        }
	    }
	}
	
	/* 暂时不回
	sessionAck.result  = OAM_MPLS_RCV;
	mplsLdpOamData.msg = MPLS_MIB_LDP_SESSION;
	mplsLdpOamData.data.ssnDataAck = sessionAck;
    ASEND(MPLS_LDP_OAM_MESSAGE,&mplsLdpOamData,sizeof(MIB_LDP_SESSION_ACK)+100,sendPid);
    */
}

/*********************************************************************************
 * 函 数 名: mplsPeerRecv() 
 * 功    能: 接收peer数据                                                
 * 输    入: sPid:   发送方的PID
 *            data:   接收的数据          
 * 输    出: 无
 * 返    回: 无               
 * 全局变量: mplsInterfaceConfEntry 、MplsPortDataTable1   
 * 修改记录:
   -  修改日期       版本      修 改 人       修改原因及内容
 =========================================================
   -  2001-8-14      2.1.2      孙保平            创建                                                      
 *********************************************************************************/
void mplsPeerRecv(mplsOAMLdpMessage_t *data)
{
	/*PID                    *sendPid;*/
	int                    i;
	ushort                 num;
	ushort                 num1;
	ushort                 num2,num3;
	ushort                 moduleNum,portNum;
	ulong                  timeh;
	MIB_LDP_PEER_REQ       peerData;
	MIB_LDP_PEER_ACK       peerAck;
	uchar                  module;
/*	mplsOAMLdpMessage_t    mplsLdpOamData;  */
	
	/*sendPid     = sPid; */
	num         = arrayLen[NOPEER];
	peerData    = data->data.peerDataReq; 
	num3        = num;
	/*MPLS_MEMCPY(peerData, data,sizeof(MIB_LDP_PEER_REQ));*/
	 module = mplsGetModuleDynamic(peerData.req.set.ldpId,peerData.req.set.ifIndex);          
     if(module == MPLS_MODULE_ERROR)
     {
       // #if _MPLS_DEBUG
         DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_SESSION,"======mplsPeerRecv,ldp to OAM  ldp entity stats module error=======\n ");
        printf("======peer,ldp to OAM  ldp entity stats module error=======");
     //  #endif
         return;
     }
	
	if(peerData.operateType==MPLS_OAM_SETUP)
	{
		for(num1=0; num1<num3; num1++)
	    {
	        /*2004-6-5 lixia 修改匹配条件,防止增加错误,覆盖原来正确的*/
	       if((mplsLdpPeerEntry[num1].peerLdpId.lsrAddress == peerData.req.set.ldpId.lsrAddress)&&
           (mplsLdpPeerEntry[num1].peerLdpId.labelSpace == peerData.req.set.ldpId.labelSpace)&&
           (peerData.req.set.ifIndex==mplsLdpPeerEntry[num1].ifIndex)&&
	         module==mplsLdpPeerEntry[num1].ifName.module )
	     //  if(peerData.req.set.ifIndex==mplsLdpPeerEntry[num1].ifIndex && 
	    //     module==mplsLdpPeerEntry[num1].ifName.module )
	       {  
	       	   num = num1;
	       	   break;
	       }
	  }
	    
	    for(i = 0; i < arrayLen[NOSESSION]; i++)
	    {
	        if(mplsLdpSessionEntry[i].peerLdpId.lsrAddress == peerData.req.set.ldpId.lsrAddress &&
	           mplsLdpSessionEntry[i].peerLdpId.labelSpace == peerData.req.set.ldpId.labelSpace)
	        {
	            mplsLdpPeerEntry[num].entityLdpId = mplsLdpSessionEntry[i].entityLdpId;
	            break;
	        }
	    }
	    mplsLdpPeerEntry[num].entityindex =  peerData.req.set.index;
	    mplsLdpPeerEntry[num].ifIndex     =  peerData.req.set.ifIndex;
	    mplsLdpPeerEntry[num].peerLdpId   =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].state       =  OPERATIONAL;
	    mplsLdpPeerEntry[num].peerlabeldistributionmethod =  peerData.req.set.labelDistributionMethod;
	    mplsLdpPeerEntry[num].peerloopdetectionforpv      =  peerData.req.set.loopDetectionForPV;
	    mplsLdpPeerEntry[num].peerpathvectorlimit         =  peerData.req.set.pathVectorLimit;
	   
	   
	    /* 填connect of peer table   in session receive function
	    num1 = arrayLen[NOSESSION];
	    for(num2=0; num2<num1; num2++)
	    {
	    	if(module==mplsLdpSessionEntry[num2].ifName.module && 
	    	   peerData.req.set.ifIndex == mplsLdpSessionEntry[num2].ifIndex )
	    	 {
	    	 	mplsLdpPeerEntry[num].connect=mplsLdpSessionEntry[num2].connect;
	    	 }
	    }*/
	    
	    #if 0/* 注意、保留*/
	    mplsLdpPeerEntry[num].downstream =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].PIEsSent   =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].PIEsRcvd   =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].state      =  peerData.req.set.ldpId;
	    #endif
	    
	    #if 0  /* 注意、保留*/
	    mplsLdpPeerEntry[num].AddressSources =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].LdpIdent    =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].entityLdpId =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].entityLdpId =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].entityLdpId =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].entityLdpId =  peerData.req.set.ldpId;
	    mplsLdpPeerEntry[num].entityLdpId =  peerData.req.set.ldpId;
	    #endif
	    if(num==num3)
		    CURRENT_TIME(&timeh,&mplsLdpPeerEntry[num].oldtime); /* = glue_now();*/
	    mplsLdpPeerEntry[num].ifName.module = module;
	    
	    for(moduleNum=0; moduleNum<MplsPortDataTable1.num; moduleNum++)
	    {
	    	if(module==MplsPortDataTable1.mplsModule[moduleNum].module )
	    	 {  
	    	 	for(portNum=0; portNum<MplsPortDataTable1.mplsModule[moduleNum].num; portNum++)
	    	 	{
	    	 		if(peerData.req.set.ifIndex==MplsPortDataTable1.mplsModule[moduleNum].portData[portNum].ifIndex)
	    	 	    {
	    	 	    	mplsLdpPeerEntry[num].ifName.port=MplsPortDataTable1.mplsModule[moduleNum].portData[portNum].port;
	    	 	        break;
	    	 	    }
	    	 	}
	    	 	break;
	    	 }
	    }
	    
	    if(num==num3)
	       arrayLen[NOPEER]++;
	}
	else if(peerData.operateType==MPLS_OAM_SEARCH)
	{ ; }
	else
	{
	    for(num1=0; num1<num; num1++)
	    {
	    	/*2004-6-5 lixia 修改匹配条件,防止删除错误*/
	    	if((mplsLdpPeerEntry[num1].peerLdpId.lsrAddress == peerData.req.set.ldpId.lsrAddress)&&
           (mplsLdpPeerEntry[num1].peerLdpId.labelSpace == peerData.req.set.ldpId.labelSpace)&&
           (peerData.req.set.ifIndex==mplsLdpPeerEntry[num1].ifIndex)&&
           module==mplsLdpPeerEntry[num1].ifName.module)
	    	/* labelspace就是ifIndex   2001-11-27 */
	     //  if(peerData.req.set.ifIndex==mplsLdpPeerEntry[num1].ifIndex && 
	        /* (peerData.req.del.labelSpace==mplsLdpPeerEntry[num1].ifIndex && */
	     //    module==mplsLdpPeerEntry[num1].ifName.module )
	       {  
	       	   for(;num1<num-1; num1++)
	       	   {
	       	      mplsLdpPeerEntry[num1]=mplsLdpPeerEntry[num1+1];
	       	   }
	       	   MPLS_MEMSET(&mplsLdpPeerEntry[num-1],0,sizeof(mplsLdpPeerTable_t));
	       	   if(arrayLen[NOPEER] >0)
	       	       arrayLen[NOPEER]--;
	       	   break;
	       }
	    }
	}
	
	/* 暂时不回
	peerAck.result     = OAM_MPLS_RCV;
	mplsLdpOamData.msg = MPLS_MIB_LDP_PEER;
    ASEND(MPLS_LDP_OAM_MESSAGE,&mplsLdpOamData,sizeof(MIB_LDP_PEER_ACK)+100,sendPid);
    */
}

/*********************************************************************************
 * 函 数 名: mplsEntityStatsRecv() 
 * 功    能: 接收Entity Stats数据                                                
 * 输    入: sPid:   发送方的PID
 *            data:   接收的数据          
 * 输    出: 无
 * 返    回: 无               
 * 全局变量: mplsInterfaceConfEntry 、MplsPortDataTable1   
 * 修改记录:
   -  修改日期       版本      修 改 人       修改原因及内容
 =========================================================
   -  2001-8-14      2.1.2      孙保平            创建                                                      
 *********************************************************************************/
 void mplsEntityStatsRecv(mplsOAMLdpMessage_t *data)
 {
    /*  PID               *sendPid; */
      ushort            num;
      ushort            num1;
      ushort            num2;
      ushort            num3,num4;
      uchar             cardType,module;
      ushort            moduleNum,portNum;
      uchar             numFnd;
      entityStats_t     entityStatData;
/*      mplsOAMLdpMessage_t    mplsLdpOamData;  */
      
     /* sendPid         = sPid; */
      num             = arrayLen[NOENTITYSTATS];
      num1            = num1;
      entityStatData  = data->data.entityStatsData;
                 
      for(num2=0; num2<entityStatData.num; num2++)
      {
      	  numFnd = 0;
      	  module = mplsGetModuleDynamic(entityStatData.entity[num2].entityLdpId,entityStatData.entity[num2].ifIndex);          
          if(module == MPLS_MODULE_ERROR)
          {
              #if _MPLS_DEBUG
              DEBUG_OUT(DEBUG_OWNER_MPLS, DEBUG_LEVEL_MPLS_SESSION,"======mplsEntityStatsRecv,ldp to OAM  ldp entity stats module error=======\n ");
              printf("======ldp to OAM  ldp entity stats module error=======");
              #endif
              continue;
          }
      	  for(num4=0; num4<num; num4++)
      	  {
      	  	 if(entityStatData.entity[num2].ifIndex == mplsLdpEntityStatsEntry[num4].ifIndex&&
      	  	    module == mplsLdpEntityStatsEntry[num4].ifName.module)
      	  	 {  /* 已存在的统计信息的变化,则更新 */
      	  	     num1=num4;
      	  	     numFnd = 1;
      	  	 }
      	  }
      	  
      	  if(numFnd==1)
      	  { 
      	  	   mplsLdpEntityStatsEntry[num1].attemptedsessions                  = entityStatData.entity[num2].attemptedsessions;
      	  	   mplsLdpEntityStatsEntry[num1].sessionrejectednohelloerrors       = entityStatData.entity[num2].sessionrejectednohelloerrors;
      	  	   mplsLdpEntityStatsEntry[num1].sessionrejectedadvertisementerrors = entityStatData.entity[num2].sessionrejectedadvertisementerrors;
      	  	   mplsLdpEntityStatsEntry[num1].sessionrejectedmaxpduerrors        = entityStatData.entity[num2].sessionrejectedmaxpduerrors;
      	  	   mplsLdpEntityStatsEntry[num1].sessionrejectedlabelrangeerrors    = entityStatData.entity[num2].sessionrejectedlabelrangeerrors;
      	  	   mplsLdpEntityStatsEntry[num1].badldpidentifiererrors             = entityStatData.entity[num2].badldpidentifiererrors;
      	  	   mplsLdpEntityStatsEntry[num1].badpdulengtherrros                 = entityStatData.entity[num2].badpdulengtherrros;
      	  	   mplsLdpEntityStatsEntry[num1].badmessagelengtherrors             = entityStatData.entity[num2].badmessagelengtherrors;
      	  	   mplsLdpEntityStatsEntry[num1].badtlvlengtherrors                 = entityStatData.entity[num2].badtlvlengtherrors;
      	  	   mplsLdpEntityStatsEntry[num1].malformedtlvvalueErrors            = entityStatData.entity[num2].malformedtlvvalueErrors;
      	  	   mplsLdpEntityStatsEntry[num1].KeepAliveTimerExpiredErrors        = entityStatData.entity[num2].KeepAliveTimerExpiredErrors;
      	  	   mplsLdpEntityStatsEntry[num1].ShutdownNotifReceived              = entityStatData.entity[num2].ShutdownNotifReceived;
      	  	   mplsLdpEntityStatsEntry[num1].ShutdownNotifSent                  = entityStatData.entity[num2].ShutdownNotifSent;
      	  }
      	  /* 该实体的统计信息不存在,则加入 */
      	  #if 0   /* 实体信息不在,报上为错误,不用加入 */
      	  else
      	  {
      	  	  mplsLdpEntityStatsEntry[num] = entityStatData.entity[num2];
      	  	  mplsLdpEntityStatsEntry[num].ifName.module = module;  
      	  	  for(moduleNum=0; moduleNum<MplsPortDataTable1.num; moduleNum++)
		      {
		     	 if(module==MplsPortDataTable1.mplsModule[moduleNum].module )
		     	 {  
		     	 	cardType = MplsPortDataTable1.mplsModule[moduleNum].cardType;
		     	 	for(portNum=0; portNum<MplsPortDataTable1.mplsModule[moduleNum].num; portNum++)
		     	 	{
		    

⌨️ 快捷键说明

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