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

📄 mplsfun.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
       }
   }
  }
   
   if(numFnd==0)
   {
       ifIndex = PORTNOTEXIST;
   }
   
   MPIfIndex.module  = module;
   MPIfIndex.port    = port;
   MPIfIndex.ifIndex = ifIndex;
   
   return MPIfIndex;   
} 

void mplsIpReset()
{
	int  rtnCode;
	if(mplsIpIf.timeId!=0)
	   MPLS_CLEAR_TIMER(mplsIpIf.timeId, mpls_oam_timer_q, rtnCode);
    MPLS_SET_TIMER(10, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
    mplsIpSetTimes = 1;
}

void mplsIPFunc(mplsIpIf_name_t *mIpIf)
{
	unsigned char  search_once=0;
	modulePortIfIndex_t  ifMPif;
	
	if(mplsIpIf.module==0 &&mplsIpIf.port==0)
	{
		if(mplsOamLocalPlatformType==MPLS_OAM_PLATFORM_M1000)
       {
           mplsIpIf.module=0;
           mplsIpIf.port=1;
       }
       else
       {
           mplsIpIf.module=1;
           mplsIpIf.port=1;
       }
	    MPLS_SET_TIMER(100, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	    return;
	}
	
	for(;search_once<1;)
	{
	    while(mplsIpIf.module<=MPLS_MAX_BOARD)
	    {
	        while(mplsIpIf.port<=MPLS_MAX_PORT)
	        {
	        	if(mplsOamLocalPlatformType==MPLS_OAM_PLATFORM_M1000)
                {
                	if(mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen&MPLS_IP)
                	{
                		if(mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen&EN_MPLS_IP)
                		{
                		    if((mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen&MPLS_TRANS_ADDR)
                		       &&(!(mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen&EN_MPLS_TRANS_ADDR)))
                		       {
                		           ifMPif = mplsIpGetModulePortIfIndex(mplsIpIf.module,mplsIpIf.port);
                			       if(ifMPif.ifIndex!=PORTNOTEXIST)
                		           {
                		                mplsLdpdisTransAddr(mplsIpIf.module,mplsIpIf.port,ifMPif.ifIndex,
                		                 mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].TransPortAddr,1);
                		                mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen |=EN_MPLS_TRANS_ADDR;
                		           }
                		       }
                		    mplsIpIf.port++;
                		}
                		else
                		{
                			ifMPif = mplsIpGetModulePortIfIndex(mplsIpIf.module,mplsIpIf.port);
                			if(ifMPif.ifIndex!=PORTNOTEXIST)
                			{
                				mplsMibInitOneIf(ifMPif.module,ifMPif.port,ifMPif.ifIndex,1);
                			    if(mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen&MPLS_TRANS_ADDR)
                		        {
                		             mplsLdpdisTransAddr_ex(mplsIpIf.module,mplsIpIf.port,ifMPif.ifIndex,
                		                 mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].TransPortAddr);
                		             mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen|=EN_MPLS_TRANS_ADDR;
                		        }
                			    mplsInterfaceConfig(ifMPif.module);
                                mplsEntityConfig(ifMPif.module);
                                mplsIfConf[mplsIpIf.module].port[mplsIpIf.port-1].Ip_maskLen|=EN_MPLS_IP;
                			    if(mplsIpIf.port==MPLS_MAX_PORT)
                			    {
                			        mplsIpIf.module++;
                			        mplsIpIf.port = 1;
                			    }
                			    else
                			        mplsIpIf.port++; 
                			    if(mplsIpSetTimes<200)
                			    {  
                			    	mplsIpSetTimes++;
                			        MPLS_SET_TIMER(10, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	                            }
	                            else
	                                MPLS_SET_TIMER(10*120, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	                            return;
                			}
                			else
                			    mplsIpIf.port++;  
                		}
                	}
                	else 
                	    mplsIpIf.port++;
                }
                else
                {
                    if(mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen&MPLS_IP)
                	{
                		if(mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen&EN_MPLS_IP)
                		{    
                		    if((mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen&MPLS_TRANS_ADDR)
                		       &&(!(mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen&EN_MPLS_TRANS_ADDR)))
                		       {
                		           ifMPif = mplsIpGetModulePortIfIndex(mplsIpIf.module,mplsIpIf.port);
                			       if(ifMPif.ifIndex!=PORTNOTEXIST)
                			       {
                		               mplsLdpdisTransAddr(mplsIpIf.module,mplsIpIf.port,ifMPif.ifIndex,
                		                 mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].TransPortAddr,1);
                		               
                		               mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen |=EN_MPLS_TRANS_ADDR;
                		           }
                		       }
                		    mplsIpIf.port++;
                		}
                		else
                		{
                			ifMPif = mplsIpGetModulePortIfIndex(mplsIpIf.module,mplsIpIf.port);
                			if(ifMPif.ifIndex!=PORTNOTEXIST)
                			{
                				mplsMibInitOneIf(ifMPif.module,ifMPif.port,ifMPif.ifIndex,1);
                			    if(mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen&MPLS_TRANS_ADDR)
                		        {
                		             mplsLdpdisTransAddr_ex(mplsIpIf.module,mplsIpIf.port,ifMPif.ifIndex,
                		                 mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].TransPortAddr);
                		             mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen|=EN_MPLS_TRANS_ADDR;
                		        }
                			    mplsInterfaceConfig(ifMPif.module);
                                mplsEntityConfig(ifMPif.module);
                                mplsLdpdisTransAddr(ifMPif.module,ifMPif.port,ifMPif.ifIndex,
                                         mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].TransPortAddr,1);
                                mplsIfConf[mplsIpIf.module-1].port[mplsIpIf.port-1].Ip_maskLen|=EN_MPLS_IP;
                			    if(mplsIpIf.port==MPLS_MAX_PORT)
                			    {
                			        if(mplsIpIf.module==MPLS_MAX_BOARD)
                			        {
                			            mplsIpIf.module=1;
                			        }
                			        else
                			            mplsIpIf.module++;
                			        mplsIpIf.port = 1;
                			    } 
                			    else
                			        mplsIpIf.port++;  
                			    if(mplsIpSetTimes<200)
                			    {  
                			    	mplsIpSetTimes++;
                			        MPLS_SET_TIMER(10, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	                            }
	                            else
	                                MPLS_SET_TIMER(10*120, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	                            return;
                			}
                			else
                			    mplsIpIf.port++;
                		}
                	}
                	else 
                	    mplsIpIf.port++;
                }
	        }
	        mplsIpIf.port=1;
	        mplsIpIf.module++;
	    }
	    search_once=1;
	    if(mplsOamLocalPlatformType==MPLS_OAM_PLATFORM_M1000)
        {
           mplsIpIf.module = 0;
        }
        else
        {
           mplsIpIf.module = 1;
        }
    }
    if(mplsIpSetTimes<200)
     {  
     	 mplsIpSetTimes++;
         MPLS_SET_TIMER(10, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	 }
	 else
	     MPLS_SET_TIMER(10*120, (void *)mplsIPFunc, &mplsIpIf, mpls_oam_timer_q, mplsIpIf.timeId);
	 return;
 }                               
void mplsD010PortData(MIB_MPLSCONFIG_REQ *req)  /* 索要port的与MPLS有关的数据 */
{
	PID         D010Pid;
	
	GET_PID("MIBACCESS",&D010Pid);
	D010Pid.module = 0;
	ASEND(MIB_MPLSCONFIG,req,sizeof(MIB_MPLSCONFIG_REQ),D010Pid);
	mplsOamTimer.backoff[OAM_TIMER_MPLS_CONFIG_TABLE]=
	    mplsOamTimer.backoff[OAM_TIMER_MPLS_CONFIG_TABLE]*2+1;
	/*mplsOamTimer.timerId[OAM_TIMER_MPLS_CONFIG_TABLE] = 
	       EXTRA_SET_TIMER(MPLS_CONFIG_TABLE_TIMER*
	                      mplsOamTimer.backoff[OAM_TIMER_MPLS_CONFIG_TABLE],
	                      MPLS_TIMER1, OAM_TIMER_MPLS_CONFIG_TABLE);*/
	MPLS_SET_TIMER(MPLS_CONFIG_TABLE_TIMER * mplsOamTimer.backoff[OAM_TIMER_MPLS_CONFIG_TABLE],
	              (void *)timer1proOAM,(void *) OAM_TIMER_MPLS_CONFIG_TABLE, mpls_oam_timer_q, 
	              mplsOamTimer.timerId[OAM_TIMER_MPLS_CONFIG_TABLE]);
}

void mplsD010NiData(MIB_MANICFG_REQ  *niCfgReq)    /* 索要NI表的数据*/
{
	PID         D010Pid;
	
	GET_PID("MIBACCESS",&D010Pid);
	D010Pid.module = 0;
	ASEND(MIB_PP_MPU_NICONF,&niCfgReq->begindex,sizeof(ushort),D010Pid);
	mplsOamTimer.backoff[OAM_TIMER_MPLS_NI_TABLE]=
	    mplsOamTimer.backoff[OAM_TIMER_MPLS_NI_TABLE]*2+1;
	/*mplsOamTimer.timerId[OAM_TIMER_MPLS_NI_TABLE] = 
	       EXTRA_SET_TIMER(MPLS_NI_TABLE_TIMER*
	                       mplsOamTimer.backoff[OAM_TIMER_MPLS_NI_TABLE],
	                       MPLS_TIMER1, OAM_TIMER_MPLS_NI_TABLE);*/
	MPLS_SET_TIMER(MPLS_NI_TABLE_TIMER * mplsOamTimer.backoff[OAM_TIMER_MPLS_NI_TABLE],
	              (void *)timer1proOAM, (void *)OAM_TIMER_MPLS_NI_TABLE, mpls_oam_timer_q, 
	              mplsOamTimer.timerId[OAM_TIMER_MPLS_NI_TABLE]);
}

void getMplsPortData(MIB_MPLSCONFIG_ACK  *Data)
{
	 ushort     num,i;
	 
	 if(MplsPortDataTable.num==MAX_ROUTE_CARDS)
	    return;
	 
	 if (MplsPortDataTable.num==0)
	 {
	     MPLS_MEMSET(&MplsPortDataTable,0,sizeof(mplsPort_t));  /*初始化LSRID*/
	 }
	 num  = MplsPortDataTable.num;
     MplsPortDataTable.mplsModule[num]=*Data;
     for(i=0;i<MplsPortDataTable.mplsModule[num].num;i++)
     {
        MplsPortDataTable.mplsModule[num].portData[i].atmfAtmLayerMaxSvccVpi--;
     }
     MplsPortDataTable.num++;
}

void getMplsNiData(MIB_MANICFG_ACK  *Data)
{
     ushort   index;
     ushort   len;
     
     index  = Data->AckIndex;
     len    = Data->Len;
     if(index==1)
     {
         MPLS_MEMSET(&MplsNiDataTable,0,sizeof(Stnetifdata));
     }
     memcpy((UCHAR *)&MplsNiDataTable+(index-1)*4096,Data->Buffer,len);
}

/************************************************************************
 * FUNCTION NAME  : mplsAlarmNiData()	                            
 * DESCRIPTION:   : request data			    
 *  AUTHOR/DATE   : sbp 2002-12-25                          
/************************************************************************/
void mplsAlarmNiData()
{
    niCfgReq.begindex=0;
	mplsD010NiData(&niCfgReq);
}

/************************************************************************
 * FUNCTION NAME  : mplsLdpParamInit()	                            
 * DESCRIPTION:   : initialize the LDP data.			    
 *  AUTHOR/DATE   : sbp 2002-6-15                                
/************************************************************************/
void mplsLdpParamInit()
{
    MPLS_MEMSET(&mplsLdpParam,0,sizeof(mplsLdpParam_t));
	mplsLdpParam.mplsEnable       = ADMINSTATUS_DOWN;  
	mplsLdpParam.mplsRouteridEnable       = ADMINSTATUS_DOWN;  
	mplsLdpParam.protocolversion  = 1;
	mplsLdpParam.minLabel         = 10001;
	mplsLdpParam.maxLabel         = 0x0fffff;
	mplsLdpParam.s_hold           = 45;
	mplsLdpParam.s_interval       = 15;
	mplsLdpParam.h_hold           = 15;
	mplsLdpParam.h_interval       = 5;
	/*mplsLdpParam.loopdetection    = 1;*/
	mplsLdpParam.loopdetection    = 5;
	mplsLdpParam.maxhopcount      = 255;
	mplsLdpParam.pvlimit          = 255;
	mplsLdpParam.controlmode      = 2;  
	mplsLdpParam.aggregate        = 1;
	switch_router_id              = 0;
	aggr_enable = mplsLdpParam.aggregate; 
}

int filter_key_compare(void *key1, void *key2)
{
	int rc = 0;	
	mpls_filter_key *lsp_key1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -