packages/net/chrony/files/ntpd.init

66 lines
1.6 KiB
Plaintext
Raw Normal View History

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=60
start() {
[ ! -f /var/run/chronyd.pid ] && (
/usr/sbin/chronyd -f /etc/chrony/chrony.conf
local NTP_SERVERS
local NTP_SERVER
local CLIENT_NETWORKS
local NETNAME
config_load ntpd
config_get NTP_SERVERS $cfg1 TimeServers
config_get CLIENT_NETWORKS $cfg1 ClientAccessFrom
CHRONY_KEY=$(awk '/^1 / { print $2; }' /etc/chrony/chrony.keys)
include /lib/network
scan_interfaces
# Define servers and do a rapid series of time measurements
# to get up to date
(
echo password $CHRONY_KEY
for NTP_SERVER in $NTP_SERVERS; do
echo add server $NTP_SERVER
done
echo burst 5/5
) | chronyc > /dev/null 2>&1
# ... wait until a reference ID is found ...
while chronyc tracking | grep 'Reference ID.*0.0.0.0' >/dev/null ; do sleep 1; done
# ... and finally, adjust the time in a single step
# and allow clients to access the server
(
echo password $CHRONY_KEY
echo makestep
for NETNAME in $CLIENT_NETWORKS; do
local INTERFACE
local IP
local NETMASK
local BROADCAST
local NETWORK
local PREFIX
config_get INTERFACE "$NETNAME" ifname
if [ -n "$INTERFACE" ] ; then
eval $(ifconfig $INTERFACE | grep inet | sed -e 's/.*addr:/IP=/' -e 's/ .*Mask:/; NETMASK=/')
eval $(ipcalc.sh $IP $NETMASK)
echo allow $NETWORK/$PREFIX
fi
done
) | chronyc > /dev/null 2>&1
)
}
stop() {
[ -r /var/run/chronyd.pid ] && PID=$(cat /var/run/chronyd.pid)
[ -n "$PID" ] && kill $PID
}
restart() {
stop
while [ -r /var/run/chronyd.pid ] ; do sleep 1; done
start
}