[package] base-files: add a hotplug handler for rdate
[openwrt.git] / package / base-files / files / etc / hotplug.d / iface / 40-rdate
1 uci_get_one()
2 {
3 for var in "$@"; do
4 uci -P /var/state get "$var" 2>/dev/null && break
5 done
6 }
7
8 rand()
9 {
10 random=$(awk 'BEGIN { srand(); print int(rand() * 10 + 1); }')
11 }
12
13 sync_rdate()
14 {
15 local servers=$(uci_get_one "network.$INTERFACE.lease_timesrv" \
16 "system.@rdate[0].server")
17
18 if [ -n "$servers" ]; then
19 match=0
20 tries=3
21 rand
22
23 while [ $match = 0 ] && [ $tries != 0 ]; do
24 for server in $servers; do
25 if [ $((--random)) = 0 ]; then
26 rdate -s $server >/dev/null 2>/dev/null && {
27 logger -t rdate "Synced with $server"
28 match=1
29 } || {
30 logger -t rdate "Failed to sync with $server"
31 let tries="$tries - 1"
32 rand
33 }
34
35 break
36 fi
37 done
38 done
39 else
40 logger -t rdate "No usable time server found"
41 fi
42 }
43
44 case "$ACTION" in
45 ifup) route -n | grep -q ^0.0.0.0 && sync_rdate;;
46 esac
This page took 0.049971 seconds and 5 git commands to generate.