📄 ldp.h
字号:
/*修改记录*/
/* 2003-3-24 fengjun 为防止C处理及标记整合处理次序混乱修改C及标记整合待处理链表内容,
由链接FEC改为链接LSP控制块,修改mplsLdpLspCB结构和mplsLdpFecEntry、
mplsLdpCrLsp结构, */
/* 2003.3.4 huyonghong add for ldp path vector memmory */
/* 2003.3.26 hyh modify from 8hop to 10hop*/
/* 2003-6-3 hyh 修改timer的最大个数 */
#ifndef LDPNEW_H
#define LDPNEW_H
#include "ldpcomn.h"
#include "ldpfwd.h"
#include "encdec.h"
#include "mpls_avl.h"
#include "ldpstr.h"
#include "mpls_cmn.h"
#include "mpls_mgr.h"
#include "_noalign.h"
#define LDP_DEBUG 1
#define PERFOMANCE_NEW 1 /*C及标记整合新处理机制 */
/*****************************************************************************/
/* mpls basic type define
*
*/
/*****************************************************************************/
#define GEN_LABEL 1
#define ATM_LABEL 2
#define ORDERED 1
#define INDEPENDENT 2
#define LDP_FWD_CREATE 1
#define LDP_FWD_CLOSE 2
#define MPLS_IMPLICIT_NULL 3
#define MPLS_EXPLICIT_NULL 0
#define MPLS_LOOPBACK_ADDRESS (0x7f000001)
/*****************************************************************************/
/* mpls basic type define
*
*/
/*****************************************************************************/
#define MPLS_NULL 0
#define MPLS_BOOL unsigned short
#ifndef MPLS_TRUE
#define MPLS_TRUE 1
#endif
#ifndef MPLS_FALSE
#define MPLS_FALSE 0
#endif
/*****************************************************************************/
/* mpls fec attribute, fec owner;
* bit field process: MPLS_OWNER_ROUTE, route is valid;
* MPLS_OWNER_LDP , DU ldp create;
* MPLS_OWNER_POLICY, proxy egress create;
*/
/*****************************************************************************/
#define MPLS_OWNER_ROUTE 1
#define MPLS_OWNER_LDP 0
#define MPLS_OWNER_POLICY 4
/*****************************************************************************/
/* mpls route process code
*/
/*****************************************************************************/
#define ROUTE_ADD 1
#define ROUTE_DELETE 2
#define ROUTE_CHANGE 3
#define SESSION_UP 4
#define MPLS_ROUTE_OWN 1
#define MPLS_ROUTE_DYN 2
#define MPLS_ROUTE_ADDRESS 3
#define MPLS_ROUTE_POLICY 4
/*****************************************************************************/
/* mpls fec nodeType;
*/
/*****************************************************************************/
#define MPLS_NODE_INGRESS 1
#define MPLS_NODE_EGRESS 2
#define MPLS_NODE_PROXY_EGRESS 2
#define MPLS_NODE_INTERM 3
#define MPLS_NODE_INTERM_INGRESS 4
#define MPLS_NODE_INTERM_EGRESS 5
/*****************************************************************************/
/* mpls fec address family;
*/
/*****************************************************************************/
#define MPLS_IPV4 1
#define MPLS_IPADDR_MIN 0x01000000
#define MPLS_IPADDR_MAX 0xDFFFFFFF
#define MERGE_NUM 1
/* operation type 1: add, 2: delete */
/* route type: mine, dynamic, proxy */
/* destination address */
/* destination netmask */
/* nexthop ip address */
/* interface index */
#define CHANGROUTE_MAX 16
/*typedef struct{
unsigned short Type;
unsigned short rt_type;
unsigned long Dest;
unsigned long NetMask;
unsigned long NextHop;
short IfIndex;
} MPLS_PACK IPFORWARDINGTAB;*/
/*typedef struct{
unsigned short MsgNo;
unsigned long changenumber;
IPFORWARDINGTAB IpForwardingTab[CHANGROUTE_MAX];
} MPLS_PACK ROUTEMESSAGE_UPDATE;*/
#define MAX_LDP_ADDR 128
#define MAX_LDP_FEC (4*1024)
#define MAX_LDP_UPCB (1024*4)
#define MAX_LDP_DOWNCB (1024*4)
#define MAX_LDP_CRFEC (2*1024)
#define MAX_LDP_LSPCB (64*1024)
#define MAX_LDP_TIMER (4*1024) /*2048*/
#define MAX_LDP_XC_QUE 256 /*2048,by hyh,guarenteed by performance*/
#define MAX_LDP_XC_CRQUE 64 /* add by fj 03-01-26 to record the CR_wait_c processor */
#define MAX_LDP_FECLABEL_QUE 1024
#define MAX_LDP_FEC_QUE 1024
/* add by fengjun for guangzhou 0410 */
#define MAX_LDP_FEC_AGGR 5120
#define MAX_LDP_LBLMSGREQ_NUM_1NODE 256
#define MAX_LDP_LBLMSG_BUF_1NODE 1024
#define MAX_LDP_LBLMSGREQ_NUM 64
#define MAX_LDP_SB 16
#define MAX_LDP_FEC_SEARCH 128
#define MAX_LDP_COMN_PV MAX_LDP_LSPCB
#define MAX_LDP_EXT_PV 512
#define LDP_PV_COMN_SIZE 40 /* 2003.3.26 hyh modify from 8hop to 10hop*/
#define LDP_PV_EXT_SIZE 128 /* 32hop */
#define MAX_LDP_POLICY 256 /* hyh add 2003-4-3 ,lixia mod 2003-11-6*/
#define MAX_REL_PVC 1024 /* lixia add 2003-9-22,mod 2003-10-21 */
#define PERMIT_LDP_POLICY 128 /*lixia add 2003-11-6 */
/* lixia 2003-11-10 add for policy process */
#define DISTRIBUT_MODE 32
#define DENY 0
#define PERMIT 1
#define EGRESS_TO 2
#define MPLS_DENY_POLICY 1
#define MPLS_EGRESS_TO_POLICY 4
typedef enum
{
IUMEM_LDP_ADDR = 0,
IUMEM_LDP_FEC,
IUMEM_LDP_UPCB,
IUMEM_LDP_DOWNCB,
IUMEM_LDP_CRFEC,
IUMEM_LDP_LSPCB,
IUMEM_LDP_TIMER,
IUMEM_LDP_XC_QUE,
IUMEM_LDP_XC_QUE_LQE, /* by hyh 02-7-20 10:40 */
IUMEM_LDP_FECLABEL_QUE,
IUMEM_LDP_FECLABEL_QUE_LQE, /* by hyh 02-7-20 */
IUMEM_LDP_FEC_QUE,
IUMEM_LDP_FEC_QUE_LQE, /* by hyh 2002-9-16 */
IUMEM_LDP_LBLMSG_QUE,
IUMEM_LDP_LBLMSG_QUE_LQE,
IUMEM_LDP_LBLMSG_BUFFER,
IUMEM_LDP_FEC_AGGR,
IUMEM_LDP_SB,
IUMEM_LDP_FEC_SEARCH,
IUMEM_LDP_COMN_PV, /* by hyh 2003-3-3 */
IUMEM_LDP_EXT_PV, /* by hyh 2003-3-3 */
IUMEM_LDP_POLICY, /* by hyh 2003-4-3 */
IUMEM_LDP_RELPVC, /* lixia add 2003-9-22 */
MAX_LDP_UTIL_MEM_TYPES
}IUMEM_LDP_TYPES;
typedef struct
{
unsigned long mplsFecAddr;
unsigned long mplsLdpFecAddrLen;
} MPLS_PACK mpls_fec_key;
typedef struct
{
unsigned long ingressid;
unsigned short locallspid;
} MPLS_PACK mpls_crfec_key;
typedef struct
{
MPLS_AVL_NODE addr_avl_node;
unsigned long addr_key;
}MPLS_PACK mpls_local_addr;
typedef struct{
unsigned char ctrmode;
unsigned char aggregate;
}MPLS_PACK LdpCtrModeAggregate_t;
typedef struct
{
unsigned char hopcount; /* hop count值 */
unsigned char *pAttr; /* 为了节约内存,用指针指向Path Vector向量 */
unsigned short len; /* Path Vector向量长度 */
unsigned char hopvalue_valid; /* 0: no valid, 1: valid */
unsigned char attrvalue_valid; /* 0: no valid, 1: valid */
}MPLS_PACK mplsLdpAttr;
typedef struct
{
unsigned long matchno; /* 为提高可靠性匹配,增加匹配号 */
/* 下一跳信息*/
mplsLdpAtmLabel downAtmLabel; /* 下游ATM标记 */
unsigned long downSessionIndex; /* 下游LDP会话Index */
mplsLdpId_t downPeerLdpid; /* 下游对等Ldpid */
unsigned long downMsgid; /* 下游message id */
mplsLdpAttr pAttr; /* 属性指针 */
unsigned short nodeType; /* 针对此lsp节点类型 */
/* (1) INGRESS, (2) EGRESS,(3)MPLS_NODE_INTERM,(4) MPLS_NODE_INTERM_INGRESS
(5) MPLS_NODE_INTERM_EGRESS */
unsigned long timerid; /* 定时器 */
unsigned short status; /* 控制块状态 */
unsigned short subStatus; /* 控制块子状态 */
} MPLS_PACK mplsLdpNexthopTCB;
typedef struct _mplsLdpLspCB
{
struct _mplsLdpLspCB * prev;
struct _mplsLdpLspCB * next;
void * selffec;
struct
{
struct _mplsLdpLspCB * prev;
struct _mplsLdpLspCB * next;
}up_lsp_session_list;
struct
{
struct _mplsLdpLspCB * prev;
struct _mplsLdpLspCB * next;
}down_lsp_session_list;
unsigned long lspIndex; /* 匹配号 */
/* 上游信息*/
unsigned short upifIndex; /* 上游入端口 *//*add by hyh*/
mplsLdpAtmLabel upAtmLabel; /* 上游ATM标记 */
unsigned long upSessionIndex; /* 上游LDP会话Index */
mplsLdpId_t upPeerLdpid; /* 上游对等Ldpid */
unsigned long upMsgid; /* 上游message id */
unsigned long upGenLabel; /* 只对MPLS_CRLSP_FEC有效,上下游可以是通用标记
也可以是ATM标记 */
/* 下游信息*/
unsigned short downifIndex; /* 下游出端口 *//*add by hyh*/
mplsLdpAtmLabel downAtmLabel; /* 下游ATM标记 */
unsigned long downSessionIndex; /* 下游LDP会话Index */
mplsLdpId_t downPeerLdpid; /* 下游对等Ldpid */
unsigned long downMsgid; /* 下游message id */
unsigned long downGenLabel; /* 只对MPLS_CRLSP_FEC有效,下游通用标记 */
mplsLdpAttr pAttr; /* 属性指针 */
unsigned char pNexthopChange; /* 只对普通LSP有效,下一跳改变控制块信息,
当业务板告警,路由删除时:需要知道是否删除LSPCB.
0: 不删除;1:删除
*/
/*lsp 信息*/
unsigned char lspType; /*1:普通lsp; 2:crlsp*/
#define LDP_HOP_LSP 1
#define LDP_CR_LSP 2
unsigned short nodeType; /* 针对此lsp节点类型 */
unsigned short status; /* 控制块状态 */
unsigned short subStatus; /* 控制块子状态 */
unsigned long timerid; /* 定时器 */
unsigned char resend; /*只对FEC的INGRESS节点有效,缺省为1,表示需要重发request*/
unsigned long index1;
unsigned short index2;
unsigned char *lsp_loc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -