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

📄 gw_up_if.h

📁 wimax bs模拟器
💻 H
字号:
/****************************************************************************************************************************************
** Work Group   :   WBG RNC
** Creator      :   Wenyong.Xia
** Create Date  :   2007/01/05
** Modify By    :
** Description  :   common defintion, including Macro, Constant, data structure used on R6Proxy/CMAC interface.
** Version      :   sr1.0 phase 1
**----------------------------------------------------------------------------------------------------------------------------------------
** Involving functions:
**----------------------------------------------------------------------------------------------------------------------------------------
** <Complement: Maybe update history>
** 2006-10-9    : Created
** 2006-10-12   : Added message definition, API definition
** 2007-01-06	: envelop is defined in the message
** 2007-01-25	: added the UP_DPF_PAGING_REQ, and the GWDPFUpSetRspMsg structure
*****************************************************************************************************************************************/

#ifndef _GW_UP_IF_H_
#define _GW_UP_IF_H_
#include "global.h"


/*****************************************************Message Format Definition Begin*********************************************************/
typedef enum
{
	/*ADD IP in the UP*/
	DPF_UP_TUNNEL_SET_REQ = 1,
	UP_DPF_TUNNEL_SET_RSP,


	DPF_UP_TUNNEL_DEL_REQ,
	UP_DPF_TUNNEL_DEL_RSP,    
	
	UP_DPF_PAGING_REQ,

	DPF_UP_ACCOUNT_REQ,
	UP_DPF_ACCOUNT_RSP,

	/*ARP */       
	SSARP_UP_DATA_REQ_MSG,
	UP_SSARP_DATA_IND_MSG,
	UP_SSARP_ARP_REQ_MSG,

	/*DHCP*/   
	DPF_UP_DHCP_TO_MS,
	DPF_UP_DHCP_TO_CSN,
	UP_DPF_DHCP_FROM_MS,
	UP_DPF_DHCP_FROM_CSN
} GWUPMSGTYPE;

#define MS_MAC_ADDR_LEN 6



typedef enum 
{
	TUNNEL_T_R6 = 1,
	TUNNEL_T_R4
}TUNNEL_TYPE;


typedef enum 
{
	TUNNEL_S_IDLE = 1,
	TUNNEL_S_NORMAL
} TUNNEL_STATE;


#define TUNNEL_M_CORRELATION_TUNNEL_ID		0x00001
#define TUNNEL_M_LOCAL_IP_ADDRESS			0x00002
#define TUNNEL_M_REMOTE_GRE_KEY				0x00004
#define TUNNEL_M_REMOTE_IP_ADDRESS			0x00008
#define TUNNEL_M_MS_IP_ADDRESS				0x00010
#define TUNNEL_M_MS_MAC_ADDRESS				0x00020


/*
 * A MS must has at least a tunnel even if the MS is in idle mode. There are three cases for every MS:
 *  case 1. Only a R6 tunnel exist
 *  case 2. Only a R4 tunnel exist
 *  case 3. both R6 and R4 tunnel exist
 */
 
/*DPF_UP_TUNNEL_SET_REQ*/
typedef struct _GWDPFUpSetMsg
{
	ENVELOP			stEnv;

	unsigned int		tunnelLocalGREKey;			/* Local GRE Key. In SR1.0, it equals the MS context ID*/
	DWORD			tunnelLocalIpAddr;			/* Local Ip Address */
	TUNNEL_TYPE		tunnelType;					/* R6/R4 */
	TUNNEL_STATE		tunnelState;				/* Idle/Normal. If Rx a DL packet when the tunnel is in 
									 * Idle model, a page precedure will be triggered
									 */

	unsigned int		tunnelPresetBitMask;			/* see TUNNEL_M_XXXX above */

	unsigned int		tunnelCorrelationTunnelId;		/* Just for case 3: both R6 and R4 tunnel exist */
	unsigned int		tunnelRemoteGREKey;			/* Used when tx GRE packet, if the IE is invalid, just discard tx packets */
	DWORD			tunnelRemoteIpAddr;			/* Used when tx GRE packet, if the IE is invalid, just discard tx packets */
	DWORD			msIpAddr;				/*
									 * DL Packets from CSN can be routed into this tunnel by the IE if and ony if 
									 * the this IE is valid. But UL packet can be transmitted even if this IE is invalid.
									 */
	unsigned char		msMacAddr[MS_MAC_ADDR_LEN]; 
}GWDPFUpSetMsg;

/*UP_DPF_TUNNEL_SET_RSP*/
typedef struct _GWDPFUpSetRspMsg
{
	ENVELOP			stEnv;
	unsigned int		tunnelLocalGREKey;	/* local GRE key */
	DWORD			tunnelRemoteIpAddr;	/* Used when tx GRE packet, if the IE is invalid, just discard tx packets */
	int				status;
}GWDPFUpSetRspMsg;

/*DPF_UP_TUNNEL_DEL_REQ*/
typedef struct _GWDPFUpDelMsg
{
	ENVELOP			stEnv;
	unsigned int		tunnelLocalGREKey;	/* local GRE key */
}GWDPFUpDelMsg;


/*UP_DPF_PAGING_REQ*/
typedef struct _GWUPPagingMsg
{
	ENVELOP			stEnv;
	unsigned int		localGREKey;	/* local GRE key, it shall be equal to the MS index*/    
}GWUPPagingMsg;

/*DPF_UP_ACCOUNT_REQ UP_DPF_ACCOUNT_RSP*/
typedef struct _GWAccountingUpMsg
{
	ENVELOP			stEnv;

	unsigned int		localGREKey; 		/* local GRE key */

	unsigned int		dlVolGiga;
	unsigned int		dlVolBytes;
	unsigned int		ulVolGiga;
	unsigned int		ulVolBytes;

	unsigned int		dlVolPackets;
	unsigned int		ulVolPackets;
}GWAccountingUpMsg;



/*	DPF_UP_DHCP_TO_MS  	DPF_UP_DHCP_TO_CSN UP_DPF_DHCP_FROM_MS UP_DPF_DHCP_FROM_CSN*/
typedef struct _GWUPDHCPMsg
{
	ENVELOP			stEnv;

	unsigned char		macAddr[6];		/*R1 mac addr*/
	unsigned int		gwupInternalId;	/*input when discovery to DHCP task and carry it back when msg to up*/

	unsigned int		pktLen;
	unsigned char		pktBuf[1024];	/*use 1024,but default max len 576 bytes including IP/UDP header*/
}GW_UP_DHCP_MSG;

/* ARP common structure and message definition */

/* ARP table, it is maintain by SSARP task and can be read by UP */
typedef struct _SS_ARP_TABLE{
	unsigned int		uiValidFlag;		/* 0--invalid 1--valid */
	unsigned int		dwIpAddr;			/* internet address */
	unsigned char		abEthMacAddr[6];	/* ethernet address */
	unsigned short		wTimer;				/* seconds to update */
}SS_ARP_TABLE;

/* SSARP -> UP, the abEtherPacket is a standard ARP packet */
typedef struct SSARP_UP_DATA_REQ_MSG_S{
	ENVELOP				stEnv;
	unsigned char		abEtherPacket[64];
}ARP_UP_DATA_REQ_MSG_S;

/* UP -> SSARP, the abEtherPacket is a standard ARP packet */
typedef struct _UP_SSARP_DATA_IND_MSG_S{
	ENVELOP			stEnv;
	unsigned char	abEtherPacket[64];
}UP_SSARP_DATA_IND_MSG_S;

/* UP-> SSARP, when UP receive on IP packet from SS and does not know MAC address, it will send this msg to SSARP */
typedef struct _UP_SSARP_ARP_REQ_MSG_S{
	ENVELOP			stEnv;
	unsigned int	dwIpAddr;
}UP_SSARP_ARP_REQ_MSG_S;

#endif

⌨️ 快捷键说明

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