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

📄 cmdfun.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
/********************************************************************          
*	Product Name:	MPLS                                       	          
*	Module  Name:	OAM    	 									
*	File    Name:   cmdfun.c								        	          
*	Function    :	definition of function 
*   History:
*   Date          Version        modifier         Activities 
* ==================================================================
*   01-8-9          1.0        Sun Baoping        create		
   SBP 2001-12-27  vpi/vci can not be configured on the ethi port
   sbp 2001-12-27  make connection of traffic parameter right for cr-lsp
-  SBP 2001-12-28  bandwidth can not be configured on the ehti port 	
   sbp 2002-2-9    initilize the message data sended to ldp process   
   sbp 2002-2-22 change MPLS_FILTER_SOURCE_PORT to MPLS_FILTER_SOURCE_ADDR
   sbp 2002-2-22 change MPLS_FILTER_DESTINATION_PORT to MPLS_FILTER_DESTINATION_ADDR       
   sbp 2002-2-23 set priority is wrong 
   sbp 2002-6-15 setting data of LDP protocol  
 * 2002.11.4 Hyh  如果删的是最后配置的一跳,则直接置0,                    *
 * 2002.11.11 Hyh tunnel service type no cmd                          *
   sbp 2002-11-21 tunnel cann't be binded to two filter   
   sbp 2002.11.28  处理在线数据配置和TUNNEL配置时HOP ADDRESS 与HOP No的关系
   sbp 2002-12-18 处理ETHIF板的相关数据
   sbp  2002-12-28  在线删除增加端口地址出错                                  
   sbp  2003-1-16  同一优先级同一目的地只能建10调TUNNEL
   2003.2.17 Sunbaoping  TUNNEL数量管理,在删除TUNNEL时判断不严格
   2003.06.09 shizhaohui 增加APC类型的单板
   2003-7-8 szh mod  增加删除业务类型,pdr参数时的提示
   2003-7-9 szh 增加对M2000的处理
   2003.7.25 Xiongjingsong 删除所有的流量参数配置应该关连检测
 /* 对流量过滤重复配置进行特殊处理 szh mod 2003-10-22 
 *   2003-11-12 szh mod MplsPortDataTable1代替MplsPortDataTable
********************************************************************/ 
/********************************************************************          
    mplsAccessList:   ip    mask 
    lsp:              ip    maskLen;
    QoSFilter:        mask
********************************************************************/     
#include "stdio.h"    
#include "stdlib.h"
#include "protocol/h/exec_cmd.h"
#include "mplsmpue.h"
#include "mplsni.h"
#include "mplslsp.h"
#include "mplscmd.h"
#include "mx_ax_bx.h"
#include "mplspara.h"
#include "mplstype1.h"
#include "mplsevent.h"
/*#include "ldpmess.h"*/
#include "ldpstr.h"
#include "mbldpmes.h"
#include "feci.h"

/* loop detection macro */
#ifndef LOOPDETECT_NONE
#define LOOPDETECT_NONE										1
#endif
#ifndef LOOPDETECT_OTHER
#define LOOPDETECT_OTHER										2
#endif
#ifndef LOOPDETECT_HOPCOUNT
#define LOOPDETECT_HOPCOUNT									3
#endif
#ifndef LOOPDETECT_PATHVECTOR
#define LOOPDETECT_PATHVECTOR								4
#endif
#ifndef LOOPDETECT_HOPANDPV
#define LOOPDETECT_HOPANDPV									5
#endif

extern mplsPort_t          MplsPortDataTable1;
extern Stnetifdata         MplsNiDataTable;

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

extern unsigned short         currentLspId;
extern PID    mplsManagerOamPID;

FilterLspId_t  FilterNo[FILTER_MAX_NUM];
unsigned short         currentFilterNo;
mplsErLspTable_t		*curLsp;
mplsIfConf_t   mplsIfConf[MPLS_MAX_BOARD];

