vat_main_t vat_main;
#include <vlibapi/api_helper_macros.h>
-vpe_api_main_t vpe_api_main;
void
vat_suspend (vlib_main_t * vm, f64 interval)
vam->regenerate_interface_table = 0;
api_sw_interface_dump (vam);
}
+
+ /* Hack to pick up new client index after memfd_segment_create pivot */
+ if (vam->client_index_invalid)
+ {
+ vat_main_t *vam = &vat_main;
+ api_main_t *am = &api_main;
+
+ vam->vl_input_queue = am->shmem_hdr->vl_input_queue;
+ vam->my_client_index = am->my_client_index;
+ vam->client_index_invalid = 0;
+ }
}
}
eval_current_line);
init_error_string_table (vam);
+ vec_validate (vam->cmd_reply, 0);
+ vec_reset_length (vam->cmd_reply);
unformat_init_command_line (a, argv);
interactive = 0;
else if (unformat (a, "json"))
json_output = 1;
+ else if (unformat (a, "socket-name %s", &vam->socket_name))
+ ;
+ else if (unformat (a, "default-socket"))
+ {
+ vam->socket_name = format (0, "%s%c", API_SOCKET_FILE, 0);
+ }
else if (unformat (a, "plugin_path %s", (u8 *) & vat_plugin_path))
vec_add1 (vat_plugin_path, 0);
else if (unformat (a, "plugin_name_filter %s",
}
else
{
- fformat (stderr,
- "%s: usage [in <f1> ... in <fn>] [out <fn>] [script] [json]\n");
+ fformat
+ (stderr,
+ "%s: usage [in <f1> ... in <fn>] [out <fn>] [script] [json]\n"
+ "[plugin_path <path>][default-socket][socket-name <name>]\n"
+ "[plugin_name_filter <filter>][chroot prefix <path>]\n",
+ argv[0]);
exit (1);
}
}
setup_signal_handlers ();
- if (connect_to_vpe ("vpp_api_test") < 0)
+ if (vam->socket_name && vat_socket_connect (vam))
+ fformat (stderr, "WARNING: socket connection failed");
+
+ if (vam->socket_client_main.socket_fd == 0
+ && connect_to_vpe ("vpp_api_test") < 0)
{
svm_region_exit ();
fformat (stderr, "Couldn't connect to vpe, exiting...\n");
vam->json_output = json_output;
if (!json_output)
- {
- api_sw_interface_dump (vam);
- }
+ api_sw_interface_dump (vam);
vec_validate (vam->inbuf, 4096);