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

📄 cmdfun.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
     
     MPLS_MEMSET(&lspData,0,sizeof(mplsOAMLdpMessage_t));
     MPLS_MEMSET(&IfConfData,0,sizeof(MIB_LDPINTERFACE_ACK));
     numFnd  = 0;
     SELF(&sendPid);   /* change module No. from each module to current module */
     sendPid.pno = sPid->pno;
     num     = arrayLen[NOENTITY];
     
     Len     = sizeof(mplsLdpInterface_t);
     
     for(numi=0; numi < num ; numi++)
     {
        /* 从ENTITY表中取数据 
         change struct from decentralization to centralization so not to judge module No. sbp 2002-6-17  */
        IfConfData.interface[numFnd].ifIndex     = mplsLdpEntityEntry[numi].index;
        IfConfData.interface[numFnd].entityLdpId = mplsLdpEntityEntry[numi].ldpId;
        IfConfData.interface[numFnd].adminStatus = mplsLdpEntityEntry[numi].adminStatus
                                    &mplsLdpParam.mplsEnable&mplsLdpParam.mplsRouteridEnable;
        IfConfData.interface[numFnd].operStatus  = mplsLdpEntityEntry[numi].operStatus;
        
        num1  = MplsNiDataTable.NiCfgNum;
        for(numj=0; numj<num1; numj++)
        {
        	 /* 从NI表中取数据 */
             if(MplsNiDataTable.ni[numj].ni_ifindex==mplsLdpEntityEntry[numi].index &&
                MplsNiDataTable.ni[numj].ni_loopback == 0&&
                ((MplsNiDataTable.ni[numj].ni_lcardtype ==mplsLdpEntityEntry[numi].ifName.lsrType)||
                (mplsLdpEntityEntry[numi].ifName.lsrType==MPLS_CARDTYPE_ETH)||
                (mplsLdpEntityEntry[numi].ifName.lsrType==MPLS_CARDTYPE_ETHIF)))
              {
                  IfConfData.interface[numFnd].ifIpAddress = MplsNiDataTable.ni[numj].ni_ip;
                  /*
                  IfConfData.interface[numFnd].ifIpMask    = MplsNiDataTable.ni[numj].ni_mask;
                  */
                  break;
              }	
        }
         	
      	num1  = arrayLen[NOATMLABEL];
      	for(numj=0; numj<num1; numj++)
      	{
      		/* 从ATM LABEL表中取数据 */
      	    if(mplsLdpEntityConfAtmLabelRangeEntry[numj].ifIndex==mplsLdpEntityEntry[numi].index &&
      	      mplsLdpEntityConfAtmLabelRangeEntry[numj].ifName.module==mplsLdpEntityEntry[numi].ifName.module)
      	    {
      	    	/* please look up atmGeneral_u in the mpls.h in order to know the corresponding relation */
      	    	IfConfData.interface[numFnd].conflblRngList.minvpi = 
      	    	               mplsLdpEntityConfAtmLabelRangeEntry[numj].minVpi;
      	    	IfConfData.interface[numFnd].conflblRngList.minvci = 
      	    	               mplsLdpEntityConfAtmLabelRangeEntry[numj].minVci;
      	    	IfConfData.interface[numFnd].conflblRngList.maxvpi = 
      	    	               mplsLdpEntityConfAtmLabelRangeEntry[numj].maxVpi;
      	    	IfConfData.interface[numFnd].conflblRngList.maxvci = 
      	    	               mplsLdpEntityConfAtmLabelRangeEntry[numj].maxVci;
      	    	        	    	
      	    	break;
      	    }
      	}
      	
      	num1  = arrayLen[NOGENlABEL];
      	for(numj=0; numj<num1; numj++)
      	{
      		/* 从ATM LABEL表中取数据 */
      	    if(mplsInterfaceConfEntry[numj].ifIndex==mplsLdpEntityEntry[numi].index &&
      	      mplsInterfaceConfEntry[numj].ifName.module==mplsLdpEntityEntry[numi].ifName.module)
      	    {
      	    	IfConfData.interface[numFnd].genlblRngListmin = mplsInterfaceConfEntry[numj].labelMinIn;
      	    	IfConfData.interface[numFnd].genlblRngListmax = mplsInterfaceConfEntry[numj].labelMaxIn;
      	    	
      	    	break;
      	    }
      	}
      	
      	numFnd++;
     }
     /*
     GET_PID("MPLSMANAGER",&ManagerPid);
     */
     
     if (numFnd>=1)   /* 有相应的配置模块 */
     {
         IfConfData.num = numFnd;
         lspData.data.ifSetData = IfConfData;
         lspData.msgtype = MPLS_MIB_LDP_INTERFACE;
         
         ASEND(eventType,&lspData,numFnd*Len+40,sendPid);
     }
     else
     {
     	IfConfData.num = 0;
     	lspData.data.ifSetData = IfConfData;
        lspData.msgtype = MPLS_MIB_LDP_INTERFACE;
        
     	ASEND(eventType,&lspData,Len+40,sendPid);
     }
     /* 
     t =EXTRA_SET_TIMER(MPLS_INTERFACE_TABLE_TIMER, MPLS_TIMER1, timerNo(sendPid.module,OAM_TIMER_MPLS_INTERFACE_TABLE));
     */
    /* mplsOamSetTimer(sendPid.module,OAM_TIMER_MPLS_DEF_TRAFFIC_TO_LDP_TABLE,MPLS_INTERFACE_TABLE_TIMER); */
}

