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

📄 ldp_nortel.h

📁 实现了MPLS中的标签分发协议(LDP 3036 )的基本功能
💻 H
📖 第 1 页 / 共 5 页
字号:
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;/***********************************************************************   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                          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/typedef union mplsFecElement_u {  struct mplsLdpAddressFec_s addressEl; /* prefix | host adr */  struct mplsLdpWildFec_s wildcardEl; /* for wilcard fec   */  struct mplsLdpCrlspFec_s crlspEl; /* CRLSP fec elem    */} mplsFecElement_t;typedef struct mplsLdpFecTlv_s {  struct mplsLdpTlv_s baseTlv;  union mplsFecElement_u fecElArray[MPLS_MAXNUMFECELEMENT];  u_short fecElemTypes[MPLS_MAXNUMFECELEMENT];  u_char wcElemExists:1;  u_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                                                     |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/typedef struct mplsLdpGenLblTlv_s {  struct mplsLdpTlv_s baseTlv;  u_int 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                   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/typedef struct mplsLdpAtmLblFlag_s {  BITFIELDS_ASCENDING_3(u_short res:2, u_short v:2, u_short vpi:12)} mplsLdpAtmLblFlag_t;typedef struct mplsLdpAtmLblTlv_s {  struct mplsLdpTlv_s baseTlv;  union {    struct mplsLdpAtmLblFlag_s flags;    u_short mark;  } flags;  u_short vci;} mplsLdpAtmLblTlv_t;/***********************************************************************   Frame Relay 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| Frame Relay Label (0x0202)|       Length                  |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   | Reserved    |Len|                     DLCI                    |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+***********************************************************************/typedef struct mplsLdpFrLblFlag_s {  BITFIELDS_ASCENDING_3(u_int res:7, u_int len:2, u_int dlci:23)} mplsLdpFrLblFlag_t;typedef struct mplsLdpFrLblTlv_s {  struct mplsLdpTlv_s baseTlv;  union {    struct mplsLdpFrLblFlag_s flags;    u_int mark;  } flags;} mplsLdpFrLblTlv_t;/***********************************************************************   Hop Count 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| Hop Count (0x0103)        |      Length                   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |     HC Value  |   +-+-+-+-+-+-+-+-+***********************************************************************/typedef struct mplsLdpHopTlv_s {  struct mplsLdpTlv_s baseTlv;

⌨️ 快捷键说明

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