#!/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