63f49e43e6
SVN-Revision: 20518
46 lines
840 B
Text
46 lines
840 B
Text
uci_get_one()
|
|
{
|
|
for var in "$@"; do
|
|
uci -P /var/state get "$var" 2>/dev/null && break
|
|
done
|
|
}
|
|
|
|
rand()
|
|
{
|
|
random=$(awk 'BEGIN { srand(); print int(rand() * 10 + 1); }')
|
|
}
|
|
|
|
sync_rdate()
|
|
{
|
|
local servers=$(uci_get_one "network.$INTERFACE.lease_timesrv" \
|
|
"system.@rdate[0].server")
|
|
|
|
if [ -n "$servers" ]; then
|
|
match=0
|
|
tries=3
|
|
rand
|
|
|
|
while [ $match = 0 ] && [ $tries != 0 ]; do
|
|
for server in $servers; do
|
|
if [ $((--random)) = 0 ]; then
|
|
rdate -s $server >/dev/null 2>/dev/null && {
|
|
logger -t rdate "Synced with $server"
|
|
match=1
|
|
} || {
|
|
logger -t rdate "Failed to sync with $server"
|
|
let tries="$tries - 1"
|
|
rand
|
|
}
|
|
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
else
|
|
logger -t rdate "No usable time server found"
|
|
fi
|
|
}
|
|
|
|
case "$ACTION" in
|
|
ifup) route -n | grep -q ^0.0.0.0 && sync_rdate;;
|
|
esac
|