aboutsummaryrefslogtreecommitdiff
path: root/net/openntpd
diff options
context:
space:
mode:
authorChristian Weisgerber <naddy@FreeBSD.org>2009-08-03 13:58:59 +0000
committerChristian Weisgerber <naddy@FreeBSD.org>2009-08-03 13:58:59 +0000
commitc84266ea6e2c982458f75954d4e8d9606d4c4d7c (patch)
tree29c59ff5cf6c20d5292923eae49c98dc940775e4 /net/openntpd
parentb83e598b9e2684f611af85d47f063c31a1e9df3b (diff)
downloadports-c84266ea6e2c982458f75954d4e8d9606d4c4d7c.tar.gz
ports-c84266ea6e2c982458f75954d4e8d9606d4c4d7c.zip
Notes
Diffstat (limited to 'net/openntpd')
-rw-r--r--net/openntpd/Makefile32
-rw-r--r--net/openntpd/distinfo6
-rw-r--r--net/openntpd/files/adjfreq.c30
-rw-r--r--net/openntpd/files/arc4random.c68
-rw-r--r--net/openntpd/files/compat.h25
-rw-r--r--net/openntpd/files/ntpd.conf12
-rw-r--r--net/openntpd/files/patch-Makefile20
-rw-r--r--net/openntpd/files/patch-log.c12
-rw-r--r--net/openntpd/files/patch-ntp.c219
-rw-r--r--net/openntpd/files/patch-ntpd.889
-rw-r--r--net/openntpd/files/patch-ntpd.c24
-rw-r--r--net/openntpd/files/patch-ntpd.conf.577
-rw-r--r--net/openntpd/files/patch-ntpd.h16
-rw-r--r--net/openntpd/files/patch-parse.y21
-rw-r--r--net/openntpd/pkg-descr2
-rw-r--r--net/openntpd/pkg-plist2
16 files changed, 591 insertions, 64 deletions
diff --git a/net/openntpd/Makefile b/net/openntpd/Makefile
index ad67f78981ac..87550f78fe39 100644
--- a/net/openntpd/Makefile
+++ b/net/openntpd/Makefile
@@ -6,27 +6,39 @@
#
PORTNAME= openntpd
-PORTVERSION= 3.9p1
-PORTREVISION= 2
+PORTVERSION= 4.4
PORTEPOCH= 2
CATEGORIES= net
-MASTER_SITES= ftp://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/ \
- ftp://ftp.kd85.com/pub/OpenBSD/OpenNTPD/ \
- ftp://ftp.jp.openbsd.org/pub/OpenBSD/OpenNTPD/
+MASTER_SITES= ${MASTER_SITE_OPENBSD}
+MASTER_SITE_SUBDIR= OpenNTPD
+EXTRACT_SUFX= .tgz
MAINTAINER= naddy@FreeBSD.org
COMMENT= OpenBSD's Network Time Protocol daemon
USE_RC_SUBR= openntpd
-GNU_CONFIGURE= yes
+
+WRKSRC= ${WRKDIR}/ntpd
MAKE_JOBS_SAFE= yes
MAN5= ntpd.conf.5
MAN8= ntpd.8
+.include <bsd.port.pre.mk>
+
+# requires adjtime(NULL, &olddelta) by unprivileged user
+.if ${OSVERSION} < 700000
+IGNORE= is unsupported prior to FreeBSD 7.0
+.endif
+
+post-extract:
+.for i in compat.h adjfreq.c arc4random.c
+ @${CP} ${FILESDIR}/$i ${WRKSRC}
+.endfor
+
pre-build:
${REINPLACE_CMD} -e 's,%%PREFIX%%,${PREFIX},g' \
- ${WRKSRC}/ntpd.conf.5 ${WRKSRC}/ntpd.8
+ ${WRKSRC}/ntpd.h ${WRKSRC}/ntpd.conf.5 ${WRKSRC}/ntpd.8
do-install:
@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
@@ -34,9 +46,9 @@ do-install:
${INSTALL_MAN} ${WRKSRC}/ntpd.conf.5 ${PREFIX}/man/man5
${INSTALL_MAN} ${WRKSRC}/ntpd.8 ${PREFIX}/man/man8
@${MKDIR} ${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKSRC}/ntpd.conf ${EXAMPLESDIR}
+ ${INSTALL_DATA} ${FILESDIR}/ntpd.conf ${EXAMPLESDIR}
@if [ ! -f ${PREFIX}/etc/ntpd.conf ]; then \
- ${CP} -p ${EXAMPLESDIR}/ntpd.conf ${PREFIX}/etc; \
+ ${CP} ${EXAMPLESDIR}/ntpd.conf ${PREFIX}/etc; \
fi
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
diff --git a/net/openntpd/distinfo b/net/openntpd/distinfo
index 94181c1cdda4..7e06ec18385a 100644
--- a/net/openntpd/distinfo
+++ b/net/openntpd/distinfo
@@ -1,3 +1,3 @@
-MD5 (openntpd-3.9p1.tar.gz) = afc34175f38d08867c1403d9008600b3
-SHA256 (openntpd-3.9p1.tar.gz) = 83dd7c1e8ec8b4567afe49af539271b5a73562fb7a3ca51df73eccba89ec8c49
-SIZE (openntpd-3.9p1.tar.gz) = 152700
+MD5 (openntpd-4.4.tgz) = 407d1818ad2d5f1c970baa91fa68d2e3
+SHA256 (openntpd-4.4.tgz) = b7b788e28ebbaafa89784978c02ea499dc65fb8db91a969152e73e3004c21741
+SIZE (openntpd-4.4.tgz) = 27262
diff --git a/net/openntpd/files/adjfreq.c b/net/openntpd/files/adjfreq.c
new file mode 100644
index 000000000000..6141f25cdd6f
--- /dev/null
+++ b/net/openntpd/files/adjfreq.c
@@ -0,0 +1,30 @@
+/*
+ * This file is in the public domain.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/timex.h>
+
+#include "ntpd.h"
+
+int
+adjfreq(const int64_t *freq, int64_t *oldfreq)
+{
+ struct timex t;
+
+ if (oldfreq) {
+ t.modes = 0;
+ if (ntp_adjtime(&t) == -1)
+ return -1;
+ *oldfreq = (int64_t)t.freq * (1<<16) * 1000;
+ }
+ if (freq) {
+ t.modes = MOD_FREQUENCY;
+ t.freq = *freq / ((1<<16) * 1000);
+ if (ntp_adjtime(&t) == -1)
+ return -1;
+ }
+ return 0;
+}
diff --git a/net/openntpd/files/arc4random.c b/net/openntpd/files/arc4random.c
new file mode 100644
index 000000000000..f28b0ba11e7b
--- /dev/null
+++ b/net/openntpd/files/arc4random.c
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 1999,2000,2004 Damien Miller <djm@mindrot.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#include "ntpd.h"
+
+/*
+ * Calculate a uniformly distributed random number less than upper_bound
+ * avoiding "modulo bias".
+ *
+ * Uniformity is achieved by generating new random numbers until the one
+ * returned is outside the range [0, 2**32 % upper_bound). This
+ * guarantees the selected random number will be inside
+ * [2**32 % upper_bound, 2**32) which maps back to [0, upper_bound)
+ * after reduction modulo upper_bound.
+ */
+u_int32_t
+arc4random_uniform(u_int32_t upper_bound)
+{
+ u_int32_t r, min;
+
+ if (upper_bound < 2)
+ return 0;
+
+#if (ULONG_MAX > 0xffffffffUL)
+ min = 0x100000000UL % upper_bound;
+#else
+ /* Calculate (2**32 % upper_bound) avoiding 64-bit math */
+ if (upper_bound > 0x80000000)
+ min = 1 + ~upper_bound; /* 2**32 - upper_bound */
+ else {
+ /* (2**32 - (x * 2)) % x == 2**32 % x when x <= 2**31 */
+ min = ((0xffffffff - (upper_bound * 2)) + 1) % upper_bound;
+ }
+#endif
+
+ /*
+ * This could theoretically loop forever but each retry has
+ * p > 0.5 (worst case, usually far better) of selecting a
+ * number inside the range we need, so it should rarely need
+ * to re-roll.
+ */
+ for (;;) {
+ r = arc4random();
+ if (r >= min)
+ break;
+ }
+
+ return r % upper_bound;
+}
diff --git a/net/openntpd/files/compat.h b/net/openntpd/files/compat.h
new file mode 100644
index 000000000000..47050687b460
--- /dev/null
+++ b/net/openntpd/files/compat.h
@@ -0,0 +1,25 @@
+/*
+ * This file is in the public domain.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef SA_LEN
+# define SA_LEN(x) ((x)->sa_len)
+#endif
+
+#ifndef EAI_NODATA
+# define EAI_NODATA EAI_NONAME
+#endif
+
+#ifndef __dead
+# define __dead
+#endif
+
+#undef HAVE_SENSORS
+
+/* adjfreq.c */
+int adjfreq(const int64_t *, int64_t *);
+
+/* arc4random.c */
+u_int32_t arc4random_uniform(u_int32_t);
diff --git a/net/openntpd/files/ntpd.conf b/net/openntpd/files/ntpd.conf
new file mode 100644
index 000000000000..85748ec9f18a
--- /dev/null
+++ b/net/openntpd/files/ntpd.conf
@@ -0,0 +1,12 @@
+# $FreeBSD$
+# sample ntpd configuration file, see ntpd.conf(5)
+
+# Addresses to listen on (ntpd does not listen by default)
+#listen on *
+
+# sync to a single server
+#server ntp.example.org
+
+# use a random selection of NTP Pool Time Servers
+# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
+servers pool.ntp.org
diff --git a/net/openntpd/files/patch-Makefile b/net/openntpd/files/patch-Makefile
new file mode 100644
index 000000000000..c78ef017030e
--- /dev/null
+++ b/net/openntpd/files/patch-Makefile
@@ -0,0 +1,20 @@
+$FreeBSD$
+--- Makefile.orig 2009-08-01 17:38:53.000000000 +0200
++++ Makefile 2009-08-01 18:21:05.000000000 +0200
+@@ -4,7 +4,7 @@
+
+ PROG= ntpd
+ SRCS= ntpd.c buffer.c log.c imsg.c ntp.c ntp_msg.c parse.y config.c \
+- server.c client.c sensors.c util.c
++ server.c client.c util.c adjfreq.c arc4random.c
+ CFLAGS+= -Wall -I${.CURDIR}
+ CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes
+ CFLAGS+= -Wmissing-declarations
+@@ -13,4 +13,7 @@ CFLAGS+= -Wsign-compare
+ YFLAGS=
+ MAN= ntpd.8 ntpd.conf.5
+
++DPADD= ${LIBMD}
++LDADD= -lmd
++
+ .include <bsd.prog.mk>
diff --git a/net/openntpd/files/patch-log.c b/net/openntpd/files/patch-log.c
index 95cb3fbb0f51..3cd0f2e443ed 100644
--- a/net/openntpd/files/patch-log.c
+++ b/net/openntpd/files/patch-log.c
@@ -1,9 +1,7 @@
-
$FreeBSD$
-
---- log.c.orig
-+++ log.c
-@@ -28,6 +28,10 @@
+--- log.c.orig 2007-08-22 23:04:30.000000000 +0200
++++ log.c 2009-08-01 22:08:01.000000000 +0200
+@@ -26,6 +26,10 @@
#include "ntpd.h"
@@ -12,9 +10,9 @@ $FreeBSD$
+#endif
+
int debug;
+ extern int debugsyslog;
- void logit(int, const char *, ...);
-@@ -40,7 +44,7 @@
+@@ -39,7 +43,7 @@ log_init(int n_debug)
debug = n_debug;
if (!debug)
diff --git a/net/openntpd/files/patch-ntp.c b/net/openntpd/files/patch-ntp.c
new file mode 100644
index 000000000000..819f7439768f
--- /dev/null
+++ b/net/openntpd/files/patch-ntp.c
@@ -0,0 +1,219 @@
+$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 @@
+ #include "ntpd.h"
+
+ #define PFD_PIPE_MAIN 0
++#ifdef HAVE_SENSORS
+ #define PFD_HOTPLUG 1
+ #define PFD_MAX 2
++#else
++#define PFD_MAX 1
++#endif
+
+ volatile sig_atomic_t ntp_quit = 0;
+ volatile sig_atomic_t ntp_report = 0;
+@@ -69,7 +73,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;
++#ifdef HAVE_SENSORS
++ int hotplugfd;
++#endif
++ int nullfd;
+ 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
+ struct listen_addr *la;
+ struct ntp_peer *p;
+ struct ntp_peer **idx2peer = NULL;
++#ifdef HAVE_SENSORS
+ struct ntp_sensor *s, *next_s;
++#endif
+ struct timespec tp;
+ struct stat stb;
+- time_t nextaction, last_sensor_scan = 0;
++ time_t nextaction;
++#ifdef HAVE_SENSORS
++ time_t last_sensor_scan = 0;
++#endif
+ void *newp;
+
+ switch (pid = fork()) {
+@@ -105,7 +117,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+
+ if ((nullfd = open(_PATH_DEVNULL, O_RDWR, 0)) == -1)
+ fatal(NULL);
++#ifdef HAVE_SENSORS
+ 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
+ conf->status.precision = a;
+ conf->scale = 1;
+
++#ifdef HAVE_SENSORS
+ sensor_init();
++#endif
+
+ log_info("ntp engine ready");
+
+@@ -210,8 +226,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;
++#ifdef HAVE_SENSORS
+ pfd[PFD_HOTPLUG].fd = hotplugfd;
+ pfd[PFD_HOTPLUG].events = POLLIN;
++#endif
+
+ i = PFD_MAX;
+ TAILQ_FOREACH(la, &conf->listen_addrs, entry) {
+@@ -265,6 +283,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+ }
+ }
+
++#ifdef HAVE_SENSORS
+ 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
+ if (!TAILQ_EMPTY(&conf->ntp_conf_sensors) && sensors_cnt == 0 &&
+ nextaction > last_sensor_scan + SENSOR_SCAN_INTERVAL)
+ nextaction = last_sensor_scan + SENSOR_SCAN_INTERVAL;
++#endif
+ sensors_cnt = 0;
++#ifdef HAVE_SENSORS
+ 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
+ if (s->next > 0 && s->next < nextaction)
+ nextaction = s->next;
+ }
++#endif
+
+ if (conf->settime &&
+ ((trial_cnt > 0 && sent_cnt == 0) ||
+@@ -312,10 +334,12 @@ ntp_main(int pipe_prnt[2], struct ntpd_c
+ ntp_quit = 1;
+ }
+
++#ifdef HAVE_SENSORS
+ if (nfds > 0 && pfd[PFD_HOTPLUG].revents & (POLLIN|POLLERR)) {
+ nfds--;
+ sensor_hotplugevent(hotplugfd);
+ }
++#endif
+
+ for (j = 1; 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
+ ntp_quit = 1;
+ }
+
++#ifdef HAVE_SENSORS
+ for (s = TAILQ_FIRST(&conf->ntp_sensors); s != NULL;
+ s = next_s) {
+ next_s = TAILQ_NEXT(s, entry);
+ if (s->next <= getmonotime())
+ sensor_query(s);
+ }
++#endif
+ report_peers(ntp_report);
+ ntp_report = 0;
+ }
+@@ -511,7 +537,9 @@ int
+ priv_adjtime(void)
+ {
+ struct ntp_peer *p;
++#ifdef HAVE_SENSORS
+ struct ntp_sensor *s;
++#endif
+ int offset_cnt = 0, i = 0, j;
+ struct ntp_offset **offsets;
+ double offset_median;
+@@ -524,11 +552,13 @@ priv_adjtime(void)
+ offset_cnt += p->weight;
+ }
+
++#ifdef HAVE_SENSORS
+ TAILQ_FOREACH(s, &conf->ntp_sensors, entry) {
+ if (!s->update.good)
+ continue;
+ offset_cnt += s->weight;
+ }
++#endif
+
+ if (offset_cnt == 0)
+ return (1);
+@@ -543,12 +573,14 @@ priv_adjtime(void)
+ offsets[i++] = &p->update;
+ }
+
++#ifdef HAVE_SENSORS
+ TAILQ_FOREACH(s, &conf->ntp_sensors, entry) {
+ if (!s->update.good)
+ continue;
+ for (j = 0; j < s->weight; j++)
+ offsets[i++] = &s->update;
+ }
++#endif
+
+ qsort(offsets, offset_cnt, sizeof(struct ntp_offset *), offset_compare);
+
+@@ -585,11 +617,13 @@ priv_adjtime(void)
+ p->reply[i].offset -= offset_median;
+ p->update.good = 0;
+ }
++#ifdef HAVE_SENSORS
+ TAILQ_FOREACH(s, &conf->ntp_sensors, entry) {
+ for (i = 0; i < SENSOR_OFFSETS; i++)
+ s->offsets[i].offset -= offset_median;
+ s->update.offset -= offset_median;
+ }
++#endif
+
+ return (0);
+ }
+@@ -679,16 +713,20 @@ report_peers(int always)
+ u_int badpeers = 0;
+ u_int badsensors = 0;
+ struct ntp_peer *p;
++#ifdef HAVE_SENSORS
+ struct ntp_sensor *s;
++#endif
+
+ TAILQ_FOREACH(p, &conf->ntp_peers, entry) {
+ if (p->trustlevel < TRUSTLEVEL_BADPEER)
+ badpeers++;
+ }
++#ifdef HAVE_SENSORS
+ TAILQ_FOREACH(s, &conf->ntp_sensors, entry) {
+ if (!s->update.good)
+ badsensors++;
+ }
++#endif
+
+ now = time(NULL);
+ if (!always) {
+@@ -718,6 +756,7 @@ report_peers(int always)
+ }
+ }
+ }
++#ifdef HAVE_SENSORS
+ 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)
+ log_warnx("bad sensor %s", s->device);
+ }
+ }
++#endif
+ }
+
diff --git a/net/openntpd/files/patch-ntpd.8 b/net/openntpd/files/patch-ntpd.8
index 4c601e1953f0..53e763992ac0 100644
--- a/net/openntpd/files/patch-ntpd.8
+++ b/net/openntpd/files/patch-ntpd.8
@@ -1,55 +1,70 @@
-
$FreeBSD$
-
---- ntpd.8.orig
-+++ ntpd.8
-@@ -53,6 +53,20 @@
- .Xr adjtime 2
- will be logged.
- .Pp
-+.Nm
-+is usually started at boot time, and can be enabled by
-+setting the following in
-+.Pa /etc/rc.conf :
-+.Pp
-+.Dl openntpd_enable=\&"YES\&"
-+.Pp
-+See
-+.Xr rc 8
-+and
-+.Xr rc.conf 5
-+for more information on the boot process
-+and enabling daemons.
-+.Pp
- When
+--- ntpd.8.orig 2009-08-01 21:32:41.000000000 +0200
++++ ntpd.8 2009-08-01 21:40:29.000000000 +0200
+@@ -29,8 +29,7 @@
+ .Sh DESCRIPTION
+ The
+ .Nm
+-daemon synchronizes the local clock to one or more remote NTP servers
+-or local timedelta sensors.
++daemon synchronizes the local clock to one or more remote NTP servers.
.Nm
- starts up, it reads settings from a configuration file,
-@@ -72,7 +86,7 @@
+ can also act as an NTP server itself,
+ redistributing the local time.
+@@ -52,7 +51,7 @@ Use
.Ar file
as the configuration file,
instead of the default
-.Pa /etc/ntpd.conf .
+.Pa %%PREFIX%%/etc/ntpd.conf .
- .It Fl S
- Do not set the time immediately at startup.
- This is the default.
-@@ -86,8 +100,8 @@
- .Nm .
- .El
+ .It Fl n
+ Configtest mode.
+ Only check the configuration file for validity.
+@@ -91,19 +90,19 @@ will be logged.
+ After the local clock is synchronized,
+ .Nm
+ adjusts the clock frequency using the
+-.Xr adjfreq 2
++.Xr ntp_adjtime 2
+ system call to compensate for systematic drift.
+ .Pp
+ .Nm
+ is usually started at boot time, and can be enabled by
+ setting
+-.Va ntpd_flags
++.Va openntpd_enable
+ in
+-.Pa /etc/rc.conf.local .
++.Pa /etc/rc.conf .
+ See
+ .Xr rc 8
+ and
+-.Xr rc.conf 8
++.Xr rc.conf 5
+ for more information on the boot process
+ and enabling daemons.
+ .Pp
+@@ -123,19 +122,19 @@ receives a
+ signal, it writes its peer and sensor status to
+ .Xr syslog 3 .
.Sh FILES
--.Bl -tag -width "/etc/ntpd.confXXX" -compact
+-.Bl -tag -width "/var/db/ntpd.driftXXX" -compact
-.It Pa /etc/ntpd.conf
+.Bl -tag -width "%%PREFIX%%/etc/ntpd.confXXX" -compact
+.It Pa %%PREFIX%%/etc/ntpd.conf
- default
- .Nm
- configuration file
-@@ -96,6 +110,8 @@
+ Default configuration file.
+ .It Pa /var/db/ntpd.drift
+ Drift file.
+ .El
+ .Sh SEE ALSO
.Xr date 1 ,
+-.Xr adjfreq 2 ,
.Xr adjtime 2 ,
++.Xr ntp_adjtime 2 ,
.Xr ntpd.conf 5 ,
+.Xr rc.conf 5 ,
-+.Xr rc 8 ,
+ .Xr rc 8 ,
+-.Xr rc.conf 8 ,
.Xr rdate 8 ,
.Xr timed 8
.Rs
diff --git a/net/openntpd/files/patch-ntpd.c b/net/openntpd/files/patch-ntpd.c
new file mode 100644
index 000000000000..92cefab02d39
--- /dev/null
+++ b/net/openntpd/files/patch-ntpd.c
@@ -0,0 +1,24 @@
+$FreeBSD$
+
+Drift file in ppm for compatibility with reference ntpd.
+
+--- ntpd.c.orig 2009-08-01 22:17:42.000000000 +0200
++++ ntpd.c 2009-08-01 22:18:51.000000000 +0200
+@@ -449,7 +449,7 @@ readfreq(void)
+ log_warn("adjfreq failed");
+ else if (current == 0) {
+ if (fscanf(fp, "%le", &d) == 1)
+- ntpd_adjfreq(d, 0);
++ ntpd_adjfreq(d / 1e6, 0);
+ }
+ fclose(fp);
+ }
+@@ -470,7 +470,7 @@ writefreq(double d)
+ return 0;
+ }
+
+- fprintf(fp, "%e\n", d);
++ fprintf(fp, "%e\n", d * 1e6);
+ r = ferror(fp);
+ if (fclose(fp) != 0 || r != 0) {
+ if (warnonce) {
diff --git a/net/openntpd/files/patch-ntpd.conf.5 b/net/openntpd/files/patch-ntpd.conf.5
index f3f6710203bb..c323ed28e76e 100644
--- a/net/openntpd/files/patch-ntpd.conf.5
+++ b/net/openntpd/files/patch-ntpd.conf.5
@@ -1,9 +1,68 @@
-
$FreeBSD$
-
---- ntpd.conf.5.orig Sun Jul 18 14:25:21 2004
-+++ ntpd.conf.5 Sun Jul 18 14:25:44 2004
-@@ -80,8 +80,8 @@
+--- ntpd.conf.5.orig 2009-08-01 21:41:54.000000000 +0200
++++ ntpd.conf.5 2009-08-01 21:47:49.000000000 +0200
+@@ -28,7 +28,7 @@ configuration file.
+ The optional
+ .Ic weight
+ keyword permits finer control over the relative importance
+-of time sources (servers or sensor devices).
++of time sources.
+ Weights are specified in the range 1 to 10;
+ if no weight is given,
+ the default is 1.
+@@ -70,51 +70,6 @@ or
+ listen on 127.0.0.1
+ listen on ::1
+ .Ed
+-.It Xo Ic sensor Ar device
+-.Op Ic correction Ar microseconds
+-.Op Ic weight Ar weight-value
+-.Op Ic refid Ar string
+-.Xc
+-Specify a timedelta sensor device
+-.Xr ntpd 8
+-should use.
+-The sensor can be specified multiple times:
+-.Xr ntpd 8
+-will use each given sensor that actually exists.
+-Non-existent sensors are ignored.
+-If
+-.Sq *
+-is given as device name,
+-.Xr ntpd 8
+-will use all timedelta sensors it finds.
+-.Xr ntpd 8
+-does not use any timedelta sensor by default.
+-For example:
+-.Bd -literal -offset indent
+-sensor *
+-sensor udcf0
+-.Ed
+-.Pp
+-An optional correction in microseconds can be given to compensate
+-for the sensor's offset.
+-The maximum correction is 127 seconds.
+-For example, if a DCF77 receiver is lagging 15ms behind
+-actual time:
+-.Bd -literal -offset indent
+-sensor udcf0 correction 15000
+-.Ed
+-.Pp
+-An optional reference ID string - up to 4 ASCII characters - can be
+-given to publish the sensor type to clients.
+-RFC 2030 suggests some common reference identifiers, but new identifiers
+-"can be contrived as appropriate."
+-If an ID string is not given,
+-.Xr ntpd 8
+-will use a generic reference ID.
+-For example:
+-.Bd -literal -offset indent
+-sensor msts0 refid GPS
+-.Ed
+ .It Xo Ic server Ar address
+ .Op Ic weight Ar weight-value
+ .Xc
+@@ -157,15 +112,14 @@ servers pool.ntp.org
.Ed
.El
.Sh FILES
@@ -14,3 +73,11 @@ $FreeBSD$
default
.Xr ntpd 8
configuration file
+ .El
+ .Sh SEE ALSO
+-.Xr ntpd 8 ,
+-.Xr sysctl 8
++.Xr ntpd 8
+ .Sh HISTORY
+ The
+ .Nm
diff --git a/net/openntpd/files/patch-ntpd.h b/net/openntpd/files/patch-ntpd.h
new file mode 100644
index 000000000000..3bec8635593b
--- /dev/null
+++ b/net/openntpd/files/patch-ntpd.h
@@ -0,0 +1,16 @@
+$FreeBSD$
+--- ntpd.h.orig 2009-01-16 15:03:38.000000000 +0100
++++ ntpd.h 2009-08-01 22:31:40.000000000 +0200
+@@ -29,10 +29,11 @@
+ #include <pwd.h>
+ #include <stdarg.h>
+
++#include "compat.h"
+ #include "ntp.h"
+
+ #define NTPD_USER "_ntp"
+-#define CONFFILE "/etc/ntpd.conf"
++#define CONFFILE "%%PREFIX%%/etc/ntpd.conf"
+ #define DRIFTFILE "/var/db/ntpd.drift"
+
+ #define READ_BUF_SIZE 8192
diff --git a/net/openntpd/files/patch-parse.y b/net/openntpd/files/patch-parse.y
new file mode 100644
index 000000000000..abe486d53c8e
--- /dev/null
+++ b/net/openntpd/files/patch-parse.y
@@ -0,0 +1,21 @@
+$FreeBSD$
+--- parse.y.orig 2009-08-01 20:29:44.000000000 +0200
++++ parse.y 2009-08-01 21:17:58.000000000 +0200
+@@ -200,6 +200,7 @@ main : LISTEN ON address {
+ free($2);
+ }
+ | SENSOR STRING sensor_opts {
++#ifdef HAVE_SENSORS
+ struct ntp_conf_sensor *s;
+
+ s = new_sensor($2);
+@@ -208,6 +209,9 @@ main : LISTEN ON address {
+ s->refstr = $3.refstr;
+ free($2);
+ TAILQ_INSERT_TAIL(&conf->ntp_conf_sensors, s, entry);
++#else
++ yyerror("sensor devices not supported");
++#endif
+ }
+ ;
+
diff --git a/net/openntpd/pkg-descr b/net/openntpd/pkg-descr
index 4d10cd4e6808..2eb0ab73c6fa 100644
--- a/net/openntpd/pkg-descr
+++ b/net/openntpd/pkg-descr
@@ -1,4 +1,4 @@
-OpenBSD's ntpd, portable version.
+OpenBSD's ntpd.
The ntpd daemon implements the Simple Network Time Protocol version 4 as
described in RFC 2030 and the Network Time Protocol version 3 as de-
diff --git a/net/openntpd/pkg-plist b/net/openntpd/pkg-plist
index 0dc7324fa854..17a90a3d1422 100644
--- a/net/openntpd/pkg-plist
+++ b/net/openntpd/pkg-plist
@@ -2,5 +2,5 @@
sbin/ntpd
@unexec if cmp -s %D/etc/ntpd.conf %D/%%EXAMPLESDIR%%/ntpd.conf; then rm -f %D/etc/ntpd.conf; fi
%%EXAMPLESDIR%%/ntpd.conf
-@exec if [ ! -f %D/etc/ntpd.conf ]; then cp -p %D/%F %D/etc; fi
+@exec if [ ! -f %D/etc/ntpd.conf ]; then cp %D/%F %D/etc; fi
@dirrm %%EXAMPLESDIR%%