[PATCH] busybox: sysntpd: add trigger to reload server

Alexey Dobrovolsky dobrovolskiy.alexey at gmail.com
Sat May 29 16:39:09 PDT 2021


sysntpd server becomes unavailable if the index of the bound
interface changes. So let's add an interface trigger to reload sysntpd.

This patch also adds the ability for the sysntpd script to handle
uci interface name from configuration.

Fixes: 4da60500ebd2 ("busybox: sysntpd: option to bind server to iface")
Signed-off-by: Alexey Dobrovolsky <dobrovolskiy.alexey at gmail.com>
---
 package/utils/busybox/files/sysntpd | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/package/utils/busybox/files/sysntpd b/package/utils/busybox/files/sysntpd
index c4c311c242..e1c9e0cdca 100755
--- a/package/utils/busybox/files/sysntpd
+++ b/package/utils/busybox/files/sysntpd
@@ -56,7 +56,14 @@ start_ntpd_instance() {
 	procd_set_param command "$PROG" -n -N
 	if [ "$enable_server" = "1" ]; then
 		procd_append_param command -l
-		[ -n "$interface" ] && procd_append_param command -I $interface
+		[ -n "$interface" ] && {
+			local ifname
+
+			network_get_device ifname "$interface" || \
+				ifname="$interface"
+			procd_append_param command -I "$ifname"
+			procd_append_param netdev "$ifname"
+		}
 	fi
 	[ -x "$HOTPLUG_SCRIPT" ] && procd_append_param command -S "$HOTPLUG_SCRIPT"
 	for peer in $server; do
@@ -79,11 +86,12 @@ start_ntpd_instance() {
 }
 
 start_service() {
+	. /lib/functions/network.sh
 	validate_ntp_section ntp start_ntpd_instance
 }
 
 service_triggers() {
-	local script name use_dhcp
+	local enable_server interface name script use_dhcp
 
 	script=$(readlink -f "$initscript")
 	name=$(basename ${script:-$initscript})
@@ -106,5 +114,17 @@ service_triggers() {
 		fi
 	}
 
+	config_get enable_server ntp enable_server
+	config_get interface ntp interface
+
+	[ "$enable_server" = "1" ] && [ -n "$interface" ] && {
+		local ifname
+
+		network_get_device ifname "$interface" || \
+			ifname="$interface"
+		procd_add_interface_trigger "interface.*" "$ifname" \
+			/etc/init.d/"$name" reload
+	}
+
 	procd_add_validation validate_ntp_section
 }
-- 
2.25.1




More information about the openwrt-devel mailing list