79 lines
1.6 KiB
Bash
79 lines
1.6 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2006 OpenWrt.org
|
|
|
|
. /etc/functions.sh
|
|
|
|
unset SERVER
|
|
unset PORT
|
|
unset INTERVAL
|
|
unset COUNT
|
|
unset INTERFACE_GLOBAL
|
|
|
|
NTPC=`which ntpclient`
|
|
|
|
check_server() {
|
|
local hostname
|
|
local port
|
|
local interface
|
|
[ -n "$SERVER" ] && return
|
|
config_get hostname $1 hostname
|
|
config_get port $1 port
|
|
config_get interface $1 interface
|
|
|
|
[ -z "$interface" ] && interface=$INTERFACE_GLOBAL
|
|
|
|
[ -n "$interface" ] && {
|
|
# $INTERFACE is passed from hotplug event
|
|
[ "$interface" = "$INTERFACE" ] || return
|
|
}
|
|
|
|
[ -z "$hostname" ] && return
|
|
$NTPC -c 1 -p ${port:-123} -i 2 -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} -s -l -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 interface $1 interface
|
|
|
|
[ -n "$count" ] && COUNT=$count
|
|
[ -n "$interval" ] && INTERVAL=$interval
|
|
[ -n "$interface" ] && INTERFACE_GLOBAL=$interface
|
|
}
|
|
|
|
config_load ntpclient
|
|
config_foreach load_settings ntpclient
|
|
|
|
NTP_RUNNING=`ps | grep $NTPC | grep -v grep`
|
|
|
|
case "${ACTION:-ifup}" in
|
|
ifup)
|
|
[ -z "$NTP_RUNNING" ] && start_ntpclient
|
|
;;
|
|
ifdown)
|
|
[ -n "$NTP_RUNNING" ] && stop_ntpclient
|
|
;;
|
|
esac
|