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

📄 mplsfunc.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
           }
             	
           break;
       }
   }
  }
   
   if(numFnd==0)
   {
       ifIndex = PORTNOTEXIST;
   }
   
   
   MPIfIndex.module  = module;
   MPIfIndex.port    = port;
   MPIfIndex.ifIndex = ifIndex;
   
   return MPIfIndex;   
} 



/********************************************************************
 * 函数名:sdp_up_get_time()                                    *
 * 功能  :显示session存活时间
 * 输入  :next_re:对应路由;sty:输出字符串                       *
 * 输出  :无
 * 返回  :成功返回TRUE                                          *
 * 全局变量:无
 * 修改记录:
   -  修改日期       版本      修 改 人      修改原因及内容
 =========================================================
   -  01-7-25        1.0     孙保平            创建
   sbp 2002-4-17     clock the setup time by second
**********************************************************************/ 
int16 sdp_up_get_time(ulong uptime, struct sty *sty)
{
    bits32_t time,day,hour,minute,second;

    day = 0;hour = 0;minute = 0;second = 0;
    CURRENT_TIME(&minute,&second);
     time  = second- uptime;
   /* time = (GLUE_NOW()- uptime)/TICKS_PER_SECOND;*/
    day = time/(24*3600);
    hour = (time - 24*3600*day)/3600;
    minute = (time - 24*3600*day - 3600*hour)/60;
    second = time - 24*3600*day - 3600*hour - 60*minute;
    if(day > 0)
        sdp_printf(sty," %uD %.2d:%.2d:%.2d",day,hour,minute,second); 
    else
        sdp_printf(sty," %.2d:%.2d:%.2d",hour,minute,second);
    return 1;
}

/********************************************************************
 * sdp_mpls_session_state()                                    
 * 功能  :显示session的state
 * 输入  :ps:对应路由;
          sty:输出字符串                       
 * 输出  :无
 * 返回  :成功返回TRUE                                          
 * 全局变量:无
 * 修改记录:
   -  修改日期       版本      修 改 人      修改原因及内容
 =========================================================
   -  01-7-25        1.0     孙保平            创建
**********************************************************************/
int16 sdp_mpls_session_state(MplsLdpSessionTable_t *pS,struct sty *sty)
{
	if (pS->state==1)   
    {
        sdp_printf(sty, "   %-14s", "None");
    } 
    else if (pS->state==2)   
    {
        sdp_printf(sty, "   %-14s", "Init");
    } 
    else if (pS->state==3)   
    {
        sdp_printf(sty, "   %-14s", "OpenRec");
    } 
    else if (pS->state==4)   
    {
        sdp_printf(sty, "   %-14s", "OpenSent");
    } 
    else if (pS->state==5)   
    {
        sdp_printf(sty, "   %-14s", "Oper");
    } 
    else if (pS->state==6)   
    {
        sdp_printf(sty, "   %-14s", "TcpConAwaited");
    } 
    else if (pS->state==7)   
    {
        sdp_printf(sty, "   %-14s", "TcpRlsAwaited");
    } 
    else
    {
    	sdp_printf(sty, "   %-14s", "other");  
    }
   
    return 1;
}

/********************************************************************
 * ldp_param_show_func()                                    
 * 功能  :检索指定的接口
 * 输入  :pLdp:       指向实体表首的指针;
          pEntryNumF: 指向检索标志位的指针;
          para_group:操作中对应的参数域结构;                       
 * 输出  :pLdp;
 * 返回  :成功返回TRUE                                          
 * 全局变量:无
 * 修改记录:
   -  修改日期       版本      修 改 人      修改原因及内容
 =========================================================
   -  01-7-25        1.0     孙保平            创建
**********************************************************************/
int16 ldp_param_show_func(MplsLdpEntityTable_t **pLdp,ushort *pEntryNumF,SDP_PARAM_STRU *param_group)
{
    uchar     moduleIn;
	uchar     portIn;
	ulong     keyIfindex;
	ushort    len;
	ushort    num;
	ulong     Ldptemp;
	modulePortIfIndex_t   MPIfIndex;
    
    MPIfIndex  = GetModulePortIfIndex(param_group[0].param_un.param_char);
    moduleIn   = MPIfIndex.module;	
    portIn     = MPIfIndex.port;
    keyIfindex = (ulong)MPIfIndex.ifIndex;
    len        = arrayLen[3];
        
    for(num=0; num<len; num++)
    {
       if(arrayLen[NOLSRATTR]!=1 
    	|| mplsLdpEntityEntry[num].adminStatus!=ADMINSTATUS_UP)
        {
            (*pLdp)++;
            continue;
        }
       if((*pLdp)->ifName.module==moduleIn && (*pLdp)->index==keyIfindex)
       {
            (*pEntryNumF) = 1;
            break;
       }
       
       (*pLdp)++;
    }
    
    return 1;
}


/********************************************************************
 * lsrIdConfDelFunc()                                    
 * 功能  :删除或配置LSRID
 * 输入  :lsrId:       路由器ID
 *         operatype:   对路由器ID的操作,删除或配置                 
 * 输出  :
 * 返回  :成功返回TRUE                                          
 * 全局变量:无
 * 修改记录:
   -  修改日期       版本      修 改 人      修改原因及内容
 =========================================================
   -  01-7-25        1.0     孙保平            创建
**********************************************************************/
void  lsrIdConfDelFunc(ulong lsrId,uchar operatype)
{
    ushort       num;
    ushort       num1;
    
    /* 删除或配置ENTITY表的LDPID */
    num   = arrayLen[NOENTITY];
    for(num1=0; num1<num; num1++)
    {
        mplsLdpEntityEntry[num1].ldpId.lsrAddress = lsrId; 
    }
    
    /* 删除或配置ATM PARAM 表和ATM LABEL ARANGE 表的LDPID */
    num   = arrayLen[NOATMPARA];
    for(num1=0; num1<num; num1++)
    {
        mplsLdpEntityAtmParamsEntry[num1].entityLdpId.lsrAddress = lsrId; 
        mplsLdpEntityConfAtmLabelRangeEntry[num1].entityLdpId.lsrAddress = lsrId; 
    }
    
    mplsLsrIdFunc(lsrId,operatype);
    
}

/************************************************************************
 * FUNCTION NAME  : changeLabelIntoStr()	                            
 * DESCRIPTION:   : change  label into string in order to print 			    
 *  INPUT         : label              				
 *  OUTPUT        : RetStr		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 01.12.12                               
 *  GLOBAL        : 								
 *  NOTE          :  ..                                                 
 *        2002-4-17        sbp   simplfy the printing method                                                     
/************************************************************************/
char *changeLabelIntoStr(labelAtm_t label)
{
	char  *str;
	
	MPLS_MEM_ALLOC(str,(char *),20,MPLS_OAM_MEM[IUMEM_OAM_32byte]);
	
    if(label.type==1)
    {
         sprintf(str,"%d/%d",label.label.atm.vpi,label.label.atm.vci);
    }
    else
    {
       	 sprintf(str,"%d",label.label.label);
    }
    
    return str;
}
/************************************************************************
 * FUNCTION NAME  : changePrefixIntoStr()	                            
 * DESCRIPTION:   : change  prefix into string in order to print 			    
 *  INPUT         : prefix , len             				
 *  OUTPUT        : RetStr		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 01.12.12                               
 *  GLOBAL        : 								
 *  NOTE          :  ..                                                 
 *        2002-4-17        sbp   simplfy the printing method                                                 
/************************************************************************/
char *changePrefixIntoStr(ulong prefix,ushort len)
{
    char  *str,*str1;
	
	MPLS_MEM_ALLOC(str,(char *),20,MPLS_OAM_MEM[IUMEM_OAM_32byte]);
	
	sprintf(str,"%s/%d",inettoa(prefix),len);
    
	return str;
}

