⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldp.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 H
📖 第 1 页 / 共 2 页
字号:
/*修改记录*/
/* 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 + -