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

📄 mplsshow.c

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 C
📖 第 1 页 / 共 5 页
字号:
	
	for(i = 0; i < sessTable->helloArrayNum; i++)
	{
		(*pData)->Type = DATA_TYPE_DWORD;
		(*pData)->Len = 4;
		*(DWORD *)(*pData)->Data = sessTable->helloArray[i];
		*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
		(*rtnNum)++;
	}
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = sessTable->tcpConRetry;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
		
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = sessTable->tmidCon;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = sessTable->connect.localPort;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = sessTable->connect.peerPort;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = sessTable->connect.localAddr;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = sessTable->connect.peerAddr;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = sessTable->ifName.module;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = sessTable->ifName.port;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE*)(*pData)->Data = sessTable->ifName.lsrType;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = sessTable->ifIndex;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
}

/* cmd: show mpls ldp session address <A.B.C.D> */
void showMplsLdpSessionAddr(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
	int i;
	BYTE rtnNum = 0;
	ushort dataSize = 0;
	mpls_opr_data_t *pData = out->Data;

	for(i = in->lastData[0]; i < arrayLen[NOSESSION]; i++)
	{
		if(mplsLdpSessionEntry[i].peerLdpId.lsrAddress == in->inTypeData.addr)
		{
			showMplsLdpSessionWrite(&mplsLdpSessionEntry[i], &pData, &rtnNum);
			dataSize++;
			if(dataSize >= MPLS_SESS_TABLE_SIZE)
			{
				out->RetCode = SUCC_CMD_NOT_FINISHED;
				out->lastData[0] = i + 1;
				out->CmdRestartFlag = in->CmdRestartFlag;
				out->DataNum = rtnNum;
				out->DataLen = (WORD)((int)pData - (int)out->Data);
				return;
			}
		}
	}
		
	if(!dataSize)
		out->RetCode = SUCC_AND_NOPARA;
	else
		out->RetCode = SUCC_AND_HAVEPARA;			
	memset(out->lastData, 0, sizeof(out->lastData));
	out->CmdRestartFlag = in->CmdRestartFlag;
	out->DataNum = rtnNum;
	out->DataLen = (WORD)((int)pData - (int)out->Data);
	
	return;
}

/* cmd: show mpls ldp session interface <module no/port no> */
void showMplsLdpSessionPort(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
	int i;
	BYTE rtnNum = 0;
	ushort dataSize = 0;
	mpls_opr_data_t *pData = out->Data;
	ushort module, port;
	
	module = ((in->inTypeData.port >> 16) & 0xFFFF);
	port = in->inTypeData.port  & 0xFFFF;

	for(i = in->lastData[0]; i < arrayLen[NOSESSION]; i++)
	{
		if(mplsLdpSessionEntry[i].ifName.module == module &&
		   mplsLdpSessionEntry[i].ifName.port == port)
		{
			showMplsLdpSessionWrite(&mplsLdpSessionEntry[i], &pData, &rtnNum);
			dataSize++;
			if(dataSize >= MPLS_SESS_TABLE_SIZE)
			{
				out->RetCode = SUCC_CMD_NOT_FINISHED;
				out->lastData[0] = i + 1;
				out->CmdRestartFlag = in->CmdRestartFlag;
				out->DataNum = rtnNum;
				out->DataLen = (WORD)((int)pData - (int)out->Data);
				return;
			}
		}
	}
		
	if(!dataSize)
		out->RetCode = SUCC_AND_NOPARA;
	else
		out->RetCode = SUCC_AND_HAVEPARA;			
	memset(out->lastData, 0, sizeof(out->lastData));
	out->CmdRestartFlag = in->CmdRestartFlag;
	out->DataNum = rtnNum;
	out->DataLen = (WORD)((int)pData - (int)out->Data);
	
	return;
}

/* cmd: show mpls ldp session */
void showMplsLdpSessionAll(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
	int i;
	BYTE rtnNum = 0;
	ushort dataSize = 0;
	mpls_opr_data_t *pData = out->Data;

	for(i = in->lastData[0]; i < arrayLen[NOSESSION]; i++)
	{
		showMplsLdpSessionWrite(&mplsLdpSessionEntry[i], &pData, &rtnNum);
		dataSize++;
		if(dataSize >= MPLS_SESS_TABLE_SIZE)
		{
			out->RetCode = SUCC_CMD_NOT_FINISHED;
			out->lastData[0] = i + 1;
			out->CmdRestartFlag = in->CmdRestartFlag;
			out->DataNum = rtnNum;
			out->DataLen = (WORD)((int)pData - (int)out->Data);
			return;
		}
	}
		
	if(!dataSize)
		out->RetCode = SUCC_AND_NOPARA;
	else
		out->RetCode = SUCC_AND_HAVEPARA;			
	memset(out->lastData, 0, sizeof(out->lastData));
	out->CmdRestartFlag = in->CmdRestartFlag;
	out->DataNum = rtnNum;
	out->DataLen = (WORD)((int)pData - (int)out->Data);
	
	return;
}

/*cmd: show mpls ldp session */
void showMplsLdpSession(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
	switch(in->type)
	{
		case SHOW_IPADDR:
			showMplsLdpSessionAddr(in, out);
			break;
		case SHOW_PORT:
			showMplsLdpSessionPort(in, out);
			break;
		default:
			showMplsLdpSessionAll(in, out);
			break;
	}
	return;
}

/***************************************************************************************/
/* cmd: show mpls ldp peer                                                             */
/***************************************************************************************/
void showMplsLdpPeerWrite(mplsLdpPeerTable_t *peer, mpls_opr_data_t **pData, BYTE *rtnNum)
{
	int i;
	
	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->entityLdpId.lsrAddress;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->entityLdpId.labelSpace;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->entityindex;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->peerLdpId.lsrAddress;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->peerLdpId.labelSpace;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->peerlabeldistributionmethod;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->peerloopdetectionforpv;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->peerpathvectorlimit;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->downstream;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->PIEsSent;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->PIEsRcvd;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->connect.localPort;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->connect.peerPort;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->connect.localAddr;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->connect.peerAddr;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->state;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_DWORD;
	(*pData)->Len = 4;
	*(DWORD *)(*pData)->Data = peer->oldtime;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->addrSrcNum;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	for(i = 0; i < peer->addrSrcNum; i++)
	{
		(*pData)->Type = DATA_TYPE_BYTE;
		(*pData)->Len = 1;
		*(BYTE *)(*pData)->Data = peer->AddressSources[i].sources;
		*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
		(*rtnNum)++;
		
		(*pData)->Type = DATA_TYPE_DWORD;
		(*pData)->Len = 4;
		*(DWORD *)(*pData)->Data = peer->AddressSources[i].address;
		*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
		(*rtnNum)++;		
	}

	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->ldpIdentNum;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;

	for(i = 0; i < peer->ldpIdentNum; i++)
	{
		(*pData)->Type = DATA_TYPE_DWORD;
		(*pData)->Len = 4;
		*(DWORD *)(*pData)->Data = peer->LdpIdent[i];
		*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
		(*rtnNum)++;		
	}

	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->ifName.module;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->ifName.port;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_BYTE;
	(*pData)->Len = 1;
	*(BYTE *)(*pData)->Data = peer->ifName.lsrType;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
	
	(*pData)->Type = DATA_TYPE_WORD;
	(*pData)->Len = 2;
	*(WORD *)(*pData)->Data = peer->ifIndex;
	*pData = (mpls_opr_data_t *)((*pData)->Data + (*pData)->Len);
	(*rtnNum)++;
}

/* cmd: show mpls ldp peer address <A.B.C.D> */
void showMplsLdpPeerAddr(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
	int i;
	BYTE rtnNum = 0;
	ushort dataSize = 0;
	mpls_opr_data_t *pData = out->Data;

	for(i = in->lastData[0]; i < arrayLen[NOPEER]; i++)
	{
		if(mplsLdpPeerEntry[i].peerLdpId.lsrAddress == in->inTypeData.addr)
		{
			showMplsLdpPeerWrite(&mplsLdpPeerEntry[i], &pData, &rtnNum);
			dataSize++;
			if(dataSize >= MPLS_PEER_TABLE_SIZE)
			{
				out->RetCode = SUCC_CMD_NOT_FINISHED;
				out->lastData[0] = i + 1;
				out->CmdRestartFlag = in->CmdRestartFlag;
				out->DataNum = rtnNum;
				out->DataLen = (WORD)((int)pData - (int)out->Data);
				return;
			}
		}
	}
		
	if(!dataSize)
		out->RetCode = SUCC_AND_NOPARA;
	else
		out->RetCode = SUCC_AND_HAVEPARA;			
	memset(out->lastData, 0, sizeof(out->lastData));
	out->CmdRestartFlag = in->CmdRestartFlag;
	out->DataNum = rtnNum;
	out->DataLen = (WORD)((int)pData - (int)out->Data);
	
	return;
}

/* cmd: show mpls ldp peer interface <module no/port no> */
void showMplsLdpPeerPort(mpls_sh_data_t *in, mpls_comm_oam_t *out)
{
	int i;
	BYTE rtnNum = 0;
	ushort dataSize = 0;
	mpls_opr_data_t *pData = out->Data;
	ushort module, port;
	
	module = ((in->inTypeData.port >> 16) & 0xFFFF);

⌨️ 快捷键说明

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