diff options
author | ajacoutot <ajacoutot@openbsd.org> | 2016-04-26 17:58:42 +0000 |
---|---|---|
committer | ajacoutot <ajacoutot@openbsd.org> | 2016-04-26 17:58:42 +0000 |
commit | c62c0b67dc7c72d50e9f24ceb387b157250eafd3 (patch) | |
tree | 14683560b1f5065970ca50fad675049186c8a37e /usr.sbin/rcctl | |
parent | Document recent rc.subr/rc.d changes. (diff) | |
download | wireguard-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.8 | 5 | ||||
-rw-r--r-- | usr.sbin/rcctl/rcctl.sh | 27 |
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 ]] && \ |