From f62fee2ff718aa12eaa0b697bbbee75e74a08ded Mon Sep 17 00:00:00 2001 From: redgryphon <74600987+redgryphon@users.noreply.github.com> Date: Mon, 21 Mar 2022 00:40:43 +0100 Subject: [PATCH] Add support for NTP configuration via DHCP (fixes #689) (#1798) * Add support for NTP configuration via DHCP. * Default fallback NTP pool is the Cloudflare's one --- .../rootfs-overlay/etc/systemd/timesyncd.conf | 3 +- .../lib/NetworkManager/dispatcher.d/10-ntp | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 buildroot-external/rootfs-overlay/usr/lib/NetworkManager/dispatcher.d/10-ntp diff --git a/buildroot-external/rootfs-overlay/etc/systemd/timesyncd.conf b/buildroot-external/rootfs-overlay/etc/systemd/timesyncd.conf index 63422d88a..43da505b3 100644 --- a/buildroot-external/rootfs-overlay/etc/systemd/timesyncd.conf +++ b/buildroot-external/rootfs-overlay/etc/systemd/timesyncd.conf @@ -1,3 +1,2 @@ [Time] -NTP=time.cloudflare.com -FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org +FallbackNTP=time.cloudflare.com diff --git a/buildroot-external/rootfs-overlay/usr/lib/NetworkManager/dispatcher.d/10-ntp b/buildroot-external/rootfs-overlay/usr/lib/NetworkManager/dispatcher.d/10-ntp new file mode 100644 index 000000000..9c815605d --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/NetworkManager/dispatcher.d/10-ntp @@ -0,0 +1,41 @@ +#!/bin/bash +# + +TIMESYNCD_CONF=/run/systemd/timesyncd.conf.d/10-ntp.conf + +timesyncd_dhcp_ntp_remove() { + if [ -e $TIMESYNCD_CONF ]; then + rm -f $TIMESYNCD_CONF + systemctl restart systemd-timesyncd.service + fi +} + +timesyncd_dhcp_ntp_add() { + mkdir -p $(dirname $TIMESYNCD_CONF) + + echo '[Time]' > ${TIMESYNCD_CONF} + echo "NTP=${DHCP4_NTP_SERVERS}" >> ${TIMESYNCD_CONF} + + systemctl restart systemd-timesyncd.service +} + +INTERFACE=${1} +ACTION=${2} + +case ${ACTION} in + up|down|dhcp4-change) + if [ ! -z "${DHCP4_NTP_SERVERS}" ] + then + timesyncd_dhcp_ntp_add + RETURN_CODE=$? + else + timesyncd_dhcp_ntp_remove + RETURN_CODE=$? + fi + ;; + *) + $RETURN_CODE=0 + ;; +esac + +return $RETURN_CODE