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

Reply via email to