mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-15 00:54:41 +00:00
rc: implement inline variables for skip and defer #4093
Future use cases are dhcp6c and unbound...
This commit is contained in:
parent
da620c4ec1
commit
2ba1e4ec7f
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 2015-2017 Ad Schellevis <ad@opnsense.org>
|
||||
# Copyright (c) 2015-2019 Franco Fichtner <franco@opnsense.org>
|
||||
# Copyright (c) 2015-2020 Franco Fichtner <franco@opnsense.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
@ -43,6 +43,7 @@ rc_enabled()
|
||||
{
|
||||
rc_filename=${1}
|
||||
name=${2}
|
||||
variable=${3}
|
||||
|
||||
# check if service has a name
|
||||
if [ -z "${name}" ]; then
|
||||
@ -50,39 +51,50 @@ rc_enabled()
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check if service has a variable
|
||||
rcvar=
|
||||
eval "$(grep "^rcvar[[:blank:]]*=" ${rc_filename})"
|
||||
|
||||
# check if service has a variable
|
||||
if [ -z "${variable}" ]; then
|
||||
eval "$(grep "^rcvar[[:blank:]]*=" ${rc_filename})"
|
||||
else
|
||||
rcvar="${name}_${variable}"
|
||||
fi
|
||||
|
||||
if [ -z "${rcvar}" ]; then
|
||||
# FreeBSD does this, leave here for debugging
|
||||
#echo "Error: no rcvar set in $rc_filename"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check if service is enabled
|
||||
# check if variable is enabled
|
||||
eval "enabled=\$${rcvar}"
|
||||
if [ "${enabled}" != "YES" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
case "${enabled}" in
|
||||
[Yy][Ee][Ss])
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
rc_filenames="$(${RCORDER} /etc/rc.d/[a-z]* /usr/local/etc/rc.d/[a-z]* 2> /dev/null)"
|
||||
# XXX a better way would be ${name}_defer="YES" in rc.conf
|
||||
rc_filenames_defer="
|
||||
/etc/rc.d/ipfw
|
||||
/usr/local/etc/rc.d/captiveportal
|
||||
"
|
||||
# XXX a better way would be ${name}_skip="YES" in rc.conf
|
||||
rc_filenames_skip="
|
||||
/usr/local/etc/rc.d/dhcp6c
|
||||
/usr/local/etc/rc.d/syslog-ng
|
||||
"
|
||||
rc_filenames_defer=
|
||||
rc_filenames_skip=
|
||||
|
||||
for rc_filename in ${rc_filenames_defer} ${rc_filenames_skip}; do
|
||||
# exclude deferred scripts from first pass, appended last instead
|
||||
rc_filenames=$(echo "${rc_filenames}" | grep -v "^${rc_filename}$")
|
||||
for rc_filename in ${rc_filenames}; do
|
||||
eval "$(grep "^name[[:blank:]]*=" ${rc_filename})"
|
||||
|
||||
if rc_enabled ${rc_filename} ${name} defer; then
|
||||
rc_filenames_defer="${rc_filenames_defer} ${rc_filename}"
|
||||
rc_filenames=$(echo "${rc_filenames}" | grep -v "^${rc_filename}$")
|
||||
fi
|
||||
|
||||
if rc_enabled ${rc_filename} ${name} skip; then
|
||||
rc_filenames_skip="${rc_filenames_skip} ${rc_filename}"
|
||||
rc_filenames=$(echo "${rc_filenames}" | grep -v "^${rc_filename}$")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "${1}" ]; then
|
||||
|
||||
@ -18,6 +18,6 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
dummynet_enable="YES"
|
||||
firewall_defer="YES"
|
||||
firewall_enable="{% if shapers or cp_zones %}YES{% else %}NO{% endif %}"
|
||||
firewall_script="/usr/local/etc/rc.ipfw"
|
||||
ipfw_defer="YES"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user