]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-rsvp.c
don't pass on src & dst MAC adresses to the isoclns decoder as MAC adresses
[tcpdump] / print-rsvp.c
index 800473cd0c9b15f37897523503bf8fc1092a362c..8c9157770a704a49527d6206fce199076cea84da 100644 (file)
@@ -15,7 +15,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.15 2003-03-05 11:13:34 hannes Exp $";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-rsvp.c,v 1.19 2003-05-08 14:52:20 hannes Exp $";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -242,6 +242,15 @@ static const struct tok rsvp_obj_xro_values[] = {
     { 0, NULL}
 };
 
+/* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */
+static const struct tok rsvp_obj_rro_flag_values[] = {
+    { 0x01,                  "Local protection available" },
+    { 0x02,                   "Local protection in use" },
+    { 0x04,                   "Bandwidth protection" },
+    { 0x08,                   "Node protection" },
+    { 0, NULL}
+};
+
 static const struct tok rsvp_resstyle_values[] = {
     { 17,                    "Wildcard Filter" },
     { 10,                     "Fixed Filter" },
@@ -274,9 +283,11 @@ static const struct tok rsvp_intserv_parameter_id_values[] = {
 };
 
 static struct tok rsvp_session_attribute_flag_values[] = {
-    { 1,                     "Local Protection desired" },
-    { 2,                      "Label Recording desired" },
-    { 4,                      "SE Style desired" },
+    { 0x01,                  "Local Protection desired" },
+    { 0x02,                   "Label Recording desired" },
+    { 0x04,                   "SE Style desired" },
+    { 0x08,                   "Bandwidth protection desired" }, /* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */
+    { 0x10,                   "Node protection desired" },      /* draft-ietf-mpls-rsvp-lsp-fastreroute-02.txt */
     { 0, NULL}
 };
 
@@ -720,10 +731,13 @@ rsvp_print(register const u_char *pptr, register u_int len) {
                                    RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)));                
                     switch(RSVP_OBJ_XRO_MASK_SUBOBJ(*obj_tptr)) {
                     case RSVP_OBJ_XRO_IPV4:
-                        printf(", %s, %s/%u",
+                        printf(", %s, %s/%u, Flags: [%s]",
                                RSVP_OBJ_XRO_MASK_LOOSE(*obj_tptr) ? "Loose" : "Strict",
                                ipaddr_string(obj_tptr+2),
-                               *(obj_tptr+6));
+                               *(obj_tptr+6),
+                               bittok2str(rsvp_obj_rro_flag_values,
+                                   "none",
+                                   *(obj_tptr+7))); /* rfc3209 says that this field is rsvd. */
                     }
                     obj_tlen-=*(obj_tptr+1);
                     obj_tptr+=*(obj_tptr+1);
@@ -764,7 +778,7 @@ rsvp_print(register const u_char *pptr, register u_int len) {
         case RSVP_OBJ_SESSION_ATTRIBUTE:
             switch(rsvp_obj_ctype) {
             case RSVP_CTYPE_TUNNEL_IPV4:
-                printf("\n\t    Session Name: %s",(obj_tptr+3));
+                printf("\n\t    Session Name: %s",(obj_tptr+4));
                 printf("\n\t    Setup Priority: %u, Holding Priority: %u, Flags: [%s]",
                        (int)*obj_tptr,
                        (int)*(obj_tptr+1),
@@ -943,15 +957,16 @@ rsvp_print(register const u_char *pptr, register u_int len) {
                        ipaddr_string(obj_tptr),
                        *(obj_tptr+4),
                        tok2str(rsvp_obj_error_code_values,"unknown",error_code),
-                       error_code,
-                       error_value);
+                       error_code);
                 switch (error_code) {
                 case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING:
                     printf(", Error Value: %s (%u)",
-                           tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value));
+                           tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value),
+                           error_value);
                     break;
                 default:
-                    printf(", Unknown Error Value (%u)");
+                    printf(", Unknown Error Value (%u)", error_value);
+                    break;
                 }
                 break;
 #ifdef INET6
@@ -962,16 +977,16 @@ rsvp_print(register const u_char *pptr, register u_int len) {
                        ip6addr_string(obj_tptr),
                        *(obj_tptr+16),
                        tok2str(rsvp_obj_error_code_values,"unknown",error_code),
-                       error_code,
-                       error_value);
+                       error_code);
 
                 switch (error_code) {
                 case RSVP_OBJ_ERROR_SPEC_CODE_ROUTING:
                     printf(", Error Value: %s (%u)",
-                           tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value));
+                           tok2str(rsvp_obj_error_code_routing_values,"unknown",error_value),
+                          error_value);
                     break;
                 default:
-                    printf(", Unknown Error Value (%u)");
+                    break;
                 }
 
                 break;