<pre style='margin:0'>
tobypeterson pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/515c6c7c39ab32047865a3dca076e8ca8831c468">https://github.com/macports/macports-ports/commit/515c6c7c39ab32047865a3dca076e8ca8831c468</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 515c6c7 ntpsec: new port
</span>515c6c7 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 515c6c7c39ab32047865a3dca076e8ca8831c468
</span>Author: Leonardo Brondani Schenkel <leonardo@schenkel.net>
AuthorDate: Tue Feb 14 15:57:08 2017 +0100
<span style='display:block; white-space:pre;color:#404040;'> ntpsec: new port
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> From the homepage <https://www.ntpsec.org>:
</span><span style='display:block; white-space:pre;color:#404040;'> > NTPsec project - a secure, hardened, and improved implementation of Network
</span><span style='display:block; white-space:pre;color:#404040;'> > Time Protocol derived from NTP Classic, Dave Mills’s original.
</span><span style='display:block; white-space:pre;color:#404040;'> >
</span><span style='display:block; white-space:pre;color:#404040;'> > NTPsec, as its name implies, is a more secure NTP. Our goal is to deliver
</span><span style='display:block; white-space:pre;color:#404040;'> > code that can be used with confidence in deployments with the most stringent
</span><span style='display:block; white-space:pre;color:#404040;'> > security, availability, and assurance requirements.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This port is a drop-in replacement for ntp, with hardened internals. It should
</span><span style='display:block; white-space:pre;color:#404040;'> behave identically in most circumstances, except that obsolete and/or insecure
</span><span style='display:block; white-space:pre;color:#404040;'> features have been removed.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The current version of this port incorporates two newer patches from upstream
</span><span style='display:block; white-space:pre;color:#404040;'> to fix a compilation error when leap second smearing is enabled.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The example file included in this port is the same example file included in
</span><span style='display:block; white-space:pre;color:#404040;'> the ntp port, but with small adaptations for changes in ntpsec.
</span>---
sysutils/ntpsec/Portfile | 83 +++++++
sysutils/ntpsec/files/ntp.conf | 9 +
sysutils/ntpsec/files/patch-macros.diff | 370 ++++++++++++++++++++++++++++++++
sysutils/ntpsec/files/patch-smear.diff | 27 +++
4 files changed, 489 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/Portfile b/sysutils/ntpsec/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9fec7ea
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/ntpsec/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,83 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup waf 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name ntpsec
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 0.9.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories sysutils net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {schenkel.net:leonardo @lbschenkel} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description A secure, hardened, and improved implementation of NTP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license BSD-2-Clause BSD-3-Clause CC-BY-4.0 NTP MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description A secure, hardened, and improved implementation of Network \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Time Protocol derived from NTP Classic, Dave Mills’s original.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://www.ntpsec.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts ntp openntpd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites ftp://ftp.ntpsec.org/pub/releases/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 9527cc6bc78f1a02c868fbb6a1fb583461b8fa81 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 9d15ac59b67911eb1b42fe5916e8d00ded8b71ba34f1ab4fc0f251fc0d90d5e5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build port:bison
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib path:lib/libssl.dylib:openssl port:python${python.version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles patch-macros.diff patch-smear.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_configure yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args --alltests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --define=CONFIG_FILE=${prefix}/etc/ntp.conf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-manpage \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --pythondir=${python.pkgd}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.cmd ${build.cmd}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default_variants +crypto +doc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant classic description {Enable classic mode} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --enable-classic-mode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant crypto description {Enable crypto support (depends on OpenSSL)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append path:lib/libssl.dylib:openssl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --enable-crypto
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant doc description {Build manpages and HTML documentation} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append port:asciidoc port:docbook-xsl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --enable-doc --htmldir=${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-delete --disable-manpage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant refclock description {Enable all reference clocks} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --refclock=all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant smear description {Enable smearing of leap seconds} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --enable-leap-smear
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # build is not respecting --mandir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -W ${worksrcpath}/wafhelpers \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "s|\${PREFIX}/man/|\${PREFIX}/share/man/|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asciidoc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -o root -m 644 ${filespath}/ntp.conf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/etc/ntp.conf.dist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 755 -d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/var/db \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/var/run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.keepdirs \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/var/db \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/var/run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-activate {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![file exists ${prefix}/etc/ntp.conf]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file copy ${prefix}/etc/ntp.conf.dist ${prefix}/etc/ntp.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.create yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.netchange yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.executable ${prefix}/sbin/ntpd -n -g -p ${prefix}/var/run/ntpd.pid -f ${prefix}/var/db/ntp.drift -c ${prefix}/etc/ntp.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/files/ntp.conf b/sysutils/ntpsec/files/ntp.conf
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..82c9057
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/ntpsec/files/ntp.conf
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Limit network machines to time queries only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+restrict default kod limited nomodify nopeer noquery
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+restrict -6 default kod limited nomodify nopeer noquery
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# localhost is unrestricted
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+restrict 127.0.0.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+restrict -6 ::1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+server time.apple.com
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/files/patch-macros.diff b/sysutils/ntpsec/files/patch-macros.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..c3dbf32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/ntpsec/files/patch-macros.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,370 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/include/ntp_fp.h b/include/ntp_fp.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 82d88a9..5098508 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/include/ntp_fp.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/include/ntp_fp.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -188,72 +188,79 @@ typedef uint32_t u_fp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <math.h> /* ldexp() */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define M_DTOLFP(d, r_ui, r_uf) /* double to l_fp */ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- do { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint64_t q_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int M_isneg; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_tmp = (d); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- M_isneg = (d_tmp < 0.); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (M_isneg) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_tmp = -d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- q_tmp = (uint64_t)ldexp(d_tmp, 32); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (M_isneg) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- q_tmp = ~q_tmp + 1; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (r_uf) = (uint32_t)q_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (r_ui) = (uint32_t)(q_tmp >> 32); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } while (false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline l_fp dtolfp(double d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* double to l_fp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double d_tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint64_t q_tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int M_isneg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l_fp r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d_tmp = (d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ M_isneg = (d_tmp < 0.);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (M_isneg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d_tmp = -d_tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ q_tmp = (uint64_t)ldexp(d_tmp, 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (M_isneg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ q_tmp = ~q_tmp + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setlfpfrac(r, (uint32_t)q_tmp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setlfpuint(r, (uint32_t)(q_tmp >> 32));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define M_LFPTOD(r_ui, r_uf, d) /* l_fp to double */ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- do { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint64_t q_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int M_isneg; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- q_tmp = ((uint64_t)(r_ui) << 32) + (r_uf); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- M_isneg = M_ISNEG(r_ui); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (M_isneg) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- q_tmp = ~q_tmp + 1; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_tmp = ldexp((double)q_tmp, -32); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (M_isneg) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- d_tmp = -d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (d) = d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } while (false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline double lfptod(l_fp r)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* l_fp to double */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint64_t q_tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int M_isneg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ q_tmp = ((uint64_t)lfpuint(r) << 32) + lfpfrac(r);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ M_isneg = M_ISNEG(lfpuint(r));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (M_isneg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ q_tmp = ~q_tmp + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d = ldexp((double)q_tmp, -32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (M_isneg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ d = -d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else /* use only 32 bit unsigned values */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define M_DTOLFP(d, r_ui, r_uf) /* double to l_fp */ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- do { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if ((d_tmp = (d)) < 0) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (r_ui) = (uint32_t)(-d_tmp); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (r_uf) = (uint32_t)(-(d_tmp + (double)(r_ui)) * FRAC); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- M_NEG((r_ui), (r_uf)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } else { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (r_ui) = (uint32_t)d_tmp; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (r_uf) = (uint32_t)((d_tmp - (double)(r_ui)) * FRAC); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } while (0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define M_LFPTOD(r_ui, r_uf, d) /* l_fp to double */ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- do { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t l_thi, l_tlo; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l_thi = (r_ui); l_tlo = (r_uf); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (M_ISNEG(l_thi)) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- M_NEG(l_thi, l_tlo); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (d) = -((double)l_thi + (double)l_tlo / FRAC); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } else { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (d) = (double)l_thi + (double)l_tlo / FRAC; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } while (0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline l_fp dtolfp(double d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* double to l_fp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double d_tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l_fp r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((d_tmp = (d)) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setlfpuint(r, (uint32_t)(-d_tmp));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setlfpfrac(r, (uint32_t)(-(d_tmp + (double)lfpuint(r)) * FRAC));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ M_NEG((r_ui), (r_uf));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setlfpuint(r, (uint32_t)d_tmp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setlfpfrac(r, (uint32_t)((d_tmp - (double)lfpuint(r)) * FRAC));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define DTOLFP(d, v) M_DTOLFP((d), lfpuint(*v), lfpfrac(*v))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define LFPTOD(v, d) M_LFPTOD(lfpuint(*v), lfpfrac(*v), (d))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline double lfptod(l_fp r)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* l_fp to double */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t l_thi, l_tlo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l_thi = lfpuint(r); l_tlo = lfpfrac(r);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (M_ISNEG(l_thi)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ M_NEG(l_thi, l_tlo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (d) = -((double)l_thi + (double)l_tlo / FRAC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (d) = (double)l_thi + (double)l_tlo / FRAC;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Prototypes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libntp/systime.c b/libntp/systime.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 24a1c5c..6179d77 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/libntp/systime.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/libntp/systime.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -187,7 +187,7 @@ normalize_time(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Add in the fuzz.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dfuzz = rand * 2. / FRAC * sys_fuzz;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(dfuzz, &lfpfuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lfpfuzz = dtolfp(dfuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_ADD(&result, &lfpfuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -208,7 +208,7 @@ normalize_time(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dfuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lfpdelta = lfp_prev;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_SUB(&lfpdelta, &result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&lfpdelta, ddelta);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ddelta = lfptod(lfpdelta);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ msyslog(LOG_ERR,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "prev get_systime 0x%x.%08x is %.9f later than 0x%x.%08x",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lfpuint(lfp_prev), lfpfrac(lfp_prev),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -362,8 +362,8 @@ step_systime(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* get the complete jump distance as l_fp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(sys_residual, &fp_sys);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(step, &fp_ofs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fp_sys = dtolfp(sys_residual);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fp_ofs = dtolfp(step);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_ADD(&fp_ofs, &fp_sys);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* ---> time-critical path starts ---> */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/ntp_control.c b/ntpd/ntp_control.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index adca6c3..439c727 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/ntp_control.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/ntp_control.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1757,7 +1757,7 @@ ctl_putsys(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case CS_AUTHDELAY:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&sys_authdelay, dtemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dtemp = lfptod(sys_authdelay);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ctl_putdbl(sys_var[varid].text, dtemp * 1e3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/ntp_packetstamp.c b/ntpd/ntp_packetstamp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index fc1948c..e176348 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/ntp_packetstamp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/ntp_packetstamp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -190,7 +190,7 @@ fetch_packetstamp(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* USE_SCM_TIMESTAMP */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fuzz = ntp_random() * 2. / FRAC * sys_fuzz;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(fuzz, &lfpfuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lfpfuzz = dtolfp(fuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_ADD(&nts, &lfpfuzz);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef ENABLE_DEBUG_TIMING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dts = ts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0782fe7..a925da8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/ntp_proto.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/ntp_proto.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2670,7 +2670,7 @@ measure_tick_fuzz(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ max_repeats = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ repeats = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ changes = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(MINSTEP, &minstep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ minstep = dtolfp(MINSTEP);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ get_systime(&last);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = 0; i < MAXLOOPS && changes < MINCHANGES; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ get_systime(&val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2681,7 +2681,7 @@ measure_tick_fuzz(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ max_repeats = max(repeats, max_repeats);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ repeats = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ changes++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&ldiff, diff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ diff = lfptod(ldiff);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tick = min(diff, tick);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ repeats++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/ntp_refclock.c b/ntpd/ntp_refclock.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 82c6827..eb426b7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/ntp_refclock.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/ntp_refclock.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -364,7 +364,7 @@ refclock_process_offset(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pp->lastrec = lastrec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lftemp = lasttim;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_SUB(&lftemp, &lastrec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&lftemp, doffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ doffset = lfptod(lftemp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SAMPLE(doffset + fudge);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -408,7 +408,7 @@ refclock_process_f(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setlfpuint(offset, sec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setlfpfrac(offset, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(pp->nsec / 1e9, <emp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ltemp = dtolfp(pp->nsec / 1e9);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_ADD(&offset, <emp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ refclock_process_offset(pp, offset, pp->lastrec, fudge);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/refclock_gpsd.c b/ntpd/refclock_gpsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 09e3229..5afa6fc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/refclock_gpsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/refclock_gpsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -772,13 +772,13 @@ gpsd_control(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNUSED_ARG(out_st);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (peer == up->pps_peer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(pp->fudgetime1, &up->pps_fudge2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ up->pps_fudge2 = dtolfp(pp->fudgetime1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( ! (pp->sloppyclockflag & CLK_FLAG1))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ peer->flags &= ~FLAG_PPS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* save preprocessed fudge times */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(pp->fudgetime1, &up->pps_fudge);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(pp->fudgetime2, &up->ibt_fudge);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ up->pps_fudge = dtolfp(pp->fudgetime1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ up->ibt_fudge = dtolfp(pp->fudgetime2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (MODE_OP_MODE(up->mode ^ peer->ttl)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ leave_opmode(peer, up->mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/refclock_jupiter.c b/ntpd/refclock_jupiter.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c6f79ab..ce3cb60 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/refclock_jupiter.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/refclock_jupiter.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -714,7 +714,7 @@ jupiter_control(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pp = peer->procptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ instance = pp->unitptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(pp->fudgetime2, &instance->limit);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ instance->limit = dtolfp(pp->fudgetime2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Force positive value. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (L_ISNEG(&instance->limit))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_NEG(&instance->limit);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/refclock_nmea.c b/ntpd/refclock_nmea.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 74e5f8e..cc93831 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/refclock_nmea.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/refclock_nmea.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -721,7 +721,7 @@ refclock_ppsrelate(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pp_stamp = tspec_stamp_to_lfp(timeout);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pp_delta = *rd_stamp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_SUB(&pp_delta, &pp_stamp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&pp_delta, delta);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delta = lfptod(pp_delta);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delta += pp_fudge - *rd_fudge;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (fabs(delta) > 1.5)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return PPS_RELATE_NONE; /* PPS timeout control */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -744,7 +744,7 @@ refclock_ppsrelate(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* check against reftime if PPS PLL can be used */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pp_delta = *reftime;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ L_SUB(&pp_delta, &pp_stamp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&pp_delta, delta);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delta = lfptod(pp_delta);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delta += pp_fudge;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (fabs(delta) > 0.45)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return PPS_RELATE_EDGE; /* cannot PLL with PPS code */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/refclock_oncore.c b/ntpd/refclock_oncore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6dceab8..46c79a7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/refclock_oncore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/refclock_oncore.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1765,7 +1765,7 @@ oncore_get_timestamp(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ts_tmp = ts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setlfpuint(ts_tmp, 0); /* zero integer part */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&ts_tmp, dmy); /* convert fractional part to a double */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dmy = lfptod(ts_tmp); /* convert fractional part to a double */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ j = 1.0e9*dmy; /* then to integer ns */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Rsm = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpfrob/jitter.c b/ntpfrob/jitter.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b48656d..2d93505 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpfrob/jitter.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpfrob/jitter.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -84,7 +84,7 @@ void jitter(const iomode mode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (i = 0; i < NBUF; i ++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ get_clocktime(&tr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&tr, gtod[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ gtod[i] = lfptod(tr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tests/libntp/lfpfunc.c b/tests/libntp/lfpfunc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c768663..3266c91 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tests/libntp/lfpfunc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tests/libntp/lfpfunc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -131,20 +131,6 @@ static int l_fp_signum(const l_fp first)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return (lfpuint(first) || lfpfrac(first));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static double l_fp_convert_to_double(const l_fp first)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double res;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- LFPTOD(&first, res);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return res;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static l_fp l_fp_init_from_double( double rhs)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l_fp temp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(rhs, &temp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return temp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void l_fp_swap(l_fp * first, l_fp *second)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l_fp temp = *second;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -372,11 +358,11 @@ TEST(lfpfunc, FDF_RoundTrip) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (idx = 0; idx < addsub_cnt; ++idx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l_fp op1 = l_fp_init(addsub_tab[idx][0].h, addsub_tab[idx][0].l);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double op2 = l_fp_convert_to_double(op1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- l_fp op3 = l_fp_init_from_double(op2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double op2 = lfptod(op1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ l_fp op3 = dtolfp(op2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l_fp temp = l_fp_subtract(op1, op3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double d = l_fp_convert_to_double(temp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double d = lfptod(temp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST_ASSERT_DOUBLE_WITHIN(eps(op2), 0.0, fabs(d));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/files/patch-smear.diff b/sysutils/ntpsec/files/patch-smear.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e009547
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/ntpsec/files/patch-smear.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f753534..3ab6b0e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/ntp_proto.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/ntp_proto.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2298,7 +2298,7 @@ fast_xmit(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xpkt.refid = convertLFPToRefID(leap_smear.offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DPRINTF(2, ("fast_xmit: leap_smear.in_progress: refid %8x, smear %s\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ntohl(xpkt.refid),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- lfptoa(&leap_smear.offset, 8)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lfptoa(leap_smear.offset, 8)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xpkt.reftime = htonl_fp(this_ref_time);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/ntpd/ntp_timer.c b/ntpd/ntp_timer.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 05f2a00..2b9a302 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/ntpd/ntp_timer.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/ntpd/ntp_timer.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -479,7 +479,7 @@ check_leapsec(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Update the current leap smear offset, eventually 0.0 if outside smear interval.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DTOLFP(leap_smear.doffset, &leap_smear.offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ leap_smear.offset = dtolfp(leap_smear.doffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* ENABLE_LEAP_SMEAR */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Full hit. Eventually step the clock, but always
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>