X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp%2Fvnet%2Fmain.c;h=6e136e192017b9920d5365592e818f492e9163bb;hb=73710c7da2f8deaea83dbbbfce8737c9c6cd2949;hp=76371dbe996523e37e6ad63b4c084b396499c802;hpb=c67787be51c4cbf4e5c1a28af621822aa8cae513;p=vpp.git diff --git a/src/vpp/vnet/main.c b/src/vpp/vnet/main.c index 76371dbe996..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,6 +85,8 @@ vpe_main_init (vlib_main_t * vm) * Create the binary api plugin hashes before loading plugins */ vat_plugin_hash_create (); + + vpp_find_plugin_path (); } /* @@ -46,12 +94,6 @@ vpe_main_init (vlib_main_t * vm) */ char *vlib_default_runtime_dir = "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; - 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) {