/*********************************************************************************
 * 函 数 名: mplsDataEntityAck() 
 * 功    能: 发送ENTITY数据                                                
 * 输    入: mplsAttrConfig, sPid, opera         
 * 输    出: 无
 * 全局变量: mplsInterfaceConfEntry 、MplsPortDataTable1   
 * 修改记录:
   -  修改日期       版本      修 改 人       修改原因及内容
 =========================================================
   -  2001-8-14       1.0      孙保平            创建            
   change struct from decentralization to centralization so not to judge module No. sbp 2002-6-17                                            
 *********************************************************************************/
void mplsDataEntityAck(unsigned short eventType,PID sPid,uchar opera)
{
     PID                    sendPid;
     PID                    ManagerPid;
     unsigned short                 num;
     unsigned short                 num1;
     unsigned short                 numFnd;
     unsigned short                 Len;
     MIB_LDPENTITY_ACK      entityData;
/*     mplsOAMLdpMessage_t    MessData;  */
             
     MPLS_MEMSET(&lspData,0,sizeof(mplsOAMLdpMessage_t));
     MPLS_MEMSET(&entityData,0,sizeof(MIB_LDPENTITY_ACK));
     SELF(&sendPid);
     sendPid.pno = sPid.pno; /* change module No. from each module to current module */ 
     Len     = sizeof(mplsLdpEntity_t);
     numFnd  = 0;
   
     if (arrayLen[NOENTITY] > 0)
     {
     	for(num = 0; num<arrayLen[NOENTITY]; num++)
     	{
     		/* change struct from decentralization to centralization so not to judge module No. sbp 2002-6-17  */
     			/*  从ENTITY表中赋值*/
     		mplsLdpEntityEntry[num].protocolVersion = mplsLdpParam.protocolversion;
     		mplsLdpEntityEntry[num].keepAliveHoldTimer = mplsLdpParam.s_hold;
     		mplsLdpEntityEntry[num].helloHoldTimer     = mplsLdpParam.h_hold;
     		mplsLdpEntityEntry[num].loopDetectionCapable = mplsLdpParam.loopdetection;
     		mplsLdpEntityEntry[num].hopcountlimit   = mplsLdpParam.maxhopcount;
     		mplsLdpEntityEntry[num].pathvectorlimit = mplsLdpParam.pvlimit;
     		
     		entityData.entity[numFnd].ldpId                       = mplsLdpEntityEntry[num].ldpId;            /* 1 */
     		entityData.entity[numFnd].index                       = mplsLdpEntityEntry[num].index;            /* 2 */
     		entityData.entity[numFnd].ifArray                     = mplsLdpEntityEntry[num].ifIndex;            /* 3 */
     		#if 0  /*  从 EntityAtmParamsTable 表中赋值*/
     		entityData.entity[numFnd].ifNumber                    = mplsLdpEntityEntry[num].ldpId;            /* 4 */
     		#endif
     		entityData.entity[numFnd].protocolVersion             = mplsLdpEntityEntry[num].protocolVersion;  /* 5 */
     		entityData.entity[numFnd].adminStatus                 = mplsLdpEntityEntry[num].adminStatus
     		                                          &mplsLdpParam.mplsEnable&mplsLdpParam.mplsRouteridEnable;      /* 6 */
     		entityData.entity[numFnd].operStatus                  = mplsLdpEntityEntry[num].operStatus;        /* 7 */
     		entityData.entity[numFnd].wellKnownDiscoveryPort      = mplsLdpEntityEntry[num].wellKnownTcpDiscoveryPort;  /* 8 */
     		entityData.entity[numFnd].maxPduLength                = mplsLdpEntityEntry[num].maxPduLength;        /* 9 */
     		entityData.entity[numFnd].keepAliveHoldTimer          = mplsLdpEntityEntry[num].keepAliveHoldTimer;  /* 10 */
     		entityData.entity[numFnd].helloHoldTimer              = mplsLdpEntityEntry[num].helloHoldTimer;      /* 11 */
     		entityData.entity[numFnd].failedInitSessionThreshold  = mplsLdpEntityEntry[num].failedInitSessionThreshold;  /* 12 */
     		entityData.entity[numFnd].labelDistributionMethod     = mplsLdpEntityEntry[num].labelDistributionMethod;  /* 13 */
     		entityData.entity[numFnd].labelretentionmode          = mplsLdpEntityEntry[num].labelretentionmode;  /* 13 */
     		entityData.entity[numFnd].targetedPeer                = mplsLdpEntityEntry[num].targetedpeer;             /* 14 */
     		entityData.entity[numFnd].pvLimitMismatchtrapenabled  = mplsLdpEntityEntry[num].pvLimitMismatchtrapenabled;       /* 14 */
     		entityData.entity[numFnd].pathvectorlimit             = mplsLdpEntityEntry[num].pathvectorlimit;                /* 14 */
     		entityData.entity[numFnd].hopcountlimit               = mplsLdpEntityEntry[num].hopcountlimit;             /* 14 */
     		entityData.entity[numFnd].targetedPeerAddrType        = mplsLdpEntityEntry[num].targetedPeerAddrType;     /* 15 */
     		entityData.entity[numFnd].targetedPeerAddr            = mplsLdpEntityEntry[num].targetedPeerAddr;         /* 16 */
     		entityData.entity[numFnd].optionalParameters          = mplsLdpEntityEntry[num].optionalParameters;       /* 17 */
     		entityData.entity[numFnd].loopDetectionCapable        = mplsLdpEntityEntry[num].loopDetectionCapable;       /* 17 */
     		entityData.entity[numFnd].transportAddr        = mplsLdpEntityEntry[num].transAddr;             /* 17 */
     		/*entityData.entity[numFnd].transFlag        = mplsLdpEntityEntry[num].transFlag;         */   /* 17 */
     		/* gxq ldpstr.h 中的结构没有transflag */
     		
     		
     		/*  从 EntityAtmParamsTable 表中赋值*/
     		for(num1=0; num1<arrayLen[NOATMPARA]; num1++)
     		{
     			if(mplsLdpEntityAtmParamsEntry[num1].ifName.module == mplsLdpEntityEntry[num].ifName.module && 
     			   mplsLdpEntityAtmParamsEntry[num1].ifindexorzero == entityData.entity[numFnd].index)
     			{
     				entityData.entity[numFnd].atmMergeCap             =  mplsLdpEntityAtmParamsEntry[num1].mergecap;
     				entityData.entity[numFnd].atmVcDirectionality     =  mplsLdpEntityAtmParamsEntry[num1].vcdirectionality;
     				entityData.entity[numFnd].atmLsrConnectivity      =  mplsLdpEntityAtmParamsEntry[num1].lsrconnectivity;
     				entityData.entity[numFnd].defaultControlVpi       =  mplsLdpEntityAtmParamsEntry[num1].defaultcontrolvpi;
     				entityData.entity[numFnd].defaultControlVci       =  mplsLdpEntityAtmParamsEntry[num1].defaultcontrolvci;
     				entityData.entity[numFnd].unlabTrafVpi            =  mplsLdpEntityAtmParamsEntry[num1].unlabtrafvpi;
     				entityData.entity[numFnd].unlabTrafVci            =  mplsLdpEntityAtmParamsEntry[num1].unlabtrafvci;
     				
     				entityData.entity[numFnd].ifNumber                =  mplsLdpEntityAtmParamsEntry[num1].labelrangecomponents;
     				break;
     			}
     		}
     		
     		numFnd++;
     	}
     }
    /*
     GET_PID("MPLSMANAGER",&ManagerPid);
     */    
     if(numFnd > 0)
     {
         entityData.num = numFnd; 
         
         lspData.data.entityData = entityData;
         lspData.msgtype = MPLS_MIB_LDP_ENTITY;
         
         ASEND(eventType,&lspData,numFnd*sizeof(mplsLdpEntity_t)+40,sendPid);
         /* 
         SendOsMsg(eventType,ManagerPid,sendPid,(uchar *)&MessData,numFnd*sizeof(mplsLdpEntity_t)+40);
         */
     }
     else
     {
         entityData.num = 0;
         lspData.data.entityData = entityData;
         lspData.msgtype = MPLS_MIB_LDP_ENTITY;
         
         ASEND(eventType,&lspData,sizeof(mplsLdpEntity_t)+40,sendPid);
         /*
         SendOsMsg(eventType,ManagerPid,sendPid,(uchar *)&MessData,numFnd*sizeof(mplsLdpEntity_t)+40);
         */
    }
    /* mplsOamSetTimer(sendPid.module,OAM_TIMER_MPLS_ENTITY_TABLE,MPLS_ENTITY_TABLE_TIMER);*/
}
/************************************************************************
 * FUNCTION NAME  : mplsAttrConfig()	                            
 * DESCRIPTION:   : send lsr attribute to the responding module.			    
 *  INPUT         : module              				
 *  OUTPUT        : none		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 2001-12-22                              
 *  GLOBAL        : none								
 *  NOTE          :  ..                                                 
/************************************************************************/
void mplsAttrConfig(uchar module)
{
	PID     sendPid;
	uchar   operaType;
	operaType = 1;
	   
   GET_PID("LDPPROCESS",&sendPid);
   
   sendPid.module = module;
   mplsDataLsrAttrAck(MPLS_LDP_OAM_MESSAGE,sendPid,operaType);
}
/************************************************************************
 * FUNCTION NAME  : mplsEntityConfig()	                            
 * DESCRIPTION:   : send interface data to the responding module.			    
 *  INPUT         : module              				
 *  OUTPUT        : none		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 2001-12-22                              
 *  GLOBAL        : none								
 *  NOTE          :  ..                                                 
/************************************************************************/
void mplsInterfaceConfig(uchar module)
{

⌨️ 快捷键说明

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