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

📄 ldpi.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 H
字号:

/***********************************************************************/          
/*	Product Name:	ZXB10                                       	   */          
/*	Module  Name:	A075    										   */
/*	File    Name:   ldpi.h								        	   */          
/*	Author  Name:   Jing Xiaoyuan, Li Jianping						   */          
/*	Creat   Date:	12/20/99										   */
/*	Version		:	1.0                                         	   */          
/*	Function    :	Ldp进程的头文件,定义了与LDP协议有关的公共参数、   */
/*					初始化过程使用的参数、标记分配过程使用的参数和所有	*/
/*					被本进程中其它C文件使用的公共函数           		*/
/*     History  : Wengqing 2001.8.30 add  session sub state             */
/*                Wengqing 2001.11.28 use one global value to create msgid*/
/************************************************************************/          


#ifndef LDPI_H                                                              
#define LDPI_H 

#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <memory.h>

#include	"mplstype.h"
#include	"mplsfunc.h"
#include    "mplsevent.h"
#include    "Ldpcomn.h"
#include    "fec.h"
#include    "encdec.h"

#include "_noalign.h"

/********************************************************************/          
/*							                                       	*/          
/*					1.本进程中使用的宏定义    						*/
/*														        	*/          
/********************************************************************/          
/*定时器年龄递增计数*/
#define MPLS_AGE_ADD		2     /* huyonghong modify from 1 to 2 for set-timer 2003.2.10 */


/* 一般参数定义 */
#undef  DEBUG_LDP
#undef  DEBUG_LDP_HELLO 
#undef __BGS10_MPLS_DEBUG
#define SESSION_DEBUG                       /* session debug switch */
#undef MPLS_PERFORMANCE_TEMPDEBUG   
#undef MPLS_PERFORMANCE_DEBUG       
#define MPLS_ERR_PRINT
#define MPLS_PROTECT     1

//  wengqing 2001/03/21 LDP online modification begine
#define ENABLE_LDP_ONLINE
//#define ENABLE_LDP_DIFFSERV
//#define ENABLE_LDP_LOOPDETECT
//  wengqing 2001/03/21 LDP online modification end

#ifdef  ENABLE_LDP_ONLINE
#define LDP_LSRATR_MOD      		1
#define LDP_INTERFACE_MOD   		2
#define LDP_ENTITY_MOD      		3
#endif

#define LDP_SET									1
#define LDP_SEARCH							2
#define LDP_DELETE							3


#define LIC0_MODULE				(unsigned char)0



#define UNI_FLAG									0
#define NNI_FLAG									1
#define LDP_MESSAGE_MAXNUM  		1	/*11,by wq,use one global value to create msgid */
#define PROTOCOL_VERSION    			1


/* not define (__INSTALL_MPU), 参见ldpmibcm.h  */
#define MPLSLDPINTERFACE_MAX_LIC  256
#define MPLSLDPENTITY_MAX_LIC     256


#define INGRESS_SB_NUM          	1
#define PORT_MAXNUM             	8
#define ENTITY_MAXNUM           	MPLSLDPENTITY_MAX_LIC

#define HELLO_MAXNUM	        		50 /* 或者 MPLSLDPINTERFACE_MAX_LIC */
#define SESSION_MAXNUM          	MPLSLDPINTERFACE_MAX_LIC    

#define RETRY_TIME_MAXNUM       	LSP_MAXSIZE
#define MAX_MSG_LENGTH          	2100  /* 一个LDP消息的最大长度为1100字节 */
#define MAX_MSG_BUFFER						32
#define FEC_MSG_TYPE              0x0408

#define CONTENT_MAX_LENGTH  			(MPLS_MAXNUMFECELEMENT * sizeof(mplsFecElement_t))

#define		PROT_UDP	    				17
#define		PROT_TCP        				6
#define   UDP_MULTICAST_ADDRESS		0xe0000002	/* 224.0.0.2 */

#define   NULL            				0
#define   MIB_SUCCESS					0      /* MIB进程返回的真值  */
#define   MIB_FAIL 					1      /* MIB进程返回的假值  */
#define	  PVC_SUCCESS					0			
#define	  PVC_FAIL					1
#define   LDP_TRUE 					0      /* 自己函数的真值     */
#define   LDP_FALSE 				       -1      /* 自己函数的假值     */
#define   NOLSPCB                   -2
#define   LDP_DISABLE         		0
#define   LDP_ENABLE          		1

#define 	DETECTION_UNKNOWHOPVALUE	0

/*  Address family  定义 */
#define     IP              1


/*  消息MessageId的定义  */
#define     NOT_M					0	//				0
#define     HELLO_M					0	//	1
#define     INIT_M					0	//	2
#define     KEEPALIVE_M				0	//		3
#define     ADDR_M					0	//	4
#define     LBLREQ_M				0	//		5
#define     LBLMAP_M				0	//		6
#define     LBL_W_R_M				0	//		7
#define     LBLABORT_M				0	//		8


/*  会话协商参数 */
#define     DOWNSTREAMONDEMAND      1
#define     DOWNSTRAMUNSOLICITED    0

#define     BIDIRECTVC              0
#define     UNIDIRECTVC             1
#define     DIRECT_HELLO   	    1
#define     TARGET_HELLO   	    2

#define     ACTIVE          	   1
#define     PASSIVE         				2
#define     LDP_ODD             				1
#define     LDP_EVEN            				2


/* 静态链表标识定义 */
#define LDP_EMPTY                   	0xffffffff
#define START_ENTRY					2 /* 从下标为2开始存放有效表项 */

#define HELLO_TMID              	( unsigned char )	1
#define SESSION_TMID            	( unsigned char )	2
/*#define RETRY_TMID				3 */
#define FEC_LINK_TABLE           	( unsigned char )	3
#define UP_LSP_CB_TABLE         	( unsigned char )	4
#define DOWN_LSP_CB_TABLE       	( unsigned char )	5
#define TRIGGER_CB_TABLE        	( unsigned char )	6

#define LSPID_INDEX_FLAG		    	( unsigned char )	7
#define REQID_SESSID_INDEX_FLAG		( unsigned char )	8
#define LABEL_SESSID_INDEX_FLAG		( unsigned char )	9
#define LSP_CB_NO                 ( unsigned char )	10

#define LDP_MSG                   ( unsigned char ) 11


/* 定时器有关参数定义 */
#define LDP_MIN_TIME_INTERVAL           10
#define DEFAULT_DIRECT_LDP_HELLO_INTERVAL		15
#define DEFAULT_TARGET_LDP_HELLO_INTERVAL		45
#define DEFAULT_LDP_KEEPALIVE_INTERVAL			45
#define LDP_HELLO_CHECK_INTERVAL				5
#define LDP_SESSION_CHECK_INTERVAL				5
#define LDP_LIST_CHECK_INTERVAL					10

#define LDP_LIST_CHECK_ITEM_NUM					64  /* wengqing modify delete lspCb number */

#define TIMER1_PERIOD       					1

#define RETRY_TIME								(1*LDP_MIN_TIME_INTERVAL)
#define TCPREQ_TIME		    					(20*LDP_MIN_TIME_INTERVAL)
#define TCPREL_TIME								(0*LDP_MIN_TIME_INTERVAL) 
#define REL_MSG_TIME							(2*LDP_MIN_TIME_INTERVAL)

#define TIMER7_LDPPERIOD       					(40*LDP_MIN_TIME_INTERVAL)



/*  主状态定义 */
#define LdpInitStatus	      								0
#define LdpWorkStatus       								1



/*  会话状态机的五种状态  */
#define NONEXISTENT			    								1
#define INITIALIZED 		    								2
#define OPENREC				    									3
#define OPENSENT			    									4
#define OPERATIONAL			    								5
#define TCP_CONNECT_AWAITED	    						6
#define TCP_RELEASE_AWAITED	    						7

/* session FSM sub state    */
#define     SUBIDLE                					0
#define     NONIDLE             						1
#define     REL_MSG_AWAIT       						2
#define     REL_IND_AWAIT     							3


/*  Lsp控制块状态机的状态  */
#define IDLE                								1
#define RESPONSE_AWAITED    								2
#define ESTABLISHED         								3 	 
#define RELEASE_AWAITED     								4
#define NEW_NH_RETRY          							5
#define NEW_NH_RESPONSE_AWAITED							6


/*  LSP控制块状态机的子状态  */
#define FEC_INDEX_REQ_AWAITED 	    				7
#define BANDWITH_REQ_AWAITED	    					8
#define CREATE_PVC_REQ_AWAITED      				9
#define RELEASE_PVC_REQ_AWAITED     				10
#define RELEASE_BANDWITH_AWAITED						11

#ifndef LOOPDETECT_NONE
#define LOOPDETECT_NONE										1
#endif
#ifndef LOOPDETECT_OTHER
#define LOOPDETECT_OTHER										2
#endif
#ifndef LOOPDETECT_HOPCOUNT
#define LOOPDETECT_HOPCOUNT									3
#endif
#ifndef LOOPDETECT_PATHVECTOR
#define LOOPDETECT_PATHVECTOR								4
#endif
#ifndef LOOPDETECT_HOPANDPV
#define LOOPDETECT_HOPANDPV									5
#endif

#define VERY_FREQUENT           						2
#define FREQUENT		        								1
#define UNSPECIFIED             						0


#define		MPLS_LSP_STATE_PENDING						1
#define   	MPLS_LSP_STATE_NOPENDING  				ESTABLISHED

#define MPLS_POLICY_PERMIT     1
#define MPLS_POLICY_DENY       2
#define MPLS_POLICY_EGRESS     3

#define MPLS_POLICY_ANY            1
#define MPLS_POLICY_DST_MSK        2
#define MPLS_POLICY_NHOP           3
#define MPLS_POLICY_MASK           4

#define MPLS_RANDOM_TIME_RANGE     30         /*lixia add 2003-11-6 */
#define MPLS_RANDOM_TIME_START     60         /*lixia add 2003-11-6 */

/********************************************************************/          
/*							                                       	*/          
/*			    2.本进程中使用的数据结构定义    						*/
/*														        	*/          
/********************************************************************/          

/* 静态链表表示方法 */
typedef struct 
{
    unsigned long	next;  /* 存放序号 */
} MPLS_PACK listHead_t;


/*  Hello发送定时时间结构定义,对应于每一个Entity  */
typedef struct sendHelloTimer_s 
{
  	mplsLdpId_t     	entityId;
	unsigned long		    	holdTime;
	unsigned long           	timeRemain;
} MPLS_PACK sendHelloTimer_t;

/*  Hello定时器链表结构定义  */
typedef struct tmidHel_s
{
    unsigned long	        	next;
    unsigned short          	tmid;
    unsigned long           	helIndex;
} MPLS_PACK tmidHel_t;

/*  Session定时器链表结构定义  */
typedef struct  tmidSes_s
{
    unsigned long           	next;
    unsigned short         	 	tmid;
    unsigned long           	sesIndex;
} MPLS_PACK tmidSes_t;


/*  下一跳触发控制块定时器链表结构定义  */
typedef struct  tmidRetry_s
{
    unsigned long           	next;
    unsigned short          	tmid;
    unsigned long           	NHTCBNo;
} MPLS_PACK tmidRetry_t;

typedef struct _mpls_ldp_int_extra
{
	unsigned short		    	        ifIndex;
	unsigned long				        NextHop;
	unsigned char                       routeType;
	unsigned short						out_protocol_type;
  	QosMulitFieldFilter_t       qosfilterstr;
  	unsigned long            	        sessionIndex;
  	unsigned long            	        upLabelReqId;  
} MPLS_PACK mpls_ldp_int_extra;

typedef struct _def_ldp_value
{
  unsigned char           valid;
  mplsLdpTrafficTlv_t     defTraffic;
  mplsLdpAtmLblRange_t    inLabel;
} MPLS_PACK def_ldp_value;
	
typedef struct _mpls_ldp_msg
{
	unsigned long		          next;
	unsigned short		          type;
	unsigned short		          msg_len;
	unsigned char			      msg_buf[MAX_MSG_LENGTH];
	mpls_ldp_int_extra    extra;
} MPLS_PACK mpls_ldp_msg;


#define  LDP_TRAN   1
#define  LDP_REC   	2
#define  LDP_NONE	0

/* strcut for loop dection   sbp 2002-1-16 */
typedef struct{
   unsigned char       loopDection;   /* loop dection enable */
   unsigned char	   pvLimit;       /* path vector limit */
   unsigned char	   hcLimit;       /* hop count limit */
} MPLS_PACK loopDetection_t;

#include "_restore.h"

#endif /* LDP_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -