[ovs-dev] [PATCH 1/2] ovs-ctl.in: Don't save kernel datapath config.

Gurucharan Shetty gshetty at nicira.com
Tue Nov 6 19:11:30 UTC 2012


Now that we have a single datapath and the datapath
port number has no relation to openflow port numbers,
it does not make sense to save and restore kernel
datapath configuration for the purpose of restoring
openflow flows.

Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
---
 utilities/ovs-ctl.8  |    9 +++---
 utilities/ovs-ctl.in |   31 ++-----------------
 utilities/ovs-save   |   82 --------------------------------------------------
 3 files changed, 7 insertions(+), 115 deletions(-)

diff --git a/utilities/ovs-ctl.8 b/utilities/ovs-ctl.8
index 3092d46..04c2930 100644
--- a/utilities/ovs-ctl.8
+++ b/utilities/ovs-ctl.8
@@ -287,8 +287,7 @@ implemented by Open vSwitch.  The most common examples of these are
 bridge ``local ports''.
 .
 .IP 2.
-Saves the Openflow flows of each bridge and the kernel datapath
-configuration for each of the kernel datapaths.
+Saves the Openflow flows of each bridge.
 .
 .IP 3.
 Stops the Open vSwitch daemons, as if by a call to \fBovs\-ctl
@@ -305,9 +304,9 @@ compatibility module if it is loaded).
 .
 .IP 6.
 Starts OVS back up, as if by a call to \fBovs\-ctl start\fR.  This
-reloads the kernel module, restores the saved kernel datapath configuration,
-restarts the OVS daemons (including \fBovs\-brcompatd\fR, if \fB\-\-brcompat\fR
-is specified) and finally restores the saved Openflow flows.
+reloads the kernel module, restarts the OVS daemons (including
+\fBovs\-brcompatd\fR, if \fB\-\-brcompat\fR is specified) and finally
+restores the saved Openflow flows.
 .
 .IP 7.
 Restores the kernel configuration state that was saved in step 4.
diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
index 7febd1c..be481de 100755
--- a/utilities/ovs-ctl.in
+++ b/utilities/ovs-ctl.in
@@ -30,21 +30,13 @@ done
 ## start ##
 ## ----- ##
 
