Blame | Last modification | View Log | RSS feed
#!/bin/sh# This is a NetworkManager dispatcher script for chronyd to update# its NTP sources passed from DHCP options. Note that this script is# specific to NetworkManager-dispatcher due to use of the# DHCP4_NTP_SERVERS environment variable.export LC_ALL=Cinterface=$1action=$2helper=/usr/libexec/chrony-helperdefault_server_options=iburstserver_dir=/run/chrony-helperdhcp_server_tmpfile=$server_dir/tmp-nm-dhcp.$interfacedhcp_server_file=$server_dir/nm-dhcp.$interface# DHCP4_NTP_SERVERS is passed from DHCP options by NetworkManager.nm_dhcp_servers=$DHCP4_NTP_SERVERS[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network[ -f /etc/sysconfig/network-scripts/ifcfg-"${interface}" ] && \. /etc/sysconfig/network-scripts/ifcfg-"${interface}"add_servers_from_dhcp() {rm -f "$dhcp_server_file"# Remove servers saved by the dhclient script before it detected NM.rm -f "/var/lib/dhclient/chrony.servers.$interface"# Don't add NTP servers if PEERNTP=no specified; return early.[ "$PEERNTP" = "no" ] && return# Create the directory with correct SELinux context.$helper create-helper-directory > /dev/null 2>&1for server in $nm_dhcp_servers; doecho "$server ${NTPSERVERARGS:-$default_server_options}" >> "$dhcp_server_tmpfile"done[ -e "$dhcp_server_tmpfile" ] && mv "$dhcp_server_tmpfile" "$dhcp_server_file"$helper update-daemon > /dev/null 2>&1 || :}clear_servers_from_dhcp() {if [ -f "$dhcp_server_file" ]; thenrm -f "$dhcp_server_file"$helper update-daemon > /dev/null 2>&1 || :fi}if [ "$action" = "up" ] || [ "$action" = "dhcp4-change" ]; thenadd_servers_from_dhcpelif [ "$action" = "down" ]; thenclear_servers_from_dhcpfiexit 0