diff options
author | Damjan Marion <damarion@cisco.com> | 2018-04-04 22:43:54 +0200 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-04-09 13:33:06 +0000 |
commit | 67d4c24b0a8d63c4b5a38d5c9c1ce72b75879f54 (patch) | |
tree | 74a18bea729d38b333e750c219849bebff8f35b2 /src/vpp/api/plugin.c | |
parent | 7bf3f9f70e8395c13ed235cb48ec1787b07cf2d9 (diff) |
Autodetect plugin path
dpdk plugin self-disables if there are no hugepages available
Change-Id: Ib286e1a370deeb21248e6e961573ef9c68759b4c
Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vpp/api/plugin.c')
-rw-r--r-- | src/vpp/api/plugin.c | 16 |
1 files changed, 10 insertions, 6 deletions
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; |