#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

set_helper() {
	local f="/proc/sys/kernel/vshelper"
	if [ -e "$f" ]; then
		echo "$_VSHELPER" > "$f"
	fi
	return 0
}

kill_contexts() {
	local xid
	for xid in `ls -1 /proc/virtual`; do
		[ "$xid" = "info" -o "$xid" = "status" ] && continue
		$_VATTRIBUTE --xid $xid --set --flag ~persistent
		$_VKILL --xid $xid -s 15
		sleep 3
		$_VKILL --xid $xid -s 9
	done
	local alive=0
	for xid in `ls -1 /proc/virtual`; do
		[ "$xid" = "info" -o "$xid" = "status" ] && continue
		let alive+=1
	done
	return $alive
}

start() {
	: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
	if [ ! -e ${UTIL_VSERVER_VARS} ]; then
		eerror "Cannot find util-vserver installation"
		eerror "(the file '$UTIL_VSERVER_VARS' would be expected)"
		return 1
	fi
	
	. ${UTIL_VSERVER_VARS}

	ebegin "Setting vshelper path to $_VSHELPER"
	set_helper
	eend $?

	ebegin "Loading default device map"
	$__PKGLIBDIR/bash-wrapper 'loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap"'
	eend $?
}

stop() {
	: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
	if [ ! -e ${UTIL_VSERVER_VARS} ]; then
		eerror "Cannot find util-vserver installation"
		eerror "(the file '$UTIL_VSERVER_VARS' would be expected)"
		return 1
	fi
	
	. ${UTIL_VSERVER_VARS}

	ebegin "Stopping all running guests"
	$_START_VSERVERS -j 1 --all --stop
	eend $?

	ebegin "Killing all running contexts"
	kill_contexts
	eend $?
}

# vim:ts=4:filetype=gentoo-init-d
