<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/f80478487ef837e2adfb5f37fa7e0b2a2bb3ce52">https://github.com/macports/macports-ports/commit/f80478487ef837e2adfb5f37fa7e0b2a2bb3ce52</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 f80478487ef ntpsec: update to 1.2.3
</span>f80478487ef is described below

<span style='display:block; white-space:pre;color:#808000;'>commit f80478487ef837e2adfb5f37fa7e0b2a2bb3ce52
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sun Dec 31 21:24:22 2023 -0800

<span style='display:block; white-space:pre;color:#404040;'>    ntpsec: update to 1.2.3
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This includes the patches for compatibility with macOS<10.13,
</span><span style='display:block; white-space:pre;color:#404040;'>    which can also be seen (more readably) at:
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>        https://gitlab.com/fhgwright/ntpsec/tree/macports-1_2_3
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Now allows 10.5 x86_64, since the bugs affecting it have been fixed
</span><span style='display:block; white-space:pre;color:#404040;'>    (in patches here).  10.4 x86_64 would probably also work, but
</span><span style='display:block; white-space:pre;color:#404040;'>    currently has broken dependencies.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Also removes now-unnecessary dependency on py312-setuptools.
</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 (including running tests) and ran operationally on 10.4-10.5
</span><span style='display:block; white-space:pre;color:#404040;'>    ppc, 10.4-10.6 i386, 10.5-10.15 x86_64, and 11.x-14.x arm64.
</span>---
 sysutils/ntpsec/Portfile                  |  27 +--
 sysutils/ntpsec/files/patch-allfixes.diff | 383 +++++++++++++++++-------------
 2 files changed, 222 insertions(+), 188 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 0f4aa5a23a2..6b78836a622 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,7 +6,7 @@ PortGroup           python 1.0
</span> PortGroup           openssl 1.0
 
 name                ntpsec
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             1.2.2a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.2.3
</span> revision            0
 categories          sysutils net
 maintainers         {fwright.net:fw @fhgwright} openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,21 +20,9 @@ homepage            https://www.ntpsec.org/
</span> conflicts           ntp openntpd
 
 master_sites        ftp://ftp.ntpsec.org/pub/releases/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  a00b6cddeb16087bd2c139340142519f68fefd5b \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  e0ce93af222a0a9860e6f5a51aadba9bb5ca601d80b2aea118a62f0a3226950e \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    2710790
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# 10.5 x86_64 builds successfully and passes all build tests, but doesn't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# actually work.  This has apparently been true forever, but until recently,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# dependency issues prevented building it at all.  Since this is a rare case
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# and not really a regression, we simply disallow it for now.  It's unknown
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# whether 10.4 x86_64 has the same issue, but we also disallow that out of
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# conservatism.  This should be removed once the code is fixed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# This bug has been verified as still present as of 1.2.2.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${os.platform} eq "darwin" && ${os.major} < 10 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    supported_archs     i386 ppc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  f6ee175289710afd8c053dd39a5a825d995c7a15 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  750b7337b3b42b5573700a8d5a483e1bf556e447549177a670c7c00fb9049375 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    2725081
</span> 
 # ntpsec requires Python 2.6, 2.7, or 3.3+.
 # We skip 2.6 and 3.3, but keep 2.7 and 3.4+.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -103,13 +91,6 @@ openssl.branch      3
</span> depends_build-append port:bison port:pkgconfig
 #depends_lib-append  port:python${pyver_no_dot}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Python 3.12+ has deprecated distutils, which is needed by the build.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# It remains available via setuptools, so we add the dependency.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# This seems to have been fixed upstream, so the next release can remove this.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${pyver_no_dot} >= 312} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build-append port:py${pyver_no_dot}-setuptools
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # Consolidated patchfile, based on GitHub/fhgwright/macports-releases
 patchfiles          patch-allfixes.diff
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/ntpsec/files/patch-allfixes.diff b/sysutils/ntpsec/files/patch-allfixes.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 163d63cfc35..fc14ef7175c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/ntpsec/files/patch-allfixes.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/ntpsec/files/patch-allfixes.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,5 +1,5 @@
</span> --- attic/backwards.c.orig        2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ attic/backwards.c   2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ attic/backwards.c      2023-12-30 22:12:39.000000000 -0800
</span> @@ -7,6 +7,8 @@
  #include <stdlib.h>
  #include <time.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -9,8 +9,8 @@
</span>  #define UNUSED_ARG(arg)         ((void)(arg))
  
  static void ts_print(struct timespec *ts0, struct timespec *ts1);
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- attic/clocks.c.orig 2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ attic/clocks.c 2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- attic/clocks.c.orig    2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ attic/clocks.c 2023-12-30 22:12:39.000000000 -0800
</span> @@ -9,6 +9,8 @@
  #include <unistd.h>
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,9 +20,9 @@
</span>  struct table {
    const int type;
    const char* name;
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- attic/cmac-timing.c.orig    2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ attic/cmac-timing.c    2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -35,6 +35,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- attic/cmac-timing.c.orig       2023-12-28 20:53:53.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ attic/cmac-timing.c    2023-12-30 22:12:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -36,6 +36,8 @@
</span>  #include <openssl/params.h> 
  #endif
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -31,19 +31,19 @@
</span>  #define UNUSED_ARG(arg)         ((void)(arg))
  
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- attic/digest-timing.c.orig  2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ attic/digest-timing.c  2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,6 +33,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- attic/digest-timing.c.orig     2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ attic/digest-timing.c  2023-12-30 22:12:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,6 +32,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <openssl/objects.h>
</span>  #include <openssl/ssl.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span>  
 +#include "ntp_machine.h"    /* For clock_gettime fallback */
 +
  #define UNUSED_ARG(arg)         ((void)(arg))
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef EVP_MD_CTX_reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- attic/random.c.orig    2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ attic/random.c 2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef EVP_MD_CTX_new
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- attic/random.c.orig    2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ attic/random.c 2023-12-30 22:12:39.000000000 -0800
</span> @@ -10,6 +10,8 @@
  #include <openssl/opensslv.h>    /* for OPENSSL_VERSION_NUMBER */
  #include <openssl/rand.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -54,7 +54,7 @@
</span>  #define BILLION 1000000000
  #define HISTSIZE 2500
 --- include/ntp_machine.h.orig 2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ include/ntp_machine.h       2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ include/ntp_machine.h  2023-12-30 22:12:39.000000000 -0800
</span> @@ -13,14 +13,145 @@
  
  #ifndef CLOCK_REALTIME
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -207,9 +207,9 @@
</span>  
  int ntp_set_tod (struct timespec *tvs);
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- include/ntp_stdlib.h.orig   2022-12-22 22:08:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ include/ntp_stdlib.h   2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -95,7 +95,9 @@ extern   const char * eventstr   (int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- include/ntp_stdlib.h.orig      2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ include/ntp_stdlib.h   2023-12-30 22:12:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,7 +103,9 @@ extern const char * eventstr   (int);
</span>  extern   const char * ceventstr  (int);
  extern        const char * res_match_flags(unsigned short);
  extern        const char * res_access_flags(unsigned short);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -220,7 +220,7 @@
</span>  extern   const char * socktoa    (const sockaddr_u *);
  extern        const char * socktoa_r  (const sockaddr_u *sock, char *buf, size_t buflen);
 --- include/ntp_syscall.h.orig 2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ include/ntp_syscall.h       2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ include/ntp_syscall.h  2023-12-30 22:12:39.000000000 -0800
</span> @@ -9,9 +9,11 @@
  #ifndef GUARD_NTP_SYSCALL_H
  #define GUARD_NTP_SYSCALL_H
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -233,8 +233,8 @@
</span>  
  /*
   * The units of the maxerror and esterror fields vary by platform.  If
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- libntp/clockwork.c.orig     2022-12-22 22:08:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ libntp/clockwork.c     2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libntp/clockwork.c.orig        2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libntp/clockwork.c     2023-12-30 22:12:39.000000000 -0800
</span> @@ -5,8 +5,10 @@
  #include "config.h"
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -249,7 +249,7 @@
</span>  #include "ntp.h"
  #include "ntp_machine.h"
 --- libntp/statestr.c.orig     2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ libntp/statestr.c   2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libntp/statestr.c      2023-12-30 22:12:39.000000000 -0800
</span> @@ -12,7 +12,9 @@
  #include "lib_strbuf.h"
  #include "ntp_refclock.h"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -350,133 +350,62 @@
</span>  
  /*
   * statustoa - return a descriptive string for a peer status
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- ntpd/ntp_control.c.orig     2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ntpd/ntp_control.c     2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1388,6 +1388,7 @@ ctl_putsys(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char str[256];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   double dtemp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const char *ss;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static struct timex ntx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static unsigned long ntp_adjtime_time;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_control.c.orig        2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_control.c     2023-12-30 22:12:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,7 +35,9 @@ struct utsname utsnamebuf;
</span>  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1403,6 +1404,7 @@ ctl_putsys(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     ntp_adjtime_time = current_time;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Variables that need updating each time. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static leap_signature_t lsig;
</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> +#endif   /* HAVE_KERNEL_PLL */
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        switch (varid) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1703,45 +1705,94 @@ ctl_putsys(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CASE_UINT(CS_AUTHRESET, current_time - auth_timereset);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           * CTL_IF_KERNPPS() puts a zero if kernel hard PPS is not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           * CTL_IF_KERNLOOP() puts a zero if the kernel loop is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           * unavailable, otherwise calls putfunc with args.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define  CTL_IF_KERNLOOP(putfunc, args)  \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          ctl_putint(sys_var[varid].text, 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define  CTL_IF_KERNLOOP(putfunc, args)  \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          putfunc args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           * CTL_IF_KERNPPS() puts a zero if either the kernel
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           * loop is unavailable, or kernel hard PPS is not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            * active, otherwise calls putfunc with args.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define  CTL_IF_KERNPPS(putfunc, args)   \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          ctl_putint(sys_var[varid].text, 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # define  CTL_IF_KERNPPS(putfunc, args)                   \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (0 == ntx.shift)                             \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   ctl_putint(sys_var[varid].text, 0);     \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           else                                            \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   putfunc args    /* no trailing ; */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case CS_K_OFFSET:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          ctl_putdblf(sys_var[varid].text, false, -1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  ntp_error_in_seconds(ntx.offset) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (sys_var[varid].text, false, -1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   ntp_error_in_seconds(ntx.offset) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  CASE_SFP(CS_K_FREQ, ntx.freq);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case CS_K_FREQ:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putsfp,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (CV_NAME, ntx.freq)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case CS_K_MAXERR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          ctl_putdblf(sys_var[varid].text, false, 6,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                      ntp_error_in_seconds(ntx.maxerror) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (sys_var[varid].text, false, 6,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   ntp_error_in_seconds(ntx.maxerror) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case CS_K_ESTERR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          ctl_putdblf(sys_var[varid].text, false, 6,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                   ntp_error_in_seconds(ntx.esterror) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (sys_var[varid].text, false, 6,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   ntp_error_in_seconds(ntx.esterror) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * Statistic counters to keep track of requests and responses.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -364,6 +366,7 @@ static const struct var sys_var[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_uli("authcmacdecrypts", RO, authcmacdecrypt),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_uli("authcmacfails", RO, authcmacfail),
</span>  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        case CS_K_STFLAGS:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          ss = "";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ss = k_st_flags((uint32_t)ntx.status);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ctl_putstr(sys_var[varid].text, ss, strlen(ss));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_KERNEL_PLL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* kerninfo: Kernel timekeeping info */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_kli("koffset", RO|N_CLOCK|KNUToMS, ntx.offset),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_kli("kfreq", RO|N_CLOCK|K_16, ntx.freq),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -381,6 +384,7 @@ static const struct var sys_var[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_li("kppscaliberrs", RO|N_CLOCK, ntx.errcnt),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_li("kppsjitexc", RO|N_CLOCK, ntx.jitcnt),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Var_li("kppsstbexc", RO|N_CLOCK, ntx.stbcnt),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif    /* HAVE_KERNEL_PLL */
</span>  
<span style='display:block; white-space:pre;background:#ffe0e0;'>--       CASE_INT(CS_K_TIMECONST, ntx.constant);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case CS_K_TIMECONST:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putint,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (CV_NAME, ntx.constant)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          break;
</span>  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        case CS_K_PRECISION:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          ctl_putdblf(sys_var[varid].text, false, 6,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                      ntp_error_in_seconds(ntx.precision) * MS_PER_S);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putdblf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (sys_var[varid].text, false, 6,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   ntp_error_in_seconds(ntx.precision) * MS_PER_S)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* refclock stuff in ntp_io */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1395,7 +1399,9 @@ ctl_putarray(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ctl_putsys(const struct var * v) {
</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 unsigned long ntp_adjtime_time;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif    /* HAVE_KERNEL_PLL */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static unsigned long ntp_leap_time;
</span>  
<span style='display:block; white-space:pre;background:#ffe0e0;'>--       CASE_SFP(CS_K_FREQTOL, ntx.tolerance);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case CS_K_FREQTOL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          CTL_IF_KERNLOOP(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ctl_putsfp,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (CV_NAME, ntx.tolerance)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* older compilers don't allow declarations on each case without {} */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1407,6 +1413,7 @@ ctl_putsys(const struct var * v) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * This should get pushed up a layer: flag, once per request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * This could get data from 2 samples if the clock ticks while we are working..
</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;'>+   /* The Kernel clock variables need up-to-date output of ntp_adjtime() */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (v->flags&N_CLOCK && current_time != ntp_adjtime_time) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           ZERO(ntx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1415,6 +1422,7 @@ ctl_putsys(const struct var * v) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             "MODE6: ntp_adjtime() for mode 6 query failed: %s", strerror(errno));
</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:#ffe0e0;'>-        case CS_K_PPS_FREQ:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CTL_IF_KERNPPS(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ntpd/ntp_loopfilter.c.orig     2022-12-22 22:08:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ntpd/ntp_loopfilter.c  2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* The leap second variables need up-to-date info */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (v->flags&N_LEAP && current_time != ntp_leap_time) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_loopfilter.c.orig     2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_loopfilter.c  2023-12-30 22:12:39.000000000 -0800
</span> @@ -23,8 +23,10 @@
  
  #define NTP_MAXFREQ   500e-6
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -570,7 +499,7 @@
</span>   /*
         * This code segment works when clock adjustments are made using
         * precision time kernel support and the ntp_adjtime() system
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -817,6 +832,7 @@ local_clock(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -810,6 +825,7 @@ local_clock(
</span>           }
  #endif /* STA_NANO */
        }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -578,7 +507,7 @@
</span>  
        /*
         * Clamp the frequency within the tolerance range and calculate
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -928,8 +944,10 @@ adj_host_clock(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -921,8 +937,10 @@ adj_host_clock(
</span>   } else if (freq_cnt > 0) {
                offset_adj = clock_offset / (CLOCK_PLL * ULOGTOD(1));
                freq_cnt--;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -589,7 +518,7 @@
</span>   } else {
                offset_adj = clock_offset / (CLOCK_PLL * ULOGTOD(clkstate.sys_poll));
        }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -940,9 +958,11 @@ adj_host_clock(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -933,9 +951,11 @@ adj_host_clock(
</span>    * set_freq().  Otherwise it is a component of the adj_systime()
         * offset.
         */
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -601,7 +530,7 @@
</span>           freq_adj = loop_data.drift_comp;
  
        /* Bound absolute value of total adjustment to NTP_MAXFREQ. */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1031,6 +1051,7 @@ set_freq(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1024,6 +1044,7 @@ set_freq(
</span>  
        loop_data.drift_comp = freq;
        loop_desc = "ntpd";
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -609,7 +538,7 @@
</span>   if (clock_ctl.pll_control) {
                int ntp_adj_ret;
                ZERO(ntv);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1043,10 +1064,12 @@ set_freq(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1036,10 +1057,12 @@ set_freq(
</span>               ntp_adjtime_error_handler(__func__, &ntv, ntp_adj_ret, errno, false, false, __LINE__ - 1);
                }
        }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -622,7 +551,7 @@
</span>  static void
  start_kern_loop(void)
  {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1082,8 +1105,10 @@ start_kern_loop(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1075,8 +1098,10 @@ start_kern_loop(void)
</span>               "kernel time sync enabled");
        }
  }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -633,7 +562,7 @@
</span>  static void
  stop_kern_loop(void)
  {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1091,6 +1116,7 @@ stop_kern_loop(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1084,6 +1109,7 @@ stop_kern_loop(void)
</span>           report_event(EVNT_KERN, NULL,
                    "kernel time sync disabled");
  }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -641,7 +570,7 @@
</span>  
  
  /*
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1103,11 +1129,15 @@ select_loop(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1096,11 +1122,15 @@ select_loop(
</span>  {
        if (clock_ctl.kern_enable == use_kern_loop)
                return;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -657,7 +586,7 @@
</span>   /*
         * If this loop selection change occurs after initial startup,
         * call set_freq() to switch the frequency compensation to or
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1163,10 +1193,12 @@ loop_config(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1156,10 +1186,12 @@ loop_config(
</span>    * variables. Otherwise, continue leaving no harm behind.
         */
        case LOOP_DRIFTINIT:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -670,7 +599,7 @@
</span>  
                /*
                 * Initialize frequency if given; otherwise, begin frequency
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1185,11 +1217,14 @@ loop_config(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1178,11 +1210,14 @@ loop_config(
</span>                   rstclock(EVNT_FSET, 0);
                else
                        rstclock(EVNT_NSET, 0);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -685,7 +614,7 @@
</span>           if (!loop_data.lockclock && (clock_ctl.pll_control && clock_ctl.kern_enable)) {
                        memset((char *)&ntv, 0, sizeof(ntv));
                        ntv.modes = MOD_STATUS;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1199,6 +1234,7 @@ loop_config(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1192,6 +1227,7 @@ loop_config(
</span>                           pll_status,
                                ntv.status);
                   }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -693,13 +622,137 @@
</span>  #endif
                break;
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1279,4 +1315,3 @@ loop_config(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1272,4 +1308,3 @@ loop_config(
</span>               "CONFIG: loop_config: unsupported option %d", item);
        }
  }
 -
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- ntpd/ntp_timer.c.orig       2022-12-22 22:08:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ntpd/ntp_timer.c       2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_packetstamp.c.orig    2022-12-22 22:08:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_packetstamp.c 2023-12-30 22:12:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,6 +6,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</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 <stdint.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_SYS_IOCTL_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/ioctl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,6 +34,44 @@
</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;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * OSX prior to 10.6 defines CMSG_DATA incorrectly in 64-bit builds, due to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * bad alignment assumptions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * In those OS versions we substitute a version of the definition from >=10.6.
</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(__APPLE__) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  && (!defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      || __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define   __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define   __DARWIN_ALIGN32(p) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ((size_t)((char *)(size_t)(p) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* given pointer to struct cmsghdr, return pointer to data */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef CMSG_DATA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define   CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  __DARWIN_ALIGN32(sizeof(struct cmsghdr)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* OSX < 10.6 */
</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;'>++ * Packet timestamps use the kernel's notion of time_t, which may not match
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * the userspace version.  We need to accomodate both 32- and 64-bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * versions.
</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;'>++struct timeval_32 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint32_t        tv_sec;  /* Unsigned to get past 2038 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int32_t         tv_usec;
</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;'>++struct timeval_64 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int64_t         tv_sec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int32_t         tv_usec;
</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;'>+ void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enable_packetstamps(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -104,10 +143,11 @@ fetch_packetstamp(
</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;'>+   struct cmsghdr *        cmsghdr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int                     datalen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(SO_TIMESTAMPNS) || defined(SO_TS_CLOCK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct timespec *       tsp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(SO_TIMESTAMP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  struct timeval *        tvp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  struct timeval          tv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef ENABLE_FUZZ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   unsigned long           ticks;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -124,6 +164,7 @@ fetch_packetstamp(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           exit(2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           /* return ts;   ** Kludge to use time from select. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  datalen = cmsghdr->cmsg_len - sizeof(*cmsghdr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(SO_TIMESTAMPNS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* Linux and ?? */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (SCM_TIMESTAMPNS != cmsghdr->cmsg_type) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -160,16 +201,42 @@ fetch_packetstamp(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           (long)tsp->tv_sec, tsp->tv_nsec));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   nts = tspec_stamp_to_lfp(*tsp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(SO_TIMESTAMP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  tvp = (struct timeval *)CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  switch (datalen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  case sizeof(struct timeval_32):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          struct timeval_32 *tvp = (struct timeval_32 *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                          CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          tv.tv_sec = tvp->tv_sec; tv.tv_usec = tvp->tv_usec;
</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 sizeof(struct timeval_64):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          struct timeval_64 *tvp = (struct timeval_64 *)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                          CMSG_DATA(cmsghdr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          tv.tv_sec = tvp->tv_sec; tv.tv_usec = tvp->tv_usec;
</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;'>++  default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          DPRINT(4,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ("fetch_timestamp: bad timestamp length %d",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  datalen));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          msyslog(LOG_ERR,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  "ERR: fetch_timestamp: bad timestamp length %d",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  datalen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          exit(2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef ENABLE_FUZZ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (sys_tick > measured_tick && sys_tick > S_PER_NS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ticks = (unsigned long) ((tvp->tv_usec * S_PER_NS) / sys_tick);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      tvp->tv_usec = (long)(ticks * US_PER_S * sys_tick);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      ticks = (unsigned long) ((tv.tv_usec * S_PER_NS) / sys_tick);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      tv.tv_usec = (long)(ticks * US_PER_S * sys_tick);
</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;'>+   DPRINT(4, ("fetch_timestamp: system usec network time stamp: %jd.%06ld\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          (intmax_t)tvp->tv_sec, (long)tvp->tv_usec));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  nts = tspec_stamp_to_lfp(tval_to_tspec(*tvp));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          (intmax_t)tv.tv_sec, (long)tv.tv_usec));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  nts = tspec_stamp_to_lfp(tval_to_tspec(tv));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # error "Can't get packet timestamp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpd/ntp_timer.c.orig  2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/ntp_timer.c       2023-12-30 22:12:39.000000000 -0800
</span> @@ -13,7 +13,9 @@
  #include <signal.h>
  #include <unistd.h>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -723,7 +776,7 @@
</span>   leap_smear.enabled = (leap_smear_intv != 0);
  #endif
 --- ntpd/refclock_local.c.orig 2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ntpd/refclock_local.c       2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpd/refclock_local.c  2023-12-30 22:12:39.000000000 -0800
</span> @@ -158,6 +158,7 @@ local_poll(
         * If another process is disciplining the system clock, we set
         * the leap bits and quality indicators from the kernel.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -746,8 +799,8 @@
</span>   pp->lastref = pp->lastrec;
        refclock_receive(peer);
  }
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- ntpfrob/precision.c.orig    2022-12-22 22:08:52.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ntpfrob/precision.c    2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ntpfrob/precision.c.orig       2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ntpfrob/precision.c    2023-12-30 22:12:39.000000000 -0800
</span> @@ -11,6 +11,7 @@
  #include "ntp_types.h"
  #include "ntp_calendar.h"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -757,7 +810,7 @@
</span>  #define  DEFAULT_SYS_PRECISION   -99
  
 --- tests/libntp/statestr.c.orig       2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/libntp/statestr.c     2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tests/libntp/statestr.c        2023-12-30 22:12:39.000000000 -0800
</span> @@ -4,7 +4,9 @@
  #include "unity.h"
  #include "unity_fixture.h"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -779,7 +832,7 @@
</span>  
  // statustoa
 --- wafhelpers/bin_test.py.orig        2022-12-22 22:08:52.000000000 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ wafhelpers/bin_test.py      2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ wafhelpers/bin_test.py 2023-12-30 22:12:39.000000000 -0800
</span> @@ -103,6 +103,12 @@ def cmd_bin_test(ctx):
      if ctx.env['PYTHON_CURSES']:
          cmd_map_python.update(cmd_map_python_curses)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -793,8 +846,8 @@
</span>      for cmd in sorted(cmd_map):
          if not run(cmd, cmd_map[cmd] % version):
              fails += 1
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- wafhelpers/options.py.orig  2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ wafhelpers/options.py  2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- wafhelpers/options.py.orig     2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ wafhelpers/options.py  2023-12-30 22:12:39.000000000 -0800
</span> @@ -23,6 +23,8 @@ def options_cmd(ctx, config):
                     help="Droproot earlier (breaks SHM and NetBSD).")
      grp.add_option('--enable-seccomp', action='store_true',
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -804,9 +857,9 @@
</span>      grp.add_option('--disable-mdns-registration', action='store_true',
                     default=False, help="Disable MDNS registration.")
      grp.add_option(
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- wscript.orig        2023-08-02 21:19:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ wscript        2023-08-09 00:16:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -585,7 +585,7 @@ int main(int argc, char **argv) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- wscript.orig   2023-12-28 20:53:56.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ wscript        2023-12-30 22:12:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -587,7 +587,7 @@ int main(int argc, char **argv) {
</span>      structures = (
          ("struct if_laddrconf", ["sys/types.h", "net/if6.h"], False),
          ("struct if_laddrreq", ["sys/types.h", "net/if6.h"], False),
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -815,7 +868,7 @@
</span>          ("struct ntptimeval", ["sys/time.h", "sys/timex.h"], False),
      )
      for (s, h, r) in structures:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -808,6 +808,21 @@ int main(int argc, char **argv) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -812,6 +812,21 @@ int main(int argc, char **argv) {
</span>          ctx.define("ENABLE_FUZZ", 1,
                     comment="Enable fuzzing low bits of time")
  
</pre><pre style='margin:0'>

</pre>