vlib: vpp banner is outputted to non-interactive vppctl session
[vpp.git] / src / vlib / unix / cli.c
index 7b9a231..c7f0bcc 100644 (file)
@@ -2687,6 +2687,17 @@ unix_cli_kill (unix_cli_main_t * cm, uword cli_file_index)
   if (pool_is_free_index (cm->cli_file_pool, cli_file_index))
     return;
 
+  vec_foreach_index (i, cm->new_sessions)
+    {
+      unix_cli_new_session_t *ns = vec_elt_at_index (cm->new_sessions, i);
+
+      if (ns->cf_index == cli_file_index)
+       {
+         vec_del1 (cm->new_sessions, i);
+         break;
+       }
+    }
+
   cf = pool_elt_at_index (cm->cli_file_pool, cli_file_index);
   uf = pool_elt_at_index (fm->file_pool, cf->clib_file_index);
 
@@ -2863,6 +2874,7 @@ unix_cli_file_add (unix_cli_main_t * cm, char *name, int fd)
 {
   unix_main_t *um = &unix_main;
   clib_file_main_t *fm = &file_main;
+  vlib_node_main_t *nm = &vlib_get_main ()->node_main;
   unix_cli_file_t *cf;
   clib_file_t template = { 0 };
   vlib_main_t *vm = um->vlib_main;
@@ -2896,10 +2908,12 @@ unix_cli_file_add (unix_cli_main_t * cm, char *name, int fd)
          old_name = n->name;
          n->name = (u8 *) name;
        }
+      ASSERT (old_name);
+      hash_unset (nm->node_by_name, old_name);
+      hash_set (nm->node_by_name, name, n->index);
       vec_free (old_name);
 
       vlib_node_set_state (vm, n->index, VLIB_NODE_STATE_POLLING);
-
       _vec_len (cm->unused_cli_process_node_indices) = l - 1;
     }
   else
@@ -3352,7 +3366,6 @@ unix_cli_exec (vlib_main_t * vm,
   char *file_name;
   int fd;
   unformat_input_t sub_input;
-  unformat_input_t _line_input, *line_input = &_line_input;
   clib_error_t *error;
   unix_cli_main_t *cm = &unix_cli_main;
   unix_cli_file_t *cf;
@@ -3436,11 +3449,7 @@ unix_cli_exec (vlib_main_t * vm,
       vec_free (expanded);
     }
 
-  while (unformat_user (&sub_input, unformat_line_input, line_input))
-    {
-      vlib_cli_input (vm, line_input, 0, 0);
-      unformat_free (line_input);
-    }
+  vlib_cli_input (vm, &sub_input, 0, 0);
   unformat_free (&sub_input);
 
 done: