[RFC,12/15] network script: add extra scripts for action that depend on a network

Message ID 20230523172314.7826-13-jonatan.schlag@ipfire.org
State Changes Requested
Headers
Series [RFC,01/15] Remove ipsec interface creation from network startup |

Commit Message

Jonatan Schlag May 23, 2023, 5:23 p.m. UTC
  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

Michael Tremer May 24, 2023, 9 a.m. UTC | #1
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
>
  

Patch

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