summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/rc-services.sh')
-rwxr-xr-xsbin/rc-services.sh34
1 files changed, 12 insertions, 22 deletions
diff --git a/sbin/rc-services.sh b/sbin/rc-services.sh
index df0b557..25e1805 100755
--- a/sbin/rc-services.sh
+++ b/sbin/rc-services.sh
@@ -745,8 +745,8 @@ valid_iafter() {
# Get and sort the dependencies of given service[s].
#
trace_dependencies() {
- local -a services=( "$@" ) net_deps
- local i j net_services x
+ local -a services=( "$@" ) net_deps=()
+ local i= j= net_services= x=
if [[ $1 == -* ]]; then
deptype="${1/-/}"
@@ -757,26 +757,16 @@ trace_dependencies() {
fi
fi
- net_services="$( cd "${svcdir}"/started; ls net.* 2>/dev/null )"
- # If no net services are running or we only have net.lo up, then
- # assume we are in boot runlevel or starting a new runlevel
- if [[ -z ${net_services} || ${net_services} == "net.lo" ]]; then
- get_net_services() {
- local runlevel="$1"
-
- if [[ -d "/etc/runlevels/${runlevel}" ]] ; then
- cd "/etc/runlevels/${runlevel}"
- ls net.* 2>/dev/null
- fi
- }
-
- local mylevel="${BOOTLEVEL}"
- local x="$( get_net_services "${mylevel}" )"
-
- [[ -f "${svcdir}/softlevel" ]] && mylevel="$( < "${svcdir}/softlevel" )"
- [[ ${BOOTLEVEL} != "${mylevel}" ]] && \
- local x="${x} $( get_net_services "${mylevel}" )"
- [[ -n ${x} ]] && net_services="${x}"
+ if is_runlevel_stop ; then
+ for x in $(dolisting "${svcdir}/started/net.*") \
+ $(dolisting "${svcdir}/inactive/net.*") ; do
+ net_services="${net_services} ${x##*/}"
+ done
+ elif is_runlevel_start || ! is_net_up ; then
+ for x in $(dolisting "/etc/runlevels/${BOOTLEVEL}/net.*") \
+ $(dolisting "/etc/runlevels/${SOFTLEVEL}/net.*") ; do
+ net_services="${net_services} ${x##*/}"
+ done
fi
# Cache the generic "net" depends