📄 fec.h
字号:
/* ****************************************************************** */
/* Product Name:MPLS */
/* Modul Name: PROTOCOL File Name : fec.h */
/* Creat Date: 01.12.03 Author : shi.zhaohui */
/* Version: 1.0 */
/* History: kong.yong */
/* weng.qing */
/**********************************************************************/
#ifndef FEC_H
#define FEC_H
#include "EncDec.h"
#include "mpls.h"
#include "oamldp.h"
#include "mplsmain.h"
#include "mplslsp.h"
#include "mplserr.h"
#include "_noalign.h"
#define BGP_OSPF_ROUTE_START_UP 6001
#define INGRESS 0x1
#define EGRESS 0x2
#define EDGE 0x1
#define BACKBONE 0x3
/* OperateType定义 */
#define NEW_TYPE 11 /* fec to ldp lsp setup */
#define UPDATE_TYPE 21 /* fec to ldp lsp next hop change */
#define ELEM_CHANGE_TYPE 31 /* fec element change */
#define STUDY_TYPE 41 /* ldp to fec study for not ingress */
#define DELETE_PVC_TYPE 51
/* fec to ldp lsp delete(ingress) and ldp to fec lsp delete(not ingress) */
#define INQUIRE_TYPE 61 /* ldp to fec inquire router */
#define RESPONSE_TYPE 71 /* ldp to fec setup response(ingress) */
#define LBLABORT_TYPE 81 /* fec to ldp label abort */
#define ATT_CHANGE_TYPE 91 /* fec to ldp attribute change */
/*
typedef struct _fec_msg_tlvs_flags
{
unsigned char fecTlvExists: 1;
unsigned char lspidTlvExists: 1;
unsigned char erTlvExists: 1;
unsigned char trafficTlvExists: 1;
unsigned char pinningTlvExists: 1;
unsigned char recClassTlvExists: 1;
unsigned char preemptTlvExists: 1;
} fec_msg_tlvs_flags;
*/
typedef struct
{
mplsLdpLspIdTlv_t lspidTlv; /* lspid tlv */
mplsFecElement_t fecElArray[MPLS_MAXNUMFECELEMENT];
unsigned char fecElemTypes[MPLS_MAXNUMFECELEMENT];
/* 1,2,3,4. 通常取前缀类型为2 */
unsigned short fecElemNum;
mplsLdpTrafficTlv_t Traffic; /* 用于描述流量参数 */
mplsLdpErTlv_t erTlv; /* constraint rtg tlv*/
mplsLdpPinningTlv_t pinningTlv; /* pinning tlv */
mplsLdpResClsTlv_t resClassTlv; /* resource class tlv*/
mplsLdpPreemptTlv_t preemptTlv; /* peemtion tlv */
/* 7 6 5 4 3 2 1 0: preempt,resclass,pinning,ertlv,traffic,lspidtlv, */
union
{
fec_msg_tlvs_flags flags;
unsigned char mark;
}TlvExists;
unsigned long statusCode; /*错误代码 */
unsigned short ifIndex; /* 路由出口的ifIndex(高端)*/
unsigned char port; /* 路由出口的port(高端)*/
unsigned long NextHop; /* ospf */
unsigned short sbPort; //sbIfIndex; /* 用于标识Ingress Lsr上的某个SB板 */
unsigned char sbModule;
unsigned char loadShare; /* load balance */
unsigned char RouteType; /* 高四位:是否重新绑定;低四位是Route Type,包括三种类型:INGRESS,EGRESS,BACKBONE */
unsigned short in_protocol_type;
unsigned short out_protocol_type;
/* 这条LSP和UpLspCBNo、Module也是一一对应的 */
/*lspCBNo_t upLspCBStru; 只需要上游查询就可以了,下游可从上游获得查询结果
lspCBNo_t downLspCBStru; huyonghong 2002-6-25 */
QosMulitFieldFilter_t qosfilterstr;
unsigned long lspIndex; /* 2002-7-4 hu yonghong */
unsigned char pathType; /* 2002-7-26 sbp dynamic , explicit */
unsigned char metric;
}MPLS_PACK struct_mplsLdpFecTlv_Table;
typedef struct
{
unsigned short LspNo; /* setup lsp number */
unsigned char OperateType;
struct_mplsLdpFecTlv_Table Fec;
}MPLS_PACK FecMsg;
typedef struct {
unsigned short index;
FecMsg FecAck;
}MPLS_PACK FecAckMsg;
#include "_restore.h"
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -