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

📄 encdec.h

📁 技术文件名称:MPLSv1.0软件模块测试规程
💻 H
📖 第 1 页 / 共 5 页
字号:
    } mplsLdpTrAdrIpv6Tlv_t;
    /* wengqing 2k/11/24 add mplsLdpTrAdrIpv6Tlv_s
       mplsLdpTrAdrTlv_s保留,兼容IPV4
    */


/***********************************************************************
   Configuration Sequence Number (TLV) Encoding
   draft-ietf-mpls-ldp-11.txt page 55
***********************************************************************/

   typedef struct mplsLdpCsnTlv_s 
   {
      struct mplsLdpTlv_s baseTlv;
      unsigned long               seqNumber;

   } mplsLdpCsnTlv_t;



/***********************************************************************
     Hello message encoding 
 
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|   Hello (0x0100)            |      Message Length           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Common Hello Parameters TLV               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Optional Parameters                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   draft-ietf-mpls-ldp-11.txt page 53
***********************************************************************/

   typedef struct mplsLdpHelloMsg_s
   {
      struct mplsLdpMsg_s           baseMsg;
      struct mplsLdpChpTlv_s        chp;         /* common hello param tlv  */
      struct mplsLdpTrAdrTlv_s      trAdr;       /* transport address tlv   */
      struct mplsLdpTrAdrIpv6Tlv_s  trAdrIpv6;       /* transport address tlv   */
      struct mplsLdpCsnTlv_s        csn;         /* configuration seq # tlv */
      unsigned char                         chpTlvExists:1;
      unsigned char                         trAdrTlvExists:1;
      unsigned char                         csnTlvExists:1; 
      unsigned char                         trAdrIpv6TlvExists:1;
                                                /* 编解码时判断TrAddr类型 */
 
   } mplsLdpHelloMsg_t;


/***********************************************************************
   KeepAlive Message encoding
 
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|   KeepAlive (0x0201)        |      Message Length           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Optional Parameters                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Note: there are no optional param defined for keep alive.
***********************************************************************/

   typedef struct mplsLdpKeepAlMsg_s
   {
      struct mplsLdpMsg_s baseMsg;

   } mplsLdpKeepAlMsg_t ;



/***********************************************************************
   Address List TLV encoding

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|F| Address List (0x0101)     |      Length                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Address Family            |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                                                               |
   |                        Addresses                              |
   ~                                                               ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   draft-ietf-mpls-ldp-11.txt page 40
   note:  only ipv4 address encodings are defined by this version of
          the protocol
***********************************************************************/

   typedef struct mplsLdpAdrTlv_s
   {
      struct mplsLdpTlv_s baseTlv;
      unsigned short             addrFamily;
      unsigned long               address[MPLS_MAXNUMBERADR];

   } mplsLdpAdrTlv_t;




/***********************************************************************
   Address (0x0300) / Address Withdraw(0x0301)  message encoding

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|   Address                   |      Message Length           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Address List TLV                          |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Optional Parameters                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
draft-ietf-mpls-ldp-11.txt page 67
Note: there are no optional param defined for address message.
***********************************************************************/

   typedef struct mplsLdpAdrMsg_s
   {
      struct mplsLdpMsg_s    baseMsg;
      struct mplsLdpAdrTlv_s addressList;
      struct mplsLdpTlv_s 	 baseTlv[MPLS_LDP_UNKNOWN_TLV_NO];
      unsigned char                 adrListTlvExists:1;
      unsigned char                  unknownNo;
	  unsigned char                  unknownValue[MPLS_LDP_UNKNOWN_TLV_LENGTH];

   } mplsLdpAdrMsg_t;



/***********************************************************************
   Wildcard FEC Element encoding
   draft-ietf-mpls-ldp-11.txt page 37
***********************************************************************/

   typedef struct mplsLdpWildFec_s
   {
      unsigned char type;

   } mplsLdpWildFec_t;



/***********************************************************************
   Prefix FEC Element encoding

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Prefix (2)   |     Address Family            |     PreLen    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                     Prefix                                    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Host Address FEC Element encoding

      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Host Addr (3) |     Address Family            | Host Addr Len |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                     Host Addr                                 |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    draft-ietf-mpls-ldp-11.txt page 37
Note: the code handles prefixes and host addresses whose length is 
      less or equal to 4 bytes. only padded to a byte boundary
***********************************************************************/

   typedef struct mplsLdpAddressFec_s
   {
      unsigned char  type;
      unsigned short addressFam;
      unsigned char  preLen;      /* prefix FEC: length of the adr prefix (in bits)
			                or host adr FEC: length of the host address (in 
			                bytes)
			               */
      unsigned long   address;    /* wengqing 2k/11/24 only for Ipv4*/

   } mplsLdpAddressFec_t;


/***********************************************************************
   MPLS_CRLSP_FEC FEC Element encoding

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | CR-LSP (4)    |          Reserved                             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
           0          
      0 1 2 3 4 5 6 7 
     +-+-+-+-+-+-+-+-+
     | CR-LSP (4)    |
     +-+-+-+-+-+-+-+-+
     draft-ietf-mpls-crldp-04.txt page 26
***********************************************************************/

   typedef struct mplsLdpCrlspFec_s
   {
      unsigned char  type;
//      unsigned char  res1;  /* reserved */
//      unsigned short res2;  /* reserved */
      /* wengqing 2k/11/24 modify according to crldp-04.txt */
   } mplsLdpCrlspFec_t;



/***********************************************************************
   FEC Tlv encoding

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|F| FEC (0x0100)              |      Length                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        FEC Element 1                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                                                               ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        FEC Element n                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   draft-ietf-mpls-ldp-11.txt    page   36
   draft-ietf-mpls-crldp-04.txt  page   26
***********************************************************************/
   
   typedef union mplsFecElement_u 
   {
      struct mplsLdpAddressFec_s addressEl;  /* prefix | host adr */
      struct mplsLdpWildFec_s    wildcardEl; /* for wilcard fec   */
      struct mplsLdpCrlspFec_s   crlspEl;    /* MPLS_CRLSP_FEC fec elem    */

   } mplsFecElement_t;
    
   typedef struct mplsLdpFecTlv_s 
   {
      struct mplsLdpTlv_s     baseTlv;
      union mplsFecElement_u  fecElArray[MPLS_MAXNUMFECELEMENT];
      unsigned short                 fecElemTypes[MPLS_MAXNUMFECELEMENT];
      unsigned char                  wcElemExists:1; 
      unsigned short                 numberFecElements;

   } mplsLdpFecTlv_t;


/***********************************************************************
   Generic Label Tlv encoding

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|F| Generic Label (0x0200)    |      Length                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Label                                                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   draft-ietf-mpls-ldp-11.txt page 38
***********************************************************************/

   typedef struct mplsLdpGenLblTlv_s
   {
      struct mplsLdpTlv_s baseTlv;
      unsigned long               label;   /* 20-bit number in 4 octet field */

   } mplsLdpGenLblTlv_t;


/***********************************************************************
   Atm Label Tlv encoding

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |U|F| ATM Label (0x0201)        |         Length                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Res| V |          VPI          |         VCI                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   draft-ietf-mpls-ldp-11.txt page 39
***********************************************************************/

   typedef struct mplsLdpAtmLblFlag_s 
   {
      BITFIELDS_ASCENDING_3( unsigned short res:2,
	                         unsigned short v  :2,
	                         unsigned short vpi:12 
	                        )
   } mplsLdpAtmLblFlag_t;

   typedef struct mplsLdpAtmLblTlv_s
   {

⌨️ 快捷键说明

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