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

📄 mplscmd.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
/********************************************************************          
*	Product Name:	MPLS                                       	          
*	Module  Name:	OAM    			  							
*	File    Name:   mplscmd.c								        	          
*	Function    :	definition of command function 
*   History:
*   Date          Version        modifier         Activities 
* ==================================================================
*   01-8-9         1.0          Sun Baoping        create		
*   2002-4-17        sbp   simplfy the printing method             
*   2002.11.28  sbp  transport address 和 MPLS IP 配置与数据无关                                                 
*   sbp 2003-1-9 内存管理整理                                                                                         
*   sbp 2003-1-21 处理show mpls ldp atm label中的错误数据                                                                             
*   huyonghong 2003-4-3  增加mpls policy的一些命令  
*   2003-7-9 szh 增加对M2000的处理
*   2003-7-14 szh mod 双光纤应有几个显示信息
*   2003-9-6 szh lixia mod show tunnel,show binding命令
*   2003-9-11 szh add printf in showLdpBindingsNetworkIpAddr
*   2003.9.23 Lixia 显示bingding内容太多,需分别显示,同时统计信息少
*   2003-10-13 lixia add cmd_show_unrelease_pvc for show unrelease pvc
* szh add 2003-10-16 for show label used information 
*   2003-10-21 lixia mod cmd_show_unrelease_pvc 
*   2003-10-23 lixia 增加show mpls ldp bindings waiting and next 命令的函数
*   2003-11-7 szh mod showlabelusedsummary(),删除显示的多余信息
*   2003-11-12 szh mod MplsPortDataTable1代替MplsPortDataTable
*   2003-11-20 lixia mod showMplsLdpBindingsDisplaynew,showLdpBindingsDisplaynew,showLdpBindingsSummary
                          showLdpwaitBindings for status is ESTABLISHED
*   2003-11-20 lixia mod cmd_show_unrelease_pvc to show flag of unrelease pvc
*   2003-12-5 lixia add for show memory
*  2003-12-10 szh mod 在showbinding中增加错误码的显示
*  2004-2-24 lixia add cmd_mpls_policy_enable command
*  2004-3-26 lixia mod sdp_sh_mpls_ldp_session_stats_if
********************************************************************/ 

#include "string.h" 
#include "stdlib.h"
#include "stdio.h"
#include "memory.h"
#include "malloc.h"

#include "protocol/h/exec_cmd.h"
#include "protocol/h/tnagt.h"
#include "mplslsp.h"
#include "mplsldp.h"
#include "mplsfun.h"
#include "mplseppc.h"
#include "mplsni.h"
#include "mplsmpue.h"
#include "mplstype.h"
#include "mplstype1.h"
#include "mx_ax_bx.h"
#include "mplspara.h"
#include "oamport.h"
#include "ldpstr.h"
#include "mplsshow.h"
#include "ldpi.h"
#include "ldpmacro.h"
#include "ldpvars.h"

extern SDP_GLOBAL    * sdp_global[SDP_TELNET_NUMBER_PERMIT];
extern char * changeLabelIntoStr(labelAtm_t label);
extern char * changeInterfaceIntoStr(interface_name_t interface);
extern char * changePrefixIntoStr(unsigned long prefix,unsigned short len);
extern void mplsForwardingPrint(struct sty *sty,unsigned short num1,uchar num);
extern void mplsLdpSessionPrint(MplsLdpSessionTable_t *pSesT,struct sty *sty);
extern void mplsLdpSessionStatePrint(mplsLdpSessionStatsTable_t  *pSeSt,struct sty *sty);
extern void mplsLdpPeerPrint(mplsLdpPeerTable_t  *pPeer,struct sty *sty);
extern void mplsLdpAdjacencyPrint(mplsLdpHelloAdjacencyTable_t *pAdjT,struct sty *sty);
extern modulePortIfIndex_t  GetModulePortIfIndex(int8 * str);
extern int16 sdp_up_get_time(unsigned long uptime, struct sty *sty);
extern int16 sdp_mpls_session_state(MplsLdpSessionTable_t *pS,struct sty *sty);
extern int16 ldp_param_show_func(MplsLdpEntityTable_t **pLdp,unsigned short *pEntryNumF,SDP_PARAM_STRU *para_group);

extern void lsrIdConfDelFunc(unsigned long lsrId,uchar operatype);
extern void printIntefaceInfo(struct sty *sty,interface_name_t *IfPortArray, unsigned short portNum,uchar *cardStr);
extern void mplsCrLspIdPrint(mplsErLspTable_t p1,struct sty *sty);
extern void mplsHopLspIdPrint(mplsHopLspTable_t *p1,struct sty *sty);
extern void mplsCrLspPrint(mplsErLspTable_t *p1,struct sty *sty);
extern void moduelPort2ifIndexModulePort(int8 *ModulePort);

extern int16 mplsLspResMsgNo(struct sty *sty,int16 ResMsgNo);
extern int16 mplsFecFilterRetMsgNo(struct sty *sty,int16 ResMsgNo);
extern int16 mplsCommonErrorMsg(struct sty *sty,int16 ResMsgNo);
extern void shMplsAccessList(struct sty *sty,unsigned short filterNo);
void shMplsModuleParameter(struct sty *sty);
extern void shMplsTrafficEngConfiguration(struct sty *sty,unsigned short filterNo);
extern void mplsIpReset();
extern short LoadDataFileInMemory(); 
extern short StoreDataFileOutMemory();

extern char  mplsLoadError[MPLS_DATA_ARRAY_MAX];
extern char  mplsSaveError[MPLS_DATA_ARRAY_MAX]; 

extern mpls_SwitchAttribute	  Switcher;
extern uchar    mplsOamLocalPlatformType;

extern int16 sdp_check_ip_mask(int8 * the_mask);
extern struct sty * sdp_all_sty[SDP_TELNET_NUMBER_PERMIT];
extern mplsIfConf_t   mplsIfConf[MPLS_MAX_BOARD];

/* mplsPort_t          MplsPortDataTable;  */   /* 存放从数据处要的板类型、模块号、端口号、
                                             虚端口号、端口最大速率、svc VPI/VCI范围*/
extern mplsPort_t        MplsPortDataTable1,MplsPortDataTable;                                             
                                             
Stnetifdata         MplsNiDataTable;      /* 存放NI表*/
/* in order to set or delete lsp */
/*  FEC and MplsManage are combined into one process, so the 
    massage between them doesn't need transfer.
*/
extern mpls_comm_oam_t     *pAtmLabeltemp;
extern ulong  session_error, sesserror_index;
unsigned short        currentLspId;

	
unsigned short     TimeSave[8];  /* 分别和8个记时器相对应 */
unsigned char      operArray[8]; /*0: LSRID的操作对应,1:所有LDP实体的操作对应, 2:单个LDP实体的操作对应*/
unsigned char      LdpDefConf[2]; /* 0:1  all default,0:2 all config ; 1:1  :interface default 1:2  interface config*/

unsigned char        globalModule[SDP_TELNET_NUMBER_PERMIT];   /* 全局变量,在端口状态用于记录模块号、端口号、虚端口号 ,非端口状态则为0*/
unsigned char        globalPort[SDP_TELNET_NUMBER_PERMIT];
unsigned short       globalIfIndex[SDP_TELNET_NUMBER_PERMIT];

unsigned long hoptraffpara_pdr=DEFAULT_PDR/48, hoptraffpara_pbs=DEFAULT_PBS/48;

extern unsigned short hoplspestab,crlspestab;
unsigned char encapsulation_mode = 0;
unsigned short abort_time = MPLS_RANDOM_TIME_START;
extern unsigned long asenderror;
extern unsigned long labelgeterror;
/* begin mib table */
unsigned short       arrayLen[MPLS_DATA_ARRAY_MAX];    /* 用于存储各表的长度,具体对应关系在arraylen.h说明*/
MplsLdpEntityConfAtmLabelRangeTable_t       mplsLdpEntityConfAtmLabelRangeEntry[MPLS_LDP_INTERFACE_MAX];
mplsLdpEntityStatsTable_t                   mplsLdpEntityStatsEntry[MPLS_LDP_INTERFACE_MAX];
mplsLsrAttr_t                               mplsLsrAttrEntry;
MplsInterfaceConfTable_t                    mplsInterfaceConfEntry[MPLS_LDP_INTERFACE_MAX];


MplsLdpEntityAtmParamsTable_t               mplsLdpEntityAtmParamsEntry[MPLS_LDP_INTERFACE_MAX];
MplsTrafficParamTable_t                     mplsTrafficParamEntry[MPLS_LDP_INTERFACE_MAX];
MplsLdpEntityTable_t                        mplsLdpEntityEntry[MPLS_LDP_INTERFACE_MAX];
mplsLdpPeerTable_t                          mplsLdpPeerEntry[MPLS_LDP_PEER_MAX];
mplsLdpHelloAdjacencyTable_t                mplsLdpHelloAdjacencyEntry[MPLS_LDP_PEER_MAX];
MplsLdpSessionTable_t                       mplsLdpSessionEntry[MPLS_LDP_SESSION_MAX];
mplsLdpSessionStatsTable_t                  mplsLdpSessionStatsEntry[MPLS_LDP_SESSION_MAX];
forwardingtable_t                           mplsForwardingEntry[MPLS_LDP_INTERFACE_MAX];
mplsldpparamtable_t                         mplsLdpEntityParamEntry[MPLS_LDP_INTERFACE_MAX];
if_transport_table_t                        mplsIfTransportAddressEntry[MPLS_LDP_INTERFACE_MAX];
libtable_t                                  mplsLibEntry[MPLS_LDP_INTERFACE_MAX];
mplsLdpDiscovery_t                          mplsLdpDiscoveryEntry[MPLS_LDP_INTERFACE_MAX];
mplsAtmLdpCapability_t                      mplsAtmLdpCapEntry[MPLS_LDP_INTERFACE_MAX];
mplsLdpAtmSessionTable_t                    mplsLdpAtmSessionEntry[MPLS_LDP_INTERFACE_MAX];
mplsLdpSessionPeerAddressTable_t            mplsLdpSessionPeerAddressEntry[MPLS_LDP_SESSION_MAX];
MplsLdpEntityConfGenericLabelRangeTable_t   mplsLdpEntityConfGenericLabelRangeEntry[MPLS_LDP_INTERFACE_MAX];
mplsLdpGeneralSessionTable_t                mplsLdpGeneralSessionEntry[MPLS_LDP_INTERFACE_MAX];

/* end mib table */

/* the following help information is decided by platform type sbp 2001-12-23 */

char *sdp_cmd_info_mx ="  <moduel No./port No.>: \n  <0-4>      module No.    specify the module No.\n  <1-8>      port No.      specify the port No.";
char *sdp_cmd_info_ax ="  <moduel No./port No.>: \n  <1-13>     module No.    specify the module No.\n  <1-8>      port No.      specify the port No.";
char *sdp_cmd_info_bx ="  <moduel No./port No.>: \n  <1-11>     module No.    specify the module No.\n  <1-8>      port No.      specify the port No.";

#if _MPLS_DEBUG
unsigned long  mplsDebug[50];
#endif
/* configuration command begin */
unsigned char changeMplsRealNum(unsigned char eppcNum);
extern PROTO_MEM_MGR          MPLS_OAM_MEM[MAX_OAM_UTIL_MEM_TYPES];
extern unsigned char   temperror;
mpls_fec_key           global_fec_key,wait_global_fec_key;
extern unsigned long Realfail;    /*2003-10-21   lixia add */
extern mpls_label_busy_flags			local_label_busy_flags;
unsigned char  cr_priority = 0;

int16 showLdpBindingsDisplaynew(mplsLdpFecEntry *fecEntry ,struct sty *sty, unsigned short  *lines);  /* 2003-9-17 lixia add  for show all bindings */	
void showMplsLdpBindingsDisplaynew(mplsLdpFecEntry *fecEntry ,struct sty *sty, unsigned char  flag);
int16 showLdpwaitBindings(mplsLdpFecEntry *fecEntry ,struct sty *sty,unsigned short  *lines);
/*********************************************************************************
 * 函 数 名: cmd_mpls_lsr_id() 
 * 功    能: 启动LDP并设置默认参数。                                                
 * 输    入: sty:         用于显示的结构;
 *            para_group:   操作中对应的参数域结构;                       
 *            is_no:        是一般命令还是no命令的标识;
 *            telnet_num:   当前的TELNET的序号                
 * 输    出: 无
 * 返    回: 无条件地返回SDP_CMD_SUCCESS                
 * 全局变量:  mplsLsrAttrEntry    
 * 修改记录:
   -  修改日期       版本      修 改 人       修改原因及内容
 =========================================================
   -  01-7-25       1.0        sun baoping        创建                                                      
 *********************************************************************************/
 
/************************************************************************/
/* FUNCTION NAME  : mpls_ldp_tunnel_port()	                            */
/* DESCRIPTION:   : into interface mode by tunnel                       */
/*  OUTPUT        : success or fail message      						*/
/*  AUTHOR/DATE   : sbp 2002-6-17                                       */
/*  GLOBAL        : NONE                     		     				*/
/*  NOTE          :  ..                                                 */
/************************************************************************/
int16 mpls_ldp_tunnel_port(struct sty *sty,SDP_PARAM_STRU *para_group,int16 is_no,int16 telnet_num)
{
	int8  *p_temp;
    ULONG tnnl_index = para_group[1].param_un.param_int32;
    int16 rc;
   
    rc = mplsTunnelport(tnnl_index,is_no);
    if (is_no)
    { 
         if(rc == SDP_CMD_SUCCESS)
         {
	          /* set current mode as interface tunnel config mode */
	          sdp_global[telnet_num]->sdp_current_state = SDP_INTERFACE_MPLS_TUNNEL_MODE;	    
	          if ( para_group[0].param_un.param_int32 == SDP_PARAM_TUNNEL_MPLS )
	          {
	              sdp_global[telnet_num]->sdp_interface.inter_type = SDP_INTERFACE_TUNNEL_MPLS;
	              sdp_global[telnet_num]->sdp_interface.port_num = tnnl_index;
	              (sdp_global[telnet_num]->sdp_prompt_config)[0] = 0;
	              strcpy(sdp_global[telnet_num]->sdp_prompt_config,"(config_if)");
	              globalModule[telnet_num]  = 1;        /* 全局变量,在端口状态用于记录模块号、端口号、虚端口号 ,非端口状态则为0*/
                  globalPort[telnet_num]    = 1;
                  globalIfIndex[telnet_num] = tnnl_index;
	          }
	          return SDP_CMD_SUCCESS; 
         }
    } 
    
    return(mplsLspResMsgNo(sty,rc));    
}     
      
int16  cmd_mpls_lsr_id(struct sty *sty,SDP_PARAM_STRU *para_group,int16 is_no,int16 telnet_num)
{
	unsigned long     lsrId;
	uchar     operatype;   /*1:配置数据,2:删除 */
	unsigned short    RetMsgNO;
	lsrId = para_group[0].param_un.param_int32;
	RetMsgNO = mplsLsrIdConfig(lsrId,is_no);
	
	return(mplsCommonErrorMsg(sty,RetMsgNO));
}

/************************************************************************/
/* FUNCTION NAME  : cmd_mpls_ldp_maxhops()	                            */
/* DESCRIPTION:   : config ldp protocol max hops for loopdetection      */
/*  OUTPUT        : success or fail message      						*/
/*  AUTHOR/DATE   : sbp 2002-6-17                                       */
/*  GLOBAL        : NONE                     		     				*/
/*  NOTE          :  ..                                                 */
/************************************************************************/
int16 cmd_mpls_ldp_aggregate(struct sty *sty,SDP_PARAM_STRU *para_group,int16 is_no,int16 telnet_num)
{
	unsigned short    RetMsgNO;
	RetMsgNO    = mplsLdpAggregate(is_no);
	
	return(mplsCommonErrorMsg(sty,RetMsgNO));
}

/************************************************************************/
/* FUNCTION NAME  : cmd_mpls_ldp_maxhops()	                            */
/* DESCRIPTION:   : config ldp protocol max hops for loopdetection      */
/*  OUTPUT        : success or fail message      						*/
/*  AUTHOR/DATE   : sbp 2002-6-17                                       */
/*  GLOBAL        : NONE                     		     				*/
/*  NOTE          :  ..                                                 */
/************************************************************************/
int16 cmd_mpls_ldp_maxhops(struct sty *sty,SDP_PARAM_STRU *para_group,int16 is_no,int16 telnet_num)

⌨️ 快捷键说明

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