On Fri, 8 Sep 2017 13:03:48 +0200 Timothy Redaelli <[email protected]> wrote:
> If possible, use OpenFlow 1.4 atomic bundle transaction to restore flows. > The patch uses also the enabled OpenFlow version to do the queries. > > With the actual implementation if you have the default openflow version > disabled ovs-save fails, this patch also fixes that. > > Replaced "echo -n" with "printf" since "echo -n" is not POSIX and may > not work with some shells. > > Signed-off-by: Timothy Redaelli <[email protected]> > --- > This is a pre-requisite for the new patchset of patch with patchwok id 799223 > --- > utilities/ovs-save | 27 +++++++++++++++++++++------ > 1 file changed, 21 insertions(+), 6 deletions(-) > > diff --git a/utilities/ovs-save b/utilities/ovs-save > index 8b8dbf421..3cfa4c870 100755 > --- a/utilities/ovs-save > +++ b/utilities/ovs-save > @@ -99,6 +99,11 @@ save_interfaces () { > fi > } > > +get_highest_ofp_version() { > + ovs-vsctl get bridge "$1" protocols | \ > + awk -F '"' '{ print (NF>1)? $(NF-1) : "OpenFlow14" }' > +} > + > save_flows () { > if (ovs-ofctl --version) > /dev/null 2>&1; then :; else > echo "$0: ovs-ofctl not found in $PATH" >&2 > @@ -106,16 +111,26 @@ save_flows () { > fi > > for bridge in "$@"; do > - echo -n "ovs-ofctl add-tlv-map ${bridge} '" > - ovs-ofctl dump-tlv-map ${bridge} | \ > + # Get the highest enabled OpenFlow version > + ofp_version=$(get_highest_ofp_version "$bridge") > + > + printf "ovs-ofctl -O $ofp_version add-tlv-map %s '" "$bridge" > + ovs-ofctl -O $ofp_version dump-tlv-map $bridge | \ > awk '/^ 0x/ {if (cnt != 0) printf ","; \ > cnt++;printf "{class="$1",type="$2",len="$3"}->"$4}' > echo "'" > > - echo "ovs-ofctl add-flows ${bridge} - << EOF" > - ovs-ofctl dump-flows "${bridge}" | sed -e '/NXST_FLOW/d' \ > - -e 's/\(idle\|hard\)_age=[^,]*,//g' > - echo "EOF" > + printf "%s" "ovs-ofctl -O $ofp_version add-flows $bridge \ > + \"$workdir/$bridge.flows.dump\"" Where is $workdir set? Looks like it's empty and will use root fs. Although this is a small patch, it actually does two things. One is fixing to use highest enabled OF and another is replacing echo with printf. I suggest to split them apart so it's easier to review. Thanks, fbl > + > + # If possible, use OpenFlow 1.4 atomic bundle transaction to add > flows > + [ ${ofp_version#OpenFlow} -ge 14 ] && echo " --bundle" > + > + ovs-ofctl -O $ofp_version dump-flows --no-names --no-stats "$bridge" > | \ > + sed -e '/NXST_FLOW/d' \ > + -e '/OFPST_FLOW/d' \ > + -e 's/\(idle\|hard\)_age=[^,]*,//g' \ > + > "$workdir/$bridge.flows.dump" > done > } > -- Flavio _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
