📄 mplsoams.h
字号:
#ifndef MPLS_OAM_STRU_H
#define MPLS_OAM_STRU_H
#include "mpls.h"
#include "ldpcomn.h"
#include "_noalign.h"
/* mpls label stack table */
typedef struct {
unsigned char rowstatus;
unsigned long index;
unsigned long labelindex;
unsigned long label;
unsigned char storagetype;
}MPLS_PACK MplsLabelStackTable_t;
/* the following struct show how to */
typedef struct {
unsigned char module;
unsigned char port;
unsigned char lsrType;
}MPLS_PACK interface_name_t;
typedef struct {
unsigned char module;
unsigned char port;
unsigned long timeId;
}MPLS_PACK mplsIpIf_name_t;
typedef struct{
unsigned short localPort; /* tcp connection 是协议层的,不是物理层 2001-9-11 */
unsigned short peerPort;
unsigned long localAddr;
unsigned long peerAddr;
}MPLS_PACK connectivity_t;
/* struct_Address_sources */
typedef struct{
unsigned char sources;
unsigned long address;
}MPLS_PACK Address_sources_t;
#if 0
/* lsr 属性表 */
typedef struct {
unsigned long lsrId;
#if 1
unsigned char labelRetentionMode;
unsigned char loopDetectionForPV;
unsigned char pathVectorLimit;
#endif
unsigned char edgeId; /*原先的理解是LSR是骨干还边缘,现在不用了,
而配置端口的ingress,egress,backbone与此类似*/
}MPLS_PACK mplsLsrAttr_t;
#endif
/* mpls ldp session and hello timer table*/
typedef struct{
unsigned long keepholdtimer;
unsigned long keepinterval;
unsigned long helloholdtimer;
unsigned long hellointerval;
unsigned long targetedhelloholdtimer;
unsigned long targeteddhellointerval;
}MPLS_PACK mplsldptimer_t;
typedef struct{
unsigned long ipaddr;
unsigned long ipmask;
}MPLS_PACK fecTlv_t;
typedef struct{
unsigned short vpi;
unsigned short vci;
}MPLS_PACK Atmvpvc_t;
typedef union{
unsigned short atm[4]; /* 0: minvci, 1: minvpi, 2: maxvci, 3: maxvpi */
unsigned long gen[2]; /* 0: minlabel, 1: maxlabel */
}MPLS_PACK atmGeneral_u;
typedef struct{
unsigned char type; /* 0: no label, 1: ATM, 2: Generic */
union{
unsigned long label;
Atmvpvc_t atm;
}label;
}MPLS_PACK labelAtm_t;
typedef struct{
mplsLdpId_t LsrId;
labelAtm_t label;
}MPLS_PACK remoteBindings_t;
typedef struct{
unsigned long netaddr;
unsigned char maskType; /* 1: netmask, 2: masklen */
union
{
unsigned long netmask;
unsigned char maskLen;
}mask;
}MPLS_PACK IpV4Addr_t;
typedef struct{
unsigned char type; /* 1: lspid, 2: IpV4Addr_t */
union{
mplsLdpId_t lspId;
IpV4Addr_t destAddr;
}prefixOrLspid;
}MPLS_PACK prefixOrLspid_t;
typedef struct{
unsigned short min;
unsigned short max;
unsigned short delaying; /* now the backoff value */
unsigned short waiting; /* the waiting time */
}MPLS_PACK backOff_t;
/* definition for ATM LDP capability */
typedef struct{
unsigned char inMerge;
unsigned char outMerge;
}MPLS_PACK merge_t;
typedef struct{
unsigned char direct; /*=1,(R-W),bidirectional(0),unidirectional(1)*/
unsigned char oddEven; /* 0: no, 1: odd, 2: even */
merge_t merge; /*=2,(R-W),notsupported(0),vp merge(1),
vc merge(2),vp&vc merge(3), */
mplsLdpAtmLblRange_t vpvc;
}MPLS_PACK AtmLdpCapability_t;
typedef struct{
unsigned short front;
unsigned short next;
}MPLS_PACK FilterLspId_t;
typedef struct{
unsigned long minLabel;
unsigned long maxLabel;
InterfaceNoCardtype_t ifName;
}MPLS_PACK generalLabel_t;
typedef struct{
unsigned char num;
generalLabel_t label[MPLS_ZXB10_ETHI_PORT_MAX];
}MPLS_PACK mplsGeneralLabelConfig_t;
/* definition for ATM LDP capability */
/* MPLS_TIMER1用于MPLS OAM, 子时钟如下: */
/*
1: 用于向D010要PORT数据
2: 用于向D010要NI表
3: 用于发送LSRID
4: 用于发送INTERFACE表
5: 用于发送ENTITY表
6: 用于启动或停止所有LDP实体
7: 用于启动或停止一个LDP实体
*/
#define MPLS_CONFIG_TABLE_TIMER 30
#define MPLS_NI_TABLE_TIMER 30
#define MPLS_LSRID_TABLE_TIMER 30
#define MPLS_INTERFACE_TABLE_TIMER 30
#define MPLS_ENTITY_TABLE_TIMER 30
#define MPLS_OAM_LDP_CONFIG_TIMER 30
#define MPLS_OAM_INTERNAL_VPIVCI_TIMER 30
#define MPLS_OAM_DEF_TRAFFIC_TIMER 30
/* */
#define OAM_TIMER_MPLS_CONFIG_TABLE 100
#define OAM_TIMER_MPLS_NI_TABLE 101
#define OAM_TIMER_MPLS_LSRID_TABLE 1
#define OAM_TIMER_MPLS_INTERFACE_TABLE 2
#define OAM_TIMER_MPLS_ENTITY_TABLE 3
#define OAM_TIMER_MPLS_CONFIG_TO_LDP_TABLE 4
#define OAM_TIMER_MPLS_INTERNAL_VPIVCI_TO_LDP_TABLE 5
#define OAM_TIMER_MPLS_DEF_TRAFFIC_TO_LDP_TABLE 6
#define MPLS_NOT_ONE_MODULE 255
#define TIMER_MACRO_MAX_NUMBER 6
/* (module+1)*4+ timer NO */
#define timerNo(module,timer) module*TIMER_MACRO_MAX_NUMBER+timer
typedef struct{
unsigned long timerId[OAM_TIMER_MPLS_NI_TABLE+1];
unsigned short backoff[OAM_TIMER_MPLS_NI_TABLE+1];
}MPLS_PACK mplsOamTimer_t;
/* MPLS pack1.0 ,now changed to be a centralized struct, need to centralize data of LDP
protocol, now the struct is defined in order to manage the data
sbp 2002-6-15 */
typedef struct{
unsigned char mplsEnable; /* LDP is set only when both platform and interface enable
ldp protocol, mplsEnable is sign for platform, default : disable */
unsigned char mplsRouteridEnable; /* mpls router id, by hyh 2002-10-24 */
unsigned char protocolversion; /* ldp protocol version, default :1 */
unsigned short minLabel; /* minimum general label, default: 16*/
unsigned long maxLabel; /* maximum general label, default: 2^20-1*/
unsigned long s_hold; /* session holdtime, default:60s */
unsigned long s_interval; /* session interval, default:1/3*holdtime */
unsigned long h_hold; /* hello holdtime, default:45s */
unsigned long h_interval; /* hello interval, default:1/3*holdtime */
unsigned long t_h_hold; /* target hello holdtime, not support */
unsigned long t_h_interval; /* target hello interval, not support */
unsigned char loopdetection; /* loop detection, on: support both pathvector and hop count,
off : not support, default: off */
unsigned char maxhopcount; /* max hop counts, default: 255 */
unsigned char pvlimit; /* path vector limit , default: 255 */
unsigned char controlmode; /* =2, 1: ordered 2: independent for ethi port */
unsigned char aggregate; /* =0, aggregate: 1, deaggregate: 0 */
}MPLS_PACK mplsLdpParam_t;
typedef struct{
#define MPLS_IP 128
#define NO_MPLS_IP 47
#define EN_MPLS_IP 64
#define MPLS_TRANS_ADDR 32
#define NO_MPLS_TRANS_ADDR 207
#define EN_MPLS_TRANS_ADDR 16
#define DIS_MPLS_IP 175
unsigned long TransPortAddr;
unsigned char Ip_maskLen; /* 高第一位为:配置mpls IP启动标志,第二位为LDP已经启动标志*/
}MPLS_PACK mplsIfPort_t;
#ifdef __INSTALL_V22
#define MPLS_MAX_BOARD 16
#define MPLS_MAX_PORT 16
#else
#define MPLS_MAX_BOARD 13
#define MPLS_MAX_PORT 8
#endif
typedef struct{
mplsIfPort_t port[MPLS_MAX_PORT];
}MPLS_PACK mplsIfConf_t;
#include "_restore.h"
#endif /* MPLS_OAM_STRU_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -