📄 mplslsp.h
字号:
#ifndef MPLS_LSP_H
#define MPLS_LSP_H
#include "mpls.h"
#include "oamldp.h"
#include "mplsOamS.h"
#include "mpls_avl.h"
#include "ldp.h"
#include "_noalign.h"
/* MPLS FEC filter */
MPLS_AVL_TREE lspConfigTree;
MPLS_AVL_TREE lspNhTree,lspNhTreeTemp;
MPLS_AVL_TREE mplsFilterTree,mplsLspPrioTree;
typedef struct{
unsigned long IpAddr; /* network address for this route, or net for some addreses */
union{
unsigned char addrLen;
unsigned long addrMask;
}mask;
}MPLS_PACK fecFilterAddr_t;
typedef struct{
unsigned char addrType;
fecFilterAddr_t ScrAddr;
fecFilterAddr_t DstAddr;
}MPLS_PACK TEFilterAddr_t;
typedef struct{
unsigned short minPort;
unsigned short maxPort;
}MPLS_PACK Port_t;
typedef struct{
Port_t ScrPort;
Port_t DstPort;
}MPLS_PACK TEfilterPort_t;
typedef struct{
unsigned short filterNo;
}mpls_filter_key;
typedef struct filter_s{
MPLS_AVL_NODE filter_node;
mpls_filter_key filter_key;
unsigned char bindedLspNum; /* 用于绑定和删除绑定,绑定是加1,删除绑定时减1 */
unsigned char ExistLspNum; /* 标示实际与该FILTER绑定的LSP的条数,因为有时删除绑定,
但LSP并一定删除,虽然应该删除,因为以后建立不起来了。
绑定是加1,被绑定的LSP时减1 */
unsigned short lspNoEntry[QOS_FILTER_TO_LSP_MAX];
TEFilterAddr_t QosAddr;
TEfilterPort_t QosPort;
short QosDscp;
unsigned short QosPhyPortNum;
InterfaceNoCardtype_t QosPhyPort[MPLS_MAX_QOSPHY];
unsigned short QosProtoType;
unsigned char QosTos;
unsigned char QosPrio;
}MPLS_PACK QosMulitFieldFilter_t;
typedef struct singleFilter_s{
unsigned char filterFlag; /* MPLS_FEC_FILTER_ENABLE_ALL: enable all,
MPLS_FEC_FILTER_ENABLE_SINGLE: enable single,
MPLS_FEC_FILTER_DISABLE_SINGLE: disable single ,
MPLS_FEC_FILTER_DISABLE_ALL: disable all */
fecFilterAddr_t fecAddr;
struct singleFilter_s *next;
}MPLS_PACK singleFecFilterAddr_t;
typedef struct mplsFecFilter{
unsigned short listNo; /* MPLS FEC filters No. */
unsigned char allFilterFlag; /* only used for configuration
if allFilterFlag equals to the following
value, printe the warning information to
operator.
MPLS_FEC_FILTER_ENABLE_ALL: enable all,
MPLS_FEC_FILTER_DISABLE_ALL: disable all
*/
singleFecFilterAddr_t *FecFilter;
struct mplsFecFilter *next;
}MPLS_PACK mplsFecFilterAll_t;
typedef struct{
unsigned char advFlag; /* initial value is MPLS_NOT_ADVERTISE_LBLS,
the value changes to MPLS_ADVERTISE_TAGS after setup*/
unsigned short num; /* if(advFlag==MPLS_ADVERTISE_TAGS&&num==0),advertise all
labels to all neighbors */
unsigned short filterListNo[MAX_MPLS_FEC_FILTER_ITEMS]; /* corresponding to listNo of
struct MplsFecFilterConfig_t*/
}MPLS_PACK mplsFecFilterAdvertiseLbls_t;
typedef struct lsp_key
{
unsigned short localLspId; /* er lsp 的标识号 */
unsigned long IngressId; /* er lsp 的标识号 */
} LSP_KEY;
typedef struct ErLsp
{
MPLS_AVL_NODE lsp_node;
LSP_KEY lsp_key;
struct{
struct ErLsp *sbNext;
struct ErLsp *sbFront;
struct ErLsp *NhNext;
struct ErLsp *NhFront;
struct ErLsp *dstNext;
struct ErLsp *dstFront;
unsigned long *NhListHead;
unsigned long *dstListHead;
}cr_lsp_list; /* 路由 业务板链表 */
#define MPLS_TUNNEL_BACKUP 16 /* 进行或操作 */
#define MPLS_TUNNEL_MASTER 0 /* 进行与操作 */
#define MPLS_ROUTE_DOWN 1 /* 进行或操作 */
#define MPLS_ROUTE_UP 240 /* 进行与操作 */
unsigned char backup_routedown; /* 备份和路由标志,高四位为:backup ; 低四位为:route down*/
unsigned char metric; /* traffic metric,用于提供给转发决定优选
哪一条lsp*/
unsigned long nexthop[2];
unsigned char ConnStatus;
/* down(1),up(2),abort(4), down表示此LSP建立了或已经发下去,up表示此LSP已发下去且收到
建立成功的消息, abort表示对此LSP发送了abort消息。用于表示LSP配置完毕后的状态 */
unsigned short ReqNum; /* label request number */
unsigned char ErlspWcElemExists; /* 通配类型FEC是否存在 */
unsigned char ErlspLooseRouteChange; /* loose route change or not */
unsigned char ErlspFecElemType; /* FEC type: it's num should correspond to num of ErAddresses */
unsigned char ErlspNumberFecElements; /* 此lsp中的FEC单元数*/
fecTlv_t FecTlv[FECS_MAX_IN_LSP]; /* FEC */
unsigned short ErlspNumberErHops; /* 此lsp中的hop数 */
ErLspAddr_t ErAddress[NEXT_HOPS_MAX_IN_LSP]; /* next hop address*/
unsigned char validHopNo; /* first valide hop no. */
mplsLdpTraffic_t traffic;
unsigned char ErlspPinFlag; /* route pinning */
unsigned long ErlspRsCls; /* resource class, 32位 in the draft */
unsigned char ErlspQosMark;
/*add by xjs,2003-7-24 10:00*/
#define CBR_CDR_CBS_NULL 0 /*表示没有CDR/CBS配置*/
#define CBR_CDR_DEFAULT 1 /*表示CDR为默认值*/
#define CBR_CDR_CONFIG 2 /*表示CDR为配置值*/
#define CBR_CBS_DEFAULT 4 /*表示CBS为默认值*/
#define CBR_CBS_CONFIG 8 /*表示CBS为配置值*/
/*add end*/
mplsLdpPreemption_t preempt;
unsigned long statusCode; /*错误代码 */
unsigned long lspbytes; /* bytes throughout the lsp */
unsigned char flag; /* 用于表示LSP配置过程中的状态:
LSP_FLAG_NOT_SET: 空,
LSP_FLAG_SETTING: 正建立,
LSP_FLAG_SETUP_OK:建立完毕
*/
#define MPLS_FILTER_TUNNEL_REPEATE 16
#define MPLS_FILTER_TUNNEL_DELETE 32
unsigned char FecGetSource; /* 高位: 是否为重新绑定, 低位: lsp 建立方式 */
/* lspCBNo_t upLspCBStru; szh mod 2001-12-24 11:09*/
unsigned long TimerId;
unsigned long hopchanTimerId;
unsigned char SbModule;
unsigned short setFilterNo; /* 指向 TE Filter,建立LSP时用 */
unsigned short delFilterNo; /* 指向 TE Filter,删除LSP时用 */
fec_msg_tlvs_flags tlvExist;
unsigned char cos; /* class of service sbp 2001-12-27 */
unsigned char lspType; /* PATH_DYNAMIC: 1; PATH_EXPLICIT: 2 */
unsigned char loadbalance;
mplsLdpAtmLabel upAtmLabel;
unsigned long upGenLabel;
mplsLdpAtmLabel downAtmLabel;
unsigned long downGenLabel;
}MPLS_PACK mplsErLspTable_t;
typedef struct HopLsp_s
{
unsigned char ConnStatus; /* RowStatus */ /* down(LSP_SET_STATUS_DOWN),
up(LSP_SET_STATUS_UP),down表示此LSP建立了或已经发下去,
up表示此LSP已发下去且收到建立成功的消息
用于表示LSP配置完毕后的状态 */
unsigned char flag; /* 用于表示LSP配置过程中的状态:
LSP_FLAG_NOT_SET: 空,
LSP_FLAG_SETTING: 正建立,
LSP_FLAG_SETUP_OK:建立完毕 */
unsigned short LspNo; /* localLspId */
unsigned short ReqNum; /* label request number */
/* unsigned char LspFecElemType; FEC type: it's num should correspond to num of ErAddresses */
/* unsigned char ErlspNumberFecElements; 此lsp中的FEC单元数*/
/* fecTlv_t FecTlv[FECS_MAX_IN_LSP]; FEC */
/* unsigned short ingressNumber; 此lsp中的hop数 */
/* hopLspAddr_t inAddr[NEXT_HOPS_MAX_IN_LSP]; next hop address*/
unsigned short egressNumber; /* 此lsp中的hop数 */
hopLspAddr_t egressAddr[NEXT_HOPS_MAX_IN_LSP]; /* next hop address*/
unsigned long statusCode; /*错误代码 */
unsigned long lspbytes; /* bytes throughout the lsp */
unsigned long TimerId;
unsigned long hopchanTimerId;
unsigned char SbModule;
/* lspCBNo_t upLspCBStru; szh mod 2001-12-24 11:09*/
unsigned char lspType; /* fec filter setup(1), hop by hop lsp(2) */
unsigned char FecGetSource;
struct HopLsp_s *front; /* 指向父节点 */
struct HopLsp_s *next; /* 指向子节点 */
}MPLS_PACK mplsHopLspTable_t;
/* sbp 2002-11-14 deal sb offline quikly */
typedef struct lsp_sb{
mplsErLspTable_t *next;
}MPLS_PACK lsp_sb_t;
/* sbp 2002-11-14 deal route changing quikly */
typedef struct lsp_nh{
MPLS_AVL_NODE lsp_nh_node;
mpls_fec_key lsp_nh_key;
unsigned char operType;
unsigned long NextHop; /*下一跳的IP地址*/
mplsErLspTable_t *dst_lspPtr; /* dst */
mplsErLspTable_t *nh_lspPtr; /* next hop */
}MPLS_PACK lsp_nh_t;
typedef struct lsp_nh_temp{
lsp_nh_t *lsp_nh;
struct lsp_nh_temp *next;
}lsp_nh_temp_t;
/* sbp 2003-1-14 */
typedef struct lsp_prio_key
{
unsigned char metric; /* er lsp 的标识号 */
unsigned long dst; /* er lsp 的标识号 */
} LSP_PRIO_KEY;
typedef struct lsp_prio{
MPLS_AVL_NODE lsp_prio_node;
LSP_PRIO_KEY lsp_prio_key;
unsigned char lsp_num;
}MPLS_PACK lsp_prio_t;
#include"_restore.h"
#endif /* MPLS_LSP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -