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_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/ntpclient.config $(1)/etc/config/ntpclient $(INSTALL_CONF) ./files/ntpclient.config $(1)/etc/config/ntpclient
$(INSTALL_DIR) $(1)/usr/sbin $(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)/ntpclient $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/adjtimex $(1)/usr/sbin/ $(INSTALL_BIN) $(PKG_BUILD_DIR)/adjtimex $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/rate.awk $(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 hostname '0.openwrt.pool.ntp.org'
option port '123' option port '123'
option count '0'
config ntpclient config ntpserver
option hostname '1.openwrt.pool.ntp.org' option hostname '1.openwrt.pool.ntp.org'
option port '123' option port '123'
option count '0'
config ntpclient config ntpserver
option hostname '2.openwrt.pool.ntp.org' option hostname '2.openwrt.pool.ntp.org'
option port '123' option port '123'
option count '0'
config ntpclient config ntpserver
option hostname '3.openwrt.pool.ntp.org' option hostname '3.openwrt.pool.ntp.org'
option port '123' option port '123'
option count '0'
config ntpdrift config ntpdrift
option freq '0' option freq '0'
config ntpclient
option interval 60
option iface wan
#option count 10

View File

@ -3,43 +3,69 @@
. /etc/functions.sh . /etc/functions.sh
DONE=0 unset IFACE
config_cb() { unset SERVER
local cfg="$CONFIG_SECTION" unset PORT
local cfgtype unset INTERVAL
config_get cfgtype "$cfg" TYPE unset COUNT
NTPC=`which ntpclient`
# initial frequency offset, if configured check_server() {
case "$cfgtype" in local hostname
ntpdrift) local port
config_get freq $cfg freq [ -n "$SERVER" ] && return
config_get hostname $1 hostname
if [ ! "$freq" = "" ]; then config_get port $1 port
adjtimex -f $freq >/dev/null [ -z "$hostname" ] && return
fi $NTPC -c 1 -p ${port:-123} -h $hostname > /dev/null && { SERVER=$hostname; PORT=${port:-123}; }
;;
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
} }
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 case "${ACTION:-ifup}" in
ifup) ifup)
config_load ntpclient& [ -n "$DEF_ROUTE" -a -z "$NTP_RUNNING" ] && start_ntpclient
;; ;;
ifdown) ifdown)
route -n 2>&- | grep '^0.0.0.0' >&- || killall ntpclient 2>&- >&- [ -n "$NTP_RUNNING" ] && stop_ntpclient
;; ;;
esac 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);