If iface-id-ver was wrong and modified to a correct value,
the port was correctly claimed, but the flows were not installed
by I+P.

Signed-off-by: Xavier Simonart <[email protected]>
---
 controller/binding.c | 14 ++++++++++++++
 tests/ovn.at         |  2 ++
 2 files changed, 16 insertions(+)

diff --git a/controller/binding.c b/controller/binding.c
index 8ac2ce3e2..c9658cb2a 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -757,6 +757,8 @@ update_active_pb_ras_pd(const struct sbrec_port_binding *pb,
     }
 }
 
+static bool is_ext_id_changed(const struct smap *a, const struct smap *b,
+                              const char *key);
 static struct local_binding *local_binding_create(
     const char *name, const struct ovsrec_interface *);
 static void local_binding_add(struct shash *local_bindings,
@@ -2311,6 +2313,18 @@ consider_iface_claim(const struct ovsrec_interface 
*iface_rec,
         return true;
     }
 
+    /* Check if iface-id-ver just becomes correct */
+    struct smap *external_ids_old =
+        shash_find_data(b_ctx_in->iface_table_external_ids_old,
+                        iface_rec->name);
+
+    if (external_ids_old &&
+        is_ext_id_changed(&iface_rec->external_ids,
+                          external_ids_old,
+                          "iface-id-ver")) {
+            b_ctx_out->local_lports_changed = true;
+    }
+
     /* If multiple bindings to the same port, remove the "old" binding.
      * This ensures that change tracking is correct.
      */
diff --git a/tests/ovn.at b/tests/ovn.at
index e81cd4f45..f974cbb15 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -33239,6 +33239,8 @@ check as hv1 ovs-vsctl set interface vif11 
external_ids:iface-id-ver=foo
 
 wait_for_ports_up sw0-port1
 
+CHECK_FLOWS_AFTER_RECOMPUTE([hv1], [hv1])
+
 AT_CHECK([as hv1 ovn-appctl -t ovn-controller debug/dump-local-bindings], [0], 
[dnl
 Local bindings:
 name: [[sw0-port1]], OVS interface name : [[vif11]], num binding lports : [[1]]
-- 
2.31.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to