summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/base-files/Makefile2
-rw-r--r--package/base-files/files/etc/config/system7
-rw-r--r--package/base-files/files/etc/config/timeserver15
-rw-r--r--package/base-files/files/etc/hotplug.d/iface/40-rdate63
-rwxr-xr-xpackage/base-files/files/etc/init.d/sysntpd35
5 files changed, 41 insertions, 81 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index b19f694a0..002d51674 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 30055eaf3..ad51db5bd 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 294631ee0..000000000
--- 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 c5abaf011..000000000
--- 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 000000000..fefb48fb1
--- /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
+}