From: Jonatan Schlag <jonatan.schlag@ipfire.org>
To: development@lists.ipfire.org
Subject: [Patch RFC 10/15] network startup: Refactor how cmd args are processed
Date: Tue, 23 May 2023 19:23:10 +0200 [thread overview]
Message-ID: <20230523172314.7826-11-jonatan.schlag@ipfire.org> (raw)
In-Reply-To: <20230523172314.7826-1-jonatan.schlag@ipfire.org>
[-- Attachment #1: Type: text/plain, Size: 2992 bytes --]
This avoids eval and all other sorts of things. We also now exit when we
get an invalid zone name.
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/initscripts/system/network | 52 ++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 21 deletions(-)
diff --git a/src/initscripts/system/network b/src/initscripts/system/network
index 06240f53c..008fbbe2b 100644
--- a/src/initscripts/system/network
+++ b/src/initscripts/system/network
@@ -31,41 +31,51 @@ if ! [[ "${DO}" == "start" || "${DO}" == "restart" || "${DO}" == "stop" ]]; the
exit 1
fi
-if [ -n "${1}" ]; then
- ALL=0
- for i in green red blue orange; do
- eval "${i}=0"
- done
-else
- ALL=1
- for i in green red blue orange; do
- eval "${i}=1"
- done
+declare -A ZONE_ACTION
+
+ZONE_ACTION[blue]=false
+ZONE_ACTION[green]=false
+ZONE_ACTION[orange]=false
+ZONE_ACTION[red]=false
+
+if [ $# -eq 0 ]; then
+ ZONE_ACTION[blue]=true
+ ZONE_ACTION[green]=true
+ ZONE_ACTION[orange]=true
+ ZONE_ACTION[red]=true
fi
-while [ ! $# = 0 ]; do
+while [ $# -ne 0 ]; do
+ ZONE_VALID=false
for i in green red blue orange; do
if [ "${i}" == "${1}" ]; then
- eval "${i}=1"
+ ZONE_ACTION[${i}]=true
+ ZONE_VALID=true
shift
+ break
fi
done
+
+ if ! ${ZONE_VALID}; then
+ echo "'${1}' is not a valid zone. Cannot go on."
+ exit 1
+ fi
done
case "${DO}" in
start)
# Starting interfaces...
# GREEN
- [ "$green" == "1" ] && /etc/rc.d/init.d/networking/green start
+ ${ZONE_ACTION[green]} && /etc/rc.d/init.d/networking/green start
# BLUE
- [ "$blue" == "1" ] && /etc/rc.d/init.d/networking/blue start
+ ${ZONE_ACTION[blue]} && /etc/rc.d/init.d/networking/blue start
# ORANGE
- [ "$orange" == "1" ] && /etc/rc.d/init.d/networking/orange start
+ ${ZONE_ACTION[orange]} && /etc/rc.d/init.d/networking/orange start
# RED
- [ "$red" == "1" ] && /etc/rc.d/init.d/networking/red start
+ ${ZONE_ACTION[red]} && /etc/rc.d/init.d/networking/red start
boot_mesg "Mounting network file systems..."
mount -a -O _netdev
@@ -79,16 +89,16 @@ case "${DO}" in
# Stopping interfaces...
# GREEN
- [ "$green" == "1" ] && /etc/rc.d/init.d/networking/green stop
+ ${ZONE_ACTION[green]} && /etc/rc.d/init.d/networking/green stop
# BLUE
- [ "$blue" == "1" ] && /etc/rc.d/init.d/networking/blue stop
+ ${ZONE_ACTION[blue]} && /etc/rc.d/init.d/networking/blue stop
# ORANGE
- [ "$orange" == "1" ] && /etc/rc.d/init.d/networking/orange stop
+ ${ZONE_ACTION[orange]} && /etc/rc.d/init.d/networking/orange stop
# RED
- if [ "$red" == "1" ]; then
+ if ${ZONE_ACTION[red]}; then
/etc/rc.d/init.d/networking/red stop
fi
@@ -97,7 +107,7 @@ case "${DO}" in
restart)
for i in green red blue orange; do
- if [ "${!i}" == "1" ]; then
+ if {ZONE_ACTION[${i}]}; then
ARGS+=" ${i}"
fi
done
--
2.30.2
next prev parent reply other threads:[~2023-05-23 17:23 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-23 17:23 Start local and uplink network independent Jonatan Schlag
2023-05-23 17:23 ` [Patch RFC 01/15] Remove ipsec interface creation from network startup Jonatan Schlag
2023-05-24 8:59 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 02/15] Remove Start/Stop links for client175 Jonatan Schlag
2023-05-23 17:23 ` [Patch RFC 03/15] Use bash as shebang in network initscripts Jonatan Schlag
2023-05-24 8:59 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 04/15] network initscripts: check if the zone in the current config exists Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-08-18 12:55 ` Jonatan Schlag
2023-08-21 9:40 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 05/15] network initscripts: Remove code for old zone scheme Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 06/15] network scripts: remove check for AUTOCONNECT Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 07/15] network startup: Reload routing informations for every interface Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 08/15] network startup: Always cleanup before red gets started Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 09/15] network startup: check for correct action at start Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-08-18 10:23 ` Jonatan Schlag
2023-05-23 17:23 ` Jonatan Schlag [this message]
2023-05-24 9:00 ` [Patch RFC 10/15] network startup: Refactor how cmd args are processed Michael Tremer
2023-05-23 17:23 ` [Patch RFC 11/15] network startup: Clean up duplicated Code Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 12/15] network script: add extra scripts for action that depend on a network Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 13/15] network startup: Add scripts for local and uplink Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 14/15] network startup: Start local and uplink network independent Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-23 17:23 ` [Patch RFC 15/15] network startup: Only work with configured zones Jonatan Schlag
2023-05-24 9:00 ` Michael Tremer
2023-05-24 8:59 ` Start local and uplink network independent Michael Tremer
2023-08-18 10:30 ` Jonatan Schlag
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230523172314.7826-11-jonatan.schlag@ipfire.org \
--to=jonatan.schlag@ipfire.org \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox