X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp%2Fvnet%2Fmain.c;h=6e136e192017b9920d5365592e818f492e9163bb;hb=85aa49019f4b4b2b7a4fce4313fdc0f2de65c277;hp=9fe65fe2fb5de6b7bac77110b5d467621dfa22b8;hpb=57d963f88b2c99e698e2b29f72e190f47f41b1ad;p=vpp.git diff --git a/src/vpp/vnet/main.c b/src/vpp/vnet/main.c index 9fe65fe2fb5..6e136e19201 100644 --- a/src/vpp/vnet/main.c +++ b/src/vpp/vnet/main.c @@ -20,7 +20,53 @@ #include #include #include +#include +/* + * Load plugins from /usr/lib/vpp_plugins by default + */ +char *vlib_plugin_path = "/usr/lib/vpp_plugins"; +char *vlib_plugin_app_version = VPP_BUILD_VER; + +static void +vpp_find_plugin_path () +{ + extern char *vat_plugin_path; + char *p, path[PATH_MAX]; + int rv; + u8 *s; + + /* find executable path */ + if ((rv = readlink ("/proc/self/exe", path, PATH_MAX - 1)) == -1) + return; + + /* readlink doesn't provide null termination */ + path[rv] = 0; + + /* strip filename */ + if ((p = strrchr (path, '/')) == 0) + return; + *p = 0; + + /* strip bin/ */ + if ((p = strrchr (path, '/')) == 0) + return; + *p = 0; + + s = format (0, "%s/lib/vpp_plugins", path); +#if uword_bits == 64 + s = format (s, ":%s/lib64/vpp_plugins", path); +#endif + vec_add1 (s, 0); + vlib_plugin_path = (char *) s; + + s = format (0, "%s/lib/vpp_api_test_plugins", path); +#if uword_bits == 64 + s = format (s, ":%s/lib64/vpp_api_test_plugins", path); +#endif + vec_add1 (s, 0); + vat_plugin_path = (char *) s; +} static void vpe_main_init (vlib_main_t * vm) @@ -39,18 +85,14 @@ vpe_main_init (vlib_main_t * vm) * Create the binary api plugin hashes before loading plugins */ vat_plugin_hash_create (); + + vpp_find_plugin_path (); } /* * Default path for runtime data */ -char *vlib_default_runtime_dir = "/run/vpp"; - -/* - * Load plugins from /usr/lib/vpp_plugins by default - */ -char *vlib_plugin_path = "/usr/lib/vpp_plugins"; -char *vlib_plugin_app_version = VPP_BUILD_VER; +char *vlib_default_runtime_dir = "vpp"; int main (int argc, char *argv[]) @@ -294,6 +336,14 @@ os_exit (int code) exit (code); } +#ifdef BARRIER_TRACING +void +vl_msg_api_barrier_trace_context (const char *context) +{ + vlib_worker_threads[0].barrier_context = context; +} +#endif + void vl_msg_api_barrier_sync (void) {