📄 gw_up_if.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 + -