clean up ntpclient uci

- add global section for default values
- find working server from servers named in config
- patches bin to support daemon



git-svn-id: svn://svn.openwrt.org/openwrt/packages@12305 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
blogic 2008-08-14 12:03:55 +00:00
parent e36bf6b17e
commit d29489b527
5 changed files with 91 additions and 70 deletions

View File

@ -41,8 +41,6 @@ define Package/ntpclient/install
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/ntpclient.config $(1)/etc/config/ntpclient
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/ntpclient.init $(1)/etc/init.d/ntpclient
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ntpclient $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/adjtimex $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/rate.awk $(1)/usr/sbin/

View File

@ -1,22 +1,23 @@
config ntpclient
config ntpserver
option hostname '0.openwrt.pool.ntp.org'
option port '123'
option count '0'
config ntpclient
config ntpserver
option hostname '1.openwrt.pool.ntp.org'
option port '123'
option count '0'
config ntpclient
config ntpserver
option hostname '2.openwrt.pool.ntp.org'
option port '123'
option count '0'
config ntpclient
config ntpserver
option hostname '3.openwrt.pool.ntp.org'
option port '123'
option count '0'
config ntpdrift
option freq '0'
config ntpclient
option interval 60
option iface wan
#option count 10

View File

@ -3,43 +3,69 @@
. /etc/functions.sh
DONE=0
config_cb() {
local cfg="$CONFIG_SECTION"
local cfgtype
config_get cfgtype "$cfg" TYPE
unset IFACE
unset SERVER
unset PORT
unset INTERVAL
unset COUNT
NTPC=`which ntpclient`
# initial frequency offset, if configured
case "$cfgtype" in
ntpdrift)
config_get freq $cfg freq
if [ ! "$freq" = "" ]; then
adjtimex -f $freq >/dev/null
fi
;;
esac
case "$cfgtype" in
ntpclient)
config_get hostname $cfg hostname
config_get port $cfg port
config_get count $cfg count
[ "$DONE" = "1" ] && exit 0
ps | grep 'bin/[n]tpclient' >&- || {
route -n 2>&- | grep '^0.0.0.0' >&- && {
/usr/sbin/ntpclient -c ${count:-1} -s -h $hostname -p ${port:-123} 2>&- >&- && DONE=1
}
}
;;
esac
check_server() {
local hostname
local port
[ -n "$SERVER" ] && return
config_get hostname $1 hostname
config_get port $1 port
[ -z "$hostname" ] && return
$NTPC -c 1 -p ${port:-123} -h $hostname > /dev/null && { SERVER=$hostname; PORT=${port:-123}; }
}
set_drift() {
config_get freq $1 freq
[ -n "$freq" ] && adjtimex -f $freq >/dev/null
}
start_ntpclient() {
config_foreach set_drift ntpdrift
config_foreach check_server ntpserver
[ -z "$SERVER" ] && exit 0
logger starting ntpclient
$NTPC ${COUNT:+-c $COUNT} ${INTERVAL:+-i $INTERVAL} -D -p $PORT -h $SERVER 2> /dev/null
}
stop_ntpclient() {
logger stopping ntpclient
killall ntpclient
}
load_settings() {
local interval
local count
local iface
config_get interval $1 interval
config_get count $1 count
config_get iface $1 iface
[ -n "$iface" ] && IFACE=$iface
[ -n "$count" ] && COUNT=$count
[ -n "$interval" ] && INTERVAL=$interval
}
config_load ntpclient
config_foreach load_settings ntpclient
# check if we only listen to a single iface
[ -n "$IFACE" -a "$IFACE" != "$INTERFACE" ] && exit 0
DEF_ROUTE=`route -n | grep '^0.0.0.0'`
NTP_RUNNING=`ps | grep $NTPC | grep -v grep`
case "${ACTION:-ifup}" in
ifup)
config_load ntpclient&
[ -n "$DEF_ROUTE" -a -z "$NTP_RUNNING" ] && start_ntpclient
;;
ifdown)
route -n 2>&- | grep '^0.0.0.0' >&- || killall ntpclient 2>&- >&-
[ -n "$NTP_RUNNING" ] && stop_ntpclient
;;
esac

View File

@ -1,28 +0,0 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org
START=80
config_cb() {
local cfg="$CONFIG_SECTION"
local cfgtype
config_get cfgtype "$cfg" TYPE
if [ "$cfgtype" = ntpclient ]
then
config_get hostname $cfg hostname
config_get port $cfg port
config_get count $cfg count
ps | grep -q 'bin/[n]tpclient' || \
/usr/sbin/ntpclient -s -c ${count:-1} -l -h $hostname -p ${port:-123} 2>&- >&- &
fi
}
start() {
config_load ntpclient&
}
stop() {
killall ntpclient 2>&- >&-
}

View File

@ -0,0 +1,24 @@
Index: ntpclient-2007/ntpclient.c
===================================================================
--- ntpclient-2007.orig/ntpclient.c 2008-08-12 03:11:34.000000000 +0200
+++ ntpclient-2007/ntpclient.c 2008-08-12 03:11:36.000000000 +0200
@@ -614,7 +614,7 @@
ntpc.cross_check=1;
for (;;) {
- c = getopt( argc, argv, "c:" DEBUG_OPTION "f:g:h:i:lp:q:" REPLAY_OPTION "st");
+ c = getopt( argc, argv, "c:" DEBUG_OPTION "f:g:h:i:lp:q:" REPLAY_OPTION "stD");
if (c == EOF) break;
switch (c) {
case 'c':
@@ -663,6 +663,10 @@
(ntpc.cross_check)=0;
break;
+ case 'D':
+ daemon();
+ break;
+
default:
usage(argv[0]);
exit(1);