In ovn-ic enabled setups, which also use VXLAN encapsulation
(for instance, for VTEP-switches) interconnected transit switches
(datapaths) were not configured after the patch from "Fixes" tag.
This was due to the fact that ovn-ic utilises tunnel key for
transit switches > OVN_VXLAN_MIN_MULTICAST.

This patch allows having such setup.

Fixes: fd44d7595 (Enforce datapath and port key constraints in vxlan mode)
Signed-off-by: Vladislav Odintsov <odiv...@gmail.com>
---
 northd/northd.c | 4 +++-
 tests/ovn-ic.at | 3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/northd/northd.c b/northd/northd.c
index 2b7dd5980..0145a4943 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -1439,7 +1439,9 @@ ovn_datapath_assign_requested_tnl_id(struct northd_input 
*input_data,
                                        : &od->nbr->options);
     uint32_t tunnel_key = smap_get_int(other_config, "requested-tnl-key", 0);
     if (tunnel_key) {
-        if (is_vxlan_mode(input_data) && tunnel_key >= 1 << 12) {
+        const char *interconn_ts = smap_get(other_config, "interconn-ts");
+        if (!interconn_ts && is_vxlan_mode(input_data) &&
+            tunnel_key >= 1 << 12) {
             static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
             VLOG_WARN_RL(&rl, "Tunnel key %"PRIu32" for datapath %s is "
                          "incompatible with VXLAN", tunnel_key,
diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
index a189a8fed..05bd3e9a6 100644
--- a/tests/ovn-ic.at
+++ b/tests/ovn-ic.at
@@ -38,6 +38,9 @@ AT_SETUP([ovn-ic -- transit switch handling])
 ovn_init_ic_db
 ovn_start az1
 
+# create fake chassis with vxlan encap to enforce requested tunnel key checks
+ovn-sbctl chassis-add fakechassis vxlan 192.168.0.2
+
 AT_CHECK([ovn-ic-nbctl ts-add ts1])
 AT_CHECK([ovn-ic-nbctl ts-add ts2])
 
-- 
2.30.0

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

Reply via email to