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

📄 cmdfun.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
	    mplsLdpParam.s_interval   = 15;
    }
    
    mplsLdpParamSend();
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsHelloHoldtimer()	                            
 * DESCRIPTION:   : config hello hold time for ldp protocol			    
 *  INPUT         : time, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : mplsLdpParam								
/************************************************************************/
short mplsHelloHoldtimer(ulong time, short is_no)
{
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	mplsLdpParam.h_hold       = time;
	    mplsLdpParam.h_interval   = time/3;
    }
    else
    {
    	mplsLdpParam.h_hold       = 15;
	    mplsLdpParam.h_interval   = 5;
    }
    
    mplsLdpParamSend();
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsLdpLoopDetection()	                            
 * DESCRIPTION:   : config loop detection for ldp protocol			    
 *  INPUT         : detection, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : mplsLdpParam								
/************************************************************************/
short mplsLdpLoopDetection(short is_no)
{
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	mplsLdpParam.loopdetection  = 5;
    }
    else
    {
    	mplsLdpParam.loopdetection  = 1;
    }
    
    mplsLdpParamSend();
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsHopCountLimit()	                            
 * DESCRIPTION:   : config max hops for ldp protocol			    
 *  INPUT         : detection, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : mplsLdpParam								
/************************************************************************/
short mplsHopCountLimit(uchar limit, short is_no)
{
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	mplsLdpParam.maxhopcount  = limit;
    }
    else
    {
    	mplsLdpParam.maxhopcount  = 255;
    }
    
    mplsLdpParamSend();
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsProxyEgress()	                            
 * DESCRIPTION:   : config egress proxy 			    
 *  INPUT         : addr, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : none								
/************************************************************************/
short mplsProxyEgress(ulong addr, ulong mask, short is_no)
{
	IPFORWARDINGTAB     egress;
	ROUTEMESSAGE_UPDATE rtchange;
	PID                 sendPid,tempPid;
	
	GET_PID("LDPPROCESS",&tempPid);
	SELF(&sendPid);
	
	sendPid.pno = tempPid.pno;
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	egress.Type  = RT_ADD;
    }
    else
    {
    	egress.Type  = RT_DEL;
    }
    
    egress.rt_type  = EGRESS_PROXY;
    egress.Dest     = addr;
    egress.NetMask  = mask;
    rtchange.changenumber = 1;
    memcpy(&rtchange.IpForwardingTab[0],&egress,sizeof(IPFORWARDINGTAB));
   
    ASEND(Forwarding_Table_Change,&rtchange,sizeof(ROUTEMESSAGE_UPDATE),sendPid);
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsHopCountLimit()	                            
 * DESCRIPTION:   : config transport address			    
 *  INPUT         : detection, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : 								
 * 2002.11.28 Sunbaoping  deal with transport address when address saved in
      mplsIfConf
/************************************************************************/
short mplsLdpdisTransAddr(uchar moduleNo,uchar portNo,unsigned short ifIndex,ulong ipaddr,short is_no)
{
    unsigned short     num1;
    unsigned short     numFnd;
    ulong      addr;
    
    addr = ipaddr;
    
   numFnd = 0;
   for(num1=0; num1<arrayLen[NOENTITY]; num1++)
   {
      if(mplsLdpEntityEntry[num1].ifName.module==moduleNo &&
         mplsLdpEntityEntry[num1].ifIndex==ifIndex)
      {
          numFnd = 1;
          if(is_no==1)
          {  
                mplsLdpEntityEntry[num1].transAddr     = ipaddr;
                mplsLdpEntityEntry[num1].transFlag     = 1;
          }
          else
          {
             mplsLdpEntityEntry[num1].transAddr     = 0;
             mplsLdpEntityEntry[num1].transFlag     = 0;
          }
          
          mplsEntityConfig(moduleNo);           /* gxq Module */
          return MPLS_OAM_CMD_SUCCESS;
      }
   }
   
    if(numFnd==0)
   {
      
      mplsLdpEntityEntry[num1].ifName.module = moduleNo;/* gxq Module */
      mplsLdpEntityEntry[num1].ifName.port   = portNo;/* gxq port */
      mplsLdpEntityEntry[num1].ifIndex       = ifIndex;
      
      if(is_no==1)
      {  
            mplsLdpEntityEntry[num1].transAddr     = ipaddr;
            mplsLdpEntityEntry[num1].transFlag     = 1;
      }
      else
      {
         mplsLdpEntityEntry[num1].transAddr     = 0;
         mplsLdpEntityEntry[num1].transFlag     = 0;
      }
   }
   /* 1。 需要向相应的模块发送数据,
      2。 需要在物理层启动端口      */
   mplsEntityConfig(moduleNo);/* gxq Module */
    
    return MPLS_OAM_CMD_SUCCESS;
}

/*********************************************************************************
 * 函 数 名: mplsDataLsrAttrAck() 
 * 功    能: 向LDP发送LSR配置数据。                                                
 * 输    入: sPid:接收端的PID号             
 * 输    出: 无 
 * 返    回: 无条件地返回MPLS_OAM_CMD_SUCCESS                
 * 全局变量: MplsPortDataTable1   
 * 修改记录:
   -  修改日期       版本      修 改 人       修改原因及内容
 =========================================================
   -  2001-8-14       1.0      孙保平            创建                                                      
   initialize the message data sent to ldp process   sbp 2002-2-4                                     
 *********************************************************************************/
void mplsDataLsrAttrAck(unsigned short eventType,PID  sPid,uchar opera)
{
     PID                  sendPid;
     PID                  ManagerPid;
     unsigned short               num;
     unsigned short               num1;
     unsigned short               numFnd;       /* 0:   模块没有配置、1:模块已配置*/
     unsigned short               iNum;
     MIB_LDPLSRATTR_ACK   attrData;
/*     mplsOAMLdpMessage_t  MessData;  */
     
     /* initilize the message data sended to ldp process   sbp 2002-2-4 */
     MPLS_MEMSET(&lspData,0,sizeof(mplsOAMLdpMessage_t));
     SELF(&sendPid);
     sendPid.pno = sPid.pno;
          
     attrData.lsrAttribute.lsrId = mplsLsrAttrEntry.lsrId;
     attrData.lsrAttribute.edgeId = mplsLsrAttrEntry.edgeId;
     attrData.PlatformType =  SwitchType;
     attrData.operatype = opera;
     
     attrData.num = 1;
     	 
     lspData.data.lsrData = attrData;
     lspData.msgtype = MPLS_MIB_LDP_LSR_ATTR;
    
     ASEND(eventType,&lspData,sizeof(MIB_LDPLSRATTR_ACK)+40,sendPid);
     
   /*  mplsOamSetTimer(sendPid.module,OAM_TIMER_MPLS_LSRID_TABLE,MPLS_LSRID_TABLE_TIMER);*/
 
}


/*********************************************************************************
 * 函 数 名: mplsDataIfConfAck() 
 * 功    能: 向LDP发送端口配置数据。                                                
 * 输    入: sPid:接收端的PID号             
 * 输    出: 无
 * 返    回: 无条件地返回MPLS_OAM_CMD_SUCCESS                
 * 全局变量: mplsInterfaceConfEntry 、MplsPortDataTable1   
 * 修改记录:
   -  修改日期       版本      修 改 人       修改原因及内容
 =========================================================
   -  2001-8-14       1.0      孙保平            创建                  
   change struct from decentralization to centralization  sbp 2002-6-17                                     
   2004-9-20 lixia add condition:MplsNiDataTable.ni[numj].ni_loopback == 0                                    
 *********************************************************************************/
void mplsDataIfConfAck(unsigned short eventType,PID *sPid,uchar opera)
{
     PID                    sendPid;
     PID                    ManagerPid;
     unsigned short                 num;
     unsigned short                 num1;
     unsigned short                 numFnd;
     unsigned short                 Len;
     unsigned short                 numi;
     unsigned short                 numj;
     uchar 	 	            cardType;
     MIB_LDPINTERFACE_ACK   IfConfData;
/*     mplsOAMLdpMessage_t    MessData;  */
     atmGeneral_u           atm_u;    

⌨️ 快捷键说明

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