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

📄 ldpmacro.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 H
📖 第 1 页 / 共 3 页
字号:

#define MPLS_ERR_LOG		printf

#define MPLS_RELEASE_GENLABEL(label)							\
mpls_lms_rel_genlabel((label))
		
#define MPLS_LSPCB_CREATE(fecEntry,lspCB)						\
lspCB = MPLS_NULL;												\
MPLS_MEM_ALLOC(lspCB,(mplsLdpLspCB *),sizeof(mplsLdpLspCB),	\
				mem_mgr[IUMEM_LDP_LSPCB]);						\
if(lspCB != MPLS_NULL)											\
{																\
    MPLS_MEMSET(lspCB,0,sizeof(mplsLdpLspCB));                  \
	(lspCB)->selffec = (void *)(fecEntry);						\
	(lspCB)->next = NULL;										\
	(lspCB)->prev = (fecEntry)->lsp_cb_list.last;				\
	if((lspCB)->prev != NULL)									\
		(lspCB)->prev->next = (lspCB);							\
	(fecEntry)->lsp_cb_list.last = (lspCB);					\
	if((fecEntry)->lsp_cb_list.first == NULL)				\
		(fecEntry)->lsp_cb_list.first = (lspCB);			\
}																\

#define MPLS_GET_LSP_INDEX   ((ldp_get_index())|(0x80000000))												
#define MPLS_GET_CRLSP_INDEX   ((ldp_get_index())|(0x00000000))

#define MPLS_REL_LSP_INDEX(I)   ((ldp_rel_index((I)&(0x7fffffff))))											
#define MPLS_REL_CRLSP_INDEX(I)    ((ldp_rel_index((I)&(0xffffffff))))

/****************************************************************/
/* insert operation
*/
/****************************************************************/

#define MPLS_INSERT_INTO_UP_LSP_LIST(L,FIRST_E,LAST_E)	\
{\
mplsLdpLspCB 			*LspCBVarjinan = NULL;                  \
int                      lsp_list_add_flag_jinan = 0;       \
if((L).first)                            \
LspCBVarjinan = (L).first;               \
while(LspCBVarjinan)                                           \
{                                     \
     if(LspCBVarjinan ==(FIRST_E))  \
     {      \
      	 lsp_list_add_flag_jinan = 1;\
       	 break; \
     }\
     else \
         LspCBVarjinan = LspCBVarjinan->up_lsp_session_list.next;\
}\
if(!lsp_list_add_flag_jinan)\
{         \
(LAST_E)->up_lsp_session_list.next = MPLS_NULL; \
(FIRST_E)->up_lsp_session_list.prev = (L).last; \
if((FIRST_E)->up_lsp_session_list.prev != NULL)	\
	(FIRST_E)->up_lsp_session_list.prev->up_lsp_session_list.next = (FIRST_E); \
(L).last = (LAST_E);	\
if((L).first == NULL)	\
	(L).first = (FIRST_E);\
}\
}

#define MPLS_INSERT_INTO_DOWN_LSP_LIST(L,FIRST_E,LAST_E)	\
{\
mplsLdpLspCB 			*LspCBVarjinan = NULL;                  \
int                      lsp_list_add_flag_jinan = 0;       \
if((L).first)                            \
LspCBVarjinan = (L).first;               \
while(LspCBVarjinan)                                           \
{         \
if(LspCBVarjinan ==(FIRST_E))  \
{      \
lsp_list_add_flag_jinan = 1;\
break; \
}\
else \
LspCBVarjinan = LspCBVarjinan->down_lsp_session_list.next;\
}\
if(!lsp_list_add_flag_jinan)\
{         \
(LAST_E)->down_lsp_session_list.next = MPLS_NULL; \
(FIRST_E)->down_lsp_session_list.prev = (L).last; \
if((FIRST_E)->down_lsp_session_list.prev != NULL)	\
	(FIRST_E)->down_lsp_session_list.prev->down_lsp_session_list.next = (FIRST_E); \
(L).last = (LAST_E);	\
if((L).first == NULL)	\
(L).first = (FIRST_E);\
}\
}

/* add for jinan fengjun */



#define MPLS_INSERT_INTO_UP_LIST(L,FIRST_E,LAST_E)	\
(LAST_E)->up_session_list.next = MPLS_NULL; 		\
(FIRST_E)->up_session_list.prev = (L).last; 		\
if((FIRST_E)->up_session_list.prev != NULL)			\
	(FIRST_E)->up_session_list.prev->up_session_list.next = (FIRST_E); \
(L).last = (LAST_E);			\
if((L).first == NULL)			\
	(L).first = (FIRST_E);

#define MPLS_INSERT_INTO_DOWN_LIST(L,FIRST_E,LAST_E)	\
(LAST_E)->down_session_list.next = MPLS_NULL; 			\
(FIRST_E)->down_session_list.prev = (L).last; 			\
if((FIRST_E)->down_session_list.prev != NULL)			\
	(FIRST_E)->down_session_list.prev->down_session_list.next = (FIRST_E);\
(L).last = (LAST_E);			\
if((L).first == NULL)			\
	(L).first = (FIRST_E);

/* wengqing 2002.12.13 inherit upSessionIndex */
#define MPLS_REMOVE_FROM_SESSION_UP_LSP_LIST(L,E)	\
if((E)->up_lsp_session_list.next)                     \
{                                                   \
	if((E)->upSessionIndex <3 && (E)->up_lsp_session_list.next->upSessionIndex >= 3) \
		(E)->up_lsp_session_list.next->upSessionIndex = (E)->upSessionIndex;         \
}                                                   \
if((L).first == (E))		\
	(L).first = (E)->up_lsp_session_list.next;	\
if((L).last == (E))			\
	(L).last = (E)->up_lsp_session_list.prev;	\
if((E)->up_lsp_session_list.prev != MPLS_NULL)	\
	(E)->up_lsp_session_list.prev->up_lsp_session_list.next = (E)->up_lsp_session_list.next;\
if((E)->up_lsp_session_list.next != MPLS_NULL)	\
	(E)->up_lsp_session_list.next->up_lsp_session_list.prev = (E)->up_lsp_session_list.prev; \
(E)->up_lsp_session_list.next = MPLS_NULL;	\
(E)->up_lsp_session_list.prev = MPLS_NULL;	

/* wengqing 2002.12.13 inherit upSessionIndex */
#define MPLS_REMOVE_FROM_SESSION_UP_LSP_LIST_A(L,E)	\
if((E)->up_lsp_session_list.next)                     \
{                                                   \
	if((E)->upSessionIndex <3 && (E)->up_lsp_session_list.next->upSessionIndex >= 3) \
		(E)->up_lsp_session_list.next->upSessionIndex = (E)->upSessionIndex;         \
}                                                   \
if((L).first == (E))		\
	(L).first = (E)->up_lsp_session_list.next;	\
if((L).last == (E))			\
	(L).last = (E)->up_lsp_session_list.prev;	\
if((g_up_lsp_list).first == (E))		\
	(g_up_lsp_list).first = (E)->up_lsp_session_list.next;	\
if((g_up_lsp_list).last == (E))			\
	(g_up_lsp_list).last = (E)->up_lsp_session_list.prev;	\
if((E)->up_lsp_session_list.prev != MPLS_NULL)	\
	(E)->up_lsp_session_list.prev->up_lsp_session_list.next = (E)->up_lsp_session_list.next;\
if((E)->up_lsp_session_list.next != MPLS_NULL)	\
	(E)->up_lsp_session_list.next->up_lsp_session_list.prev = (E)->up_lsp_session_list.prev; \
(E)->up_lsp_session_list.next = MPLS_NULL;	\
(E)->up_lsp_session_list.prev = MPLS_NULL;	

/* wengqing 2002.12.13 inherit downSessionIndex */
#define MPLS_REMOVE_FROM_SESSION_DOWN_LSP_LIST(L,E)	\
if((E)->down_lsp_session_list.next)                       \
{                                                       \
	if((E)->downSessionIndex <3 && (E)->down_lsp_session_list.next->downSessionIndex >= 3)  \
		(E)->down_lsp_session_list.next->downSessionIndex = (E)->downSessionIndex;          \
}                                                       \
if((L).first == (E))		\
	(L).first = (E)->down_lsp_session_list.next;	\
