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