Root/package/base-files/files/etc/hotplug.d/iface/40-rdate

1uci_get_one()
2{
3    for var in "$@"; do
4        uci -P /var/state get "$var" 2>/dev/null && break
5    done
6}
7
8rand()
9{
10    random=$(awk 'BEGIN { srand(); print int(rand() * 10 + 1); }')
11}
12
13sync_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
44case "$ACTION" in
45    ifup) route -n | grep -q ^0.0.0.0 && sync_rdate;;
46esac
47

Archive Download this file



interactive