Package: systemd Version: 232-22 Severity: normal Dear Maintainers,
When NetworkManager is running /etc/dhcp/dhclient-exit-hooks.d/timesyncd and other hooks in the directory are not triggered. See #537358 for a very old report involving other packages with DHCP hooks. The widely adopted solution seems to be adding per-package scripts to /etc/NetworkManager/dispatcher.d and the attached patch does that for systemd. Cheers, Balint PS: The issue has been reported on Launchpad originally: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1685484 -- Balint Reczey Debian & Ubuntu Developer
From 88d3488152bae8bbe4510fdbd9106b4270af5928 Mon Sep 17 00:00:00 2001 From: Balint Reczey <balint.rec...@canonical.com> Date: Wed, 3 May 2017 17:44:05 +0200 Subject: [PATCH] Set timesyncd's NTP server from DHCP even with NetworkManager LP: #1685484 --- debian/extra/dhclient-exit-hooks.d/timesyncd | 2 +- debian/extra/dispatcher.d/timesyncd | 12 ++++++++++++ debian/systemd.install | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100755 debian/extra/dispatcher.d/timesyncd diff --git a/debian/extra/dhclient-exit-hooks.d/timesyncd b/debian/extra/dhclient-exit-hooks.d/timesyncd index 3cde992..d567dd0 100644 --- a/debian/extra/dhclient-exit-hooks.d/timesyncd +++ b/debian/extra/dhclient-exit-hooks.d/timesyncd @@ -12,7 +12,7 @@ timesyncd_servers_setup_add() { return fi - if [ -e $TIMESYNCD_CONF ] && [ "$new_ntp_servers" = "$old_ntp_servers" ]; then + if [ -e $TIMESYNCD_CONF ] && grep -q -F "NTP=$new_ntp_servers" $TIMESYNCD_CONF; then return fi diff --git a/debian/extra/dispatcher.d/timesyncd b/debian/extra/dispatcher.d/timesyncd new file mode 100755 index 0000000..cc1f3bc --- /dev/null +++ b/debian/extra/dispatcher.d/timesyncd @@ -0,0 +1,12 @@ +#!/bin/sh + +# Call timesyncd DHCP hook on NetworkManager interface events + +if [ "$2" = "up" -a -n "${DHCP4_NTP_SERVERS:-}" ]; then + env reason="BOUND" \ + new_ntp_servers="${DHCP4_NTP_SERVERS}" \ + sh /etc/dhcp/dhclient-exit-hooks.d/timesyncd +elif [ "$2" = "down" ]; then + env reason="STOP" \ + sh /etc/dhcp/dhclient-exit-hooks.d/timesyncd +fi diff --git a/debian/systemd.install b/debian/systemd.install index b3e0594..905600c 100644 --- a/debian/systemd.install +++ b/debian/systemd.install @@ -65,5 +65,6 @@ var/lib ../../extra/systemd-sysv-install lib/systemd/ ../../extra/units/* lib/systemd/system/ ../../extra/dhclient-exit-hooks.d/ etc/dhcp/ +../../extra/dispatcher.d/ etc/NetworkManager/ ../../extra/kernel-install.d/* usr/lib/kernel/install.d ../../extra/pam.d etc/ -- 2.7.4