<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>
GitLab
</title>



</head>
<body>
<style type="text/css">
img {
max-width: 100%; height: auto;
}
</style>
<div class="content">
<h3>
Eric S. Raymond pushed to branch master
at <a href="https://gitlab.com/NTPsec/ntpsec">NTPsec / ntpsec</a>
</h3>
<p>
<strong>WARNING:</strong>
The push did not contain any new commits, but force pushed to delete the commits and changes below.
</p>
<h4>
Deleted commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/5fd21cc620e536687964cbabaf905672339de081">5fd21cc6</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-06-28T15:30:21-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Implement BSD-style endian-codecs
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/6ab62db001d7928af350c871a8e8a61e0d0d49ea">6ab62db0</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-06-28T15:38:46-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Whitespace cleanup
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/7ee0ffa56b35ff2b39809bd19606472e2ee37c76">7ee0ffa5</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-06-28T16:12:14-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Implement an RFC7822-compliant parser
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/3824e87f0ac88255a35f60daf61f59ce0919ec83">3824e87f</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-06-29T12:57:42-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Make sendpkt() take void* for data
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/c96c082774dc0c658c766ce80efa482aee221d88">c96c0827</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-06-29T17:03:33-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Add l_fp<->uint64_t conversion functions
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/25c8b0a36cd1fe1c63a4bae3f7bbf5b9600aaaf5">25c8b0a3</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-05T16:00:16-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Fix byte order in l_fp conversion functions

The lfp_to_uint64() and uint64_to_lfp() functions previously expected
the l_fp fields to be in network byte order. However, this is only
true of the l_fp fields in struct pkt; everywhere else they are in
host byte order. These functions now expect host byte order. To use
them with network-byte-order l_fp's, use the existing conversion
macros from ntp_fp.h.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/d5df8f8d40e7f0d0ad48b1aa7fb2d915b3af95bb">d5df8f8d</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-05T17:14:33-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Refactor receive() and process_packet()

This is the first and biggest step of a complete rewrite of NTP's
receive-side logic. receive() now uses a struct parsed_pkt instead of
struct pkt, and the function is much better organized. Authentication
is now performed as early as possible rather than as late as possible;
this isn't the 1980s any more and checking a MAC is no longer
expensive. Other security-relevant checks such as orgin timestamp
validation are also moved to the fore.

Notable bug fixes introduced by this commit:

* Server packets are now immediately rejected as bogus if there is no
  request outstanding (peer->outcount == 0).

* The old code was sticking the packet's transmit timestamp into the
  peer structure's receive timestamp, a bug that appears to have been
  introduced in 2008 when interleaved mode was implemented. This is
  likely to have been harming timekeeping precision all this years,
  and the fix may be an especially big win for clients which talk to
  a stratum 1 server via a LAN.

* KoDs are handled more sensibly and will never bump the polling
  interval up to anything ridiculous.

Known issues as of this commit:

* Only basic client and server modes are currently working. Support
  for the myriad other association modes will be reintroduced in
  later commits.

* MS-SNTP support is not yet re-implemented.

* The call to record_raw_stats() is missing.

* Some system counters such as ntp_oldversion and ntp_newversion
  are not incremented at appropriate times.

* There are no logging calls in the new code.

Current testing status: I've verified that the code basically works in
the common cases both as a client and as a server. I haven't tested
authentication yet, and haven't verified that every sort of bogon is
correctly rejected.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/c027cf3a925a890d42b341c6d6d488509bd38894">c027cf3a</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-06T08:11:11-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Origin timestamp checking for symmetric modes

As a first step to getting symmetric mode working again, implement the
different, more relaxed rules for origin timestamp validation that
symmetric mode requires. This still only covers basic symmetric mode,
not interlaved.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/5a150d4745a5ebdf0106b4891c3624d71cac3b77">5a150d47</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-06T09:06:25-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Typo fix (add missing return)
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/10e4d98773aed35e70765f339e6a969c6b253f9f">10e4d987</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-06T09:41:08-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Remove interleaved mode

Interleaved mode was an invention intended to improve timekeeping
precision in symmetric and broadcast mode. The problem it intended to
solve is that transmit timestamps have to be written before the packet
is sent, but right *after* the packet is sent, better information
becomes available because you know exactly when the packet made it
through the kernel and out onto the wire. So, the basic idea of
interleaved mode was to dump that better value into the *next* packet,
and have the peer follow along with that, always one packet behind.

This is a problem that PTP is clearly better suited to solving, but
interleaved mode still seems at least reasonable in theory. However,
there are two big problems.

First, interleaved mode adds a great deal of complexity to NTP's state
machine. This led to at least one terrible vulnerability (CVE-2016-1548)
which took two tries to fix (CVE-2016-4956), and probably indirectly
led to a few others.

Second, the implementation was flawed. "Drivestamps" were collected
simply by calling get_systime() immediately after sendpkt() returned.
However, on modern kernels, send() returns immediately unless the
network buffer is full. So the timestamp that NTP was collecting had
nothing to do with the time the packet actually went out, and was not
any more accurate than the transmit timestamp obtained in basic mode.

If interleaved mode ever provided a timekeeping improvement, there are
two possible explanations for why. One possibility is that the Solaris
boxen that Dave Mills tested it on had a simpler kernel networking
stack, so the timestamp he was collecting was something closer to a
true drivestamp. Another possibility is the presence of a simple bug:
before the recent refactor of receive(), in every mode except
interleaved mode, NTP was storing a transmit timestamp where a receive
timestamp belonged. Interleaved mode may have been improving
performance just by dodging this buggy code.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/8d7afd2998c9b2d6f36624f66100772d134e1653">8d7afd29</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-07T10:32:53-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Add extra security check for long-delayed responses
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/2d4764fa2c977a764b2fd0f56216032eb799111a">2d4764fa</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-07T15:30:24-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Handle manycast and pool mode
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/16a9997e33f8bf6502a89159e8f40ba50ab5dd55">16a9997e</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-08T12:28:23-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Merge branch 'master' into proto-refactor

Resolved merge conflicts surrounding removal of xleave from the
parser, a change to the signature newpeer(), and removal of the
is_network_packet() function.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/65271c181dce72ebb0a4328456a16c606b6847a9">65271c18</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-07-08T13:26:33-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Remove unused 'group' structure member and freenode flag.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/ca1ec22dd42e34423fc224a86d29c1b5c04fde0e">ca1ec22d</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-07-08T13:26:33-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Simplify driver model - remoce buginfo slot.

None of the drivers has one any more.  And the function that used it had
no callsites.  Looks like this was a fossil from ancient times.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/b843486cc02bbaa97611af7e37ffffdc69c0e32e">b843486c</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-07-08T13:26:33-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Repair compilation without refclocks.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/851ada796cdc02f4f56863b77e08d5462485ec59">851ada79</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-08T16:43:23-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Call record_raw_stats()
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/d9c6983be2ebc008339b602b2b379df8d73783f4">d9c6983b</a></strong>
<div>
<span>by Daniel Fox Franke</span>
<i>at 2016-07-08T20:06:24-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Fix extension length calculation

This was a nasty vulnerability, fortunately found quickly and before
merging to master.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/50b59fdbb34453a014a002b8355dee526a767e7e">50b59fdb</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T12:23:10-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">TESTFRAME: Withdraw the TESTFRAME code.

There's an incompatible split between KERNEL_PLL and non-KERNEL_PLL
capture logs - neither can be interpreted by the replay logic that
would work for the other.

Because we can't get rid of KERNEL_PLL without seriously hurting
convergence time, this means the original dream of a single set of
regression tests that can be run everywhere by waf check is dead.
Possibly to be revived if we solve the slow-convergence problem
and drop KERNEL_PLL, but that's far in the future.

Various nasty kludges could be attempted to partly save the concept
by, for example, having two different sets of capture logs.  But, as
the architect of TESTFRAME, I have concluded that this would be
borrowing trouble we don't need - there are strong reasons to suspect
the additional complexity would be a defect attractor.

One proble independent of the KERNEL_PLL/non-KERNEL_PLL split is that
once capture mode was (mostly) working, it became apparent that the
log format is very brittle in the sense that captures would easily be
rendered invalid for replay by even minor logic changes.

Best to fill in this rathole and move on.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/21622bcedf1439e0a3b9e22c27462fd1e00472f7">21622bce</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T13:23:37-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Attempted fix for build breakage on a non-KERNEL_PLL sytem.

Goes with the TESTFRAME excision.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/783e28e615a87d001b2f6ac4079cc71a3d54a0b7">783e28e6</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T13:40:25-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">stoa -> socktoa.  Make the merge less complicated.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/e7cc5d353e4300e94856e499ceb86edaa7559361">e7cc5d35</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T14:03:32-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Another try at fixing build breakage reported from Jenkins.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/3c07a4d97e0c3252d0d98a3ee69c6c5c2cbcbc7e">3c07a4d9</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T14:53:02-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Back out two build fix attempts, they seem to have made things worse.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/fd7df66ace38ac1d230167f9d74d35be05b8ea15">fd7df66a</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T15:43:22-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Once more into the build breakage, dear friends!
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/52f93c4734f3a1d71547260753846d803e74579e">52f93c47</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T15:56:57-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">To avoid modify/delete conflicts, nuke three drivers removed on master.

This will probably breeak building on this branch.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/b5963bc17314dacea952cd2563db30796ed21f25">b5963bc1</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T16:23:22-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Merge branch 'proto-refactor'

Passes smoke test.  Broadcast and symmetric modes are probably broken and
will need to be fixed or perhaps removed before this will be releasable.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/1f41e1b47abd9261a47a38db7fb00df238097952">1f41e1b4</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T17:04:19-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Update docs and TODO for the protocol refactoring.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/e8bcc2a524389b87ada3f4cc9e0de2d5c28c2c54">e8bcc2a5</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-29T15:30:59-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Enable profiling of more options.

Profiling is enabled by -D9.  It only worked when all the graphs, and
html were generated.  By making the profile dump an atexit() the
prilfe now works on all ways you can run ntpviz.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/00b103156605d13ade103b9a760a5f6e0834e754">00b10315</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-29T15:33:55-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">More standard def format for print_profile().
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/18d1410889b70fa4a71bd77d0b54a1816daa4b66">18d14108</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T22:19:02-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Remove duplicate code
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/486da5d731806edff60966fb03e22f59e2ad1db4">486da5d7</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T22:19:02-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">>From microsecond to nanosecond timescale.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/747a038f08b39f57b9ac6940ea7090eb3033f082">747a038f</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T22:19:02-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Typo fix.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/1367fd4b58d6227e0a42875f505d4049e81077bd">1367fd4b</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T22:19:02-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Update TODO list.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/870c4e8b7a9063cee26ed1f89c81a5d5b59a348c">870c4e8b</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T22:19:02-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Weaken header inclusions for better contaunment.

ntp_unixtime.h is included by timevalops.h.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/0cd7f7caf53509631ee491ffa041c2bd16f3a83d">0cd7f7ca</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-29T19:49:24-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Seriously refactor ntpviz.

Moved evertyhing related to a plot into the plot.  Each plot function
now returns it title, percentages, and html descrtipion in addition to
the plot.

This allowed moving the percentage display out of the plot and into
the html.  Easier to cut and paste.  Does not obscure the plot.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/7a6bb71daf2eeffe4fe4f3079914f1c77ac1ebc0">7a6bb71d</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-29T20:03:22-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Breakout deviation in histogram html.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/bf9a6a644b1b006eba650e5b112c88c3af36c94f">bf9a6a64</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-29T20:15:20-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Add some dynamic units to the html.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/67902e8b61f0cfc6cd379321e9399c4114865ba6">67902e8b</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-29T23:24:59-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Move computation from timevals to timespecs.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/54340bfbe58c11fe1090087e891a6931902bd738">54340bfb</a></strong>
<div>
<span>by Matt Selsky</span>
<i>at 2016-09-30T00:18:32-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Typos/grammar
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/ea61a0a34ade63fde2e4fada998b4036dee0856c">ea61a0a3</a></strong>
<div>
<span>by Matt Selsky</span>
<i>at 2016-09-30T00:18:32-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Partially revert "Weaken header inclusions for better contaunment."

Fixes:

../../ntpd/ntp_io.c:3241:11: warning: implicit declaration of function 'tval_stamp_to_lfp' is invalid in C99 [-Wimplicit-function-declaration]
                                nts = tval_stamp_to_lfp(*tvp);
                                      ^
../../ntpd/ntp_io.c:3241:9: error: assigning to 'l_fp' from incompatible type 'int'
                                nts = tval_stamp_to_lfp(*tvp);
                                    ^ ~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.

Seen on OSX and NetBSD
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/3d67f3cc7d7f4ff9bffa67dcfe64e16d2801eb67">3d67f3cc</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T05:51:05-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Remove obsolete comments about replay.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/b2ffb0196dda4e2bda4005989a99c900521ba43b">b2ffb019</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T06:49:11-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Remove dead code for unused struct timeval operations.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/d2d5278a7aa5acc8d995399e883208cdc5789520">d2d5278a</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T07:39:46-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">TESTFRAME: Remove some auxiliary code only used by TESTFRAME
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/d48a0cc6b634b8dc7ecf89c968ceb7669b147218">d48a0cc6</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T08:14:52-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Dead-code removal and information hiding.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/2a9f57d97d9566e68d5d1053560c8b800e1a0b91">2a9f57d9</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T08:51:14-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Dead-code removal and information hiding.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/222e7558d055b572d73d39a4f60628ef6f296bd5">222e7558</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T10:15:52-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Do more arithmetic at nanosecond scale.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/cf409f9d25ae8c13bd24b96d2ab8179e45f427d3">cf409f9d</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T11:06:06-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Try to get Python to consistently output floats.

Sadly Python does not follow the longstanding printf() rules...
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/c9e0b1acdac22ccf7a63ece7f8a1b08d962871e2">c9e0b1ac</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T14:20:55-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">change ntpdig to do its arithmetic using timespecs rather than timevals.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/830b8132df5bfb3c31479b409788073e17252e23">830b8132</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T16:22:13-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Tweak the ntpviz explanations.

There the data comes from is now always the last item.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/d03c62037d87c6cb3e2ac17f1a8f9f5b66a3d7b2">d03c6203</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T17:04:59-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Add mean and sigma values to html where percentiles already are.

I'm not sure the value yet, but some stat freak will be happy.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/ba5b9eb415470996ec1bde46e5fca5b55866f3e5">ba5b9eb4</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T17:11:49-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Add commas to glassary numbers.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/e5ce319363ea984d4ceb26cbdba972ce4a48ffce">e5ce3193</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T19:19:20-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Special case percentage==100
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/601a5bf33f71b0a942b869a3c8dab05faf364127">601a5bf3</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T19:58:15-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Move the spread out spread out stats work into class VizStats

Now just one place to tweak autoranging, html presentations.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/d1cc3bf2f5720dedbfd099e01e35d5d0a78e6179">d1cc3bf2</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T23:12:58-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Address GitLab issue #121: compiler warning on osx.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/f9bea8a07ccfed2e6252270ade95c03065239ca9">f9bea8a0</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T20:24:53-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">remove unused variables
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/ff783e173a5e489b4d8c45f0b1bbf0308e6bb61e">ff783e17</a></strong>
<div>
<span>by Gary E. Miller</span>
<i>at 2016-09-30T20:24:53-07:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">remove some more unused vars.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/873c81c29a3619b675a074d3c4eb21b928ede92b">873c81c2</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T23:43:46-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Yet another ntpdig warning fix.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/2ec6429b35708e1e58a813d20b85943d64260f8d">2ec6429b</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-09-30T23:51:20-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Remove unused variable.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/7a4ab0fb5489491fe66b8efd999729f93cac38f8">7a4ab0fb</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T07:43:55-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Generic driver no longer in-kernel; remove local copies of strlen/strcmp.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/74804c62c17f4de7b910f0528402b5e1e650ac87">74804c62</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T08:48:24-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Change rawdcf clock to use timespec rather than timeval internally.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/ea1ed04c3af5910143774440ea161f355e10338a">ea1ed04c</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T09:16:41-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Removal of timeval operations.

