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

📄 performance.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 H
字号:
/**********************************************************************
/ 0 1 2 3 4 5 6 7
/ - - - - - - - - 
/| a   | b |c | d|e |
/a 区域(3bits)为待处理类型区域  “0”位标志与C进程处理
/                        “1”位标志与TCP进程(A041)处理
/                        “2”位标志与标记整合处理
/b 区域(2bits)为C进程处理类型   00表示BANDWIDTH_REQ
/                        01表示CRPVC_REQ
/                        10表示RLSBW_REQ
/                        11表示RLSPVC_REQ
/c 区域(1bit)为标记整合进程处理类型 0表示 LDP_FWD_CREATE
/                             1表示 LDP_FWD_CLOSE
/d 区域(1bit)标记LSP类型  0表示LDP_CR_LSP
                            1表示LDP_HOP_LSP
 e 区域(1bit)标记控制块是否将删除
/                        
/*********************************************************************/
/*#define MPLS_HELLO_MSGTYPE       0x01  /* hello msg                */
/*#define MPLS_INIT_MSGTYPE        0x02  /* initialization msg       */
/*#define MPLS_KEEPAL_MSGTYPE      0x03  /* keep alive msg           */
/*#define MPLS_ADDR_MSGTYPE        0x04  /* address msg              */
/*#define MPLS_ADDRWITH_MSGTYPE    0x05  /* address withdraw msg     */
/*#define MPLS_LBLREQ_MSGTYPE      0x06  /* label request msg        */
/*#define MPLS_LBLABORT_MSGTYPE    0x07  /* label abort request msg  */
/*#define MPLS_LBLMAP_MSGTYPE      0x08  /* label mapping msg        */
/*#define MPLS_LBLWITH_MSGTYPE     0x09  /* label withdraw msg       */
/*#define MPLS_LBLREL_MSGTYPE      0x10  /* label release msg        */
/*#define MPLS_NOT_MSGTYPE         0x11  /* notification msg         */
/* - - - - -  - - -
/*   0 1 2 3 4 5 6 7
/*   U U D D
     U: 01 M
     U: 10 W
     U: 11 N
     D: 01 R
     D: 10 A
     D: 11 RL
/*
/*消息类型占用四位4-7,
如果是通知消息,后四位指的是通知消息指向的消息
         MPLS_HELLO_MSGTYPE       0001   0x1 /* hello msg                
         MPLS_INIT_MSGTYPE        0010   0x2 /* initialization msg       
         MPLS_KEEPAL_MSGTYPE      0011   0x3 /* keep alive msg           
         MPLS_ADDR_MSGTYPE        0100   0x4 /* address msg              
         MPLS_ADDRWITH_MSGTYPE    0101   0x5 /* address withdraw msg     
         MPLS_LBLREQ_MSGTYPE      0110   0x6 /* label request msg        
         MPLS_LBLABORT_MSGTYPE    0111   0x7 /* label abort request msg  
         MPLS_LBLMAP_MSGTYPE      1000   0x8 /* label mapping msg        
         MPLS_LBLWITH_MSGTYPE     1001   0x9 /* label withdraw msg       
         MPLS_LBLREL_MSGTYPE      1010   0xa /* label release msg        
         MPLS_NOT_MSGTYPE         1011   0xb /* notification msg   


/*
/*


通知消息标志位
/* - - - - -  - - -
/*   0 1 2 3 4 5 6 7
2-7 通知类型
/* Notify消息中所用的status code  */
/*****************************************************************************************
     SUCCESS             						000001  0x1
     BADLDPID            						000010  0x2
     BADPROTVER          						000011  0x3
     BADPDULEN           						000100  0x4
     UNKNOWNMSGTYP       						000101  0x5
     BADMSGLEN           						000110  0x6
     UNKNOWNTLV          						000111  0x7
     BADTLVLEN           						001000  0x8           
     MALFORMTLVVAL       						001001  0x9
     HOLDTIMEEXP         						001010  0xa
     SHUT_DOWN           						001011  0xb
     LOOPDETECT          						001100  0xc
     UNKNOWNFEC          						001101  0xd
     NOROUTE             						001110  0xe
     NOLBLRESRC          						001111  0xf
     LBLRESRCAVA         						010000  0x10
     SREJNOHELLO         						010001  0x11
     SREJPARMADEVER      						010010  0x12
     SREJPARMMPDUL       						010011  0x13
     SREJPARMLBLRNG      						010100  0x14
     KEEPALTIMEEXP       						010101  0x15
     LBLREQAB            						010110  0x16
     MISSPARAMETER       						010111  0x17
     
     BADERTLVERR         						011000  0x18
     BADSTRICNERR        						011001  0x19
     BADLOOSNERR         						011010  0x1a
     BADINITERHOPER      						011011  0x1b
     RESRCUNAVA          						011100  0x1c
     TRAFPARAUNAVA       						011101  0x1d
     SETUPABORT          						011110  0x1e
     SHUTDOWN_REC        						011111  0x1f
     SHUTDOWN_SENT       						100000  0x20
     SESSATTEMPED        						100001  0x21
/*******************************************************************************************/

/* Notify消息中所用的status code  
#define     SUCCESS             						0x00000000
#define     BADLDPID            						0x00000001
#define     BADPROTVER          						0x00000002
#define     BADPDULEN           						0x00000003
#define     UNKNOWNMSGTYP       						0x00000004
#define     BADMSGLEN           						0x00000005
#define     UNKNOWNTLV          						0x00000006
#define     BADTLVLEN           						0x00000007              
#define     MALFORMTLVVAL       						0x00000008
#define     HOLDTIMEEXP         						0x00000009
#define     SHUT_DOWN           						0x0000000A
#define     LOOPDETECT          						0x0000000B
#define     UNKNOWNFEC          						0x0000000C
#define     NOROUTE             						0x0000000D
#define     NOLBLRESRC          						0x0000000E
#define     LBLRESRCAVA         						0x0000000F
#define     SREJNOHELLO         						0x00000010
#define     SREJPARMADEVER      						0x00000011
#define     SREJPARMMPDUL       						0x00000012
#define     SREJPARMLBLRNG      						0x00000013
#define     KEEPALTIMEEXP       						0x00000014
#define     LBLREQAB            						0x00000015
#define     MISSPARAMETER       						0x00000016

/*  新增加的状态编码  
#define     BADERTLVERR         						0x04000001
#define     BADSTRICNERR        						0x04000002
#define     BADLOOSNERR         						0x04000003
#define     BADINITERHOPER      						0x04000004
#define     RESRCUNAVA          						0x04000005
#define     TRAFPARAUNAVA       						0x04000006
#define     SETUPABORT          						0x04000007

#define     SHUTDOWN_REC        						0x08000001
#define     SHUTDOWN_SENT       						0x08000002
#define     SESSATTEMPED        						0x08000003


/*
/*********************************************************************/
/**********************************************************************
mplsLdpFecEntry   中添加变量:
mplsLdpFecEntry   *XcNext;     / 指向下一条待处理Xc /
mplsLdpFecEntry   * FecLbNext  / 指向下一条待处理标记/
mplsLdpFecEntry   *LblMsgNext  / 指向下一条待处理消息/
***********************************************************************/
#ifndef LDPPERFORM_H
#define LDPPERFORM_H

#include "_noalign.h"      


#define MAX_LDP_LBLMSGREQ_NUM  64

#define XC_WAIT_TIME          50
#define FECLBL_WAIT_TIME      20    /* wengqing modify for session down 2003-5-13 */
#define LBLMSG_WAIT_TIME      20 
#define PERFORMANCE_PDU_LEN               4096


/* 与a041模块通信队列中self指向的请求的节点结构 */
typedef struct { 
    mplsLdpSession_t     * session;
    unsigned short       pdulen;
    char                 *pdu_buffer; 
       
} MPLS_PACK LBLMSG_REQ;    

typedef struct { 
    struct tagLDPMSG_COMM    HighMsg;
       
} MPLS_PACK LBLMSG_HIGHREQ;    

typedef struct{
   struct _mplsLdpFecEntry        *link;
   unsigned long       num;
   struct _mplsLdpFecEntry        *last;
}Mpls_bufWait_link;

