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

📄 mplsoams.h

📁 路由器协议平台mpls协议的设计与实现源代码。
💻 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 + -