aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranco Fichtner <franco@opnsense.org>2022-08-15 14:41:31 +0000
committerEugene Grosbein <eugen@FreeBSD.org>2023-12-02 08:20:40 +0000
commitb1e0b0cb7ce100b317cf69ec5180660d31e25c3c (patch)
treeb75206a154f76ff3ad05dffc26da0808ee5aa07f
parentc7d8a572acb2bcdf824a75af3e97b24e36463a34 (diff)
downloadsrc-b1e0b0cb7ce100b317cf69ec5180660d31e25c3c.tar.gz
src-b1e0b0cb7ce100b317cf69ec5180660d31e25c3c.zip
rc: add ${name}_setup script support
Run a service-based setup script before running the start command. Useful for automatic configuration file generation. Reviewed by: https://reviews.freebsd.org/D36006 (cherry picked from commit c9be47b34dd847da1d4ab0feee4a6100b2c5ea0d)
-rw-r--r--libexec/rc/rc.subr14
1 files changed, 11 insertions, 3 deletions
diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index c64186608aa2..e9a2feeb6d1a 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -783,6 +783,8 @@ check_startmsgs()
#
# ${name}_prepend n Command added before ${command}.
#
+# ${name}_setup n Command executed before ${command}.
+#
# ${name}_login_class n Login class to use, else "daemon".
#
# ${name}_limits n limits(1) to apply to ${command}.
@@ -967,8 +969,8 @@ run_rc_command()
_group=\$${name}_group _groups=\$${name}_groups \
_fib=\$${name}_fib _env=\$${name}_env \
_prepend=\$${name}_prepend _login_class=\${${name}_login_class:-daemon} \
- _limits=\$${name}_limits _oomprotect=\$${name}_oomprotect \
- _env_file=\$${name}_env_file
+ _limits=\$${name}_limits _oomprotect=\$${name}_oomprotect \
+ _setup=\$${name}_setup _env_file=\$${name}_env_file
if [ -n "$_env_file" ] && [ -r "${_env_file}" ]; then # load env from file
set -a
@@ -1123,6 +1125,12 @@ $command $rc_flags $command_args"
fi
fi
+ if [ -n "$_setup" ]; then
+ if ! _run_rc_doit "$_setup"; then
+ warn "failed to setup ${name}"
+ fi
+ fi
+
# Prepend default limits
_doit="$_cd limits -C $_login_class $_limits $_doit"
@@ -2139,7 +2147,7 @@ check_kern_features()
# check_namevarlist var
# Return "0" if ${name}_var is reserved in rc.subr.
-_rc_namevarlist="program chroot chdir env flags fib nice user group groups prepend"
+_rc_namevarlist="program chroot chdir env flags fib nice user group groups prepend setup"
check_namevarlist()
{
local _v