📄 mplsshow.c
字号:
BYTE rtnNum = 0;
ushort dataSize = 0;
mpls_opr_data_t *pData = out->Data;
for(i = in->lastData[0]; i < arrayLen[NOENTITYSTATS]; i++)
{
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 showMplsLdpEntityStats(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
switch(in->type)
{
case SHOW_IPADDR:
showMplsLdpEntityStatsAddr(in, out);
break;
case SHOW_PORT:
showMplsLdpEntityStatsPort(in, out);
break;
default:
showMplsLdpEntityStatsAll(in, out);
break;
}
return;
}
/************************************************************************************/
/* cmd: show mpls ldp session stats */
/************************************************************************************/
void showMplsLdpSessStatsWrite(mplsLdpSessionStatsTable_t *sess,
mpls_opr_data_t **pData, BYTE *rtnNum)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->entityLdpId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sess->entityLdpId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->peerLdpId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sess->peerLdpId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->index;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->unknownmessagetypeerrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->unknowntlverrors;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sess->ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sess->connect.localPort;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sess->connect.peerPort;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->connect.localAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sess->connect.peerAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = sess->ifName.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = sess->ifName.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = sess->ifName.lsrType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
/* cmd: show mpls ldp session stats address <A.B.C.D> */
void showMplsLdpSessStatsAddr(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[NOSESTATS]; i++)
{
if(mplsLdpSessionStatsEntry[i].entityLdpId.lsrAddress == in->inTypeData.addr)
{
showMplsLdpSessStatsWrite(&mplsLdpSessionStatsEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_SESS_STATS_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 session stats interface <module no/port no> */
void showMplsLdpSessStatsPort(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[NOSESTATS]; i++)
{
if(mplsLdpSessionStatsEntry[i].ifName.module == module &&
mplsLdpSessionStatsEntry[i].ifName.port == port)
{
showMplsLdpSessStatsWrite(&mplsLdpSessionStatsEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_SESS_STATS_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 session stats */
void showMplsLdpSessStatsAll(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[NOSESTATS]; i++)
{
showMplsLdpSessStatsWrite(&mplsLdpSessionStatsEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_SESS_STATS_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 session stats */
void showMplsLdpSessionStats(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
switch(in->type)
{
case SHOW_IPADDR:
showMplsLdpSessStatsAddr(in, out);
break;
case SHOW_PORT:
showMplsLdpSessStatsPort(in, out);
break;
default:
showMplsLdpSessStatsAll(in, out);
break;
}
return;
}
/*************************************************************************************/
/* cmd: show mpls ldp interface transport */
/*************************************************************************************/
void showMplsLdpIntTransportAddrWrite(if_transport_table_t *ifTrans,
mpls_opr_data_t **pData, BYTE *rtnNum)
{
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = ifTrans->rowStatus;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = ifTrans->ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = ifTrans->ifType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = ifTrans->ifIpAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = ifTrans->ifNet;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = ifTrans->ifMask;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = ifTrans->ifBrdcstAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = ifTrans->ifName.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = ifTrans->ifName.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = ifTrans->ifName.lsrType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
/* cmd: show mpls ldp interface transport interface <module no/port no> */
void showMplsLdpIntTransportAddrPort(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[NOTRANSADDR]; i++)
{
if(mplsIfTransportAddressEntry[i].ifName.module == module &&
mplsIfTransportAddressEntry[i].ifName.port == port)
{
showMplsLdpIntTransportAddrWrite(&mplsIfTransportAddressEntry[i],
&pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_INT_TRANSPORT_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 interface transport */
void showMplsLdpIntTransportAddrAll(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[NOTRANSADDR]; i++)
{
showMplsLdpIntTransportAddrWrite(&mplsIfTransportAddressEntry[i],
&pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_INT_TRANSPORT_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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -