📄 ldpi.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 + -