base-files: add a hotplug handler for rdate
SVN-Revision: 20518
This commit is contained in:
parent
0cdaaa90fe
commit
63f49e43e6
3 changed files with 56 additions and 1 deletions
|
@ -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:=40
|
PKG_RELEASE:=41
|
||||||
|
|
||||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
config system
|
config system
|
||||||
option hostname OpenWrt
|
option hostname OpenWrt
|
||||||
option timezone UTC
|
option timezone UTC
|
||||||
|
|
||||||
|
config rdate
|
||||||
|
list server ac-ntp0.net.cmu.edu
|
||||||
|
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
|
||||||
|
|
46
package/base-files/files/etc/hotplug.d/iface/40-rdate
Normal file
46
package/base-files/files/etc/hotplug.d/iface/40-rdate
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
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
|
Loading…
Reference in a new issue