📄 shcmd.c
字号:
downCB = t_downCb;
}
mplsLibEntry[m].localBinds[mplsLibEntry[m].localNum].type = 2;
mplsLibEntry[m].localBinds[mplsLibEntry[m].localNum].label.label =
fecEntry->localGenLabel;
mplsLibEntry[m].localNum++;
m++;
}
arrayLen[NOLIB] = m;*/
memset(pBinding, 0x0, sizeof(pBinding));
memset(&mplsBindingTable,0,sizeof(mplsEppcShLibTbl_t));
indexEppc = *(mplsEppcShIndex_t *)data;
indexOam.type = indexEppc.type;
for(i=0; i<32; i++)
indexOam.lastData[i] = indexEppc.lastData[i];
indexOam.CmdRestartFlag = indexEppc.CmdRestartFlag;
indexOam.inTypeData.addr = indexEppc.inTypeData.addr;
showMplsLdpBindings(&indexOam, pBinding);
mplsBindingTable.retCode = pBinding->RetCode;
for(i=0; i<32; i++)
mplsBindingTable.lastData[i] = pBinding->lastData[i];
i=0;
pData = pBinding->Data;
end_of_data = (unsigned char *)pData + pBinding->DataLen;
while((unsigned char *)pData < end_of_data)
{
mplsBindingTable.LibTbl[i].ifIndex = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].netaddr = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].netmask = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].localNum = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
localnum = mplsBindingTable.LibTbl[i].localNum;
localnum &=0x7f;
for(j = 0; j < localnum; j++)
{
mplsBindingTable.LibTbl[i].localBinds[j].type = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
if(mplsBindingTable.LibTbl[i].localBinds[j].type == 2)
{
mplsBindingTable.LibTbl[i].localBinds[j].label.label = *(unsigned long*)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else if(mplsBindingTable.LibTbl[i].localBinds[j].type == 1)
{
mplsBindingTable.LibTbl[i].localBinds[j].label.atm.module = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].localBinds[j].label.atm.port = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].localBinds[j].label.atm.vpi = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].localBinds[j].label.atm.vci = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else
{
mplsBindingTable.LibTbl[i].localBinds[j].label.label = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
}
mplsBindingTable.LibTbl[i].remoteNum = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
for(j = 0; j < mplsBindingTable.LibTbl[i].remoteNum; j++)
{
mplsBindingTable.LibTbl[i].remoteBinds[j].LsrId.lsrAddress = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].remoteBinds[j].LsrId.labelSpace = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].remoteBinds[j].label.type = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
if(mplsBindingTable.LibTbl[i].remoteBinds[j].label.type == 2)
{
mplsBindingTable.LibTbl[i].remoteBinds[j].label.label.label = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else if(mplsBindingTable.LibTbl[i].remoteBinds[j].label.type == 1)
{
mplsBindingTable.LibTbl[i].remoteBinds[j].label.label.atm.module = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].remoteBinds[j].label.label.atm.port = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].remoteBinds[j].label.label.atm.vpi = *(unsigned short*)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].remoteBinds[j].label.label.atm.vci = *(unsigned short*)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else
{
mplsBindingTable.LibTbl[i].remoteBinds[j].label.label.label = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
}
mplsBindingTable.LibTbl[i].adminStatus = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].ifName.module = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].ifName.port = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsBindingTable.LibTbl[i].ifName.lsrType = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
i++;
}
mplsBindingTable.num = i;
accboard_reqagt_send(MPLS_EPPC_LIB_CMD, (UCHAR *)&mplsBindingTable,
(unsigned short)(18*sizeof(unsigned short)+sizeof(mplsEppcLibTbl_t)*mplsBindingTable.num), extra, telnum);
return;
}
/****************************************************************************/
/* FUNCTION NAME :show_mpls_forward_table()
/* DESCRIPTION: :search forward table and send them to AGENT IN A076
/* INPUT :data: index type and command type(first, ....),
/* LEN : not use
/* extra: whether print remark for the entry
/* telnum: telnet No.
/* OUTPUT :void
/* AUTHOR/DATE :gao xiaoqing 2002-7-6
/* NOTE :....
/****************************************************************************/
void show_mpls_forward_table(unsigned char *data, unsigned short len,unsigned short extra, unsigned short telnum)
{
unsigned short i,j;
unsigned char *end_of_data;
mplsEppcShIndex_t indexEppc;
mpls_sh_data_t indexOam;
mplsEppcShFwdTbl_t mplsFwdTable;
mpls_opr_data_t *pData;
memset( pFwdtemp, 0x0, sizeof(pFwdtemp));
memset(&mplsFwdTable,0,sizeof(mplsEppcFwdTbl_t));
indexEppc = *(mplsEppcShIndex_t *)data;
indexOam.type = indexEppc.type;
for(i=0; i<32; i++)
indexOam.lastData[i] = indexEppc.lastData[i];
indexOam.CmdRestartFlag = indexEppc.CmdRestartFlag;
indexOam.CmdRestartFlag = indexEppc.CmdRestartFlag;
indexOam.inTypeData.addr = indexEppc.inTypeData.addr;
showMplsForwardTable(&indexOam, pFwdtemp);
mplsFwdTable.retCode = pFwdtemp->RetCode;
for(i=0; i<32; i++)
mplsFwdTable.lastData[i] = pFwdtemp->lastData[i];
i=0;
pData = pFwdtemp->Data;
end_of_data = (unsigned char *)pData + pFwdtemp->DataLen;
while((unsigned char *)pData < end_of_data)
{
mplsFwdTable.mplsFwd[i].ifIndex = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].localLabel.type = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
if(mplsFwdTable.mplsFwd[i].localLabel.type==2)
{
mplsFwdTable.mplsFwd[i].localLabel.label.label = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else if(mplsFwdTable.mplsFwd[i].localLabel.type==1)
{
mplsFwdTable.mplsFwd[i].localLabel.label.atm.vpi = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].localLabel.label.atm.vci = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else
{
mplsFwdTable.mplsFwd[i].localLabel.label.label = (unsigned long)0;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
mplsFwdTable.mplsFwd[i].remoteNum = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
for(j=0; j<mplsFwdTable.mplsFwd[i].remoteNum; j++)
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.type = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
if(mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.type==1)
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.lspId.lsrAddress = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.lspId.labelSpace = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else if(mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.type==2)
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.destAddr.netaddr = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
/*mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.destAddr.maskType = *(unsigned char *)pData->Data;*/
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
/*if(mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.destAddr.maskType == 1)
{*/
mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.destAddr.netmask = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
/* }
else
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].prefixLspId.prefixOrLspid.destAddr.mask.maskLen = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}*/
}
mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.type = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
if(mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.type==1)
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.label.label = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else if(mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.type==2)
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.label.atm.vpi = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.label.atm.vci = *(unsigned short *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
else
{
mplsFwdTable.mplsFwd[i].remoteBinds[j].remoteBinds.label.label = (unsigned long)0;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
mplsFwdTable.mplsFwd[i].remoteBinds[j].bytes = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].remoteBinds[j].nextHop = *(unsigned long *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].remoteBinds[j].outIf.module = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].remoteBinds[j].outIf.port = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
mplsFwdTable.mplsFwd[i].remoteBinds[j].outIf.lsrType = *(unsigned char *)pData->Data;
pData = (mpls_opr_data_t *)(pData->Data + pData->Len);
}
i++;
}
mplsFwdTable.num = i;
extra = EXTRA_NULL;
accboard_reqagt_send(MPLS_EPPC_FWD_CMD, (UCHAR *)&mplsFwdTable,
(unsigned short)(18*sizeof(unsigned short)+sizeof(mplsEppcFwdTbl_t)*mplsFwdTable.num), extra, telnum);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -