📄 lms.h
字号:
/***********************************************************************/
/* Product Name: mpls pack1.0
/* Module Name: lms
/* File Name: lms.h
/* Author Name: weng.qing
/* Creat Date: 01/01/2002
/* Version : 1.0
/* Function : mpls label manager use structure
/* History : szh mod 2002-6-18 16:09
szh mod MPLS_LABEL_MIN为10001,与BGP分配的内层标签区分开
/************************************************************************/
#ifndef LMS_H
#define LMS_H
#include "myassert.h"
#include "mpls_cmn.h"
#include "_noalign.h"
/*****************************************************************************/
/* */
/* define mpls platform flags */
/*****************************************************************************/
/*
#define MPLS_LMS_DEBUG */
#define MPLS_PLATFORM_BX 0x01
#define MPLS_PLATFORM_AX 0x02
#define MPLS_PLATFORM_M1000 0x04
#define MPLS_PLATFORM_M2000 0x08
#define MPLS_PLATFORM_ROS 0x10
#define MPLS_NIC_MAX_IF 256
/* macros to handle different byte orders (little endian or big endian) */
#ifdef LITTLE_ENDIAN_BYTE_ORDER
#define BITFIELDS_ASCENDING_2(X, Y) Y; X;
#define BITFIELDS_ASCENDING_3(X, Y, Z) Z; Y; X;
#define BITFIELDS_ASCENDING_4(X, Y, Z, W) W; Z; Y; X;
#define BITFIELDS_ASCENDING_7(X, Y, Z, W, U, A, B) B; A; U; W; Z; Y; X;
#else
#define BITFIELDS_ASCENDING_2(X, Y) X; Y;
#define BITFIELDS_ASCENDING_3(X, Y, Z) X; Y; Z;
#define BITFIELDS_ASCENDING_4(X, Y, Z, W) X; Y; Z; W;
#define BITFIELDS_ASCENDING_7(X, Y, Z, W, U, A, B) X; Y; Z; W; U; A; B;
#endif /*LITTLE_ENDIAN_BYTE_ORDER */
#define MPLS_NULL 0
#define MPLS_BOOL unsigned short
#define MPLS_MEMORY_ERROR 2
#define MPLS_TRUE 1
#define MPLS_FALSE 0
/* define label range number
/*****************************************************************************/
/* szh mod 2003-11-20 10:55 在V2.2中,有DLICO8个光口的板子,标签占用要增大*/
#define MPLS_LDP_INTERFACE_NUMBER 80 /* max value in BX */
/*****************************************************************************/
/* define label range number */
/*****************************************************************************/
#define MPLS_LDP_LBL_RANGE_NUM 10
/*****************************************************************************/
/* */
/* define label request flags */
/*****************************************************************************/
#define MPLS_LABEL_REQUEST_EVEN 0x04
#define MPLS_LABEL_REQUEST_ODD 0x08
#define MPLS_LABEL_REQUEST_BIDIRECT 0x10
#define MPLS_LABEL_PER_PLATFORM 0x0
#define MPLS_LABEL_PER_INTERFACE 0x1
/* szh add 2002-6-18 16:49 */
#define MPLS_LABEL_MIN 10001
#define MPLS_LABEL_MAX 1048575
#define MPLS_LABEL_SWITCH_PROTOCOL_ETH 0x01
#define MPLS_LABEL_SWITCH_PROTOCOL_ATM 0x02
#define MPLS_MOD 0x01
#define MPLS_PORT 0x02
#define MPLS_INTERFACE 0x03
#define LMS_ALLOC_UNITS 2048
typedef struct _mpls_atm_label_flags
{
BITFIELDS_ASCENDING_3(
unsigned long res:4,
unsigned long vpi:12,
unsigned long vci:16
)
}MPLS_PACK mpls_atm_label_flags;
typedef struct _mpls_atm_label
{
union {
mpls_atm_label_flags flags;
unsigned long mark;
} label;
}MPLS_PACK mpls_atm_label;
typedef struct _mpls_genera_label_flags
{
BITFIELDS_ASCENDING_2(
unsigned long res:12,
unsigned long gen_lbl:20
)
}MPLS_PACK mpls_general_label_flags;
typedef struct _mpls_general_label
{
union { mpls_general_label_flags flags;
unsigned long mark;
} label;
}MPLS_PACK mpls_general_label;
typedef struct _mpls_label
{
mpls_atm_label atm_label;
mpls_general_label general_label;
unsigned char type;
}MPLS_PACK mpls_label;
typedef struct _mpls_label_range
{
mpls_label max_label;
mpls_label min_label;
}MPLS_PACK mpls_label_range;
typedef struct _mpls_lms_label_req
{
/* 0: per platform; 1: per interface */
unsigned char flags;
/* per interface valid */
unsigned char module;
unsigned char port;
unsigned long session_index; /* session index for set lost flag */
unsigned char label_range_num;
mpls_label_range label_range[MPLS_LDP_LBL_RANGE_NUM];
} MPLS_PACK mpls_lms_label_req;
typedef struct _mpls_lms_label_rel
{
/* 0: per platform; 1: per interface */
unsigned char flags;
/* per interface valid */
unsigned char module;
unsigned char port;
mpls_label label;
} MPLS_PACK mpls_lms_label_rel;
typedef enum _mpls_label_code
{
MPLS_SUCCESS = 0,
MPLS_FAIL = 1
} MPLS_PACK mpls_label_code;
typedef struct _mpls_lms_label_ack
{
mpls_label_code ack;
mpls_label label;
} MPLS_PACK mpls_lms_label_ack;
typedef struct
{
unsigned char module;
unsigned char port;
unsigned long session_index;
}MPLS_PACK mpls_lms_atm_interface;
typedef struct _mpls_label_busy_flags
{
unsigned short interface_num;
mpls_lms_atm_interface interface[MPLS_LDP_INTERFACE_NUMBER];
unsigned short minvci[MPLS_LDP_INTERFACE_NUMBER];
unsigned short minvpi[MPLS_LDP_INTERFACE_NUMBER];
unsigned short maxvci[MPLS_LDP_INTERFACE_NUMBER];
unsigned short maxvpi[MPLS_LDP_INTERFACE_NUMBER];
unsigned char busyAtmLabelFlags[MPLS_LDP_INTERFACE_NUMBER][2*1024];
unsigned short currhuntvpi[MPLS_LDP_INTERFACE_NUMBER];
unsigned short currhuntvci[MPLS_LDP_INTERFACE_NUMBER];
} MPLS_PACK mpls_label_busy_flags;
typedef struct _MPLS_IFINDEX2PORT_REQ
{
unsigned short mpls_platform;
unsigned short ifIndex;
} MPLS_PACK MPLS_IFINDEX2PORT_REQ;
typedef struct _MPLS_IFINDEX2PORT_ACK
{
MPLS_BOOL ack;
unsigned short port;
} MPLS_PACK MPLS_IFINDEX2PORT_ACK;
typedef struct _MPLS_IFINDEX2MOD_REQ
{
unsigned short ifIndex;
unsigned short mpls_protocol_type;
unsigned short mpls_platform;
} MPLS_PACK MPLS_IFINDEX2MOD_REQ;
typedef struct _MPLS_IFINDEX2MOD_ACK
{
MPLS_BOOL ack;
unsigned short mod;
unsigned short port;
} MPLS_PACK MPLS_IFINDEX2MOD_ACK;
/* wengqing modify 2002.12.25 */
typedef struct _genlabel_link
{
unsigned long minlabel;
unsigned long maxlabel;
struct _genlabel_link *front;
struct _genlabel_link *next;
} MPLS_PACK genlabel_link;
#include"_restore.h"
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -