+++ /dev/null
-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
+++ /dev/null
-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
--- /dev/null
+#!/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
+}