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 cfg1 TimeServers
16 config_get CLIENT_NETWORKS cfg1 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
31 # ... wait until a reference ID is found ...
32 while chronyc tracking |
grep 'Reference ID.*0.0.0.0' >/dev
/null
; do sleep 1; done
35 # ... and finally, adjust the time in a single step
36 # and allow clients to access the server
38 echo password
$CHRONY_KEY
40 for NETNAME
in $CLIENT_NETWORKS; do
48 config_get INTERFACE
"$NETNAME" ifname
49 if [ -n "$INTERFACE" ] ; then
50 eval $
(ifconfig
$INTERFACE |
grep inet |
sed -e 's/.*addr:/IP=/' -e 's/ .*Mask:/; NETMASK=/')
51 eval $
(ipcalc
$IP $NETMASK)
52 echo allow
$NETWORK/$PREFIX
55 ) | chronyc
> /dev
/null
2>&1
61 [ -r /var
/run
/chronyd.pid
] && PID
=$
(cat /var
/run
/chronyd.pid
)
62 [ -n "$PID" ] && kill $PID
67 while [ -r /var
/run
/chronyd.pid
] ; do sleep 1; done