⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mplsfunc.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
/************************************************************************
 * 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 + -