Network config arrays are now split by embedded new lines instead of being evaled into space separated values. This makes it easier to read, maintain and document as discussed on gentoo-dev.

This commit is contained in:
Roy Marples
2007-10-29 09:45:49 +00:00
parent 42c231d760
commit e372729b8c
14 changed files with 260 additions and 187 deletions

View File

@@ -40,20 +40,24 @@ _shell_var() {
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.
# Support bash arrays - sigh
_get_array() {
local _a=
if [ -n "${BASH}" ] ; then
case "$(declare -p "$1" 2>/dev/null)" in
"declare -a "*)
echo "set -- \"\${$1[@]}\""
return
eval "set -- \"\${$1[@]}\""
for _a in "$@"; do
printf "%s\n" "${_a}"
done
return 0
;;
esac
fi
echo "eval set -- \"\$$1\""
eval _a=\$$1
printf "%s" "${_a}"
[ -n "${_a}" ]
}
_wait_for_carrier() {
@@ -339,20 +343,25 @@ _load_modules() {
}
_load_config() {
eval "$(_get_array "config_${IFVAR}")"
local config="$(_get_array "config_${IFVAR}")"
local fallback="$(_get_array fallback_${IFVAR})"
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
set -- "127.0.0.1/8" "$@"
config="127.0.0.1/8
${config}"
else
if [ $# -eq 0 ] ; then
if [ -z "${config}" ] ; then
ewarn "No configuration specified; defaulting to DHCP"
set -- "dhcp"
config="dhcp"
fi
fi
# We store our config in an array like vars
# so modules can influence it
config_index=0
for cmd in "$@" ; do
local IFS="
"
for cmd in ${config}; do
eval config_${config_index}="'${cmd}'"
config_index=$((${config_index} + 1))
done
@@ -360,8 +369,7 @@ _load_config() {
eval config_${config_index}=
config_index=0
eval "$(_get_array fallback_${IFVAR})"
for cmd in "$@" ; do
for cmd in ${fallback}; do
eval fallback_${config_index}="'${cmd}'"
config_index=$((${config_index} + 1))
done
@@ -483,14 +491,18 @@ start() {
return 1
fi
local hidefirstroute=false first=true routes=
eval "$(_get_array "routes_${IFVAR}")"
local hidefirstroute=false first=true
local routes="$(_get_array "routes_${IFVAR}")"
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
set -- "127.0.0.0/8 via 127.0.0.1" "$@"
routes="127.0.0.0/8 via 127.0.0.1
${routes}"
hidefirstroute=true
fi
for cmd in "$@" ; do
if ${first} ; then
local IFS="
"
for cmd in ${routes}; do
unset IFS
if ${first}; then
first=false
einfo "Adding routes"
fi