packages/net/chrony/files/ntpd.init
florian f052574592 Add chrony from (#1388)
git-svn-id: svn://svn.openwrt.org/openwrt/packages@6593 3c298f89-4303-0410-b956-a3cf2f4a3e73
2007-03-17 11:34:51 +00:00

70 lines
1.7 KiB
Bash

#!/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 $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
}