typedef struct{
   struct _mplsLdpCrLsp        *link;
   unsigned long       num;
   struct _mplsLdpCrLsp        *last;
}Mpls_CR_bufWait_link;

#ifdef PERFOMANCE_NEW
typedef struct{
   mplsLdpLspCB        *link;
   unsigned long       num;
   mplsLdpLspCB        *last;
}Dod_Mpls_bufWait_link;
#endif


/*FEC中添加变量 */
/*mplsLdpFecEntry   * XcNext;      指向下一条待处理Xc */
/*mplsLdpFecEntry   * FecLbNextl;   指向下一条待处理标记 */
/*mplsLdpFecEntry   * LblMsgNext ;  指向下一条待处理消息 */


/*控制块中添加变量 */
/*uchar              waitflag;               记录待处理类型 */
/*uchar              waitmsgtype;            记录消息类型 */
/*uchar              waitnotype;              记录通知消息类型*/

/*session 中添加变量  */
/*
typedef enum
{
    IUMEM_LDP_ADDR	= 0,
    IUMEM_LDP_FEC,
    IUMEM_LDP_UPCB,
    IUMEM_LDP_DOWNCB,
    IUMEM_LDP_CRFEC,
    IUMEM_LDP_LSPCB,
    IUMEM_LDP_TIMER,
    IUMEM_LDP_XC_QUE,
    IUMEM_LDP_XC_QUE_LQE, /* by hyh 02-7-20 10:40 */
/*    IUMEM_LDP_FECLABEL_QUE,
    IUMEM_LDP_FECLABEL_QUE_LQE,    /* by hyh 02-7-20 */
/*    IUMEM_LDP_LBLMSG_QUE,
    IUMEM_LDP_LBLMSG_QUE_LQE,
    IUMEM_LDP_LBLMSG_BUFFER,
    MAX_LDP_UTIL_MEM_TYPES
    
}IUMEM_LDP_TYPES;

*/


/*  待处理队列处理流程 */
/*
	Func_Xc_wait(){
	   if(队列剩余空间freecount>0){
	       while(freecount && Mpls_bufWait_Xclink不为空){
	          if(mplsLdpFecEntry->   
	          
	
	          处理Mpls_Xc_bufWait_link中的首节点(proc_waitxclink);
	          调整Mpls_Xc_bufWait_link链表;
	          freecount--;
	       }
	       }
	}
	
Func_lblmsg_wait(){
    while( Mpls_bufWait_lblmsglink不为空){
        取首节点;
        检查首节点的控制块链表,
	if(首节点有待TCP传送处理)   
	{   处理Mpls_Xc_bufWait_link中的首节点(proc_waitxclink);
	    调整Mpls_Xc_bufWait_link链表;
	    freecount--;
	}
	else 
    }
}
	
Func_lblmsg_wait(){
      判断消息类型;
      if(为hello和session消息){
         if(高优先级缓冲队列有剩余空间)
         直接加入到高优先级缓冲队列中
      }  
      else{
         查找session;
         if(session.pdu_buffer==NULL){
            if(freecount>0){
               if(申请4K内存成功)
                  freecount--;
               else  return FALSE;
               重定向session.pdu_buffer;
               初始化缓冲队列LblMsg_req节点,并将此节点置入缓冲队列;               
            }
            else return FALSE;
         }
         消息编码;
         if(pdu长度<编码长度){
             重置相应缓冲表项的PDU长度;
             session.pdu_buffer==NULL;
             if(freecount>0){
               if(申请4K内存成功)
                  freecount--;
               else  return FALSE;
               重定向session.pdu_buffer;
               初始化缓冲队列LblMsg_req节点,并将此节点置入缓冲队列;
               调整pdu长度;
               return TRUE             
             }
             else return FALSE;
         }
         else{
             调整pdu长度;
             return TRUE;
          }
         
      }
  
}   */
short Func_Xc_wait();
short Func_Xc_wait1();
short proc_waitxclink(mplsLdpLspCB *TempLspCB,char*  TempFec);
short wait_xc_append(mplsLdpLspCB *LspCBVar,void *pFecEntry,uchar xcflag);
short Func_FecLable_wait();
short Func_FecLable_wait1();
short proc_waitFecLbllink(TempLspCB,TempDownCB , TempFec);
short wait_lspfeclbl_append(mplsLdpLspCB *LspCBVar,void *pFecEntry,uchar xcflag);
short Xc_down_append(mplsLdpDownCB *TempDown,void *pFec);
short wait_crlspfeclbl_append(mplsLdpLspCB *LspCBVar,mplsLdpCrLsp *pFecEntry,uchar xcflag);
short wait_downfeclbl_append(mplsLdpDownCB *DownCBVar,mplsLdpFecEntry *pFecEntry,uchar xcflag);
short Func_Lblmsg_wait();
short Func_Lblmsg_wait1();
short lblmsg_wait_Upproce(upCb,fec);
short lblmsg_wait_Downproce(DownCb,fec);
void CR_LspCB_locat_adjust(TempLspCB,TempFec,waitflag);
short lblmsg_wait_Lspproce(LspCb,fec);
short wait_lsplblmsg_append(LspCBVar,pFecEntry,statuscode,notmsgtype,waitmsgtype);
short wait_uplblmsg_append(upCb,pFecEntry,statuscode,notmsgtype,waitmsgtype);
short wait_downlblmsg_append(LspCBVar,pFecEntry,waitmsgtype);
void UpCB_locat_adjust(TempUpCB,TempFec,waitflag,FecDelFlag);
void DownCB_locat_adjust(TempDownCB,TempFec,waitflag,FecDelFlag);
void LspCB_locat_adjust(TempLspCB,TempFec,waitflag,FecDelFlag);
short lblmsgswitch(unsigned long     statuscode,mplsLdpLspCB      *LspCBVar);
short upmsgswitch(unsigned long     statuscode,mplsLdpUpCB       * upCb);
short Func_lblmsg_wait_proce(mplsLdpSession_t * session, unsigned short eventType, void * inputEvent);
short  mpls_process_lblmsg_req();
void mpls_lblmsgreq_next();
void mpls_reset_lblmsg_req();
void mpls_lblmsgreq_queue_timeout();
short find_lblmsg_lqe(mplsLdpSession_t * session,MPLS_LQE   **templqe);
short walk_down_feclbl(mplsLdpFecEntry   * TempFec);
short walk_up_lblmsg(mplsLdpFecEntry   * TempFec);
short walk_down_lblmsg(mplsLdpFecEntry   * TempFec);
short walk_lsp_feclbl(mplsLdpFecEntry   * TempFec);
short walk_lsp_xc(mplsLdpFecEntry   * TempFec);
short walk_lsp_lblmsg(mplsLdpFecEntry   * TempFec);
void Lsp_Clear_Msg(mplsLdpLspCB * TempLspCB,mplsLdpFecEntry  * TempFec);
void Up_Clear_Msg(mplsLdpUpCB * UpCBVar,mplsLdpFecEntry   * TempFec);
void Down_Clear_Msg(mplsLdpDownCB *DownCBVar,mplsLdpFecEntry   * TempFec);
void mpls_clear_lblmsgreq(mplsLdpSession_t * session);
void lblmsg_req_out(MPLS_LQE  *lblmsg_lqe);
void down_out_waitlist(mplsLdpFecEntry *TempFec,mplsLdpDownCB *TempDownCB);
void up_out_waitlist(mplsLdpFecEntry *TempFec,mplsLdpUpCB *TempUpCB);
void lsp_out_waitlist(mplsLdpFecEntry *TempFec,mplsLdpLspCB *TempLspCB);
short Func_CR_FecLable_wait();
short Func_CR_Lblmsg_wait();
short Func_CR_FecLable_wait1();
short Func_CR_Lblmsg_wait1();
/*#ifndef PERFOMANCE_NEW*/
short Func_CR_Xc_wait1();
short Func_CR_Xc_wait();
/*#endif*/
#ifdef PERFOMANCE_NEW
void LspCB_adjust(TempLspCB,waitflag);
short Dod_Func_FecLable_wait();
#endif

#include "_restore.h"

#endif

⌨️ 快捷键说明

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