diff options
-rw-r--r-- | package/base-files/Makefile | 2 | ||||
-rw-r--r-- | package/base-files/files/etc/config/system | 7 | ||||
-rw-r--r-- | package/base-files/files/etc/config/timeserver | 15 | ||||
-rw-r--r-- | package/base-files/files/etc/hotplug.d/iface/40-rdate | 63 | ||||
-rwxr-xr-x | package/base-files/files/etc/init.d/sysntpd | 35 |
5 files changed, 41 insertions, 81 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile index b19f694..002d516 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=base-files -PKG_RELEASE:=82 +PKG_RELEASE:=83 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ PKG_BUILD_DEPENDS:=opkg/host diff --git a/package/base-files/files/etc/config/system b/package/base-files/files/etc/config/system index 30055ea..ad51db5 100644 --- a/package/base-files/files/etc/config/system +++ b/package/base-files/files/etc/config/system @@ -2,5 +2,8 @@ config system option hostname OpenWrt option timezone UTC -config rdate - option interface wan +config timeserver + list server 0.openwrt.pool.ntp.org + list server 1.openwrt.pool.ntp.org + list server 2.openwrt.pool.ntp.org + list server 3.openwrt.pool.ntp.org diff --git a/package/base-files/files/etc/config/timeserver b/package/base-files/files/etc/config/timeserver deleted file mode 100644 index 294631e..0000000 --- a/package/base-files/files/etc/config/timeserver +++ /dev/null @@ -1,15 +0,0 @@ -config timeserver - option hostname ptbtime1.ptb.de -# option interface wan - -config timeserver - option hostname time-a.nist.gov - -config timeserver - option hostname ntp.xs4all.nl - -config timeserver - option hostname ptbtime2.ptb.de - -config timeserver - option hostname time-b.nist.gov diff --git a/package/base-files/files/etc/hotplug.d/iface/40-rdate b/package/base-files/files/etc/hotplug.d/iface/40-rdate deleted file mode 100644 index c5abaf0..0000000 --- a/package/base-files/files/etc/hotplug.d/iface/40-rdate +++ /dev/null @@ -1,63 +0,0 @@ -IFACE_GLOBAL=$(uci_get "system.@rdate[0].interface") -SERVERS= -MAX=0 -SYNCED= - -do_rdate() -{ - local server="$1" - - rdate -s "$server" >/dev/null 2>/dev/null && { - logger -t rdate "Synced with $server" - SYNCED="$server" - } || { - logger -t rdate "Failed to sync with $server" - } -} - -add_server() -{ - 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 diff --git a/package/base-files/files/etc/init.d/sysntpd b/package/base-files/files/etc/init.d/sysntpd new file mode 100755 index 0000000..fefb48f --- /dev/null +++ b/package/base-files/files/etc/init.d/sysntpd @@ -0,0 +1,35 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2011 OpenWrt.org + +START=98 + +BIN=/usr/sbin/ntpd +PID=/var/run/sysntpd.pid + +start() { + [ -x $BIN ] || exit 0 + + local peers + + getpeers() { + config_get peers "$1" server + } + + config_load system + config_foreach getpeers timeserver + + if [ -n "$peers" ]; then + local peer + local args="-n" + for peer in $peers; do + append args "-p $peer" + done + + start-stop-daemon -x $BIN -m -p $PID -b -S -- $args + fi +} + +stop() { + service_kill ${BIN##*/} $PID + rm -f $PID +} |