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

📄 lms.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 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 + -