-restore_datapaths () {
-    [ -n "${script_datapaths}" ] && \
-        action "Restoring datapath configuration" "${script_datapaths}"
-}
-
 insert_openvswitch_mod_if_required () {
     # If openvswitch is already loaded then we're done.
     test -e /sys/module/openvswitch -o -e /sys/module/openvswitch_mod && \
      return 0
 
     # Load openvswitch.  If that's successful then we're done.
-    if action "Inserting openvswitch module" modprobe openvswitch; then
-        restore_datapaths
-        return 0
-    fi
+    action "Inserting openvswitch module" modprobe openvswitch && return 0
 
     # If the bridge module is loaded, then that might be blocking
     # openvswitch.  Try to unload it, if there are no bridges.
@@ -58,7 +50,6 @@ insert_openvswitch_mod_if_required () {
 
     # Try loading openvswitch again.
     action "Inserting openvswitch module" modprobe openvswitch
-    restore_datapaths
 }
 
 insert_brcompat_mod_if_required () {
@@ -319,11 +310,6 @@ save_interfaces () {
         > "${script_interfaces}"
 }
 
-save_datapaths () {
-    "$datadir/scripts/ovs-save" save-datapaths ${datapaths} \
-        > "${script_datapaths}"
-}
-
 restore_flows () {
     [ -n "${script_flows}" ] && \
         action "Restoring saved flows" "${script_flows}"
@@ -334,10 +320,8 @@ force_reload_kmod () {
     action "Detected internal interfaces: $ifaces" true
 
     script_interfaces=`mktemp`
-    script_datapaths=`mktemp`
     script_flows=`mktemp`
-    trap 'rm -f "${script_interfaces}" "${script_flows}" \
-        "${script_datapaths}"' 0 1 2 13 15
+    trap 'rm -f "${script_interfaces}" "${script_flows}" ' 0 1 2 13 15
 
     action "Saving flows" save_flows
 
@@ -357,16 +341,7 @@ force_reload_kmod () {
     fi
     chmod +x "$script_interfaces"
 
-    datapaths=`ovs-dpctl dump-dps`
-    if action "Saving datapath configuration" save_datapaths; then
-        chmod +x "${script_datapaths}"
-    else
-        log_warning_msg "Failed to save datapath configuration. The port\
-                         numbers may change after the restart"
-        script_datapaths=""
-    fi
-
-    for dp in ${datapaths}; do
+    for dp in `ovs-dpctl dump-dps`; do
         action "Removing datapath: $dp" ovs-dpctl del-dp "$dp"
     done
 
diff --git a/utilities/ovs-save b/utilities/ovs-save
index 2f70221..2ab9d08 100755
--- a/utilities/ovs-save
+++ b/utilities/ovs-save
@@ -27,9 +27,6 @@ Commands:
                         configuration.
  save-flows             Outputs a shell script on stdout that will restore
                         Openflow flows of each Open vSwitch bridge.
- save-datapaths         Outputs a shell script on stdout that will restore
-                        the datapaths with the same port numbers as before.
-
 This script is meant as a helper for the Open vSwitch init script commands.
 EOF
 }
@@ -177,89 +174,10 @@ save_flows () {
     done
 }
 
-ovs_vsctl () {
-    ovs-vsctl --no-wait --timeout=5 "$@"
-}
-
-save_datapaths () {
-    if missing_program ovs-dpctl; then
-        echo "$0: ovs-dpctl not found in $PATH" >&2
-        exit 1
-    fi
-    if missing_program ovs-vsctl; then
-        echo "$0: ovs-vsctl not found in $PATH" >&2
-        exit 1
-    fi
-
-    for dp in "$@"; do
-        echo "ovs-dpctl add-dp ${dp}"
-        ovs-dpctl show $dp | while read line; do
-            # An example 'ovs-dpctl show' output looks like this:
-            # system at br1:
-            # lookups: hit:0 missed:0 lost:0
-            # flows: 0
-            # port 0: br1 (internal)
-            # port 2: gre2886795521 (ipsec_gre: key=flow, remote_ip=172.17.1.1, tos=inherit)
-            # port 3: gre1 (ipsec_gre: remote_ip=192.168.113.1)
-            # port 14: gre2 (gre: remote_ip=192.168.115.1)
-            # port 15: gre3 (gre64: remote_ip=192.168.116.1)
-            # port 16: eth0
-            # port 17: br1- (patch: peer=br1+)
-
-            # Skip lines which do not have 'port'
-            if port_no=`expr "${line}" : '.*port \([0-9]\+\):'`; then :; else
-                continue
-            fi
-
-            netdev=`echo ${line} | awk '{print $3}'`
-
-            # Do not add port that has the same name as the datapath. It gets
-            # added by default.
-            [ "${dp#system@}" = "${netdev}" ] && continue
-
-            type=`echo ${line} | awk '{print $4}' | sed 's/[:)(]//g'`
-            [ ! -n "${type}" ] && type="system"
-
-            command="ovs-dpctl add-if ${dp}\
-                        ${netdev},type=${type},port_no=${port_no}"
-
-            options=`echo ${line} | awk -F: '{print $3}' | sed 's/[) ]//g'`
-            [ -n "${options}" ] && command="${command},${options}"
-
-            # For ipsec, ovs-dpctl does not show the key value pairs related
-            # to certificates. Get that information from ovs-vsctl.
-            if [ "${type}" = "ipsec_gre" ] ; then
-                if peer_cert=`ovs_vsctl get interface \
-                                "${netdev}" options:peer_cert 2>/dev/null`; then
-                    # The option peer_cert comes with an accompanying
-                    # "certificate" or "use_ssl_cert"
-                    if certificate=`ovs_vsctl get interface "${netdev}" \
-                            options:certificate 2>/dev/null` ; then
-                        command="${command},peer_cert=${peer_cert},certificate=${certificate}"
-                    else
-                        use_ssl_cert=`ovs_vsctl get interface "${netdev}" \
-                                        options:use_ssl_cert 2>/dev/null`
-                        command="${command},peer_cert=${peer_cert},use_ssl_cert=${use_ssl_cert}"
-                    fi
-                else
-                    psk=`ovs_vsctl get interface "${netdev}" \
-                            options:psk 2>/dev/null`
-                    command="${command},psk=${psk}"
-                fi
-            fi
-            echo ${command}
-        done
-    done
-}
 
 while [ $# -ne 0 ]
 do
     case $1 in
-        "save-datapaths")
-            shift
-            save_datapaths "$@"
-            exit 0
-            ;;
         "save-flows")
             shift
             save_flows "$@"
-- 
1.7.9.5




More information about the dev mailing list