summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rcctl
diff options
context:
space:
mode:
authorajacoutot <ajacoutot@openbsd.org>2016-04-26 17:58:42 +0000
committerajacoutot <ajacoutot@openbsd.org>2016-04-26 17:58:42 +0000
commitc62c0b67dc7c72d50e9f24ceb387b157250eafd3 (patch)
tree14683560b1f5065970ca50fad675049186c8a37e /usr.sbin/rcctl
parentDocument recent rc.subr/rc.d changes. (diff)
downloadwireguard-openbsd-c62c0b67dc7c72d50e9f24ceb387b157250eafd3.tar.xz
wireguard-openbsd-c62c0b67dc7c72d50e9f24ceb387b157250eafd3.zip
Implement daemon_rtable support.
From Jiri B <jirib ! devio ! us>, thanks!
Diffstat (limited to 'usr.sbin/rcctl')
-rw-r--r--usr.sbin/rcctl/rcctl.85
-rw-r--r--usr.sbin/rcctl/rcctl.sh27
2 files changed, 23 insertions, 9 deletions
diff --git a/usr.sbin/rcctl/rcctl.8 b/usr.sbin/rcctl/rcctl.8
index b763565940d..727191f4fab 100644
--- a/usr.sbin/rcctl/rcctl.8
+++ b/usr.sbin/rcctl/rcctl.8
@@ -1,4 +1,4 @@
-.\" $OpenBSD: rcctl.8,v 1.31 2016/04/01 08:18:57 ajacoutot Exp $
+.\" $OpenBSD: rcctl.8,v 1.32 2016/04/26 17:58:42 ajacoutot Exp $
.\"
.\" Copyright (c) 2014 Antoine Jacoutot <ajacoutot@openbsd.org>
.\"
@@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: April 1 2016 $
+.Dd $Mdocdate: April 26 2016 $
.Dt RCCTL 8
.Os
.Sh NAME
@@ -189,6 +189,7 @@ flags:
# rcctl get apmd
apmd_class=daemon
apmd_flags=-A
+apmd_rtable=0
apmd_timeout=30
apmd_user=root
# echo $?
diff --git a/usr.sbin/rcctl/rcctl.sh b/usr.sbin/rcctl/rcctl.sh
index f435e365455..848da7188fc 100644
--- a/usr.sbin/rcctl/rcctl.sh
+++ b/usr.sbin/rcctl/rcctl.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $OpenBSD: rcctl.sh,v 1.93 2016/04/09 08:02:22 ajacoutot Exp $
+# $OpenBSD: rcctl.sh,v 1.94 2016/04/26 17:58:42 ajacoutot Exp $
#
# Copyright (c) 2014, 2015 Antoine Jacoutot <ajacoutot@openbsd.org>
# Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -223,7 +223,7 @@ svc_get()
[ -n "${_svc}" ] || return
local _status=0 _val _var=$2
- local daemon_class daemon_flags daemon_timeout daemon_user
+ local daemon_class daemon_flags daemon_rtable daemon_timeout daemon_user
if svc_is_special ${_svc}; then
daemon_flags="$(eval echo \${${_svc}})"
@@ -249,6 +249,12 @@ svc_get()
[ -z "${daemon_flags}" ] && \
daemon_flags="$(svc_getdef ${_svc} flags)"
fi
+ if [ -z "${_var}" -o "${_var}" = "rtable" ]; then
+ [ -z "${daemon_rtable}" ] && \
+ daemon_rtable="$(eval echo \"\${${_svc}_rtable}\")"
+ [ -z "${daemon_rtable}" ] && \
+ daemon_rtable="$(svc_getdef ${_svc} rtable)"
+ fi
if [ -z "${_var}" -o "${_var}" = "timeout" ]; then
[ -z "${daemon_timeout}" ] && \
daemon_timeout="$(eval echo \"\${${_svc}_timeout}\")"
@@ -277,6 +283,7 @@ svc_get()
else
echo "${_svc}_class=${daemon_class}"
echo "${_svc}_flags=${daemon_flags}"
+ echo "${_svc}_rtable=${daemon_rtable}"
echo "${_svc}_timeout=${daemon_timeout}"
echo "${_svc}_user=${daemon_user}"
fi
@@ -291,7 +298,7 @@ svc_getdef()
[ -n "${_svc}" ] || return
local _status=0 _val _var=$2
- local daemon_class daemon_flags daemon_timeout daemon_user
+ local daemon_class daemon_flags daemon_rtable daemon_timeout daemon_user
if svc_is_special ${_svc}; then
# unconditionally parse: we always output flags and/or status
@@ -315,6 +322,7 @@ svc_getdef()
. /etc/rc.d/${_svc} >/dev/null 2>&1
daemon_class=daemon
+ [ -z "${daemon_rtable}" ] && daemon_rtable=0
[ -z "${daemon_timeout}" ] && daemon_timeout=30
[ -z "${daemon_user}" ] && daemon_user=root
fi
@@ -331,6 +339,7 @@ svc_getdef()
else
echo "${_svc}_class=${daemon_class}"
echo "${_svc}_flags=${daemon_flags}"
+ echo "${_svc}_rtable=${daemon_rtable}"
echo "${_svc}_timeout=${daemon_timeout}"
echo "${_svc}_user=${daemon_user}"
fi
@@ -349,7 +358,7 @@ svc_rm()
( svc_getdef ${_svc} status ) && \
echo "${_svc}=NO" >>${_TMP_RCCONF}
else
- grep -Ev "^${_svc}_(flags|timeout|user).*=" \
+ grep -Ev "^${_svc}_(flags|rtable|timeout|user).*=" \
/etc/rc.conf.local >${_TMP_RCCONF}
( svc_getdef ${_svc} status ) && \
echo "${_svc}_flags=NO" >>${_TMP_RCCONF}
@@ -402,6 +411,10 @@ svc_set()
fi
if [ -n "${_args}" ]; then
+ if [ "${_var}" = "rtable" ]; then
+ [[ ${_args} != +([[:digit:]]) || ${_args} -lt 0 ]] && \
+ rcctl_err "\"${_args}\" is not an integer"
+ fi
if [ "${_var}" = "timeout" ]; then
[[ ${_args} != +([[:digit:]]) || ${_args} -le 0 ]] && \
rcctl_err "\"${_args}\" is not a positive integer"
@@ -473,13 +486,13 @@ case ${action} in
svc_is_avail ${svc} || \
rcctl_err "service ${svc} does not exist" 2
if [ -n "${var}" ]; then
- [[ ${var} != @(class|flags|status|timeout|user) ]] && usage
+ [[ ${var} != @(class|flags|status|rtable|timeout|user) ]] && usage
if svc_is_meta ${svc}; then
[ "${var}" != "status" ] && \
rcctl_err "/etc/rc.d/${svc} is a meta script, cannot \"${action} ${var}\""
fi
if svc_is_special ${svc}; then
- [[ ${var} == @(class|timeout|user) ]] && \
+ [[ ${var} == @(class|rtable|timeout|user) ]] && \
rcctl_err "\"${svc}\" is a special variable, cannot \"${action} ${var}\""
fi
fi
@@ -492,7 +505,7 @@ case ${action} in
[ -z "${svc}" ] && usage
svc_is_avail ${svc} || \
rcctl_err "service ${svc} does not exist" 2
- [[ ${var} != @(class|flags|status|timeout|user) ]] && usage
+ [[ ${var} != @(class|flags|rtable|status|timeout|user) ]] && usage
svc_is_meta ${svc} && [ "${var}" != "status" ] && \
rcctl_err "/etc/rc.d/${svc} is a meta script, cannot \"${action} ${var}\""
[[ ${var} = flags && ${args} = NO ]] && \