/************************************************************************
 * FUNCTION NAME  : changeInterfaceIntoStr()	                            
 * DESCRIPTION:   : change  interface(module port) into string in order to print 			    
 *  INPUT         : interface             				
 *  OUTPUT        : RetStr		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 01.12.12                               
 *  GLOBAL        : 								
 *  NOTE          :  ..                                                 
/************************************************************************/
char *changeInterfaceIntoStr(interface_name_t interface)
{
    char  *str;
	
	MPLS_MEM_ALLOC(str,(char *),20,MPLS_OAM_MEM[IUMEM_OAM_32byte]);
	
	sprintf(str,"%d/%d",interface.module,interface.port);
    
	return str;
}
/************************************************************************
 * FUNCTION NAME  : mplsForwardingPrint()	                            
 * DESCRIPTION:   : print forwarding table 			    
 *  INPUT         :             				
 *  OUTPUT        : 		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 01.12.12                               
 *  GLOBAL        : 								
 *  NOTE          :  ..                                                 
 *    sbp  2002-4-17  release memory                                      
/************************************************************************/
void mplsForwardingPrint(struct sty *sty,ushort num1,uchar num)
{
    uchar         numFnd;
    ushort        len;
    ushort        vpi;
    ushort        vci;
    ulong         prefix;
    char          *str;
    char          *showStr[4];  /*  [][]-->*[]  */
    labelAtm_t    tempLabel;
    interface_name_t  interface;
     
     if(num==1)
     {
     	sdp_printf(sty,"  InLabel  OutLabel  Prefix or TunnelId   Bytes    OutIF   NextHop       ");
	    sdp_printf(sty, "\n");
	 }
	        
     tempLabel  = mplsForwardingEntry[num1].localLabel;
     showStr[0] = changeLabelIntoStr(tempLabel);
       
     tempLabel  = mplsForwardingEntry[num1].remoteBinds[0].remoteBinds;
     showStr[1] = changeLabelIntoStr(tempLabel);
    	    
     len        = mplsForwardingEntry[num1].remoteBinds[0].prefixLspId.prefixOrLspid.destAddr.mask.maskLen;
     prefix     = mplsForwardingEntry[num1].remoteBinds[0].prefixLspId.prefixOrLspid.destAddr.netaddr;
     showStr[2] = changePrefixIntoStr(prefix,len);
    	    
     interface  = mplsForwardingEntry[num1].remoteBinds[0].outIf;
     showStr[3] = changeInterfaceIntoStr(interface);
    	    
     sdp_printf(sty, "  %-9s%-10s%21s%-9u%-8s%-s",
    	                   showStr[0],
    	                   showStr[1],
    	                   showStr[2],
    	                   mplsForwardingEntry[num1].remoteBinds[0].bytes,
    	                   showStr[3],
    	                   inettoa(mplsForwardingEntry[num1].remoteBinds[0].nextHop));
      sdp_printf(sty, "\n");
      MPLS_MEM_FREE(showStr[0], MPLS_OAM_MEM[IUMEM_OAM_32byte]);
      MPLS_MEM_FREE(showStr[1], MPLS_OAM_MEM[IUMEM_OAM_32byte]);
      MPLS_MEM_FREE(showStr[2], MPLS_OAM_MEM[IUMEM_OAM_32byte]);
      MPLS_MEM_FREE(showStr[3], MPLS_OAM_MEM[IUMEM_OAM_32byte]);
}
/************************************************************************
 * FUNCTION NAME  : mplsLdpSessionPrint()	                            
 * DESCRIPTION:   : print session table 			    
 *  INPUT         :  pSesT           				
 *  OUTPUT        : 		                           				
 *  AUTHOR/DATE   : Sun Baoping/ 01.12.12                               
 *  GLOBAL        : 								
 *  NOTE          :  ..                                                 
/************************************************************************/
  void mplsLdpSessionPrint(MplsLdpSessionTable_t  *pSesT,struct sty *sty)
  {
        sdp_printf(sty,"  Adjacency LDP ID:");
        sdp_printf(sty," %s:%u;",inettoa(pSesT->peerLdpId.lsrAddress),
                                   pSesT->peerLdpId.labelSpace);
        sdp_printf(sty,"  Local LDP ID:");

⌨️ 快捷键说明

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