if((L).last == (E))			\
	(L).last = (E)->down_lsp_session_list.prev;	\
if((E)->down_lsp_session_list.prev != MPLS_NULL)	\
	(E)->down_lsp_session_list.prev->down_lsp_session_list.next = (E)->down_lsp_session_list.next;\
if((E)->down_lsp_session_list.next != MPLS_NULL)	\
	(E)->down_lsp_session_list.next->down_lsp_session_list.prev = (E)->down_lsp_session_list.prev; \
(E)->down_lsp_session_list.next = MPLS_NULL;	\
(E)->down_lsp_session_list.prev = MPLS_NULL;

/* wengqing 2002.12.13 inherit downSessionIndex */
#define MPLS_REMOVE_FROM_SESSION_DOWN_LSP_LIST_A(L,E)	\
if((E)->down_lsp_session_list.next)                       \
{                                                       \
	if((E)->downSessionIndex <3 && (E)->down_lsp_session_list.next->downSessionIndex >= 3)  \
		(E)->down_lsp_session_list.next->downSessionIndex = (E)->downSessionIndex;          \
}                                                       \
if((L).first == (E))		\
	(L).first = (E)->down_lsp_session_list.next;	\
if((L).last == (E))			\
	(L).last = (E)->down_lsp_session_list.prev;	\
if((g_down_lsp_list).first == (E))		\
    (g_down_lsp_list).first = (E)->down_lsp_session_list.next;	\
if((g_down_lsp_list).last == (E))			\
	(g_down_lsp_list).last = (E)->down_lsp_session_list.prev;	\
if((E)->down_lsp_session_list.prev != MPLS_NULL)	\
	(E)->down_lsp_session_list.prev->down_lsp_session_list.next = (E)->down_lsp_session_list.next;\
if((E)->down_lsp_session_list.next != MPLS_NULL)	\
	(E)->down_lsp_session_list.next->down_lsp_session_list.prev = (E)->down_lsp_session_list.prev; \
(E)->down_lsp_session_list.next = MPLS_NULL;	\
(E)->down_lsp_session_list.prev = MPLS_NULL;

#define MPLS_REMOVE_FROM_SESSION_UP_LIST(L,E)	\
if((L).first == (E))		\
	(L).first = (E)->up_session_list.next;	\
if((L).last == (E))			\
	(L).last = (E)->up_session_list.prev;	\
if((E)->up_session_list.prev != MPLS_NULL)	\
	(E)->up_session_list.prev->up_session_list.next = (E)->up_session_list.next;\
if((E)->up_session_list.next != MPLS_NULL)	\
	(E)->up_session_list.next->up_session_list.prev = (E)->up_session_list.prev; \
(E)->up_session_list.next = MPLS_NULL;	\
(E)->up_session_list.prev = MPLS_NULL;

#define MPLS_REMOVE_FROM_SESSION_DOWN_LIST(L,E)	\
if((L).first == (E))		\
	(L).first = (E)->down_session_list.next;	\
if((L).last == (E))			\
	(L).last = (E)->down_session_list.prev;	\
if((E)->down_session_list.prev != MPLS_NULL)	\
	(E)->down_session_list.prev->down_session_list.next = (E)->down_session_list.next;\
if((E)->down_session_list.next != MPLS_NULL)	\
	(E)->down_session_list.next->down_session_list.prev = (E)->down_session_list.prev; \
(E)->down_session_list.next = MPLS_NULL;	\
(E)->down_session_list.prev = MPLS_NULL;	


#define MPLS_SB_CREATE(M,P,SB) 								\
(SB) = MPLS_NULL;    										\
MPLS_MEMSET(&t_sb_key,0,sizeof(mpls_sb_key)); 				\
t_sb_key.module  = (M); 									\
t_sb_key.port    = (P); 									\
MPLS_MEM_ALLOC((SB),(mpls_sb_list *),						\
				sizeof(mpls_sb_list),mem_mgr[IUMEM_LDP_SB]);\
if((SB))    												\
{    														\
	MPLS_MEMSET((SB),0,sizeof(mpls_sb_list));   			\
	MPLS_AVL_INIT_NODE((SB)->sb_avl_node, (SB),  	\
	                   &(SB)->key);             			\
	(SB)->key = t_sb_key;                       			\
	MPLS_AVL_INSERT_OR_FIND(g_sb_avl_tree, 					\
							(SB)->sb_avl_node);				\
}

#define MPLS_SB_DELETE(M,P,SB) 	\
if((SB))													\
{																\
	MPLS_AVL_DELETE(g_sb_avl_tree,(SB)->sb_avl_node);\
	MPLS_MEMSET((SB),0,sizeof(mpls_sb_list));   			\
	MPLS_MEM_FREE((SB),mem_mgr[IUMEM_LDP_SB]);\
}																\
else                                                            \
{                                                               \
	MPLS_SB_SEARCH(M,P,(SB))        \
	if(SB)                                              \
	{															\
		MPLS_AVL_DELETE(g_sb_avl_tree,(SB)->sb_avl_node);\
		MPLS_MEMSET((SB),0,sizeof(mpls_sb_list));   			\
		MPLS_MEM_FREE((SB),mem_mgr[IUMEM_LDP_SB]);\
	}                                                           \
}

#define MPLS_SB_SEARCH(M,P,SB) 	                        \
(SB) = MPLS_NULL;    									\
MPLS_MEMSET(&t_sb_key,0,sizeof(mpls_sb_key)); 			\
t_sb_key.module  = (M); 								\
t_sb_key.port = (P); 							\
(SB) = MPLS_AVL_FIND(g_sb_avl_tree,&t_sb_key);

#define MPLS_FEC_SEARCH_CREATE(L,pS)			\
(pS) = MPLS_NULL;												\
MPLS_MEM_ALLOC(pS,(mpls_fec_search *),sizeof(mpls_fec_search),	\
				mem_mgr[IUMEM_LDP_FEC_SEARCH]);						\
MPLS_MEMSET((pS),0,sizeof(mpls_fec_search));	\
if(pS != MPLS_NULL)											\
{																\
	(pS)->next = NULL;										\
	(pS)->prev = (L).last;				\
	if((pS)->prev != NULL)									\
		(pS)->prev->next = (pS);						\
	(L).last = (pS);					\
	if((L).first == NULL)					\
		(L).first = (pS);				\
}																\


#define MPLS_FEC_SEARCH_DELETE(L,pS)						\
if((L).first == (pS))					\
	(L).first = (pS)->next;			\
if((L).last == (pS))					\
	(L).last = (pS)->prev;			\
if((pS)->prev != MPLS_NULL)									\
	(pS)->prev->next = (pS)->next;						\
if((pS)->next != NULL)										\
	(pS)->next->prev = (pS)->prev;						\
MPLS_MEMSET((pS),0,sizeof(mpls_fec_search));            \
MPLS_MEM_FREE((pS),mem_mgr[IUMEM_LDP_FEC_SEARCH]);
#endif



/*    for performance  */


#define MPLS_WAITE_XC_INSERT(F,L) \
if((F))	\
{	\
	(F)->XcNext = NULL;	\
	(F)->XcPrev = ((L).last);	\
	if((F)->XcPrev != NULL)	\
		(F)->XcPrev->XcNext = (F); \
	(L).last = (F);	\
	if((L).link == NULL)	\
		(L).link = (F);		\
}

#define MPLS_WAITE_XC_DELETE(F,L) \
if((F))	\
{	\
	if((L).link == (F))		\
		(L).link = (F)->XcNext;     \
	if((L).last == (F))		\
		(L).last = (F)->XcPrev;			\
	if((F)->XcPrev != MPLS_NULL)		\
		(F)->XcPrev->XcNext = (F)->XcNext; \
	if((F)->XcNext != MPLS_NULL)				\
		(F)->XcNext->XcPrev = (F)->XcPrev;		\
	(F)->XcNext = MPLS_NULL;					\
	(F)->XcPrev = MPLS_NULL;                     \
}


#define MPLS_WAITE_FECLBL_INSERT(F,L)        \
if((F))	\
{	\
	(F)->FecLbNext = NULL;	\
	(F)->FecLbPrev = ((L).last);	\
	if((F)->FecLbPrev != NULL)	\
		(F)->FecLbPrev->FecLbNext = (F); \
	(L).last = (F);	\
	if((L).link == NULL)	\
		(L).link = (F);		\
}

#define MPLS_WAITE_FECLBL_DELETE(F,L)              \
if((F))	\
{	\
	if((L).link == (F))		\
		(L).link = (F)->FecLbNext;      \
	if((L).last == (F))		\
		(L).last = (F)->FecLbPrev;			\
	if((F)->FecLbPrev != MPLS_NULL)		\
		(F)->FecLbPrev->FecLbNext = (F)->FecLbNext; \
	if((F)->FecLbNext != MPLS_NULL)				\
		(F)->FecLbNext->FecLbPrev = (F)->FecLbPrev;		\
	(F)->FecLbNext = MPLS_NULL;					\
	(F)->FecLbPrev = MPLS_NULL;					\
}


#define MPLS_WAITE_LBLMSG_INSERT(F,L)          \
if((F))	\
{	\
	(F)->LblMsgNext = NULL;	\
	(F)->LblMsgPrev = ((L).last);	\
	if((F)->LblMsgPrev != NULL)	\
		(F)->LblMsgPrev->LblMsgNext = (F); \
	(L).last = (F);	\
	if((L).link == NULL)	\
		(L).link = (F);		\
}

#define MPLS_WAITE_LBLMSG_DELETE(F,L)          \
if((F))	\
{	\
	if((L).link == (F))		\
		(L).link = (F)->LblMsgNext;           \
	if((L).last == (F))		\
		(L).last = (F)->LblMsgPrev;			\
	if((F)->LblMsgPrev != MPLS_NULL)		\
		(F)->LblMsgPrev->LblMsgNext = (F)->LblMsgNext; \
	if((F)->LblMsgNext != MPLS_NULL)				\
		(F)->LblMsgNext->LblMsgPrev = (F)->LblMsgPrev;		\
	(F)->LblMsgNext = MPLS_NULL;					\
	(F)->LblMsgPrev = MPLS_NULL;					\
}
#define MPLS_PSEND(TYPE, msg,siz,Pid)								\
Pid.module = selfLdpPid.module;													\
ASEND(TYPE, msg,siz,Pid)					\







#if 0

#define DOWNCB_OUT_WAITLIST(TempFec,TempDownCB)                     \
     if(!((TempFec->down_cb_list).link))                    \
   	             return;                                    \
   	        if((TempFec->down_cb_list).link == TempDownCB)   \
   	             (TempFec->down_cb_list).link = TempDownCB->prev; \
	        else                                                \
	        {                                                 \
	        	if((TempFec)->down_cb_list.first == (TempDownCB))					\
	                (TempFec)->down_cb_list.first = (TempDownCB)->next;			\
                if((TempFec)->down_cb_list.last == (TempDownCB))					\
	                (TempFec)->down_cb_list.last = (TempDownCB)->prev;			\
                if((TempDownCB)->prev != MPLS_NULL)									\
	                (TempDownCB)->prev->next = (TempDownCB)->next;						\
                if((TempDownCB)->next != NULL)										\
	                (TempDownCB)->next->prev = (TempDownCB)->prev;						\         \
	        	if(TempDownCB != MPLS_NULL)             \
	        	{			           \
	                 (TempDownCB)->next = NULL;						 \				
	                 (TempDownCB)->prev = (TempFec)->down_cb_list.last;	 \			
	                 if(TempDownCB->prev != NULL)					\				
	                     TempDownCB->prev->next = TempDownCB;		\					
	                 TempFec->down_cb_list.last = TempDownCB;	\	                 		
	            }	                                        \
	        }                                               \
	 }
	    
#endif

⌨️ 快捷键说明

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