From 1d11c86dd986e0af7bd16cad807ee7bc422bfd26 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Wed, 11 Oct 2017 00:50:11 +0200 Subject: [PATCH] saving uncommitted changes in /etc prior to emerge run --- conf.d/vde | 15 ++++++++++----- init.d/vde | 48 +++++++++++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/conf.d/vde b/conf.d/vde index d8794537..856bde8e 100644 --- a/conf.d/vde +++ b/conf.d/vde @@ -1,10 +1,15 @@ # load the tun module VDE_MODPROBE_TUN="yes" + # virtual tap networking device to be used for vde VDE_TAP="tap0" -# mode and group for the socket -VDE_SOCK_CHMOD="770" -VDE_SOCK_CHOWN=":qemu" -# This is the actual options string passed to VDE. Change this at your own risk. -VDE_OPTS="-tap ${VDE_TAP} -daemon" +# The group that will have access to the VDE control socket. +VDE_GROUP="qemu" + +# VDE socket location (default: /run/${RC_SVCNAME}.ctl) +VDE_SOCKET="" + +# Additional options passed to the vde_switch daemon. +#VDE_OPTS="" +VDE_OPTS="" \ No newline at end of file diff --git a/init.d/vde b/init.d/vde index 9a1500ee..0934c51f 100755 --- a/init.d/vde +++ b/init.d/vde @@ -1,26 +1,44 @@ -#!/sbin/runscript -# Copyright 1999-2013 Gentoo Foundation +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Id$ + +command="/usr/bin/vde_switch" +pidfile="/run/${RC_SVCNAME}.pid" depend() { after net.${VDE_TAP} } +start_pre() { + [ "${VDE_MODPROBE_TUN}" = "yes" ] || return 0 + modprobe tun +} +# We have to use start() because the shortform uses --pidfile for s-s-d --start +# which causes s-s-d to check the pid file before it exists start() { - ebegin "Starting vde" - [ "${VDE_MODPROBE_TUN}" = "yes" ] && modprobe tun - start-stop-daemon --start --quiet \ - --exec /usr/bin/vde_switch -- ${VDE_OPTS} - eend $? "Failed to start vde" - chmod -R ${VDE_SOCK_CHMOD} /var/run/vde.ctl - chown -R ${VDE_SOCK_CHOWN} /var/run/vde.ctl + VDE_SOCKET="${VDE_SOCKET:-/run/${RC_SVCNAME}.ctl}" + + ebegin "Starting ${SVC_NAME}" + + start-stop-daemon --start --exec ${command} -- \ + --pidfile=${pidfile} \ + --tap=${VDE_TAP} \ + --group=${VDE_GROUP} \ + --mode=660 \ + --dirmode=770 \ + --sock=${VDE_SOCKET} \ + --daemon \ + ${VDE_OPTS} + ewaitfile 10 "${VDE_SOCKET}" + + eend $? "Failed to start ${RC_SVCNAME}" } -stop() { - ebegin "Stopping vde" - start-stop-daemon --stop --quiet --exec /usr/bin/vde_switch - [ "${VDE_MODPROBE_TUN}" = "yes" ] && modprobe -r tun - eend $? "Failed to stop vde" +stop_post() { + [ "${VDE_MODPROBE_TUN}" = "yes" ] && modprobe --quiet --remove tun + + # Don't fail to stop the service if the "tun" module in use + # and the above "modprobe -r" command fails. + return 0 } -- 2.39.5