NAT: replace format_vnet_sw_interface_name with format_vnet_sw_if_index_name (VPP-1149)

Avoid crash when interface was deleted.

Change-Id: I2ac3031c13ca5ad3360495e1c4cb90b0002be5ff
Signed-off-by: Matus Fabian <matfabia@cisco.com>
This commit is contained in:
Matus Fabian
2018-01-26 05:07:23 -08:00
committed by Ole Trøan
parent db14f5aff6
commit 6898507b42
3 changed files with 33 additions and 39 deletions

View 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;
}

View 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* */

View 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");