[RFC,12/15] network script: add extra scripts for action that depend on a network
Commit Message
This allows us to split the network startup further up into seperate
scripts. The mount of the network filesystems is now done after the
startup of the network, but can be delayed further when the network is
started through seperate scripts.
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
config/rootfiles/common/aarch64/initscripts | 4 +++
config/rootfiles/common/riscv64/initscripts | 4 +++
config/rootfiles/common/x86_64/initscripts | 4 +++
lfs/initscripts | 3 ++
src/initscripts/system/depends-on-network | 40 +++++++++++++++++++++
src/initscripts/system/network | 8 -----
6 files changed, 55 insertions(+), 8 deletions(-)
create mode 100644 src/initscripts/system/depends-on-network
Comments
Why is this script breaking with the “one script, one task” philosophy of sysvinit?
It should just be called “mountnetfs” and be called just with the right priority.
> On 23 May 2023, at 18:23, Jonatan Schlag <jonatan.schlag@ipfire.org> wrote:
>
> This allows us to split the network startup further up into seperate
> scripts. The mount of the network filesystems is now done after the
> startup of the network, but can be delayed further when the network is
> started through seperate scripts.
>
> Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
> ---
> config/rootfiles/common/aarch64/initscripts | 4 +++
> config/rootfiles/common/riscv64/initscripts | 4 +++
> config/rootfiles/common/x86_64/initscripts | 4 +++
> lfs/initscripts | 3 ++
> src/initscripts/system/depends-on-network | 40 +++++++++++++++++++++
> src/initscripts/system/network | 8 -----
> 6 files changed, 55 insertions(+), 8 deletions(-)
> create mode 100644 src/initscripts/system/depends-on-network
>
> diff --git a/config/rootfiles/common/aarch64/initscripts b/config/rootfiles/common/aarch64/initscripts
> index d9f80e6b2..506f616e6 100644
> --- a/config/rootfiles/common/aarch64/initscripts
> +++ b/config/rootfiles/common/aarch64/initscripts
> @@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
> etc/rc.d/init.d/connectd
> etc/rc.d/init.d/conntrackd
> etc/rc.d/init.d/console
> +etc/rc.d/init.d/depends-on-network
> etc/rc.d/init.d/dhcp
> etc/rc.d/init.d/dhcrelay
> etc/rc.d/init.d/fcron
> @@ -105,6 +106,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
> etc/rc.d/rc0.d/K51vnstat
> etc/rc.d/rc0.d/K77conntrackd
> etc/rc.d/rc0.d/K78suricata
> +etc/rc.d/rc0.d/K79depends-on-network
> etc/rc.d/rc0.d/K79leds
> etc/rc.d/rc0.d/K80network
> etc/rc.d/rc0.d/K82wlanclient
> @@ -128,6 +130,7 @@ etc/rc.d/rc3.d/S15fireinfo
> etc/rc.d/rc3.d/S19smartenabler
> etc/rc.d/rc3.d/S19wlanclient
> etc/rc.d/rc3.d/S20network
> +etc/rc.d/rc3.d/S21depends-on-network
> etc/rc.d/rc3.d/S21leds
> etc/rc.d/rc3.d/S22conntrackd
> etc/rc.d/rc3.d/S24cyrus-sasl
> @@ -154,6 +157,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
> etc/rc.d/rc6.d/K51vnstat
> etc/rc.d/rc6.d/K77conntrackd
> etc/rc.d/rc6.d/K78suricata
> +etc/rc.d/rc6.d/K79depends-on-network
> etc/rc.d/rc6.d/K79leds
> etc/rc.d/rc6.d/K80network
> etc/rc.d/rc6.d/K82wlanclient
> diff --git a/config/rootfiles/common/riscv64/initscripts b/config/rootfiles/common/riscv64/initscripts
> index a4865aa29..e834cbfc3 100644
> --- a/config/rootfiles/common/riscv64/initscripts
> +++ b/config/rootfiles/common/riscv64/initscripts
> @@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
> etc/rc.d/init.d/connectd
> etc/rc.d/init.d/conntrackd
> etc/rc.d/init.d/console
> +etc/rc.d/init.d/depends-on-network
> etc/rc.d/init.d/dhcp
> etc/rc.d/init.d/dhcrelay
> etc/rc.d/init.d/fcron
> @@ -104,6 +105,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
> etc/rc.d/rc0.d/K51vnstat
> etc/rc.d/rc0.d/K77conntrackd
> etc/rc.d/rc0.d/K78suricata
> +etc/rc.d/rc0.d/K79depends-on-network
> etc/rc.d/rc0.d/K79leds
> etc/rc.d/rc0.d/K80network
> etc/rc.d/rc0.d/K82wlanclient
> @@ -127,6 +129,7 @@ etc/rc.d/rc3.d/S15fireinfo
> etc/rc.d/rc3.d/S19smartenabler
> etc/rc.d/rc3.d/S19wlanclient
> etc/rc.d/rc3.d/S20network
> +etc/rc.d/rc3.d/S21depends-on-network
> etc/rc.d/rc3.d/S21leds
> etc/rc.d/rc3.d/S22conntrackd
> etc/rc.d/rc3.d/S24cyrus-sasl
> @@ -153,6 +156,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
> etc/rc.d/rc6.d/K51vnstat
> etc/rc.d/rc6.d/K77conntrackd
> etc/rc.d/rc6.d/K78suricata
> +etc/rc.d/rc6.d/K79depends-on-network
> etc/rc.d/rc6.d/K79leds
> etc/rc.d/rc6.d/K80network
> etc/rc.d/rc6.d/K82wlanclient
> diff --git a/config/rootfiles/common/x86_64/initscripts b/config/rootfiles/common/x86_64/initscripts
> index a4865aa29..e834cbfc3 100644
> --- a/config/rootfiles/common/x86_64/initscripts
> +++ b/config/rootfiles/common/x86_64/initscripts
> @@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
> etc/rc.d/init.d/connectd
> etc/rc.d/init.d/conntrackd
> etc/rc.d/init.d/console
> +etc/rc.d/init.d/depends-on-network
> etc/rc.d/init.d/dhcp
> etc/rc.d/init.d/dhcrelay
> etc/rc.d/init.d/fcron
> @@ -104,6 +105,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
> etc/rc.d/rc0.d/K51vnstat
> etc/rc.d/rc0.d/K77conntrackd
> etc/rc.d/rc0.d/K78suricata
> +etc/rc.d/rc0.d/K79depends-on-network
> etc/rc.d/rc0.d/K79leds
> etc/rc.d/rc0.d/K80network
> etc/rc.d/rc0.d/K82wlanclient
> @@ -127,6 +129,7 @@ etc/rc.d/rc3.d/S15fireinfo
> etc/rc.d/rc3.d/S19smartenabler
> etc/rc.d/rc3.d/S19wlanclient
> etc/rc.d/rc3.d/S20network
> +etc/rc.d/rc3.d/S21depends-on-network
> etc/rc.d/rc3.d/S21leds
> etc/rc.d/rc3.d/S22conntrackd
> etc/rc.d/rc3.d/S24cyrus-sasl
> @@ -153,6 +156,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
> etc/rc.d/rc6.d/K51vnstat
> etc/rc.d/rc6.d/K77conntrackd
> etc/rc.d/rc6.d/K78suricata
> +etc/rc.d/rc6.d/K79depends-on-network
> etc/rc.d/rc6.d/K79leds
> etc/rc.d/rc6.d/K80network
> etc/rc.d/rc6.d/K82wlanclient
> diff --git a/lfs/initscripts b/lfs/initscripts
> index e078632ab..263292da9 100644
> --- a/lfs/initscripts
> +++ b/lfs/initscripts
> @@ -103,6 +103,7 @@ $(TARGET) :
> ln -sf ../init.d/vnstat /etc/rc.d/rc0.d/K51vnstat
> ln -sf ../init.d/conntrackd /etc/rc.d/rc0.d/K77conntrackd
> ln -sf ../init.d/suricata /etc/rc.d/rc0.d/K78suricata
> + ln -sf ../init.d/depends-on-network /etc/rc.d/rc0.d/K79depends-on-network
> ln -sf ../init.d/leds /etc/rc.d/rc0.d/K79leds
> ln -sf ../init.d/network /etc/rc.d/rc0.d/K80network
> ln -sf ../init.d/wlanclient /etc/rc.d/rc0.d/K82wlanclient
> @@ -124,6 +125,7 @@ $(TARGET) :
> ln -sf ../init.d/smartenabler /etc/rc.d/rc3.d/S19smartenabler
> ln -sf ../init.d/wlanclient /etc/rc.d/rc3.d/S19wlanclient
> ln -sf ../init.d/network /etc/rc.d/rc3.d/S20network
> + ln -sf ../init.d/depends-on-network /etc/rc.d/rc3.d/S21depends-on-network
> ln -sf ../init.d/leds /etc/rc.d/rc3.d/S21leds
> ln -sf ../init.d/conntrackd /etc/rc.d/rc3.d/S22conntrackd
> ln -sf ../init.d/cyrus-sasl /etc/rc.d/rc3.d/S24cyrus-sasl
> @@ -148,6 +150,7 @@ $(TARGET) :
> ln -sf ../init.d/vnstat /etc/rc.d/rc6.d/K51vnstat
> ln -sf ../init.d/conntrackd /etc/rc.d/rc6.d/K77conntrackd
> ln -sf ../init.d/suricata /etc/rc.d/rc6.d/K78suricata
> + ln -sf ../init.d/depends-on-network /etc/rc.d/rc6.d/K79depends-on-network
> ln -sf ../init.d/leds /etc/rc.d/rc6.d/K79leds
> ln -sf ../init.d/network /etc/rc.d/rc6.d/K80network
> ln -sf ../init.d/wlanclient /etc/rc.d/rc6.d/K82wlanclient
> diff --git a/src/initscripts/system/depends-on-network b/src/initscripts/system/depends-on-network
> new file mode 100644
> index 000000000..777a2dbd1
> --- /dev/null
> +++ b/src/initscripts/system/depends-on-network
> @@ -0,0 +1,40 @@
> +#!/bin/bash
> +########################################################################
> +# Begin $rc_base/init.d/depends-on-network
> +#
> +# Description : Script to execute actions after complete network startup
> +#
> +# Notes : Written for IPFire by its team
> +#
> +########################################################################
> +
> +. /etc/sysconfig/rc
> +. ${rc_functions}
> +
> +DO="${1}"
> +shift
> +
> +case "${DO}" in
> + start)
> + boot_mesg "Mounting network file systems..."
> + mount -a -O _netdev
> + evaluate_retval
> + ;;
> +
> + stop)
> + boot_mesg "Umounting network file systems..."
> + umount -a -O _netdev
> + evaluate_retval
> + ;;
> + restart)
> + ${0} stop
> + sleep 1
> + ${0} start
> + ;;
> + *)
> + echo "Usage: $0 {start|stop|restart}"
> + exit 1
> + ;;
> +esac
> +
> +# End /etc/rc.d/init.d/depends-on-network
> diff --git a/src/initscripts/system/network b/src/initscripts/system/network
> index 0db64eaad..e3fe47597 100644
> --- a/src/initscripts/system/network
> +++ b/src/initscripts/system/network
> @@ -75,17 +75,9 @@ case "${DO}" in
> for i in "${VALID_ZONES[@]}"; do
> ${ZONE_ACTION[${i}]} && /etc/rc.d/init.d/networking/${i} start
> done
> -
> - boot_mesg "Mounting network file systems..."
> - mount -a -O _netdev
> - evaluate_retval
> ;;
>
> stop)
> - boot_mesg "Umounting network file systems..."
> - umount -a -O _netdev
> - evaluate_retval
> -
> # Stopping interfaces...
> for i in "${VALID_ZONES[@]}"; do
> ${ZONE_ACTION[${i}]} && /etc/rc.d/init.d/networking/${i} stop
> --
> 2.30.2
>
@@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
etc/rc.d/init.d/connectd
etc/rc.d/init.d/conntrackd
etc/rc.d/init.d/console
+etc/rc.d/init.d/depends-on-network
etc/rc.d/init.d/dhcp
etc/rc.d/init.d/dhcrelay
etc/rc.d/init.d/fcron
@@ -105,6 +106,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
etc/rc.d/rc0.d/K51vnstat
etc/rc.d/rc0.d/K77conntrackd
etc/rc.d/rc0.d/K78suricata
+etc/rc.d/rc0.d/K79depends-on-network
etc/rc.d/rc0.d/K79leds
etc/rc.d/rc0.d/K80network
etc/rc.d/rc0.d/K82wlanclient
@@ -128,6 +130,7 @@ etc/rc.d/rc3.d/S15fireinfo
etc/rc.d/rc3.d/S19smartenabler
etc/rc.d/rc3.d/S19wlanclient
etc/rc.d/rc3.d/S20network
+etc/rc.d/rc3.d/S21depends-on-network
etc/rc.d/rc3.d/S21leds
etc/rc.d/rc3.d/S22conntrackd
etc/rc.d/rc3.d/S24cyrus-sasl
@@ -154,6 +157,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
etc/rc.d/rc6.d/K51vnstat
etc/rc.d/rc6.d/K77conntrackd
etc/rc.d/rc6.d/K78suricata
+etc/rc.d/rc6.d/K79depends-on-network
etc/rc.d/rc6.d/K79leds
etc/rc.d/rc6.d/K80network
etc/rc.d/rc6.d/K82wlanclient
@@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
etc/rc.d/init.d/connectd
etc/rc.d/init.d/conntrackd
etc/rc.d/init.d/console
+etc/rc.d/init.d/depends-on-network
etc/rc.d/init.d/dhcp
etc/rc.d/init.d/dhcrelay
etc/rc.d/init.d/fcron
@@ -104,6 +105,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
etc/rc.d/rc0.d/K51vnstat
etc/rc.d/rc0.d/K77conntrackd
etc/rc.d/rc0.d/K78suricata
+etc/rc.d/rc0.d/K79depends-on-network
etc/rc.d/rc0.d/K79leds
etc/rc.d/rc0.d/K80network
etc/rc.d/rc0.d/K82wlanclient
@@ -127,6 +129,7 @@ etc/rc.d/rc3.d/S15fireinfo
etc/rc.d/rc3.d/S19smartenabler
etc/rc.d/rc3.d/S19wlanclient
etc/rc.d/rc3.d/S20network
+etc/rc.d/rc3.d/S21depends-on-network
etc/rc.d/rc3.d/S21leds
etc/rc.d/rc3.d/S22conntrackd
etc/rc.d/rc3.d/S24cyrus-sasl
@@ -153,6 +156,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
etc/rc.d/rc6.d/K51vnstat
etc/rc.d/rc6.d/K77conntrackd
etc/rc.d/rc6.d/K78suricata
+etc/rc.d/rc6.d/K79depends-on-network
etc/rc.d/rc6.d/K79leds
etc/rc.d/rc6.d/K80network
etc/rc.d/rc6.d/K82wlanclient
@@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
etc/rc.d/init.d/connectd
etc/rc.d/init.d/conntrackd
etc/rc.d/init.d/console
+etc/rc.d/init.d/depends-on-network
etc/rc.d/init.d/dhcp
etc/rc.d/init.d/dhcrelay
etc/rc.d/init.d/fcron
@@ -104,6 +105,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
etc/rc.d/rc0.d/K51vnstat
etc/rc.d/rc0.d/K77conntrackd
etc/rc.d/rc0.d/K78suricata
+etc/rc.d/rc0.d/K79depends-on-network
etc/rc.d/rc0.d/K79leds
etc/rc.d/rc0.d/K80network
etc/rc.d/rc0.d/K82wlanclient
@@ -127,6 +129,7 @@ etc/rc.d/rc3.d/S15fireinfo
etc/rc.d/rc3.d/S19smartenabler
etc/rc.d/rc3.d/S19wlanclient
etc/rc.d/rc3.d/S20network
+etc/rc.d/rc3.d/S21depends-on-network
etc/rc.d/rc3.d/S21leds
etc/rc.d/rc3.d/S22conntrackd
etc/rc.d/rc3.d/S24cyrus-sasl
@@ -153,6 +156,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
etc/rc.d/rc6.d/K51vnstat
etc/rc.d/rc6.d/K77conntrackd
etc/rc.d/rc6.d/K78suricata
+etc/rc.d/rc6.d/K79depends-on-network
etc/rc.d/rc6.d/K79leds
etc/rc.d/rc6.d/K80network
etc/rc.d/rc6.d/K82wlanclient
@@ -103,6 +103,7 @@ $(TARGET) :
ln -sf ../init.d/vnstat /etc/rc.d/rc0.d/K51vnstat
ln -sf ../init.d/conntrackd /etc/rc.d/rc0.d/K77conntrackd
ln -sf ../init.d/suricata /etc/rc.d/rc0.d/K78suricata
+ ln -sf ../init.d/depends-on-network /etc/rc.d/rc0.d/K79depends-on-network
ln -sf ../init.d/leds /etc/rc.d/rc0.d/K79leds
ln -sf ../init.d/network /etc/rc.d/rc0.d/K80network
ln -sf ../init.d/wlanclient /etc/rc.d/rc0.d/K82wlanclient
@@ -124,6 +125,7 @@ $(TARGET) :
ln -sf ../init.d/smartenabler /etc/rc.d/rc3.d/S19smartenabler
ln -sf ../init.d/wlanclient /etc/rc.d/rc3.d/S19wlanclient
ln -sf ../init.d/network /etc/rc.d/rc3.d/S20network
+ ln -sf ../init.d/depends-on-network /etc/rc.d/rc3.d/S21depends-on-network
ln -sf ../init.d/leds /etc/rc.d/rc3.d/S21leds
ln -sf ../init.d/conntrackd /etc/rc.d/rc3.d/S22conntrackd
ln -sf ../init.d/cyrus-sasl /etc/rc.d/rc3.d/S24cyrus-sasl
@@ -148,6 +150,7 @@ $(TARGET) :
ln -sf ../init.d/vnstat /etc/rc.d/rc6.d/K51vnstat
ln -sf ../init.d/conntrackd /etc/rc.d/rc6.d/K77conntrackd
ln -sf ../init.d/suricata /etc/rc.d/rc6.d/K78suricata
+ ln -sf ../init.d/depends-on-network /etc/rc.d/rc6.d/K79depends-on-network
ln -sf ../init.d/leds /etc/rc.d/rc6.d/K79leds
ln -sf ../init.d/network /etc/rc.d/rc6.d/K80network
ln -sf ../init.d/wlanclient /etc/rc.d/rc6.d/K82wlanclient
new file mode 100644
@@ -0,0 +1,40 @@
+#!/bin/bash
+########################################################################
+# Begin $rc_base/init.d/depends-on-network
+#
+# Description : Script to execute actions after complete network startup
+#
+# Notes : Written for IPFire by its team
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+DO="${1}"
+shift
+
+case "${DO}" in
+ start)
+ boot_mesg "Mounting network file systems..."
+ mount -a -O _netdev
+ evaluate_retval
+ ;;
+
+ stop)
+ boot_mesg "Umounting network file systems..."
+ umount -a -O _netdev
+ evaluate_retval
+ ;;
+ restart)
+ ${0} stop
+ sleep 1
+ ${0} start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+ ;;
+esac
+
+# End /etc/rc.d/init.d/depends-on-network
@@ -75,17 +75,9 @@ case "${DO}" in
for i in "${VALID_ZONES[@]}"; do
${ZONE_ACTION[${i}]} && /etc/rc.d/init.d/networking/${i} start
done
-
- boot_mesg "Mounting network file systems..."
- mount -a -O _netdev
- evaluate_retval
;;
stop)
- boot_mesg "Umounting network file systems..."
- umount -a -O _netdev
- evaluate_retval
-
# Stopping interfaces...
for i in "${VALID_ZONES[@]}"; do
${ZONE_ACTION[${i}]} && /etc/rc.d/init.d/networking/${i} stop