summaryrefslogtreecommitdiff
path: root/package/base-files/files/etc/init.d/sysntpd
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2011-10-27 00:21:53 +0000
committerJo-Philipp Wich <jow@openwrt.org>2011-10-27 00:21:53 +0000
commit272d95f0f1445053b0e3c316e703d1ca744dc85a (patch)
tree3ae766f99123c91b94bc13d3248f0e16b97b01d5 /package/base-files/files/etc/init.d/sysntpd
parent803c7edcb3dfbf34f591f75e420f387649708e55 (diff)
downloadmtk-20170518-272d95f0f1445053b0e3c316e703d1ca744dc85a.zip
mtk-20170518-272d95f0f1445053b0e3c316e703d1ca744dc85a.tar.gz
mtk-20170518-272d95f0f1445053b0e3c316e703d1ca744dc85a.tar.bz2
base-files: remove rdate integration, add busybox ntpd init script and server list in /etc/config/system The rdate applet proved to be too unreliable to obtain the current time on boot: - public time servers are rare and often unreachable or overloaded - rdate does not daemonize, it needs a network connection the moment it is started, leading to race conditions - the /etc/config/timeserver configuration is overly complex and there is no reliable way to disable rdate invocations - the time protocol as specified in RFC 868 is considered obsolete This commit adds an init script /etc/init.d/sysntpd which starts and stops the busybox ntpd accordingly. The builtin ntpd can be disabled by either disabling the init script, removing the symlink to busybox or by clearing the timeserver list in /etc/config/system.
SVN-Revision: 28612
Diffstat (limited to 'package/base-files/files/etc/init.d/sysntpd')
-rwxr-xr-xpackage/base-files/files/etc/init.d/sysntpd35
1 files changed, 35 insertions, 0 deletions
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
+}