The DGP port is derived from LRP as a separate port in SB. Skip the
"requested-tnl-key" option assignment to the DGP CR port as it would
cause collision because the original LRP and the derived CR port
would attempt to claim the same tunnel key. This way only the
original will try to claim the tunnel key and CR port will get a free
one assigned by northd. This would also be the case previously, but
this way we will avoid warning message and extra recompute.

Fixes: 3044132261d3 ("northd: Enhance implementation of port tunnel key 
requests.")
Reported-at: https://issues.redhat.com/browse/FDP-2764
Signed-off-by: Ales Musil <[email protected]>
---
 northd/northd.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/northd/northd.c b/northd/northd.c
index c3c0780a3..e74cfc3a4 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -4006,6 +4006,12 @@ ovn_port_add_tnlid(struct ovn_port *op, uint32_t 
tunnel_key)
 static bool
 ovn_port_assign_requested_tnl_id(struct ovn_port *op)
 {
+    /* Skip the assignment for CR port, as it references the same nbsp as the
+     * LRP and the tunnel key should be reserved by the original port. */
+    if (is_cr_port(op)) {
+        return true;
+    }
+
     const struct smap *options = (op->nbsp
                                   ? &op->nbsp->options
                                   : &op->nbrp->options);
-- 
2.52.0

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

Reply via email to