📄 encdec.h
字号:
} 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 + -