Otherwise the called script fails with an failure message. This does not hurt but is ugly. I also changed my mind about the wording here. Because we only have four possible zones we could talk about valid zones. But I think it is easier and more future proof to talk about what is configured on the system.
Should make further changes easier.
Signed-off-by: Jonatan Schlag jonatan.schlag@ipfire.org --- src/initscripts/system/network | 37 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/src/initscripts/system/network b/src/initscripts/system/network index ff305e472..abbd5bd88 100644 --- a/src/initscripts/system/network +++ b/src/initscripts/system/network @@ -21,6 +21,8 @@
. /etc/sysconfig/rc . ${rc_functions} +. /etc/init.d/networking/functions.network + eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
DO="${1}" @@ -31,34 +33,37 @@ if ! [[ "${DO}" == "start" || "${DO}" == "restart" || "${DO}" == "stop" ]]; the exit 1 fi
-declare -a VALID_ZONES +declare -a CONFIGURED_ZONES
-VALID_ZONES+=("blue") -VALID_ZONES+=("green") -VALID_ZONES+=("orange") +for zone in blue green orange; do + if is_${zone}_used; then + CONFIGURED_ZONES+=("${zone}") + fi +done
-# If we are called as /etc/init.d/network also red is a valid zone. -# Otherwise we are called as /etc/init.d/network-local where red -# is invalid. +# If we are called as /etc/init.d/network also red is a configured zone. +# Otherwise we are called as /etc/init.d/network-local where we do +# not need to take care of red if [[ "$(basename $0)" == "network" ]]; then - VALID_ZONES+=("red") + CONFIGURED_ZONES+=("red") fi
declare -A ZONE_ACTION
-for i in "${VALID_ZONES[@]}"; do +for i in "${CONFIGURED_ZONES[@]}"; do ZONE_ACTION[${i}]=false done
if [ $# -eq 0 ]; then - for i in "${VALID_ZONES[@]}"; do - ZONE_ACTION[${i}]=true + for zone in "${CONFIGURED_ZONES[@]}"; do + ZONE_ACTION[${zone}]=true done fi
+ while [ $# -ne 0 ]; do ZONE_VALID=false - for i in "${VALID_ZONES[@]}"; do + for i in "${CONFIGURED_ZONES[@]}"; do if [ "${i}" == "${1}" ]; then ZONE_ACTION[${i}]=true ZONE_VALID=true @@ -68,7 +73,7 @@ while [ $# -ne 0 ]; do done
if ! ${ZONE_VALID}; then - echo "'${1}' is not a valid zone. Cannot go on." + echo "'${1}' is not configured on this system. Cannot go on." exit 1 fi done @@ -76,14 +81,14 @@ done case "${DO}" in start) # Starting interfaces... - for i in "${VALID_ZONES[@]}"; do + for i in "${CONFIGURED_ZONES[@]}"; do ${ZONE_ACTION[${i}]} && /etc/rc.d/init.d/networking/${i} start done ;;
stop) # Stopping interfaces... - for i in "${VALID_ZONES[@]}"; do + for i in "${CONFIGURED_ZONES[@]}"; do ${ZONE_ACTION[${i}]} && /etc/rc.d/init.d/networking/${i} stop done
@@ -91,7 +96,7 @@ case "${DO}" in ;;
restart) - for i in "${VALID_ZONES[@]}"; do + for i in "${CONFIGURED_ZONES[@]}"; do if ${ZONE_ACTION[${i}]}; then ARGS+=" ${i}" fi