[ovs-dev] [PATCH ovn] ovn-controller: Release lport if the ofport of the VIF is -1.
numans at ovn.org
numans at ovn.org
Tue Jul 28 08:37:18 UTC 2020
From: Numan Siddique <numans at ovn.org>
If ofport of an OVS interface is set -1 for some reason, then ovn-controller
is not releasing the logical port which maps to the OVS interface.
This patch fixes this issue.
Fixes: 354bdba51abf("ovn-controller: I-P for SB port binding and OVS interface in runtime_data.")
Signed-off-by: Numan Siddique <numans at ovn.org>
---
controller/binding.c | 6 +++---
tests/system-ovn.at | 48 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 3 deletions(-)
diff --git a/controller/binding.c b/controller/binding.c
index 520bff080f..880fbb13b8 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -1853,9 +1853,9 @@ binding_handle_ovs_interface_changes(struct binding_ctx_in *b_ctx_in,
* inteface to new port binding. */
if (old_iface_id && strcmp(iface_id, old_iface_id)) {
cleared_iface_id = old_iface_id;
- } else if (!ofport) {
- /* If ofport is 0, we need to release the iface if already
- * claimed. */
+ } else if (ofport <= 0) {
+ /* If ofport is <= 0, we need to release the iface if
+ * already claimed. */
cleared_iface_id = iface_id;
}
} else if (old_iface_id) {
diff --git a/tests/system-ovn.at b/tests/system-ovn.at
index bca2601267..dee4351755 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -4572,3 +4572,51 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
/connection dropped.*/d"])
AT_CLEANUP
+
+AT_SETUP([ovn -- controller I-P handling when ovs iface ofport is -1])
+
+ovn_start
+
+OVS_TRAFFIC_VSWITCHD_START()
+ADD_BR([br-int])
+
+# Set external-ids in br-int needed for ovn-controller
+ovs-vsctl \
+ -- set Open_vSwitch . external-ids:system-id=hv1 \
+ -- set Open_vSwitch . external-ids:ovn-remote=unix:$ovs_base/ovn-sb/ovn-sb.sock \
+ -- set Open_vSwitch . external-ids:ovn-encap-type=geneve \
+ -- set Open_vSwitch . external-ids:ovn-encap-ip=169.0.0.1 \
+ -- set bridge br-int fail-mode=secure other-config:disable-in-band=true
+
+# Start ovn-controller
+start_daemon ovn-controller
+
+ovn-nbctl ls-add sw0
+ovn-nbctl lsp-add sw0 sw0-port1
+ovn-nbctl lsp-set-addresses sw0-port1 "10:54:00:00:00:03 10.0.0.3"
+
+ovs-vsctl add-port br-int p1 -- \
+ set Interface p1 external_ids:iface-id=sw0-port1 -- \
+ set Interface p1 type=internal
+
+OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-port1) = xup])
+ovs-vsctl set interface p1 type=\"\"
+OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-port1) = xdown])
+
+OVS_APP_EXIT_AND_WAIT([ovn-controller])
+
+as ovn-sb
+OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+
+as ovn-nb
+OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+
+as northd
+OVS_APP_EXIT_AND_WAIT([ovn-northd])
+
+as
+OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
+/connection dropped.*/d
+/could not open network device p1*/d"])
+
+AT_CLEANUP
--
2.26.2
More information about the dev
mailing list