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