1#!/bin/sh
2
3PATH=/usr/sbin:/usr/bin:/bin
4TIMEOUT=30
5KEY=State:/Network/Global/DNS
6DNS=/var/run/resolv.conf
7# sentinel to special case DNS readiness at boot
8LOG=/var/run/sntp.log
9
10ipconfig waitall
11
12if [[ ! -f ${LOG} ]]; then
13    DEADLINE=$((SECONDS+TIMEOUT))
14    for (( CURTIMEOUT=TIMEOUT; SECONDS < DEADLINE; CURTIMEOUT=DEADLINE-SECONDS )); do
15	if scutil -w ${KEY} -t ${CURTIMEOUT}; then
16	    if [[ -f ${DNS} ]]; then 
17			break;
18	    fi			# else retry false alarms
19	else
20	    logger -p daemon.err "$0: scutil key ${KEY} not present after ${TIMEOUT} seconds"
21	    break;
22	fi
23    done
24fi
25
26for server in $(awk '/^server/ {print $2}' /etc/ntp.conf); do
27    if sntp -K /dev/null -s ${server} &> ${LOG}; then
28	break
29    else
30	logger -p daemon.err -f ${LOG}
31    fi
32done
33
34exec /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift
35