|
|
- #!/bin/sh
- # Copyright (C) 2006-2014 OpenWrt.org
-
- . /lib/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
|