Introduce a callback to allow plugins to do initialize code in bridge_run() like dpdk_init().
Signed-off-by: Roi Dayan <[email protected]> --- lib/dpif-plugin.c | 10 ++++++++++ lib/dpif-plugin.h | 5 +++++ vswitchd/bridge.c | 2 ++ 3 files changed, 17 insertions(+) diff --git a/lib/dpif-plugin.c b/lib/dpif-plugin.c index 1eb9ca955425..ec4a435b0927 100644 --- a/lib/dpif-plugin.c +++ b/lib/dpif-plugin.c @@ -29,6 +29,16 @@ VLOG_DEFINE_THIS_MODULE(dpif_plugin); static void *BODY; /* cached handle dlopen(NULL) */ static struct dpif_plugin *dpif_plugin_list; +void foreach_plugin_call_bridge_init(const struct smap *ovs_other_config) { + struct dpif_plugin *p; + + for (p = dpif_plugin_list; p; p = p->next) { + if (p->bridge_init) { + p->bridge_init(ovs_other_config); + } + } +} + static struct dpif_plugin * any_plugin_get(const char *prefix, const char *str) { diff --git a/lib/dpif-plugin.h b/lib/dpif-plugin.h index 4bce4b3cc2c4..5baee4db2ab5 100644 --- a/lib/dpif-plugin.h +++ b/lib/dpif-plugin.h @@ -21,13 +21,18 @@ extern "C" { #endif +struct smap; + struct dpif_plugin { struct dpif_plugin *next; const char *id; const void *plugin_class; + void (*bridge_init)(const struct smap *ovs_other_config); }; +void foreach_plugin_call_bridge_init(const struct smap *ovs_other_config); + struct dpif_plugin *dp_plugin_get(const char *str); #ifdef __cplusplus diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 6bb687f4b136..38aac0692306 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -19,6 +19,7 @@ #include <inttypes.h> #include <stdlib.h> +#include "lib/dpif-plugin.h" #include "async-append.h" #include "bfd.h" #include "bitmap.h" @@ -3400,6 +3401,7 @@ bridge_run(void) netdev_set_flow_api_enabled(&cfg->other_config); dpdk_init(&cfg->other_config); userspace_tso_init(&cfg->other_config); + foreach_plugin_call_bridge_init(&cfg->other_config); } /* Initialize the ofproto library. This only needs to run once, but -- 2.46.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
