From: Damjan Marion Date: Wed, 15 Sep 2021 13:08:28 +0000 (+0200) Subject: vlib: add option to plugin registration to prefer deep binding X-Git-Tag: v22.02-rc0~36 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F30%2F33730%2F1;p=vpp.git vlib: add option to plugin registration to prefer deep binding Type: improvement Change-Id: I9ce7e1ee7e7afe8e9befe36ae8c59291beaaaf36 Signed-off-by: Damjan Marion --- 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