The non_vif_data tracks ofport number for tunnels and patch ports.
Make sure we recompute only for ofport changes, this also prevents
recomputes for lflow which has non_vif_data as input node without
a handler.

Signed-off-by: Ales Musil <amu...@redhat.com>
---
 controller/local_data.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/controller/local_data.c b/controller/local_data.c
index e256de5fa..97710528f 100644
--- a/controller/local_data.c
+++ b/controller/local_data.c
@@ -538,9 +538,17 @@ local_nonvif_data_handle_ovs_iface_changes(
 {
     const struct ovsrec_interface *iface_rec;
     OVSREC_INTERFACE_TABLE_FOR_EACH_TRACKED (iface_rec, iface_table) {
-        if (!strcmp(iface_rec->type, "geneve") ||
-            !strcmp(iface_rec->type, "patch") ||
-            !strcmp(iface_rec->type, "vxlan")) {
+        /* Check only patch ports or tunnels. */
+        if (strcmp(iface_rec->type, "geneve") &&
+            strcmp(iface_rec->type, "patch") &&
+            strcmp(iface_rec->type, "vxlan")) {
+            continue;
+        }
+        /* We are interested only in ofport changes for this handler. */
+        if (ovsrec_interface_is_new(iface_rec) ||
+            ovsrec_interface_is_deleted(iface_rec) ||
+            ovsrec_interface_is_updated(iface_rec,
+                                        OVSREC_INTERFACE_COL_OFPORT)) {
             return false;
         }
     }
-- 
2.49.0

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to