Skip to content

Commit

Permalink
ovs-save: Use a file to restore flows instead of heredoc
Browse files Browse the repository at this point in the history
This patch makes ovs-save to use a file to restore flows instead of using
shell script here-document.
This is needed since eval + here-documents are much slower than reading a file
with the rules directly.

Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Flavio Leitner <fbl@sysclose.org>
  • Loading branch information
drizzt authored and blp committed Oct 27, 2017
1 parent d3b41dd commit 463a057
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions utilities/ovs-save
Expand Up @@ -110,6 +110,7 @@ save_flows () {
exit 1
fi

workdir=$(mktemp -d "${TMPDIR:-/tmp}/ovs-save.XXXXXXXXXX")
for bridge in "$@"; do
# Get the highest enabled OpenFlow version
ofp_version=$(get_highest_ofp_version "$bridge")
Expand All @@ -120,19 +121,19 @@ save_flows () {
cnt++;printf "{class="$1",type="$2",len="$3"}->"$4}'
echo "'"

echo -n "ovs-ofctl -O $ofp_version add-flows ${bridge} "
echo -n "ovs-ofctl -O $ofp_version add-flows ${bridge} " \
"\"$workdir/$bridge.flows.dump\""

# If possible, use OpenFlow 1.4 atomic bundle transaction to add flows
[ ${ofp_version#OpenFlow} -ge 14 ] && echo -n "--bundle "

echo "- << EOF"
[ ${ofp_version#OpenFlow} -ge 14 ] && echo " --bundle" || echo

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'
echo "EOF"
-e 's/\(idle\|hard\)_age=[^,]*,//g' > \
"$workdir/$bridge.flows.dump"
done
echo "rm -rf \"$workdir\""
}

while [ $# -ne 0 ]
Expand Down

0 comments on commit 463a057

Please sign in to comment.