base-files: remove rdate integration, add busybox ntpd init script and server list...
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 27 Oct 2011 00:21:53 +0000 (00:21 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 27 Oct 2011 00:21:53 +0000 (00:21 +0000)
SVN-Revision: 28612

package/base-files/Makefile
package/base-files/files/etc/config/system
package/base-files/files/etc/config/timeserver [deleted file]
package/base-files/files/etc/hotplug.d/iface/40-rdate [deleted file]
package/base-files/files/etc/init.d/sysntpd [new file with mode: 0755]

index b19f694a09fbaa4de94daba2078fa65f652aa6f3..002d51674de27a4e1602f2045102d8acc6261b13 100644 (file)
@@ -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
index 30055eaf31bd3e1414b241a9ca42fb8a9553df52..ad51db5bd8c74e0465c60b4e54e98f3980760a0a 100644 (file)
@@ -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 (file)
index 294631e..0000000
+++ /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 (file)
index c5abaf0..0000000
+++ /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 (executable)
index 0000000..fefb48f
--- /dev/null
@@ -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
+}