1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2006 OpenWrt.org
7 [ ! -f /var
/run
/chronyd.pid
] && (
8 /usr
/sbin
/chronyd
-f /etc
/chrony
/chrony.conf
15 config_get NTP_SERVERS
$CONFIG_SECTION TimeServers
16 config_get CLIENT_NETWORKS
$CONFIG_SECTION ClientAccessFrom
17 CHRONY_KEY
=$
(awk '/^1 / { print $2; }' /etc
/chrony
/chrony.keys
)
21 # Define servers and do a rapid series of time measurements
24 echo password
$CHRONY_KEY
25 for NTP_SERVER
in $NTP_SERVERS; do
26 echo add server
$NTP_SERVER
29 ) | chronyc
> /dev
/null
2>&1
30 # ... wait until a reference ID is found ...
31 while chronyc tracking |
grep 'Reference ID.*0.0.0.0' >/dev
/null
; do sleep 1; done
32 # ... and finally, adjust the time in a single step
33 # and allow clients to access the server
35 echo password
$CHRONY_KEY
37 for NETNAME
in $CLIENT_NETWORKS; do
45 config_get INTERFACE
"$NETNAME" ifname
46 if [ -n "$INTERFACE" ] ; then
47 eval $
(ifconfig
$INTERFACE |
grep inet |
sed -e 's/.*addr:/IP=/' -e 's/ .*Mask:/; NETMASK=/')
48 eval $
(ipcalc.sh
$IP $NETMASK)
49 echo allow
$NETWORK/$PREFIX
52 ) | chronyc
> /dev
/null
2>&1
57 [ -r /var
/run
/chronyd.pid
] && PID
=$
(cat /var
/run
/chronyd.pid
)
58 [ -n "$PID" ] && kill $PID
63 while [ -r /var
/run
/chronyd.pid
] ; do sleep 1; done