summaryrefslogtreecommitdiff
path: root/net/openntpd/files/patch-ntp.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--net/openntpd/files/patch-ntp.c65
1 files changed, 33 insertions, 32 deletions
diff --git a/net/openntpd/files/patch-ntp.c b/net/openntpd/files/patch-ntp.c
index 819f7439768f..5da3b5d907c1 100644
--- a/net/openntpd/files/patch-ntp.c
+++ b/net/openntpd/files/patch-ntp.c
@@ -1,32 +1,34 @@
$FreeBSD$
---- ntp.c.orig 2009-08-01 20:12:43.000000000 +0200
-+++ ntp.c 2009-08-01 20:26:44.000000000 +0200
-@@ -34,8 +34,12 @@
+--- ntp.c.orig 2009-11-23 20:47:16.000000000 +0100
++++ ntp.c 2009-11-23 20:55:59.000000000 +0100
+@@ -34,9 +34,14 @@
#include "ntpd.h"
#define PFD_PIPE_MAIN 0
+#ifdef HAVE_SENSORS
#define PFD_HOTPLUG 1
- #define PFD_MAX 2
+ #define PFD_PIPE_DNS 2
+ #define PFD_MAX 3
+#else
-+#define PFD_MAX 1
++#define PFD_PIPE_DNS 1
++#define PFD_MAX 2
+#endif
volatile sig_atomic_t ntp_quit = 0;
volatile sig_atomic_t ntp_report = 0;
-@@ -69,7 +73,10 @@ pid_t
+@@ -72,7 +77,10 @@ pid_t
ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf, struct passwd *pw)
{
int a, b, nfds, i, j, idx_peers, timeout;
-- int hotplugfd, nullfd;
+- int hotplugfd, nullfd, pipe_dns[2];
+#ifdef HAVE_SENSORS
+ int hotplugfd;
+#endif
-+ int nullfd;
++ int nullfd, pipe_dns[2];
u_int pfd_elms = 0, idx2peer_elms = 0;
u_int listener_cnt, new_cnt, sent_cnt, trial_cnt;
- pid_t pid;
-@@ -78,10 +85,15 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+ pid_t pid, dns_pid;
+@@ -81,10 +89,15 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
struct listen_addr *la;
struct ntp_peer *p;
struct ntp_peer **idx2peer = NULL;
@@ -43,7 +45,7 @@ $FreeBSD$
void *newp;
switch (pid = fork()) {
-@@ -105,7 +117,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -108,7 +121,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
if ((nullfd = open(_PATH_DEVNULL, O_RDWR, 0)) == -1)
fatal(NULL);
@@ -51,9 +53,9 @@ $FreeBSD$
hotplugfd = sensor_hotplugfd();
+#endif
- if (stat(pw->pw_dir, &stb) == -1)
- fatal("stat");
-@@ -168,7 +182,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+ if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pipe_dns) == -1)
+ fatal("socketpair");
+@@ -179,7 +194,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
conf->status.precision = a;
conf->scale = 1;
@@ -63,7 +65,7 @@ $FreeBSD$
log_info("ntp engine ready");
-@@ -210,8 +226,10 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -221,8 +238,10 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
nextaction = getmonotime() + 3600;
pfd[PFD_PIPE_MAIN].fd = ibuf_main->fd;
pfd[PFD_PIPE_MAIN].events = POLLIN;
@@ -71,10 +73,10 @@ $FreeBSD$
pfd[PFD_HOTPLUG].fd = hotplugfd;
pfd[PFD_HOTPLUG].events = POLLIN;
+#endif
+ pfd[PFD_PIPE_DNS].fd = ibuf_dns->fd;
+ pfd[PFD_PIPE_DNS].events = POLLIN;
- i = PFD_MAX;
- TAILQ_FOREACH(la, &conf->listen_addrs, entry) {
-@@ -265,6 +283,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -278,6 +297,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
}
}
@@ -82,7 +84,7 @@ $FreeBSD$
if (last_sensor_scan == 0 ||
last_sensor_scan + SENSOR_SCAN_INTERVAL < getmonotime()) {
sensors_cnt = sensor_scan();
-@@ -273,7 +292,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -286,7 +306,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
if (!TAILQ_EMPTY(&conf->ntp_conf_sensors) && sensors_cnt == 0 &&
nextaction > last_sensor_scan + SENSOR_SCAN_INTERVAL)
nextaction = last_sensor_scan + SENSOR_SCAN_INTERVAL;
@@ -92,7 +94,7 @@ $FreeBSD$
TAILQ_FOREACH(s, &conf->ntp_sensors, entry) {
if (conf->settime && s->offsets[0].offset)
priv_settime(s->offsets[0].offset);
-@@ -281,6 +302,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -294,6 +316,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
if (s->next > 0 && s->next < nextaction)
nextaction = s->next;
}
@@ -100,7 +102,7 @@ $FreeBSD$
if (conf->settime &&
((trial_cnt > 0 && sent_cnt == 0) ||
-@@ -312,10 +334,12 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -339,10 +362,12 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
ntp_quit = 1;
}
@@ -111,9 +113,9 @@ $FreeBSD$
}
+#endif
- for (j = 1; nfds > 0 && j < idx_peers; j++)
+ for (j = PFD_MAX; nfds > 0 && j < idx_peers; j++)
if (pfd[j].revents & (POLLIN|POLLERR)) {
-@@ -332,12 +356,14 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+@@ -359,12 +384,14 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
ntp_quit = 1;
}
@@ -128,7 +130,7 @@ $FreeBSD$
report_peers(ntp_report);
ntp_report = 0;
}
-@@ -511,7 +537,9 @@ int
+@@ -574,7 +601,9 @@ int
priv_adjtime(void)
{
struct ntp_peer *p;
@@ -138,7 +140,7 @@ $FreeBSD$
int offset_cnt = 0, i = 0, j;
struct ntp_offset **offsets;
double offset_median;
-@@ -524,11 +552,13 @@ priv_adjtime(void)
+@@ -587,11 +616,13 @@ priv_adjtime(void)
offset_cnt += p->weight;
}
@@ -152,7 +154,7 @@ $FreeBSD$
if (offset_cnt == 0)
return (1);
-@@ -543,12 +573,14 @@ priv_adjtime(void)
+@@ -606,12 +637,14 @@ priv_adjtime(void)
offsets[i++] = &p->update;
}
@@ -167,7 +169,7 @@ $FreeBSD$
qsort(offsets, offset_cnt, sizeof(struct ntp_offset *), offset_compare);
-@@ -585,11 +617,13 @@ priv_adjtime(void)
+@@ -648,11 +681,13 @@ priv_adjtime(void)
p->reply[i].offset -= offset_median;
p->update.good = 0;
}
@@ -181,7 +183,7 @@ $FreeBSD$
return (0);
}
-@@ -679,16 +713,20 @@ report_peers(int always)
+@@ -734,16 +769,20 @@ report_peers(int always)
u_int badpeers = 0;
u_int badsensors = 0;
struct ntp_peer *p;
@@ -200,9 +202,9 @@ $FreeBSD$
}
+#endif
- now = time(NULL);
+ now = getmonotime();
if (!always) {
-@@ -718,6 +756,7 @@ report_peers(int always)
+@@ -773,6 +812,7 @@ report_peers(int always)
}
}
}
@@ -210,10 +212,9 @@ $FreeBSD$
if (sensors_cnt > 0) {
log_warnx("%u out of %u sensors valid",
sensors_cnt - badsensors, sensors_cnt);
-@@ -726,5 +765,6 @@ report_peers(int always)
+@@ -781,4 +821,5 @@ report_peers(int always)
log_warnx("bad sensor %s", s->device);
}
}
+#endif
}
-