summaryrefslogtreecommitdiffstats
path: root/debian/extra/dhclient-exit-hooks.d/timesyncd
blob: bb98cab0c611af54867148f583a9b291797aa865 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
TIMESYNCD_CONF=/run/systemd/timesyncd.conf.d/01-dhclient.conf

timesyncd_servers_setup_remove() {
        if [ ! -d /run/systemd/system ]; then
                return
        fi
        if [ ! -x /lib/systemd/systemd-timesyncd ]; then
                return
        fi

        if [ -e $TIMESYNCD_CONF ]; then
                rm -f $TIMESYNCD_CONF
                systemctl try-restart systemd-timesyncd.service || true
        fi
}

timesyncd_servers_setup_add() {
        if [ ! -d /run/systemd/system ]; then
                return
        fi
        if [ ! -x /lib/systemd/systemd-timesyncd ]; then
                return
        fi

        if [ -e $TIMESYNCD_CONF ] && [ "$new_ntp_servers" = "$old_ntp_servers" ]; then
                return
        fi

        if [ -z "$new_ntp_servers" ]; then
                timesyncd_servers_setup_remove
                return
        fi

        mkdir -p $(dirname $TIMESYNCD_CONF)
        cat <<EOF > ${TIMESYNCD_CONF}.new
# NTP server entries received from DHCP server
[Time]
NTP=$new_ntp_servers
EOF
        mv ${TIMESYNCD_CONF}.new ${TIMESYNCD_CONF}
        systemctl try-restart systemd-timesyncd.service || true
}


case $reason in
        BOUND|RENEW|REBIND|REBOOT)
                timesyncd_servers_setup_add
                ;;
        EXPIRE|FAIL|RELEASE|STOP)
                timesyncd_servers_setup_remove
                ;;
esac