See my former email about how to fix this.
I believe this is the third patch in this series that touches the same code by adding/removing arrays and keeping status.
Just use the functions that you have created as it will make this all a lot easier to read and extend whenever necessary.
-Michael
On 23 May 2023, at 18:23, Jonatan Schlag jonatan.schlag@ipfire.org wrote:
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 -- 2.30.2