<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/31b309b046489c03e5f9d1199e5de4f90916d50a">https://github.com/macports/macports-ports/commit/31b309b046489c03e5f9d1199e5de4f90916d50a</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 31b309b  ntpsec: Fixes build for macOS <10.13.
</span>31b309b is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 31b309b046489c03e5f9d1199e5de4f90916d50a
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sat Mar 17 20:30:20 2018 -0700

<span style='display:block; white-space:pre;color:#404040;'>    ntpsec: Fixes build for macOS <10.13.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    The 1.1.0 release of ntpsec included further desupport of macOS
</span><span style='display:block; white-space:pre;color:#404040;'>    such that it no longer builds on 10.12.  This change adds a patch
</span><span style='display:block; white-space:pre;color:#404040;'>    which reverts the offending changes, as well as making a few
</span><span style='display:block; white-space:pre;color:#404040;'>    additional changes to allow building on earlier OSX versions.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This code is also visible (for now) at:
</span><span style='display:block; white-space:pre;color:#404040;'>         https://gitlab.com/fhgwright/ntpsec/tree/NTPsec_1_1_0_macports
</span><span style='display:block; white-space:pre;color:#404040;'>    which is derived from:
</span><span style='display:block; white-space:pre;color:#404040;'>          https://gitlab.com/fhgwright/ntpsec/tree/NTPsec_1_1_0_fw
</span><span style='display:block; white-space:pre;color:#404040;'>    by excluding unnecessary changes for this context.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'>    Built and ran on MacPro 10.9, PowerBook 10.5, and VMs for 10.5-10.13.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/56087
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Also adds author as maintainer.
</span>---
 sysutils/ntpsec/Portfile                       |  12 +-
 sysutils/ntpsec/files/patch-PreHighSierra.diff | 814 +++++++++++++++++++++++++
 2 files changed, 819 insertions(+), 7 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/Portfile b/sysutils/ntpsec/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 75cd9b1..6108ab2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/ntpsec/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/ntpsec/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,8 +6,10 @@ PortGroup           python 1.0
</span> 
 name                ntpsec
 version             1.1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> categories          sysutils net
<span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers         {lbschenkel @lbschenkel} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {lbschenkel @lbschenkel} {fwright.net:fw @fhgwright} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    openmaintainer
</span> description         A secure, hardened, and improved implementation of NTP
 license             Permissive
 platforms           darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,6 +27,8 @@ checksums           rmd160  65e6f3a2339b98ffa0b0cdf7310dd850cd3082a6 \
</span> depends_build       port:bison
 depends_lib         path:lib/libssl.dylib:openssl port:python${python.version}
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-PreHighSierra.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-patch {
     foreach f {ntpdig ntpkeygen ntploggps ntplogtemp ntpmon ntpq ntpsnmpd ntpsweep ntptrace ntpviz ntpwait} {
         reinplace "s,^#!/usr/bin/env python,#!${python.bin}," ${worksrcpath}/ntpclients/$f.py
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -55,12 +59,6 @@ variant smear description {Enable smearing of leap seconds} {
</span>     configure.args-append   --enable-leap-smear
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.platform} eq "darwin" && ${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_error "${name} @${version} requires macOS 10.12 or greater."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return -code error "incompatible macOS version"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span> post-destroot {
     xinstall -o root -m 644 ${filespath}/ntp.conf \
         ${destroot}${prefix}/etc/ntp.conf.dist
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/files/patch-PreHighSierra.diff b/sysutils/ntpsec/files/patch-PreHighSierra.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..c591c67
</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-PreHighSierra.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,814 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- attic/digest-timing.c.orig     2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ attic/digest-timing.c  2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,6 +33,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <openssl/rand.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <openssl/objects.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "ntp_machine.h"        /* For clock_gettime fallback */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define UNUSED_ARG(arg)         ((void)(arg))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef EVP_MD_CTX_reset
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -43,6 +45,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define EVP_MD_CTX_reset(ctx) EVP_MD_CTX_init(ctx)
</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;'>++ * Pecking order for clock_gettime interval measurements
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * CLOCK_MONOTONIC_RAW is free of NTP adjustments
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * CLOCK_MONOTONIC is affected by NTP slewing but not step adjustments
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * CLOCK_REALTIME is affected by all NTP adjustments, including stepping
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Assuming this test isn't run while stepping is a possibility,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * even CLOCK_REALTIME is acceptable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(CLOCK_MONOTONIC_RAW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CLOCK_INTERVAL CLOCK_MONOTONIC_RAW
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(CLOCK_MONOTONIC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CLOCK_INTERVAL CLOCK_MONOTONIC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CLOCK_INTERVAL CLOCK_REALTIME
</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;'>+ /* Get timing for old slower way too.  Pre Feb 2018 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define DoSLOW 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -144,21 +163,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (NULL == digest) return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  clock_gettime(CLOCK_MONOTONIC, &start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  clock_gettime(CLOCK_INTERVAL, &start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = 0; i < NUM; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     digestlength = SSL_Digest(digest, key, keylength, pkt, pktlength);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  clock_gettime(CLOCK_MONOTONIC, &stop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  clock_gettime(CLOCK_INTERVAL, &stop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fast = (stop.tv_sec-start.tv_sec)*1E9 + (stop.tv_nsec-start.tv_nsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf("%10s  %2d %2d %2u %6.0f  %6.3f",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     name, keylength, pktlength, digestlength, fast/NUM,  fast/1E9);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef DoSLOW
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  clock_gettime(CLOCK_MONOTONIC, &start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  clock_gettime(CLOCK_INTERVAL, &start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = 0; i < NUM; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     digestlength = SSL_DigestSlow(type, key, keylength, pkt, pktlength);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  clock_gettime(CLOCK_MONOTONIC, &stop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  clock_gettime(CLOCK_INTERVAL, &stop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   slow = (stop.tv_sec-start.tv_sec)*1E9 + (stop.tv_nsec-start.tv_nsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf("   %6.0f  %2.0f %4.0f",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     slow/NUM, (slow-fast)*100.0/slow, (slow-fast)/NUM);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -183,11 +202,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (NULL == cipher) return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  clock_gettime(CLOCK_MONOTONIC, &start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  clock_gettime(CLOCK_INTERVAL, &start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = 0; i < NUM; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     digestlength = SSL_CMAC(cipher, key, keylength, pkt, pktlength);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  clock_gettime(CLOCK_MONOTONIC, &stop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  clock_gettime(CLOCK_INTERVAL, &stop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fast = (stop.tv_sec-start.tv_sec)*1E9 + (stop.tv_nsec-start.tv_nsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf("%10s  %2d %2d %2lu %6.0f  %6.3f",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     name, keylength, pktlength, digestlength, fast/NUM,  fast/1E9);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- include/ntp_machine.h.orig     2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ include/ntp_machine.h  2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,14 +13,53 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef CLOCK_REALTIME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * Pacify platforms that don't have a real clock_gettime(2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * notably Mac OS X.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Handle platforms that don't have a real clock_gettime(2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * notably some versions of Mac OS X.
</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;'>++#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CLOCK_REALTIME    0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define CLOCK_MONOTONIC   1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef int clockid_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int clock_gettime(clockid_t clock_id, struct timespec *tp);
</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;'>++static inline int clock_gettime(clockid_t clk_id, struct timespec *tp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct timeval tv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    switch (clk_id) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case CLOCK_REALTIME:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   * On OSX, it's tempting to use clock_get_time() for its apparent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   * nanosecond resolution, but it really only has microsecond
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   * resolution, and is substantially slower than gettimeofday().
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (gettimeofday(&tv, NULL))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  tp->tv_sec = tv.tv_sec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  tp->tv_nsec = tv.tv_usec * 1000;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return -1;
</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;'>++static inline int clock_settime(clockid_t clk_id, const struct timespec *tp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct timeval tv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    switch (clk_id) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case CLOCK_REALTIME:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  tv.tv_sec = tp->tv_sec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  tv.tv_usec = (tp->tv_nsec + 500) / 1000;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return settimeofday(&tv, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  errno = EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return -1;
</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;'>++#endif /* !CLOCK_REALTIME */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int ntp_set_tod (struct timespec *tvs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- include/ntp_stdlib.h.orig      2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ include/ntp_stdlib.h   2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -113,7 +113,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    const char * ceventstr  (int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    const char * res_match_flags(unsigned short);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    const char * res_access_flags(unsigned short);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    const char * k_st_flags (uint32_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    char *  statustoa       (int, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    sockaddr_u * netof6     (sockaddr_u *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern    char *  numtoa          (uint32_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- include/ntp_syscall.h.orig     2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ include/ntp_syscall.h  2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -9,9 +9,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef GUARD_NTP_SYSCALL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define GUARD_NTP_SYSCALL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_SYS_TIMEX_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/time.h>      /* prerequisite on NetBSD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/timex.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern int ntp_adjtime_ns(struct timex *);
</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;'>+  * The units of the maxerror and esterror fields vary by platform.  If
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libntp/clockwork.c.orig        2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libntp/clockwork.c     2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,8 +5,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <sys/time.h>       /* prerequisite on NetBSD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <sys/timex.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_SYS_TIMEX_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <sys/time.h>      /* prerequisite on NetBSD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <sys/timex.h>
</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;'>+ #include "ntp.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntp_machine.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -77,14 +79,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int             saved_errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   TPRINT(1, ("In ntp_set_tod\n"));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef HAVE_CLOCK_SETTIME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   errno = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rc = clock_settime(CLOCK_REALTIME, tvs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   saved_errno = errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   TPRINT(1, ("ntp_set_tod: clock_settime: %d %m\n", rc));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#error POSIX clock_settime(2) is required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif /* HAVE_CLOCK_SETTIME */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   errno = saved_errno;    /* for %m below */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   TPRINT(1, ("ntp_set_tod: Final result: clock_settime: %d %m\n", rc));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libntp/statestr.c.orig 2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libntp/statestr.c      2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -12,7 +12,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "lib_strbuf.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntp_refclock.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntp_control.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include "ntp_syscall.h"
</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;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -186,23 +188,50 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* not used with getcode(), no terminating entry needed */
</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;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * kernel discipline status bits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const struct codestring k_st_bits[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PLL,                      "pll" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PPSFREQ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PPSFREQ,                  "ppsfreq" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PPSTIME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PPSTIME,                  "ppstime" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_FLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_FLL,                      "fll" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_INS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_INS,                      "ins" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_DEL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_DEL,                      "del" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_UNSYNC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_UNSYNC,                   "unsync" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_FREQHOLD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_FREQHOLD,                 "freqhold" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PPSSIGNAL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PPSSIGNAL,                "ppssignal" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PPSJITTER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PPSJITTER,                "ppsjitter" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PPSWANDER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PPSWANDER,                "ppswander" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_PPSERROR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_PPSERROR,                 "ppserror" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef STA_CLOCKERR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_CLOCKERR,                 "clockerr" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ifdef STA_NANO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { STA_NANO,                     "nano" },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -214,6 +243,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* not used with getcode(), no terminating entry needed */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif    /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Forwards */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const char *       getcode(int, const struct codestring *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -315,9 +345,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            (tab == peer_st_bits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ? "peer_st"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                : 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  (tab == k_st_bits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                      ? "kern_st"
</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;'>+            (unsigned)bits, (int)LIB_BUFLENGTH);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   errno = saved_errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -356,6 +388,7 @@
</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;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ k_st_flags(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t st
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -363,6 +396,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return decode_bitflags((int)st, " ", k_st_bits, COUNTOF(k_st_bits));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif    /* HAVE_KERNEL_PLL */
</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;'>+  * statustoa - return a descriptive string for a peer status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_control.c.orig        2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_control.c     2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1437,6 +1437,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   char str[256];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   double dtemp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const char *ss;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static struct timex ntx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static unsigned long ntp_adjtime_time;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1451,6 +1452,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   ntp_adjtime_time = current_time;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif    /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   switch (varid) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1823,50 +1825,93 @@
</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;'>+           /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-           * CTL_IF_KERNPPS() puts a zero if kernel hard PPS is not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           * CTL_IF_KERNLOOP() puts a zero if the kernel loop is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           * unavailable, otherwise calls putfunc with args.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define  CTL_IF_KERNLOOP(putfunc, args)  \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          ctl_putint(sys_var[varid].text, 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define  CTL_IF_KERNLOOP(putfunc, args)  \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          putfunc args
</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;'>++           * CTL_IF_KERNPPS() puts a zero if either the kernel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           * loop is unavailable, or kernel hard PPS is not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            * active, otherwise calls putfunc with args.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# define  CTL_IF_KERNPPS(putfunc, args)   \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          ctl_putint(sys_var[varid].text, 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define  CTL_IF_KERNPPS(putfunc, args)                   \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if (0 == ntx.shift)                             \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   ctl_putint(sys_var[varid].text, 0);     \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           else                                            \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   putfunc args    /* no trailing ; */
</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;'>+   case CS_K_OFFSET:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          ctl_putdblf(sys_var[varid].text, 0, -1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  ntp_error_in_seconds(ntx.offset) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, 0, -1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   ntp_error_in_seconds(ntx.offset) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_FREQ:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          ctl_putsfp(sys_var[varid].text, ntx.freq);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putsfp,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, ntx.freq)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_MAXERR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          ctl_putdblf(sys_var[varid].text, 0, 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                      ntp_error_in_seconds(ntx.maxerror) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, 0, 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   ntp_error_in_seconds(ntx.maxerror) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_ESTERR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          ctl_putdblf(sys_var[varid].text, 0, 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                   ntp_error_in_seconds(ntx.esterror) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, 0, 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   ntp_error_in_seconds(ntx.esterror) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_STFLAGS:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          ss = "";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           ss = k_st_flags((uint32_t)ntx.status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           ctl_putstr(sys_var[varid].text, ss, strlen(ss));
</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_K_TIMECONST:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          ctl_putint(sys_var[varid].text, ntx.constant);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putint,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, ntx.constant)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_PRECISION:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          ctl_putdblf(sys_var[varid].text, 0, 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                      ntp_error_in_seconds(ntx.precision) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, 0, 6,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   ntp_error_in_seconds(ntx.precision) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_FREQTOL:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ctl_putsfp(sys_var[varid].text, ntx.tolerance);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ctl_putsfp,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (sys_var[varid].text, ntx.tolerance)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          );
</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_K_PPS_FREQ:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_loopfilter.c.orig     2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_loopfilter.c  2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23,8 +23,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define NTP_MAXFREQ       500e-6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define FREQTOD(x)       ((x) / 65536e6)            /* NTP to double */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define DTOFREQ(x)       ((int32_t)((x) * 65536e6)) /* double to NTP */
</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;'>+  * This is an implementation of the clock discipline algorithm described
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -122,13 +124,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static double init_drift_comp; /* initial frequency (PPM) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ double    clock_stability;        /* frequency stability (wander) (s/s) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unsigned int      sys_tai;                /* TAI offset from UTC */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifndef ENABLE_LOCKCLOCK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(ENABLE_LOCKCLOCK) && defined(HAVE_KERNEL_PLL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static bool loop_started; /* true after LOOP_DRIFTINIT */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* !ENABLE_LOCKCLOCK && HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef ENABLE_LOCKCLOCK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void rstclock (int, double); /* transition function */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static double direct_freq(double); /* direct set frequency */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void set_freq(double);     /* set frequency */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef PATH_MAX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define PATH_MAX MAX_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -144,6 +149,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static    void    start_kern_loop(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static    void    stop_kern_loop(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</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;'>+  * Clock state machine control flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -152,13 +158,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool      pll_control = false;    /* kernel support available */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool      kern_enable = true;     /* kernel support enabled */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool      hardpps_enable;         /* kernel PPS discipline enabled */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static bool       ext_enable;     /* external clock enabled */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool      allow_panic = false;    /* allow panic correction (-g) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool      force_step_once = false; /* always step time once at startup (-G) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool      mode_ntpdate = false;   /* exit on first clock set (-q) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int       freq_cnt;               /* initial frequency clamp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int freq_set;              /* initial set frequency switch */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static bool       ext_enable;     /* external clock enabled */
</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;'>+  * Clock state machine variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -178,6 +185,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int sys_huffptr;           /* huff-n'-puff filter pointer */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static double sys_mindly; /* huff-n'-puff filter min delay */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_KERNEL_PLL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Emacs cc-mode goes nuts if we split the next line... */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MOD_BITS (MOD_OFFSET | MOD_MAXERROR | MOD_ESTERROR | \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     MOD_STATUS | MOD_TIMECONST)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -187,7 +195,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static struct sigaction newsigsys; /* new sigaction status */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static sigjmp_buf env;            /* environment var. for pll_trap() */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* SIGSYS */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef ENABLE_LOCKCLOCK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sync_status(const char *what, int ostatus, int nstatus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -213,6 +223,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return this_file;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</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;'>+  * init_loopfilter - initialize loop filter data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -228,6 +239,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   freq_cnt = (int)clock_minstep;
</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;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * ntp_adjtime_error_handler - process errors from ntp_adjtime
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -430,6 +442,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return;
</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;'>+  * local_clock - the NTP logical clock loop filter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -455,7 +468,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int     rval;           /* return code */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int     osys_poll;      /* old system poll */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int     ntp_adj_ret;    /* returned by ntp_adjtime */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   double  mu;             /* interval since last update */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   double  clock_frequency; /* clock frequency */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   double  dtemp, etemp;   /* double temps */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -724,6 +739,7 @@
</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;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * This code segment works when clock adjustments are made using
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * precision time kernel support and the ntp_adjtime() system
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -839,6 +855,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* STA_NANO */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</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;'>+    * Clamp the frequency within the tolerance range and calculate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -952,8 +969,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else if (freq_cnt > 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           offset_adj = clock_offset / (CLOCK_PLL * ULOGTOD(1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           freq_cnt--;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else if (pll_control && kern_enable) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           offset_adj = 0.;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           offset_adj = clock_offset / (CLOCK_PLL * ULOGTOD(sys_poll));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -964,9 +983,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * set_freq().  Otherwise it is a component of the adj_systime()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * offset.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (pll_control && kern_enable)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           freq_adj = 0.;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           freq_adj = drift_comp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* Bound absolute value of total adjustment to NTP_MAXFREQ. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1058,6 +1079,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   drift_comp = freq;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   loop_desc = "ntpd";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (pll_control) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           int ntp_adj_ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           ZERO(ntv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1070,11 +1092,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               ntp_adjtime_error_handler(__func__, &ntv, ntp_adj_ret, errno, false, false, __LINE__ - 1);
</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;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   mprintf_event(EVNT_FSET, NULL, "%s %.6f PPM", loop_desc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       drift_comp * US_PER_S);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* HAVE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ start_kern_loop(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1135,8 +1159,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               "kernel time sync enabled");
</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;'>++#endif    /* HAVE_KERNEL_PLL */
</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;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ stop_kern_loop(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1144,6 +1170,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           report_event(EVNT_KERN, NULL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               "kernel time sync disabled");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif    /* HAVE_KERNEL_PLL */
</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;'>+@@ -1156,17 +1183,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (kern_enable == use_kern_loop)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (pll_control && !use_kern_loop)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           stop_kern_loop();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   kern_enable = use_kern_loop;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (pll_control && use_kern_loop)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           start_kern_loop();
</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;'>+    * If this loop selection change occurs after initial startup,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * call set_freq() to switch the frequency compensation to or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * from the kernel loop.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined(ENABLE_LOCKCLOCK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_KERNEL_PLL) && !defined(ENABLE_LOCKCLOCK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (pll_control && loop_started)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           set_freq(drift_comp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1217,10 +1248,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case LOOP_DRIFTINIT:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef ENABLE_LOCKCLOCK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if (mode_ntpdate)
</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;'>+           start_kern_loop();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</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;'>+            * Initialize frequency if given; otherwise, begin frequency
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1238,13 +1271,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   rstclock(EVNT_FSET, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   rstclock(EVNT_NSET, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           loop_started = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* !ENABLE_LOCKCLOCK */
</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 LOOP_KERN_CLEAR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if 0             /* XXX: needs more review, and how can we get here? */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef ENABLE_LOCKCLOCK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if (pll_control && kern_enable) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   memset((char *)&ntv, 0, sizeof(ntv));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   ntv.modes = MOD_STATUS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1254,6 +1290,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           pll_status,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           ntv.status);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1333,7 +1370,7 @@
</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;'>+-#if defined(SIGSYS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_KERNEL_PLL) && defined(SIGSYS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * _trap - trap processor for undefined syscalls
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1351,4 +1388,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pll_control = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   siglongjmp(env, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif /* SIGSYS */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL && SIGSYS */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_timer.c.orig  2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_timer.c       2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,7 +13,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <signal.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntp_syscall.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_TIMER_CREATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* TC_ERR represents the timer_create() error return value. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -374,7 +376,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   leap_result_t lsdata;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t       lsprox;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   leapsec_electric((pll_control && kern_enable) ? electric_on : electric_off);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  leapsec_electric(electric_off);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef ENABLE_LEAP_SMEAR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   leap_smear.enabled = (leap_smear_intv != 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/refclock_local.c.orig     2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/refclock_local.c  2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -131,6 +131,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct peer *peer
</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;'>++#if defined(HAVE_KERNEL_PLL) && defined(ENABLE_LOCKCLOCK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  struct timex ntv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct refclockproc *pp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UNUSED_ARG(unit);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -156,8 +159,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * If another process is disciplining the system clock, we set
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    * the leap bits and quality indicators from the kernel.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(ENABLE_LOCKCLOCK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  struct timex ntv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_KERNEL_PLL) && defined(ENABLE_LOCKCLOCK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   memset(&ntv,  0, sizeof ntv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   switch (ntp_adjtime(&ntv)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case TIME_OK:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -181,11 +183,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pp->disp = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pp->jitter = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else /* ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else /* HAVE_KERNEL_PLL && ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pp->leap = LEAP_NOWARNING;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pp->disp = DISPERSION;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pp->jitter = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif /* ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* HAVE_KERNEL_PLL && ENABLE_LOCKCLOCK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pp->lastref = pp->lastrec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   refclock_receive(peer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpfrob/precision.c.orig       2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpfrob/precision.c    2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,6 +11,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntp_types.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntp_calendar.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntpfrob.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "ntp_machine.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define   DEFAULT_SYS_PRECISION   -99
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- wafhelpers/options.py.orig     2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ wafhelpers/options.py  2018-03-17 20:07:07.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +21,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    default=False, help="Enable seccomp (restricts syscalls).")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     grp.add_option('--disable-dns-lookup', action='store_true',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    default=False, help="Disable DNS lookups.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    grp.add_option('--disable-kernel-pll', action='store_true',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   default=False, help="Disable kernel PLL.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     grp.add_option('--disable-mdns-registration', action='store_true',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    default=False, help="Disable MDNS registration.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     grp.add_option(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- wscript.orig   2018-03-14 20:28:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ wscript        2018-03-17 21:02:38.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -553,13 +553,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ctx.define("__EXTENSIONS__", "1", quote=False)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     structures = (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ("struct if_laddrconf", ["sys/types.h", "net/if6.h"], False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ("struct if_laddrreq", ["sys/types.h", "net/if6.h"], False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ("struct timex", ["sys/time.h", "sys/timex.h"], True),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ("struct ntptimeval", ["sys/time.h", "sys/timex.h"], False),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ("struct if_laddrconf", ["sys/types.h", "net/if6.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ("struct if_laddrreq", ["sys/types.h", "net/if6.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ("struct timex", ["sys/time.h", "sys/timex.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ("struct ntptimeval", ["sys/time.h", "sys/timex.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    for (s, h, r) in structures:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ctx.check_cc(type_name=s, header_name=h, mandatory=r)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (s, h) in structures:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ctx.check_cc(type_name=s, header_name=h, mandatory=False)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # waf's SNIP_FIELD should likely include this header itself
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # This is needed on some systems to get size_t for following checks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -616,8 +616,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ('adjtimex', ["sys/time.h", "sys/timex.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ('backtrace_symbols_fd', ["execinfo.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ('closefrom', ["stdlib.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ('clock_gettime', ["time.h"], "RT"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ('clock_settime', ["time.h"], "RT"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ('ntp_adjtime', ["sys/time.h", "sys/timex.h"]),     # BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ('ntp_gettime', ["sys/time.h", "sys/timex.h"]),     # BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ('res_init', ["netinet/in.h", "arpa/nameser.h", "resolv.h"]),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -763,6 +761,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ctx.define("HAVE_WORKING_FORK", 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                comment="Whether a working fork() exists")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # Does the kernel implement a phase-locked loop for timing?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # All modern Unixes (in particular Linux and *BSD) have this.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # The README for the (now deleted) kernel directory says this:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # "If the precision-time kernel (KERNEL_PLL define) is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # configured, the installation process requires the header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # file /usr/include/sys/timex.h for the particular
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # architecture to be in place."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if ((ctx.get_define("HAVE_SYS_TIMEX_H") and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            not ctx.options.disable_kernel_pll)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ctx.define("HAVE_KERNEL_PLL", 1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   comment="Whether phase-locked loop for timing "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "exists and is enabled")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # SO_REUSEADDR socket option is needed to open a socket on an
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # interface when the port number is already in use on another
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # interface. Linux needs this, NetBSD does not, status on
</span></pre><pre style='margin:0'>

</pre>