?? 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
搜索代碼
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -