Thank you Ales!

Acked-by: Rosemarie O'Riorden <[email protected]>

On 10/19/26 3:25 PM, Ales Musil via dev wrote:
Do not attempt to remove FDB learned via VTEP LSP with no address,
otherwise we end up in a loop where the FDBs are learned through VTEP
and removed right away.

Fixes: 03fd372c879b ("northd: Properly cleanup FDB entries.")
Signed-off-by: Ales Musil <[email protected]>
---
  northd/northd.c              | 13 +++++++++----
  tests/ovn-controller-vtep.at |  7 +++++++
  2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/northd/northd.c b/northd/northd.c
index 7c4cb5a62..27683fdd4 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -1314,6 +1314,13 @@ lsp_disable_arp_nd_rsp(const struct 
nbrec_logical_switch_port *nbsp)
      return smap_get_bool(&nbsp->options, "disable_arp_nd_rsp", false);
  }
+static bool
+port_can_learn_fdb(const struct ovn_port *op)
+{
+    return op->nbsp && lsp_is_enabled(op->nbsp) &&
+           (op->has_unknown || lsp_is_vtep(op->nbsp));
+ }
+
  static bool
  lsp_is_type_changed(const struct sbrec_port_binding *sb,
                  const struct nbrec_logical_switch_port *nbsp,
@@ -4367,9 +4374,7 @@ ovn_port_add_tnlid(struct ovn_port *op, uint32_t 
tunnel_key)
              op->od->port_key_hint = tunnel_key;
          }
- /* Track the assigned tunnel_key for enabled LSP
-         * with unknown address. */
-        if (op->nbsp && lsp_is_enabled(op->nbsp) && op->has_unknown) {
+        if (port_can_learn_fdb(op)) {
              ovs_assert(ovn_add_tnlid(&op->od->fdb_ports_tnlids, tunnel_key));
          }
      }
@@ -4425,7 +4430,7 @@ ovn_port_allocate_key(struct ovn_port *op)
              return false;
          }
- if (op->nbsp && lsp_is_enabled(op->nbsp) && op->has_unknown) {
+        if (port_can_learn_fdb(op)) {
              ovs_assert(ovn_add_tnlid(&op->od->fdb_ports_tnlids,
                                       op->tunnel_key));
          }
diff --git a/tests/ovn-controller-vtep.at b/tests/ovn-controller-vtep.at
index 0e8a1e008..aa8da62a6 100644
--- a/tests/ovn-controller-vtep.at
+++ b/tests/ovn-controller-vtep.at
@@ -620,7 +620,11 @@ OVS_WAIT_UNTIL([vtep-ctl list Ucast_Macs_Local | grep -q 
aa:bb:cc:dd:ff:02])
# Check that first MACs is propagated to FDB table
  wait_row_count fdb 1 mac='"aa:bb:cc:dd:ff:01"'
+uuid1=$(fetch_column fdb _uuid mac='"aa:bb:cc:dd:ff:01"')
+check test -n "$uuid1"
  wait_row_count fdb 1 mac='"aa:bb:cc:dd:ff:02"'
+uuid2=$(fetch_column fdb _uuid mac='"aa:bb:cc:dd:ff:02"')
+check test -n "$uuid2"
# Switch context
  as
@@ -632,6 +636,9 @@ OVS_WAIT_WHILE([vtep-ctl list-remote-macs lswitch1 | grep 
-q aa:bb:cc:dd:ff:01])
  OVS_WAIT_UNTIL([vtep-ctl list-remote-macs lswitch1 | grep -q 
aa:bb:cc:dd:ff:02])
  OVS_WAIT_WHILE([vtep-ctl list-remote-macs lswitch0 | grep -q 
aa:bb:cc:dd:ff:02])
+check test "$uuid1" = "$(fetch_column fdb _uuid mac='"aa:bb:cc:dd:ff:01"')"
+check test "$uuid2" = "$(fetch_column fdb _uuid mac='"aa:bb:cc:dd:ff:02"')"
+
  # Switch context to br-vtep1
  as br-vtep1

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

Reply via email to