X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp%2Fapi%2Fplugin.c;h=1506a82ddcac332591b5d83c099c9113e88ee6df;hb=67d4c24b0a8d63c4b5a38d5c9c1ce72b75879f54;hp=95bdbe6cd7ee90ced64851807549e15bcd25820b;hpb=7bf3f9f70e8395c13ed235cb48ec1787b07cf2d9;p=vpp.git diff --git a/src/vpp/api/plugin.c b/src/vpp/api/plugin.c index 95bdbe6cd7e..1506a82ddca 100644 --- a/src/vpp/api/plugin.c +++ b/src/vpp/api/plugin.c @@ -24,13 +24,13 @@ plugin_main_t vat_plugin_main; static int -load_one_plugin (plugin_main_t * pm, plugin_info_t * pi) +load_one_vat_plugin (plugin_main_t * pm, plugin_info_t * pi) { void *handle, *register_handle; clib_error_t *(*fp) (vat_main_t *); clib_error_t *error; - handle = dlopen ((char *) pi->name, RTLD_LAZY); + handle = dlopen ((char *) pi->filename, RTLD_LAZY); /* * Note: this can happen if the plugin has an undefined symbol reference, @@ -119,6 +119,7 @@ vat_load_new_plugins (plugin_main_t * pm) while ((entry = readdir (dp))) { u8 *plugin_name; + u8 *file_name; if (pm->plugin_name_filter) { @@ -128,13 +129,14 @@ vat_load_new_plugins (plugin_main_t * pm) goto next; } - plugin_name = format (0, "%s/%s%c", plugin_path[i], - entry->d_name, 0); + file_name = format (0, "%s/%s%c", plugin_path[i], entry->d_name, 0); + plugin_name = format (0, "%s%c", entry->d_name, 0); /* unreadable */ - if (stat ((char *) plugin_name, &statb) < 0) + if (stat ((char *) file_name, &statb) < 0) { ignore: + vec_free (file_name); vec_free (plugin_name); continue; } @@ -148,10 +150,12 @@ vat_load_new_plugins (plugin_main_t * pm) { vec_add2 (pm->plugin_info, pi, 1); pi->name = plugin_name; + pi->filename = file_name; pi->file_info = statb; - if (load_one_plugin (pm, pi)) + if (load_one_vat_plugin (pm, pi)) { + vec_free (file_name); vec_free (plugin_name); _vec_len (pm->plugin_info) = vec_len (pm->plugin_info) - 1; continue;