X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/608bcf8fa928d0f5d75d525359fcb6425da7d041..3b97eb047bfcee083e490e19c72f11fec4bd7a02:/print-rsvp.c diff --git a/print-rsvp.c b/print-rsvp.c index a5501945..63606fcc 100644 --- a/print-rsvp.c +++ b/print-rsvp.c @@ -15,7 +15,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.30 2004-07-21 21:50:46 guy Exp $"; + "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.32 2004-09-16 09:02:43 hannes Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -140,6 +140,7 @@ static const struct tok rsvp_header_flag_values[] = { #define RSVP_OBJ_LABEL_SET 36 /* rfc3473 */ #define RSVP_OBJ_PROTECTION 37 /* rfc3473 */ #define RSVP_OBJ_DETOUR 63 /* draft-ietf-mpls-rsvp-lsp-fastreroute-01 */ +#define RSVP_OBJ_CLASSTYPE 125 /* draft-ietf-tewg-diff-te-proto-07 */ #define RSVP_OBJ_SUGGESTED_LABEL 129 /* rfc3473 */ #define RSVP_OBJ_ACCEPT_LABEL_SET 130 /* rfc3473 */ #define RSVP_OBJ_RESTART_CAPABILITY 131 /* rfc3473 */ @@ -179,6 +180,7 @@ static const struct tok rsvp_obj_values[] = { { RSVP_OBJ_LABEL_SET, "Label Set" }, { RSVP_OBJ_ACCEPT_LABEL_SET, "Acceptable Label Set" }, { RSVP_OBJ_DETOUR, "Detour" }, + { RSVP_OBJ_CLASSTYPE, "Class Type" }, { RSVP_OBJ_SUGGESTED_LABEL, "Suggested Label" }, { RSVP_OBJ_PROPERTIES, "Properties" }, { RSVP_OBJ_FASTREROUTE, "Fast Re-Route" }, @@ -264,6 +266,7 @@ static const struct tok rsvp_ctype_values[] = { { 256*RSVP_OBJ_FASTREROUTE+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, { 256*RSVP_OBJ_DETOUR+RSVP_CTYPE_TUNNEL_IPV4, "Tunnel IPv4" }, { 256*RSVP_OBJ_PROPERTIES+RSVP_CTYPE_1, "1" }, + { 256*RSVP_OBJ_CLASSTYPE+RSVP_CTYPE_1, "1" }, { 0, NULL} }; @@ -345,10 +348,12 @@ static struct tok rsvp_obj_prop_tlv_values[] = { #define RSVP_OBJ_ERROR_SPEC_CODE_ROUTING 24 #define RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY 25 +#define RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE 125 static struct tok rsvp_obj_error_code_values[] = { { RSVP_OBJ_ERROR_SPEC_CODE_ROUTING, "Routing Problem" }, { RSVP_OBJ_ERROR_SPEC_CODE_NOTIFY, "Notify Error" }, + { RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE, "Diffserv TE Error" }, { 0, NULL} }; @@ -366,6 +371,17 @@ static struct tok rsvp_obj_error_code_routing_values[] = { { 0, NULL} }; +static struct tok rsvp_obj_error_code_diffserv_te_values[] = { + { 1, "Unexpected CLASSTYPE object" }, + { 2, "Unsupported Class-Type" }, + { 3, "Invalid Class-Type value" }, + { 4, "Class-Type and setup priority do not form a configured TE-Class" }, + { 5, "Class-Type and holding priority do not form a configured TE-Class" }, + { 6, "Inconsistency between signaled PSC and signaled Class-Type" }, + { 7, "Inconsistency between signaled PHBs and signaled Class-Type" }, + { 0, NULL} +}; + #define FALSE 0 #define TRUE 1 @@ -1144,6 +1160,20 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) { } break; + case RSVP_OBJ_CLASSTYPE: + switch(rsvp_obj_ctype) { + case RSVP_CTYPE_1: + printf("%s Class Type: %u", + ident, + EXTRACT_32BITS(obj_tptr)&0x7); + obj_tlen-=4; + obj_tptr+=4; + break; + default: + hexdump=TRUE; + } + break; + case RSVP_OBJ_ERROR_SPEC: switch(rsvp_obj_ctype) { case RSVP_CTYPE_3: /* fall through - FIXME add TLV parser */ @@ -1165,6 +1195,11 @@ rsvp_obj_print (const u_char *tptr, const char *ident, u_int tlen) { tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value), error_value); break; + case RSVP_OBJ_ERROR_SPEC_CODE_DIFFSERV_TE: + printf(", Error Value: %s (%u)", + tok2str(rsvp_obj_error_code_diffserv_te_values,"unknown",error_value), + error_value); + break; default: printf(", Unknown Error Value (%u)", error_value); break;