I don't think this actually fixes a bug, as netdev-linux calls this
function. However, it seems stylistically more correct.
---
lib/dpif-linux.c | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c
index 9a90801..a793cda 100644
--- a/lib/dpif-linux.c
+++ b/lib/dpif-linux.c
@@ -146,6 +146,9 @@ struct dpif_linux {
static struct vlog_rate_limit error_rl = VLOG_RATE_LIMIT_INIT(9999, 5);
+/* Guard for dpif_linux_run() and dpif_linux_wait(). */
+static bool has_run = false;
+
/* Generic Netlink family numbers for ODP. */
static int odp_datapath_family;
static int odp_vport_family;
@@ -308,6 +311,24 @@ dpif_linux_destroy(struct dpif *dpif_)
return dpif_linux_dp_transact(&dp, NULL, NULL);
}
+static void
+dpif_linux_run(struct dpif *dpif OVS_UNUSED)
+{
+ /* We only need to run once for all dpif_linux instances. Hence the
+ * 'has_run' guard. */
+ if (!has_run) {
+ has_run = true;
+ rtnetlink_link_notifier_run();
+ }
+}
+
+static void
+dpif_linux_wait(struct dpif *dpif OVS_UNUSED)
+{
+ has_run = false;
+ rtnetlink_link_notifier_wait();
+}
+
static int
dpif_linux_get_stats(const struct dpif *dpif_, struct odp_stats *stats)
{
@@ -1048,8 +1069,8 @@ const struct dpif_class dpif_linux_class = {
dpif_linux_open,
dpif_linux_close,
dpif_linux_destroy,
- NULL, /* run */
- NULL, /* wait */
+ dpif_linux_run,
+ dpif_linux_wait,
dpif_linux_get_stats,
dpif_linux_get_drop_frags,
dpif_linux_set_drop_frags,
--
1.7.6
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev