]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-rsvp.c
- bugfix: rework the AS_PATH decoder per draft-ietf-idr-rfc3065bis:
[tcpdump] / print-rsvp.c
index d32f2f526e0338a24ec8f0467bd1e480291da807..5592421b5e512bcdb70457b933f2e188fdfa9008 100644 (file)
@@ -14,8 +14,8 @@
  */
 
 #ifndef lint
-static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.22 2003-10-20 10:35:20 hannes Exp $";
+static const char rcsid[] _U_ =
+    "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.26 2003-11-16 09:36:35 guy Exp $";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -77,6 +77,7 @@ struct rsvp_object_header {
 
 #define RSVP_VERSION            1
 #define        RSVP_EXTRACT_VERSION(x) (((x)&0xf0)>>4) 
+#define        RSVP_EXTRACT_FLAGS(x)   ((x)&0x0f)
 
 #define        RSVP_MSGTYPE_PATH       1
 #define        RSVP_MSGTYPE_RESV       2
@@ -107,6 +108,11 @@ static const struct tok rsvp_msg_type_values[] = {
     { 0, NULL}
 };
 
+static const struct tok rsvp_header_flag_values[] = {
+    { 0x01,                  "Refresh reduction capable" }, /* rfc2961 */
+    { 0, NULL}
+};
+
 #define        RSVP_OBJ_SESSION            1   /* rfc2205 */
 #define        RSVP_OBJ_RSVP_HOP           3   /* rfc2205, rfc3473 */
 #define        RSVP_OBJ_INTEGRITY          4
@@ -533,9 +539,10 @@ rsvp_print(register const u_char *pptr, register u_int len) {
 
     tlen=EXTRACT_16BITS(rsvp_com_header->length);
 
-    printf("RSVP\n\tv: %u, msg-type: %s, length: %u, ttl: %u, checksum: 0x%04x",
+    printf("RSVP\n\tv: %u, msg-type: %s, Flags: [%s], length: %u, ttl: %u, checksum: 0x%04x",
            RSVP_EXTRACT_VERSION(rsvp_com_header->version_flags),
            tok2str(rsvp_msg_type_values, "unknown, type: %u",rsvp_com_header->msg_type),
+           bittok2str(rsvp_header_flag_values,"none",RSVP_EXTRACT_FLAGS(rsvp_com_header->version_flags)),
            tlen,
            rsvp_com_header->ttl,
            EXTRACT_16BITS(rsvp_com_header->checksum));
@@ -788,10 +795,11 @@ rsvp_print(register const u_char *pptr, register u_int len) {
                 obj_tptr+=12;
                 break;
             case RSVP_CTYPE_4:
-                printf("\n\t    LSP Encoding Type: %s",
+                printf("\n\t    LSP Encoding Type: %s (%u)",
                        tok2str(gmpls_encoding_values,
-                               "Unknown (0x%02x)",
-                               *obj_tptr));
+                               "Unknown",
+                               *obj_tptr),
+                      *obj_tptr);
                 printf("\n\t    Switching Type: %s (%u), Payload ID: %s (0x%04x)",
                        tok2str(gmpls_switch_cap_values,
                                "Unknown",
@@ -892,6 +900,7 @@ rsvp_print(register const u_char *pptr, register u_int len) {
                        EXTRACT_32BITS(obj_tptr+4));
                 obj_tlen-=8;
                 obj_tptr+=8;
+                hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */
                 break;
 #ifdef INET6
             case RSVP_CTYPE_4: /* fall through - FIXME add TLV parser */
@@ -901,6 +910,7 @@ rsvp_print(register const u_char *pptr, register u_int len) {
                        EXTRACT_32BITS(obj_tptr+16));
                 obj_tlen-=20;
                 obj_tptr+=20;
+                hexdump=TRUE; /* unless we have a TLV parser lets just hexdump */
                 break;
 #endif
             default: