--- /dev/null
+#!/bin/bash
+#
+# util-vserver sets the path to vshelper and kills all guest processes
+#
+# chkconfig: 2345 10 90
+# description: Sets the path to vshelper and kills all guest processes
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+ echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+ exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+LOCKFILE=util-vserver
+. "$_LIB_VSERVER_INIT_FUNCTIONS"
+. "$_LIB_FUNCTIONS"
+. "$__PKGLIBDIR/vserver.functions"
+
+
+function set_helper()
+{
+ local f="/proc/sys/kernel/vshelper"
+ if test -e "$f"; then
+ echo "$_VSHELPER" > "$f"
+ return 0
+ else
+ return 2
+ fi
+}
+
+function kill_contexts()
+{
+ local xid
+ for xid in `ls -1 /proc/virtual`; do
+ test "$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
+ test "$xid" = "info" -o "$xid" = "status" && continue
+ let alive+=1
+ done
+ test $alive = 0
+}
+
+function create_dirs()
+{
+ $_MKDIR -p "$__RUNDIR" && $_MKDIR -p "$__VSHELPERSTATEDIR" && $_MKDIR -p `getPhysicalDir "$__PKGSTATEREVDIR"`
+}
+
+function start()
+{
+ _beginResult $"Creating required directories"
+ create_dirs
+ _endResult $?
+ _beginResult $"Setting path to vshelper"
+ set_helper
+ _endResult $?
+ local retval=$?
+ _beginResult $"Loading default device map"
+ loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap"
+ _endResult $?
+ test "$retval" -ne 0 || touch "$lockfile"
+ return $retval
+}
+
+function stop()
+{
+ # Stop all running, but non-default guests"
+ _beginResult $"Stopping all running guests"
+ $_START_VSERVERS -j 1 --all --stop
+ _endResult $?
+ _beginResult $"Killing all running contexts"
+ kill_contexts
+ _endResult $?
+ local retval=$?
+ $_RM -f "$lockfile"
+ return $retval
+}
+
+function restart()
+{
+ stop
+ start
+}
+
+case "$1" in
+ start|stop|restart) $1;;
+ reload) ;;
+ condrestart)
+ test -f $lockfile && restart || :
+ ;;
+ status)
+ test -f $lockfile && {
+ echo $"Path to vshelper has been set"
+ exit 0
+ }
+ echo $"Path to vshelper has not been set"
+ exit 1
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
+ exit 2
+ ;;
+esac