diff options
-rw-r--r-- | src/vlib/unix/plugin.c | 3 | ||||
-rw-r--r-- | src/vlib/unix/plugin.h | 10 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/vlib/unix/plugin.c b/src/vlib/unix/plugin.c index a714c7c29ce..4a7ff2753f2 100644 --- a/src/vlib/unix/plugin.c +++ b/src/vlib/unix/plugin.c @@ -304,7 +304,8 @@ process_reg: } vec_free (version_required); - handle = dlopen ((char *) pi->filename, RTLD_LAZY); + handle = dlopen ((char *) pi->filename, + RTLD_LAZY | (reg->deep_bind ? RTLD_DEEPBIND : 0)); if (handle == 0) { diff --git a/src/vlib/unix/plugin.h b/src/vlib/unix/plugin.h index ae15e5db973..e3555fe3ba9 100644 --- a/src/vlib/unix/plugin.h +++ b/src/vlib/unix/plugin.h @@ -56,16 +56,16 @@ * vlib_load_new_plugins(). */ -/* *INDENT-OFF* */ -typedef CLIB_PACKED(struct { - u8 default_disabled; +typedef struct +{ + u8 default_disabled : 1; + u8 deep_bind : 1; const char version[32]; const char version_required[32]; const char overrides[256]; const char *early_init; const char *description; -}) vlib_plugin_registration_t; -/* *INDENT-ON* */ +} __clib_packed vlib_plugin_registration_t; /* * Plugins may also use this registration format, which is |