From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonatan Schlag <jonatan.schlag@ipfire.org> To: development@lists.ipfire.org Subject: [Patch RFC 15/15] network startup: Only work with configured zones Date: Tue, 23 May 2023 19:23:15 +0200 Message-ID: <20230523172314.7826-16-jonatan.schlag@ipfire.org> In-Reply-To: <20230523172314.7826-1-jonatan.schlag@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2644891003374894520==" List-Id: <development.lists.ipfire.org> --===============2644891003374894520== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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(a)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 @@ =20 . /etc/sysconfig/rc . ${rc_functions} +. /etc/init.d/networking/functions.network + eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) =20 DO=3D"${1}" @@ -31,34 +33,37 @@ if ! [[ "${DO}" =3D=3D "start" || "${DO}" =3D=3D "restar= t" || "${DO}" =3D=3D "stop" ]]; the exit 1 fi =20 -declare -a VALID_ZONES +declare -a CONFIGURED_ZONES =20 -VALID_ZONES+=3D("blue") -VALID_ZONES+=3D("green") -VALID_ZONES+=3D("orange") +for zone in blue green orange; do + if is_${zone}_used; then + CONFIGURED_ZONES+=3D("${zone}") + fi +done =20 -# 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)" =3D=3D "network" ]]; then - VALID_ZONES+=3D("red") + CONFIGURED_ZONES+=3D("red") fi =20 declare -A ZONE_ACTION =20 -for i in "${VALID_ZONES[@]}"; do +for i in "${CONFIGURED_ZONES[@]}"; do ZONE_ACTION[${i}]=3Dfalse done =20 if [ $# -eq 0 ]; then - for i in "${VALID_ZONES[@]}"; do - ZONE_ACTION[${i}]=3Dtrue + for zone in "${CONFIGURED_ZONES[@]}"; do + ZONE_ACTION[${zone}]=3Dtrue done fi =20 + while [ $# -ne 0 ]; do ZONE_VALID=3Dfalse - for i in "${VALID_ZONES[@]}"; do + for i in "${CONFIGURED_ZONES[@]}"; do if [ "${i}" =3D=3D "${1}" ]; then ZONE_ACTION[${i}]=3Dtrue ZONE_VALID=3Dtrue @@ -68,7 +73,7 @@ while [ $# -ne 0 ]; do done =20 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 ;; =20 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 =20 @@ -91,7 +96,7 @@ case "${DO}" in ;; =20 restart) - for i in "${VALID_ZONES[@]}"; do + for i in "${CONFIGURED_ZONES[@]}"; do if ${ZONE_ACTION[${i}]}; then ARGS+=3D" ${i}" fi --=20 2.30.2 --===============2644891003374894520==--