#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-lspping.c,v 1.12.2.1 2005-04-19 12:18:28 hannes Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-lspping.c,v 1.12.2.6 2006-06-23 02:07:27 hannes Exp $";
#endif
#ifdef HAVE_CONFIG_H
};
#define LSPPING_VERSION 1
-#define FALSE 0
-#define TRUE 1
static const struct tok lspping_msg_type_values[] = {
{ 1, "MPLS Echo Request"},
#define LSPPING_TLV_DOWNSTREAM_MAPPING 2
#define LSPPING_TLV_PAD 3
#define LSPPING_TLV_ERROR_CODE 4
-#define LSPPING_TLV_VENDOR_PRIVATE 5
+#define LSPPING_TLV_BFD_DISCRIMINATOR 15 /* draft-ietf-bfd-mpls-02 */
+#define LSPPING_TLV_BFD_DISCRIMINATOR_LEN 4
+#define LSPPING_TLV_VENDOR_PRIVATE 0xfc00
static const struct tok lspping_tlv_values[] = {
{ LSPPING_TLV_TARGET_FEC_STACK, "Target FEC Stack" },
{ LSPPING_TLV_DOWNSTREAM_MAPPING, "Downstream Mapping" },
{ LSPPING_TLV_PAD, "Pad" },
{ LSPPING_TLV_ERROR_CODE, "Error Code" },
+ { LSPPING_TLV_BFD_DISCRIMINATOR, "BFD Discriminator" },
{ LSPPING_TLV_VENDOR_PRIVATE, "Vendor Enterprise Code" },
{ 0, NULL}
};
tlen=len;
- printf("\n\tLSP-PINGv%u, msg-type: %s (%u), seq %u, length: %u\n\t reply-mode: %s (%u)",
+ printf("\n\tLSP-PINGv%u, msg-type: %s (%u), length: %u\n\t reply-mode: %s (%u)",
EXTRACT_16BITS(&lspping_com_header->version[0]),
tok2str(lspping_msg_type_values, "unknown",lspping_com_header->msg_type),
lspping_com_header->msg_type,
- EXTRACT_32BITS(lspping_com_header->seq_number),
len,
tok2str(lspping_reply_mode_values, "unknown",lspping_com_header->reply_mode),
lspping_com_header->reply_mode);
break;
+ case LSPPING_TLV_BFD_DISCRIMINATOR:
+ tptr += sizeof(struct lspping_tlv_header);
+ if (!TTEST2(*tptr, LSPPING_TLV_BFD_DISCRIMINATOR_LEN))
+ goto trunc;
+ printf("\n\t BFD Discriminator 0x%08x", EXTRACT_32BITS(tptr));
+ break;
/*
* FIXME those are the defined TLVs that lack a decoder
* you are welcome to contribute code ;-)