ip: fix punt cli to only consumes a line of input 73/28073/2
authorBenoît Ganne <bganne@cisco.com>
Mon, 27 Jul 2020 16:27:57 +0000 (18:27 +0200)
committerDave Barach <openvpp@barachs.net>
Tue, 28 Jul 2020 12:18:38 +0000 (12:18 +0000)
Type: fix

Change-Id: Idb6f82e08b29e3805ed2133acb5fd7226148f672
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vnet/ip/punt.c

index a295277..a3ccc43 100644 (file)
@@ -424,8 +424,9 @@ vnet_punt_add_del (vlib_main_t * vm, const punt_reg_t * pr, bool is_add)
 
 static clib_error_t *
 punt_cli (vlib_main_t * vm,
-         unformat_input_t * input, vlib_cli_command_t * cmd)
+         unformat_input_t * input__, vlib_cli_command_t * cmd)
 {
+  unformat_input_t line_input, *input = &line_input;
   clib_error_t *error = NULL;
   bool is_add = true;
   /* *INDENT-OFF* */
@@ -442,6 +443,9 @@ punt_cli (vlib_main_t * vm,
   u32 port;
   /* *INDENT-ON* */
 
+  if (!unformat_user (input__, unformat_line_input, input))
+    return 0;
+
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
       if (unformat (input, "del"))
@@ -476,6 +480,7 @@ punt_cli (vlib_main_t * vm,
     }
 
 done:
+  unformat_free (input);
   return error;
 }
 
@@ -509,8 +514,10 @@ VLIB_CLI_COMMAND (punt_command, static) = {
 
 static clib_error_t *
 punt_socket_register_cmd (vlib_main_t * vm,
-                         unformat_input_t * input, vlib_cli_command_t * cmd)
+                         unformat_input_t * input__,
+                         vlib_cli_command_t * cmd)
 {
+  unformat_input_t line_input, *input = &line_input;
   u8 *socket_name = 0;
   clib_error_t *error = NULL;
   /* *INDENT-OFF* */
@@ -526,6 +533,9 @@ punt_socket_register_cmd (vlib_main_t * vm,
   };
   /* *INDENT-ON* */
 
+  if (!unformat_user (input__, unformat_line_input, input))
+    return 0;
+
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
       if (unformat (input, "ipv4"))
@@ -556,6 +566,7 @@ punt_socket_register_cmd (vlib_main_t * vm,
     error = vnet_punt_socket_add (vm, 1, &pr, (char *) socket_name);
 
 done:
+  unformat_free (input);
   return error;
 }
 
@@ -577,9 +588,10 @@ VLIB_CLI_COMMAND (punt_socket_register_command, static) =
 
 static clib_error_t *
 punt_socket_deregister_cmd (vlib_main_t * vm,
-                           unformat_input_t * input,
+                           unformat_input_t * input__,
                            vlib_cli_command_t * cmd)
 {
+  unformat_input_t line_input, *input = &line_input;
   clib_error_t *error = NULL;
   /* *INDENT-OFF* */
   punt_reg_t pr = {
@@ -594,6 +606,9 @@ punt_socket_deregister_cmd (vlib_main_t * vm,
   };
   /* *INDENT-ON* */
 
+  if (!unformat_user (input__, unformat_line_input, input))
+    return 0;
+
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
       if (unformat (input, "ipv4"))
@@ -618,6 +633,7 @@ punt_socket_deregister_cmd (vlib_main_t * vm,
 
   error = vnet_punt_socket_del (vm, &pr);
 done:
+  unformat_free (input);
   return error;
 }
 
@@ -723,13 +739,17 @@ punt_client_show_one (const punt_client_t * pc, void *ctx)
 
 static clib_error_t *
 punt_socket_show_cmd (vlib_main_t * vm,
-                     unformat_input_t * input, vlib_cli_command_t * cmd)
+                     unformat_input_t * input__, vlib_cli_command_t * cmd)
 {
+  unformat_input_t line_input, *input = &line_input;
   clib_error_t *error = NULL;
   punt_type_t pt;
 
   pt = PUNT_TYPE_L4;
 
+  if (!unformat_user (input__, unformat_line_input, input))
+    return 0;
+
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
       if (unformat (input, "exception"))
@@ -749,6 +769,7 @@ punt_socket_show_cmd (vlib_main_t * vm,
   punt_client_walk (pt, punt_client_show_one, vm);
 
 done:
+  unformat_free (input);
   return (error);
 }