diff options
author | Damjan Marion <damarion@cisco.com> | 2021-09-15 15:08:28 +0200 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2021-09-15 15:15:40 +0200 |
commit | ef4ddfa482b9d1d07b44b96a57a0a738bd3aca05 (patch) | |
tree | b973ba74d418be258dc54a990fec9f007e030681 /src/vlib/unix | |
parent | 764a8780c2ad250b76f289d742d22216d8c0904e (diff) |
vlib: add option to plugin registration to prefer deep binding
Type: improvement
Change-Id: I9ce7e1ee7e7afe8e9befe36ae8c59291beaaaf36
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vlib/unix')
-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 |