Alas, some of the simpler macros had to be copied into ntptime and the
generic driver to accomplish this. Cleanup will involve fully resolving
these into timespec operations.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/85da7698b261f14d9212de0ac83f1e6c042f9834">85da7698</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T10:05:39-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">More struct timeval elimination.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/4d8d6c87887640e54a084eb95033fd5224bd35c0">4d8d6c87</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T10:43:35-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">struct timeval elimination.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/758b3b530b3890a6ac0edd4e8612d5467a2233c9">758b3b53</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T10:48:11-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">struct timeval elimnination (from GPSD refclock driver).
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/42e2211d15e19c92b67851b928f15096ac5d89ae">42e2211d</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T11:09:41-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">A note on avoiding struct timeval.
</pre>
</li>
<li>
<strong><a href="https://gitlab.com/NTPsec/ntpsec/commit/f96d85a3e781877ee26fdc0e8c067f6443b0c40b">f96d85a3</a></strong>
<div>
<span>by Eric S. Raymond</span>
<i>at 2016-10-01T17:28:48-04:00</i>
</div>
<pre class="commit-message" style="margin: 0; white-space: pre-wrap">Much-needed clarification of the system clock API.
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#diff-0" style="text-decoration: none">
devel/TODO
</a>
</li>
<li class="file-stats">
<a href="#diff-1" style="text-decoration: none">
devel/hacking.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-2" style="text-decoration: none">
devel/tour.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-3" style="text-decoration: none">
docs/decode.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-4" style="text-decoration: none">
docs/includes/assoc-commands.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-5" style="text-decoration: none">
docs/includes/assoc-options.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-6" style="text-decoration: none">
docs/includes/ntpq-body.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-7" style="text-decoration: none">
docs/includes/ntpviz-body.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-8" style="text-decoration: none">
docs/includes/special.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-9" style="text-decoration: none">
docs/index.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-10" style="text-decoration: none">
docs/warp.txt
</a>
</li>
<li class="file-stats">
<a href="#diff-11" style="text-decoration: none">
<span class="deleted-file" style="color: #b00">

docs/xleave.txt
</span>
</a>
</li>
<li class="file-stats">
<a href="#diff-12" style="text-decoration: none">
include/ntp.h
</a>
</li>
<li class="file-stats">
<a href="#diff-13" style="text-decoration: none">
include/ntp_calendar.h
</a>
</li>
<li class="file-stats">
<a href="#diff-14" style="text-decoration: none">
<span class="new-file" style="color: #090">
+
include/ntp_endian.h
</span>
</a>
</li>
<li class="file-stats">
<a href="#diff-15" style="text-decoration: none">
include/ntp_fp.h
</a>
</li>
<li class="file-stats">
<a href="#diff-16" style="text-decoration: none">
include/ntp_machine.h
</a>
</li>
<li class="file-stats">
<a href="#diff-17" style="text-decoration: none">
include/ntp_syscall.h
</a>
</li>
<li class="file-stats">
<a href="#diff-18" style="text-decoration: none">
<span class="deleted-file" style="color: #b00">

include/ntp_unixtime.h
</span>
</a>
</li>
<li class="file-stats">
<a href="#diff-19" style="text-decoration: none">
include/parse.h
</a>
</li>
<li class="file-stats">
<a href="#diff-20" style="text-decoration: none">
include/timespecops.h
</a>
</li>
<li class="file-stats">
<a href="#diff-21" style="text-decoration: none">
include/timetoa.h
</a>
</li>
<li class="file-stats">
<a href="#diff-22" style="text-decoration: none">
<span class="deleted-file" style="color: #b00">

include/timevalops.h
</span>
</a>
</li>
<li class="file-stats">
<a href="#diff-23" style="text-decoration: none">
libntp/clocktime.c
</a>
</li>
<li class="file-stats">
<a href="#diff-24" style="text-decoration: none">
libntp/humandate.c
</a>
</li>
<li class="file-stats">
<a href="#diff-25" style="text-decoration: none">
libntp/machines.c
</a>
</li>
<li class="file-stats">
<a href="#diff-26" style="text-decoration: none">
libntp/ntp_calendar.c
</a>
</li>
<li class="file-stats">
<a href="#diff-27" style="text-decoration: none">
<span class="new-file" style="color: #090">
+
libntp/ntp_endian.c
</span>
</a>
</li>
<li class="file-stats">
<a href="#diff-28" style="text-decoration: none">
libntp/ntp_intres.c
</a>
</li>
<li class="file-stats">
<a href="#diff-29" style="text-decoration: none">
libntp/ntp_worker.c
</a>
</li>
</ul>
<h5>The diff was not included because it is too large.</h5>

</div>
<div class="footer" style="margin-top: 10px">
<p style="color: #777; font-size: small">

<br>
<a href="https://gitlab.com/NTPsec/ntpsec/compare/e3400e466e49bcea31fae24ca4358f1617e5da65...f96d85a3e781877ee26fdc0e8c067f6443b0c40b">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.com.
If you'd like to receive fewer emails, you can
adjust your notification settings.

</p>
</div>
</body>
</html>