X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vlib%2Fvlib%2Funix%2Fplugin.c;h=93bfbb71b7c515c58c970f9a46d9f9b3fa3bbf60;hb=3b3688f9d3a640a169e9c7fc858d36ab3aeb147e;hp=3411ef340afa58284e88aa83402310e11d6895af;hpb=f0f852251c885fc5f73125a4365cf356feeb0cdd;p=vpp.git diff --git a/vlib/vlib/unix/plugin.c b/vlib/vlib/unix/plugin.c index 3411ef340af..93bfbb71b7c 100644 --- a/vlib/vlib/unix/plugin.c +++ b/vlib/vlib/unix/plugin.c @@ -61,11 +61,13 @@ load_one_plugin (plugin_main_t *pm, plugin_info_t *pi, int from_early_init) pi->handle = handle; + register_handle = dlsym (pi->handle, "vlib_plugin_register"); if (register_handle == 0) { dlclose (handle); - return 0; + clib_warning("Plugin missing vlib_plugin_register: %s\n", (char *)pi->name); + return 1; } fp = register_handle; @@ -148,9 +150,12 @@ int vlib_load_new_plugins (plugin_main_t *pm, int from_early_init) plugin_name = format (0, "%s/%s%c", plugin_path[i], entry->d_name, 0); - + + /* Only accept .so */ + char * ext = strrchr((const char *)plugin_name, '.'); /* unreadable */ - if (stat ((char *)plugin_name, &statb) < 0) + if(!ext || (strcmp(ext, ".so") != 0) || + stat ((char *)plugin_name, &statb) < 0) { ignore: vec_free (plugin_name);