#!/bin/sh # # openvswitch # # chkconfig: 2345 09 91 # description: Manage Open vSwitch kernel modules and user-space daemons # Copyright (C) 2009, 2010, 2011 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: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Open vSwitch switch ### END INIT INFO . /usr/share/openvswitch/scripts/ovs-lib || exit 1 . /etc/xensource-inventory test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch case `cat /etc/xensource/network.conf` in vswitch|openvswitch) ;; bridge) exit 0 ;; *) echo "Open vSwitch disabled (/etc/xensource/network.conf is invalid)" >&2 exit 0 ;; esac start_ovs_xapi_sync () { if daemon_is_running ovs-xapi-sync; then log_success_msg "ovs-xapi-sync is already running" else PYTHONPATH=/usr/share/openvswitch/python \ /usr/share/openvswitch/scripts/ovs-xapi-sync \ --log-file --pidfile --detach --monitor unix:/var/run/openvswitch/db.sock fi } start () { set ovs_ctl ${1-start} set "$@" --system-id="$INSTALLATION_UUID" set "$@" --system-type="$PRODUCT_BRAND" set "$@" --system-version="$PRODUCT_VERSION-$BUILD_NUMBER" set "$@" --external-id=xs-system-uuid="$INSTALLATION_UUID" set "$@" --daemon-cwd=/var/xen/openvswitch if test X"$FORCE_COREFILES" != X; then set "$@" --force-corefiles="$FORCE_COREFILES" fi if test X"$OVSDB_SERVER_PRIORITY" != X; then set "$@" --ovsdb-server-priority="$OVSDB_SERVER_PRIORITY" fi if test X"$VSWITCHD_PRIORITY" != X; then set "$@" --ovs-vswitchd-priority="$VSWITCHD_PRIORITY" fi if test X"$VSWITCHD_MLOCKALL" != X; then set "$@" --mlockall="$VSWITCHD_MLOCKALL" fi if test ! -e /var/run/openvswitch.booted; then touch /var/run/openvswitch.booted set "$@" --delete-bridges fi set "$@" $OVS_CTL_OPTS "$@" start_ovs_xapi_sync ovs_ctl --protocol=gre enable-protocol touch /var/lock/subsys/openvswitch } force_reload_kmod () { start force-reload-kmod # Restart the high-availability daemon if it is running. Otherwise # it loses its heartbeat and reboots the system after a few minutes. if pidof xhad >/dev/null && test -e /etc/xensource/xhad.conf; then PATH=$PATH:/opt/xensource/xha action "Stopping HA daemon" ha_stop_daemon action "Starting HA daemon" ha_start_daemon fi action "Stopping ovs-xapi-sync" stop_daemon ovs-xapi-sync action "Starting ovs-xapi-sync" start_ovs_xapi_sync } stop () { ovs_ctl stop stop_daemon ovs-xapi-sync rm -f /var/lock/subsys/openvswitch } restart () { if [ "$1" = "--save-flows=yes" ]; then stop_daemon ovs-xapi-sync start restart else stop start fi } case $1 in start) start ;; stop) stop ;; restart) shift restart "$@" ;; reload|force-reload) # The main OVS daemons keep up-to-date, but ovs-xapi-sync needs help. if daemon_is_running ovs-xapi-sync; then action "Configuring Open vSwitch external IDs" \ ovs-appctl -t ovs-xapi-sync flush-cache fi ;; status) ovs_ctl status && daemon_status ovs-xapi-sync ;; version) ovs_ctl version ;; force-reload-kmod) force_reload_kmod ;; help) printf "openvswitch [start|stop|restart|reload|force-reload|status|version]\n" ;; *) printf "Unknown command: $1\n" exit 1 ;; esac