Correct tabs
This commit is contained in:
parent
82361c0feb
commit
d599a40680
482
sh/net.sh
482
sh/net.sh
@ -9,13 +9,13 @@ _config_vars="config routes"
|
||||
[ -z "${IN_BACKGROUND}" ] && IN_BACKGROUND=false
|
||||
|
||||
depend() {
|
||||
local IFACE=${SVCNAME#*.}
|
||||
local IFVAR=$(echo -n "${IFACE}" | sed -e 's/[^[:alnum:]]/_/g')
|
||||
local IFACE=${SVCNAME#*.}
|
||||
local IFVAR=$(echo -n "${IFACE}" | sed -e 's/[^[:alnum:]]/_/g')
|
||||
|
||||
need localmount
|
||||
need localmount
|
||||
after bootmisc
|
||||
provide net
|
||||
case "${IFACE}" in
|
||||
provide net
|
||||
case "${IFACE}" in
|
||||
lo|lo0) ;;
|
||||
*)
|
||||
after net.lo net.lo0
|
||||
@ -31,189 +31,189 @@ depend() {
|
||||
eval prov=\$RC_PROVIDE_${IFVAR}
|
||||
[ -n "${prov}" ] && provide ${prov}
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
_shell_var() {
|
||||
echo -n "$1" | sed -e 's/[^[:alnum:]]/_/g'
|
||||
echo -n "$1" | sed -e 's/[^[:alnum:]]/_/g'
|
||||
}
|
||||
|
||||
# Credit to David Leverton for this function which handily maps a bash array
|
||||
# structure to positional parameters so existing configs work :)
|
||||
# We'll deprecate arrays at some point though.
|
||||
_get_array() {
|
||||
if [ -n "${BASH}" ] ; then
|
||||
if [ -n "${BASH}" ] ; then
|
||||
case "$(declare -p "$1" 2>/dev/null)" in
|
||||
"declare -a "*)
|
||||
echo "set -- \"\${$1[@]}\""
|
||||
return
|
||||
;;
|
||||
"declare -a "*)
|
||||
echo "set -- \"\${$1[@]}\""
|
||||
return
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "eval set -- \"\$$1\""
|
||||
echo "eval set -- \"\$$1\""
|
||||
}
|
||||
|
||||
_wait_for_carrier() {
|
||||
local timeout= efunc=einfon
|
||||
local timeout= efunc=einfon
|
||||
|
||||
_has_carrier && return 0
|
||||
_has_carrier && return 0
|
||||
|
||||
eval timeout=\$carrier_timeout_${IFVAR}
|
||||
timeout=${timeout:-${carrier_timeout:-5}}
|
||||
eval timeout=\$carrier_timeout_${IFVAR}
|
||||
timeout=${timeout:-${carrier_timeout:-5}}
|
||||
|
||||
# Incase users don't want this nice feature ...
|
||||
[ ${timeout} -le 0 ] && return 0
|
||||
|
||||
[ -n "${RC_EBUFFER}" -o "${RC_PREFIX}" = "yes" ] && efunc=einfo
|
||||
${efunc} "Waiting for carrier (${timeout} seconds) "
|
||||
while [ ${timeout} -gt 0 ] ; do
|
||||
[ -n "${RC_EBUFFER}" -o "${RC_PREFIX}" = "yes" ] && efunc=einfo
|
||||
${efunc} "Waiting for carrier (${timeout} seconds) "
|
||||
while [ ${timeout} -gt 0 ] ; do
|
||||
sleep 1
|
||||
if _has_carrier ; then
|
||||
[ -z "${RC_EBUFFER}" ] && echo
|
||||
[ -z "${RC_EBUFFER}" ] && echo
|
||||
eend 0
|
||||
return 0
|
||||
return 0
|
||||
fi
|
||||
timeout=$((${timeout} - 1))
|
||||
[ -z "${RC_EBUFFER}" -a "${RC_PREFIX}" != "yes" ] && printf "."
|
||||
done
|
||||
done
|
||||
|
||||
[ -z "${RC_EBUFFER}" -a "${RC_PREFIX}" != "yes" ] && echo
|
||||
[ -z "${RC_EBUFFER}" -a "${RC_PREFIX}" != "yes" ] && echo
|
||||
eend 1
|
||||
return 1
|
||||
return 1
|
||||
}
|
||||
|
||||
_netmask2cidr() {
|
||||
local i= len=0
|
||||
local i= len=0
|
||||
|
||||
local IFS=.
|
||||
for i in $1; do
|
||||
local IFS=.
|
||||
for i in $1; do
|
||||
while [ ${i} != "0" ] ; do
|
||||
len=$((${len} + ${i} % 2))
|
||||
i=$((${i} >> 1))
|
||||
len=$((${len} + ${i} % 2))
|
||||
i=$((${i} >> 1))
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
echo "${len}"
|
||||
echo "${len}"
|
||||
}
|
||||
|
||||
_configure_variables() {
|
||||
local var= v= t=
|
||||
local var= v= t=
|
||||
|
||||
for var in ${_config_vars} ; do
|
||||
for var in ${_config_vars} ; do
|
||||
local v=
|
||||
for t in "$@" ; do
|
||||
eval v=\$${var}_${t}
|
||||
if [ -n "${v}" ] ; then
|
||||
eval v=\$${var}_${t}
|
||||
if [ -n "${v}" ] ; then
|
||||
eval ${var}_${IFVAR}=\$${var}_${t}
|
||||
continue 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
_show_address() {
|
||||
einfo "received address $(_get_inet_address "${IFACE}")"
|
||||
einfo "received address $(_get_inet_address "${IFACE}")"
|
||||
}
|
||||
|
||||
# Basically sorts our modules into order and saves the list
|
||||
_gen_module_list() {
|
||||
local x= f=
|
||||
if [ -s "${MODULESLIST}" -a "${MODULESLIST}" -nt "${MODULESDIR}" ] ; then
|
||||
local x= f=
|
||||
if [ -s "${MODULESLIST}" -a "${MODULESLIST}" -nt "${MODULESDIR}" ] ; then
|
||||
local update=false
|
||||
for x in "${MODULESDIR}"/* ; do
|
||||
[ -e "${x}" ] || continue
|
||||
if [ "${x}" -nt "${MODULESLIST}" ] ; then
|
||||
[ -e "${x}" ] || continue
|
||||
if [ "${x}" -nt "${MODULESLIST}" ] ; then
|
||||
update=true
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
${update} || return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
einfo "Caching network module dependencies"
|
||||
# Run in a subshell to protect the main script
|
||||
(
|
||||
after() {
|
||||
einfo "Caching network module dependencies"
|
||||
# Run in a subshell to protect the main script
|
||||
(
|
||||
after() {
|
||||
eval ${MODULE}_after="\"\${${MODULE}_after}\${${MODULE}_after:+ }$*\""
|
||||
}
|
||||
}
|
||||
|
||||
before() {
|
||||
before() {
|
||||
local mod=${MODULE}
|
||||
local MODULE=
|
||||
for MODULE in "$@" ; do
|
||||
after "${mod}"
|
||||
after "${mod}"
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
program() {
|
||||
program() {
|
||||
if [ "$1" = "start" -o "$1" = "stop" ] ; then
|
||||
local s="$1"
|
||||
shift
|
||||
eval ${MODULE}_program_${s}="\"\${${MODULE}_program_${s}}\${${MODULE}_program_${s}:+ }$*\""
|
||||
local s="$1"
|
||||
shift
|
||||
eval ${MODULE}_program_${s}="\"\${${MODULE}_program_${s}}\${${MODULE}_program_${s}:+ }$*\""
|
||||
else
|
||||
eval ${MODULE}_program="\"\${${MODULE}_program}\${${MODULE}_program:+ }$*\""
|
||||
eval ${MODULE}_program="\"\${${MODULE}_program}\${${MODULE}_program:+ }$*\""
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
||||
provide() {
|
||||
provide() {
|
||||
eval ${MODULE}_provide="\"\${${MODULE}_provide}\${${MODULE}_provide:+ }$*\""
|
||||
local x
|
||||
for x in $* ; do
|
||||
eval ${x}_providedby="\"\${${MODULE}_providedby}\${${MODULE}_providedby:+ }${MODULE}\""
|
||||
eval ${x}_providedby="\"\${${MODULE}_providedby}\${${MODULE}_providedby:+ }${MODULE}\""
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
for MODULE in "${MODULESDIR}"/* ; do
|
||||
for MODULE in "${MODULESDIR}"/* ; do
|
||||
sh -n "${MODULE}" || continue
|
||||
. "${MODULE}" || continue
|
||||
MODULE=${MODULE#${MODULESDIR}/}
|
||||
MODULE=${MODULE%.sh}
|
||||
eval ${MODULE}_depend
|
||||
MODULES="${MODULES} ${MODULE}"
|
||||
done
|
||||
done
|
||||
|
||||
VISITED=
|
||||
SORTED=
|
||||
visit() {
|
||||
VISITED=
|
||||
SORTED=
|
||||
visit() {
|
||||
case " ${VISITED} " in
|
||||
*" $1 "*) return ;;
|
||||
*" $1 "*) return ;;
|
||||
esac
|
||||
VISITED="${VISITED} $1"
|
||||
|
||||
eval AFTER=\$${1}_after
|
||||
for MODULE in ${AFTER} ; do
|
||||
eval PROVIDEDBY=\$${MODULE}_providedby
|
||||
if [ -n "${PROVIDEDBY}" ] ; then
|
||||
eval PROVIDEDBY=\$${MODULE}_providedby
|
||||
if [ -n "${PROVIDEDBY}" ] ; then
|
||||
for MODULE in ${PROVIDEDBY} ; do
|
||||
visit "${MODULE}"
|
||||
visit "${MODULE}"
|
||||
done
|
||||
else
|
||||
else
|
||||
visit "${MODULE}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
eval PROVIDE=\$${1}_provide
|
||||
for MODULE in ${PROVIDE} ; do
|
||||
visit "${MODULE}"
|
||||
visit "${MODULE}"
|
||||
done
|
||||
|
||||
eval PROVIDEDBY=\$${1}_providedby
|
||||
[ -z "${PROVIDEDBY}" ] && SORTED="${SORTED} $1"
|
||||
}
|
||||
}
|
||||
|
||||
for MODULE in ${MODULES} ; do
|
||||
for MODULE in ${MODULES} ; do
|
||||
visit "${MODULE}"
|
||||
done
|
||||
done
|
||||
|
||||
> "${MODULESLIST}"
|
||||
i=0
|
||||
for MODULE in ${SORTED} ; do
|
||||
> "${MODULESLIST}"
|
||||
i=0
|
||||
for MODULE in ${SORTED} ; do
|
||||
eval PROGRAM=\$${MODULE}_program
|
||||
eval PROGRAM_START=\$${MODULE}_program_start
|
||||
eval PROGRAM_STOP=\$${MODULE}_program_stop
|
||||
#for x in ${PROGRAM} ; do
|
||||
# [ -x "${x}" ] || continue 2
|
||||
# [ -x "${x}" ] || continue 2
|
||||
#done
|
||||
eval PROVIDE=\$${MODULE}_provide
|
||||
echo "module_${i}='${MODULE}'" >> "${MODULESLIST}"
|
||||
@ -222,41 +222,41 @@ _gen_module_list() {
|
||||
echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> "${MODULESLIST}"
|
||||
echo "module_${i}_provide='${PROVIDE}'" >> "${MODULESLIST}"
|
||||
i=$((${i} + 1))
|
||||
done
|
||||
echo "module_${i}=" >> "${MODULESLIST}"
|
||||
)
|
||||
done
|
||||
echo "module_${i}=" >> "${MODULESLIST}"
|
||||
)
|
||||
|
||||
return 0
|
||||
return 0
|
||||
}
|
||||
|
||||
_load_modules() {
|
||||
# Ensure our list is up to date
|
||||
_gen_module_list
|
||||
# Ensure our list is up to date
|
||||
_gen_module_list
|
||||
|
||||
local starting=$1 mymods=
|
||||
local starting=$1 mymods=
|
||||
|
||||
MODULES=
|
||||
if [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ] ; then
|
||||
MODULES=
|
||||
if [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ] ; then
|
||||
eval mymods=\$modules_${IFVAR}
|
||||
[ -z "${mymods}" ] && mymods=${modules}
|
||||
fi
|
||||
fi
|
||||
|
||||
. "${MODULESLIST}"
|
||||
local i=-1 x= mod= f= provides=
|
||||
while true ; do
|
||||
. "${MODULESLIST}"
|
||||
local i=-1 x= mod= f= provides=
|
||||
while true ; do
|
||||
i=$((${i} + 1))
|
||||
eval mod=\$module_${i}
|
||||
[ -z "${mod}" ] && break
|
||||
[ -e "${MODULESDIR}/${mod}.sh" ] || continue
|
||||
|
||||
eval set -- \$module_${i}_program
|
||||
eval set -- \$module_${i}_program
|
||||
if [ -n "$1" ] ; then
|
||||
x=
|
||||
for x in "$@" ; do
|
||||
[ -x "${x}" ] && break
|
||||
done
|
||||
[ -x "${x}" ] || continue
|
||||
fi
|
||||
fi
|
||||
if ${starting} ; then
|
||||
eval set -- \$module_${i}_program_start
|
||||
else
|
||||
@ -268,21 +268,21 @@ _load_modules() {
|
||||
[ -x "${x}" ] && break
|
||||
done
|
||||
[ -x "${x}" ] || continue
|
||||
fi
|
||||
fi
|
||||
|
||||
eval provides=\$module_${i}_provide
|
||||
if ${starting} ; then
|
||||
case " ${mymods} " in
|
||||
case " ${mymods} " in
|
||||
*" !${mod} "*) continue ;;
|
||||
*" !${provides} "*) [ -n "${provides}" ] && continue ;;
|
||||
esac
|
||||
esac
|
||||
fi
|
||||
MODULES="${MODULES}${MODULES:+ }${mod}"
|
||||
|
||||
# Now load and wrap our functions
|
||||
if ! . "${MODULESDIR}/${mod}.sh" ; then
|
||||
eend 1 "${SVCNAME}: error loading module \`${mod}'"
|
||||
exit 1
|
||||
eend 1 "${SVCNAME}: error loading module \`${mod}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[ -z "${provides}" ] && continue
|
||||
@ -290,112 +290,112 @@ _load_modules() {
|
||||
# Wrap our provides
|
||||
local f=
|
||||
for f in pre_start start post_start ; do
|
||||
eval "${provides}_${f}() { type ${mod}_${f} >/dev/null 2>/dev/null || return 0; ${mod}_${f} \"\$@\"; }"
|
||||
eval "${provides}_${f}() { type ${mod}_${f} >/dev/null 2>/dev/null || return 0; ${mod}_${f} \"\$@\"; }"
|
||||
done
|
||||
|
||||
eval module_${mod}_provides="${provides}"
|
||||
eval module_${provides}_providedby="${mod}"
|
||||
done
|
||||
done
|
||||
|
||||
# Wrap our preferred modules
|
||||
for mod in ${mymods} ; do
|
||||
# Wrap our preferred modules
|
||||
for mod in ${mymods} ; do
|
||||
case " ${MODULES} " in
|
||||
*" ${mod} "*)
|
||||
eval x=\$module_${mod}_provides
|
||||
[ -z "${x}" ] && continue
|
||||
for f in pre_start start post_start ; do
|
||||
eval "${x}_${f}() { type ${mod}_${f} >/dev/null 2>/dev/null || return 0; ${mod}_${f} \"\$@\"; }"
|
||||
done
|
||||
eval module_${x}_providedby="${mod}"
|
||||
;;
|
||||
*" ${mod} "*)
|
||||
eval x=\$module_${mod}_provides
|
||||
[ -z "${x}" ] && continue
|
||||
for f in pre_start start post_start ; do
|
||||
eval "${x}_${f}() { type ${mod}_${f} >/dev/null 2>/dev/null || return 0; ${mod}_${f} \"\$@\"; }"
|
||||
done
|
||||
eval module_${x}_providedby="${mod}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
# Finally remove any duplicated provides from our list if we're starting
|
||||
# Otherwise reverse the list
|
||||
local LIST="${MODULES}" p=
|
||||
MODULES=
|
||||
if ${starting} ; then
|
||||
# Finally remove any duplicated provides from our list if we're starting
|
||||
# Otherwise reverse the list
|
||||
local LIST="${MODULES}" p=
|
||||
MODULES=
|
||||
if ${starting} ; then
|
||||
for mod in ${LIST} ; do
|
||||
eval x=\$module_${mod}_provides
|
||||
if [ -n "${x}" ] ; then
|
||||
eval x=\$module_${mod}_provides
|
||||
if [ -n "${x}" ] ; then
|
||||
eval p=\$module_${x}_providedby
|
||||
[ "${mod}" != "${p}" ] && continue
|
||||
fi
|
||||
MODULES="${MODULES}${MODULES:+ }${mod}"
|
||||
fi
|
||||
MODULES="${MODULES}${MODULES:+ }${mod}"
|
||||
done
|
||||
else
|
||||
else
|
||||
for mod in ${LIST} ; do
|
||||
MODULES="${mod}${MODULES:+ }${MODULES}"
|
||||
MODULES="${mod}${MODULES:+ }${MODULES}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
veinfo "Loaded modules: ${MODULES}"
|
||||
veinfo "Loaded modules: ${MODULES}"
|
||||
}
|
||||
|
||||
_load_config() {
|
||||
eval "$(_get_array "config_${IFVAR}")"
|
||||
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
|
||||
eval "$(_get_array "config_${IFVAR}")"
|
||||
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
|
||||
set -- "127.0.0.1/8" "$@"
|
||||
else
|
||||
else
|
||||
if [ $# -eq 0 ] ; then
|
||||
ewarn "No configuration specified; defaulting to DHCP"
|
||||
set -- "dhcp"
|
||||
ewarn "No configuration specified; defaulting to DHCP"
|
||||
set -- "dhcp"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# We store our config in an array like vars
|
||||
# so modules can influence it
|
||||
config_index=0
|
||||
for cmd in "$@" ; do
|
||||
# We store our config in an array like vars
|
||||
# so modules can influence it
|
||||
config_index=0
|
||||
for cmd in "$@" ; do
|
||||
eval config_${config_index}="'${cmd}'"
|
||||
config_index=$((${config_index} + 1))
|
||||
done
|
||||
# Terminate the list
|
||||
eval config_${config_index}=
|
||||
done
|
||||
# Terminate the list
|
||||
eval config_${config_index}=
|
||||
|
||||
config_index=0
|
||||
eval $(_get_array fallback_${IFVAR})
|
||||
for cmd in "$@" ; do
|
||||
config_index=0
|
||||
eval $(_get_array fallback_${IFVAR})
|
||||
for cmd in "$@" ; do
|
||||
eval fallback_${config_index}="'${cmd}'"
|
||||
config_index=$((${config_index} + 1))
|
||||
done
|
||||
# Terminate the list
|
||||
eval fallback_${config_index}=
|
||||
done
|
||||
# Terminate the list
|
||||
eval fallback_${config_index}=
|
||||
|
||||
# Don't set to zero, so any net modules don't have to do anything extra
|
||||
config_index=-1
|
||||
config_index=-1
|
||||
}
|
||||
|
||||
start() {
|
||||
local IFACE=${SVCNAME#*.} oneworked=false module=
|
||||
local IFVAR=$(_shell_var "${IFACE}") cmd= metric=0 our_metric=$metric
|
||||
local IFACE=${SVCNAME#*.} oneworked=false module=
|
||||
local IFVAR=$(_shell_var "${IFACE}") cmd= metric=0 our_metric=$metric
|
||||
|
||||
einfo "Bringing up interface ${IFACE}"
|
||||
eindent
|
||||
einfo "Bringing up interface ${IFACE}"
|
||||
eindent
|
||||
|
||||
if [ -z "${MODULES}" ] ; then
|
||||
if [ -z "${MODULES}" ] ; then
|
||||
local MODULES=
|
||||
_load_modules true
|
||||
fi
|
||||
fi
|
||||
|
||||
_up 2>/dev/null
|
||||
_up 2>/dev/null
|
||||
|
||||
if type preup >/dev/null 2>/dev/null ; then
|
||||
if type preup >/dev/null 2>/dev/null ; then
|
||||
ebegin "Running preup"
|
||||
eindent
|
||||
preup || return 1
|
||||
eoutdent
|
||||
fi
|
||||
fi
|
||||
|
||||
for module in ${MODULES} ; do
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_pre_start" >/dev/null 2>/dev/null ; then
|
||||
if ! ${module}_pre_start ; then
|
||||
if ! ${module}_pre_start ; then
|
||||
eend 1
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if ! _exists ; then
|
||||
eerror "ERROR: interface ${IFACE} does not exist"
|
||||
@ -413,17 +413,17 @@ start() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
local config= config_index=
|
||||
_load_config
|
||||
local config= config_index=
|
||||
_load_config
|
||||
config_index=0
|
||||
|
||||
if [ -n "${our_metric}" ] ; then
|
||||
if [ -n "${our_metric}" ] ; then
|
||||
metric=${our_metric}
|
||||
elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ] ; then
|
||||
elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ] ; then
|
||||
metric=$((${metric} + $(_ifindex)))
|
||||
fi
|
||||
fi
|
||||
|
||||
while true ; do
|
||||
while true ; do
|
||||
eval config=\$config_${config_index}
|
||||
[ -z "${config}" ] && break
|
||||
|
||||
@ -431,160 +431,160 @@ start() {
|
||||
ebegin "$1"
|
||||
eindent
|
||||
case "$1" in
|
||||
noop)
|
||||
if [ -n "$(_get_inet_address)" ] ; then
|
||||
noop)
|
||||
if [ -n "$(_get_inet_address)" ] ; then
|
||||
oneworked=true
|
||||
break
|
||||
fi
|
||||
;;
|
||||
null) : ;;
|
||||
[0-9]*|*:*) _add_address ${config} ;;
|
||||
*)
|
||||
if type "${config}_start" >/dev/null 2>/dev/null ; then
|
||||
fi
|
||||
;;
|
||||
null) : ;;
|
||||
[0-9]*|*:*) _add_address ${config} ;;
|
||||
*)
|
||||
if type "${config}_start" >/dev/null 2>/dev/null ; then
|
||||
"${config}"_start
|
||||
else
|
||||
else
|
||||
eerror "nothing provides \`${config}'"
|
||||
fi
|
||||
;;
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if eend $? ; then
|
||||
oneworked=true
|
||||
oneworked=true
|
||||
else
|
||||
eval config=\$fallback_${IFVAR}
|
||||
if [ -n "${config}" ] ; then
|
||||
eval config=\$fallback_${IFVAR}
|
||||
if [ -n "${config}" ] ; then
|
||||
einfo "Trying fallback configuration"
|
||||
eval config_${config_index}=\$fallback_${IFVAR}
|
||||
eval fallback_${config_index}=
|
||||
config_index=$((${config_index} - 1))
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
eoutdent
|
||||
config_index=$((${config_index} + 1))
|
||||
done
|
||||
done
|
||||
|
||||
if ! ${oneworked} ; then
|
||||
if type failup >/dev/null 2>/dev/null ; then
|
||||
if type failup >/dev/null 2>/dev/null ; then
|
||||
ebegin "Running failup"
|
||||
eindent
|
||||
failup
|
||||
eoutdent
|
||||
fi
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
|
||||
local hidefirstroute=false first=true routes=
|
||||
eval "$(_get_array "routes_${IFVAR}")"
|
||||
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
|
||||
local hidefirstroute=false first=true routes=
|
||||
eval "$(_get_array "routes_${IFVAR}")"
|
||||
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
|
||||
set -- "127.0.0.0/8 via 127.0.0.1" "$@"
|
||||
hidefirstroute=true
|
||||
fi
|
||||
for cmd in "$@" ; do
|
||||
fi
|
||||
for cmd in "$@" ; do
|
||||
if ${first} ; then
|
||||
first=false
|
||||
einfo "Adding routes"
|
||||
first=false
|
||||
einfo "Adding routes"
|
||||
fi
|
||||
eindent
|
||||
ebegin "${cmd}"
|
||||
# Work out if we're a host or a net if not told
|
||||
case "${cmd}" in
|
||||
*" -net "*|*" -host "*) ;;
|
||||
*" netmask "*) cmd="-net ${cmd}" ;;
|
||||
*)
|
||||
case "${cmd%% *}" in
|
||||
*" -net "*|*" -host "*) ;;
|
||||
*" netmask "*) cmd="-net ${cmd}" ;;
|
||||
*)
|
||||
case "${cmd%% *}" in
|
||||
*.*.*.*/32) cmd="-host ${cmd}" ;;
|
||||
*.*.*.*/*|0.0.0.0|default) cmd="-net ${cmd}" ;;
|
||||
*) cmd="-host ${cmd}" ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
if ${hidefirstroute} ; then
|
||||
_add_route ${cmd} >/dev/null 2>/dev/null
|
||||
hidefirstroute=false
|
||||
_add_route ${cmd} >/dev/null 2>/dev/null
|
||||
hidefirstroute=false
|
||||
else
|
||||
_add_route ${cmd} >/dev/null
|
||||
_add_route ${cmd} >/dev/null
|
||||
fi
|
||||
eend $?
|
||||
eoutdent
|
||||
done
|
||||
done
|
||||
|
||||
for module in ${MODULES} ; do
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_post_start" >/dev/null 2>/dev/null ; then
|
||||
if ! ${module}_post_start ; then
|
||||
eend 1
|
||||
exit 1
|
||||
fi
|
||||
if ! ${module}_post_start ; then
|
||||
eend 1
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if type postup >/dev/null 2>/dev/null ; then
|
||||
if type postup >/dev/null 2>/dev/null ; then
|
||||
ebegin "Running postup"
|
||||
eindent
|
||||
postup
|
||||
eoutdent
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
return 0
|
||||
}
|
||||
|
||||
stop() {
|
||||
local IFACE=${SVCNAME#*.} module=
|
||||
local IFVAR=$(_shell_var "${IFACE}") opts=
|
||||
local IFACE=${SVCNAME#*.} module=
|
||||
local IFVAR=$(_shell_var "${IFACE}") opts=
|
||||
|
||||
einfo "Bringing down interface ${IFACE}"
|
||||
eindent
|
||||
einfo "Bringing down interface ${IFACE}"
|
||||
eindent
|
||||
|
||||
if [ -z "${MODULES}" ] ; then
|
||||
if [ -z "${MODULES}" ] ; then
|
||||
local MODULES=
|
||||
_load_modules false
|
||||
fi
|
||||
fi
|
||||
|
||||
if type predown >/dev/null 2>/dev/null ; then
|
||||
if type predown >/dev/null 2>/dev/null ; then
|
||||
ebegin "Running predown"
|
||||
eindent
|
||||
predown || return 1
|
||||
eoutdent
|
||||
fi
|
||||
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_pre_stop" >/dev/null 2>/dev/null ; then
|
||||
if ! ${module}_pre_stop ; then
|
||||
eend 1
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_stop" >/dev/null 2>/dev/null ; then
|
||||
${module}_stop
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_pre_stop" >/dev/null 2>/dev/null ; then
|
||||
if ! ${module}_pre_stop ; then
|
||||
eend 1
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_stop" >/dev/null 2>/dev/null ; then
|
||||
${module}_stop
|
||||
fi
|
||||
done
|
||||
|
||||
# Only delete addresses for non PPP interfaces
|
||||
if ! type is_ppp >/dev/null 2>/dev/null || ! is_ppp ; then
|
||||
_delete_addresses "${IFACE}"
|
||||
fi
|
||||
|
||||
for module in ${MODULES} ; do
|
||||
for module in ${MODULES} ; do
|
||||
if type "${module}_post_stop" >/dev/null 2>/dev/null ; then
|
||||
${module}_post_stop
|
||||
${module}_post_stop
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
[ "${IN_BACKGROUND}" != "true" ] && \
|
||||
[ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ] && \
|
||||
_down 2>/dev/null
|
||||
[ "${IN_BACKGROUND}" != "true" ] && \
|
||||
[ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ] && \
|
||||
_down 2>/dev/null
|
||||
|
||||
[ -x /sbin/resolvconf ] && resolvconf -d "${IFACE}"
|
||||
[ -x /sbin/resolvconf ] && resolvconf -d "${IFACE}"
|
||||
|
||||
if type postdown >/dev/null 2>/dev/null ; then
|
||||
if type postdown >/dev/null 2>/dev/null ; then
|
||||
ebegin "Running postdown"
|
||||
eindent
|
||||
postdown
|
||||
eoutdent
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
return 0
|
||||
}
|
||||
|
||||
# vim: set ts=4 :
|
||||
# vim: set ts=4 sw=4 :
|
||||
|
Loading…
Reference in New Issue
Block a user