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

📄 ldp.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 H
📖 第 1 页 / 共 2 页
字号:
	unsigned short     msgType;           /* 记录下游消息类型 */
	#ifdef  PERFOMANCE_NEW
	struct _mplsLdpLspCB       * XcNext;     /* 指向下一条待处理Xc */
    struct _mplsLdpLspCB       * XcPrev;     /* 指向上一条待处理Xc */
    struct _mplsLdpLspCB       * FecLbNext;  /* 指向下一条待处理标记 */
    struct _mplsLdpLspCB       * FecLbPrev;  /* 指向上一条待处理标记 */
    #endif
	unsigned char              waitflag;        /*       记录待处理类型 */
        unsigned char              waitmsgtype;            /*记录消息类型 */
        unsigned char              waitnotype;             /* 记录通知消息类型*/
    unsigned long              errorcode;    
} MPLS_PACK mplsLdpLspCB;   /* 此控制块适用于pvc的情况,将上下游、
                    下一跳改变触发控制块合并在一起处理 */
            

typedef struct _mplsLdpUpCB
{
	struct _mplsLdpUpCB    	 	* prev;
	struct _mplsLdpUpCB     	* next;
	struct _mplsLdpFecEntry             * selffec;
	struct 
	{
		struct _mplsLdpUpCB    	 	* prev;
		struct _mplsLdpUpCB     	* next;
	} up_session_list;
	unsigned long      matchno;
	unsigned long      upGenLabel;      /* 上游通用标记 */
	unsigned long      upSessionIndex;  /* 上游LDP会话Index */ 
	mplsLdpId_t        upPeerLdpid;     /* 上游对等Ldpid */
	unsigned long      msgid;          /* 上游消息id;由于通用标记分配实际上
                                        遵守merge规则,来自一个上游只有一
                                        个msgid */
    unsigned short     state;
    mplsLdpAttr        pAttr;          /* 属性指针 */
	unsigned char      *pRes;          /* 预留指针,可以指向下一条纪录 */
	unsigned char              waitflag;        /*       记录待处理类型 */
    unsigned char              waitmsgtype;            /*记录消息类型 */
    unsigned char              waitnotype;             /* 记录通知消息类型*/
} MPLS_PACK mplsLdpUpCB;

typedef struct _mplsLdpDownCB
{
	struct _mplsLdpDownCB     * prev;
	struct _mplsLdpDownCB     * next;
	struct _mplsLdpFecEntry           * selffec;
	struct 
	{
		struct _mplsLdpDownCB    	* prev;
		struct _mplsLdpDownCB     	* next;
	} down_session_list;
	unsigned long      matchno;
	unsigned long      downGenLabel;     /* 下游通用标记 */
	unsigned long      downSessionIndex; /* 下游LDP会话Index */
	unsigned short     outIfindex;       /* 输出ifindex号 */
	unsigned char      module;
	unsigned long      nexthopAddr;      /* 下一跳地址 */
	mplsLdpId_t        downPeerLdpid;    /* 下游对等Ldpid */
	unsigned long      msgid;            /* 下游消息id;由于通用标记分配实际上 
                                          遵守merge规则,发往一个下游只有一  
                                          个msgid */
    unsigned short     state;
	unsigned long      timerid;           /* 定时器 */
	mplsLdpAttr        pAttr;          /* 属性指针 */
    unsigned char      *pRes;            /* 预留指针,可以指向下一条纪录 */
    unsigned char              waitflag;        /*       记录待处理类型 */
    unsigned char              waitmsgtype;            /*记录消息类型 */
 /*       uchar              waitnotype;             /* 记录通知消息类型*/
} MPLS_PACK mplsLdpDownCB;


typedef struct _mplsLdpFecEntry
{
	MPLS_AVL_NODE     fec_avl_node;
	mpls_fec_key      fec_key;
	unsigned long     index;              /* 标示号 */
	unsigned short    mplsLdpFecType;     /* (1)prefix,(2)HostAddr */
/*	unsigned long     mplsLdpFecAddrLen;  *//* 1 - 32 */
	unsigned long     mplsFecAddrFamily;  /* Ipv4 */
/*	unsigned long     mplsFecAddr;       *//*  FEC addr */
	                  /*  当mplsLdpFecType = 1,mplsLdpFecAddrLen = 0,
                          mplsFecAddrFamily = ipv4, mplsFecAddr = 0表缺省路由 */
	unsigned short    owner;  /* (1)routing,(2)ldp,(4)policy
                             路由有效,则包含路由;按位域有效 */
	unsigned short    nodeType;  /* (1) EGRESS, (2) Proxy_EGRESS
	                       本地路由,则为EGRESS,本地动态路由通过策略控制可置为Proxy_EGRESS */
	unsigned short    reqInstance;   /* 向当前下一跳请求次数,缺省为0,不断请求 */
	unsigned long    localGenLabel; /* 本地分配的通用标记 */
	unsigned long    nexthopAddr;   /*下一跳信息,下一跳地址 */
	unsigned short   outIfindex;    /* 下一跳输出端口*/
	unsigned char    module;        /* 下一跳输出模块号*/
	unsigned long    nexthopSessionIndex;
/*	
	unsigned char    *pLspCB;
	unsigned char    *pUpCB;
	unsigned char    *pDownCB;
*/
#ifndef PERFOMANCE_NEW
     struct _mplsLdpFecEntry   * XcNext;     /* 指向下一条待处理Xc */
     struct _mplsLdpFecEntry   * XcPrev;     /* 指向上一条待处理Xc */
#endif
       struct _mplsLdpFecEntry          * FecLbNext;  /* 指向下一条待处理标记 */
       struct _mplsLdpFecEntry          * FecLbPrev;  /* 指向上一条待处理标记 */
        struct _mplsLdpFecEntry          * LblMsgNext; /* 指向下一条待处理消息 */
         struct _mplsLdpFecEntry          * LblMsgPrev; /* 指向上一条待处理消息 */
	struct
	{
		mplsLdpLspCB    * first;
		mplsLdpLspCB    * link;       /* record the first wait process mplsLdpLspCB */
		mplsLdpLspCB    * last;
	}lsp_cb_list;
	struct
	{
		mplsLdpUpCB    * first;
		mplsLdpUpCB    * link;        /* record the first wait process mplsLdpUpCB */
		mplsLdpUpCB    * last;
	}up_cb_list;
	struct
	{
		mplsLdpDownCB    * first;
		mplsLdpDownCB    * link;    /* record the first wait process mplsLdpDownCB */
		mplsLdpDownCB    * last;
	}down_cb_list;
	unsigned char    pRes;       /* 用于区分egress to配置的路由和本地路由,用于处理所配置的策略 */
	
} MPLS_PACK mplsLdpFecEntry;

            
typedef struct
{
	unsigned short     labelType;        /* 标记类型 (1) atm-gen
                                          (2)gen-gen (3)gen-atm */
	mplsLdpAtmLabel    upatmLabel;      /* up atm label */
	unsigned long      upgenLabel;      /* up gen label */
	mplsLdpId_t        uppeerid;        /* up peer ldpid */
	mplsLdpAtmLabel    downatmLabel;    /* down atm pvc */
	unsigned long      downgenLabel;    /* down gen label */
	mplsLdpId_t        downpeerid;      /* down peer ldpid */
	unsigned char      nodeType;        /*节点类型 */
	unsigned long      instance;        /* 标记引用的次数 */
	unsigned char     *pAttr;           /* 与标记相关的属性 */
	unsigned char     *pRes;            /* 预留指针,可以指向下一条纪录 */
} MPLS_PACK mplsLdpLabelCB;  /*此结构保存转发生效的标记对应关系,为标记融合使用,发生标
                    记融合时,直接由下游标记,ldp peer索引到上游或下游标记 */
typedef struct _mplsLdpCrLsp
{
	MPLS_AVL_NODE       crfec_avl_node;
	mpls_crfec_key      crfec_key;
	unsigned long       index;        /* crlsp 索引值 */
/*	unsigned long       ingressid;    *//* crlsp标示,输入节点标示 */
/*	unsigned short      locallspid;   *//* crlsp标示,本地lspid */
	unsigned short      mplsLdpFecType;     /* (1)prefix,(2)HostAddr */
	unsigned long       mplsLdpFecAddrLen;  /* 1 - 32 */
	unsigned long       mplsFecAddr;       /*  FEC addr */
	                  /*  当mplsLdpFecType = 1,mplsLdpFecAddrLen = 0,
                          mplsFecAddrFamily = ipv4, mplsFecAddr = 0表缺省路由 */
	unsigned long    	nexthopAddr;   /*下一跳信息,下一跳地址 */
	unsigned short   	outIfindex;    /* 下一跳输出端口*/
	unsigned char    	module;        /* 下一跳输出模块号*/
	mplsLdpFtnEntry     fecfilter;    /* crlsp转发过滤条件 (ingress valid)  */
	mplsLdpLspCB      crlspCb;      /* crlsp状态控制块 */
	/* 以下为crlsp特定的tlv信息,需要中继,因此需要临时保存 */
	mplsLdpErTlv_t             erTlv;
	mplsLdpTrafficTlv_t        trafficTlv;
	mplsLdpPinningTlv_t        pinningTlv;
	mplsLdpResClsTlv_t         resClassTlv;
    mplsLdpPreemptTlv_t        preemptTlv;
	unsigned short             tlvExists;
#ifndef PERFOMANCE_NEW
	struct _mplsLdpCrLsp       * XcNext;     /* 指向下一条待处理Xc */
    struct _mplsLdpCrLsp       * XcPrev;     /* 指向上一条待处理Xc */
#endif
    struct _mplsLdpCrLsp       * FecLbNext;  /* 指向下一条待处理标记 */
    struct _mplsLdpCrLsp       * FecLbPrev;  /* 指向上一条待处理标记 */
    struct _mplsLdpCrLsp       * LblMsgNext; /* 指向下一条待处理消息 */
    struct _mplsLdpCrLsp       * LblMsgPrev; /* 指向上一条待处理消息 */
	unsigned char      metric;      /* 2002/12/16 */
} MPLS_PACK mplsLdpCrLsp;

typedef struct _mpls_ldpFecAggr{
	struct _mpls_ldpFecAggr *prev;             /* B10 C index ushort */
	struct _mpls_ldpFecAggr *next;             /* B10 C index ushort */
	mplsLdpAtmLabel     upAtmLabel;        /* up atm label   */
	mplsLdpAtmLabel     downAtmLabel;      /* down atm label */
	unsigned short      refNum;             /* reference number */
	mplsLdpAttr         attr;              /* mpls request attribute */
	unsigned char       nodeType;          /* node type */
	unsigned long       index1;            /* B10 C index ulong */
	unsigned short      index2;            /* B10 C index ushort */
	unsigned long       nexthop;           /* for aggreate route */
}MPLS_PACK mpls_ldpFecAggr;

typedef struct
{
	mpls_ldpFecAggr * first;
	mpls_ldpFecAggr * last;
}MPLS_PACK mpls_ldpFecAggrBody;

#define MPLS_INDEX_ITEM		256
#define MPLS_ITEM_NO		32

typedef struct
{
	unsigned long	index[MPLS_INDEX_ITEM];
	unsigned short  nul;
}mpls_ldpIndexItem;

typedef struct
{
	mpls_ldpIndexItem	item[MPLS_ITEM_NO];		
}MPLS_PACK mpls_ldpIndex;

typedef struct
{
	mplsLdpLspCB    	* first;
	mplsLdpLspCB     	* last;
}MPLS_PACK mpls_lsp_list;

typedef struct
{
	 mplsLdpUpCB    	* first;
	 mplsLdpUpCB     	* last;
}MPLS_PACK mpls_up_list;

typedef struct
{
	 mplsLdpDownCB    	* first;
	 mplsLdpDownCB     	* last;
}MPLS_PACK mpls_down_list;

typedef struct
{
	unsigned short  module;
	unsigned short  port;
}MPLS_PACK mpls_sb_key;


typedef struct
{
	MPLS_AVL_NODE       sb_avl_node;
	mpls_sb_key			key;
	struct
	{
		mplsLdpLspCB    * first;
		mplsLdpLspCB    * last;
	}lsp_up_cb_list;
	struct
	{
		mplsLdpLspCB    * first;
		mplsLdpLspCB    * last;
	}lsp_down_cb_list;
}MPLS_PACK mpls_sb_list;

typedef struct _mpls_fec_search
{
	struct _mpls_fec_search    *prev;
	struct _mpls_fec_search    *next;
	/*mplsLdpSession_t           *session;*/
	void *                     session;
	unsigned long              tmier;
	unsigned long              addr;
	unsigned short             addrLen;
	unsigned short             stop; 
        /* wengqing 2002.12.16 per session when route add or delete, should scan from fec head */
}MPLS_PACK mpls_fec_search;

typedef struct
{
	 mpls_fec_search    	* first;
	 mpls_fec_search     	* last;
}MPLS_PACK mpls_fec_search_list;

typedef struct
{
    unsigned char start;   /* 0: oam is not getting data, 1: oam is getting data */
    unsigned char dumping; /* 0: route is not dumping, 1: route is dumping */
}MPLS_PACK mpls_oam_binding_struct;

/* 2003.4.23 wengqing 增加保护的结构 */
typedef struct _mpls_fec_scan
{
	unsigned long              timer;
	unsigned long              addr;
	unsigned short             addrLen;
	unsigned short             stop;     /* 0: fec; 1: fec ; 2: crfec */
	
}MPLS_PACK mpls_fec_scan;


#include "_restore.h"

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -