📄 feci.h
字号:
#ifndef FECI_H
#define FECI_H
#include "_noalign.h"
typedef unsigned long IPaddr; /* internet address */
#define RTM_NOT_USE 0
#define RTM_IN_USE 1
#define MPLS_VAL_RowStatus_active 1
#define MPLS_FEC_BUFFER_MAX 20000 /* buffer: 430K */
#define MPLS_FEC_SUCCESS 1
/* FALSE 0
*/
#define MPLS_FEC_MEM_VALID 2
#define LSP_RTE_TIMER 1
#define LSP_OPER_OAM 1
#define LSP_OPER_ROUTE 2
#define LSP_OPER_SB_OFFLINE 3
#define LSP_OPER_LDP_DELETE 4
#define LSP_OPER_TIMEOVER 5
#define NOT_LSP_VALID_FIRST_HOP 0
#define LSP_VALID_FIRST_HOP 1
typedef struct
{
unsigned short vpi;
unsigned short vci;
}MPLS_PACK FwdMpls;
typedef FwdMpls *SearchMplsLab();
typedef struct{ // the current position sequence is for microcode
#ifdef __INSTALL_GEI
uchar OutputFlag; /*标识本表项是否有效,以及数据包出口 */
union {
struct {
uchar phyPort; /*物理端口号,由a070模块提供*/
MACADDR dstmac;
MACADDR sourcemac;
ushort logicnum; /*逻辑端口号*/
}eth;
struct {
uchar phyPort; /*物理端口号,由a070模块提供*/
ushort vcc_descriptor;
uchar forwardhead[FORWARD_HEAD_LEN];
uchar vccdes_direct; /*描述业务板到业务板的VCC DESCRIPTOR。
不是直接到目的单板,由PP转接的,VCC_TO_PP;直接到目的单板的VCC_TO_MOD,上层A070用*/
uchar reserved4[3];
}vcc;
struct {
uchar reserved3[15]; /* 为了union对齐*/
}resv; //为其他的转发保留
} phy_channel;
unsigned char FromArpFlag;
#endif
unsigned char NatFlag; /*出端口类型(bit0,1),0:普通端口 1:内部端口 2:外部端口
其他BIT位未使用*/
unsigned char InterfaceType; // ATM/ETHERNET/FR…
unsigned char EntryType;//到这里总共20字节
unsigned char *MplsBase;//到这里总共24字节
unsigned int AsOutOrVpnLabel; /*内层标签*/
ushort vpnid; /*VPN标识*/
unsigned char ModuleNo;
unsigned char useflag;
unsigned long DestIpNet;
unsigned short NumInNif;
unsigned short Ifindex;
unsigned long DestIpMask; // host route DestIpMask = 0xFFFFFFFF
unsigned long GateWay; // direct route GateWay = 0xFFFFFFFF
SearchMplsLab *MplsEntry;
unsigned char ServType; /*区别PPPOE路由,PPPOE 1,纯路由 0*/
unsigned char reserved3[11];
}MPLS_PACK RoutEntry;
#define CHANGROUTE_MAX 16
#define RT_ADD 1
#define RT_DEL 2
#define MYOWN 1
#define DYNAMIC 2
#define MYADDR 3
#define EGRESS_PROXY 4
#if 0
typedef struct{
unsigned short Type; /* operation type 1: add, 2: delete */
unsigned long Dest; /*目的地址 */
unsigned long NetMask; /*目的地址的掩码*/
unsigned long NextHop; /*下一跳的IP地址*/
short IfIndex; /*端口索引 */
unsigned short rt_type; /* route type: mine, dynamic, proxy */
}MPLS_PACK IPFORWARDINGTAB;
#endif
typedef struct{
unsigned short vpnid;
unsigned short Type;
unsigned long Dest; /*目的地址 */
unsigned long NetMask; /*目的地址的掩码*/
unsigned long NextHop; /*下一跳的IP地址*/
short IfIndex; /*端口索引 */
unsigned char module;
unsigned char ServType; /*pppoe or ipv4*/
unsigned short rt_type; /*local,dynamic;for mpls 02-9-25 */
unsigned char EntryType; /*pure route or mpls route*/
unsigned char FwdType; /*wuliming 2004.2.20 added for mib*/
unsigned char ProtoType; /*wuliming 2004.2.20 added for mib */
}MPLS_PACK IPFORWARDINGTAB;
typedef struct{
unsigned short MsgNo;
unsigned short reserved;
unsigned long changenumber;
IPFORWARDINGTAB IpForwardingTab[CHANGROUTE_MAX];
}MPLS_PACK ROUTEMESSAGE_UPDATE;
typedef struct{
unsigned long ipaddr;
unsigned long mask;
}MPLS_PACK ipMask_t;
typedef struct{
unsigned char operType; /* 1: oam, 2: route , 3 sb offline */
unsigned short localLspId;
unsigned long IngressId;
}MPLS_PACK lsptag_t;
typedef struct{
unsigned char oper; /* add delete */
unsigned char msgType;
union{
lsptag_t lsp;
IPFORWARDINGTAB addr;
}msgData;
}MPLS_PACK fecBuffer_t;
typedef struct{
unsigned char type; /* route or lsp*/
unsigned long index; /* high: lsp: localLspId, route: rteIndex, low: route number */
}MPLS_PACK ldpFecAck_t;
#include "_restore.h"
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -