From fe772f5395a61def37758318d910865f92268ae6 Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Wed, 8 May 2019 06:55:27 -0700 Subject: [PATCH] ovs-save: Handle cases of upgrades from very old OVS versions. We have added code to ovs-save over the last few releases which makes the following bad assumptions. 1. The default OpenFlow version of running daemon is OpenFlow14. Impact: This causes upgrades from older OVS versions to end up with no flows in their bridges (even the default 'NORMAL' ones) causing traffic to stop. 2. That ovs-ofctl commands like dump-groups and dump-tlv-map will just work with old OVS versions. Impact: Does not look like it effects the upgrade in a bad away - except you get some errors. Since OpenFlow14 was enabled by default in OVS 2.8, this commit makes a lazy assumption that any upgrade of OVS from versions before 2.7 will not attempt to save and restore flows. VMware-BZ: #2340482 Signed-off-by: Gurucharan Shetty Acked-by: Ben Pfaff --- utilities/ovs-save | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/utilities/ovs-save b/utilities/ovs-save index 1ba36e9dedd..7d810cb40ef 100755 --- a/utilities/ovs-save +++ b/utilities/ovs-save @@ -110,6 +110,17 @@ save_flows () { exit 1 fi + # OVS 2.7 and earlier do not enable OpenFlow 1.4 (by default) and lack + # other features needed to save and restore flows. Don't try. + case `ovs-appctl version | sed 1q` in + "ovs-vswitchd (Open vSwitch) 1."*.*) + return + ;; + "ovs-vswitchd (Open vSwitch) 2."[0-7].*) + return + ;; + esac + workdir=$(mktemp -d "${TMPDIR:-/tmp}/ovs-save.XXXXXXXXXX") for bridge in "$@"; do # Get the highest enabled OpenFlow version