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

📄 ldpmib.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 4 页
字号:
		        #ifdef __BGS10_MPLS_DEBUG
		        	if(peerAddr == MPLS_NULL)
				        printf("!!! In func_sess_peersearch2, search data is not exist");
			    #endif
			#endif
			break;
		default:
			break;
	}
	return peerAddr;
}

/* ******************************************************************** */
/* FUNCTION NAME : func_sess_peerdel( ) 			                    */
/* DESCRIPTION   : search Dyanmic Data from mib                         */
/* INPUT         : MIB_LDP_SESSION_PEERADDR_REQ *in, 					*/
/*					MIB_LDP_SESSION_PEERADDR_ACK *ack                   */
/* OUTPUT        : No.                                 			        */
/* AUTHOR/DATE   : Shi.ZhaoHui / 2001.3.26                              */
/* GLOBAL        : none                                                 */
/* NOTE          :  ....                                                */
/********************************************************************** */
sessionPeerAddr_t *func_sess_peerdel(MIB_LDP_SESSION_PEERADDR_REQ *in)
{
    short           i;
    sessionPeerAddr_t *peerAddr = MPLS_NULL;
    mplsOAMLdpMessage_t   oamldpmess;
    
	switch ( in -> req.del.indexFlag )
	{
		case 1  :
		    if(( in -> req.del.index < 0 )||( in -> req.del.index > mplsINDEX_MAX ) )
		    {
				#ifdef DEBUG_LDP
				    #ifdef __BGS10_MPLS_DEBUG
			  	        printf("!!! In func_sess_peerdel1, helloIndex error.");
			  	    #endif
			  	#endif
			  	return MPLS_NULL;
			}
			for(i = 0; i < MPLSLDP_MAX; i++)
		    {
		        if((MplsLdpSessionPeerAddrEntry[i].RowStatus ==  VAL_RowStatus_active) &&
		           (MplsLdpSessionPeerAddrEntry[i].index == in -> req.del.index))
		        {
		            MplsLdpSessionPeerAddrEntry[i].RowStatus =  VAL_RowStatus_null;
        			peerAddr = (sessionPeerAddr_t *)(&MplsLdpSessionPeerAddrEntry[i].index);
		            oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_PEERADDR ;
		            oamldpmess.data.ssnPeerAddrDataReq.operateType = 3;
		            /*oamldpmess.data.ssnPeerAddrDataReq.req.del.indexFlag = 1;
		            oamldpmess.data.ssnPeerAddrDataReq.req.del.index = in -> req.del.index;
		            MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
		        		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
		            memcpy(&(oamldpmess.data.ssnPeerAddrDataReq.req.set),peerAddr,
		                    sizeof(sessionPeerAddr_t));
		           /* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
		        		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
		        	mplsSessionPeerRecv(&oamldpmess); /* 2003-10-9 lixia add */
		        		
		            break;
		        }
		    }
		    #ifdef DEBUG_LDP
		        #ifdef __BGS10_MPLS_DEBUG
		        	if(peerAddr == MPLS_NULL)
				        printf("!!! In func_sess_peerdel1, del data is not exist");
			    #endif
			#endif
			break;
		case 2 :
		    for(i = 0; i < MPLSLDP_MAX; i++)
		    {
		        if((MplsLdpSessionPeerAddrEntry[i].RowStatus ==  VAL_RowStatus_active) &&
		           (MplsLdpSessionPeerAddrEntry[i].nextHopAddressType == in -> req.del.address.nextHopAddressType)&&
		           (MplsLdpSessionPeerAddrEntry[i].nextHopAddress == in -> req.del.address.nextHopAddress))
		        {
		            MplsLdpSessionPeerAddrEntry[i].RowStatus =  VAL_RowStatus_null;
        			peerAddr = (sessionPeerAddr_t *)(&MplsLdpSessionPeerAddrEntry[i].index);
		            oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_PEERADDR ;
		            oamldpmess.data.ssnPeerAddrDataReq.operateType = 3;
		            /*oamldpmess.data.ssnPeerAddrDataReq.req.del.indexFlag = 2;
		            oamldpmess.data.ssnPeerAddrDataReq.req.del.address = in -> req.del.address;
		            MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
		        		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
		            memcpy(&(oamldpmess.data.ssnPeerAddrDataReq.req.set),peerAddr,
		                    sizeof(sessionPeerAddr_t));
		           /* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
		        		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid); */
		        	mplsSessionPeerRecv(&oamldpmess); /* 2003-10-9 lixia add */
		        		
		            break;
		        }
		    }
		    #ifdef DEBUG_LDP
		        #ifdef __BGS10_MPLS_DEBUG
		        	if(peerAddr == MPLS_NULL)
				        printf("!!! In func_sess_peerdel2, del data is not exist");
			    #endif
			#endif
			break;
		case 3 :
		    for(i = 0; i < MPLSLDP_MAX; i++)
		    {
		        if((MplsLdpSessionPeerAddrEntry[i].RowStatus ==  VAL_RowStatus_active) &&
		           (MplsLdpSessionPeerAddrEntry[i].sessionIndex == in -> req.del.sessionIndex))
		        {
		            MplsLdpSessionPeerAddrEntry[i].RowStatus = VAL_RowStatus_null;
        			peerAddr = (sessionPeerAddr_t *)(&MplsLdpSessionPeerAddrEntry[i].index);
		            oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_PEERADDR ;
		            oamldpmess.data.ssnPeerAddrDataReq.operateType = 3;
		            /*oamldpmess.data.ssnPeerAddrDataReq.req.del.indexFlag = 3;
		            oamldpmess.data.ssnPeerAddrDataReq.req.del.sessionIndex = in -> req.del.sessionIndex;
		            MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
		        		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
		            memcpy(&(oamldpmess.data.ssnPeerAddrDataReq.req.set),peerAddr,
		                    sizeof(sessionPeerAddr_t));
		           /* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(MIB_LDP_SESSION_PEERADDR_ACK)
		        		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
		        	mplsSessionPeerRecv(&oamldpmess); /* 2003-10-9 lixia add */
		             
		            /* del multiple address 02-7-18 */
		        }
		    }
		    #ifdef DEBUG_LDP
		        #ifdef __BGS10_MPLS_DEBUG
		        	if(peerAddr == MPLS_NULL)
				        printf("!!! In func_sess_peerdel3, del data is not exist");
			    #endif
			#endif
			break;
		default:
			break;
	}
	return peerAddr;
}

/* ******************************************************************** */
/* FUNCTION NAME : processldpstats( ) 			                    	*/
/* DESCRIPTION   : process ldp statistic data                         	*/
/* INPUT         : unsigned long  statstype, 							*/
/*  				mplsLdpSession_t  *session							*/
/* OUTPUT        : No.                                 			        */
/* AUTHOR/DATE   : Shi.ZhaoHui / 2001.3.26                              */
/* GLOBAL        : none                                                 */
/* NOTE          :  ....                                                */
/********************************************************************** */
void processldpstats (unsigned long  statstype, mplsLdpSession_t  *session)
{
    short           i, j, t = 0, existflag = 0;
    mplsOAMLdpMessage_t   oamldpmess;

    if(!((statstype == UNKNOWNMSGTYP) && (statstype == UNKNOWNTLV)))
    {
        for(i = 0; i < MPLSLDP_MAX; i++)
    	{
	        if((MplsLdpEntityStatsEntry[i].RowStatus == VAL_RowStatus_active)&&
	           (MplsLdpEntityStatsEntry[i].entityLdpId.lsrAddress ==
	                            session -> entityLdpId.lsrAddress) &&
	           (MplsLdpEntityStatsEntry[i].entityLdpId.labelSpace ==
	                            session -> entityLdpId.labelSpace) &&
	           (MplsLdpEntityStatsEntry[i].peerLdpId.lsrAddress ==
	                            session -> peerLdpId.lsrAddress) &&
	           (MplsLdpEntityStatsEntry[i].peerLdpId.labelSpace ==
	                            session -> peerLdpId.labelSpace))
	        {
	            t = i;
	            existflag = 1;
	            break;
	        }
	    }
	    if(existflag == 0)/* find not, add new tuple  */
	    {    
		     for( j = 0; j < MPLSLDP_MAX; j++)
		     {
		         if(MplsLdpEntityStatsEntry[j].RowStatus == VAL_RowStatus_null)
		         {
		             MplsLdpEntityStatsEntry[j].RowStatus = VAL_RowStatus_active;
		             MplsLdpEntityStatsEntry[j].entityLdpId.lsrAddress =
		                     session -> entityLdpId.lsrAddress;
		             MplsLdpEntityStatsEntry[j].entityLdpId.labelSpace =
		                     session -> entityLdpId.labelSpace;
		             MplsLdpEntityStatsEntry[j].peerLdpId.lsrAddress =
		                     session -> peerLdpId.lsrAddress;
		             MplsLdpEntityStatsEntry[j].peerLdpId.labelSpace =
		                     session -> peerLdpId.labelSpace;
		             t = j;
		             break;
		         }
		     }
	     }
	    switch(statstype)
	    {
	        case SREJNOHELLO:
	            MplsLdpEntityStatsEntry[t].sessionrejectednohelloerrors++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case BADPDULEN:
	            MplsLdpEntityStatsEntry[t].badpdulengtherrros++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case BADLDPID:
	            MplsLdpEntityStatsEntry[t].badldpidentifiererrors++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case BADMSGLEN:
	            MplsLdpEntityStatsEntry[t].badmessagelengtherrors++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case BADTLVLEN:
	            MplsLdpEntityStatsEntry[t].badtlvlengtherrors++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case MALFORMTLVVAL:
	            MplsLdpEntityStatsEntry[t].malformedtlvvalueErrors++;
	            break;
	
	        case KEEPALTIMEEXP:
	        case HOLDTIMEEXP:
	            MplsLdpEntityStatsEntry[t].KeepAliveTimerExpiredErrors++;
	            break;
	
	        case SHUTDOWN_REC :
	            MplsLdpEntityStatsEntry[t].ShutdownNotifReceived++;
	            break;
	
	        case SHUTDOWN_SENT :
	            MplsLdpEntityStatsEntry[t].ShutdownNotifSent++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case SREJPARMLBLRNG:
	            MplsLdpEntityStatsEntry[t].sessionrejectedlabelrangeerrors++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case SREJPARMMPDUL:
	            MplsLdpEntityStatsEntry[t].sessionrejectedmaxpduerrors++;
	            MplsLdpEntityStatsEntry[t].attemptedsessions++;
	            break;
	
	        case SREJPARMADEVER:
	            MplsLdpEntityStatsEntry[t].sessionrejectedadvertisementerrors++;
	            break;
	
	        default : break;
	    }
	    MplsLdpEntityStatsEntry[t].ifIndex = session -> ifIndex;
	    oamldpmess.msgtype = MPLS_MIB_LDP_ENTITY_STATS ;
	    oamldpmess.mplsLdpOAMflag = 1;
	    oamldpmess.data.entityStatsData.num = 1;
	    memcpy(oamldpmess.data.entityStatsData.entity,(unsigned char *)&MplsLdpEntityStatsEntry[t]+1,
	    		sizeof(struct_mplsLdpEntityStatsTable));
	  /*  MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(mplsLdpEntityStatsTable_t)
	    	  *oamldpmess.data.entityStatsData.num + sizeof(unsigned short)
	    		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
	    mplsEntityStatsRecv(&oamldpmess); /*2003-10-9 lixia add */
	    return;
    }

    for(i = 0; i < MPLSLDP_MAX; i++)
    {
        if((MplsLdpSessionStatsEntry[i].RowStatus == VAL_RowStatus_active)&&
           (MplsLdpSessionStatsEntry[i].entityLdpId.lsrAddress ==
                            session -> entityLdpId.lsrAddress) &&
           (MplsLdpSessionStatsEntry[i].entityLdpId.labelSpace ==
                            session -> entityLdpId.labelSpace) &&
           (MplsLdpSessionStatsEntry[i].peerLdpId.lsrAddress ==
                            session -> peerLdpId.lsrAddress) &&
           (MplsLdpSessionStatsEntry[i].peerLdpId.labelSpace ==
                            session -> peerLdpId.labelSpace))
        {
            t = i;
            existflag = 1;
            break;
        }
    }   
    if(existflag == 0) /* find not, add new tuple  */
    {
		for( j = 0; j < MPLSLDP_MAX; j++)
        {
            if(MplsLdpSessionStatsEntry[j].RowStatus == VAL_RowStatus_null)
            {
                MplsLdpSessionStatsEntry[j].RowStatus = VAL_RowStatus_active;
                MplsLdpSessionStatsEntry[j].entityLdpId.lsrAddress =
                        session -> entityLdpId.lsrAddress;
                MplsLdpSessionStatsEntry[j].entityLdpId.labelSpace =
                        session -> entityLdpId.labelSpace;
                MplsLdpSessionStatsEntry[j].peerLdpId.lsrAddress =
                        session -> peerLdpId.lsrAddress;
                MplsLdpSessionStatsEntry[j].peerLdpId.labelSpace =
                        session -> peerLdpId.labelSpace;
                t = j;
                break;
            }
        }
    }
    switch(statstype)
    {
        case UNKNOWNMSGTYP:
            MplsLdpSessionStatsEntry[t].unknownmessagetypeerrors++;
            break;

        case UNKNOWNTLV:
            MplsLdpSessionStatsEntry[t].unknowntlverrors++;
            break;

        default : break;
    }
    MplsLdpSessionStatsEntry[t].ifIndex = session -> ifIndex;
    oamldpmess.msgtype = MPLS_MIB_LDP_SESSION_STATS ;
    oamldpmess.mplsLdpOAMflag = 1;
    oamldpmess.data.ssnStatsData.num = 1;
    memcpy(oamldpmess.data.ssnStatsData.session,(unsigned char *)&MplsLdpSessionStatsEntry[t]+1,
    		sizeof(struct_mplsLdpSessionStatsTable));
   /* MPLS_PSEND(MPLS_LDP_OAM_MESSAGE,&oamldpmess,sizeof(mplsLdpSessionStatsTable_t)
    		*oamldpmess.data.ssnStatsData.num + sizeof(unsigned short)
    		+sizeof(mplsLdpOAMMessage)+sizeof(unsigned char),mlsmanagePid);*/
    mplsSessionStatsRecv(&oamldpmess); /*2003-10-9 lixia add */
    return;
}

⌨️ 快捷键说明

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