X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/d972c8c86236c9d3ce97c4a22dc09b5e9223bcde..2b4965f56167dfda7c60fc9db2d145698d948fd5:/print-rsvp.c diff --git a/print-rsvp.c b/print-rsvp.c index 37140f9f..6aa2f6d7 100644 --- a/print-rsvp.c +++ b/print-rsvp.c @@ -330,6 +330,7 @@ struct rsvp_obj_frr_t { #define RSVP_OBJ_XRO_RES 0 #define RSVP_OBJ_XRO_IPV4 1 #define RSVP_OBJ_XRO_IPV6 2 +#define RSVP_OBJ_XRO_LABEL 3 #define RSVP_OBJ_XRO_ASN 32 #define RSVP_OBJ_XRO_MPLS 64 @@ -337,6 +338,7 @@ static const struct tok rsvp_obj_xro_values[] = { { RSVP_OBJ_XRO_RES, "Reserved" }, { RSVP_OBJ_XRO_IPV4, "IPv4 prefix" }, { RSVP_OBJ_XRO_IPV6, "IPv6 prefix" }, + { RSVP_OBJ_XRO_LABEL, "Label" }, { RSVP_OBJ_XRO_ASN, "Autonomous system number" }, { RSVP_OBJ_XRO_MPLS, "MPLS label switched path termination" }, { 0, NULL} @@ -351,6 +353,12 @@ static const struct tok rsvp_obj_rro_flag_values[] = { { 0, NULL} }; +/* RFC3209 */ +static const struct tok rsvp_obj_rro_label_flag_values[] = { + { 0x01, "Global" }, + { 0, NULL} +}; + static const struct tok rsvp_resstyle_values[] = { { 17, "Wildcard Filter" }, { 10, "Fixed Filter" }, @@ -628,7 +636,15 @@ rsvp_intserv_print(const u_char *tptr, u_short obj_tlen) { } static int -rsvp_obj_print (const u_char *pptr, u_int plen, const u_char *tptr, +rsvp_obj_print (const u_char *pptr +#ifndef HAVE_LIBCRYPTO +_U_ +#endif +, u_int plen +#ifndef HAVE_LIBCRYPTO +_U_ +#endif +, const u_char *tptr, const char *ident, u_int tlen) { const struct rsvp_object_header *rsvp_obj_header; @@ -1065,6 +1081,18 @@ rsvp_obj_print (const u_char *pptr, u_int plen, const u_char *tptr, bittok2str(rsvp_obj_rro_flag_values, "none", *(obj_tptr+7))); /* rfc3209 says that this field is rsvd. */ + break; + case RSVP_OBJ_XRO_LABEL: + printf(", Flags: [%s] (%#x), Class-Type: %s (%u), %u", + bittok2str(rsvp_obj_rro_label_flag_values, + "none", + *(obj_tptr+2)), + *(obj_tptr+2), + tok2str(rsvp_ctype_values, + "Unknown", + *(obj_tptr+3) + 256*RSVP_OBJ_RRO), + *(obj_tptr+3), + EXTRACT_32BITS(obj_tptr+4)); } obj_tlen-=*(obj_tptr+1); obj_tptr+=*(obj_tptr+1);