]> git.proxmox.com Git - openvswitch.git/blobdiff - debian/openvswitch-switch.init
add debian sid (ovs 2.11) "debian" directory
[openvswitch.git] / debian / openvswitch-switch.init
diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
new file mode 100755 (executable)
index 0000000..5897052
--- /dev/null
@@ -0,0 +1,154 @@
+#! /bin/sh
+#
+# Copyright (C) 2011, 2012 Nicira, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+### BEGIN INIT INFO
+# Provides:          openvswitch-switch
+# Required-Start:    $network $named $remote_fs $syslog
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Open vSwitch switch
+# Description:       openvswitch-switch provides the userspace components and utilities for
+#                    the Open vSwitch kernel-based switch.
+### END INIT INFO
+
+(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0
+
+. /lib/lsb/init-functions
+
+. /usr/share/openvswitch/scripts/ovs-lib
+test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch
+
+mkdir -p /run/openvswitch
+
+network_interfaces () {
+    INTERFACES="/etc/network/interfaces"
+    [ -e "${INTERFACES}" ] || return
+    bridges=`ifquery --allow ovs --list`
+    [ -n "${bridges}" ] && $1 --allow=ovs ${bridges}
+}
+
+load_kmod () {
+    ovs_ctl load-kmod || exit $?
+}
+
+start () {
+    if ovs_ctl load-kmod; then
+       :
+    else
+       echo "Module has probably not been built for this kernel."
+       echo "Please install Linux 3.3 or later with openvswitch kernel support."
+
+       if test X"$OVS_MISSING_KMOD_OK" = Xyes; then
+           # We're being invoked by the package postinst.  Do not
+           # fail package installation just because the kernel module
+           # is not available.
+           exit 0
+       fi
+    fi
+    set ovs_ctl ${1-start} --system-id=random
+    if test X"$FORCE_COREFILES" != X; then
+       set "$@" --force-corefiles="$FORCE_COREFILES"
+    fi
+    set "$@" $OVS_CTL_OPTS
+    "$@" || exit $?
+    if [ "$2" = "start" ] && [ "$READ_INTERFACES" != "no" ]; then
+        network_interfaces ifup
+    fi
+}
+
+stop () {
+    [ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown
+    ovs_ctl stop
+}
+
+restart () {
+    # OVS_FORCE_RELOAD_KMOD can be set by package postinst script.
+    if [ "$1" = "--save-flows=yes" ] || \
+        [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then
+        start restart
+    elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then
+        depmod -a
+
+        if [ -e /sys/module/openvswitch ]; then
+            LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion \
+                               2>/dev/null`
+            LOADED_VERSION=`cat /sys/module/openvswitch/version \
+                            2>/dev/null`
+        elif [ -e /sys/module/openvswitch_mod ]; then
+            LOADED_SRCVERSION=`cat /sys/module/openvswitch_mod/srcversion \
+                               2>/dev/null`
+            LOADED_VERSION=`cat /sys/module/openvswitch_mod/version \
+                            2>/dev/null`
+        fi
+        SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null`
+        VERSION=`modinfo -F version openvswitch 2>/dev/null`
+
+        ovs_ctl_log "Package upgrading:\n"\
+                    "Loaded version: ${LOADED_VERSION} ${LOADED_SRCVERSION}.\n"\
+                    "Version on disk: ${VERSION} ${SRCVERSION}."
+
+        # If the kernel module was previously loaded and it is different than
+        # the kernel module on disk, then do a 'force-reload-kmod'.
+        if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \
+            [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then
+            start force-reload-kmod
+        else
+            start restart
+        fi
+    else
+        READ_INTERFACES="no" stop
+        READ_INTERFACES="no" start
+    fi
+}
+
+case $1 in
+    start)
+        start
+       ;;
+    stop | force-stop)
+        stop
+        ;;
+    systemd-start)
+        start
+        ;;
+    systemd-stop)
+        stop
+        ;;
+    reload | force-reload)
+        # The OVS daemons keep up-to-date.
+        ;;
+    restart)
+        shift
+        restart "$@"
+        ;;
+    status)
+        ovs_ctl status
+        exit $?
+        ;;
+    force-reload-kmod)
+        start force-reload-kmod
+        ;;
+    load-kmod)
+        load_kmod
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0