linux-cp: fix some CLI error messages
[vpp.git] / src / plugins / linux-cp / lcp_cli.c
index ff84e74..a7732a9 100644 (file)
@@ -34,74 +34,60 @@ lcp_itf_pair_create_command_fn (vlib_main_t *vm, unformat_input_t *input,
 {
   unformat_input_t _line_input, *line_input = &_line_input;
   vnet_main_t *vnm = vnet_get_main ();
-  u32 sw_if_index;
-  u8 *host_if_name;
-  lip_host_type_t host_if_type;
-  u8 *ns;
-  int r;
-
-  if (!unformat_user (input, unformat_line_input, line_input))
-    return 0;
-
-  sw_if_index = ~0;
-  host_if_name = ns = NULL;
-  host_if_type = LCP_ITF_HOST_TAP;
+  u32 sw_if_index = ~0;
+  u8 *host_if_name = NULL;
+  lip_host_type_t host_if_type = LCP_ITF_HOST_TAP;
+  u8 *ns = NULL;
+  clib_error_t *error = NULL;
 
-  while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
+  if (unformat_user (input, unformat_line_input, line_input))
     {
-      if (unformat (line_input, "%d", &sw_if_index))
-       ;
-      else if (unformat (line_input, "%U", unformat_vnet_sw_interface, vnm,
-                        &sw_if_index))
-       ;
-      else if (unformat (line_input, "host-if %s", &host_if_name))
-       ;
-      else if (unformat (line_input, "netns %s", &ns))
-       ;
-      else if (unformat (line_input, "tun"))
-       host_if_type = LCP_ITF_HOST_TUN;
-      else
+      while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
        {
-         unformat_free (line_input);
-         vec_free (host_if_name);
-         vec_free (ns);
-         return clib_error_return (0, "unknown input `%U'",
-                                   format_unformat_error, input);
+         if (unformat (line_input, "%d", &sw_if_index))
+           ;
+         else if (unformat (line_input, "%U", unformat_vnet_sw_interface, vnm,
+                            &sw_if_index))
+           ;
+         else if (unformat (line_input, "host-if %s", &host_if_name))
+           ;
+         else if (unformat (line_input, "netns %s", &ns))
+           ;
+         else if (unformat (line_input, "tun"))
+           host_if_type = LCP_ITF_HOST_TUN;
+         else
+           {
+             error = clib_error_return (0, "unknown input `%U'",
+                                        format_unformat_error, line_input);
+             break;
+           }
        }
+      unformat_free (line_input);
     }
 
-  unformat_free (line_input);
-
-  if (!host_if_name)
+  if (error)
+    ;
+  else if (sw_if_index == ~0)
+    error = clib_error_return (0, "interface name or sw_if_index required");
+  else if (!host_if_name)
+    error = clib_error_return (0, "host interface name required");
+  else if (vec_len (ns) >= LCP_NS_LEN)
+    error = clib_error_return (
+      0, "Namespace name should be fewer than %d characters", LCP_NS_LEN);
+  else
     {
-      vec_free (ns);
-      return clib_error_return (0, "host interface name required");
-    }
+      int r;
 
-  if (sw_if_index == ~0)
-    {
-      vec_free (host_if_name);
-      vec_free (ns);
-      return clib_error_return (0, "interface name or sw_if_index required");
+      r = lcp_itf_pair_create (sw_if_index, host_if_name, host_if_type, ns,
+                              NULL);
+      if (r)
+       error = clib_error_return (0, "linux-cp pair creation failed (%d)", r);
     }
 
-  if (vec_len (ns) >= LCP_NS_LEN)
-    {
-      vec_free (host_if_name);
-      vec_free (ns);
-      return clib_error_return (
-       0, "Namespace name should be fewer than %d characters", LCP_NS_LEN);
-    }
-
-  r = lcp_itf_pair_create (sw_if_index, host_if_name, host_if_type, ns, NULL);
-
   vec_free (host_if_name);
   vec_free (ns);
 
-  if (r)
-    return clib_error_return (0, "linux-cp pair creation failed (%d)", r);
-
-  return 0;
+  return error;
 }
 
 VLIB_CLI_COMMAND (lcp_itf_pair_create_command, static) = {
@@ -267,36 +253,42 @@ lcp_itf_pair_delete_command_fn (vlib_main_t *vm, unformat_input_t *input,
 {
   vnet_main_t *vnm = vnet_get_main ();
   unformat_input_t _line_input, *line_input = &_line_input;
-  u32 sw_if_index;
-  int r;
-
-  if (!unformat_user (input, unformat_line_input, line_input))
-    return 0;
+  u32 sw_if_index = ~0;
+  clib_error_t *error = NULL;
 
-  sw_if_index = ~0;
-
-  while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
+  if (unformat_user (input, unformat_line_input, line_input))
     {
-      if (unformat (line_input, "%d", &sw_if_index))
-       ;
-      else if (unformat (line_input, "%U", unformat_vnet_sw_interface, vnm,
-                        &sw_if_index))
-       ;
-      else
-       return clib_error_return (0, "unknown input `%U'",
-                                 format_unformat_error, input);
+      while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
+       {
+         if (unformat (line_input, "%d", &sw_if_index))
+           ;
+         else if (unformat (line_input, "%U", unformat_vnet_sw_interface, vnm,
+                            &sw_if_index))
+           ;
+         else
+           {
+             error = clib_error_return (0, "unknown input `%U'",
+                                        format_unformat_error, line_input);
+             break;
+           }
+       }
+      unformat_free (line_input);
     }
 
-  unformat_free (line_input);
-
-  if (sw_if_index == ~0)
-    return clib_error_return (0, "interface name or sw_if_index required");
+  if (error)
+    ;
+  else if (sw_if_index == ~0)
+    error = clib_error_return (0, "interface name or sw_if_index required");
+  else
+    {
+      int r;
 
-  r = lcp_itf_pair_delete (sw_if_index);
+      r = lcp_itf_pair_delete (sw_if_index);
+      if (r)
+       error = clib_error_return (0, "linux-cp pair deletion failed (%d)", r);
+    }
 
-  if (r)
-    return clib_error_return (0, "linux-cp pair deletion failed (%d)", r);
-  return 0;
+  return error;
 }
 
 VLIB_CLI_COMMAND (lcp_itf_pair_delete_command, static) = {