dhcpcd/hooks/50-timesyncd.conf
Roy Marples 5f6f61cbe3 DHCP6: Request OPTION_NTP_SERVER to mirror DHCP
RFC 5908 deprecates OPTION_SNTP_SERVERS.
However we can support both at the same time as our scripts
will uniqify the results if there are stupidly any duplicates.

Fixes #183.
2023-02-07 18:29:33 +00:00

61 lines
1.2 KiB
Plaintext

: ${timesyncd_conf_d:=/run/systemd/timesyncd.conf.d}
timesyncd_conf="${timesyncd_conf_d}/dhcpcd-$ifname.conf"
timesyncd_tmp_d="$state_dir/timesyncd"
timesyncd_tmp="$timesyncd_tmp_d/$ifname"
NL="
"
remove_timesyncd_conf()
{
if [ -e "$timesyncd_conf" ]; then
rm "$timesyncd_conf"
systemctl try-reload-or-restart --no-block systemd-timesyncd
fi
}
add_timesyncd_conf()
{
if [ -z "$new_ntp_servers" ]; then
remove_timesyncd_conf
return $?
fi
mkdir -p "$timesyncd_tmp_d" "$timesyncd_conf_d"
conf="$signature$NL"
conf="${conf}[Time]$NL"
conf="${conf}NTP="
# Trim spaces
space=false
for ntp_server in $(uniqify $new_ntp_servers); do
if ! $space; then
space=true
else
conf="$conf "
fi
conf="$conf$ntp_server"
done
conf="$conf$NL"
printf %s "$conf" > "$timesyncd_tmp"
if change_file "$timesyncd_conf" "$timesyncd_tmp"; then
systemctl try-reload-or-restart --no-block systemd-timesyncd
fi
}
# For ease of use, map DHCP6 names onto our DHCP4 names
case "$reason" in
BOUND6|RENEW6|REBIND6|REBOOT6|INFORM6)
new_ntp_servers="$new_dhcp6_sntp_servers $new_dhcp6_ntp_server_addr $new_dhcp6_ntp_server_fqdn"
;;
esac
if $if_configured; then
if $if_up; then
add_timesyncd_conf
elif $if_down; then
remove_timesyncd_conf
fi
fi