blob: a609a66f5bc9acbbfe59ee81a449d3c809ef57dc [file] [log] [blame]
#!/bin/sh
# This is a NetworkManager dispatcher script for chronyd to set its NTP sources
# online or offline when a network interface is configured or removed
export LC_ALL=C
[ "$2" != "up" ] && [ "$2" != "down" ] && exit 0
# Check if there is a default route
if /sbin/ip route list 2> /dev/null | grep -q '^default'; then
chronyc online > /dev/null 2>&1
exit 0
fi
sources=$(chronyc -c -n sources 2> /dev/null)
[ $? -ne 0 ] && exit 0
# Check each configured source if it has a route
echo "$sources" | while IFS=, read mode state address rest; do
[ "$mode" != '^' ] && [ "$mode" != '=' ] && continue
/sbin/ip route get "$address" > /dev/null 2>&1 && command="online" || command="offline"
# Set priority of sources so that the selected source is set as
# last if offline to avoid unnecessary reselection
[ "$state" != '*' ] && priority=1 || priority=2
echo "$priority $command $address"
done | sort | while read priority command address; do
echo "$command $address"
done | chronyc > /dev/null 2>&1
exit 0