📄 mplsshow.c
字号:
for(i = 0; i < sessTable->helloArrayNum; i++)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sessTable->helloArray[i];
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sessTable->tcpConRetry;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sessTable->tmidCon;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sessTable->connect.localPort;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sessTable->connect.peerPort;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sessTable->connect.localAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = sessTable->connect.peerAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = sessTable->ifName.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = sessTable->ifName.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE*)(*pData)->Data = sessTable->ifName.lsrType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = sessTable->ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
/* cmd: show mpls ldp session address <A.B.C.D> */
void showMplsLdpSessionAddr(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[NOSESSION]; i++)
{
if(mplsLdpSessionEntry[i].peerLdpId.lsrAddress == in->inTypeData.addr)
{
showMplsLdpSessionWrite(&mplsLdpSessionEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_SESS_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 interface <module no/port no> */
void showMplsLdpSessionPort(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[NOSESSION]; i++)
{
if(mplsLdpSessionEntry[i].ifName.module == module &&
mplsLdpSessionEntry[i].ifName.port == port)
{
showMplsLdpSessionWrite(&mplsLdpSessionEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_SESS_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 */
void showMplsLdpSessionAll(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[NOSESSION]; i++)
{
showMplsLdpSessionWrite(&mplsLdpSessionEntry[i], &pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_SESS_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 */
void showMplsLdpSession(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
switch(in->type)
{
case SHOW_IPADDR:
showMplsLdpSessionAddr(in, out);
break;
case SHOW_PORT:
showMplsLdpSessionPort(in, out);
break;
default:
showMplsLdpSessionAll(in, out);
break;
}
return;
}
/***************************************************************************************/
/* cmd: show mpls ldp peer */
/***************************************************************************************/
void showMplsLdpPeerWrite(mplsLdpPeerTable_t *peer, mpls_opr_data_t **pData, BYTE *rtnNum)
{
int i;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->entityLdpId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->entityLdpId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->entityindex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->peerLdpId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->peerLdpId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->peerlabeldistributionmethod;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->peerloopdetectionforpv;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->peerpathvectorlimit;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->downstream;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->PIEsSent;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->PIEsRcvd;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->connect.localPort;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->connect.peerPort;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->connect.localAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->connect.peerAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->state;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->oldtime;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->addrSrcNum;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
for(i = 0; i < peer->addrSrcNum; i++)
{
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->AddressSources[i].sources;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->AddressSources[i].address;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->ldpIdentNum;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
for(i = 0; i < peer->ldpIdentNum; i++)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = peer->LdpIdent[i];
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->ifName.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->ifName.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = peer->ifName.lsrType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = peer->ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
/* cmd: show mpls ldp peer address <A.B.C.D> */
void showMplsLdpPeerAddr(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++)
{
if(mplsLdpPeerEntry[i].peerLdpId.lsrAddress == in->inTypeData.addr)
{
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 interface <module no/port no> */
void showMplsLdpPeerPort(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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -