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 <[email protected]>
---
 utilities/ovs-save | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/utilities/ovs-save b/utilities/ovs-save
index fc9418c3d..da65c41ec 100755
--- a/utilities/ovs-save
+++ b/utilities/ovs-save
@@ -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")
@@ -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 ]
-- 
2.13.5

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to