📄 ldp.h
字号:
unsigned short msgType; /* 记录下游消息类型 */
#ifdef PERFOMANCE_NEW
struct _mplsLdpLspCB * XcNext; /* 指向下一条待处理Xc */
struct _mplsLdpLspCB * XcPrev; /* 指向上一条待处理Xc */
struct _mplsLdpLspCB * FecLbNext; /* 指向下一条待处理标记 */
struct _mplsLdpLspCB * FecLbPrev; /* 指向上一条待处理标记 */
#endif
unsigned char waitflag; /* 记录待处理类型 */
unsigned char waitmsgtype; /*记录消息类型 */
unsigned char waitnotype; /* 记录通知消息类型*/
unsigned long errorcode;
} MPLS_PACK mplsLdpLspCB; /* 此控制块适用于pvc的情况,将上下游、
下一跳改变触发控制块合并在一起处理 */
typedef struct _mplsLdpUpCB
{
struct _mplsLdpUpCB * prev;
struct _mplsLdpUpCB * next;
struct _mplsLdpFecEntry * selffec;
struct
{
struct _mplsLdpUpCB * prev;
struct _mplsLdpUpCB * next;
} up_session_list;
unsigned long matchno;
unsigned long upGenLabel; /* 上游通用标记 */
unsigned long upSessionIndex; /* 上游LDP会话Index */
mplsLdpId_t upPeerLdpid; /* 上游对等Ldpid */
unsigned long msgid; /* 上游消息id;由于通用标记分配实际上
遵守merge规则,来自一个上游只有一
个msgid */
unsigned short state;
mplsLdpAttr pAttr; /* 属性指针 */
unsigned char *pRes; /* 预留指针,可以指向下一条纪录 */
unsigned char waitflag; /* 记录待处理类型 */
unsigned char waitmsgtype; /*记录消息类型 */
unsigned char waitnotype; /* 记录通知消息类型*/
} MPLS_PACK mplsLdpUpCB;
typedef struct _mplsLdpDownCB
{
struct _mplsLdpDownCB * prev;
struct _mplsLdpDownCB * next;
struct _mplsLdpFecEntry * selffec;
struct
{
struct _mplsLdpDownCB * prev;
struct _mplsLdpDownCB * next;
} down_session_list;
unsigned long matchno;
unsigned long downGenLabel; /* 下游通用标记 */
unsigned long downSessionIndex; /* 下游LDP会话Index */
unsigned short outIfindex; /* 输出ifindex号 */
unsigned char module;
unsigned long nexthopAddr; /* 下一跳地址 */
mplsLdpId_t downPeerLdpid; /* 下游对等Ldpid */
unsigned long msgid; /* 下游消息id;由于通用标记分配实际上
遵守merge规则,发往一个下游只有一
个msgid */
unsigned short state;
unsigned long timerid; /* 定时器 */
mplsLdpAttr pAttr; /* 属性指针 */
unsigned char *pRes; /* 预留指针,可以指向下一条纪录 */
unsigned char waitflag; /* 记录待处理类型 */
unsigned char waitmsgtype; /*记录消息类型 */
/* uchar waitnotype; /* 记录通知消息类型*/
} MPLS_PACK mplsLdpDownCB;
typedef struct _mplsLdpFecEntry
{
MPLS_AVL_NODE fec_avl_node;
mpls_fec_key fec_key;
unsigned long index; /* 标示号 */
unsigned short mplsLdpFecType; /* (1)prefix,(2)HostAddr */
/* unsigned long mplsLdpFecAddrLen; *//* 1 - 32 */
unsigned long mplsFecAddrFamily; /* Ipv4 */
/* unsigned long mplsFecAddr; *//* FEC addr */
/* 当mplsLdpFecType = 1,mplsLdpFecAddrLen = 0,
mplsFecAddrFamily = ipv4, mplsFecAddr = 0表缺省路由 */
unsigned short owner; /* (1)routing,(2)ldp,(4)policy
路由有效,则包含路由;按位域有效 */
unsigned short nodeType; /* (1) EGRESS, (2) Proxy_EGRESS
本地路由,则为EGRESS,本地动态路由通过策略控制可置为Proxy_EGRESS */
unsigned short reqInstance; /* 向当前下一跳请求次数,缺省为0,不断请求 */
unsigned long localGenLabel; /* 本地分配的通用标记 */
unsigned long nexthopAddr; /*下一跳信息,下一跳地址 */
unsigned short outIfindex; /* 下一跳输出端口*/
unsigned char module; /* 下一跳输出模块号*/
unsigned long nexthopSessionIndex;
/*
unsigned char *pLspCB;
unsigned char *pUpCB;
unsigned char *pDownCB;
*/
#ifndef PERFOMANCE_NEW
struct _mplsLdpFecEntry * XcNext; /* 指向下一条待处理Xc */
struct _mplsLdpFecEntry * XcPrev; /* 指向上一条待处理Xc */
#endif
struct _mplsLdpFecEntry * FecLbNext; /* 指向下一条待处理标记 */
struct _mplsLdpFecEntry * FecLbPrev; /* 指向上一条待处理标记 */
struct _mplsLdpFecEntry * LblMsgNext; /* 指向下一条待处理消息 */
struct _mplsLdpFecEntry * LblMsgPrev; /* 指向上一条待处理消息 */
struct
{
mplsLdpLspCB * first;
mplsLdpLspCB * link; /* record the first wait process mplsLdpLspCB */
mplsLdpLspCB * last;
}lsp_cb_list;
struct
{
mplsLdpUpCB * first;
mplsLdpUpCB * link; /* record the first wait process mplsLdpUpCB */
mplsLdpUpCB * last;
}up_cb_list;
struct
{
mplsLdpDownCB * first;
mplsLdpDownCB * link; /* record the first wait process mplsLdpDownCB */
mplsLdpDownCB * last;
}down_cb_list;
unsigned char pRes; /* 用于区分egress to配置的路由和本地路由,用于处理所配置的策略 */
} MPLS_PACK mplsLdpFecEntry;
typedef struct
{
unsigned short labelType; /* 标记类型 (1) atm-gen
(2)gen-gen (3)gen-atm */
mplsLdpAtmLabel upatmLabel; /* up atm label */
unsigned long upgenLabel; /* up gen label */
mplsLdpId_t uppeerid; /* up peer ldpid */
mplsLdpAtmLabel downatmLabel; /* down atm pvc */
unsigned long downgenLabel; /* down gen label */
mplsLdpId_t downpeerid; /* down peer ldpid */
unsigned char nodeType; /*节点类型 */
unsigned long instance; /* 标记引用的次数 */
unsigned char *pAttr; /* 与标记相关的属性 */
unsigned char *pRes; /* 预留指针,可以指向下一条纪录 */
} MPLS_PACK mplsLdpLabelCB; /*此结构保存转发生效的标记对应关系,为标记融合使用,发生标
记融合时,直接由下游标记,ldp peer索引到上游或下游标记 */
typedef struct _mplsLdpCrLsp
{
MPLS_AVL_NODE crfec_avl_node;
mpls_crfec_key crfec_key;
unsigned long index; /* crlsp 索引值 */
/* unsigned long ingressid; *//* crlsp标示,输入节点标示 */
/* unsigned short locallspid; *//* crlsp标示,本地lspid */
unsigned short mplsLdpFecType; /* (1)prefix,(2)HostAddr */
unsigned long mplsLdpFecAddrLen; /* 1 - 32 */
unsigned long mplsFecAddr; /* FEC addr */
/* 当mplsLdpFecType = 1,mplsLdpFecAddrLen = 0,
mplsFecAddrFamily = ipv4, mplsFecAddr = 0表缺省路由 */
unsigned long nexthopAddr; /*下一跳信息,下一跳地址 */
unsigned short outIfindex; /* 下一跳输出端口*/
unsigned char module; /* 下一跳输出模块号*/
mplsLdpFtnEntry fecfilter; /* crlsp转发过滤条件 (ingress valid) */
mplsLdpLspCB crlspCb; /* crlsp状态控制块 */
/* 以下为crlsp特定的tlv信息,需要中继,因此需要临时保存 */
mplsLdpErTlv_t erTlv;
mplsLdpTrafficTlv_t trafficTlv;
mplsLdpPinningTlv_t pinningTlv;
mplsLdpResClsTlv_t resClassTlv;
mplsLdpPreemptTlv_t preemptTlv;
unsigned short tlvExists;
#ifndef PERFOMANCE_NEW
struct _mplsLdpCrLsp * XcNext; /* 指向下一条待处理Xc */
struct _mplsLdpCrLsp * XcPrev; /* 指向上一条待处理Xc */
#endif
struct _mplsLdpCrLsp * FecLbNext; /* 指向下一条待处理标记 */
struct _mplsLdpCrLsp * FecLbPrev; /* 指向上一条待处理标记 */
struct _mplsLdpCrLsp * LblMsgNext; /* 指向下一条待处理消息 */
struct _mplsLdpCrLsp * LblMsgPrev; /* 指向上一条待处理消息 */
unsigned char metric; /* 2002/12/16 */
} MPLS_PACK mplsLdpCrLsp;
typedef struct _mpls_ldpFecAggr{
struct _mpls_ldpFecAggr *prev; /* B10 C index ushort */
struct _mpls_ldpFecAggr *next; /* B10 C index ushort */
mplsLdpAtmLabel upAtmLabel; /* up atm label */
mplsLdpAtmLabel downAtmLabel; /* down atm label */
unsigned short refNum; /* reference number */
mplsLdpAttr attr; /* mpls request attribute */
unsigned char nodeType; /* node type */
unsigned long index1; /* B10 C index ulong */
unsigned short index2; /* B10 C index ushort */
unsigned long nexthop; /* for aggreate route */
}MPLS_PACK mpls_ldpFecAggr;
typedef struct
{
mpls_ldpFecAggr * first;
mpls_ldpFecAggr * last;
}MPLS_PACK mpls_ldpFecAggrBody;
#define MPLS_INDEX_ITEM 256
#define MPLS_ITEM_NO 32
typedef struct
{
unsigned long index[MPLS_INDEX_ITEM];
unsigned short nul;
}mpls_ldpIndexItem;
typedef struct
{
mpls_ldpIndexItem item[MPLS_ITEM_NO];
}MPLS_PACK mpls_ldpIndex;
typedef struct
{
mplsLdpLspCB * first;
mplsLdpLspCB * last;
}MPLS_PACK mpls_lsp_list;
typedef struct
{
mplsLdpUpCB * first;
mplsLdpUpCB * last;
}MPLS_PACK mpls_up_list;
typedef struct
{
mplsLdpDownCB * first;
mplsLdpDownCB * last;
}MPLS_PACK mpls_down_list;
typedef struct
{
unsigned short module;
unsigned short port;
}MPLS_PACK mpls_sb_key;
typedef struct
{
MPLS_AVL_NODE sb_avl_node;
mpls_sb_key key;
struct
{
mplsLdpLspCB * first;
mplsLdpLspCB * last;
}lsp_up_cb_list;
struct
{
mplsLdpLspCB * first;
mplsLdpLspCB * last;
}lsp_down_cb_list;
}MPLS_PACK mpls_sb_list;
typedef struct _mpls_fec_search
{
struct _mpls_fec_search *prev;
struct _mpls_fec_search *next;
/*mplsLdpSession_t *session;*/
void * session;
unsigned long tmier;
unsigned long addr;
unsigned short addrLen;
unsigned short stop;
/* wengqing 2002.12.16 per session when route add or delete, should scan from fec head */
}MPLS_PACK mpls_fec_search;
typedef struct
{
mpls_fec_search * first;
mpls_fec_search * last;
}MPLS_PACK mpls_fec_search_list;
typedef struct
{
unsigned char start; /* 0: oam is not getting data, 1: oam is getting data */
unsigned char dumping; /* 0: route is not dumping, 1: route is dumping */
}MPLS_PACK mpls_oam_binding_struct;
/* 2003.4.23 wengqing 增加保护的结构 */
typedef struct _mpls_fec_scan
{
unsigned long timer;
unsigned long addr;
unsigned short addrLen;
unsigned short stop; /* 0: fec; 1: fec ; 2: crfec */
}MPLS_PACK mpls_fec_scan;
#include "_restore.h"
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -