#!/bin/sh
#
# openvswitch	an Open Virtual Switch
#
# chkconfig: 2345 09 91
# description:	Manage Open vSwitch kernel modules and user-space services
## processname: template
# config: /etc/sysconfig/openvswitch
## pidfile: /var/run/template.pid

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

# Source function library.
. /etc/rc.d/init.d/functions

SCRIPTS=/usr/share/openvswitch/scripts

. $SCRIPTS/ovs-lib || exit 1
SourceIfNotEmpty /etc/sysconfig/openvswitch

ovs_ctl=$SCRIPTS/ovs-ctl

LOCKFILE=/var/lock/subsys/openvswitch
RETVAL=0

start() {
	set $ovs_ctl ${1-start}
	set "$@" --system-id=random
	if [ -n "$FORCE_COREFILES" ]; then
		set "$@" --force-corefiles="$FORCE_COREFILES"
	fi
	if [ -n "$OVSDB_SERVER_PRIORITY" ]; then
		set "$@" --ovsdb-server-priority="$OVSDB_SERVER_PRIORITY"
	fi
	if [ -n "$VSWITCHD_PRIORITY" ]; then
		set "$@" --ovs-vswitchd-priority="$VSWITCHD_PRIORITY"
	fi
	if [ -n "$VSWITCHD_MLOCKALL" ]; then
		set "$@" --mlockall="$VSWITCHD_MLOCKALL"
	fi
	if test X"$BRCOMPAT" = Xyes; then
		set "$@" --brcompat
	fi
	"$@"
	$ovs_ctl --protocol=gre enable-protocol
	RETVAL=$?
	touch "$LOCKFILE"
	return $RETVAL
}

stop () {
	$ovs_ctl stop
	RETVAL=$?
	rm -f "$LOCKFILE"
	return $RETVAL
}

restart()
{
	stop
	start
}

# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	reload|restart)
		restart
		;;
	condstop)
		if [ -e "$LOCKFILE" ]; then
			stop
		fi
		;;
	condrestart)
		if [ -e "$LOCKFILE" ]; then
			restart
		fi
		;;
	condreload)
		if [ -e "$LOCKFILE" ]; then
			reload
		fi
		;;
	force-reload-kmod)
		start force-reload-kmod
		;;
	status)
		$ovs_ctl status
		RETVAL=$?
		;;
	version)
		$ovs_ctl version
		RETVAL=$?
		;;
	*)
		msg_usage "${0##*/} [start|stop|restart|reload|force-reload|status|version|force-reload-kmod]"
		RETVAL=1
esac

exit $RETVAL
