From baf806507dea0ef9707b0308502401326cf900f3 Mon Sep 17 00:00:00 2001 From: henning <> Date: Thu, 1 Jun 2006 04:42:23 +0000 Subject: [PATCH] put back regular sensors scanning --- src/usr.sbin/ntpd/ntp.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/usr.sbin/ntpd/ntp.c b/src/usr.sbin/ntpd/ntp.c index 3d395637..2a9abed4 100644 --- a/src/usr.sbin/ntpd/ntp.c +++ b/src/usr.sbin/ntpd/ntp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ntp.c,v 1.78 2006/05/31 01:27:21 henning Exp $ */ +/* $OpenBSD: ntp.c,v 1.79 2006/06/01 04:42:23 henning Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -78,7 +78,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf) struct ntp_sensor *s, *next_s; struct timespec tp; struct stat stb; - time_t nextaction; + time_t nextaction, last_sensor_scan = 0; void *newp; switch (pid = fork()) { @@ -152,7 +152,6 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf) conf->scale = 1; sensor_init(conf); - sensor_scan(); log_info("ntp engine ready"); @@ -237,6 +236,10 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf) } } + if (last_sensor_scan + SENSOR_SCAN_INTERVAL < time(NULL)) { + sensor_scan(); + last_sensor_scan = time(NULL); + } sensors_cnt = 0; TAILQ_FOREACH(s, &conf->ntp_sensors, entry) { sensors_cnt++; @@ -426,18 +429,27 @@ priv_adjtime(void) int offset_cnt = 0, i = 0, j; struct ntp_offset **offsets; double offset_median; + u_int8_t priority = 0; TAILQ_FOREACH(p, &conf->ntp_peers, entry) { if (p->trustlevel < TRUSTLEVEL_BADPEER) continue; if (!p->update.good) return; + if (p->priority > priority) { + priority = p->priority; + offset_cnt = 0; + } offset_cnt += p->weight; } TAILQ_FOREACH(s, &conf->ntp_sensors, entry) { if (!s->update.good) continue; + if (s->priority > priority) { + priority = s->priority; + offset_cnt = 0; + } offset_cnt += p->weight; } @@ -447,6 +459,8 @@ priv_adjtime(void) TAILQ_FOREACH(p, &conf->ntp_peers, entry) { if (p->trustlevel < TRUSTLEVEL_BADPEER) continue; + if (p->priority < priority) + continue; for (j = 0; j < p->weight; j++) offsets[i++] = &p->update; } @@ -454,6 +468,8 @@ priv_adjtime(void) TAILQ_FOREACH(s, &conf->ntp_sensors, entry) { if (!s->update.good) continue; + if (s->priority < priority) + continue; for (j = 0; j < s->weight; j++) offsets[i++] = &s->update; }