📄 cmdfun.c
字号:
/********************************************************************
* 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 + -