📄 ldpmib.c
字号:
#ifdef __BGS10_MPLS_DEBUG
if(peerAddr == MPLS_NULL)
printf("!!! In func_sess_peersearch2, search data is not exist");
#endif
#endif
break;
default:
break;
}
return peerAddr;
}
/* ******************************************************************** */
/* FUNCTION NAME : func_sess_peerdel( ) */
/* DESCRIPTION : search Dyanmic Data from mib */
/* INPUT : MIB_LDP_SESSION_PEERADDR_REQ *in, */
/* MIB_LDP_SESSION_PEERADDR_ACK *ack */
/* OUTPUT : No. */
/* AUTHOR/DATE : Shi.ZhaoHui / 2001.3.26 */
/* GLOBAL : none */
/* NOTE : .... */
/********************************************************************** */
sessionPeerAddr_t *func_sess_peerdel(MIB_LDP_SESSION_PEERADDR_REQ *in)
{
short i;
sessionPeerAddr_t *peerAddr = MPLS_NULL;
mplsOAMLdpMessage_t oamldpmess;
switch ( in -> req.del.indexFlag )
{
case 1 :
if(( in -> req.del.index < 0 )||( in -> req.del.index > mplsINDEX_MAX ) )
{
#ifdef DEBUG_LDP
#ifdef __BGS10_MPLS_DEBUG
printf("!!! In func_sess_peerdel1, helloIndex error.");
#endif
#endif
return MPLS_NULL;
}
for(i = 0; i < MPLSLDP_MAX; i++)
{
if((MplsLdpSessionPeerAddrEntry[i].RowStatus == VAL_RowStatus_active) &&
(MplsLdpSessionPeerAddrEntry[i].index == in -> req.del.index))
{
MplsLdpSessionPeerAddrEntry[i].RowStatus = VAL_RowStatus_null;
peerAddr = (sessionPeerAddr_t *)(&MplsLdpSessionPeerAddrEntry[i].index);
oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_PEERADDR ;
oamldpmess.data.ssnPeerAddrDataReq.operateType = 3;
/*oamldpmess.data.ssnPeerAddrDataReq.req.del.indexFlag = 1;
oamldpmess.data.ssnPeerAddrDataReq.req.del.index = in -> req.del.index;
MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
memcpy(&(oamldpmess.data.ssnPeerAddrDataReq.req.set),peerAddr,
sizeof(sessionPeerAddr_t));
/* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
mplsSessionPeerRecv(&oamldpmess); /* 2003-10-9 lixia add */
break;
}
}
#ifdef DEBUG_LDP
#ifdef __BGS10_MPLS_DEBUG
if(peerAddr == MPLS_NULL)
printf("!!! In func_sess_peerdel1, del data is not exist");
#endif
#endif
break;
case 2 :
for(i = 0; i < MPLSLDP_MAX; i++)
{
if((MplsLdpSessionPeerAddrEntry[i].RowStatus == VAL_RowStatus_active) &&
(MplsLdpSessionPeerAddrEntry[i].nextHopAddressType == in -> req.del.address.nextHopAddressType)&&
(MplsLdpSessionPeerAddrEntry[i].nextHopAddress == in -> req.del.address.nextHopAddress))
{
MplsLdpSessionPeerAddrEntry[i].RowStatus = VAL_RowStatus_null;
peerAddr = (sessionPeerAddr_t *)(&MplsLdpSessionPeerAddrEntry[i].index);
oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_PEERADDR ;
oamldpmess.data.ssnPeerAddrDataReq.operateType = 3;
/*oamldpmess.data.ssnPeerAddrDataReq.req.del.indexFlag = 2;
oamldpmess.data.ssnPeerAddrDataReq.req.del.address = in -> req.del.address;
MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
memcpy(&(oamldpmess.data.ssnPeerAddrDataReq.req.set),peerAddr,
sizeof(sessionPeerAddr_t));
/* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid); */
mplsSessionPeerRecv(&oamldpmess); /* 2003-10-9 lixia add */
break;
}
}
#ifdef DEBUG_LDP
#ifdef __BGS10_MPLS_DEBUG
if(peerAddr == MPLS_NULL)
printf("!!! In func_sess_peerdel2, del data is not exist");
#endif
#endif
break;
case 3 :
for(i = 0; i < MPLSLDP_MAX; i++)
{
if((MplsLdpSessionPeerAddrEntry[i].RowStatus == VAL_RowStatus_active) &&
(MplsLdpSessionPeerAddrEntry[i].sessionIndex == in -> req.del.sessionIndex))
{
MplsLdpSessionPeerAddrEntry[i].RowStatus = VAL_RowStatus_null;
peerAddr = (sessionPeerAddr_t *)(&MplsLdpSessionPeerAddrEntry[i].index);
oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_PEERADDR ;
oamldpmess.data.ssnPeerAddrDataReq.operateType = 3;
/*oamldpmess.data.ssnPeerAddrDataReq.req.del.indexFlag = 3;
oamldpmess.data.ssnPeerAddrDataReq.req.del.sessionIndex = in -> req.del.sessionIndex;
MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
memcpy(&(oamldpmess.data.ssnPeerAddrDataReq.req.set),peerAddr,
sizeof(sessionPeerAddr_t));
/* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
mplsSessionPeerRecv(&oamldpmess); /* 2003-10-9 lixia add */
/* del multiple address 02-7-18 */
}
}
#ifdef DEBUG_LDP
#ifdef __BGS10_MPLS_DEBUG
if(peerAddr == MPLS_NULL)
printf("!!! In func_sess_peerdel3, del data is not exist");
#endif
#endif
break;
default:
break;
}
return peerAddr;
}
/* ******************************************************************** */
/* FUNCTION NAME : processldpstats( ) */
/* DESCRIPTION : process ldp statistic data */
/* INPUT : unsigned long statstype, */
/* mplsLdpSession_t *session */
/* OUTPUT : No. */
/* AUTHOR/DATE : Shi.ZhaoHui / 2001.3.26 */
/* GLOBAL : none */
/* NOTE : .... */
/********************************************************************** */
void processldpstats (unsigned long statstype, mplsLdpSession_t *session)
{
short i, j, t = 0, existflag = 0;
mplsOAMLdpMessage_t oamldpmess;
if(!((statstype == UNKNOWNMSGTYP) && (statstype == UNKNOWNTLV)))
{
for(i = 0; i < MPLSLDP_MAX; i++)
{
if((MplsLdpEntityStatsEntry[i].RowStatus == VAL_RowStatus_active)&&
(MplsLdpEntityStatsEntry[i].entityLdpId.lsrAddress ==
session -> entityLdpId.lsrAddress) &&
(MplsLdpEntityStatsEntry[i].entityLdpId.labelSpace ==
session -> entityLdpId.labelSpace) &&
(MplsLdpEntityStatsEntry[i].peerLdpId.lsrAddress ==
session -> peerLdpId.lsrAddress) &&
(MplsLdpEntityStatsEntry[i].peerLdpId.labelSpace ==
session -> peerLdpId.labelSpace))
{
t = i;
existflag = 1;
break;
}
}
if(existflag == 0)/* find not, add new tuple */
{
for( j = 0; j < MPLSLDP_MAX; j++)
{
if(MplsLdpEntityStatsEntry[j].RowStatus == VAL_RowStatus_null)
{
MplsLdpEntityStatsEntry[j].RowStatus = VAL_RowStatus_active;
MplsLdpEntityStatsEntry[j].entityLdpId.lsrAddress =
session -> entityLdpId.lsrAddress;
MplsLdpEntityStatsEntry[j].entityLdpId.labelSpace =
session -> entityLdpId.labelSpace;
MplsLdpEntityStatsEntry[j].peerLdpId.lsrAddress =
session -> peerLdpId.lsrAddress;
MplsLdpEntityStatsEntry[j].peerLdpId.labelSpace =
session -> peerLdpId.labelSpace;
t = j;
break;
}
}
}
switch(statstype)
{
case SREJNOHELLO:
MplsLdpEntityStatsEntry[t].sessionrejectednohelloerrors++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case BADPDULEN:
MplsLdpEntityStatsEntry[t].badpdulengtherrros++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case BADLDPID:
MplsLdpEntityStatsEntry[t].badldpidentifiererrors++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case BADMSGLEN:
MplsLdpEntityStatsEntry[t].badmessagelengtherrors++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case BADTLVLEN:
MplsLdpEntityStatsEntry[t].badtlvlengtherrors++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case MALFORMTLVVAL:
MplsLdpEntityStatsEntry[t].malformedtlvvalueErrors++;
break;
case KEEPALTIMEEXP:
case HOLDTIMEEXP:
MplsLdpEntityStatsEntry[t].KeepAliveTimerExpiredErrors++;
break;
case SHUTDOWN_REC :
MplsLdpEntityStatsEntry[t].ShutdownNotifReceived++;
break;
case SHUTDOWN_SENT :
MplsLdpEntityStatsEntry[t].ShutdownNotifSent++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case SREJPARMLBLRNG:
MplsLdpEntityStatsEntry[t].sessionrejectedlabelrangeerrors++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case SREJPARMMPDUL:
MplsLdpEntityStatsEntry[t].sessionrejectedmaxpduerrors++;
MplsLdpEntityStatsEntry[t].attemptedsessions++;
break;
case SREJPARMADEVER:
MplsLdpEntityStatsEntry[t].sessionrejectedadvertisementerrors++;
break;
default : break;
}
MplsLdpEntityStatsEntry[t].ifIndex = session -> ifIndex;
oamldpmess.msgtype = MPLS_MIB_LDP_ENTITY_STATS ;
oamldpmess.mplsLdpOAMflag = 1;
oamldpmess.data.entityStatsData.num = 1;
memcpy(oamldpmess.data.entityStatsData.entity,(unsigned char *)&MplsLdpEntityStatsEntry[t]+1,
sizeof(struct_mplsLdpEntityStatsTable));
/* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(mplsLdpEntityStatsTable_t)
*oamldpmess.data.entityStatsData.num + sizeof(unsigned short)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
mplsEntityStatsRecv(&oamldpmess); /*2003-10-9 lixia add */
return;
}
for(i = 0; i < MPLSLDP_MAX; i++)
{
if((MplsLdpSessionStatsEntry[i].RowStatus == VAL_RowStatus_active)&&
(MplsLdpSessionStatsEntry[i].entityLdpId.lsrAddress ==
session -> entityLdpId.lsrAddress) &&
(MplsLdpSessionStatsEntry[i].entityLdpId.labelSpace ==
session -> entityLdpId.labelSpace) &&
(MplsLdpSessionStatsEntry[i].peerLdpId.lsrAddress ==
session -> peerLdpId.lsrAddress) &&
(MplsLdpSessionStatsEntry[i].peerLdpId.labelSpace ==
session -> peerLdpId.labelSpace))
{
t = i;
existflag = 1;
break;
}
}
if(existflag == 0) /* find not, add new tuple */
{
for( j = 0; j < MPLSLDP_MAX; j++)
{
if(MplsLdpSessionStatsEntry[j].RowStatus == VAL_RowStatus_null)
{
MplsLdpSessionStatsEntry[j].RowStatus = VAL_RowStatus_active;
MplsLdpSessionStatsEntry[j].entityLdpId.lsrAddress =
session -> entityLdpId.lsrAddress;
MplsLdpSessionStatsEntry[j].entityLdpId.labelSpace =
session -> entityLdpId.labelSpace;
MplsLdpSessionStatsEntry[j].peerLdpId.lsrAddress =
session -> peerLdpId.lsrAddress;
MplsLdpSessionStatsEntry[j].peerLdpId.labelSpace =
session -> peerLdpId.labelSpace;
t = j;
break;
}
}
}
switch(statstype)
{
case UNKNOWNMSGTYP:
MplsLdpSessionStatsEntry[t].unknownmessagetypeerrors++;
break;
case UNKNOWNTLV:
MplsLdpSessionStatsEntry[t].unknowntlverrors++;
break;
default : break;
}
MplsLdpSessionStatsEntry[t].ifIndex = session -> ifIndex;
oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_STATS ;
oamldpmess.mplsLdpOAMflag = 1;
oamldpmess.data.ssnStatsData.num = 1;
memcpy(oamldpmess.data.ssnStatsData.session,(unsigned char *)&MplsLdpSessionStatsEntry[t]+1,
sizeof(struct_mplsLdpSessionStatsTable));
/* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(mplsLdpSessionStatsTable_t)
*oamldpmess.data.ssnStatsData.num + sizeof(unsigned short)
+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
mplsSessionStatsRecv(&oamldpmess); /*2003-10-9 lixia add */
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -