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

📄 mpls_encdec_02.c

📁 Linux平台下
💻 C
📖 第 1 页 / 共 5 页
字号:
   |                     Message ID                                |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                     Status (TLV)                              |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                     Optional Parameters                       |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                     LSPID TLV (optional for CR-LDP)           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/   typedef struct mplsLdpNotifMsg_s   {      struct mplsLdpMsg_s         baseMsg;      struct mplsLdpStatusTlv_s   status;      struct mplsLdpExStatusTlv_s exStatus;    /* extended status tlv */      struct mplsLdpRetPduTlv_s   retPdu;      /* returned PDU tlv    */      struct mplsLdpRetMsgTlv_s   retMsg;      /* returned MSG tlv    */      struct mplsLdpLspIdTlv_s    lspidTlv;    /* lspid tlv           */      u_char                      statusTlvExists:1;      u_char                      exStatusTlvExists:1;      u_char                      retPduTlvExists:1;      u_char                      retMsgTlvExists:1;      u_char                      lspidTlvExists;    } mplsLdpNotifMsg_t;/***********************************************************************   Common Hello Parameters 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| Common Hello Parms(0x0400)|      Length                   |     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |      Hold Time                |T|R| Reserved                  |     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/   typedef struct mplsLdpChpFlag_s   {     BITFIELDS_ASCENDING_3( u_short target :1, /* T bit */                            u_short request:1, /* R bit */                            u_short res    :14 )   } mplsLdpChpFlag_t;    typedef struct mplsLdpChpTlv_s    {      struct mplsLdpTlv_s baseTlv;      u_short             holdTime;      union {  struct mplsLdpChpFlag_s flags;               u_short                 mark;            } flags;   } mplsLdpChpTlv_t;/***********************************************************************   Transport Address (TLV) Encoding***********************************************************************/   typedef struct mplsLdpTrAdrTlv_s   {      struct mplsLdpTlv_s baseTlv;      u_int               address;   } mplsLdpTrAdrTlv_t;/***********************************************************************   Configuration Sequence Number (TLV) Encoding***********************************************************************/   typedef struct mplsLdpCsnTlv_s    {      struct mplsLdpTlv_s baseTlv;      u_int               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                       |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/   typedef struct mplsLdpHelloMsg_s   {      struct mplsLdpMsg_s         baseMsg;      struct mplsLdpChpTlv_s      chp;         /* common hello param tlv  */      struct mplsLdpTrAdrTlv_s    trAdr;       /* transport address tlv   */      struct mplsLdpCsnTlv_s      csn;         /* configuration seq # tlv */      u_char                      chpTlvExists:1;      u_char                      trAdrTlvExists:1;      u_char                      csnTlvExists:1;    } 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                              |   ~                                                               ~   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/   typedef struct mplsLdpAdrTlv_s   {      struct mplsLdpTlv_s baseTlv;      u_short             addrFamily;      u_int               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                       |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Note: there are no optional param defined for address message.***********************************************************************/   typedef struct mplsLdpAdrMsg_s   {      struct mplsLdpMsg_s    baseMsg;      struct mplsLdpAdrTlv_s addressList;      u_char                 adrListTlvExists:1;   } mplsLdpAdrMsg_t;/***********************************************************************   Wildcard FEC Element encoding***********************************************************************/   typedef struct mplsLdpWildFec_s   {      u_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                                 |     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Note: the code handles prefixes and host addresses whose length is       less or equal to 4 bytes.***********************************************************************/   typedef struct mplsLdpAddressFec_s   {      u_char  type;      u_short addressFam;      u_char  preLen;      /* prefix FEC: length of the adr prefix (in bits)			      or host adr FEC: length of the host address (in 			      bytes) */      u_int   address;   } mplsLdpAddressFec_t;/***********************************************************************   CRLSP 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                             |     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/   typedef struct mplsLdpCrlspFec_s   {      u_char  type;      u_char  res1;  /* reserved */      u_short res2;  /* reserved */   } mplsLdpCrlspFec_t;/***********************************************************************   Martini VC 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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   | VC tlv(128)   |C|         VC Type             |VC info Length |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                      Group ID                                 |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                        VC ID                                  |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                       Interface parameters                    |   |                              "                                |   |                              "                                |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   Interface Parameter 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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Parameter ID |    Length     |    Variable Length Value      |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                         Variable Length Value                 |   |                             "                                 |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/      typedef struct mplsLdpMartiniInterfaceParams_s   {      u_char id;      u_char len;

⌨️ 快捷键说明

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