📄 mplsshow.c
字号:
port = in->inTypeData.port & 0xFFFF;
for(i = in->lastData[0]; i < arrayLen[NOPEER]; i++)
{
if(mplsLdpPeerEntry[i].ifName.module == module &&
mplsLdpPeerEntry[i].ifName.port == port)
{
showMplsLdpPeerWrite(&mplsLdpPeerEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_PEER_TABLE_SIZE)
{
out->RetCode = SUCC_CMD_NOT_FINISHED;
out->lastData[0] = i + 1;
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
}
}
if(!dataSize)
out->RetCode = SUCC_AND_NOPARA;
else
out->RetCode = SUCC_AND_HAVEPARA;
memset(out->lastData, 0, sizeof(out->lastData));
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
/* cmd: show mpls ldp peer */
void showMplsLdpPeerAll(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
int i;
BYTE rtnNum = 0;
ushort dataSize = 0;
mpls_opr_data_t *pData = out->Data;
for(i = in->lastData[0]; i < arrayLen[NOPEER]; i++)
{
showMplsLdpPeerWrite(&mplsLdpPeerEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_PEER_TABLE_SIZE)
{
out->RetCode = SUCC_CMD_NOT_FINISHED;
out->lastData[0] = i + 1;
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
}
if(!dataSize)
out->RetCode = SUCC_AND_NOPARA;
else
out->RetCode = SUCC_AND_HAVEPARA;
memset(out->lastData, 0, sizeof(out->lastData));
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
/* cmd: show mpls ldp peer */
void showMplsLdpPeer(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
switch(in->type)
{
case SHOW_IPADDR:
showMplsLdpPeerAddr(in, out);
break;
case SHOW_PORT:
showMplsLdpPeerPort(in, out);
break;
default:
showMplsLdpPeerAll(in, out);
break;
}
return;
}
/**********************************************************************************/
/* cmd: show mpls ldp parameter */
/**********************************************************************************/
void showMplsLdpParam(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
BYTE rtnNum = 0;
mpls_opr_data_t *pData = out->Data;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.mplsEnable;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.protocolversion;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_WORD;
pData->Len = 2;
*(WORD *)pData->Data = mplsLdpParam.minLabel;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_WORD;
pData->Len = 2;
*(WORD *)pData->Data = mplsLdpParam.maxLabel;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_DWORD;
pData->Len = 4;
*(DWORD *)pData->Data = mplsLdpParam.s_hold;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_DWORD;
pData->Len = 4;
*(DWORD *)pData->Data = mplsLdpParam.s_interval;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_DWORD;
pData->Len = 4;
*(DWORD *)pData->Data = mplsLdpParam.h_hold;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_DWORD;
pData->Len = 4;
*(DWORD *)pData->Data = mplsLdpParam.h_interval;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_DWORD;
pData->Len = 4;
*(DWORD *)pData->Data = mplsLdpParam.t_h_hold;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_DWORD;
pData->Len = 4;
*(DWORD *)pData->Data = mplsLdpParam.t_h_interval;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.loopdetection;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.maxhopcount;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.pvlimit;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.controlmode;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
pData->Type = DATA_TYPE_BYTE;
pData->Len = 1;
*(BYTE *)pData->Data = mplsLdpParam.aggregate;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
rtnNum++;
out->RetCode = SUCC_AND_HAVEPARA;
memset(out->lastData, 0, sizeof(out->lastData));
out->CmdRestartFlag = 1;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
/**********************************************************************************/
/* cmd: show mpls ldp entity stats */
/**********************************************************************************/
void showMplsLdpEntityStatsWrite(mplsLdpEntityStatsTable_t *entity,
mpls_opr_data_t **pData, BYTE *rtnNum)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->entityLdpId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = entity->entityLdpId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->peerLdpId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = entity->peerLdpId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->entityindex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->attemptedsessions;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->sessionrejectednohelloerrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->sessionrejectedadvertisementerrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->sessionrejectedmaxpduerrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->sessionrejectedlabelrangeerrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->badldpidentifiererrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->badpdulengtherrros;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->badmessagelengtherrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->badtlvlengtherrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->malformedtlvvalueErrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->KeepAliveTimerExpiredErrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->ShutdownNotifReceived;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->ShutdownNotifSent;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = entity->ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = entity->ifName.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = entity->ifName.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = entity->ifName.lsrType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = entity->IpAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
/* cmd: show mpls ldp entity stats address <A.B.C.D> */
void showMplsLdpEntityStatsAddr(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
int i;
BYTE rtnNum = 0;
ushort dataSize = 0;
mpls_opr_data_t *pData = out->Data;
for(i = in->lastData[0]; i < arrayLen[NOENTITYSTATS]; i++)
{
if(mplsLdpEntityStatsEntry[i].peerLdpId.lsrAddress == in->inTypeData.addr)
{
showMplsLdpEntityStatsWrite(&mplsLdpEntityStatsEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_ENTITY_TABLE_SIZE)
{
out->RetCode = SUCC_CMD_NOT_FINISHED;
out->lastData[0] = i + 1;
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
}
}
if(!dataSize)
out->RetCode = SUCC_AND_NOPARA;
else
out->RetCode = SUCC_AND_HAVEPARA;
memset(out->lastData, 0, sizeof(out->lastData));
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
/* cmd: show mpls ldp entity stats interface <module no/port no> */
void showMplsLdpEntityStatsPort(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
int i;
BYTE rtnNum = 0;
ushort dataSize = 0;
mpls_opr_data_t *pData = out->Data;
ushort module, port;
module = ((in->inTypeData.port >> 16) & 0xFFFF);
port = in->inTypeData.port & 0xFFFF;
for(i = in->lastData[0]; i < arrayLen[NOENTITYSTATS]; i++)
{
if(mplsLdpEntityStatsEntry[i].ifName.module == module &&
mplsLdpEntityStatsEntry[i].ifName.port == port)
{
showMplsLdpEntityStatsWrite(&mplsLdpEntityStatsEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_ENTITY_TABLE_SIZE)
{
out->RetCode = SUCC_CMD_NOT_FINISHED;
out->lastData[0] = i + 1;
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
}
}
if(!dataSize)
out->RetCode = SUCC_AND_NOPARA;
else
out->RetCode = SUCC_AND_HAVEPARA;
memset(out->lastData, 0, sizeof(out->lastData));
out->CmdRestartFlag = in->CmdRestartFlag;
out->DataNum = rtnNum;
out->DataLen = (WORD)((int)pData - (int)out->Data);
return;
}
/* cmd: show mpls ldp entity stats */
void showMplsLdpEntityStatsAll(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
int i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -