📄 mplsshow.c
字号:
return;
}
/* cmd: show mpls ldp interface transport-address */
void showMplsLdpIntTransportAddr(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
switch(in->type)
{
case SHOW_PORT:
showMplsLdpIntTransportAddrPort(in, out);
break;
default:
showMplsLdpIntTransportAddrAll(in, out);
break;
}
return;
}
/************************************************************************************/
/* cmd: show mpls ldp atm label */
/************************************************************************************/
void showMplsLdpAtmLabelWrite(MIB_MPLSCONFIG_ACK *module, int j,
mpls_opr_data_t **pData, BYTE *rtnNum)
{
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = module->cardType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = module->module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = module->num;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = module->portData[j].port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = module->portData[j].ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = module->portData[j].speed;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = module->portData[j].atmInterfaceMaxActiveVciBits;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = module->portData[j].atmfAtmLayerMaxSvccVpi;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = module->portData[j].atmfAtmLayerMinSvccVci;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
/* cmd: show mpls ldp atm label interface <module no/port no> */
void showMplsLdpAtmLabelPortGet(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
int i, j;
ushort module, port;
BYTE rtnNum = 0;
ushort dataSize = 0;
mpls_opr_data_t *pData = out->Data;
module = ((in->inTypeData.port >> 16) & 0xFFFF);
port = in->inTypeData.port & 0xFFFF;
for(i = in->lastData[0]; i < MplsPortDataTable1.num; i++)
{
for(j = in->lastData[1]; j < MplsPortDataTable1.mplsModule[i].num; j++)
{
if(MplsPortDataTable1.mplsModule[i].module == module &&
MplsPortDataTable1.mplsModule[i].portData[j].port == port)
{
showMplsLdpAtmLabelWrite(&MplsPortDataTable1.mplsModule[i], j,
&pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_ATM_LABEL_SIZE)
{
out->RetCode = SUCC_CMD_NOT_FINISHED;
out->lastData[0] = i;
out->lastData[1] = j + 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 atm label */
void showMplsLdpAtmLabelAllGet(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
int i, j;
BYTE rtnNum = 0;
ushort dataSize = 0;
mpls_opr_data_t *pData = out->Data;
for(i = in->lastData[0]; i < MplsPortDataTable1.num; i++)
{
for(j = in->lastData[1]; j < MplsPortDataTable1.mplsModule[i].num; j++)
{
showMplsLdpAtmLabelWrite(&MplsPortDataTable1.mplsModule[i], j,
&pData, &rtnNum);
dataSize++;
if(dataSize >= MPLS_ATM_LABEL_SIZE)
{
out->RetCode = SUCC_CMD_NOT_FINISHED;
out->lastData[0] = i;
out->lastData[1] = j + 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 atm label */
void showMplsLdpAtmLabelGet(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
switch(in->type)
{
case SHOW_PORT:
showMplsLdpAtmLabelPortGet(in, out);
break;
default:
showMplsLdpAtmLabelAllGet(in, out);
break;
}
return;
}
/*********************************************************************************/
/* cmd: show mpls ldp binding */
/*********************************************************************************/
/*void showMplsLdpBindingsWrite1(mplsLdpFecEntry *binding, mpls_opr_data_t **pData,
BYTE *rtnNum)
{
int i;
// 该域为0,在取数据时没有设置
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = binding->ifIndex;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = binding->netaddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->mask.maskLen;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->localNum;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
for(i = 0; i < binding->localNum; i++)
{
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->localBinds[i].type;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
if(binding->localBinds[i].type == 1)
{
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = binding->localBinds[i].label.atm.vpi;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = binding->localBinds[i].label.atm.vci;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
else if(binding->localBinds[i].type == 2)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = binding->localBinds[i].label.label;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
else
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = 0;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
}
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->remoteNum;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
for(i = 0; i < binding->remoteNum; i++)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = binding->remoteBinds[i].LsrId.lsrAddress;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = binding->remoteBinds[i].LsrId.labelSpace;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->remoteBinds[i].label.type;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
if(binding->remoteBinds[i].label.type == 1)
{
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = binding->remoteBinds[i].label.label.atm.vpi;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = binding->remoteBinds[i].label.label.atm.vci;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
else if(binding->localBinds[i].type == 2)
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = binding->remoteBinds[i].label.label.label;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
else
{
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = 0;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}
}
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->adminStatus;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->ifName.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->ifName.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = binding->ifName.lsrType;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
}*/
void showMplsLdpBindingsWrite(mplsLdpFecEntry *fecEntry, mpls_opr_data_t **pData,
BYTE *rtnNum)
{
int i, localnum = 0, remotenum = 0;
mplsLdpLspCB *lspCB ;
mplsLdpDownCB *downCB;
lspCB = NULL;
downCB = NULL;
lspCB = fecEntry->lsp_cb_list.first;
while(lspCB)
{
localnum++;
remotenum++;
lspCB = lspCB->next;
}
downCB = fecEntry->down_cb_list.first;
while(downCB)
{
remotenum++;
downCB = downCB->next;
}
if(fecEntry->owner & MPLS_OWNER_ROUTE)
{
localnum++;
localnum|=0x80;
}
/* 该域为0,在取数据时没有设置 */
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = 0;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_DWORD;
(*pData)->Len = 4;
*(DWORD *)(*pData)->Data = fecEntry->fec_key.mplsFecAddr;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = fecEntry->fec_key.mplsLdpFecAddrLen;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = localnum;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
/* local binding in lspCb */
lspCB = fecEntry->lsp_cb_list.first;
while(lspCB)
{
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = 1;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = lspCB->upAtmLabel.module;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_BYTE;
(*pData)->Len = 1;
*(BYTE *)(*pData)->Data = lspCB->upAtmLabel.port;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->Len = 2;
*(WORD *)(*pData)->Data = lspCB->upAtmLabel.vpi;
*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
(*rtnNum)++;
(*pData)->Type = DATA_TYPE_WORD;
(*pData)->L
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -