summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vnet/ip/lookup.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/vnet/ip/lookup.c b/src/vnet/ip/lookup.c
index a376e51d789..9bb53f5e8c0 100644
--- a/src/vnet/ip/lookup.c
+++ b/src/vnet/ip/lookup.c
@@ -1505,14 +1505,14 @@ ip_container_cmd (vlib_main_t * vm,
{
unformat_input_t _line_input, *line_input = &_line_input;
fib_prefix_t pfx;
-
- u32 is_del;
+ u32 is_del, addr_set = 0;
vnet_main_t *vnm;
u32 sw_if_index;
vnm = vnet_get_main ();
is_del = 0;
sw_if_index = ~0;
+ memset (&pfx, 0, sizeof (pfx));
/* Get a line of input. */
if (!unformat_user (main_input, unformat_line_input, line_input))
@@ -1524,12 +1524,14 @@ ip_container_cmd (vlib_main_t * vm,
{
pfx.fp_proto = FIB_PROTOCOL_IP4;
pfx.fp_len = 32;
+ addr_set = 1;
}
else if (unformat (line_input, "%U",
unformat_ip6_address, &pfx.fp_addr.ip6))
{
pfx.fp_proto = FIB_PROTOCOL_IP6;
pfx.fp_len = 128;
+ addr_set = 1;
}
else if (unformat (line_input, "%U",
unformat_vnet_sw_interface, vnm, &sw_if_index))
@@ -1541,9 +1543,10 @@ ip_container_cmd (vlib_main_t * vm,
format_unformat_error, line_input));
}
- if (~0 == sw_if_index)
+ if (~0 == sw_if_index || !addr_set)
{
- return (clib_error_return (0, "no interface"));
+ vlib_cli_output (vm, "interface and address must be set");
+ return 0;
}
vnet_ip_container_proxy_args_t args = {