📄 mplsfunc.c
字号:
/************************************************************************
* FUNCTION NAME : mplsSesStateDataTupleDel()
* DESCRIPTION: : delete mpls ldp session state
* AUTHOR/DATE : sbp 2002-12-24
/************************************************************************/
void mplsSesStateDataTupleDel(mplsLdpSessionStatsTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(mplsLdpEntityStatsTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsTransPortDataTupleDel()
* DESCRIPTION: : delete mpls ldp trans port address
* AUTHOR/DATE : sbp 2002-12-24
/************************************************************************/
void mplsTransPortDataTupleDel(if_transport_table_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(mplsLdpEntityStatsTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsEntityStateDataTupleDel()
* DESCRIPTION: : delete mpls ldp entity states data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : sbp 2002-11-14
* GLOBAL :
* NOTE : ..
/************************************************************************/
void mplsEntityStateDataTupleDel(mplsLdpEntityStatsTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(mplsLdpEntityStatsTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsAtmLabelDataTupleDel()
* DESCRIPTION: : delete atm label data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
void mplsAtmLabelDataTupleDel(MplsLdpEntityConfAtmLabelRangeTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(MplsLdpEntityConfAtmLabelRangeTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsAtmParaDataTupleDel()
* DESCRIPTION: : delete atm parameter table data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
void mplsAtmParaDataTupleDel(MplsLdpEntityAtmParamsTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(MplsLdpEntityAtmParamsTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsGenericDataTupleDel()
* DESCRIPTION: : delete general label table data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
void mplsGenericDataTupleDel(MplsLdpEntityConfGenericLabelRangeTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(MplsLdpEntityConfGenericLabelRangeTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsInterfaceDataTupleDel()
* DESCRIPTION: : delete interface table data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
void mplsInterfaceDataTupleDel(MplsInterfaceConfTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{
if(array[num].ifIndex==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(MplsInterfaceConfTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsTrafficDataTupleDel()
* DESCRIPTION: : delete traffic table data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
void mplsTrafficDataTupleDel(MplsTrafficParamTable_t *array,ushort ArrayNo,uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
for(num=0; num<arrayLen[ArrayNo]; num++)
{ /* sbp 2002-12-24 */
if(array[num].index==ifIndex && array[num].ifName.module==module)
{
for(num1=num; num1<arrayLen[ArrayNo]-1; num1++)
{
array[num1]=array[num1+1];
}
memset(&array[num1],0,sizeof(MplsTrafficParamTable_t)); /* 150 估计 略大 */
arrayLen[ArrayNo]--;
break;
}
}
}
/************************************************************************
* FUNCTION NAME : mplsDataDel()
* DESCRIPTION: : delete mpls data
* INPUT : array,ArrayNo module port ifIndex
* OUTPUT :
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
* sbp 2002-11-14 delete ldp entity stats table
* sbp 2002-12-25 data online
/************************************************************************/
void mplsDataDel(uchar module,uchar port,ushort ifIndex)
{
ushort num,num1;
MplsLdpEntityTable_t *entity;
MplsLdpEntityConfAtmLabelRangeTable_t *atmLabel;
MplsLdpEntityAtmParamsTable_t *atmPara;
MplsLdpEntityConfGenericLabelRangeTable_t *genericLabel;
MplsInterfaceConfTable_t *interface;
MplsTrafficParamTable_t *traffic;
mplsLdpEntityStatsTable_t *entityState;
if_transport_table_t *transPort; /* sbp 2002-12-24 online */
mplsLdpSessionStatsTable_t *sesState;
mplsldpparamtable_t *param;
entity = mplsLdpEntityEntry;
atmLabel = mplsLdpEntityConfAtmLabelRangeEntry;
atmPara = mplsLdpEntityAtmParamsEntry;
genericLabel = mplsLdpEntityConfGenericLabelRangeEntry;
interface = mplsInterfaceConfEntry;
traffic = mplsTrafficParamEntry;
entityState = mplsLdpEntityStatsEntry;
transPort = mplsIfTransportAddressEntry;
sesState = mplsLdpSessionStatsEntry;
param = mplsLdpEntityParamEntry;
mplsMibInitIfDefaultSend(module,port,ifIndex,MPLS_OAM_CMD_FLAG_NO);
mplsEntityDataTupleDel(entity,NOENTITY,module,port,ifIndex);
mplsAtmLabelDataTupleDel(atmLabel,NOATMLABEL,module,port,ifIndex);
mplsAtmParaDataTupleDel(atmPara,NOATMPARA,module,port,ifIndex);
mplsGenericDataTupleDel(genericLabel,NOGENlABEL,module,port,ifIndex);
mplsInterfaceDataTupleDel(interface,NOIFCONF,module,port,ifIndex);
mplsTrafficDataTupleDel(traffic,NOTRAFP,module,port,ifIndex);
mplsEntityStateDataTupleDel(entityState,NOENTITYSTATS,module,port,ifIndex);
/* sbp 2002-12-24 online */
mplsTransPortDataTupleDel(transPort,NOTRANSADDR,module,port,ifIndex);
mplsSesStateDataTupleDel(sesState,NOSESTATS,module,port,ifIndex);
mplsParamDataTupleDel(param,NOENTIPARAM,module,port,ifIndex);
}
/************************************************************************
* FUNCTION NAME : mplsLspNoAddLsp()
* DESCRIPTION: : add lsp by lsp No
* INPUT : lspNo LspPtr LspType
* OUTPUT : LspPtr,success or fail message
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
int16 mplsLspNoAddLsp(ulong **LspPtr,uchar LspType)
{
mplsErLspTable_t *lspPtr;
if(LspType==MPLS_CR_LSP_TYPE)
{
MPLS_MEM_ALLOC(lspPtr,(mplsErLspTable_t *),sizeof(mplsErLspTable_t),MPLS_OAM_MEM[IUMEM_OAM_TUNNEL]);
if(!lspPtr)
return MPLS_MEMERY_ALLOCAT_ERROR;
memset(lspPtr, 0x0, sizeof(mplsErLspTable_t));
MPLS_AVL_INIT_NODE(lspPtr->lsp_node, lspPtr, &lspPtr->lsp_key);
lspPtr->flag = LSP_FLAG_SETUP_OK;
lspPtr->traffic.ErlspFlag = 0;
lspPtr->preempt.ErlspSetPrio = 4; /* 设置优先级的默认值 */
lspPtr->preempt.ErlspHoldPrio = 4;
lspPtr->ErlspWcElemExists = ERLSP_WC_ELEM_NO_EXIT;
lspPtr->ErlspFecElemType = ELEM_TYPE_ER_LSP_FEC;
lspPtr->ErlspLooseRouteChange = ER_ROUTE_NOT_CHANGE;
MPLS_AVL_INSERT(lspConfigTree, lspPtr->lsp_node);
*LspPtr = (ulong *)lspPtr;
return MPLS_SDP_CMD_SUCCESS;
}
return MPLS_LSP_TYPE_ERROR;
}
/************************************************************************
* FUNCTION NAME : mplsLspNoDelLsp()
* DESCRIPTION: : delete lsp by lsp No
* INPUT : lspNo LspType
* OUTPUT : success or fail message
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL :
* NOTE : ..
/************************************************************************/
int16 mplsLspNoDelLsp(LSP_KEY *lsp_key, uchar LspType)
{
mplsErLspTable_t *lsp;
lsp = (mplsErLspTable_t *)MPLS_AVL_FIND(lspConfigTree, lsp_key);
if(!lsp)
return MPLS_NOT_FIND_LSP_ON_LSPNO;
if(MPLS_AVL_IN_TREE(lsp->lsp_node))
{
MPLS_AVL_DELETE(lspConfigTree, lsp->lsp_node);
MPLS_MEM_FREE(lsp, MPLS_OAM_MEM[IUMEM_OAM_TUNNEL]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -