NAT: replace format_vnet_sw_interface_name with format_vnet_sw_if_index_name (VPP... 66/10266/2
authorMatus Fabian <matfabia@cisco.com>
Fri, 26 Jan 2018 13:07:23 +0000 (05:07 -0800)
committerOle Trøan <otroan@employees.org>
Tue, 30 Jan 2018 09:22:24 +0000 (09:22 +0000)
Avoid crash when interface was deleted.

Change-Id: I2ac3031c13ca5ad3360495e1c4cb90b0002be5ff
Signed-off-by: Matus Fabian <matfabia@cisco.com>
src/plugins/nat/nat.c
src/plugins/nat/nat44_cli.c
src/plugins/nat/nat64_cli.c

index 95004da..0520ded 100644 (file)
@@ -2560,16 +2560,14 @@ u8 * format_snat_static_map_to_resolve (u8 * s, va_list * args)
   if (m->addr_only)
       s = format (s, "local %U external %U vrf %d",
                   format_ip4_address, &m->l_addr,
-                  format_vnet_sw_interface_name, vnm,
-                  vnet_get_sw_interface (vnm, m->sw_if_index),
+                  format_vnet_sw_if_index_name, vnm, m->sw_if_index,
                   m->vrf_id);
   else
       s = format (s, "%U local %U:%d external %U:%d vrf %d",
                   format_snat_protocol, m->proto,
                   format_ip4_address, &m->l_addr, m->l_port,
-                  format_vnet_sw_interface_name, vnm,
-                  vnet_get_sw_interface (vnm, m->sw_if_index), m->e_port,
-                  m->vrf_id);
+                  format_vnet_sw_if_index_name, vnm, m->sw_if_index,
+                  m->e_port, m->vrf_id);
 
   return s;
 }
index 5114615..f61f59b 100644 (file)
@@ -371,9 +371,8 @@ snat_feature_command_fn (vlib_main_t * vm,
                {
                  error = clib_error_return (0, "%s %U failed",
                                             is_del ? "del" : "add",
-                                            format_vnet_sw_interface_name,
-                                            vnm, vnet_get_sw_interface (vnm,
-                                                                        sw_if_index));
+                                            format_vnet_sw_if_index_name,
+                                            vnm, sw_if_index);
                  goto done;
                }
            }
@@ -383,9 +382,8 @@ snat_feature_command_fn (vlib_main_t * vm,
                {
                  error = clib_error_return (0, "%s %U failed",
                                             is_del ? "del" : "add",
-                                            format_vnet_sw_interface_name,
-                                            vnm, vnet_get_sw_interface (vnm,
-                                                                        sw_if_index));
+                                            format_vnet_sw_if_index_name,
+                                            vnm, sw_if_index);
                  goto done;
                }
            }
@@ -404,9 +402,8 @@ snat_feature_command_fn (vlib_main_t * vm,
                {
                  error = clib_error_return (0, "%s %U failed",
                                             is_del ? "del" : "add",
-                                            format_vnet_sw_interface_name,
-                                            vnm, vnet_get_sw_interface (vnm,
-                                                                        sw_if_index));
+                                            format_vnet_sw_if_index_name,
+                                            vnm, sw_if_index);
                  goto done;
                }
            }
@@ -416,9 +413,8 @@ snat_feature_command_fn (vlib_main_t * vm,
                {
                  error = clib_error_return (0, "%s %U failed",
                                             is_del ? "del" : "add",
-                                            format_vnet_sw_interface_name,
-                                            vnm, vnet_get_sw_interface (vnm,
-                                                                        sw_if_index));
+                                            format_vnet_sw_if_index_name,
+                                            vnm, sw_if_index);
                  goto done;
                }
            }
@@ -445,8 +441,8 @@ nat44_show_interfaces_command_fn (vlib_main_t * vm, unformat_input_t * input,
   /* *INDENT-OFF* */
   pool_foreach (i, sm->interfaces,
   ({
-    vlib_cli_output (vm, " %U %s", format_vnet_sw_interface_name, vnm,
-                     vnet_get_sw_interface (vnm, i->sw_if_index),
+    vlib_cli_output (vm, " %U %s", format_vnet_sw_if_index_name, vnm,
+                     i->sw_if_index,
                      (nat_interface_is_inside(i) &&
                       nat_interface_is_outside(i)) ? "in out" :
                      (nat_interface_is_inside(i) ? "in" : "out"));
@@ -455,8 +451,8 @@ nat44_show_interfaces_command_fn (vlib_main_t * vm, unformat_input_t * input,
   pool_foreach (i, sm->output_feature_interfaces,
   ({
     vlib_cli_output (vm, " %U output-feature %s",
-                     format_vnet_sw_interface_name, vnm,
-                     vnet_get_sw_interface (vnm, i->sw_if_index),
+                     format_vnet_sw_if_index_name, vnm,
+                     i->sw_if_index,
                      (nat_interface_is_inside(i) &&
                       nat_interface_is_outside(i)) ? "in out" :
                      (nat_interface_is_inside(i) ? "in" : "out"));
@@ -830,14 +826,14 @@ nat44_show_interface_address_command_fn (vlib_main_t * vm,
   vlib_cli_output (vm, "NAT44 pool address interfaces:");
   vec_foreach (sw_if_index, sm->auto_add_sw_if_indices)
     {
-      vlib_cli_output (vm, " %U", format_vnet_sw_interface_name, vnm,
-                       vnet_get_sw_interface (vnm, *sw_if_index));
+      vlib_cli_output (vm, " %U", format_vnet_sw_if_index_name, vnm,
+                       *sw_if_index);
     }
   vlib_cli_output (vm, "NAT44 twice-nat pool address interfaces:");
   vec_foreach (sw_if_index, sm->auto_add_sw_if_indices_twice_nat)
     {
-      vlib_cli_output (vm, " %U", format_vnet_sw_interface_name, vnm,
-                       vnet_get_sw_interface (vnm, *sw_if_index));
+      vlib_cli_output (vm, " %U", format_vnet_sw_if_index_name, vnm,
+                       *sw_if_index);
     }
   /* *INDENT-ON* */
 
index d1acca9..5b46fed 100644 (file)
@@ -181,22 +181,22 @@ nat64_interface_feature_command_fn (vlib_main_t * vm,
            case VNET_API_ERROR_NO_SUCH_ENTRY:
              error =
                clib_error_return (0, "%U NAT64 feature not enabled.",
-                                  format_vnet_sw_interface_name, vnm,
-                                  vnet_get_sw_interface (vnm, sw_if_index));
+                                  format_vnet_sw_if_index_name, vnm,
+                                  sw_if_index);
              goto done;
            case VNET_API_ERROR_VALUE_EXIST:
              error =
                clib_error_return (0, "%U NAT64 feature already enabled.",
-                                  format_vnet_sw_interface_name, vnm,
-                                  vnet_get_sw_interface (vnm, sw_if_index));
+                                  format_vnet_sw_if_index_name, vnm,
+                                  vnm, sw_if_index);
              goto done;
            case VNET_API_ERROR_INVALID_VALUE:
            case VNET_API_ERROR_INVALID_VALUE_2:
              error =
                clib_error_return (0,
                                   "%U NAT64 feature enable/disable failed.",
-                                  format_vnet_sw_interface_name, vnm,
-                                  vnet_get_sw_interface (vnm, sw_if_index));
+                                  format_vnet_sw_if_index_name, vnm,
+                                  sw_if_index);
              goto done;
            default:
              break;
@@ -216,22 +216,22 @@ nat64_interface_feature_command_fn (vlib_main_t * vm,
            case VNET_API_ERROR_NO_SUCH_ENTRY:
              error =
                clib_error_return (0, "%U NAT64 feature not enabled.",
-                                  format_vnet_sw_interface_name, vnm,
-                                  vnet_get_sw_interface (vnm, sw_if_index));
+                                  format_vnet_sw_if_index_name, vnm,
+                                  sw_if_index);
              goto done;
            case VNET_API_ERROR_VALUE_EXIST:
              error =
                clib_error_return (0, "%U NAT64 feature already enabled.",
-                                  format_vnet_sw_interface_name, vnm,
-                                  vnet_get_sw_interface (vnm, sw_if_index));
+                                  format_vnet_sw_if_index_name, vnm,
+                                  sw_if_index);
              goto done;
            case VNET_API_ERROR_INVALID_VALUE:
            case VNET_API_ERROR_INVALID_VALUE_2:
              error =
                clib_error_return (0,
                                   "%U NAT64 feature enable/disable failed.",
-                                  format_vnet_sw_interface_name, vnm,
-                                  vnet_get_sw_interface (vnm, sw_if_index));
+                                  format_vnet_sw_if_index_name, vnm,
+                                  sw_if_index);
              goto done;
            default:
              break;
@@ -254,8 +254,8 @@ nat64_cli_interface_walk (snat_interface_t * i, void *ctx)
   vlib_main_t *vm = ctx;
   vnet_main_t *vnm = vnet_get_main ();
 
-  vlib_cli_output (vm, " %U %s", format_vnet_sw_interface_name, vnm,
-                  vnet_get_sw_interface (vnm, i->sw_if_index),
+  vlib_cli_output (vm, " %U %s", format_vnet_sw_if_index_name, vnm,
+                  i->sw_if_index,
                   (nat_interface_is_inside (i)
                    && nat_interface_is_outside (i)) ? "in out" :
                   nat_interface_is_inside (i) ? "in" : "out");