Commit b337750e45be ("northd: Incremental processing of VIF changes in
'northd' node.") skipped non-VIF ports from processing, and 860d5e4138ed
("northd: Enable incremental processing for remote ports.") later
observed that "remote" ports are almost identical to VIF ports.  The
same holds for ports of type "localport": every flow whose content
differs from a plain VIF (most notably the ARP/ND responder flows, which
a localport gets regardless of its "up" state) is owned by the port's
own lflow_ref and is regenerated by the existing per-port incremental
path, and a localport mutates no aggregate od->* state that a VIF would
not.  Enable that processing path for localport ports.

Add a test covering incremental create/update/delete of a localport,
including that its ARP responder reply flow is present regardless of the
"up" state and removed on deletion.

Assisted-by: Claude Opus 4.8, Claude Code
Signed-off-by: Lucas Vargas Dias <[email protected]>
---
 northd/northd.c     | 10 ++++++++--
 tests/ovn-northd.at | 31 +++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/northd/northd.c b/northd/northd.c
index 4ca9820d4..7d0cd4f14 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -1284,6 +1284,12 @@ lsp_is_localnet(const struct nbrec_logical_switch_port 
*nbsp)
     return !strcmp(nbsp->type, "localnet");
 }
 
+static bool
+lsp_is_localport(const struct nbrec_logical_switch_port *nbsp)
+{
+    return !strcmp(nbsp->type, "localport");
+}
+
 static bool
 lsp_is_vtep(const struct nbrec_logical_switch_port *nbsp)
 {
@@ -4677,8 +4683,8 @@ destroy_northd_tracked_data(struct northd_data *nd)
 static bool
 lsp_can_be_inc_processed(const struct nbrec_logical_switch_port *nbsp)
 {
-    /* Support only normal VIF and remote ports for now. */
-    if (nbsp->type[0] && !lsp_is_remote(nbsp)) {
+    /* Support only normal VIF, remote and localport ports for now. */
+    if (nbsp->type[0] && !lsp_is_remote(nbsp) && !lsp_is_localport(nbsp)) {
         return false;
     }
 
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index 810e9f2d7..2dcd0f8e0 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -12030,6 +12030,37 @@ check_recompute_counter 0 0 0 0 0 0
 
 CHECK_NO_CHANGE_AFTER_RECOMPUTE(1)
 
+dnl Localports should be incrementally processed
+check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats
+check ovn-nbctl --wait=sb lsp-add ls0 lp0 \
+    -- lsp-set-type lp0 localport \
+    -- lsp-set-addresses lp0 "aa:aa:aa:00:00:30 192.168.0.30"
+check_recompute_counter 0 0 0 0 0 0
+
+# A localport gets an ARP responder reply flow regardless of its "up" state.
+AT_CHECK([ovn-sbctl dump-flows ls0 | grep ls_in_arp_rsp | \
+    grep 'arp.tpa == 192.168.0.30' | grep -c 'arp.op = 2'], [0], [1
+])
+
+check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats
+check ovn-nbctl --wait=sb \
+    lsp-set-addresses lp0 "aa:aa:aa:00:00:31 192.168.0.31"
+check_recompute_counter 0 0 0 0 0 0
+
+AT_CHECK([ovn-sbctl dump-flows ls0 | grep ls_in_arp_rsp | \
+    grep 'arp.tpa == 192.168.0.31' | grep -c 'arp.op = 2'], [0], [1
+])
+
+check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats
+check ovn-nbctl --wait=sb lsp-del lp0
+check_recompute_counter 0 0 0 0 0 0
+
+AT_CHECK([ovn-sbctl dump-flows ls0 | grep ls_in_arp_rsp | \
+    grep -c '192.168.0.3'], [1], [0
+])
+
+CHECK_NO_CHANGE_AFTER_RECOMPUTE(1)
+
 check ovn-nbctl --wait=hv ls-del ls0
 
 OVN_CLEANUP([hv1])
-- 
2.43.0


-- 




_'Esta mensagem é direcionada apenas para os endereços constantes no 
cabeçalho inicial. Se você não está listado nos endereços constantes no 
cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa 
mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão 
imediatamente anuladas e proibidas'._


* **'Apesar do Magazine Luiza tomar 
todas as precauções razoáveis para assegurar que nenhum vírus esteja 
presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por 
quaisquer perdas ou danos causados por esse e-mail ou por seus anexos'.*



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

Reply via email to