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

📄 shcmd.c

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