/*  FEC and MplsManage are combined into one process, so the 
    massage between them doesn't need transfer.
*/
/*  
extern HopLspSetDel_t      hopLspSetDelTable;
extern ErLspSetDel_t       erLspSetDelTable;
*/

extern mpls_SwitchAttribute	  Switcher;

extern int16 mplsLspIdCheck(ulong lspId);
extern unsigned short tranUlongMask2Len(ulong ipMask);
extern unsigned short mplsFecFilterListNoPtr(unsigned short listNo, uchar procesId, mplsFecFilterAll_t **Ptr);
extern int16 mplsFecFilterConfiguring(mplsFecFilterAll_t **Ptr, uchar c_action,fecFilterAddr_t addr,uchar cmdFlag);
extern int16 mplsFecFilterDelete(mplsFecFilterAll_t **Ptr);
extern void mplsLspSetDeteletSend(void **in,  uchar opertype, uchar   lsptype);
extern void mplsOamSetTimer(uchar module, uchar timerMsg,unsigned short time);

extern unsigned short IpAddrMaskLenMatching(ulong srcAddr,uchar srcLen,ulong dstAddr,uchar dstLen);
extern unsigned short IpAddrMaskMatching(ulong srcAddr,ulong srcMask,ulong dstAddr,ulong dstMask);
extern unsigned short mplsQosFilterNoGetPtr(unsigned short filterNo,QosMulitFieldFilter_t **Ptr);
extern unsigned short mplsQosFilterNoGetPtr_ex(ushort filterNo,QosMulitFieldFilter_t **Ptr);
extern unsigned short mplsQosCheckFilterNo(unsigned short filterNo);
extern short mplsQosFilterNoBindingAddorDelete(unsigned short filterNo,unsigned short lspNo, uchar operaType);
extern void mplsCRLspConfigSend(mplsErLspTable_t **ptr);
extern void mplsTafficDefSendAllEthi(uchar moduleNo); /* mplsfun.c */
extern void mplsDataDel(uchar module,uchar port,ushort ifIndex);
extern void mplsIpReset();
extern uchar    SwitchType;  /* _BGSCONF.officetype    in  _bgsconf.h
                                (UCHAR)'1' 49    骨 干 交 换 机 
                                (UCHAR)'2'      接 入 交 换 机?
                                (UCHAR)'3'      复 用 交 换 机? */
extern uchar    mplsOamLocalPlatformType;                                

/* internal function */
void mplsModuleParameterInit(); 

/* begin FEC filter */
mplsFecFilterAll_t               *mplsFecFilterHead, *mplsFecFilterPF, *mplsFecFilterPN;
mplsFecFilterAdvertiseLbls_t     mplsFecFilterAdvEntry;
/* end FEC filter */

QosMulitFieldFilter_t            *QoSFilterPF;

extern mplsOamTimer_t         mplsOamTimer;
mplsLspSetup_t                mplsLspSetupEntry;
extern mplsOAMLdpMessage_t  lspData;/* ctrAggredata;MessData; */

int16 mplsMibInitOneIf(uchar module,uchar port,unsigned short ifIndex,short is_no);
int16 mplsGetModulePortIfindexbyTableNo(unsigned short  tableNo);
void mplsDataIfConfAck(unsigned short eventType,PID *sPid,uchar opera);
void mplsDataEntityAck(unsigned short eventType,PID sPid,uchar opera);
void mplsEntityConfig(uchar module);
int16 mplsQosFilterDeleteCheck(unsigned short filterNo,QosMulitFieldFilter_t  **tempQosFilterPtr);

extern short mplsCRLspCheckCos(mplsErLspTable_t **ptr);
extern short mplsCRLspCheckCosTraffic(mplsErLspTable_t **ptr,short Type,ulong rate);
extern short mplsCRLspFrequencyCheck(mplsErLspTable_t *, uchar);
extern unsigned short tranUlongMask2Len(ulong ipMask);
extern unsigned char           aggr_enable;  
extern unsigned char           switch_router_id;
mplsLdpParam_t    mplsLdpParam;    /* setting data of LDP protocol sbp 2002-6-15 */

unsigned long  cur_lsp_num = 0;

extern PROTO_MEM_MGR          MPLS_OAM_MEM[MAX_OAM_UTIL_MEM_TYPES];
/*****************************************************************************************
 * FUNCTION NAME  : mplsLdpParamSend() 
 * DESCRIPTION:   : send data to ldp process when config ldp parameter                                                
 *  INPUT         : none
 *  AUTHOR/DATE   : sbp 2002-6-17  
 **********************************************************************/
int16 mplsLdpParamSend()
{
   PID        sendPid;
   
   GET_PID("LDPPROCESS",&sendPid);
   mplsDataIfConfAck(MPLS_LDP_OAM_MESSAGE,&sendPid,0);
   mplsDataEntityAck(MPLS_LDP_OAM_MESSAGE,sendPid,0);
      
   return MPLS_OAM_CMD_SUCCESS;
}

/*****************************************************************************************
 * FUNCTION NAME  : mplsLdpControlModeAggregateSend() 
 * DESCRIPTION:   : send data to ldp process when config ldp aggregate or control mode                                                 
 *  INPUT         : none
 *  AUTHOR/DATE   : sbp 2002-6-17  
 **********************************************************************/
int16 mplsLdpControlModeAggregateSend()
{
/*   mplsOAMLdpMessage_t  ctrAggredata;  */
   PID                  sendPid,tempPid;
   
   MPLS_MEMSET(&lspData,0,sizeof(mplsOAMLdpMessage_t));
   GET_PID("LDPPROCESS",&sendPid);
   SELF(&tempPid);
   sendPid.module = tempPid.module;
   lspData.msgtype = MPLS_CONTROL_MODE_AGGREGATE;
   lspData.mplsLdpOAMflag = 2;
   lspData.data.CtrAggrData.ctrmode   = mplsLdpParam.controlmode;
   lspData.data.CtrAggrData.aggregate = mplsLdpParam.aggregate;
   ASEND(MPLS_LDP_OAM_MESSAGE,&lspData,sizeof(LdpCtrModeAggregate_t)+sizeof(mplsLdpOAMMessage)+sizeof(uchar),sendPid);
      
   return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsLdpAggregate()	                            
 * DESCRIPTION:   : config ldp aggregate			    
 *  INPUT         : aggregate, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : mplsLdpParam								
/************************************************************************/
short mplsLdpAggregate(short is_no)
{
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	mplsLdpParam.aggregate       = 1;
    }
    else
    {
    	mplsLdpParam.aggregate       = 0;
    }
    aggr_enable = mplsLdpParam.aggregate;  
//    mplsLdpControlModeAggregateSend();
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsLdpAggregate()	                            
 * DESCRIPTION:   : config ldp aggregate			    
 *  INPUT         : aggregate, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : mplsLdpParam								
/************************************************************************/
short mplsLdpCtrMode(uchar ctrMode, short is_no)
{
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	mplsLdpParam.controlmode       = ctrMode;
    }
    else
    {
    	mplsLdpParam.controlmode       = 2;
    }
    
    mplsLdpControlModeAggregateSend();
    
    return MPLS_OAM_CMD_SUCCESS;
}

/************************************************************************
 * FUNCTION NAME  : mplsSessionHoldtimer()	                            
 * DESCRIPTION:   : config session hold time for ldp protocol			    
 *  INPUT         : time, is_no              				
 *  AUTHOR/DATE   : sbp 2002-6-15                                
 *  GLOBAL        : mplsLdpParam								
/************************************************************************/
short mplsSessionHoldtimer(ulong time, short is_no)
{
    if(is_no==MPLS_OAM_CMD_FLAG)
    {
    	mplsLdpParam.s_hold       = time;
	    mplsLdpParam.s_interval   = time/3;
    }
    else
    {
    	mplsLdpParam.s_hold       = 45;

⌨️ 快捷键说明

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