dpif-netlink: add GENEVE creation support
[cascardo/ovs.git] / utilities / ovs-ctl.in
index bc0848c..6bc7ced 100755 (executable)
@@ -52,8 +52,7 @@ insert_mod_if_required () {
     fi
 
     # If openvswitch is already loaded then we're done.
-    test -e /sys/module/openvswitch -o -e /sys/module/openvswitch_mod && \
-     return 0
+    test -e /sys/module/openvswitch && return 0
 
     # Load openvswitch.  If that's successful then we're done.
     insert_mods && return 0
@@ -109,6 +108,8 @@ set_system_ids () {
     esac
     set "$@" external-ids:system-id="\"$SYSTEM_ID\""
 
+    set "$@" external-ids:hostname="\"$(hostname)\""
+
     if test X"$SYSTEM_TYPE" != X; then
         set "$@" system-type="\"$SYSTEM_TYPE\""
     else
@@ -136,7 +137,7 @@ del_transient_ports () {
     done
 }
 
-start_ovsdb () {
+do_start_ovsdb () {
     check_force_cores
 
     if daemon_is_running ovsdb-server; then
@@ -184,6 +185,12 @@ start_ovsdb () {
     fi
 }
 
+start_ovsdb() {
+    if test X"$OVSDB_SERVER" = Xyes; then
+        do_start_ovsdb
+    fi
+}
+
 add_managers () {
     # Now that ovs-vswitchd has started and completed its initial
     # configuration, tell ovsdb-server to conenct to the remote managers.  We
@@ -192,12 +199,17 @@ add_managers () {
     # churn in the database at startup or restart.  (For example, managers
     # won't briefly see empty datapath-id or ofport columns for records that
     # exist at startup.)
-    action "Enabling remote OVSDB managers" \
-       ovs-appctl -t ovsdb-server ovsdb-server/add-remote \
-           db:Open_vSwitch,Open_vSwitch,manager_options
+    if test X"$OVSDB_SERVER" = Xyes || test X"$OVS_VSWITCHD" = Xyes; then
+        if daemon_is_running ovsdb-server \
+                && daemon_is_running ovs-vswitchd; then
+            action "Enabling remote OVSDB managers" \
+                   ovs-appctl -t ovsdb-server ovsdb-server/add-remote \
+                   db:Open_vSwitch,Open_vSwitch,manager_options
+        fi
+    fi
 }
 
-start_forwarding () {
+do_start_forwarding () {
     check_force_cores
 
     insert_mod_if_required || return 1
@@ -224,16 +236,26 @@ start_forwarding () {
     fi
 }
 
+start_forwarding () {
+    if test X"$OVS_VSWITCHD" = Xyes; then
+        do_start_forwarding
+    fi
+}
+
 ## ---- ##
 ## stop ##
 ## ---- ##
 
 stop_ovsdb () {
-    stop_daemon ovsdb-server
+    if test X"$OVSDB_SERVER" = Xyes; then
+        stop_daemon ovsdb-server
+    fi
 }
 
 stop_forwarding () {
-    stop_daemon ovs-vswitchd
+    if test X"$OVS_VSWITCHD" = Xyes; then
+        stop_daemon ovs-vswitchd
+    fi
 }
 
 ## ----------------- ##
@@ -283,12 +305,16 @@ save_interfaces () {
 }
 
 flow_restore_wait () {
-    ovs_vsctl set open_vswitch . other_config:flow-restore-wait="true"
+    if test X"$OVS_VSWITCHD" = Xyes; then
+        ovs_vsctl set open_vswitch . other_config:flow-restore-wait="true"
+    fi
 }
 
 flow_restore_complete () {
-    ovs_vsctl --if-exists remove open_vswitch . other_config \
-        flow-restore-wait="true"
+    if test X"$OVS_VSWITCHD" = Xyes; then
+        ovs_vsctl --if-exists remove open_vswitch . other_config \
+                  flow-restore-wait="true"
+    fi
 }
 
 restore_flows () {
@@ -317,6 +343,12 @@ init_restore_scripts () {
 }
 
 force_reload_kmod () {
+
+    if test X"$OVS_VSWITCHD" != Xyes; then
+        log_failure_msg "Reloading of kmod without ovs-vswitchd is an error"
+        exit 1
+    fi
+
     ifaces=`internal_interfaces`
     action "Detected internal interfaces: $ifaces" true
 
@@ -351,10 +383,7 @@ force_reload_kmod () {
         fi
     done
 
-    # try both old and new names in case this is post upgrade
-    if test -e /sys/module/openvswitch_mod; then
-        action "Removing openvswitch module" rmmod openvswitch_mod
-    elif test -e /sys/module/openvswitch; then
+    if test -e /sys/module/openvswitch; then
         action "Removing openvswitch module" rmmod openvswitch
     fi
 
@@ -379,7 +408,9 @@ force_reload_kmod () {
 restart () {
     if daemon_is_running ovsdb-server && daemon_is_running ovs-vswitchd; then
         init_restore_scripts
-        save_flows_if_required
+        if test X"$OVS_VSWITCHD" = Xyes; then
+            save_flows_if_required
+        fi
     fi
 
     # Restart the database first, since a large database may take a
@@ -461,6 +492,8 @@ set_defaults () {
     DAEMON_CWD=/
     FORCE_COREFILES=yes
     MLOCKALL=yes
+    OVSDB_SERVER=yes
+    OVS_VSWITCHD=yes
     OVSDB_SERVER_PRIORITY=-10
     OVS_VSWITCHD_PRIORITY=-10
     OVSDB_SERVER_WRAPPER=