mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 23:29:22 +02:00
[package] base-files (#7316)
- improve rdate reliability - make rdate config more ntp like - move time server list to /etc/config/timeserver - bump package revision git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21495 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
da93fccd59
commit
5d18a177d8
@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=base-files
|
PKG_NAME:=base-files
|
||||||
PKG_RELEASE:=43
|
PKG_RELEASE:=44
|
||||||
|
|
||||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||||
|
|
||||||
|
@ -3,10 +3,4 @@ config system
|
|||||||
option timezone UTC
|
option timezone UTC
|
||||||
|
|
||||||
config rdate
|
config rdate
|
||||||
list server ac-ntp0.net.cmu.edu
|
option interface wan
|
||||||
list server ptbtime1.ptb.de
|
|
||||||
list server ac-ntp1.net.cmu.edu
|
|
||||||
list server ntp.xs4all.nl
|
|
||||||
list server ptbtime2.ptb.de
|
|
||||||
list server cudns.cit.cornell.edu
|
|
||||||
list server ptbtime3.ptb.de
|
|
||||||
|
24
package/base-files/files/etc/config/timeserver
Normal file
24
package/base-files/files/etc/config/timeserver
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
config timeserver
|
||||||
|
option hostname ac-ntp0.net.cmu.edu
|
||||||
|
# option interface wan
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname ptbtime1.ptb.de
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname ac-ntp1.net.cmu.edu
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname tick.greyware.com
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname ntp.xs4all.nl
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname ptbtime2.ptb.de
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname cudns.cit.cornell.edu
|
||||||
|
|
||||||
|
config timeserver
|
||||||
|
option hostname ptbtime3.ptb.de
|
@ -1,46 +1,63 @@
|
|||||||
uci_get_one()
|
IFACE_GLOBAL=$(uci_get "system.@rdate[0].interface")
|
||||||
|
SERVERS=
|
||||||
|
MAX=0
|
||||||
|
SYNCED=
|
||||||
|
|
||||||
|
do_rdate()
|
||||||
{
|
{
|
||||||
for var in "$@"; do
|
local server="$1"
|
||||||
uci -P /var/state get "$var" 2>/dev/null && break
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
rand()
|
rdate -s "$server" >/dev/null 2>/dev/null && {
|
||||||
{
|
|
||||||
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"
|
logger -t rdate "Synced with $server"
|
||||||
match=1
|
SYNCED="$server"
|
||||||
} || {
|
} || {
|
||||||
logger -t rdate "Failed to sync with $server"
|
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
|
add_server()
|
||||||
ifup) route -n | grep -q ^0.0.0.0 && sync_rdate;;
|
{
|
||||||
|
local section="$1"
|
||||||
|
|
||||||
|
local server
|
||||||
|
config_get server "$section" hostname
|
||||||
|
[ -z "$server" ] && return
|
||||||
|
|
||||||
|
local iface
|
||||||
|
config_get iface "$section" interface
|
||||||
|
[ -z "$iface" ] && iface=$IFACE_GLOBAL
|
||||||
|
[ -n "$iface" ] && {
|
||||||
|
[ "$iface" = "$INTERFACE" ] || return
|
||||||
|
}
|
||||||
|
|
||||||
|
SERVERS="${SERVERS} $server"; : $((MAX++))
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_time()
|
||||||
|
{
|
||||||
|
local server
|
||||||
|
server=$(uci_get_state "network.$INTERFACE.lease_timesrv")
|
||||||
|
[ -n "$server" ] && do_rdate "$server"
|
||||||
|
[ -n "$SYNCED" ] && return
|
||||||
|
|
||||||
|
config_load timeserver
|
||||||
|
config_foreach add_server timeserver
|
||||||
|
|
||||||
|
local servers
|
||||||
|
while [ $MAX -gt 0 ] && [ -z "$SYNCED" ]; do
|
||||||
|
unset servers; random=$(awk "BEGIN { srand(); print int(rand() * $MAX + 1); }")
|
||||||
|
for server in $SERVERS; do
|
||||||
|
[ $((--random)) -eq 0 ] && { do_rdate "$server"; continue; }
|
||||||
|
servers="${servers} $server"
|
||||||
|
done
|
||||||
|
SERVERS="${servers}"; : $((MAX--))
|
||||||
|
done
|
||||||
|
|
||||||
|
[ -z "$SYNCED" ] && logger -t rdate "No usable time server for $INTERFACE found"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${ACTION:-ifup}" in
|
||||||
|
ifup)
|
||||||
|
sync_time
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
Loading…
Reference in New Issue
Block a user