Index: contrib/ntp/ntpd/invoke-ntp.conf.texi
===================================================================
--- contrib/ntp/ntpd/invoke-ntp.conf.texi	(版本 309693)
+++ contrib/ntp/ntpd/invoke-ntp.conf.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntp.conf.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:36:07 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:01:55 AM by AutoGen 5.18.5
 # From the definitions    ntp.conf.def
 # and the template file   agtexi-file.tpl
 @end ignore
@@ -1925,6 +1925,21 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+@subsubsection Broadcast Options
+@table @asis
+@item @code{tos} @code{[@code{bcpollbstep} @kbd{gate}]}
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 @subsubsection Manycast Options
 @table @asis
 @item @code{tos} @code{[@code{ceiling} @kbd{ceiling} | @code{cohort} @code{@{} @code{0} | @code{1} @code{@}} | @code{floor} @kbd{floor} | @code{minclock} @kbd{minclock} | @code{minsane} @kbd{minsane}]}
Index: contrib/ntp/ntpd/invoke-ntpd.texi
===================================================================
--- contrib/ntp/ntpd/invoke-ntpd.texi	(版本 309693)
+++ contrib/ntp/ntpd/invoke-ntpd.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntpd.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:36:12 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:02:00 AM by AutoGen 5.18.5
 # From the definitions    ntpd-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -142,7 +142,7 @@
 
 @exampleindent 0
 @example
-ntpd - NTP daemon program - Ver. 4.2.8p8
+ntpd - NTP daemon program - Ver. 4.2.8p9
 Usage:  ntpd [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... \
                 [ <server1> ... <serverN> ]
   Flg Arg Option-Name    Description
Index: contrib/ntp/ntpd/keyword-gen.c
===================================================================
--- contrib/ntp/ntpd/keyword-gen.c	(版本 309693)
+++ contrib/ntp/ntpd/keyword-gen.c	(版本 310419)
@@ -148,6 +148,7 @@
 { "cohort",		T_Cohort,		FOLLBY_TOKEN },
 { "mindist",		T_Mindist,		FOLLBY_TOKEN },
 { "maxdist",		T_Maxdist,		FOLLBY_TOKEN },
+{ "bcpollbstep",	T_Bcpollbstep,		FOLLBY_TOKEN },
 { "beacon",		T_Beacon,		FOLLBY_TOKEN },
 { "orphan",		T_Orphan,		FOLLBY_TOKEN },
 { "orphanwait",		T_Orphanwait,		FOLLBY_TOKEN },
Index: contrib/ntp/ntpd/ntp.conf.5mdoc
===================================================================
--- contrib/ntp/ntpd/ntp.conf.5mdoc	(版本 309693)
+++ contrib/ntp/ntpd/ntp.conf.5mdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_CONF 5mdoc File Formats
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:16 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:03 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.conf.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -1995,6 +1995,25 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+.Ss Broadcast Options
+.Bl -tag -width indent
+.It Xo Ic tos
+.Oo
+.Cm bcpollbstep Ar gate
+.Oc
+.Xc
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 .Ss Manycast Options
 .Bl -tag -width indent
 .It Xo Ic tos
Index: contrib/ntp/ntpd/ntp.conf.html
===================================================================
--- contrib/ntp/ntpd/ntp.conf.html	(版本 309693)
+++ contrib/ntp/ntpd/ntp.conf.html	(版本 310419)
@@ -33,9 +33,9 @@
 <p>This document describes the configuration file for the NTP Project's
 <code>ntpd</code> program.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntp.conf</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntp.conf</code>.
 
-  <div class="shortcontents">
+       <div class="shortcontents">
 <h2>Short Contents</h2>
 <ul>
 <a href="#Top">NTP's Configuration File User Manual</a>
@@ -1926,9 +1926,25 @@
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
 
+<h5 class="subsubsection">Broadcast Options</h5>
+
+     <dl>
+<dt><code>tos</code> <code>[bcpollbstep </code><kbd>gate</kbd><code>]</code><dd>This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server. 
+Broadcast time networks are expected to be trusted. 
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible. 
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible. 
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
+
 <h5 class="subsubsection">Manycast Options</h5>
 
-     <dl>
+          <dl>
 <dt><code>tos</code> <code>[ceiling </code><kbd>ceiling</kbd><code> | cohort { 0 | 1 } | floor </code><kbd>floor</kbd><code> | minclock </code><kbd>minclock</kbd><code> | minsane </code><kbd>minsane</kbd><code>]</code><dd>This command affects the clock selection and clustering
 algorithms. 
 It can be used to select the quality and
@@ -1936,7 +1952,7 @@
 and is most useful in manycast mode. 
 The variables operate
 as follows:
-          <dl>
+               <dl>
 <dt><code>ceiling</code> <kbd>ceiling</kbd><dd>Peers with strata above
 <code>ceiling</code>
 will be discarded if there are at least
@@ -1978,7 +1994,7 @@
 should be at least 4 in order to detect and discard
 a single falseticker. 
 </dl>
-     <br><dt><code>ttl</code> <kbd>hop</kbd> <kbd>...</kbd><dd>This command specifies a list of TTL values in increasing
+          <br><dt><code>ttl</code> <kbd>hop</kbd> <kbd>...</kbd><dd>This command specifies a list of TTL values in increasing
 order, up to 8 values can be specified. 
 In manycast mode these values are used in turn
 in an expanding-ring search. 
@@ -1985,7 +2001,7 @@
 The default is eight
 multiples of 32 starting at 31. 
 </dl>
-<div class="node">
+     <div class="node">
 <p><hr>
 <a name="Reference-Clock-Support"></a>
 <br>
@@ -1993,7 +2009,7 @@
 
 <h4 class="subsection">Reference Clock Support</h4>
 
-<p>The NTP Version 4 daemon supports some three dozen different radio,
+     <p>The NTP Version 4 daemon supports some three dozen different radio,
 satellite and modem reference clocks plus a special pseudo-clock
 used for backup or when no other clock source is available. 
 Detailed descriptions of individual device drivers and options can
@@ -2030,7 +2046,7 @@
 provided in
 <span class="file">/usr/share/doc/ntp</span>).
 
-  <p>A reference clock will generally (though not always) be a radio
+       <p>A reference clock will generally (though not always) be a radio
 timecode receiver which is synchronized to a source of standard
 time such as the services offered by the NRC in Canada and NIST and
 USNO in the US. 
@@ -2046,7 +2062,7 @@
 in a scalding remark to the system log file, but is otherwise non
 hazardous.
 
-  <p>For the purposes of configuration,
+       <p>For the purposes of configuration,
 <code>ntpd(1ntpdmdoc)</code>
 treats
 reference clocks in a manner analogous to normal NTP peers as much
@@ -2067,7 +2083,7 @@
 sometimes useful to configure multiple reference clocks of the same
 type, in which case the unit numbers must be unique.
 
-  <p>The
+       <p>The
 <code>server</code>
 command is used to configure a reference
 clock, where the
@@ -2105,7 +2121,7 @@
 See the individual clock
 driver document pages for additional information.
 
-  <p>The
+       <p>The
 <code>fudge</code>
 command is used to provide additional
 information for individual clock drivers and normally follows
@@ -2127,7 +2143,7 @@
 <code>fudge</code>
 command as well.
 
-  <p>The stratum number of a reference clock is by default zero. 
+       <p>The stratum number of a reference clock is by default zero. 
 Since the
 <code>ntpd(1ntpdmdoc)</code>
 daemon adds one to the stratum of each
@@ -2150,11 +2166,11 @@
 
 <h5 class="subsubsection">Reference Clock Commands</h5>
 
-     <dl>
+          <dl>
 <dt><code>server</code> <code>127.127.</code><kbd>t</kbd>.<kbd>u</kbd> <code>[prefer]</code> <code>[mode </code><kbd>int</kbd><code>]</code> <code>[minpoll </code><kbd>int</kbd><code>]</code> <code>[maxpoll </code><kbd>int</kbd><code>]</code><dd>This command can be used to configure reference clocks in
 special ways. 
 The options are interpreted as follows:
-          <dl>
+               <dl>
 <dt><code>prefer</code><dd>Marks the reference clock as preferred. 
 All other things being
 equal, this host will be chosen for synchronization among a set of
@@ -2187,7 +2203,7 @@
 defaults to 14 (4.5 h). 
 The allowable range is 4 (16 s) to 17 (36.4 h) inclusive. 
 </dl>
-     <br><dt><code>fudge</code> <code>127.127.</code><kbd>t</kbd>.<kbd>u</kbd> <code>[time1 </code><kbd>sec</kbd><code>]</code> <code>[time2 </code><kbd>sec</kbd><code>]</code> <code>[stratum </code><kbd>int</kbd><code>]</code> <code>[refid </code><kbd>string</kbd><code>]</code> <code>[mode </code><kbd>int</kbd><code>]</code> <code>[flag1 0 | 1]</code> <code>[flag2 0 | 1]</code> <code>[flag3 0 | 1]</code> <code>[flag4 0 | 1]</code><dd>This command can be used to configure reference clocks in
+          <br><dt><code>fudge</code> <code>127.127.</code><kbd>t</kbd>.<kbd>u</kbd> <code>[time1 </code><kbd>sec</kbd><code>]</code> <code>[time2 </code><kbd>sec</kbd><code>]</code> <code>[stratum </code><kbd>int</kbd><code>]</code> <code>[refid </code><kbd>string</kbd><code>]</code> <code>[mode </code><kbd>int</kbd><code>]</code> <code>[flag1 0 | 1]</code> <code>[flag2 0 | 1]</code> <code>[flag3 0 | 1]</code> <code>[flag4 0 | 1]</code><dd>This command can be used to configure reference clocks in
 special ways. 
 It must immediately follow the
 <code>server</code>
@@ -2198,7 +2214,7 @@
 program. 
 The options are interpreted as
 follows:
-          <dl>
+               <dl>
 <dt><code>time1</code> <kbd>sec</kbd><dd>Specifies a constant to be added to the time offset produced by
 the driver, a fixed-point decimal number in seconds. 
 This is used
@@ -2269,8 +2285,8 @@
 command can be found in
 <a href="#Monitoring-Options">Monitoring Options</a>. 
 </dl>
-     </dl>
-<div class="node">
+          </dl>
+     <div class="node">
 <p><hr>
 <a name="Miscellaneous-Options"></a>
 <br>
@@ -2278,7 +2294,7 @@
 
 <h4 class="subsection">Miscellaneous Options</h4>
 
-     <dl>
+          <dl>
 <dt><code>broadcastdelay</code> <kbd>seconds</kbd><dd>The broadcast and multicast modes require a special calibration
 to determine the network delay between the local and remote
 servers. 
@@ -2311,7 +2327,7 @@
 If this command is not given, the daemon will always start with an initial
 frequency of zero.
 
-     <p>The file format consists of a single line containing a single
+          <p>The file format consists of a single line containing a single
 floating point number, which records the frequency offset measured
 in parts-per-million (PPM). 
 The file is updated by first writing
@@ -2331,7 +2347,7 @@
 can be controlled remotely using the
 <code>ntpdc(1ntpdcmdoc)</code>
 utility program.
-          <dl>
+               <dl>
 <dt><code>auth</code><dd>Enables the server to synchronize with unconfigured peers only if the
 peer has been correctly authenticated using either public key or
 private key cryptography. 
@@ -2466,7 +2482,7 @@
 default for this flag is
 <code>enable</code>. 
 </dl>
-     <br><dt><code>includefile</code> <kbd>includefile</kbd><dd>This command allows additional configuration commands
+          <br><dt><code>includefile</code> <kbd>includefile</kbd><dd>This command allows additional configuration commands
 to be included from a separate file. 
 Include files may
 be nested to a depth of five; upon reaching the end of any
@@ -2527,7 +2543,7 @@
 status messages
 (<code>status</code>).
 
-     <p>Configuration keywords are formed by concatenating the message class with
+          <p>Configuration keywords are formed by concatenating the message class with
 the event class. 
 The
 <code>all</code>
@@ -2539,20 +2555,20 @@
 messages of the respective message class. 
 Thus, a minimal log configuration
 could look like this:
-<pre class="verbatim">     
-     logconfig =syncstatus +sysevents
-</pre>
+<pre class="verbatim">          
+          logconfig =syncstatus +sysevents
+     </pre>
 
-     <p>This would just list the synchronizations state of
+          <p>This would just list the synchronizations state of
 <code>ntpd(1ntpdmdoc)</code>
 and the major system events. 
 For a simple reference server, the
 following minimum message configuration could be useful:
-<pre class="verbatim">     
-     logconfig =syncall +clockall
-</pre>
+<pre class="verbatim">          
+          logconfig =syncall +clockall
+     </pre>
 
-     <p>This configuration will list all clock information and
+          <p>This configuration will list all clock information and
 synchronization information. 
 All other events and messages about
 peers, system events and so on is suppressed. 
@@ -2611,8 +2627,8 @@
 Emphasis added: twisters are on their own and can expect
 no help from the support group.
 
-     <p>The variables operate as follows:
-          <dl>
+          <p>The variables operate as follows:
+               <dl>
 <dt><code>allan</code> <kbd>allan</kbd><dd>The argument becomes the new value for the minimum Allan
 intercept, which is a parameter of the PLL/FLL clock discipline
 algorithm. 
@@ -2661,8 +2677,8 @@
 If set to zero, the stepout
 pulses will not be suppressed. 
 </dl>
-     <br><dt><code>rlimit</code> <code>[memlock </code><kbd>Nmegabytes</kbd><code> | stacksize </code><kbd>N4kPages</kbd><code> filenum </code><kbd>Nfiledescriptors</kbd><code>]</code><dd>
-          <dl>
+          <br><dt><code>rlimit</code> <code>[memlock </code><kbd>Nmegabytes</kbd><code> | stacksize </code><kbd>N4kPages</kbd><code> filenum </code><kbd>Nfiledescriptors</kbd><code>]</code><dd>
+               <dl>
 <dt><code>memlock</code> <kbd>Nmegabytes</kbd><dd>Specify the number of megabytes of memory that should be
 allocated and locked. 
 Probably only available under Linux, this option may be useful
@@ -2679,7 +2695,7 @@
 <br><dt><code>filenum</code> <kbd>Nfiledescriptors</kbd><dd>Specifies the maximum number of file descriptors ntpd may have open at once. 
 Defaults to the system default. 
 </dl>
-     <br><dt><code>trap</code> <kbd>host_address</kbd> <code>[port </code><kbd>port_number</kbd><code>]</code> <code>[interface </code><kbd>interface_address</kbd><code>]</code><dd>This command configures a trap receiver at the given host
+          <br><dt><code>trap</code> <kbd>host_address</kbd> <code>[port </code><kbd>port_number</kbd><code>]</code> <code>[interface </code><kbd>interface_address</kbd><code>]</code><dd>This command configures a trap receiver at the given host
 address and port number for sending messages with the specified
 local interface address. 
 If the port number is unspecified, a value
@@ -2690,7 +2706,7 @@
 Note that on a multihomed host the
 interface used may vary from time to time with routing changes.
 
-     <p>The trap receiver will generally log event messages and other
+          <p>The trap receiver will generally log event messages and other
 information from the server in a log file. 
 While such monitor
 programs may also request their own trap dynamically, configuring a
@@ -2704,11 +2720,11 @@
 31. 
 </dl>
 
-  <p>This section was generated by <strong>AutoGen</strong>,
+       <p>This section was generated by <strong>AutoGen</strong>,
 using the <code>agtexi-cmd</code> template and the option descriptions for the <code>ntp.conf</code> program. 
 This software is released under the NTP license, &lt;http://ntp.org/license&gt;.
 
-<ul class="menu">
+     <ul class="menu">
 <li><a accesskey="1" href="#ntp_002econf-Files">ntp.conf Files</a>:                   Files
 <li><a accesskey="2" href="#ntp_002econf-See-Also">ntp.conf See Also</a>:                See Also
 <li><a accesskey="3" href="#ntp_002econf-Bugs">ntp.conf Bugs</a>:                    Bugs
@@ -2723,7 +2739,7 @@
 
 <h4 class="subsection">ntp.conf Files</h4>
 
-     <dl>
+          <dl>
 <dt><span class="file">/etc/ntp.conf</span><dd>the default name of the configuration file
 <br><dt><span class="file">ntp.keys</span><dd>private MD5 keys
 <br><dt><span class="file">ntpkey</span><dd>RSA private key
@@ -2730,7 +2746,7 @@
 <br><dt><span class="file">ntpkey_</span><kbd>host</kbd><dd>RSA public key
 <br><dt><span class="file">ntp_dh</span><dd>Diffie-Hellman agreement parameters
 </dl>
-<div class="node">
+     <div class="node">
 <p><hr>
 <a name="ntp_002econf-See-Also"></a>
 <br>
@@ -2738,11 +2754,11 @@
 
 <h4 class="subsection">ntp.conf See Also</h4>
 
-<p><code>ntpd(1ntpdmdoc)</code>,
+     <p><code>ntpd(1ntpdmdoc)</code>,
 <code>ntpdc(1ntpdcmdoc)</code>,
 <code>ntpq(1ntpqmdoc)</code>
 
-  <p>In addition to the manual pages provided,
+       <p>In addition to the manual pages provided,
 comprehensive documentation is available on the world wide web
 at
 <code>http://www.ntp.org/</code>. 
@@ -2750,7 +2766,7 @@
 <span class="file">/usr/share/doc/ntp</span>. 
 <br>
 
-  <p><br>
+       <p><br>
 David L. Mills, <em>Network Time Protocol (Version 4)</em>, RFC5905
 <div class="node">
 <p><hr>
@@ -2760,11 +2776,11 @@
 
 <h4 class="subsection">ntp.conf Bugs</h4>
 
-<p>The syntax checking is not picky; some combinations of
+     <p>The syntax checking is not picky; some combinations of
 ridiculous and even hilarious options and modes may not be
 detected.
 
-  <p>The
+       <p>The
 <span class="file">ntpkey_</span><kbd>host</kbd>
 files are really digital
 certificates. 
@@ -2778,7 +2794,7 @@
 
 <h4 class="subsection">ntp.conf Notes</h4>
 
-<p>This document was derived from FreeBSD.
+     <p>This document was derived from FreeBSD.
 
 </body></html>
 
Index: contrib/ntp/ntpd/ntp.keys.5man
===================================================================
--- contrib/ntp/ntpd/ntp.keys.5man	(版本 309693)
+++ contrib/ntp/ntpd/ntp.keys.5man	(版本 310419)
@@ -1,8 +1,8 @@
-.TH ntp.keys 5man "02 Jun 2016" "4.2.8p8" "File Formats"
+.TH ntp.keys 5man "21 Nov 2016" "4.2.8p9" "File Formats"
 .\"
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.man)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:35:57 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:01:46 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agman-file.tpl
 .Sh NAME
Index: contrib/ntp/ntpd/ntp.keys.man.in
===================================================================
--- contrib/ntp/ntpd/ntp.keys.man.in	(版本 309693)
+++ contrib/ntp/ntpd/ntp.keys.man.in	(版本 310419)
@@ -1,8 +1,8 @@
-.TH ntp.keys 5 "02 Jun 2016" "4.2.8p8" "File Formats"
+.TH ntp.keys 5 "21 Nov 2016" "4.2.8p9" "File Formats"
 .\"
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.man)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:35:57 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:01:46 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agman-file.tpl
 .Sh NAME
Index: contrib/ntp/ntpd/ntp_control.c
===================================================================
--- contrib/ntp/ntpd/ntp_control.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_control.c	(版本 310419)
@@ -33,6 +33,7 @@
 # include "ntp_syscall.h"
 #endif
 
+#include "libssl_compat.h"
 
 /*
  * Structure to hold request procedure information
@@ -120,14 +121,14 @@
 	{ CTL_OP_READVAR,		NOAUTH,	read_variables },
 	{ CTL_OP_WRITEVAR,		AUTH,	write_variables },
 	{ CTL_OP_READCLOCK,		NOAUTH,	read_clockstatus },
-	{ CTL_OP_WRITECLOCK,		NOAUTH,	write_clockstatus },
-	{ CTL_OP_SETTRAP,		NOAUTH,	set_trap },
+	{ CTL_OP_WRITECLOCK,		AUTH,	write_clockstatus },
+	{ CTL_OP_SETTRAP,		AUTH,	set_trap },
 	{ CTL_OP_CONFIGURE,		AUTH,	configure },
 	{ CTL_OP_SAVECONFIG,		AUTH,	save_config },
 	{ CTL_OP_READ_MRU,		NOAUTH,	read_mru_list },
 	{ CTL_OP_READ_ORDLIST_A,	AUTH,	read_ordlist },
 	{ CTL_OP_REQ_NONCE,		NOAUTH,	req_nonce },
-	{ CTL_OP_UNSETTRAP,		NOAUTH,	unset_trap },
+	{ CTL_OP_UNSETTRAP,		AUTH,	unset_trap },
 	{ NO_REQUEST,			0,	NULL }
 };
 
@@ -3158,15 +3159,21 @@
 
 	for (v = var_list; !(EOV & v->flags); ++v)
 		if (!(PADDING & v->flags)) {
-			/* check if the var name matches the buffer */
+			/* Check if the var name matches the buffer. The
+			 * name is bracketed by [reqpt..tp] and not NUL
+			 * terminated, and it contains no '=' char. The
+			 * lookup value IS NUL-terminated but might
+			 * include a '='... We have to look out for
+			 * that!
+			 */
 			const char *sp1 = reqpt;
 			const char *sp2 = v->text;
-			
-			while ((sp1 != tp) && *sp2 && (*sp1 == *sp2)) {
+
+			while ((sp1 != tp) && (*sp1 == *sp2)) {
 				++sp1;
 				++sp2;
 			}
-			if (sp1 == tp && !*sp2)
+			if (sp1 == tp && (*sp2 == '\0' || *sp2 == '='))
 				break;
 		}
 
@@ -3649,7 +3656,7 @@
 		u_char	digest[EVP_MAX_MD_SIZE];
 		u_int32 extract;
 	}		d;
-	EVP_MD_CTX	ctx;
+	EVP_MD_CTX	*ctx;
 	u_int		len;
 
 	while (!salt[0] || current_time - last_salt_update >= 3600) {
@@ -3660,19 +3667,21 @@
 		last_salt_update = current_time;
 	}
 
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(NID_md5));
-	EVP_DigestUpdate(&ctx, salt, sizeof(salt));
-	EVP_DigestUpdate(&ctx, &ts_i, sizeof(ts_i));
-	EVP_DigestUpdate(&ctx, &ts_f, sizeof(ts_f));
+	ctx = EVP_MD_CTX_new();
+	EVP_DigestInit(ctx, EVP_get_digestbynid(NID_md5));
+	EVP_DigestUpdate(ctx, salt, sizeof(salt));
+	EVP_DigestUpdate(ctx, &ts_i, sizeof(ts_i));
+	EVP_DigestUpdate(ctx, &ts_f, sizeof(ts_f));
 	if (IS_IPV4(addr))
-		EVP_DigestUpdate(&ctx, &SOCK_ADDR4(addr),
+		EVP_DigestUpdate(ctx, &SOCK_ADDR4(addr),
 			         sizeof(SOCK_ADDR4(addr)));
 	else
-		EVP_DigestUpdate(&ctx, &SOCK_ADDR6(addr),
+		EVP_DigestUpdate(ctx, &SOCK_ADDR6(addr),
 			         sizeof(SOCK_ADDR6(addr)));
-	EVP_DigestUpdate(&ctx, &NSRCPORT(addr), sizeof(NSRCPORT(addr)));
-	EVP_DigestUpdate(&ctx, salt, sizeof(salt));
-	EVP_DigestFinal(&ctx, d.digest, &len);
+	EVP_DigestUpdate(ctx, &NSRCPORT(addr), sizeof(NSRCPORT(addr)));
+	EVP_DigestUpdate(ctx, salt, sizeof(salt));
+	EVP_DigestFinal(ctx, d.digest, &len);
+	EVP_MD_CTX_free(ctx);
 
 	return d.extract;
 }
@@ -3954,15 +3963,17 @@
 	int restrict_mask
 	)
 {
-	const char		nonce_text[] =		"nonce";
-	const char		frags_text[] =		"frags";
-	const char		limit_text[] =		"limit";
-	const char		mincount_text[] =	"mincount";
-	const char		resall_text[] =		"resall";
-	const char		resany_text[] =		"resany";
-	const char		maxlstint_text[] =	"maxlstint";
-	const char		laddr_text[] =		"laddr";
-	const char		resaxx_fmt[] =		"0x%hx";
+	static const char	nulltxt[1] = 		{ '\0' };	
+	static const char	nonce_text[] =		"nonce";
+	static const char	frags_text[] =		"frags";
+	static const char	limit_text[] =		"limit";
+	static const char	mincount_text[] =	"mincount";
+	static const char	resall_text[] =		"resall";
+	static const char	resany_text[] =		"resany";
+	static const char	maxlstint_text[] =	"maxlstint";
+	static const char	laddr_text[] =		"laddr";
+	static const char	resaxx_fmt[] =		"0x%hx";
+	
 	u_int			limit;
 	u_short			frags;
 	u_short			resall;
@@ -3979,7 +3990,7 @@
 	char			buf[128];
 	struct ctl_var *	in_parms;
 	const struct ctl_var *	v;
-	char *			val;
+	const char *		val;
 	const char *		pch;
 	char *			pnonce;
 	int			nonce_valid;
@@ -4031,46 +4042,68 @@
 	ZERO(last);
 	ZERO(addr);
 
-	while (NULL != (v = ctl_getitem(in_parms, &val)) &&
+	/* have to go through '(void*)' to drop 'const' property from pointer.
+	 * ctl_getitem()' needs some cleanup, too.... perlinger@ntp.org
+	 */
+	while (NULL != (v = ctl_getitem(in_parms, (void*)&val)) &&
 	       !(EOV & v->flags)) {
 		int si;
 
+		if (NULL == val)
+			val = nulltxt;
+
 		if (!strcmp(nonce_text, v->text)) {
-			if (NULL != pnonce)
-				free(pnonce);
-			pnonce = estrdup(val);
+			free(pnonce);
+			pnonce = (*val) ? estrdup(val) : NULL;
 		} else if (!strcmp(frags_text, v->text)) {
-			sscanf(val, "%hu", &frags);
+			if (1 != sscanf(val, "%hu", &frags))
+				goto blooper;
 		} else if (!strcmp(limit_text, v->text)) {
-			sscanf(val, "%u", &limit);
+			if (1 != sscanf(val, "%u", &limit))
+				goto blooper;
 		} else if (!strcmp(mincount_text, v->text)) {
-			if (1 != sscanf(val, "%d", &mincount) ||
-			    mincount < 0)
+			if (1 != sscanf(val, "%d", &mincount))
+				goto blooper;
+			if (mincount < 0)
 				mincount = 0;
 		} else if (!strcmp(resall_text, v->text)) {
-			sscanf(val, resaxx_fmt, &resall);
+			if (1 != sscanf(val, resaxx_fmt, &resall))
+				goto blooper;
 		} else if (!strcmp(resany_text, v->text)) {
-			sscanf(val, resaxx_fmt, &resany);
+			if (1 != sscanf(val, resaxx_fmt, &resany))
+				goto blooper;
 		} else if (!strcmp(maxlstint_text, v->text)) {
-			sscanf(val, "%u", &maxlstint);
+			if (1 != sscanf(val, "%u", &maxlstint))
+				goto blooper;
 		} else if (!strcmp(laddr_text, v->text)) {
-			if (decodenetnum(val, &laddr))
-				lcladr = getinterface(&laddr, 0);
+			if (!decodenetnum(val, &laddr))
+				goto blooper;
+			lcladr = getinterface(&laddr, 0);
 		} else if (1 == sscanf(v->text, last_fmt, &si) &&
 			   (size_t)si < COUNTOF(last)) {
-			if (2 == sscanf(val, "0x%08x.%08x", &ui, &uf)) {
-				last[si].l_ui = ui;
-				last[si].l_uf = uf;
-				if (!SOCK_UNSPEC(&addr[si]) &&
-				    si == priors)
-					priors++;
-			}
+			if (2 != sscanf(val, "0x%08x.%08x", &ui, &uf))
+				goto blooper;
+			last[si].l_ui = ui;
+			last[si].l_uf = uf;
+			if (!SOCK_UNSPEC(&addr[si]) && si == priors)
+				priors++;
 		} else if (1 == sscanf(v->text, addr_fmt, &si) &&
 			   (size_t)si < COUNTOF(addr)) {
-			if (decodenetnum(val, &addr[si])
-			    && last[si].l_ui && last[si].l_uf &&
-			    si == priors)
+			if (!decodenetnum(val, &addr[si]))
+				goto blooper;
+			if (last[si].l_ui && last[si].l_uf && si == priors)
 				priors++;
+		} else {
+			DPRINTF(1, ("read_mru_list: invalid key item: '%s' (ignored)\n",
+				    v->text));
+			continue;
+
+		blooper:
+			DPRINTF(1, ("read_mru_list: invalid param for '%s': '%s' (bailing)\n",
+				    v->text, val));
+			free(pnonce);
+			pnonce = NULL;
+			break;
 		}
 	}
 	free_varlist(in_parms);
@@ -4997,6 +5030,22 @@
 	if (num_ctl_traps <= 0)
 		return;
 
+	/* [Bug 3119]
+	 * Peer Events should be associated with a peer -- hence the
+	 * name. But there are instances where this function is called
+	 * *without* a valid peer. This happens e.g. with an unsolicited
+	 * CryptoNAK, or when a leap second alarm is going off while
+	 * currently without a system peer.
+	 *
+	 * The most sensible approach to this seems to bail out here if
+	 * this happens. Avoiding to call this function would also
+	 * bypass the log reporting in the first part of this function,
+	 * and this is probably not the best of all options.
+	 *   -*-perlinger@ntp.org-*-
+	 */
+	if ((err & PEER_EVENT) && !peer)
+		return;
+
 	/*
 	 * Set up the outgoing packet variables
 	 */
@@ -5013,8 +5062,7 @@
 		/* Include the core system variables and the list. */
 		for (i = 1; i <= CS_VARLIST; i++)
 			ctl_putsys(i);
-	} else {
-		INSIST(peer != NULL);
+	} else if (NULL != peer) { /* paranoia -- skip output */
 		rpkt.associd = htons(peer->associd);
 		rpkt.status = htons(ctlpeerstatus(peer));
 
@@ -5021,7 +5069,7 @@
 		/* Dump it all. Later, maybe less. */
 		for (i = 1; i <= CP_MAX_NOAUTOKEY; i++)
 			ctl_putpeer(i, peer);
-#ifdef REFCLOCK
+#	    ifdef REFCLOCK
 		/*
 		 * for clock exception events: add clock variables to
 		 * reflect info on exception
@@ -5047,7 +5095,7 @@
 						    FALSE);
 			free_varlist(cs.kv_list);
 		}
-#endif /* REFCLOCK */
+#	    endif /* REFCLOCK */
 	}
 
 	/*
Index: contrib/ntp/ntpd/ntp_loopfilter.c
===================================================================
--- contrib/ntp/ntpd/ntp_loopfilter.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_loopfilter.c	(版本 310419)
@@ -701,9 +701,10 @@
 				 * where the FLL becomes effective.
 				 */
 				if (sys_poll >= allan_xpt)
-					clock_frequency += (fp_offset -
-					    clock_offset) / max(ULOGTOD(sys_poll),
-					    mu) * CLOCK_FLL;
+					clock_frequency +=
+					      (fp_offset - clock_offset)
+					    / ( max(ULOGTOD(sys_poll), mu)
+					       * CLOCK_FLL);
 
 				/*
 				 * The PLL frequency gain (numerator) depends on
@@ -713,8 +714,8 @@
 				 */
 				etemp = min(ULOGTOD(allan_xpt), mu);
 				dtemp = 4 * CLOCK_PLL * ULOGTOD(sys_poll);
-				clock_frequency += fp_offset * etemp / (dtemp *
-				    dtemp);
+				clock_frequency +=
+				    fp_offset * etemp / (dtemp * dtemp);
 			}
 			rstclock(EVNT_SYNC, fp_offset);
 			if (fabs(fp_offset) < CLOCK_FLOOR)
Index: contrib/ntp/ntpd/ntp_peer.c
===================================================================
--- contrib/ntp/ntpd/ntp_peer.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_peer.c	(版本 310419)
@@ -273,6 +273,22 @@
 /*
  * findpeer - find and return a peer match for a received datagram in
  *	      the peer_hash table.
+ *
+ * [Bug 3072] To faciliate a faster reorganisation after routing changes
+ * the original code re-assigned the peer address to be the destination
+ * of the received packet and initiated another round on a mismatch.
+ * Unfortunately this leaves us wide open for a DoS attack where the
+ * attacker directs a packet with forged destination address to us --
+ * this results in a wrong interface assignment, actually creating a DoS
+ * situation.
+ *
+ * This condition would persist until the next update of the interface
+ * list, but a continued attack would put us out of business again soon
+ * enough. Authentication alone does not help here, since it does not
+ * protect the UDP layer and leaves us open for a replay attack.
+ *
+ * So we do not update the adresses and wait until the next interface
+ * list update does the right thing for us.
  */
 struct peer *
 findpeer(
@@ -291,61 +307,50 @@
 	srcadr = &rbufp->recv_srcadr;
 	hash = NTP_HASH_ADDR(srcadr);
 	for (p = peer_hash[hash]; p != NULL; p = p->adr_link) {
-		if (ADDR_PORT_EQ(srcadr, &p->srcadr)) {
 
-			/*
-			 * if the association matching rules determine
-			 * that this is not a valid combination, then
-			 * look for the next valid peer association.
-			 */
-			*action = MATCH_ASSOC(p->hmode, pkt_mode);
+		/* [Bug 3072] ensure interface of peer matches */
+		if (p->dstadr != rbufp->dstadr)
+			continue;
 
-			/*
-			 * A response to our manycastclient solicitation
-			 * might be misassociated with an ephemeral peer
-			 * already spun for the server.  If the packet's
-			 * org timestamp doesn't match the peer's, check
-			 * if it matches the ACST prototype peer's.  If
-			 * so it is a redundant solicitation response,
-			 * return AM_ERR to discard it.  [Bug 1762]
-			 */
-			if (MODE_SERVER == pkt_mode &&
-			    AM_PROCPKT == *action) {
-				pkt = &rbufp->recv_pkt;
-				NTOHL_FP(&pkt->org, &pkt_org);
-				if (!L_ISEQU(&p->aorg, &pkt_org) &&
-				    findmanycastpeer(rbufp))
-					*action = AM_ERR;
-			}
+		/* ensure peer source address matches */
+		if ( ! ADDR_PORT_EQ(srcadr, &p->srcadr))
+			continue;
+		
+		/* If the association matching rules determine that this
+		 * is not a valid combination, then look for the next
+		 * valid peer association.
+		 */
+		*action = MATCH_ASSOC(p->hmode, pkt_mode);
 
-			/*
-			 * if an error was returned, exit back right
-			 * here.
-			 */
-			if (*action == AM_ERR)
-				return NULL;
+		/* A response to our manycastclient solicitation might
+		 * be misassociated with an ephemeral peer already spun
+		 * for the server.  If the packet's org timestamp
+		 * doesn't match the peer's, check if it matches the
+		 * ACST prototype peer's.  If so it is a redundant
+		 * solicitation response, return AM_ERR to discard it.
+		 * [Bug 1762]
+		 */
+		if (MODE_SERVER == pkt_mode && AM_PROCPKT == *action) {
+			pkt = &rbufp->recv_pkt;
+			NTOHL_FP(&pkt->org, &pkt_org);
+			if (!L_ISEQU(&p->aorg, &pkt_org) &&
+			    findmanycastpeer(rbufp))
+				*action = AM_ERR;
+		}
 
-			/*
-			 * if a match is found, we stop our search.
-			 */
-			if (*action != AM_NOMATCH)
-				break;
-		}
+		/* if an error was returned, exit back right here. */
+		if (*action == AM_ERR)
+			return NULL;
+
+		/* if a match is found, we stop our search. */
+		if (*action != AM_NOMATCH)
+			break;
 	}
 
-	/*
-	 * If no matching association is found
-	 */
-	if (NULL == p) {
+	/* If no matching association is found... */
+	if (NULL == p)
 		*action = MATCH_ASSOC(NO_PEER, pkt_mode);
-	} else if (p->dstadr != rbufp->dstadr) {
-		set_peerdstadr(p, rbufp->dstadr);
-		if (p->dstadr == rbufp->dstadr) {
-			DPRINTF(1, ("Changed %s local address to match response\n",
-				    stoa(&p->srcadr)));
-			return findpeer(rbufp, pkt_mode, action);
-		}
-	}
+
 	return p;
 }
 
@@ -621,6 +626,12 @@
 {
 	struct peer *	unlinked;
 
+	DEBUG_INSIST(p != NULL);
+
+	if (p == NULL)
+		return;
+
+	/* check for impossible or identical assignment */
 	if (p->dstadr == dstadr)
 		return;
 
@@ -632,6 +643,8 @@
 	    (INT_MCASTIF & dstadr->flags) && MODE_CLIENT == p->hmode) {
 		return;
 	}
+
+	/* unlink from list if we have an address prior to assignment */
 	if (p->dstadr != NULL) {
 		p->dstadr->peercnt--;
 		UNLINK_SLIST(unlinked, p->dstadr->peers, p, ilink,
@@ -640,8 +653,11 @@
 			stoa(&p->srcadr), latoa(p->dstadr),
 			latoa(dstadr));
 	}
+	
 	p->dstadr = dstadr;
-	if (dstadr != NULL) {
+
+	/* link to list if we have an address after assignment */
+	if (p->dstadr != NULL) {
 		LINK_SLIST(dstadr->peers, p, ilink);
 		dstadr->peercnt++;
 	}
Index: UPDATING
===================================================================
--- UPDATING	(版本 309693)
+++ UPDATING	(版本 310419)
@@ -16,6 +16,10 @@
 stable/10, and then rebuild without this option. The bootstrap process from
 older version of current is a bit fragile.
 
+20161222	p15	FreeBSD-SA-16:39.ntp
+
+	Fix multiple vulnerabilities of ntp.
+
 20161208	p14	FreeBSD-SA-16:37.libc [revised]
 
 	Fix regressions introduced by SA-16:37.libc.
Index: contrib/ntp/ChangeLog
===================================================================
--- contrib/ntp/ChangeLog	(版本 309693)
+++ contrib/ntp/ChangeLog	(版本 310419)
@@ -1,4 +1,73 @@
 ---
+(4.2.8p9) 2016/11/21 Released by Harlan Stenn <stenn@ntp.org>
+(4.2.8p9) 2016/MM/DD Released by Harlan Stenn <stenn@ntp.org>
+
+* [Sec 3119] Trap crash <perlinger@ntp.org>
+* [Sec 3118] Mode 6 information disclosure and DDoS vector <perlinger@ntp.org>
+  - TRAP config via mode 6 packet requires AUTH now.
+* [Sec 3114] Broadcast Mode Replay Prevention DoS
+  - applied patches by Matthew Van Gundy. <perlinger@ntp.org>
+  - with bcpollbstep, tweaks and cleanup by stenn@ntp.org
+* [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS <perlinger@ntp.org>
+  - applied fix as suggested by Matthew Van Gundy
+* [Sec 3110] Windows: ntpd DoS by oversized UDP packet
+  - fixed error handling for truncated UDP packets. <perlinger@ntp.org>
+* [Sec 3102] Zero origin issues.  HStenn.
+* [Sec 3082] null pointer dereference in _IO_str_init_static_internal()
+  - more hardening to read_mru_list(). perlinger@ntp.org
+* [Sec 3072] Attack on interface selection <perlinger@ntp.org>
+  - implemented Miroslav Lichvars <mlichvar@redhat.com> suggestion
+    to skip interface updates based on incoming packets
+* [Bug 3142] bug in netmask prefix length detection <perlinger@ntp.org>
+* [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org
+* [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+  - moved retry decision where it belongs. <perlinger@ntp.org>
+* [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order
+  using the loopback-ppsapi-provider.dll <perlinger@ntp.org>
+* [Bug 3116] unit tests for NTP time stamp expansion. <perlinger@ntp.org>
+* [Bug 3100] ntpq can't retrieve daemon_version <perlinger@ntp.org>
+  - fixed extended sysvar lookup (bug introduced with bug 3008 fix)
+* [Bug 3095] Compatibility with openssl 1.1 <perlinger@ntp.org>
+  - applied patches by Kurt Roeckx <kurt@roeckx.be> to source
+  - added shim layer for SSL API calls with issues (both directions)
+* [Bug 3089] Serial Parser does not work anymore for hopfser like device
+  - simplified / refactored hex-decoding in driver. <perlinger@ntp.org>
+* [Bug 3084] update-leap mis-parses the leapfile name.  HStenn.
+* [Bug 3068] Linker warnings when building on Solaris. perlinger@ntp.org
+  - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com>
+* [Bug 3067] Root distance calculation needs improvement.  HStenn.
+* [Bug 3066] NMEA clock ignores pps. perlinger@ntp.org
+  - PPS-HACK works again.
+* [Bug 3059] Potential buffer overrun from oversized hash <perlinger@ntp.org>
+  - applied patch by Brian Utterback <brian.utterback@oracle.com>
+* [Bug 3053] ntp_loopfilter.c frequency calc precedence error.  Sarah White.
+* [Bug 3050]  Fix for bug #2960 causes [...] spurious error message.
+  <perlinger@ntp.org>
+  - patches by Reinhard Max <max@suse.com> and Havard Eidnes <he@uninett.no>
+* [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+  - Patch provided by Kuramatsu.
+* [Bug 3021] unity_fixture.c needs pragma weak <perlinger@ntp.org>
+  - removed unnecessary & harmful decls of 'setUp()' & 'tearDown()'
+* [Bug 3019] Windows: ERROR_HOST_UNREACHABLE block packet processing.
+  DMayer and JPerlinger.
+* [Bug 2998] sntp/tests/packetProcessing.c broken without openssl. JPerlinger
+* [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY.  HStenn.
+* [Bug 2959] refclock_jupiter: gps week correction <perlinger@ntp.org>
+  - fixed GPS week expansion to work based on build date. Special thanks
+    to Craig Leres for initial patch and testing.
+* [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd'
+  - fixed Makefile.am <perlinger@ntp.org>
+* [Bug 2689] ATOM driver processes last PPS pulse at startup,
+             even if it is very old <perlinger@ntp.org>
+  - make sure PPS source is alive before processing samples
+  - improve stability close to the 500ms phase jump (phase gate)
+* Fix typos in include/ntp.h.
+* Shim X509_get_signature_nid() if needed.
+* git author attribution cleanup
+* bk ignore file cleanup
+* remove locks in Windows IO, use rpc-like thread synchronisation instead
+
+---
 (4.2.8p8) 2016/06/02 Released by Harlan Stenn <stenn@ntp.org>
 
 * [Sec 3042] Broadcast Interleave.  HStenn.
@@ -19,7 +88,7 @@
 * Fix typo in ntp-wait and plot_summary.  HStenn.
 * Make sure we have an "author" file for git imports.  HStenn.
 * Update the sntp problem tests for MacOS.  HStenn.
-  
+
 ---
 (4.2.8p7) 2016/04/26 Released by Harlan Stenn <stenn@ntp.org>
 
Index: contrib/ntp/ntpd/ntp.conf.man.in
===================================================================
--- contrib/ntp/ntpd/ntp.conf.man.in	(版本 309693)
+++ contrib/ntp/ntpd/ntp.conf.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp.conf 5 "02 Jun 2016" "4.2.8p8" "File Formats"
+.TH ntp.conf 5 "21 Nov 2016" "4.2.8p9" "File Formats"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Q_ai3f/ag-2_aa2f)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:01:41 AM by AutoGen 5.18.5
 .\" From the definitions ntp.conf.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
@@ -2174,7 +2174,23 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+.SS Broadcast Options
+.TP 7
+.NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]bcpollbstep\f[] \f\*[I-Font]gate\f[]]
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 .SS Manycast Options
+.RS
 .TP 7
 .NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]ceiling\f[] \f\*[I-Font]ceiling\f[] | \f\*[B-Font]cohort\f[] { \f\*[B-Font]0\f[] | \f\*[B-Font]1\f[] } | \f\*[B-Font]floor\f[] \f\*[I-Font]floor\f[] | \f\*[B-Font]minclock\f[] \f\*[I-Font]minclock\f[] | \f\*[B-Font]minsane\f[] \f\*[I-Font]minsane\f[]]
 This command affects the clock selection and clustering
@@ -2244,7 +2260,7 @@
 in an expanding-ring search.
 The default is eight
 multiples of 32 starting at 31.
-.PP
+.RE
 .SH Reference Clock Support
 The NTP Version 4 daemon supports some three dozen different radio,
 satellite and modem reference clocks plus a special pseudo-clock
@@ -2411,6 +2427,7 @@
 Except where noted,
 these options apply to all clock drivers.
 .SS Reference Clock Commands
+.RS
 .TP 7
 .NOP \f\*[B-Font]server\f[] \f[C]127.127.\f[]\f\*[I-Font]t\f[].\f\*[I-Font]u\f[] [\f\*[B-Font]prefer\f[]] [\f\*[B-Font]mode\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]minpoll\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]maxpoll\f[] \f\*[I-Font]int\f[]]
 This command can be used to configure reference clocks in
@@ -2559,8 +2576,9 @@
 command can be found in
 \fIMonitoring\f[] \fIOptions\f[].
 .RE
-.PP
+.RE
 .SH Miscellaneous Options
+.RS
 .TP 7
 .NOP \f\*[B-Font]broadcastdelay\f[] \f\*[I-Font]seconds\f[]
 The broadcast and multicast modes require a special calibration
@@ -3079,8 +3097,9 @@
 an expanding-ring search.
 The default is eight multiples of 32 starting at
 31.
-.PP
+.RE
 .SH "OPTIONS"
+.RS
 .TP
 .NOP \f\*[B-Font]\-\-help\f[]
 Display usage information and exit.
@@ -3092,7 +3111,7 @@
 Output version of program and exit.  The default mode is `v', a simple
 version.  The `c' mode will print copyright information and `n' will
 print the full copyright notice.
-.PP
+.RE
 .SH "OPTION PRESETS"
 Any option that is not marked as \fInot presettable\fP may be preset
 by loading values from environment variables named:
@@ -3103,6 +3122,7 @@
 .SH "ENVIRONMENT"
 See \fBOPTION PRESETS\fP for configuration environment variables.
 .SH FILES
+.RS
 .TP 15
 .NOP \fI/etc/ntp.conf\f[]
 the default name of the configuration file
@@ -3126,9 +3146,10 @@
 .TP 15
 .NOP \fIntp_dh\f[]
 Diffie-Hellman agreement parameters
-.PP
+.RE
 .SH "EXIT STATUS"
 One of the following exit values will be returned:
+.RS
 .TP
 .NOP 0 " (EXIT_SUCCESS)"
 Successful program execution.
@@ -3139,7 +3160,7 @@
 .NOP 70 " (EX_SOFTWARE)"
 libopts had an internal operational error.  Please report
 it to autogen-users@lists.sourceforge.net.  Thank you.
-.PP
+.RE
 .SH "SEE ALSO"
 \fCntpd\f[]\fR(@NTPD_MS@)\f[],
 \fCntpdc\f[]\fR(@NTPDC_MS@)\f[],
Index: contrib/ntp/ntpd/ntp.keys.5mdoc
===================================================================
--- contrib/ntp/ntpd/ntp.keys.5mdoc	(版本 309693)
+++ contrib/ntp/ntpd/ntp.keys.5mdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_KEYS 5mdoc File Formats
 .Os SunOS 5.10
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:20 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:06 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agmdoc-file.tpl
 .Sh NAME
Index: contrib/ntp/ntpd/ntp.keys.mdoc.in
===================================================================
--- contrib/ntp/ntpd/ntp.keys.mdoc.in	(版本 309693)
+++ contrib/ntp/ntpd/ntp.keys.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_KEYS 5 File Formats
 .Os SunOS 5.10
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:20 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:06 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agmdoc-file.tpl
 .Sh NAME
Index: contrib/ntp/ntpd/ntp_crypto.c
===================================================================
--- contrib/ntp/ntpd/ntp_crypto.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_crypto.c	(版本 310419)
@@ -22,7 +22,6 @@
 #include "ntp_calendar.h"
 #include "ntp_leapsec.h"
 
-#include "openssl/asn1_mac.h"
 #include "openssl/bn.h"
 #include "openssl/err.h"
 #include "openssl/evp.h"
@@ -29,6 +28,7 @@
 #include "openssl/pem.h"
 #include "openssl/rand.h"
 #include "openssl/x509v3.h"
+#include "libssl_compat.h"
 
 #ifdef KERNEL_PLL
 #include "ntp_syscall.h"
@@ -230,7 +230,7 @@
 	u_long	lifetime 	/* key lifetime */
 	)
 {
-	EVP_MD_CTX ctx;		/* message digest context */
+	EVP_MD_CTX *ctx;	/* message digest context */
 	u_char dgst[EVP_MAX_MD_SIZE]; /* message digest */
 	keyid_t	keyid;		/* key identifer */
 	u_int32	header[10];	/* data in network byte order */
@@ -263,9 +263,11 @@
 		hdlen = 10 * sizeof(u_int32);
 		break;
 	}
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(crypto_nid));
-	EVP_DigestUpdate(&ctx, (u_char *)header, hdlen);
-	EVP_DigestFinal(&ctx, dgst, &len);
+	ctx = EVP_MD_CTX_new();
+	EVP_DigestInit(ctx, EVP_get_digestbynid(crypto_nid));
+	EVP_DigestUpdate(ctx, (u_char *)header, hdlen);
+	EVP_DigestFinal(ctx, dgst, &len);
+	EVP_MD_CTX_free(ctx);
 	memcpy(&keyid, dgst, 4);
 	keyid = ntohl(keyid);
 	if (lifetime != 0) {
@@ -299,7 +301,7 @@
 	struct interface *dstadr /* interface */
 	)
 {
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;	/* NTP timestamp */
 	struct autokey *ap;	/* autokey pointer */
 	struct value *vp;	/* value pointer */
@@ -377,14 +379,16 @@
 	if (tstamp != 0) {
 		if (vp->sig == NULL)
 			vp->sig = emalloc(sign_siglen);
-		EVP_SignInit(&ctx, sign_digest);
-		EVP_SignUpdate(&ctx, (u_char *)vp, 12);
-		EVP_SignUpdate(&ctx, vp->ptr, sizeof(struct autokey));
-		if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+		ctx = EVP_MD_CTX_new();
+		EVP_SignInit(ctx, sign_digest);
+		EVP_SignUpdate(ctx, (u_char *)vp, 12);
+		EVP_SignUpdate(ctx, vp->ptr, sizeof(struct autokey));
+		if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 			INSIST(len <= sign_siglen);
 			vp->siglen = htonl(len);
 			peer->flags |= FLAG_ASSOC;
 		}
+		EVP_MD_CTX_free(ctx);
 	}
 	DPRINTF(1, ("make_keys: %d %08x %08x ts %u fs %u poll %d\n",
 		    peer->keynumber, keyid, cookie, ntohl(vp->tstamp),
@@ -820,8 +824,8 @@
 			 * errors.
 			 */
 			if (vallen == (u_int)EVP_PKEY_size(host_pkey)) {
-				u_int32 *cookiebuf = malloc(
-				    RSA_size(host_pkey->pkey.rsa));
+				RSA *rsa = EVP_PKEY_get0_RSA(host_pkey);
+				u_int32 *cookiebuf = malloc(RSA_size(rsa));
 				if (!cookiebuf) {
 					rval = XEVNT_CKY;
 					break;
@@ -830,7 +834,7 @@
 				if (RSA_private_decrypt(vallen,
 				    (u_char *)ep->pkt,
 				    (u_char *)cookiebuf,
-				    host_pkey->pkey.rsa,
+				    rsa,
 				    RSA_PKCS1_OAEP_PADDING) != 4) {
 					rval = XEVNT_CKY;
 					free(cookiebuf);
@@ -1421,7 +1425,7 @@
 	)
 {
 	EVP_PKEY *pkey;		/* server public key */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp, tstamp1 = 0; /* timestamp */
 	tstamp_t fstamp, fstamp1 = 0; /* filestamp */
 	u_int	vallen;		/* value length */
@@ -1533,12 +1537,16 @@
 	 * signature. If the identity exchange is verified, light the
 	 * proventic bit. What a relief.
 	 */
-	EVP_VerifyInit(&ctx, peer->digest);
+	ctx = EVP_MD_CTX_new();
+	EVP_VerifyInit(ctx, peer->digest);
 	/* XXX: the "+ 12" needs to be at least documented... */
-	EVP_VerifyUpdate(&ctx, (u_char *)&ep->tstamp, vallen + 12);
-	if (EVP_VerifyFinal(&ctx, (u_char *)&ep->pkt[i], siglen,
-	    pkey) <= 0)
+	EVP_VerifyUpdate(ctx, (u_char *)&ep->tstamp, vallen + 12);
+	if (EVP_VerifyFinal(ctx, (u_char *)&ep->pkt[i], siglen,
+	    pkey) <= 0) {
+		EVP_MD_CTX_free(ctx);
 		return (XEVNT_SIG);
+	}
+	EVP_MD_CTX_free(ctx);
 
 	if (peer->crypto & CRYPTO_FLAG_VRFY)
 		peer->crypto |= CRYPTO_FLAG_PROV;
@@ -1564,7 +1572,7 @@
 	)
 {
 	EVP_PKEY *pkey;		/* public key */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;	/* NTP timestamp */
 	u_int32	temp32;
 	u_char *puch;
@@ -1592,7 +1600,7 @@
 	puch = vp->ptr;
 	temp32 = htonl(*cookie);
 	if (RSA_public_encrypt(4, (u_char *)&temp32, puch,
-	    pkey->pkey.rsa, RSA_PKCS1_OAEP_PADDING) <= 0) {
+	    EVP_PKEY_get0_RSA(pkey), RSA_PKCS1_OAEP_PADDING) <= 0) {
 		msyslog(LOG_ERR, "crypto_encrypt: %s",
 		    ERR_error_string(ERR_get_error(), NULL));
 		free(vp->ptr);
@@ -1604,13 +1612,15 @@
 		return (XEVNT_OK);
 
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, vallen);
-	if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, vallen);
+	if (EVP_SignFinal(ctx, vp->sig, &vallen, sign_pkey)) {
 		INSIST(vallen <= sign_siglen);
 		vp->siglen = htonl(vallen);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -1817,7 +1827,7 @@
 void
 crypto_update(void)
 {
-	EVP_MD_CTX ctx;		/* message digest context */
+	EVP_MD_CTX *ctx;	/* message digest context */
 	struct cert_info *cp;	/* certificate info/value */
 	char	statstr[NTP_MAXSTRLEN]; /* statistics for filegen */
 	u_int32	*ptr;
@@ -1828,6 +1838,8 @@
 	if (hostval.tstamp == 0)
 		return;
 
+	ctx = EVP_MD_CTX_new();
+
 	/*
 	 * Sign public key and timestamps. The filestamp is derived from
 	 * the host key file extension from wherever the file was
@@ -1838,10 +1850,10 @@
 		pubkey.siglen = 0;
 		if (pubkey.sig == NULL)
 			pubkey.sig = emalloc(sign_siglen);
-		EVP_SignInit(&ctx, sign_digest);
-		EVP_SignUpdate(&ctx, (u_char *)&pubkey, 12);
-		EVP_SignUpdate(&ctx, pubkey.ptr, ntohl(pubkey.vallen));
-		if (EVP_SignFinal(&ctx, pubkey.sig, &len, sign_pkey)) {
+		EVP_SignInit(ctx, sign_digest);
+		EVP_SignUpdate(ctx, (u_char *)&pubkey, 12);
+		EVP_SignUpdate(ctx, pubkey.ptr, ntohl(pubkey.vallen));
+		if (EVP_SignFinal(ctx, pubkey.sig, &len, sign_pkey)) {
 			INSIST(len <= sign_siglen);
 			pubkey.siglen = htonl(len);
 		}
@@ -1858,11 +1870,11 @@
 		cp->cert.siglen = 0;
 		if (cp->cert.sig == NULL)
 			cp->cert.sig = emalloc(sign_siglen);
-		EVP_SignInit(&ctx, sign_digest);
-		EVP_SignUpdate(&ctx, (u_char *)&cp->cert, 12);
-		EVP_SignUpdate(&ctx, cp->cert.ptr,
+		EVP_SignInit(ctx, sign_digest);
+		EVP_SignUpdate(ctx, (u_char *)&cp->cert, 12);
+		EVP_SignUpdate(ctx, cp->cert.ptr,
 		    ntohl(cp->cert.vallen));
-		if (EVP_SignFinal(&ctx, cp->cert.sig, &len, sign_pkey)) {
+		if (EVP_SignFinal(ctx, cp->cert.sig, &len, sign_pkey)) {
 			INSIST(len <= sign_siglen);
 			cp->cert.siglen = htonl(len);
 		}
@@ -1909,10 +1921,10 @@
 	}
 	if (tai_leap.sig == NULL)
 		tai_leap.sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&tai_leap, 12);
-	EVP_SignUpdate(&ctx, tai_leap.ptr, len);
-	if (EVP_SignFinal(&ctx, tai_leap.sig, &len, sign_pkey)) {
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&tai_leap, 12);
+	EVP_SignUpdate(ctx, tai_leap.ptr, len);
+	if (EVP_SignFinal(ctx, tai_leap.sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		tai_leap.siglen = htonl(len);
 	}
@@ -1922,6 +1934,7 @@
 	    ntohl(hostval.tstamp)); 
 	record_crypto_stats(NULL, statstr);
 	DPRINTF(1, ("crypto_update: %s\n", statstr));
+	EVP_MD_CTX_free(ctx);
 }
 
 /*
@@ -2061,7 +2074,7 @@
 	BIGNUM	*bk		/* BIGNUM * to */
 	)
 {
-	EVP_MD_CTX ctx;		/* message digest context */
+	EVP_MD_CTX *ctx;	/* message digest context */
 	u_char dgst[EVP_MAX_MD_SIZE]; /* message digest */
 	u_char	*ptr;		/* a BIGNUM as binary string */
 	u_int	len;
@@ -2069,9 +2082,11 @@
 	len = BN_num_bytes(bn);
 	ptr = emalloc(len);
 	BN_bn2bin(bn, ptr);
-	EVP_DigestInit(&ctx, EVP_md5());
-	EVP_DigestUpdate(&ctx, ptr, len);
-	EVP_DigestFinal(&ctx, dgst, &len);
+	ctx = EVP_MD_CTX_new();
+	EVP_DigestInit(ctx, EVP_md5());
+	EVP_DigestUpdate(ctx, ptr, len);
+	EVP_DigestFinal(ctx, dgst, &len);
+	EVP_MD_CTX_free(ctx);
 	BN_bin2bn(dgst, len, bk);
 	free(ptr);
 }
@@ -2139,9 +2154,10 @@
 {
 	DSA	*dsa;		/* IFF parameters */
 	BN_CTX	*bctx;		/* BIGNUM context */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;
 	u_int	len;
+	const BIGNUM *q;
 
 	/*
 	 * The identity parameters must have correct format and content.
@@ -2151,7 +2167,7 @@
 		return (XEVNT_ID);
 	}
 
-	if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) {
+	if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) {
 		msyslog(LOG_NOTICE, "crypto_alice: defective key");
 		return (XEVNT_PUB);
 	}
@@ -2162,10 +2178,11 @@
 	if (peer->iffval != NULL)
 		BN_free(peer->iffval);
 	peer->iffval = BN_new();
-	len = BN_num_bytes(dsa->q);
+	DSA_get0_pqg(dsa, NULL, &q, NULL);
+	len = BN_num_bytes(q);
 	BN_rand(peer->iffval, len * 8, -1, 1);	/* r mod q*/
 	bctx = BN_CTX_new();
-	BN_mod(peer->iffval, peer->iffval, dsa->q, bctx);
+	BN_mod(peer->iffval, peer->iffval, q, bctx);
 	BN_CTX_free(bctx);
 
 	/*
@@ -2182,13 +2199,15 @@
 		return (XEVNT_OK);
 
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, len);
-	if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, len);
+	if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		vp->siglen = htonl(len);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -2210,11 +2229,13 @@
 	DSA	*dsa;		/* IFF parameters */
 	DSA_SIG	*sdsa;		/* DSA signature context fake */
 	BN_CTX	*bctx;		/* BIGNUM context */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;	/* NTP timestamp */
 	BIGNUM	*bn, *bk, *r;
 	u_char	*ptr;
 	u_int	len;		/* extension field value length */
+	const BIGNUM *p, *q, *g;
+	const BIGNUM *priv_key;
 
 	/*
 	 * If the IFF parameters are not valid, something awful
@@ -2224,7 +2245,9 @@
 		msyslog(LOG_NOTICE, "crypto_bob: scheme unavailable");
 		return (XEVNT_ID);
 	}
-	dsa = iffkey_info->pkey->pkey.dsa;
+	dsa = EVP_PKEY_get0_DSA(iffkey_info->pkey);
+	DSA_get0_pqg(dsa, &p, &q, &g);
+	DSA_get0_key(dsa, NULL, &priv_key);
 
 	/*
 	 * Extract r from the challenge.
@@ -2245,15 +2268,14 @@
 	bctx = BN_CTX_new(); bk = BN_new(); bn = BN_new();
 	sdsa = DSA_SIG_new();
 	BN_rand(bk, len * 8, -1, 1);		/* k */
-	BN_mod_mul(bn, dsa->priv_key, r, dsa->q, bctx); /* b r mod q */
+	BN_mod_mul(bn, priv_key, r, q, bctx); /* b r mod q */
 	BN_add(bn, bn, bk);
-	BN_mod(bn, bn, dsa->q, bctx);		/* k + b r mod q */
-	sdsa->r = BN_dup(bn);
-	BN_mod_exp(bk, dsa->g, bk, dsa->p, bctx); /* g^k mod p */
+	BN_mod(bn, bn, q, bctx);		/* k + b r mod q */
+	BN_mod_exp(bk, g, bk, p, bctx); /* g^k mod p */
 	bighash(bk, bk);
-	sdsa->s = BN_dup(bk);
+	DSA_SIG_set0(sdsa, bn, bk);
 	BN_CTX_free(bctx);
-	BN_free(r); BN_free(bn); BN_free(bk);
+	BN_free(r);
 #ifdef DEBUG
 	if (debug > 1)
 		DSA_print_fp(stdout, dsa, 0);
@@ -2290,13 +2312,15 @@
 
 	/* XXX: more validation to make sure the sign fits... */
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, len);
-	if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, len);
+	if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		vp->siglen = htonl(len);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -2323,6 +2347,9 @@
 	u_int	len;
 	const u_char *ptr;
 	int	temp;
+	const BIGNUM *p, *g;
+	const BIGNUM *r, *s;
+	const BIGNUM *pub_key;
 
 	/*
 	 * If the IFF parameters are not valid or no challenge was sent,
@@ -2337,7 +2364,7 @@
 		    ntohl(ep->fstamp));
 		return (XEVNT_FSP);
 	}
-	if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) {
+	if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) {
 		msyslog(LOG_NOTICE, "crypto_iff: defective key");
 		return (XEVNT_PUB);
 	}
@@ -2362,15 +2389,18 @@
 	/*
 	 * Compute g^(k + b r) g^(q - b)r mod p.
 	 */
-	BN_mod_exp(bn, dsa->pub_key, peer->iffval, dsa->p, bctx);
-	BN_mod_exp(bk, dsa->g, sdsa->r, dsa->p, bctx);
-	BN_mod_mul(bn, bn, bk, dsa->p, bctx);
+	DSA_get0_key(dsa, &pub_key, NULL);
+	DSA_get0_pqg(dsa, &p, NULL, &g);
+	DSA_SIG_get0(sdsa, &r, &s);
+	BN_mod_exp(bn, pub_key, peer->iffval, p, bctx);
+	BN_mod_exp(bk, g, r, p, bctx);
+	BN_mod_mul(bn, bn, bk, p, bctx);
 
 	/*
 	 * Verify the hash of the result matches hash(x).
 	 */
 	bighash(bn, bn);
-	temp = BN_cmp(bn, sdsa->s);
+	temp = BN_cmp(bn, s);
 	BN_free(bn); BN_free(bk); BN_CTX_free(bctx);
 	BN_free(peer->iffval);
 	peer->iffval = NULL;
@@ -2456,9 +2486,10 @@
 {
 	RSA	*rsa;		/* GQ parameters */
 	BN_CTX	*bctx;		/* BIGNUM context */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;
 	u_int	len;
+	const BIGNUM *n;
 
 	/*
 	 * The identity parameters must have correct format and content.
@@ -2466,7 +2497,7 @@
 	if (peer->ident_pkey == NULL)
 		return (XEVNT_ID);
 
-	if ((rsa = peer->ident_pkey->pkey->pkey.rsa) == NULL) {
+	if ((rsa = EVP_PKEY_get0_RSA(peer->ident_pkey->pkey)) == NULL) {
 		msyslog(LOG_NOTICE, "crypto_alice2: defective key");
 		return (XEVNT_PUB);
 	}
@@ -2477,10 +2508,11 @@
 	if (peer->iffval != NULL)
 		BN_free(peer->iffval);
 	peer->iffval = BN_new();
-	len = BN_num_bytes(rsa->n);
+	RSA_get0_key(rsa, &n, NULL, NULL);
+	len = BN_num_bytes(n);
 	BN_rand(peer->iffval, len * 8, -1, 1);	/* r mod n */
 	bctx = BN_CTX_new();
-	BN_mod(peer->iffval, peer->iffval, rsa->n, bctx);
+	BN_mod(peer->iffval, peer->iffval, n, bctx);
 	BN_CTX_free(bctx);
 
 	/*
@@ -2497,13 +2529,15 @@
 		return (XEVNT_OK);
 
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, len);
-	if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, len);
+	if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		vp->siglen = htonl(len);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -2525,12 +2559,13 @@
 	RSA	*rsa;		/* GQ parameters */
 	DSA_SIG	*sdsa;		/* DSA parameters */
 	BN_CTX	*bctx;		/* BIGNUM context */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;	/* NTP timestamp */
 	BIGNUM	*r, *k, *g, *y;
 	u_char	*ptr;
 	u_int	len;
 	int	s_len;
+	const BIGNUM *n, *p, *e;
 
 	/*
 	 * If the GQ parameters are not valid, something awful
@@ -2540,7 +2575,8 @@
 		msyslog(LOG_NOTICE, "crypto_bob2: scheme unavailable");
 		return (XEVNT_ID);
 	}
-	rsa = gqkey_info->pkey->pkey.rsa;
+	rsa = EVP_PKEY_get0_RSA(gqkey_info->pkey);
+	RSA_get0_key(rsa, &n, &p, &e);
 
 	/*
 	 * Extract r from the challenge.
@@ -2561,15 +2597,14 @@
 	bctx = BN_CTX_new(); k = BN_new(); g = BN_new(); y = BN_new();
 	sdsa = DSA_SIG_new();
 	BN_rand(k, len * 8, -1, 1);		/* k */
-	BN_mod(k, k, rsa->n, bctx);
-	BN_mod_exp(y, rsa->p, r, rsa->n, bctx); /* u^r mod n */
-	BN_mod_mul(y, k, y, rsa->n, bctx);	/* k u^r mod n */
-	sdsa->r = BN_dup(y);
-	BN_mod_exp(g, k, rsa->e, rsa->n, bctx); /* k^b mod n */
+	BN_mod(k, k, n, bctx);
+	BN_mod_exp(y, p, r, n, bctx); /* u^r mod n */
+	BN_mod_mul(y, k, y, n, bctx);	/* k u^r mod n */
+	BN_mod_exp(g, k, e, n, bctx); /* k^b mod n */
 	bighash(g, g);
-	sdsa->s = BN_dup(g);
+	DSA_SIG_set0(sdsa, y, g);
 	BN_CTX_free(bctx);
-	BN_free(r); BN_free(k); BN_free(g); BN_free(y);
+	BN_free(r); BN_free(k);
 #ifdef DEBUG
 	if (debug > 1)
 		RSA_print_fp(stdout, rsa, 0);
@@ -2599,13 +2634,15 @@
 		return (XEVNT_OK);
 
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, len);
-	if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, len);
+	if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		vp->siglen = htonl(len);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -2633,6 +2670,8 @@
 	const u_char *ptr;
 	long	len;
 	u_int	temp;
+	const BIGNUM *n, *e;
+	const BIGNUM *r, *s;
 
 	/*
 	 * If the GQ parameters are not valid or no challenge was sent,
@@ -2649,10 +2688,11 @@
 		    ntohl(ep->fstamp));
 		return (XEVNT_FSP);
 	}
-	if ((rsa = peer->ident_pkey->pkey->pkey.rsa) == NULL) {
+	if ((rsa = EVP_PKEY_get0_RSA(peer->ident_pkey->pkey)) == NULL) {
 		msyslog(LOG_NOTICE, "crypto_gq: defective key");
 		return (XEVNT_PUB);
 	}
+	RSA_get0_key(rsa, &n, NULL, &e);
 	if (peer->iffval == NULL) {
 		msyslog(LOG_NOTICE, "crypto_gq: missing challenge");
 		return (XEVNT_ID);
@@ -2671,6 +2711,7 @@
 		    ERR_error_string(ERR_get_error(), NULL));
 		return (XEVNT_ERR);
 	}
+	DSA_SIG_get0(sdsa, &r, &s);
 
 	/*
 	 * Compute v^r y^b mod n.
@@ -2679,16 +2720,16 @@
 		msyslog(LOG_NOTICE, "crypto_gq: missing group key");
 		return (XEVNT_ID);
 	}
-	BN_mod_exp(v, peer->grpkey, peer->iffval, rsa->n, bctx);
+	BN_mod_exp(v, peer->grpkey, peer->iffval, n, bctx);
 						/* v^r mod n */
-	BN_mod_exp(y, sdsa->r, rsa->e, rsa->n, bctx); /* y^b mod n */
-	BN_mod_mul(y, v, y, rsa->n, bctx);	/* v^r y^b mod n */
+	BN_mod_exp(y, r, e, n, bctx); /* y^b mod n */
+	BN_mod_mul(y, v, y, n, bctx);	/* v^r y^b mod n */
 
 	/*
 	 * Verify the hash of the result matches hash(x).
 	 */
 	bighash(y, y);
-	temp = BN_cmp(y, sdsa->s);
+	temp = BN_cmp(y, s);
 	BN_CTX_free(bctx); BN_free(y); BN_free(v);
 	BN_free(peer->iffval);
 	peer->iffval = NULL;
@@ -2789,9 +2830,10 @@
 {
 	DSA	*dsa;		/* MV parameters */
 	BN_CTX	*bctx;		/* BIGNUM context */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;
 	u_int	len;
+	const BIGNUM *p;
 
 	/*
 	 * The identity parameters must have correct format and content.
@@ -2799,10 +2841,11 @@
 	if (peer->ident_pkey == NULL)
 		return (XEVNT_ID);
 
-	if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) {
+	if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) {
 		msyslog(LOG_NOTICE, "crypto_alice3: defective key");
 		return (XEVNT_PUB);
 	}
+	DSA_get0_pqg(dsa, &p, NULL, NULL);
 
 	/*
 	 * Roll new random r (0 < r < q).
@@ -2810,10 +2853,10 @@
 	if (peer->iffval != NULL)
 		BN_free(peer->iffval);
 	peer->iffval = BN_new();
-	len = BN_num_bytes(dsa->p);
+	len = BN_num_bytes(p);
 	BN_rand(peer->iffval, len * 8, -1, 1);	/* r mod p */
 	bctx = BN_CTX_new();
-	BN_mod(peer->iffval, peer->iffval, dsa->p, bctx);
+	BN_mod(peer->iffval, peer->iffval, p, bctx);
 	BN_CTX_free(bctx);
 
 	/*
@@ -2830,13 +2873,15 @@
 		return (XEVNT_OK);
 
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, len);
-	if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, len);
+	if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		vp->siglen = htonl(len);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -2857,11 +2902,14 @@
 	DSA	*dsa;		/* MV parameters */
 	DSA	*sdsa;		/* DSA signature context fake */
 	BN_CTX	*bctx;		/* BIGNUM context */
-	EVP_MD_CTX ctx;		/* signature context */
+	EVP_MD_CTX *ctx;	/* signature context */
 	tstamp_t tstamp;	/* NTP timestamp */
 	BIGNUM	*r, *k, *u;
 	u_char	*ptr;
 	u_int	len;
+	const BIGNUM *p, *q, *g;
+	const BIGNUM *pub_key, *priv_key;
+	BIGNUM *sp, *sq, *sg;
 
 	/*
 	 * If the MV parameters are not valid, something awful
@@ -2871,7 +2919,9 @@
 		msyslog(LOG_NOTICE, "crypto_bob3: scheme unavailable");
 		return (XEVNT_ID);
 	}
-	dsa = mvkey_info->pkey->pkey.dsa;
+	dsa = EVP_PKEY_get0_DSA(mvkey_info->pkey);
+	DSA_get0_pqg(dsa, &p, &q, &g);
+	DSA_get0_key(dsa, &pub_key, &priv_key);
 
 	/*
 	 * Extract r from the challenge.
@@ -2892,18 +2942,20 @@
 	 */
 	bctx = BN_CTX_new(); k = BN_new(); u = BN_new();
 	sdsa = DSA_new();
-	sdsa->p = BN_new(); sdsa->q = BN_new(); sdsa->g = BN_new();
+	sp = BN_new(); sq = BN_new(); sg = BN_new();
 	while (1) {
-		BN_rand(k, BN_num_bits(dsa->q), 0, 0);
-		BN_mod(k, k, dsa->q, bctx);
-		BN_gcd(u, k, dsa->q, bctx);
+		BN_rand(k, BN_num_bits(q), 0, 0);
+		BN_mod(k, k, q, bctx);
+		BN_gcd(u, k, q, bctx);
 		if (BN_is_one(u))
 			break;
 	}
-	BN_mod_exp(u, dsa->g, k, dsa->p, bctx); /* A^k r */
-	BN_mod_mul(sdsa->p, u, r, dsa->p, bctx);
-	BN_mod_exp(sdsa->q, dsa->priv_key, k, dsa->p, bctx); /* gbar */
-	BN_mod_exp(sdsa->g, dsa->pub_key, k, dsa->p, bctx); /* ghat */
+	BN_mod_exp(u, g, k, p, bctx); /* A^k r */
+	BN_mod_mul(sp, u, r, p, bctx);
+	BN_mod_exp(sq, priv_key, k, p, bctx); /* gbar */
+	BN_mod_exp(sg, pub_key, k, p, bctx); /* ghat */
+	DSA_set0_key(sdsa, BN_dup(pub_key), NULL);
+	DSA_set0_pqg(sdsa, sp, sq, sg);
 	BN_CTX_free(bctx); BN_free(k); BN_free(r); BN_free(u);
 #ifdef DEBUG
 	if (debug > 1)
@@ -2934,13 +2986,15 @@
 		return (XEVNT_OK);
 
 	vp->sig = emalloc(sign_siglen);
-	EVP_SignInit(&ctx, sign_digest);
-	EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
-	EVP_SignUpdate(&ctx, vp->ptr, len);
-	if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+	ctx = EVP_MD_CTX_new();
+	EVP_SignInit(ctx, sign_digest);
+	EVP_SignUpdate(ctx, (u_char *)&vp->tstamp, 12);
+	EVP_SignUpdate(ctx, vp->ptr, len);
+	if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 		INSIST(len <= sign_siglen);
 		vp->siglen = htonl(len);
 	}
+	EVP_MD_CTX_free(ctx);
 	return (XEVNT_OK);
 }
 
@@ -2968,6 +3022,9 @@
 	u_int	len;
 	const u_char *ptr;
 	int	temp;
+	const BIGNUM *p;
+	const BIGNUM *pub_key, *priv_key;
+	const BIGNUM *sp, *sq, *sg;
 
 	/*
 	 * If the MV parameters are not valid or no challenge was sent,
@@ -2982,10 +3039,12 @@
 		    ntohl(ep->fstamp));
 		return (XEVNT_FSP);
 	}
-	if ((dsa = peer->ident_pkey->pkey->pkey.dsa) == NULL) {
+	if ((dsa = EVP_PKEY_get0_DSA(peer->ident_pkey->pkey)) == NULL) {
 		msyslog(LOG_NOTICE, "crypto_mv: defective key");
 		return (XEVNT_PUB);
 	}
+	DSA_get0_pqg(dsa, &p, NULL, NULL);
+	DSA_get0_key(dsa, &pub_key, &priv_key);
 	if (peer->iffval == NULL) {
 		msyslog(LOG_NOTICE, "crypto_mv: missing challenge");
 		return (XEVNT_ID);
@@ -3002,14 +3061,15 @@
 		    ERR_error_string(ERR_get_error(), NULL));
 		return (XEVNT_ERR);
 	}
+	DSA_get0_pqg(sdsa, &sp, &sq, &sg);
 
 	/*
 	 * Compute (gbar^xhat ghat^xbar) mod p.
 	 */
-	BN_mod_exp(u, sdsa->q, dsa->pub_key, dsa->p, bctx);
-	BN_mod_exp(v, sdsa->g, dsa->priv_key, dsa->p, bctx);
-	BN_mod_mul(u, u, v, dsa->p, bctx);
-	BN_mod_mul(u, u, sdsa->p, dsa->p, bctx);
+	BN_mod_exp(u, sq, pub_key, p, bctx);
+	BN_mod_exp(v, sg, priv_key, p, bctx);
+	BN_mod_mul(u, u, v, p, bctx);
+	BN_mod_mul(u, u, sp, p, bctx);
 
 	/*
 	 * The result should match r.
@@ -3080,7 +3140,7 @@
 	ASN1_INTEGER *serial;	/* serial number */
 	X509_NAME *subj;	/* distinguished (common) name */
 	EVP_PKEY *pkey;		/* public key */
-	EVP_MD_CTX ctx;		/* message digest context */
+	EVP_MD_CTX *ctx;	/* message digest context */
 	tstamp_t tstamp;	/* NTP timestamp */
 	struct calendar tscal;
 	u_int	len;
@@ -3176,13 +3236,15 @@
 	vp->siglen = 0;
 	if (tstamp != 0) {
 		vp->sig = emalloc(sign_siglen);
-		EVP_SignInit(&ctx, sign_digest);
-		EVP_SignUpdate(&ctx, (u_char *)vp, 12);
-		EVP_SignUpdate(&ctx, vp->ptr, len);
-		if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) {
+		ctx = EVP_MD_CTX_new();
+		EVP_SignInit(ctx, sign_digest);
+		EVP_SignUpdate(ctx, (u_char *)vp, 12);
+		EVP_SignUpdate(ctx, vp->ptr, len);
+		if (EVP_SignFinal(ctx, vp->sig, &len, sign_pkey)) {
 			INSIST(len <= sign_siglen);
 			vp->siglen = htonl(len);
 		}
+		EVP_MD_CTX_free(ctx);
 	}
 #ifdef DEBUG
 	if (debug > 1)
@@ -3368,13 +3430,12 @@
 	)
 {
 	X509	*cert;		/* X509 certificate */
-	X509_EXTENSION *ext;	/* X509v3 extension */
 	struct cert_info *ret;	/* certificate info/value */
 	BIO	*bp;
 	char	pathbuf[MAXFILENAME];
 	const u_char *ptr;
 	char	*pch;
-	int	temp, cnt, i;
+	int	cnt, i;
 	struct calendar fscal;
 
 	/*
@@ -3422,7 +3483,7 @@
 	 * objects at this time, since the real crunch can happen only
 	 * when the time is valid but not yet certificated.
 	 */
-	ret->nid = OBJ_obj2nid(cert->cert_info->signature->algorithm);
+	ret->nid = X509_get_signature_nid(cert);
 	ret->digest = (const EVP_MD *)EVP_get_digestbynid(ret->nid);
 	ret->serial =
 	    (u_long)ASN1_INTEGER_get(X509_get_serialNumber(cert));
@@ -3446,10 +3507,17 @@
 	 */
 	cnt = X509_get_ext_count(cert);
 	for (i = 0; i < cnt; i++) {
+		X509_EXTENSION *ext;
+		ASN1_OBJECT *obj;
+		int nid;
+		ASN1_OCTET_STRING *data;
+
 		ext = X509_get_ext(cert, i);
-		temp = OBJ_obj2nid(ext->object);
-		switch (temp) {
+		obj = X509_EXTENSION_get_object(ext);
+		nid = OBJ_obj2nid(obj);
 
+		switch (nid) {
+
 		/*
 		 * If a key_usage field is present, we decode whether
 		 * this is a trusted or private certificate. This is
@@ -3466,7 +3534,7 @@
 			else if (strcmp(pathbuf, "Private") == 0)
 				ret->flags |= CERT_PRIV;
 			DPRINTF(1, ("cert_parse: %s: %s\n",
-				    OBJ_nid2ln(temp), pathbuf));
+				    OBJ_nid2ln(nid), pathbuf));
 			break;
 
 		/*
@@ -3474,12 +3542,13 @@
 		 * contains the GQ public key.
 		 */
 		case NID_subject_key_identifier:
-			ret->grpkey = BN_bin2bn(&ext->value->data[2],
-			    ext->value->length - 2, NULL);
+			data = X509_EXTENSION_get_data(ext);
+			ret->grpkey = BN_bin2bn(&data->data[2],
+			    data->length - 2, NULL);
 			/* fall through */
 		default:
 			DPRINTF(1, ("cert_parse: %s\n",
-				    OBJ_nid2ln(temp)));
+				    OBJ_nid2ln(nid)));
 			break;
 		}
 	}
@@ -3669,10 +3738,10 @@
 	DPRINTF(1, ("crypto_key: %s\n", statstr));
 #ifdef DEBUG
 	if (debug > 1) {
-		if (pkey->type == EVP_PKEY_DSA)
-			DSA_print_fp(stdout, pkey->pkey.dsa, 0);
-		else if (pkey->type == EVP_PKEY_RSA)
-			RSA_print_fp(stdout, pkey->pkey.rsa, 0);
+		if (EVP_PKEY_base_id(pkey) == EVP_PKEY_DSA)
+			DSA_print_fp(stdout, EVP_PKEY_get0_DSA(pkey), 0);
+		else if (EVP_PKEY_base_id(pkey) == EVP_PKEY_RSA)
+			RSA_print_fp(stdout, EVP_PKEY_get0_RSA(pkey), 0);
 	}
 #endif
 	return (pkp);
@@ -3882,7 +3951,7 @@
 		    filename);
 		exit (-1);
 	}
-	if (pinfo->pkey->type != EVP_PKEY_RSA) {
+	if (EVP_PKEY_base_id(pinfo->pkey) != EVP_PKEY_RSA) {
 		msyslog(LOG_ERR,
 		    "crypto_setup: host key is not RSA key type");
 		exit (-1);
Index: contrib/ntp/ntpd/ntp_parser.c
===================================================================
--- contrib/ntp/ntpd/ntp_parser.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_parser.c	(版本 310419)
@@ -96,7 +96,7 @@
   #  define ONLY_SIM(a)	NULL
   #endif
 
-#line 100 "../../ntpd/ntp_parser.c" /* yacc.c:339  */
+#line 100 "ntp_parser.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -141,191 +141,192 @@
     T_Automax = 265,
     T_Average = 266,
     T_Bclient = 267,
-    T_Beacon = 268,
-    T_Broadcast = 269,
-    T_Broadcastclient = 270,
-    T_Broadcastdelay = 271,
-    T_Burst = 272,
-    T_Calibrate = 273,
-    T_Ceiling = 274,
-    T_Clockstats = 275,
-    T_Cohort = 276,
-    T_ControlKey = 277,
-    T_Crypto = 278,
-    T_Cryptostats = 279,
-    T_Ctl = 280,
-    T_Day = 281,
-    T_Default = 282,
-    T_Digest = 283,
-    T_Disable = 284,
-    T_Discard = 285,
-    T_Dispersion = 286,
-    T_Double = 287,
-    T_Driftfile = 288,
-    T_Drop = 289,
-    T_Dscp = 290,
-    T_Ellipsis = 291,
-    T_Enable = 292,
-    T_End = 293,
-    T_False = 294,
-    T_File = 295,
-    T_Filegen = 296,
-    T_Filenum = 297,
-    T_Flag1 = 298,
-    T_Flag2 = 299,
-    T_Flag3 = 300,
-    T_Flag4 = 301,
-    T_Flake = 302,
-    T_Floor = 303,
-    T_Freq = 304,
-    T_Fudge = 305,
-    T_Host = 306,
-    T_Huffpuff = 307,
-    T_Iburst = 308,
-    T_Ident = 309,
-    T_Ignore = 310,
-    T_Incalloc = 311,
-    T_Incmem = 312,
-    T_Initalloc = 313,
-    T_Initmem = 314,
-    T_Includefile = 315,
-    T_Integer = 316,
-    T_Interface = 317,
-    T_Intrange = 318,
-    T_Io = 319,
-    T_Ipv4 = 320,
-    T_Ipv4_flag = 321,
-    T_Ipv6 = 322,
-    T_Ipv6_flag = 323,
-    T_Kernel = 324,
-    T_Key = 325,
-    T_Keys = 326,
-    T_Keysdir = 327,
-    T_Kod = 328,
-    T_Mssntp = 329,
-    T_Leapfile = 330,
-    T_Leapsmearinterval = 331,
-    T_Limited = 332,
-    T_Link = 333,
-    T_Listen = 334,
-    T_Logconfig = 335,
-    T_Logfile = 336,
-    T_Loopstats = 337,
-    T_Lowpriotrap = 338,
-    T_Manycastclient = 339,
-    T_Manycastserver = 340,
-    T_Mask = 341,
-    T_Maxage = 342,
-    T_Maxclock = 343,
-    T_Maxdepth = 344,
-    T_Maxdist = 345,
-    T_Maxmem = 346,
-    T_Maxpoll = 347,
-    T_Mdnstries = 348,
-    T_Mem = 349,
-    T_Memlock = 350,
-    T_Minclock = 351,
-    T_Mindepth = 352,
-    T_Mindist = 353,
-    T_Minimum = 354,
-    T_Minpoll = 355,
-    T_Minsane = 356,
-    T_Mode = 357,
-    T_Mode7 = 358,
-    T_Monitor = 359,
-    T_Month = 360,
-    T_Mru = 361,
-    T_Multicastclient = 362,
-    T_Nic = 363,
-    T_Nolink = 364,
-    T_Nomodify = 365,
-    T_Nomrulist = 366,
-    T_None = 367,
-    T_Nonvolatile = 368,
-    T_Nopeer = 369,
-    T_Noquery = 370,
-    T_Noselect = 371,
-    T_Noserve = 372,
-    T_Notrap = 373,
-    T_Notrust = 374,
-    T_Ntp = 375,
-    T_Ntpport = 376,
-    T_NtpSignDsocket = 377,
-    T_Orphan = 378,
-    T_Orphanwait = 379,
-    T_PCEdigest = 380,
-    T_Panic = 381,
-    T_Peer = 382,
-    T_Peerstats = 383,
-    T_Phone = 384,
-    T_Pid = 385,
-    T_Pidfile = 386,
-    T_Pool = 387,
-    T_Port = 388,
-    T_Preempt = 389,
-    T_Prefer = 390,
-    T_Protostats = 391,
-    T_Pw = 392,
-    T_Randfile = 393,
-    T_Rawstats = 394,
-    T_Refid = 395,
-    T_Requestkey = 396,
-    T_Reset = 397,
-    T_Restrict = 398,
-    T_Revoke = 399,
-    T_Rlimit = 400,
-    T_Saveconfigdir = 401,
-    T_Server = 402,
-    T_Setvar = 403,
-    T_Source = 404,
-    T_Stacksize = 405,
-    T_Statistics = 406,
-    T_Stats = 407,
-    T_Statsdir = 408,
-    T_Step = 409,
-    T_Stepback = 410,
-    T_Stepfwd = 411,
-    T_Stepout = 412,
-    T_Stratum = 413,
-    T_String = 414,
-    T_Sys = 415,
-    T_Sysstats = 416,
-    T_Tick = 417,
-    T_Time1 = 418,
-    T_Time2 = 419,
-    T_Timer = 420,
-    T_Timingstats = 421,
-    T_Tinker = 422,
-    T_Tos = 423,
-    T_Trap = 424,
-    T_True = 425,
-    T_Trustedkey = 426,
-    T_Ttl = 427,
-    T_Type = 428,
-    T_U_int = 429,
-    T_UEcrypto = 430,
-    T_UEcryptonak = 431,
-    T_UEdigest = 432,
-    T_Unconfig = 433,
-    T_Unpeer = 434,
-    T_Version = 435,
-    T_WanderThreshold = 436,
-    T_Week = 437,
-    T_Wildcard = 438,
-    T_Xleave = 439,
-    T_Year = 440,
-    T_Flag = 441,
-    T_EOC = 442,
-    T_Simulate = 443,
-    T_Beep_Delay = 444,
-    T_Sim_Duration = 445,
-    T_Server_Offset = 446,
-    T_Duration = 447,
-    T_Freq_Offset = 448,
-    T_Wander = 449,
-    T_Jitter = 450,
-    T_Prop_Delay = 451,
-    T_Proc_Delay = 452
+    T_Bcpollbstep = 268,
+    T_Beacon = 269,
+    T_Broadcast = 270,
+    T_Broadcastclient = 271,
+    T_Broadcastdelay = 272,
+    T_Burst = 273,
+    T_Calibrate = 274,
+    T_Ceiling = 275,
+    T_Clockstats = 276,
+    T_Cohort = 277,
+    T_ControlKey = 278,
+    T_Crypto = 279,
+    T_Cryptostats = 280,
+    T_Ctl = 281,
+    T_Day = 282,
+    T_Default = 283,
+    T_Digest = 284,
+    T_Disable = 285,
+    T_Discard = 286,
+    T_Dispersion = 287,
+    T_Double = 288,
+    T_Driftfile = 289,
+    T_Drop = 290,
+    T_Dscp = 291,
+    T_Ellipsis = 292,
+    T_Enable = 293,
+    T_End = 294,
+    T_False = 295,
+    T_File = 296,
+    T_Filegen = 297,
+    T_Filenum = 298,
+    T_Flag1 = 299,
+    T_Flag2 = 300,
+    T_Flag3 = 301,
+    T_Flag4 = 302,
+    T_Flake = 303,
+    T_Floor = 304,
+    T_Freq = 305,
+    T_Fudge = 306,
+    T_Host = 307,
+    T_Huffpuff = 308,
+    T_Iburst = 309,
+    T_Ident = 310,
+    T_Ignore = 311,
+    T_Incalloc = 312,
+    T_Incmem = 313,
+    T_Initalloc = 314,
+    T_Initmem = 315,
+    T_Includefile = 316,
+    T_Integer = 317,
+    T_Interface = 318,
+    T_Intrange = 319,
+    T_Io = 320,
+    T_Ipv4 = 321,
+    T_Ipv4_flag = 322,
+    T_Ipv6 = 323,
+    T_Ipv6_flag = 324,
+    T_Kernel = 325,
+    T_Key = 326,
+    T_Keys = 327,
+    T_Keysdir = 328,
+    T_Kod = 329,
+    T_Mssntp = 330,
+    T_Leapfile = 331,
+    T_Leapsmearinterval = 332,
+    T_Limited = 333,
+    T_Link = 334,
+    T_Listen = 335,
+    T_Logconfig = 336,
+    T_Logfile = 337,
+    T_Loopstats = 338,
+    T_Lowpriotrap = 339,
+    T_Manycastclient = 340,
+    T_Manycastserver = 341,
+    T_Mask = 342,
+    T_Maxage = 343,
+    T_Maxclock = 344,
+    T_Maxdepth = 345,
+    T_Maxdist = 346,
+    T_Maxmem = 347,
+    T_Maxpoll = 348,
+    T_Mdnstries = 349,
+    T_Mem = 350,
+    T_Memlock = 351,
+    T_Minclock = 352,
+    T_Mindepth = 353,
+    T_Mindist = 354,
+    T_Minimum = 355,
+    T_Minpoll = 356,
+    T_Minsane = 357,
+    T_Mode = 358,
+    T_Mode7 = 359,
+    T_Monitor = 360,
+    T_Month = 361,
+    T_Mru = 362,
+    T_Multicastclient = 363,
+    T_Nic = 364,
+    T_Nolink = 365,
+    T_Nomodify = 366,
+    T_Nomrulist = 367,
+    T_None = 368,
+    T_Nonvolatile = 369,
+    T_Nopeer = 370,
+    T_Noquery = 371,
+    T_Noselect = 372,
+    T_Noserve = 373,
+    T_Notrap = 374,
+    T_Notrust = 375,
+    T_Ntp = 376,
+    T_Ntpport = 377,
+    T_NtpSignDsocket = 378,
+    T_Orphan = 379,
+    T_Orphanwait = 380,
+    T_PCEdigest = 381,
+    T_Panic = 382,
+    T_Peer = 383,
+    T_Peerstats = 384,
+    T_Phone = 385,
+    T_Pid = 386,
+    T_Pidfile = 387,
+    T_Pool = 388,
+    T_Port = 389,
+    T_Preempt = 390,
+    T_Prefer = 391,
+    T_Protostats = 392,
+    T_Pw = 393,
+    T_Randfile = 394,
+    T_Rawstats = 395,
+    T_Refid = 396,
+    T_Requestkey = 397,
+    T_Reset = 398,
+    T_Restrict = 399,
+    T_Revoke = 400,
+    T_Rlimit = 401,
+    T_Saveconfigdir = 402,
+    T_Server = 403,
+    T_Setvar = 404,
+    T_Source = 405,
+    T_Stacksize = 406,
+    T_Statistics = 407,
+    T_Stats = 408,
+    T_Statsdir = 409,
+    T_Step = 410,
+    T_Stepback = 411,
+    T_Stepfwd = 412,
+    T_Stepout = 413,
+    T_Stratum = 414,
+    T_String = 415,
+    T_Sys = 416,
+    T_Sysstats = 417,
+    T_Tick = 418,
+    T_Time1 = 419,
+    T_Time2 = 420,
+    T_Timer = 421,
+    T_Timingstats = 422,
+    T_Tinker = 423,
+    T_Tos = 424,
+    T_Trap = 425,
+    T_True = 426,
+    T_Trustedkey = 427,
+    T_Ttl = 428,
+    T_Type = 429,
+    T_U_int = 430,
+    T_UEcrypto = 431,
+    T_UEcryptonak = 432,
+    T_UEdigest = 433,
+    T_Unconfig = 434,
+    T_Unpeer = 435,
+    T_Version = 436,
+    T_WanderThreshold = 437,
+    T_Week = 438,
+    T_Wildcard = 439,
+    T_Xleave = 440,
+    T_Year = 441,
+    T_Flag = 442,
+    T_EOC = 443,
+    T_Simulate = 444,
+    T_Beep_Delay = 445,
+    T_Sim_Duration = 446,
+    T_Server_Offset = 447,
+    T_Duration = 448,
+    T_Freq_Offset = 449,
+    T_Wander = 450,
+    T_Jitter = 451,
+    T_Prop_Delay = 452,
+    T_Proc_Delay = 453
   };
 #endif
 /* Tokens.  */
@@ -339,191 +340,192 @@
 #define T_Automax 265
 #define T_Average 266
 #define T_Bclient 267
-#define T_Beacon 268
-#define T_Broadcast 269
-#define T_Broadcastclient 270
-#define T_Broadcastdelay 271
-#define T_Burst 272
-#define T_Calibrate 273
-#define T_Ceiling 274
-#define T_Clockstats 275
-#define T_Cohort 276
-#define T_ControlKey 277
-#define T_Crypto 278
-#define T_Cryptostats 279
-#define T_Ctl 280
-#define T_Day 281
-#define T_Default 282
-#define T_Digest 283
-#define T_Disable 284
-#define T_Discard 285
-#define T_Dispersion 286
-#define T_Double 287
-#define T_Driftfile 288
-#define T_Drop 289
-#define T_Dscp 290
-#define T_Ellipsis 291
-#define T_Enable 292
-#define T_End 293
-#define T_False 294
-#define T_File 295
-#define T_Filegen 296
-#define T_Filenum 297
-#define T_Flag1 298
-#define T_Flag2 299
-#define T_Flag3 300
-#define T_Flag4 301
-#define T_Flake 302
-#define T_Floor 303
-#define T_Freq 304
-#define T_Fudge 305
-#define T_Host 306
-#define T_Huffpuff 307
-#define T_Iburst 308
-#define T_Ident 309
-#define T_Ignore 310
-#define T_Incalloc 311
-#define T_Incmem 312
-#define T_Initalloc 313
-#define T_Initmem 314
-#define T_Includefile 315
-#define T_Integer 316
-#define T_Interface 317
-#define T_Intrange 318
-#define T_Io 319
-#define T_Ipv4 320
-#define T_Ipv4_flag 321
-#define T_Ipv6 322
-#define T_Ipv6_flag 323
-#define T_Kernel 324
-#define T_Key 325
-#define T_Keys 326
-#define T_Keysdir 327
-#define T_Kod 328
-#define T_Mssntp 329
-#define T_Leapfile 330
-#define T_Leapsmearinterval 331
-#define T_Limited 332
-#define T_Link 333
-#define T_Listen 334
-#define T_Logconfig 335
-#define T_Logfile 336
-#define T_Loopstats 337
-#define T_Lowpriotrap 338
-#define T_Manycastclient 339
-#define T_Manycastserver 340
-#define T_Mask 341
-#define T_Maxage 342
-#define T_Maxclock 343
-#define T_Maxdepth 344
-#define T_Maxdist 345
-#define T_Maxmem 346
-#define T_Maxpoll 347
-#define T_Mdnstries 348
-#define T_Mem 349
-#define T_Memlock 350
-#define T_Minclock 351
-#define T_Mindepth 352
-#define T_Mindist 353
-#define T_Minimum 354
-#define T_Minpoll 355
-#define T_Minsane 356
-#define T_Mode 357
-#define T_Mode7 358
-#define T_Monitor 359
-#define T_Month 360
-#define T_Mru 361
-#define T_Multicastclient 362
-#define T_Nic 363
-#define T_Nolink 364
-#define T_Nomodify 365
-#define T_Nomrulist 366
-#define T_None 367
-#define T_Nonvolatile 368
-#define T_Nopeer 369
-#define T_Noquery 370
-#define T_Noselect 371
-#define T_Noserve 372
-#define T_Notrap 373
-#define T_Notrust 374
-#define T_Ntp 375
-#define T_Ntpport 376
-#define T_NtpSignDsocket 377
-#define T_Orphan 378
-#define T_Orphanwait 379
-#define T_PCEdigest 380
-#define T_Panic 381
-#define T_Peer 382
-#define T_Peerstats 383
-#define T_Phone 384
-#define T_Pid 385
-#define T_Pidfile 386
-#define T_Pool 387
-#define T_Port 388
-#define T_Preempt 389
-#define T_Prefer 390
-#define T_Protostats 391
-#define T_Pw 392
-#define T_Randfile 393
-#define T_Rawstats 394
-#define T_Refid 395
-#define T_Requestkey 396
-#define T_Reset 397
-#define T_Restrict 398
-#define T_Revoke 399
-#define T_Rlimit 400
-#define T_Saveconfigdir 401
-#define T_Server 402
-#define T_Setvar 403
-#define T_Source 404
-#define T_Stacksize 405
-#define T_Statistics 406
-#define T_Stats 407
-#define T_Statsdir 408
-#define T_Step 409
-#define T_Stepback 410
-#define T_Stepfwd 411
-#define T_Stepout 412
-#define T_Stratum 413
-#define T_String 414
-#define T_Sys 415
-#define T_Sysstats 416
-#define T_Tick 417
-#define T_Time1 418
-#define T_Time2 419
-#define T_Timer 420
-#define T_Timingstats 421
-#define T_Tinker 422
-#define T_Tos 423
-#define T_Trap 424
-#define T_True 425
-#define T_Trustedkey 426
-#define T_Ttl 427
-#define T_Type 428
-#define T_U_int 429
-#define T_UEcrypto 430
-#define T_UEcryptonak 431
-#define T_UEdigest 432
-#define T_Unconfig 433
-#define T_Unpeer 434
-#define T_Version 435
-#define T_WanderThreshold 436
-#define T_Week 437
-#define T_Wildcard 438
-#define T_Xleave 439
-#define T_Year 440
-#define T_Flag 441
-#define T_EOC 442
-#define T_Simulate 443
-#define T_Beep_Delay 444
-#define T_Sim_Duration 445
-#define T_Server_Offset 446
-#define T_Duration 447
-#define T_Freq_Offset 448
-#define T_Wander 449
-#define T_Jitter 450
-#define T_Prop_Delay 451
-#define T_Proc_Delay 452
+#define T_Bcpollbstep 268
+#define T_Beacon 269
+#define T_Broadcast 270
+#define T_Broadcastclient 271
+#define T_Broadcastdelay 272
+#define T_Burst 273
+#define T_Calibrate 274
+#define T_Ceiling 275
+#define T_Clockstats 276
+#define T_Cohort 277
+#define T_ControlKey 278
+#define T_Crypto 279
+#define T_Cryptostats 280
+#define T_Ctl 281
+#define T_Day 282
+#define T_Default 283
+#define T_Digest 284
+#define T_Disable 285
+#define T_Discard 286
+#define T_Dispersion 287
+#define T_Double 288
+#define T_Driftfile 289
+#define T_Drop 290
+#define T_Dscp 291
+#define T_Ellipsis 292
+#define T_Enable 293
+#define T_End 294
+#define T_False 295
+#define T_File 296
+#define T_Filegen 297
+#define T_Filenum 298
+#define T_Flag1 299
+#define T_Flag2 300
+#define T_Flag3 301
+#define T_Flag4 302
+#define T_Flake 303
+#define T_Floor 304
+#define T_Freq 305
+#define T_Fudge 306
+#define T_Host 307
+#define T_Huffpuff 308
+#define T_Iburst 309
+#define T_Ident 310
+#define T_Ignore 311
+#define T_Incalloc 312
+#define T_Incmem 313
+#define T_Initalloc 314
+#define T_Initmem 315
+#define T_Includefile 316
+#define T_Integer 317
+#define T_Interface 318
+#define T_Intrange 319
+#define T_Io 320
+#define T_Ipv4 321
+#define T_Ipv4_flag 322
+#define T_Ipv6 323
+#define T_Ipv6_flag 324
+#define T_Kernel 325
+#define T_Key 326
+#define T_Keys 327
+#define T_Keysdir 328
+#define T_Kod 329
+#define T_Mssntp 330
+#define T_Leapfile 331
+#define T_Leapsmearinterval 332
+#define T_Limited 333
+#define T_Link 334
+#define T_Listen 335
+#define T_Logconfig 336
+#define T_Logfile 337
+#define T_Loopstats 338
+#define T_Lowpriotrap 339
+#define T_Manycastclient 340
+#define T_Manycastserver 341
+#define T_Mask 342
+#define T_Maxage 343
+#define T_Maxclock 344
+#define T_Maxdepth 345
+#define T_Maxdist 346
+#define T_Maxmem 347
+#define T_Maxpoll 348
+#define T_Mdnstries 349
+#define T_Mem 350
+#define T_Memlock 351
+#define T_Minclock 352
+#define T_Mindepth 353
+#define T_Mindist 354
+#define T_Minimum 355
+#define T_Minpoll 356
+#define T_Minsane 357
+#define T_Mode 358
+#define T_Mode7 359
+#define T_Monitor 360
+#define T_Month 361
+#define T_Mru 362
+#define T_Multicastclient 363
+#define T_Nic 364
+#define T_Nolink 365
+#define T_Nomodify 366
+#define T_Nomrulist 367
+#define T_None 368
+#define T_Nonvolatile 369
+#define T_Nopeer 370
+#define T_Noquery 371
+#define T_Noselect 372
+#define T_Noserve 373
+#define T_Notrap 374
+#define T_Notrust 375
+#define T_Ntp 376
+#define T_Ntpport 377
+#define T_NtpSignDsocket 378
+#define T_Orphan 379
+#define T_Orphanwait 380
+#define T_PCEdigest 381
+#define T_Panic 382
+#define T_Peer 383
+#define T_Peerstats 384
+#define T_Phone 385
+#define T_Pid 386
+#define T_Pidfile 387
+#define T_Pool 388
+#define T_Port 389
+#define T_Preempt 390
+#define T_Prefer 391
+#define T_Protostats 392
+#define T_Pw 393
+#define T_Randfile 394
+#define T_Rawstats 395
+#define T_Refid 396
+#define T_Requestkey 397
+#define T_Reset 398
+#define T_Restrict 399
+#define T_Revoke 400
+#define T_Rlimit 401
+#define T_Saveconfigdir 402
+#define T_Server 403
+#define T_Setvar 404
+#define T_Source 405
+#define T_Stacksize 406
+#define T_Statistics 407
+#define T_Stats 408
+#define T_Statsdir 409
+#define T_Step 410
+#define T_Stepback 411
+#define T_Stepfwd 412
+#define T_Stepout 413
+#define T_Stratum 414
+#define T_String 415
+#define T_Sys 416
+#define T_Sysstats 417
+#define T_Tick 418
+#define T_Time1 419
+#define T_Time2 420
+#define T_Timer 421
+#define T_Timingstats 422
+#define T_Tinker 423
+#define T_Tos 424
+#define T_Trap 425
+#define T_True 426
+#define T_Trustedkey 427
+#define T_Ttl 428
+#define T_Type 429
+#define T_U_int 430
+#define T_UEcrypto 431
+#define T_UEcryptonak 432
+#define T_UEdigest 433
+#define T_Unconfig 434
+#define T_Unpeer 435
+#define T_Version 436
+#define T_WanderThreshold 437
+#define T_Week 438
+#define T_Wildcard 439
+#define T_Xleave 440
+#define T_Year 441
+#define T_Flag 442
+#define T_EOC 443
+#define T_Simulate 444
+#define T_Beep_Delay 445
+#define T_Sim_Duration 446
+#define T_Server_Offset 447
+#define T_Duration 448
+#define T_Freq_Offset 449
+#define T_Wander 450
+#define T_Jitter 451
+#define T_Prop_Delay 452
+#define T_Proc_Delay 453
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -549,7 +551,7 @@
 	script_info *		Sim_script;
 	script_info_fifo *	Sim_script_fifo;
 
-#line 553 "../../ntpd/ntp_parser.c" /* yacc.c:355  */
+#line 555 "ntp_parser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -566,7 +568,7 @@
 
 /* Copy the second part of user declarations.  */
 
-#line 570 "../../ntpd/ntp_parser.c" /* yacc.c:358  */
+#line 572 "ntp_parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -806,23 +808,23 @@
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  214
+#define YYFINAL  215
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   655
+#define YYLAST   654
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  203
+#define YYNTOKENS  204
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  105
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  317
+#define YYNRULES  318
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  423
+#define YYNSTATES  424
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   452
+#define YYMAXUTOK   453
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -835,15 +837,15 @@
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     199,   200,     2,     2,     2,     2,     2,     2,     2,     2,
+     200,   201,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   198,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   199,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   201,     2,   202,     2,     2,     2,     2,
+       2,     2,     2,   202,     2,   203,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -876,7 +878,7 @@
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197
+     195,   196,   197,   198
 };
 
 #if YYDEBUG
@@ -883,38 +885,38 @@
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   370,   370,   374,   375,   376,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     412,   422,   423,   424,   425,   426,   430,   431,   436,   441,
-     443,   449,   450,   458,   459,   460,   464,   469,   470,   471,
-     472,   473,   474,   475,   476,   480,   482,   487,   488,   489,
-     490,   491,   492,   496,   501,   510,   520,   521,   531,   533,
-     535,   537,   548,   555,   557,   562,   564,   566,   568,   570,
-     579,   585,   586,   594,   596,   608,   609,   610,   611,   612,
-     621,   626,   631,   639,   641,   643,   648,   649,   650,   651,
-     652,   653,   657,   658,   659,   660,   669,   671,   680,   690,
-     695,   703,   704,   705,   706,   707,   708,   709,   710,   715,
-     716,   724,   734,   743,   758,   763,   764,   768,   769,   773,
-     774,   775,   776,   777,   778,   779,   788,   792,   796,   804,
-     812,   820,   835,   850,   863,   864,   872,   873,   874,   875,
-     876,   877,   878,   879,   880,   881,   882,   883,   884,   885,
-     886,   890,   895,   903,   908,   909,   910,   914,   919,   927,
-     932,   933,   934,   935,   936,   937,   938,   939,   947,   957,
-     962,   970,   972,   974,   983,   985,   990,   991,   995,   996,
-     997,   998,  1006,  1011,  1016,  1024,  1029,  1030,  1031,  1040,
-    1042,  1047,  1052,  1060,  1062,  1079,  1080,  1081,  1082,  1083,
-    1084,  1088,  1089,  1090,  1091,  1092,  1093,  1101,  1106,  1111,
-    1119,  1124,  1125,  1126,  1127,  1128,  1129,  1130,  1131,  1132,
-    1133,  1142,  1143,  1144,  1151,  1158,  1165,  1181,  1200,  1202,
-    1204,  1206,  1208,  1210,  1217,  1222,  1223,  1224,  1228,  1232,
-    1241,  1242,  1246,  1247,  1248,  1252,  1263,  1277,  1289,  1294,
-    1296,  1301,  1302,  1310,  1312,  1320,  1325,  1333,  1358,  1365,
-    1375,  1376,  1380,  1381,  1382,  1383,  1387,  1388,  1389,  1393,
-    1398,  1403,  1411,  1412,  1413,  1414,  1415,  1416,  1417,  1427,
-    1432,  1440,  1445,  1453,  1455,  1459,  1464,  1469,  1477,  1482,
-    1490,  1499,  1500,  1504,  1505,  1514,  1532,  1536,  1541,  1549,
-    1554,  1555,  1559,  1564,  1572,  1577,  1582,  1587,  1592,  1600,
-    1605,  1610,  1618,  1623,  1624,  1625,  1626,  1627
+       0,   371,   371,   375,   376,   377,   392,   393,   394,   395,
+     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
+     413,   423,   424,   425,   426,   427,   431,   432,   437,   442,
+     444,   450,   451,   459,   460,   461,   465,   470,   471,   472,
+     473,   474,   475,   476,   477,   481,   483,   488,   489,   490,
+     491,   492,   493,   497,   502,   511,   521,   522,   532,   534,
+     536,   538,   549,   556,   558,   563,   565,   567,   569,   571,
+     580,   586,   587,   595,   597,   609,   610,   611,   612,   613,
+     622,   627,   632,   640,   642,   644,   649,   650,   651,   652,
+     653,   654,   655,   659,   660,   661,   662,   671,   673,   682,
+     692,   697,   705,   706,   707,   708,   709,   710,   711,   712,
+     717,   718,   726,   736,   745,   760,   765,   766,   770,   771,
+     775,   776,   777,   778,   779,   780,   781,   790,   794,   798,
+     806,   814,   822,   837,   852,   865,   866,   874,   875,   876,
+     877,   878,   879,   880,   881,   882,   883,   884,   885,   886,
+     887,   888,   892,   897,   905,   910,   911,   912,   916,   921,
+     929,   934,   935,   936,   937,   938,   939,   940,   941,   949,
+     959,   964,   972,   974,   976,   985,   987,   992,   993,   997,
+     998,   999,  1000,  1008,  1013,  1018,  1026,  1031,  1032,  1033,
+    1042,  1044,  1049,  1054,  1062,  1064,  1081,  1082,  1083,  1084,
+    1085,  1086,  1090,  1091,  1092,  1093,  1094,  1095,  1103,  1108,
+    1113,  1121,  1126,  1127,  1128,  1129,  1130,  1131,  1132,  1133,
+    1134,  1135,  1144,  1145,  1146,  1153,  1160,  1167,  1183,  1202,
+    1204,  1206,  1208,  1210,  1212,  1219,  1224,  1225,  1226,  1230,
+    1234,  1243,  1244,  1248,  1249,  1250,  1254,  1265,  1279,  1291,
+    1296,  1298,  1303,  1304,  1312,  1314,  1322,  1327,  1335,  1360,
+    1367,  1377,  1378,  1382,  1383,  1384,  1385,  1389,  1390,  1391,
+    1395,  1400,  1405,  1413,  1414,  1415,  1416,  1417,  1418,  1419,
+    1429,  1434,  1442,  1447,  1455,  1457,  1461,  1466,  1471,  1479,
+    1484,  1492,  1501,  1502,  1506,  1507,  1516,  1534,  1538,  1543,
+    1551,  1556,  1557,  1561,  1566,  1574,  1579,  1584,  1589,  1594,
+    1602,  1607,  1612,  1620,  1625,  1626,  1627,  1628,  1629
 };
 #endif
 
@@ -925,59 +927,60 @@
 {
   "$end", "error", "$undefined", "T_Abbrev", "T_Age", "T_All", "T_Allan",
   "T_Allpeers", "T_Auth", "T_Autokey", "T_Automax", "T_Average",
-  "T_Bclient", "T_Beacon", "T_Broadcast", "T_Broadcastclient",
-  "T_Broadcastdelay", "T_Burst", "T_Calibrate", "T_Ceiling",
-  "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto", "T_Cryptostats",
-  "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable", "T_Discard",
-  "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop", "T_Dscp",
-  "T_Ellipsis", "T_Enable", "T_End", "T_False", "T_File", "T_Filegen",
-  "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4", "T_Flake",
-  "T_Floor", "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff", "T_Iburst",
-  "T_Ident", "T_Ignore", "T_Incalloc", "T_Incmem", "T_Initalloc",
-  "T_Initmem", "T_Includefile", "T_Integer", "T_Interface", "T_Intrange",
-  "T_Io", "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag", "T_Kernel",
-  "T_Key", "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp", "T_Leapfile",
-  "T_Leapsmearinterval", "T_Limited", "T_Link", "T_Listen", "T_Logconfig",
-  "T_Logfile", "T_Loopstats", "T_Lowpriotrap", "T_Manycastclient",
-  "T_Manycastserver", "T_Mask", "T_Maxage", "T_Maxclock", "T_Maxdepth",
-  "T_Maxdist", "T_Maxmem", "T_Maxpoll", "T_Mdnstries", "T_Mem",
-  "T_Memlock", "T_Minclock", "T_Mindepth", "T_Mindist", "T_Minimum",
-  "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7", "T_Monitor", "T_Month",
-  "T_Mru", "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify",
-  "T_Nomrulist", "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery",
-  "T_Noselect", "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport",
-  "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_PCEdigest", "T_Panic",
-  "T_Peer", "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool",
-  "T_Port", "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile",
-  "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict",
-  "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar",
-  "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir",
-  "T_Step", "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum",
-  "T_String", "T_Sys", "T_Sysstats", "T_Tick", "T_Time1", "T_Time2",
-  "T_Timer", "T_Timingstats", "T_Tinker", "T_Tos", "T_Trap", "T_True",
-  "T_Trustedkey", "T_Ttl", "T_Type", "T_U_int", "T_UEcrypto",
-  "T_UEcryptonak", "T_UEdigest", "T_Unconfig", "T_Unpeer", "T_Version",
-  "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave", "T_Year",
-  "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay", "T_Sim_Duration",
-  "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter",
-  "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'",
-  "$accept", "configuration", "command_list", "command", "server_command",
-  "client_type", "address", "ip_address", "address_fam", "option_list",
-  "option", "option_flag", "option_flag_keyword", "option_int",
-  "option_int_keyword", "option_str", "option_str_keyword",
-  "unpeer_command", "unpeer_keyword", "other_mode_command",
-  "authentication_command", "crypto_command_list", "crypto_command",
-  "crypto_str_keyword", "orphan_mode_command", "tos_option_list",
-  "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword",
-  "monitoring_command", "stats_list", "stat", "filegen_option_list",
-  "filegen_option", "link_nolink", "enable_disable", "filegen_type",
-  "access_control_command", "ac_flag_list", "access_control_flag",
-  "discard_option_list", "discard_option", "discard_option_keyword",
-  "mru_option_list", "mru_option", "mru_option_keyword", "fudge_command",
-  "fudge_factor_list", "fudge_factor", "fudge_factor_dbl_keyword",
-  "fudge_factor_bool_keyword", "rlimit_command", "rlimit_option_list",
-  "rlimit_option", "rlimit_option_keyword", "system_option_command",
-  "system_option_list", "system_option", "system_option_flag_keyword",
+  "T_Bclient", "T_Bcpollbstep", "T_Beacon", "T_Broadcast",
+  "T_Broadcastclient", "T_Broadcastdelay", "T_Burst", "T_Calibrate",
+  "T_Ceiling", "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto",
+  "T_Cryptostats", "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable",
+  "T_Discard", "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop",
+  "T_Dscp", "T_Ellipsis", "T_Enable", "T_End", "T_False", "T_File",
+  "T_Filegen", "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4",
+  "T_Flake", "T_Floor", "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff",
+  "T_Iburst", "T_Ident", "T_Ignore", "T_Incalloc", "T_Incmem",
+  "T_Initalloc", "T_Initmem", "T_Includefile", "T_Integer", "T_Interface",
+  "T_Intrange", "T_Io", "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag",
+  "T_Kernel", "T_Key", "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp",
+  "T_Leapfile", "T_Leapsmearinterval", "T_Limited", "T_Link", "T_Listen",
+  "T_Logconfig", "T_Logfile", "T_Loopstats", "T_Lowpriotrap",
+  "T_Manycastclient", "T_Manycastserver", "T_Mask", "T_Maxage",
+  "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem", "T_Maxpoll",
+  "T_Mdnstries", "T_Mem", "T_Memlock", "T_Minclock", "T_Mindepth",
+  "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7",
+  "T_Monitor", "T_Month", "T_Mru", "T_Multicastclient", "T_Nic",
+  "T_Nolink", "T_Nomodify", "T_Nomrulist", "T_None", "T_Nonvolatile",
+  "T_Nopeer", "T_Noquery", "T_Noselect", "T_Noserve", "T_Notrap",
+  "T_Notrust", "T_Ntp", "T_Ntpport", "T_NtpSignDsocket", "T_Orphan",
+  "T_Orphanwait", "T_PCEdigest", "T_Panic", "T_Peer", "T_Peerstats",
+  "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port", "T_Preempt",
+  "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", "T_Rawstats",
+  "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", "T_Revoke",
+  "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar", "T_Source",
+  "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir", "T_Step",
+  "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum", "T_String", "T_Sys",
+  "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", "T_Timer", "T_Timingstats",
+  "T_Tinker", "T_Tos", "T_Trap", "T_True", "T_Trustedkey", "T_Ttl",
+  "T_Type", "T_U_int", "T_UEcrypto", "T_UEcryptonak", "T_UEdigest",
+  "T_Unconfig", "T_Unpeer", "T_Version", "T_WanderThreshold", "T_Week",
+  "T_Wildcard", "T_Xleave", "T_Year", "T_Flag", "T_EOC", "T_Simulate",
+  "T_Beep_Delay", "T_Sim_Duration", "T_Server_Offset", "T_Duration",
+  "T_Freq_Offset", "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay",
+  "'='", "'('", "')'", "'{'", "'}'", "$accept", "configuration",
+  "command_list", "command", "server_command", "client_type", "address",
+  "ip_address", "address_fam", "option_list", "option", "option_flag",
+  "option_flag_keyword", "option_int", "option_int_keyword", "option_str",
+  "option_str_keyword", "unpeer_command", "unpeer_keyword",
+  "other_mode_command", "authentication_command", "crypto_command_list",
+  "crypto_command", "crypto_str_keyword", "orphan_mode_command",
+  "tos_option_list", "tos_option", "tos_option_int_keyword",
+  "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
+  "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
+  "filegen_type", "access_control_command", "ac_flag_list",
+  "access_control_flag", "discard_option_list", "discard_option",
+  "discard_option_keyword", "mru_option_list", "mru_option",
+  "mru_option_keyword", "fudge_command", "fudge_factor_list",
+  "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
+  "rlimit_command", "rlimit_option_list", "rlimit_option",
+  "rlimit_option_keyword", "system_option_command", "system_option_list",
+  "system_option", "system_option_flag_keyword",
   "system_option_local_flag_keyword", "tinker_command",
   "tinker_option_list", "tinker_option", "tinker_option_keyword",
   "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_int_keyword",
@@ -1020,8 +1023,8 @@
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   447,   448,   449,   450,   451,   452,    61,    40,
-      41,   123,   125
+     445,   446,   447,   448,   449,   450,   451,   452,   453,    61,
+      40,    41,   123,   125
 };
 # endif
 
@@ -1039,49 +1042,49 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-      20,  -174,   -32,  -189,  -189,  -189,   -29,  -189,   315,     3,
-    -133,  -189,   315,  -189,   119,   -48,  -189,  -126,  -189,  -118,
-    -115,  -189,  -189,  -113,  -189,  -189,   -48,    -5,   374,   -48,
-    -189,  -189,  -105,  -189,  -100,  -189,  -189,     1,    81,    46,
-       2,   -31,  -189,  -189,   -90,   119,   -88,  -189,   148,   380,
-     -81,   -53,    23,  -189,  -189,  -189,    87,   207,  -106,  -189,
-     -48,  -189,   -48,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,    -9,    29,   -62,   -61,  -189,    -7,  -189,
-    -189,  -102,  -189,  -189,  -189,    32,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,   315,  -189,
-    -189,  -189,  -189,  -189,  -189,     3,  -189,    42,    78,  -189,
-     315,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,   112,  -189,   -39,   367,  -189,  -189,  -189,
-    -113,  -189,  -189,   -48,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,   374,  -189,    60,   -48,  -189,  -189,   -34,
-    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    81,  -189,
-    -189,    97,   102,  -189,  -189,    44,  -189,  -189,  -189,  -189,
-     -31,  -189,    71,   -63,  -189,   119,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,   148,  -189,
-      -9,  -189,  -189,   -36,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,   380,  -189,    75,    -9,  -189,  -189,    76,   -53,
-    -189,  -189,  -189,    77,  -189,   -43,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,     0,  -150,
-    -189,  -189,  -189,  -189,  -189,    89,  -189,    -6,  -189,  -189,
-    -189,  -189,    39,    13,  -189,  -189,  -189,  -189,    15,    99,
-    -189,  -189,   112,  -189,    -9,   -36,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,  -189,   475,  -189,  -189,   475,   475,   -81,
-    -189,  -189,    18,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,   -58,   144,  -189,  -189,  -189,   353,  -189,
-    -189,  -189,  -189,  -189,  -189,  -189,  -189,   -96,    -3,   -13,
-    -189,  -189,  -189,  -189,    27,  -189,  -189,    11,  -189,  -189,
+      18,  -177,   -45,  -189,  -189,  -189,   -40,  -189,    32,     5,
+    -129,  -189,    32,  -189,   204,   -44,  -189,  -117,  -189,  -110,
+    -101,  -189,  -189,   -97,  -189,  -189,   -44,    -4,   495,   -44,
+    -189,  -189,   -96,  -189,   -94,  -189,  -189,     8,    54,   258,
+      10,   -28,  -189,  -189,   -89,   204,   -86,  -189,   270,   529,
+     -85,   -56,    14,  -189,  -189,  -189,    83,   207,   -95,  -189,
+     -44,  -189,   -44,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,    -7,    24,   -73,   -68,  -189,    -3,  -189,
+    -189,  -106,  -189,  -189,  -189,   313,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    32,  -189,
+    -189,  -189,  -189,  -189,  -189,     5,  -189,    35,    65,  -189,
+      32,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,   110,  -189,   -59,   368,  -189,  -189,  -189,
+     -97,  -189,  -189,   -44,  -189,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,   495,  -189,    44,   -44,  -189,  -189,   -51,
+    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    54,  -189,
+    -189,    86,    89,  -189,  -189,    33,  -189,  -189,  -189,  -189,
+     -28,  -189,    49,   -75,  -189,   204,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,   270,  -189,
+      -7,  -189,  -189,  -189,   -33,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,   529,  -189,    66,    -7,  -189,  -189,    67,
+     -56,  -189,  -189,  -189,    68,  -189,   -53,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,    16,
+    -153,  -189,  -189,  -189,  -189,  -189,    77,  -189,   -18,  -189,
+    -189,  -189,  -189,   226,   -13,  -189,  -189,  -189,  -189,    -8,
+      97,  -189,  -189,   110,  -189,    -7,   -33,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,  -189,   449,  -189,  -189,   449,   449,
+     -85,  -189,  -189,    11,  -189,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,   -49,   108,  -189,  -189,  -189,   125,
+    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -102,   -20,
+     -30,  -189,  -189,  -189,  -189,    13,  -189,  -189,     9,  -189,
     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,   475,   475,  -189,   163,   -81,   133,  -189,
-     141,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,   449,   449,  -189,   146,   -85,   113,
+    -189,   116,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-     -52,  -189,    45,     5,    19,  -125,  -189,     8,  -189,    -9,
-    -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,   475,
-    -189,  -189,  -189,  -189,    14,  -189,  -189,  -189,   -48,  -189,
-    -189,  -189,    22,  -189,  -189,  -189,    21,    24,    -9,    36,
-    -164,  -189,    33,    -9,  -189,  -189,  -189,    10,    69,  -189,
-    -189,  -189,  -189,  -189,    31,    48,    40,  -189,    52,  -189,
-      -9,  -189,  -189
+    -189,   -54,  -189,    23,   -10,     6,  -138,  -189,    -9,  -189,
+      -7,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
+     449,  -189,  -189,  -189,  -189,   -17,  -189,  -189,  -189,   -44,
+    -189,  -189,  -189,    20,  -189,  -189,  -189,     0,    21,    -7,
+      22,  -173,  -189,    25,    -7,  -189,  -189,  -189,    17,     7,
+    -189,  -189,  -189,  -189,  -189,   217,    39,    36,  -189,    46,
+    -189,    -7,  -189,  -189
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1089,81 +1092,81 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     0,     0,    24,    58,   235,     0,    71,     0,     0,
-     247,   238,     0,   228,     0,     0,   240,     0,   260,     0,
-       0,   241,   239,     0,   242,    25,     0,     0,     0,     0,
-     261,   236,     0,    23,     0,   243,    22,     0,     0,     0,
-       0,     0,   244,    21,     0,     0,     0,   237,     0,     0,
-       0,     0,     0,    56,    57,   296,     0,     2,     0,     7,
+       0,     0,     0,    24,    58,   236,     0,    71,     0,     0,
+     248,   239,     0,   229,     0,     0,   241,     0,   261,     0,
+       0,   242,   240,     0,   243,    25,     0,     0,     0,     0,
+     262,   237,     0,    23,     0,   244,    22,     0,     0,     0,
+       0,     0,   245,    21,     0,     0,     0,   238,     0,     0,
+       0,     0,     0,    56,    57,   297,     0,     2,     0,     7,
        0,     8,     0,     9,    10,    13,    11,    12,    14,    15,
-      16,    17,    18,     0,     0,     0,     0,   221,     0,   222,
-      19,     0,     5,    62,    63,    64,   195,   196,   197,   198,
-     201,   199,   200,   202,   203,   204,   205,   206,   190,   192,
-     193,   194,   154,   155,   156,   126,   152,     0,   245,   229,
-     189,   101,   102,   103,   104,   108,   105,   106,   107,   109,
-      29,    30,    28,     0,    26,     0,     6,    65,    66,   257,
-     230,   256,   289,    59,    61,   160,   161,   162,   163,   164,
-     165,   166,   167,   127,   158,     0,    60,    70,   287,   231,
-      67,   272,   273,   274,   275,   276,   277,   278,   269,   271,
-     134,    29,    30,   134,   134,    26,    68,   188,   186,   187,
-     182,   184,     0,     0,   232,    96,   100,    97,   211,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   207,   209,
-       0,    91,    86,     0,    87,    95,    93,    94,    92,    90,
-      88,    89,    80,    82,     0,     0,   251,   283,     0,    69,
-     282,   284,   280,   234,     1,     0,     4,    31,    55,   294,
-     293,   223,   224,   225,   226,   268,   267,   266,     0,     0,
-      79,    75,    76,    77,    78,     0,    72,     0,   191,   151,
-     153,   246,    98,     0,   178,   179,   180,   181,     0,     0,
-     176,   177,   168,   170,     0,     0,    27,   227,   255,   288,
-     157,   159,   286,   270,   130,   134,   134,   133,   128,     0,
-     183,   185,     0,    99,   208,   210,   292,   290,   291,    85,
-      81,    83,    84,   233,     0,   281,   279,     3,    20,   262,
-     263,   264,   259,   265,   258,   300,   301,     0,     0,     0,
-      74,    73,   118,   117,     0,   115,   116,     0,   110,   113,
-     114,   174,   175,   173,   169,   171,   172,   136,   137,   138,
+      16,    17,    18,     0,     0,     0,     0,   222,     0,   223,
+      19,     0,     5,    62,    63,    64,   196,   197,   198,   199,
+     202,   200,   201,   203,   204,   205,   206,   207,   191,   193,
+     194,   195,   155,   156,   157,   127,   153,     0,   246,   230,
+     190,   102,   103,   104,   105,   109,   106,   107,   108,   110,
+      29,    30,    28,     0,    26,     0,     6,    65,    66,   258,
+     231,   257,   290,    59,    61,   161,   162,   163,   164,   165,
+     166,   167,   168,   128,   159,     0,    60,    70,   288,   232,
+      67,   273,   274,   275,   276,   277,   278,   279,   270,   272,
+     135,    29,    30,   135,   135,    26,    68,   189,   187,   188,
+     183,   185,     0,     0,   233,    97,   101,    98,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   208,   210,
+       0,    86,    92,    87,     0,    88,    96,    94,    95,    93,
+      91,    89,    90,    80,    82,     0,     0,   252,   284,     0,
+      69,   283,   285,   281,   235,     1,     0,     4,    31,    55,
+     295,   294,   224,   225,   226,   227,   269,   268,   267,     0,
+       0,    79,    75,    76,    77,    78,     0,    72,     0,   192,
+     152,   154,   247,    99,     0,   179,   180,   181,   182,     0,
+       0,   177,   178,   169,   171,     0,     0,    27,   228,   256,
+     289,   158,   160,   287,   271,   131,   135,   135,   134,   129,
+       0,   184,   186,     0,   100,   209,   211,   293,   291,   292,
+      85,    81,    83,    84,   234,     0,   282,   280,     3,    20,
+     263,   264,   265,   260,   266,   259,   301,   302,     0,     0,
+       0,    74,    73,   119,   118,     0,   116,   117,     0,   111,
+     114,   115,   175,   176,   174,   170,   172,   173,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   135,   131,   132,   134,   250,     0,     0,   252,
-       0,    37,    38,    39,    54,    47,    49,    48,    51,    40,
-      41,    42,    43,    50,    52,    44,    32,    33,    36,    34,
-       0,    35,     0,     0,     0,     0,   303,     0,   298,     0,
-     111,   125,   121,   123,   119,   120,   122,   124,   112,   129,
-     249,   248,   254,   253,     0,    45,    46,    53,     0,   297,
-     295,   302,     0,   299,   285,   306,     0,     0,     0,     0,
-       0,   308,     0,     0,   304,   307,   305,     0,     0,   313,
-     314,   315,   316,   317,     0,     0,     0,   309,     0,   311,
-       0,   310,   312
+     149,   150,   151,   136,   132,   133,   135,   251,     0,     0,
+     253,     0,    37,    38,    39,    54,    47,    49,    48,    51,
+      40,    41,    42,    43,    50,    52,    44,    32,    33,    36,
+      34,     0,    35,     0,     0,     0,     0,   304,     0,   299,
+       0,   112,   126,   122,   124,   120,   121,   123,   125,   113,
+     130,   250,   249,   255,   254,     0,    45,    46,    53,     0,
+     298,   296,   303,     0,   300,   286,   307,     0,     0,     0,
+       0,     0,   309,     0,     0,   305,   308,   306,     0,     0,
+     314,   315,   316,   317,   318,     0,     0,     0,   310,     0,
+     312,     0,   311,   313
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -189,  -189,  -189,   -41,  -189,  -189,   -15,   -38,  -189,  -189,
+    -189,  -189,  -189,   -48,  -189,  -189,   -15,   -38,  -189,  -189,
     -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,  -189,  -189,  -189,    16,  -189,  -189,  -189,
-    -189,   -35,  -189,  -189,  -189,  -189,  -189,  -189,  -157,  -189,
-    -189,   138,  -189,  -189,   106,  -189,  -189,  -189,    -2,  -189,
-    -189,  -189,  -189,    83,  -189,  -189,   239,   -79,  -189,  -189,
-    -189,  -189,    66,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
-    -189,  -189,  -189,  -189,  -189,   126,  -189,  -189,  -189,  -189,
-    -189,  -189,   101,  -189,  -189,    51,  -189,  -189,   242,    17,
-    -188,  -189,  -189,  -189,   -24,  -189,  -189,   -97,  -189,  -189,
-    -189,  -123,  -189,  -130,  -189
+    -189,  -189,  -189,  -189,  -189,  -189,    37,  -189,  -189,  -189,
+    -189,   -42,  -189,  -189,  -189,  -189,  -189,  -189,  -159,  -189,
+    -189,   131,  -189,  -189,    96,  -189,  -189,  -189,    -6,  -189,
+    -189,  -189,  -189,    74,  -189,  -189,   236,   -71,  -189,  -189,
+    -189,  -189,    62,  -189,  -189,  -189,  -189,  -189,  -189,  -189,
+    -189,  -189,  -189,  -189,  -189,   122,  -189,  -189,  -189,  -189,
+    -189,  -189,    95,  -189,  -189,    45,  -189,  -189,   225,     1,
+    -188,  -189,  -189,  -189,   -39,  -189,  -189,  -103,  -189,  -189,
+    -189,  -136,  -189,  -149,  -189
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    56,    57,    58,    59,    60,   132,   124,   125,   288,
-     356,   357,   358,   359,   360,   361,   362,    61,    62,    63,
-      64,    85,   236,   237,    65,   202,   203,   204,   205,    66,
-     175,   119,   242,   308,   309,   310,   378,    67,   264,   332,
-     105,   106,   107,   143,   144,   145,    68,   252,   253,   254,
-     255,    69,   170,   171,   172,    70,    98,    99,   100,   101,
+      -1,    56,    57,    58,    59,    60,   132,   124,   125,   289,
+     357,   358,   359,   360,   361,   362,   363,    61,    62,    63,
+      64,    85,   237,   238,    65,   203,   204,   205,   206,    66,
+     175,   119,   243,   309,   310,   311,   379,    67,   265,   333,
+     105,   106,   107,   143,   144,   145,    68,   253,   254,   255,
+     256,    69,   170,   171,   172,    70,    98,    99,   100,   101,
       71,   188,   189,   190,    72,    73,    74,    75,    76,   109,
-     174,   381,   283,   339,   130,   131,    77,    78,   294,   228,
-      79,   158,   159,   213,   209,   210,   211,   149,   133,   279,
-     221,    80,    81,   297,   298,   299,   365,   366,   397,   367,
-     400,   401,   414,   415,   416
+     174,   382,   284,   340,   130,   131,    77,    78,   295,   229,
+      79,   158,   159,   214,   210,   211,   212,   149,   133,   280,
+     222,    80,    81,   298,   299,   300,   366,   367,   398,   368,
+     401,   402,   415,   416,   417
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1171,142 +1174,142 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     123,   165,   275,   276,   337,   289,   267,   268,   207,   385,
-     176,   167,   206,    82,   102,   371,   215,   282,   120,   238,
-     121,     1,   363,   219,   164,   277,   108,   225,   399,    83,
-       2,   238,    84,   126,     3,     4,     5,   372,   404,   295,
-     296,   127,     6,     7,   128,   217,   129,   218,   226,     8,
-       9,   363,   220,    10,   147,    11,   134,    12,    13,   148,
-     230,    14,   150,   166,   168,   290,   315,   291,   302,   173,
-      15,   177,   227,   160,    16,   338,   303,   390,   122,   304,
-      17,   216,    18,   231,   212,   257,   232,   214,   151,   152,
-     222,    19,    20,   295,   296,    21,    22,   223,   224,   229,
-      23,    24,   103,   240,    25,    26,   153,   104,   333,   334,
-     241,   122,   161,    27,   162,   243,   373,   305,   259,   169,
-     256,   261,   386,   374,   265,   262,    28,    29,    30,   266,
-     269,   259,   271,    31,   278,   272,   281,   284,   286,   111,
-     273,   375,    32,   112,   287,   154,   208,    33,   306,    34,
-     300,    35,    36,   301,   178,   244,   245,   246,   247,   292,
-     313,    37,    38,    39,    40,    41,    42,    43,    44,   233,
-     234,    45,   311,    46,   312,   155,   235,   336,   379,   179,
-     340,   393,    47,   293,   368,   369,   370,    48,    49,    50,
-     380,    51,    52,   376,   383,   163,   377,   180,    53,    54,
-     181,   113,   384,   388,   387,   122,   389,    -6,    55,   392,
-     402,   408,   307,   396,   394,   407,   399,     2,   280,   398,
-     406,     3,     4,     5,   409,   410,   411,   412,   413,     6,
-       7,   335,   422,   417,   403,   419,     8,     9,   420,   421,
-      10,   156,    11,   239,    12,    13,   157,   114,    14,   260,
-     314,   110,   248,   270,   274,   115,   258,    15,   116,   263,
-     285,    16,   409,   410,   411,   412,   413,    17,   391,    18,
-     249,   146,   316,   364,   182,   250,   251,   405,    19,    20,
-     117,     0,    21,    22,   418,   118,     0,    23,    24,     0,
-       0,    25,    26,     0,     0,     0,     0,     0,     0,   382,
-      27,     0,   183,   184,   185,   186,     0,     0,     0,     0,
-     187,     0,     0,    28,    29,    30,     0,     0,     0,     0,
-      31,     0,     0,    86,     0,     0,     0,    87,     0,    32,
-       0,     0,     0,    88,    33,     0,    34,     0,    35,    36,
-       0,     0,     0,     0,     0,     0,     0,     0,    37,    38,
-      39,    40,    41,    42,    43,    44,     0,     0,    45,     0,
-      46,     0,   341,     0,     0,     0,     0,     0,     0,    47,
-     342,     0,     0,   395,    48,    49,    50,     2,    51,    52,
-       0,     3,     4,     5,    89,    53,    54,     0,     0,     6,
-       7,     0,     0,   191,    -6,    55,     8,     9,     0,   192,
-      10,   193,    11,     0,    12,    13,   343,   344,    14,     0,
-       0,     0,     0,     0,     0,     0,     0,    15,    90,    91,
-       0,    16,     0,   345,     0,     0,     0,    17,   194,    18,
-     135,   136,   137,   138,     0,    92,     0,     0,    19,    20,
-      93,     0,    21,    22,     0,   346,     0,    23,    24,     0,
-       0,    25,    26,   347,     0,   348,     0,     0,     0,     0,
-      27,   139,     0,   140,     0,   141,     0,    94,   195,   349,
-     196,   142,     0,    28,    29,    30,   197,     0,   198,     0,
-      31,   199,     0,     0,     0,     0,     0,   350,   351,    32,
-      95,    96,    97,     0,    33,     0,    34,     0,    35,    36,
-       0,     0,     0,   200,   201,     0,     0,     0,    37,    38,
-      39,    40,    41,    42,    43,    44,     0,     0,    45,     0,
-      46,     0,   317,   352,     0,   353,     0,     0,     0,    47,
-     318,     0,     0,   354,    48,    49,    50,   355,    51,    52,
-       0,     0,     0,     0,     0,    53,    54,     0,   319,   320,
-       0,     0,   321,     0,     0,    55,     0,     0,   322,     0,
+     123,   165,   276,   176,   268,   269,   208,   277,   386,   216,
+     364,    82,   207,   372,   338,   167,   102,    83,   283,     1,
+     400,   290,    84,   120,   164,   121,   220,   239,     2,   278,
+     405,   108,   226,     3,     4,     5,   373,   296,   297,   239,
+      86,     6,     7,   126,    87,   218,   364,   219,     8,     9,
+     127,    88,    10,   227,    11,   221,    12,    13,   134,   128,
+      14,   151,   152,   129,   147,   391,   148,   316,   168,    15,
+     150,   173,   166,    16,   177,   122,   213,   228,   258,    17,
+     153,    18,   291,   215,   292,   339,   223,   224,   296,   297,
+      19,    20,   225,   217,    21,    22,   230,   241,   242,    23,
+      24,   257,    89,    25,    26,   103,   262,   334,   335,   263,
+     104,   272,    27,   244,   266,   374,   122,   267,   260,   154,
+     270,   387,   375,   169,   273,    28,    29,    30,   282,   285,
+     287,   260,    31,   274,   342,   288,    90,    91,   279,   301,
+     376,    32,   302,   343,   209,   341,    33,   312,    34,   155,
+      35,    36,   313,    92,   245,   246,   247,   248,    93,   314,
+      37,    38,    39,    40,    41,    42,    43,    44,   369,   370,
+      45,   337,    46,   371,   381,   384,   293,   380,   385,   344,
+     345,    47,   394,   388,   395,    94,    48,    49,    50,   389,
+      51,    52,   377,   393,   390,   378,   346,    53,    54,   399,
+     294,   410,   411,   412,   413,   414,    -6,    55,    95,    96,
+      97,   403,   397,   407,   400,   156,   408,     2,   347,   409,
+     157,   404,     3,     4,     5,   111,   348,   420,   349,   112,
+       6,     7,   336,   423,   422,   421,   240,     8,     9,   261,
+     281,    10,   350,    11,   271,    12,    13,   315,   110,    14,
+     275,   249,   259,   264,   146,   286,   303,   317,    15,   365,
+     351,   352,    16,   392,   304,   406,   419,   305,    17,   250,
+      18,     0,     0,     0,   251,   252,   178,     0,     0,    19,
+      20,     0,     0,    21,    22,     0,   160,   113,    23,    24,
+       0,     0,    25,    26,     0,     0,   353,     0,   354,     0,
+     383,    27,   179,     0,     0,   306,   355,     0,     0,     0,
+     356,     0,     0,     0,    28,    29,    30,     0,     0,     0,
+     180,    31,     0,   181,     0,   161,     0,   162,     0,     0,
+      32,     0,     0,   114,     0,    33,   307,    34,     0,    35,
+      36,   115,   231,     0,   116,     0,     0,     0,     0,    37,
+      38,    39,    40,    41,    42,    43,    44,     0,     0,    45,
+       0,    46,     0,     0,     0,   232,   117,     0,   233,     0,
+      47,   118,     0,     0,   396,    48,    49,    50,     2,    51,
+      52,     0,     0,     3,     4,     5,    53,    54,     0,     0,
+       0,     6,     7,     0,     0,    -6,    55,   182,     8,     9,
+     308,     0,    10,     0,    11,     0,    12,    13,   163,     0,
+      14,   410,   411,   412,   413,   414,     0,     0,   122,    15,
+     418,     0,     0,    16,     0,   183,   184,   185,   186,    17,
+       0,    18,     0,   187,     0,     0,     0,     0,     0,     0,
+      19,    20,     0,     0,    21,    22,     0,     0,     0,    23,
+      24,   234,   235,    25,    26,     0,     0,     0,   236,     0,
+       0,     0,    27,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,    33,   318,    34,     0,
+      35,    36,     0,     0,     0,   319,     0,     0,     0,     0,
+      37,    38,    39,    40,    41,    42,    43,    44,     0,     0,
+      45,     0,    46,   320,   321,     0,     0,   322,     0,     0,
+       0,    47,     0,   323,     0,     0,    48,    49,    50,     0,
+      51,    52,   191,   192,     0,     0,     0,    53,    54,   193,
+       0,   194,   135,   136,   137,   138,     0,    55,     0,     0,
+     324,   325,     0,     0,   326,   327,     0,   328,   329,   330,
+       0,   331,     0,     0,     0,     0,     0,     0,   195,     0,
+       0,     0,     0,   139,     0,   140,     0,   141,     0,     0,
+       0,     0,     0,   142,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   196,     0,
+     197,     0,     0,     0,     0,     0,   198,     0,   199,     0,
+     332,   200,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   323,   324,     0,     0,   325,
-     326,     0,   327,   328,   329,     0,   330,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   331
+       0,     0,     0,   201,   202
 };
 
 static const yytype_int16 yycheck[] =
 {
-      15,    39,   190,    39,    62,     5,   163,   164,    61,    61,
-      45,    42,    50,   187,    11,     4,    57,   205,    66,    98,
-      68,     1,   147,    32,    39,    61,   159,    34,   192,    61,
-      10,   110,    61,   159,    14,    15,    16,    26,   202,   189,
-     190,   159,    22,    23,   159,    60,   159,    62,    55,    29,
-      30,   147,    61,    33,   159,    35,    61,    37,    38,   159,
-      28,    41,    61,    61,    95,    65,   254,    67,    29,   159,
-      50,   159,    79,    27,    54,   133,    37,   202,   159,    40,
-      60,   187,    62,    51,    61,   126,    54,     0,     7,     8,
-      61,    71,    72,   189,   190,    75,    76,   159,   159,   201,
-      80,    81,    99,    61,    84,    85,    25,   104,   265,   266,
-      32,   159,    66,    93,    68,     3,   105,    78,   133,   150,
-     159,    61,   174,   112,    27,   159,   106,   107,   108,    27,
-      86,   146,    61,   113,   170,   198,    61,    61,    61,    20,
-     175,   130,   122,    24,   187,    64,   199,   127,   109,   129,
-      61,   131,   132,   159,     6,    43,    44,    45,    46,   159,
-      61,   141,   142,   143,   144,   145,   146,   147,   148,   137,
-     138,   151,   159,   153,   159,    94,   144,   159,   335,    31,
-      36,   369,   162,   183,   187,   198,   159,   167,   168,   169,
-      27,   171,   172,   182,    61,   149,   185,    49,   178,   179,
-      52,    82,    61,   198,   159,   159,   187,   187,   188,   201,
-     398,   201,   173,   191,   200,   403,   192,    10,   202,   198,
-     187,    14,    15,    16,   193,   194,   195,   196,   197,    22,
-      23,   269,   420,   202,   198,   187,    29,    30,   198,   187,
-      33,   160,    35,   105,    37,    38,   165,   128,    41,   143,
-     252,    12,   140,   170,   188,   136,   130,    50,   139,   158,
-     209,    54,   193,   194,   195,   196,   197,    60,   365,    62,
-     158,    29,   255,   297,   126,   163,   164,   400,    71,    72,
-     161,    -1,    75,    76,   414,   166,    -1,    80,    81,    -1,
-      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,   337,
-      93,    -1,   154,   155,   156,   157,    -1,    -1,    -1,    -1,
-     162,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,
-     113,    -1,    -1,     8,    -1,    -1,    -1,    12,    -1,   122,
-      -1,    -1,    -1,    18,   127,    -1,   129,    -1,   131,   132,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   141,   142,
-     143,   144,   145,   146,   147,   148,    -1,    -1,   151,    -1,
-     153,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,   162,
-      17,    -1,    -1,   388,   167,   168,   169,    10,   171,   172,
-      -1,    14,    15,    16,    69,   178,   179,    -1,    -1,    22,
-      23,    -1,    -1,    13,   187,   188,    29,    30,    -1,    19,
-      33,    21,    35,    -1,    37,    38,    53,    54,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,   103,   104,
-      -1,    54,    -1,    70,    -1,    -1,    -1,    60,    48,    62,
-      56,    57,    58,    59,    -1,   120,    -1,    -1,    71,    72,
-     125,    -1,    75,    76,    -1,    92,    -1,    80,    81,    -1,
-      -1,    84,    85,   100,    -1,   102,    -1,    -1,    -1,    -1,
-      93,    87,    -1,    89,    -1,    91,    -1,   152,    88,   116,
-      90,    97,    -1,   106,   107,   108,    96,    -1,    98,    -1,
-     113,   101,    -1,    -1,    -1,    -1,    -1,   134,   135,   122,
-     175,   176,   177,    -1,   127,    -1,   129,    -1,   131,   132,
-      -1,    -1,    -1,   123,   124,    -1,    -1,    -1,   141,   142,
-     143,   144,   145,   146,   147,   148,    -1,    -1,   151,    -1,
-     153,    -1,    47,   170,    -1,   172,    -1,    -1,    -1,   162,
-      55,    -1,    -1,   180,   167,   168,   169,   184,   171,   172,
-      -1,    -1,    -1,    -1,    -1,   178,   179,    -1,    73,    74,
-      -1,    -1,    77,    -1,    -1,   188,    -1,    -1,    83,    -1,
+      15,    39,   190,    45,   163,   164,    62,    40,    62,    57,
+     148,   188,    50,     4,    63,    43,    11,    62,   206,     1,
+     193,     5,    62,    67,    39,    69,    33,    98,    10,    62,
+     203,   160,    35,    15,    16,    17,    27,   190,   191,   110,
+       8,    23,    24,   160,    12,    60,   148,    62,    30,    31,
+     160,    19,    34,    56,    36,    62,    38,    39,    62,   160,
+      42,     7,     8,   160,   160,   203,   160,   255,    96,    51,
+      62,   160,    62,    55,   160,   160,    62,    80,   126,    61,
+      26,    63,    66,     0,    68,   134,    62,   160,   190,   191,
+      72,    73,   160,   188,    76,    77,   202,    62,    33,    81,
+      82,   160,    70,    85,    86,   100,    62,   266,   267,   160,
+     105,    62,    94,     3,    28,   106,   160,    28,   133,    65,
+      87,   175,   113,   151,   199,   107,   108,   109,    62,    62,
+      62,   146,   114,   175,     9,   188,   104,   105,   171,    62,
+     131,   123,   160,    18,   200,    37,   128,   160,   130,    95,
+     132,   133,   160,   121,    44,    45,    46,    47,   126,    62,
+     142,   143,   144,   145,   146,   147,   148,   149,   188,   199,
+     152,   160,   154,   160,    28,    62,   160,   336,    62,    54,
+      55,   163,   370,   160,   201,   153,   168,   169,   170,   199,
+     172,   173,   183,   202,   188,   186,    71,   179,   180,   199,
+     184,   194,   195,   196,   197,   198,   188,   189,   176,   177,
+     178,   399,   192,   188,   193,   161,   404,    10,    93,   202,
+     166,   199,    15,    16,    17,    21,   101,   188,   103,    25,
+      23,    24,   270,   421,   188,   199,   105,    30,    31,   143,
+     203,    34,   117,    36,   170,    38,    39,   253,    12,    42,
+     188,   141,   130,   158,    29,   210,    30,   256,    51,   298,
+     135,   136,    55,   366,    38,   401,   415,    41,    61,   159,
+      63,    -1,    -1,    -1,   164,   165,     6,    -1,    -1,    72,
+      73,    -1,    -1,    76,    77,    -1,    28,    83,    81,    82,
+      -1,    -1,    85,    86,    -1,    -1,   171,    -1,   173,    -1,
+     338,    94,    32,    -1,    -1,    79,   181,    -1,    -1,    -1,
+     185,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,    -1,
+      50,   114,    -1,    53,    -1,    67,    -1,    69,    -1,    -1,
+     123,    -1,    -1,   129,    -1,   128,   110,   130,    -1,   132,
+     133,   137,    29,    -1,   140,    -1,    -1,    -1,    -1,   142,
+     143,   144,   145,   146,   147,   148,   149,    -1,    -1,   152,
+      -1,   154,    -1,    -1,    -1,    52,   162,    -1,    55,    -1,
+     163,   167,    -1,    -1,   389,   168,   169,   170,    10,   172,
+     173,    -1,    -1,    15,    16,    17,   179,   180,    -1,    -1,
+      -1,    23,    24,    -1,    -1,   188,   189,   127,    30,    31,
+     174,    -1,    34,    -1,    36,    -1,    38,    39,   150,    -1,
+      42,   194,   195,   196,   197,   198,    -1,    -1,   160,    51,
+     203,    -1,    -1,    55,    -1,   155,   156,   157,   158,    61,
+      -1,    63,    -1,   163,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    -1,    -1,    76,    77,    -1,    -1,    -1,    81,
+      82,   138,   139,    85,    86,    -1,    -1,    -1,   145,    -1,
+      -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,    -1,
+      -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   123,    -1,    -1,    -1,    -1,   128,    48,   130,    -1,
+     132,   133,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,
+     142,   143,   144,   145,   146,   147,   148,   149,    -1,    -1,
+     152,    -1,   154,    74,    75,    -1,    -1,    78,    -1,    -1,
+      -1,   163,    -1,    84,    -1,    -1,   168,   169,   170,    -1,
+     172,   173,    13,    14,    -1,    -1,    -1,   179,   180,    20,
+      -1,    22,    57,    58,    59,    60,    -1,   189,    -1,    -1,
+     111,   112,    -1,    -1,   115,   116,    -1,   118,   119,   120,
+      -1,   122,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    -1,    -1,    88,    -1,    90,    -1,    92,    -1,    -1,
+      -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
+      91,    -1,    -1,    -1,    -1,    -1,    97,    -1,    99,    -1,
+     181,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   110,   111,    -1,    -1,   114,
-     115,    -1,   117,   118,   119,    -1,   121,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   180
+      -1,    -1,    -1,   124,   125
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1313,86 +1316,86 @@
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,     1,    10,    14,    15,    16,    22,    23,    29,    30,
-      33,    35,    37,    38,    41,    50,    54,    60,    62,    71,
-      72,    75,    76,    80,    81,    84,    85,    93,   106,   107,
-     108,   113,   122,   127,   129,   131,   132,   141,   142,   143,
-     144,   145,   146,   147,   148,   151,   153,   162,   167,   168,
-     169,   171,   172,   178,   179,   188,   204,   205,   206,   207,
-     208,   220,   221,   222,   223,   227,   232,   240,   249,   254,
-     258,   263,   267,   268,   269,   270,   271,   279,   280,   283,
-     294,   295,   187,    61,    61,   224,     8,    12,    18,    69,
-     103,   104,   120,   125,   152,   175,   176,   177,   259,   260,
-     261,   262,    11,    99,   104,   243,   244,   245,   159,   272,
-     259,    20,    24,    82,   128,   136,   139,   161,   166,   234,
-      66,    68,   159,   209,   210,   211,   159,   159,   159,   159,
-     277,   278,   209,   291,    61,    56,    57,    58,    59,    87,
-      89,    91,    97,   246,   247,   248,   291,   159,   159,   290,
-      61,     7,     8,    25,    64,    94,   160,   165,   284,   285,
-      27,    66,    68,   149,   209,   210,    61,    42,    95,   150,
-     255,   256,   257,   159,   273,   233,   234,   159,     6,    31,
-      49,    52,   126,   154,   155,   156,   157,   162,   264,   265,
-     266,    13,    19,    21,    48,    88,    90,    96,    98,   101,
-     123,   124,   228,   229,   230,   231,   210,    61,   199,   287,
-     288,   289,    61,   286,     0,   206,   187,   209,   209,    32,
-      61,   293,    61,   159,   159,    34,    55,    79,   282,   201,
-      28,    51,    54,   137,   138,   144,   225,   226,   260,   244,
-      61,    32,   235,     3,    43,    44,    45,    46,   140,   158,
-     163,   164,   250,   251,   252,   253,   159,   206,   278,   209,
-     247,    61,   159,   285,   241,    27,    27,   241,   241,    86,
-     256,    61,   198,   234,   265,   293,    39,    61,   170,   292,
-     229,    61,   293,   275,    61,   288,    61,   187,   212,     5,
-      65,    67,   159,   183,   281,   189,   190,   296,   297,   298,
-      61,   159,    29,    37,    40,    78,   109,   173,   236,   237,
-     238,   159,   159,    61,   251,   293,   292,    47,    55,    73,
-      74,    77,    83,   110,   111,   114,   115,   117,   118,   119,
-     121,   180,   242,   241,   241,   210,   159,    62,   133,   276,
-      36,     9,    17,    53,    54,    70,    92,   100,   102,   116,
-     134,   135,   170,   172,   180,   184,   213,   214,   215,   216,
-     217,   218,   219,   147,   297,   299,   300,   302,   187,   198,
-     159,     4,    26,   105,   112,   130,   182,   185,   239,   241,
-      27,   274,   210,    61,    61,    61,   174,   159,   198,   187,
-     202,   300,   201,   293,   200,   209,   191,   301,   198,   192,
-     303,   304,   293,   198,   202,   304,   187,   293,   201,   193,
-     194,   195,   196,   197,   305,   306,   307,   202,   306,   187,
-     198,   187,   293
+       0,     1,    10,    15,    16,    17,    23,    24,    30,    31,
+      34,    36,    38,    39,    42,    51,    55,    61,    63,    72,
+      73,    76,    77,    81,    82,    85,    86,    94,   107,   108,
+     109,   114,   123,   128,   130,   132,   133,   142,   143,   144,
+     145,   146,   147,   148,   149,   152,   154,   163,   168,   169,
+     170,   172,   173,   179,   180,   189,   205,   206,   207,   208,
+     209,   221,   222,   223,   224,   228,   233,   241,   250,   255,
+     259,   264,   268,   269,   270,   271,   272,   280,   281,   284,
+     295,   296,   188,    62,    62,   225,     8,    12,    19,    70,
+     104,   105,   121,   126,   153,   176,   177,   178,   260,   261,
+     262,   263,    11,   100,   105,   244,   245,   246,   160,   273,
+     260,    21,    25,    83,   129,   137,   140,   162,   167,   235,
+      67,    69,   160,   210,   211,   212,   160,   160,   160,   160,
+     278,   279,   210,   292,    62,    57,    58,    59,    60,    88,
+      90,    92,    98,   247,   248,   249,   292,   160,   160,   291,
+      62,     7,     8,    26,    65,    95,   161,   166,   285,   286,
+      28,    67,    69,   150,   210,   211,    62,    43,    96,   151,
+     256,   257,   258,   160,   274,   234,   235,   160,     6,    32,
+      50,    53,   127,   155,   156,   157,   158,   163,   265,   266,
+     267,    13,    14,    20,    22,    49,    89,    91,    97,    99,
+     102,   124,   125,   229,   230,   231,   232,   211,    62,   200,
+     288,   289,   290,    62,   287,     0,   207,   188,   210,   210,
+      33,    62,   294,    62,   160,   160,    35,    56,    80,   283,
+     202,    29,    52,    55,   138,   139,   145,   226,   227,   261,
+     245,    62,    33,   236,     3,    44,    45,    46,    47,   141,
+     159,   164,   165,   251,   252,   253,   254,   160,   207,   279,
+     210,   248,    62,   160,   286,   242,    28,    28,   242,   242,
+      87,   257,    62,   199,   235,   266,   294,    40,    62,   171,
+     293,   230,    62,   294,   276,    62,   289,    62,   188,   213,
+       5,    66,    68,   160,   184,   282,   190,   191,   297,   298,
+     299,    62,   160,    30,    38,    41,    79,   110,   174,   237,
+     238,   239,   160,   160,    62,   252,   294,   293,    48,    56,
+      74,    75,    78,    84,   111,   112,   115,   116,   118,   119,
+     120,   122,   181,   243,   242,   242,   211,   160,    63,   134,
+     277,    37,     9,    18,    54,    55,    71,    93,   101,   103,
+     117,   135,   136,   171,   173,   181,   185,   214,   215,   216,
+     217,   218,   219,   220,   148,   298,   300,   301,   303,   188,
+     199,   160,     4,    27,   106,   113,   131,   183,   186,   240,
+     242,    28,   275,   211,    62,    62,    62,   175,   160,   199,
+     188,   203,   301,   202,   294,   201,   210,   192,   302,   199,
+     193,   304,   305,   294,   199,   203,   305,   188,   294,   202,
+     194,   195,   196,   197,   198,   306,   307,   308,   203,   307,
+     188,   199,   188,   294
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   203,   204,   205,   205,   205,   206,   206,   206,   206,
-     206,   206,   206,   206,   206,   206,   206,   206,   206,   206,
-     207,   208,   208,   208,   208,   208,   209,   209,   210,   211,
-     211,   212,   212,   213,   213,   213,   214,   215,   215,   215,
-     215,   215,   215,   215,   215,   216,   216,   217,   217,   217,
-     217,   217,   217,   218,   219,   220,   221,   221,   222,   222,
-     222,   222,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   224,   224,   225,   225,   226,   226,   226,   226,   226,
-     227,   228,   228,   229,   229,   229,   230,   230,   230,   230,
-     230,   230,   231,   231,   231,   231,   232,   232,   232,   233,
-     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
-     235,   236,   236,   236,   236,   237,   237,   238,   238,   239,
-     239,   239,   239,   239,   239,   239,   240,   240,   240,   240,
-     240,   240,   240,   240,   241,   241,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   243,   243,   244,   245,   245,   245,   246,   246,   247,
-     248,   248,   248,   248,   248,   248,   248,   248,   249,   250,
-     250,   251,   251,   251,   251,   251,   252,   252,   253,   253,
-     253,   253,   254,   255,   255,   256,   257,   257,   257,   258,
-     258,   259,   259,   260,   260,   261,   261,   261,   261,   261,
-     261,   262,   262,   262,   262,   262,   262,   263,   264,   264,
-     265,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   267,   267,   267,   267,   267,   267,   267,   267,   267,
-     267,   267,   267,   267,   267,   268,   268,   268,   269,   269,
-     270,   270,   271,   271,   271,   272,   272,   272,   273,   274,
-     274,   275,   275,   276,   276,   277,   277,   278,   279,   279,
-     280,   280,   281,   281,   281,   281,   282,   282,   282,   283,
-     284,   284,   285,   285,   285,   285,   285,   285,   285,   286,
-     286,   287,   287,   288,   288,   289,   290,   290,   291,   291,
-     292,   292,   292,   293,   293,   294,   295,   296,   296,   297,
-     298,   298,   299,   299,   300,   301,   302,   303,   303,   304,
-     305,   305,   306,   307,   307,   307,   307,   307
+       0,   204,   205,   206,   206,   206,   207,   207,   207,   207,
+     207,   207,   207,   207,   207,   207,   207,   207,   207,   207,
+     208,   209,   209,   209,   209,   209,   210,   210,   211,   212,
+     212,   213,   213,   214,   214,   214,   215,   216,   216,   216,
+     216,   216,   216,   216,   216,   217,   217,   218,   218,   218,
+     218,   218,   218,   219,   220,   221,   222,   222,   223,   223,
+     223,   223,   224,   224,   224,   224,   224,   224,   224,   224,
+     224,   225,   225,   226,   226,   227,   227,   227,   227,   227,
+     228,   229,   229,   230,   230,   230,   231,   231,   231,   231,
+     231,   231,   231,   232,   232,   232,   232,   233,   233,   233,
+     234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
+     236,   236,   237,   237,   237,   237,   238,   238,   239,   239,
+     240,   240,   240,   240,   240,   240,   240,   241,   241,   241,
+     241,   241,   241,   241,   241,   242,   242,   243,   243,   243,
+     243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
+     243,   243,   244,   244,   245,   246,   246,   246,   247,   247,
+     248,   249,   249,   249,   249,   249,   249,   249,   249,   250,
+     251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
+     254,   254,   254,   255,   256,   256,   257,   258,   258,   258,
+     259,   259,   260,   260,   261,   261,   262,   262,   262,   262,
+     262,   262,   263,   263,   263,   263,   263,   263,   264,   265,
+     265,   266,   267,   267,   267,   267,   267,   267,   267,   267,
+     267,   267,   268,   268,   268,   268,   268,   268,   268,   268,
+     268,   268,   268,   268,   268,   268,   269,   269,   269,   270,
+     270,   271,   271,   272,   272,   272,   273,   273,   273,   274,
+     275,   275,   276,   276,   277,   277,   278,   278,   279,   280,
+     280,   281,   281,   282,   282,   282,   282,   283,   283,   283,
+     284,   285,   285,   286,   286,   286,   286,   286,   286,   286,
+     287,   287,   288,   288,   289,   289,   290,   291,   291,   292,
+     292,   293,   293,   293,   294,   294,   295,   296,   297,   297,
+     298,   299,   299,   300,   300,   301,   302,   303,   304,   304,
+     305,   306,   306,   307,   308,   308,   308,   308,   308
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1407,29 +1410,29 @@
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     0,     2,     2,     2,     1,     1,     1,     1,     1,
        2,     2,     1,     2,     2,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     3,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     2,     2,     2,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
+       5,     3,     4,     4,     3,     0,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     1,     2,     1,     1,     1,     2,     1,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       2,     1,     2,     2,     2,     2,     2,     1,     1,     1,
+       1,     1,     1,     2,     2,     1,     2,     1,     1,     1,
        2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     3,     5,
-       3,     4,     4,     3,     0,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     2,     1,     2,     1,     1,     1,     2,     1,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     2,
-       1,     2,     2,     2,     2,     2,     1,     1,     1,     1,
-       1,     1,     2,     2,     1,     2,     1,     1,     1,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     2,     2,     2,     3,     1,
+       2,     2,     2,     2,     3,     2,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     0,     4,
+       1,     0,     0,     2,     2,     2,     2,     1,     1,     3,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     1,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     3,     1,     2,
-       2,     2,     2,     3,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     0,     4,     1,
-       0,     0,     2,     2,     2,     2,     1,     1,     3,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       1,     2,     1,     1,     1,     5,     2,     1,     2,     1,
-       1,     1,     1,     1,     1,     5,     1,     3,     2,     3,
-       1,     1,     2,     1,     5,     4,     3,     2,     1,     6,
-       3,     2,     3,     1,     1,     1,     1,     1
+       2,     1,     2,     1,     1,     1,     5,     2,     1,     2,
+       1,     1,     1,     1,     1,     1,     5,     1,     3,     2,
+       3,     1,     1,     2,     1,     5,     4,     3,     2,     1,
+       6,     3,     2,     3,     1,     1,     1,     1,     1
 };
 
 
@@ -2106,7 +2109,7 @@
   switch (yyn)
     {
         case 5:
-#line 377 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 378 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			/* I will need to incorporate much more fine grained
 			 * error messages. The following should suffice for
@@ -2119,11 +2122,11 @@
 				ip_ctx->errpos.nline,
 				ip_ctx->errpos.ncol);
 		}
-#line 2123 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2126 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 413 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 414 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			peer_node *my_node;
 
@@ -2130,74 +2133,74 @@
 			my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
 			APPEND_G_FIFO(cfgt.peers, my_node);
 		}
-#line 2134 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2137 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 432 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 433 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
-#line 2140 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2143 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 437 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 438 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
-#line 2146 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2149 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 442 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 443 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = AF_INET; }
-#line 2152 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2155 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 444 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 445 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = AF_INET6; }
-#line 2158 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2161 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 449 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 450 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 2164 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2167 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 451 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 452 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2173 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2176 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 36:
-#line 465 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 466 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2179 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2182 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 481 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 482 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2185 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2188 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 483 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 484 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2191 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2194 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 497 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 498 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2197 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2200 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 511 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 512 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			unpeer_node *my_node;
 
@@ -2205,35 +2208,35 @@
 			if (my_node)
 				APPEND_G_FIFO(cfgt.unpeers, my_node);
 		}
-#line 2209 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2212 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 532 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 533 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.broadcastclient = 1; }
-#line 2215 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2218 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 59:
-#line 534 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 535 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
-#line 2221 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2224 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 536 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 537 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
-#line 2227 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2230 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 538 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 539 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.mdnstries = (yyvsp[0].Integer); }
-#line 2233 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2236 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 549 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 550 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			attr_val *atrv;
 
@@ -2240,50 +2243,50 @@
 			atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
 			APPEND_G_FIFO(cfgt.vars, atrv);
 		}
-#line 2244 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2247 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 556 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 557 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.control_key = (yyvsp[0].Integer); }
-#line 2250 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2253 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 558 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 559 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			cfgt.auth.cryptosw++;
 			CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
 		}
-#line 2259 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2262 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 563 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 564 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.keys = (yyvsp[0].String); }
-#line 2265 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2268 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 565 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 566 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.keysdir = (yyvsp[0].String); }
-#line 2271 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2274 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 567 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 568 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.request_key = (yyvsp[0].Integer); }
-#line 2277 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2280 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 569 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 570 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.revoke = (yyvsp[0].Integer); }
-#line 2283 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2286 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 69:
-#line 571 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 572 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo);
 
@@ -2292,38 +2295,38 @@
 			// else
 			// 	LINK_SLIST(cfgt.auth.trusted_key_list, $2, link);
 		}
-#line 2296 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2299 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 580 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 581 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
-#line 2302 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2305 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 585 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 586 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 2308 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2311 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 72:
-#line 587 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 588 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2317 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2320 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 595 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 596 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2323 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2326 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 597 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 598 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val) = NULL;
 			cfgt.auth.revoke = (yyvsp[0].Integer);
@@ -2332,59 +2335,59 @@
 				"please use 'revoke %d' instead.",
 				cfgt.auth.revoke, cfgt.auth.revoke);
 		}
-#line 2336 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2339 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 622 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 623 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
-#line 2342 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2345 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 627 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 628 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2351 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2354 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 632 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 633 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2360 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2363 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 640 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 641 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
-#line 2366 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2369 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 642 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 643 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2372 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2375 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 644 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+#line 645 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
-#line 2378 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2381 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-#line 670 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 97:
+#line 672 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
-#line 2384 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2387 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-#line 672 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 98:
+#line 674 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				cfgt.stats_dir = (yyvsp[0].String);
@@ -2393,11 +2396,11 @@
 				yyerror("statsdir remote configuration ignored");
 			}
 		}
-#line 2397 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2400 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 98:
-#line 681 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 99:
+#line 683 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			filegen_node *fgn;
 
@@ -2404,44 +2407,44 @@
 			fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
 			APPEND_G_FIFO(cfgt.filegen_opts, fgn);
 		}
-#line 2408 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2411 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 99:
-#line 691 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 100:
+#line 693 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 2417 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2420 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 100:
-#line 696 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 101:
+#line 698 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Int_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 2426 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2429 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 715 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 110:
+#line 717 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 2432 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2435 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 717 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 111:
+#line 719 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2441 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2444 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 725 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 112:
+#line 727 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
@@ -2451,11 +2454,11 @@
 				yyerror("filegen file remote config ignored");
 			}
 		}
-#line 2455 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2458 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 735 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 113:
+#line 737 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				(yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
@@ -2464,11 +2467,11 @@
 				yyerror("filegen type remote config ignored");
 			}
 		}
-#line 2468 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2471 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 744 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 114:
+#line 746 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			const char *err;
 
@@ -2483,33 +2486,33 @@
 				yyerror(err);
 			}
 		}
-#line 2487 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2490 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 759 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 115:
+#line 761 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2493 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2496 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 789 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 127:
+#line 791 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
 		}
-#line 2501 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2504 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 127:
-#line 793 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 128:
+#line 795 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
 		}
-#line 2509 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2512 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 128:
-#line 797 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 129:
+#line 799 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			restrict_node *rn;
 
@@ -2517,11 +2520,11 @@
 						  lex_current()->curpos.nline);
 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
 		}
-#line 2521 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2524 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 129:
-#line 805 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 130:
+#line 807 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			restrict_node *rn;
 
@@ -2529,11 +2532,11 @@
 						  lex_current()->curpos.nline);
 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
 		}
-#line 2533 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2536 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 130:
-#line 813 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 131:
+#line 815 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			restrict_node *rn;
 
@@ -2541,11 +2544,11 @@
 						  lex_current()->curpos.nline);
 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
 		}
-#line 2545 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2548 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 131:
-#line 821 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 132:
+#line 823 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			restrict_node *rn;
 
@@ -2560,11 +2563,11 @@
 				lex_current()->curpos.nline);
 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
 		}
-#line 2564 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2567 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 132:
-#line 836 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 133:
+#line 838 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			restrict_node *rn;
 
@@ -2579,11 +2582,11 @@
 				lex_current()->curpos.nline);
 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
 		}
-#line 2583 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2586 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 133:
-#line 851 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 134:
+#line 853 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			restrict_node *	rn;
 
@@ -2592,74 +2595,74 @@
 				NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline);
 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
 		}
-#line 2596 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2599 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 134:
-#line 863 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 135:
+#line 865 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Int_fifo) = NULL; }
-#line 2602 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2605 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 135:
-#line 865 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 136:
+#line 867 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 2611 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2614 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 891 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 152:
+#line 893 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2620 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2623 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 896 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 153:
+#line 898 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2629 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2632 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 904 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 154:
+#line 906 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2635 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2638 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 915 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 158:
+#line 917 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2644 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2647 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 920 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 159:
+#line 922 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2653 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2656 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 928 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 160:
+#line 930 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2659 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2662 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 948 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 169:
+#line 950 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			addr_opts_node *aon;
 
@@ -2666,41 +2669,41 @@
 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
 			APPEND_G_FIFO(cfgt.fudge, aon);
 		}
-#line 2670 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2673 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 958 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 170:
+#line 960 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2679 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2682 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 963 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 171:
+#line 965 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2688 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2691 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 971 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 172:
+#line 973 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2694 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2697 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 973 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 173:
+#line 975 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2700 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2703 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 975 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 174:
+#line 977 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) {
 				(yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
@@ -2709,89 +2712,89 @@
 				yyerror("fudge factor: stratum value not in [0..16], ignored");
 			}
 		}
-#line 2713 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2716 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 984 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 175:
+#line 986 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2719 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2722 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 986 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 176:
+#line 988 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2725 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2728 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1007 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 183:
+#line 1009 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
-#line 2731 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2734 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 1012 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 184:
+#line 1014 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2740 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2743 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1017 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 185:
+#line 1019 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2749 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2752 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1025 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 186:
+#line 1027 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2755 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2758 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1041 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 190:
+#line 1043 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
-#line 2761 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2764 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1043 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 191:
+#line 1045 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
-#line 2767 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2770 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 1048 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 192:
+#line 1050 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2776 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2779 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 1053 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 193:
+#line 1055 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2785 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2788 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 1061 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 194:
+#line 1063 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2791 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2794 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 1063 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 195:
+#line 1065 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
@@ -2805,41 +2808,41 @@
 				yyerror(err_str);
 			}
 		}
-#line 2809 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2812 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 1102 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 208:
+#line 1104 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
-#line 2815 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2818 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 1107 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 209:
+#line 1109 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2824 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2827 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 1112 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 210:
+#line 1114 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 2833 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2836 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 1120 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 211:
+#line 1122 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2839 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2842 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 1145 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 224:
+#line 1147 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			attr_val *av;
 
@@ -2846,11 +2849,11 @@
 			av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
 			APPEND_G_FIFO(cfgt.vars, av);
 		}
-#line 2850 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2853 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 1152 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 225:
+#line 1154 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			attr_val *av;
 
@@ -2857,11 +2860,11 @@
 			av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
 			APPEND_G_FIFO(cfgt.vars, av);
 		}
-#line 2861 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2864 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 1159 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 226:
+#line 1161 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			attr_val *av;
 
@@ -2868,11 +2871,11 @@
 			av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
 			APPEND_G_FIFO(cfgt.vars, av);
 		}
-#line 2872 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2875 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 1166 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 227:
+#line 1168 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			char error_text[64];
 			attr_val *av;
@@ -2888,11 +2891,11 @@
 				yyerror(error_text);
 			}
 		}
-#line 2892 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2895 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 1182 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 228:
+#line 1184 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (!lex_from_file()) {
 				YYFREE((yyvsp[-1].String)); /* avoid leak */
@@ -2911,41 +2914,41 @@
 			}
 			YYFREE((yyvsp[-1].String)); /* avoid leak */
 		}
-#line 2915 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2918 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 1201 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
-    { lex_flush_stack(); }
-#line 2921 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
-    break;
-
   case 229:
 #line 1203 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
-    { /* see drift_parm below for actions */ }
-#line 2927 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+    { lex_flush_stack(); }
+#line 2924 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 230:
 #line 1205 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
-    { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
-#line 2933 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+    { /* see drift_parm below for actions */ }
+#line 2930 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 231:
 #line 1207 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
-    { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
-#line 2939 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+    { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
+#line 2936 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 232:
 #line 1209 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
-    { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
-#line 2945 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+    { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
+#line 2942 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 233:
 #line 1211 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+    { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
+#line 2948 "ntp_parser.c" /* yacc.c:1646  */
+    break;
+
+  case 234:
+#line 1213 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			addr_opts_node *aon;
 
@@ -2952,27 +2955,27 @@
 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
 			APPEND_G_FIFO(cfgt.trap, aon);
 		}
-#line 2956 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2959 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 1218 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 235:
+#line 1220 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
-#line 2962 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2965 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 1233 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 240:
+#line 1235 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 #ifndef LEAP_SMEAR
 			yyerror("Built without LEAP_SMEAR support.");
 #endif
 		}
-#line 2972 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2975 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 1253 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 246:
+#line 1255 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				attr_val *av;
@@ -2983,11 +2986,11 @@
 				yyerror("driftfile remote configuration ignored");
 			}
 		}
-#line 2987 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 2990 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1264 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 247:
+#line 1266 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				attr_val *av;
@@ -3000,11 +3003,11 @@
 				yyerror("driftfile remote configuration ignored");
 			}
 		}
-#line 3004 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3007 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1277 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 248:
+#line 1279 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if (lex_from_file()) {
 				attr_val *av;
@@ -3014,71 +3017,71 @@
 				yyerror("driftfile remote configuration ignored");
 			}
 		}
-#line 3018 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3021 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1290 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 249:
+#line 1292 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
-#line 3024 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3027 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1296 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 251:
+#line 1298 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = 0; }
-#line 3030 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3033 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1301 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 252:
+#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 3036 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3039 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 253:
+#line 1305 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 3045 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3048 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1311 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 254:
+#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 3051 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3054 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 255:
+#line 1315 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
 			destroy_address_node((yyvsp[0].Address_node));
 		}
-#line 3060 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3063 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1321 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 256:
+#line 1323 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 3069 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3072 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1326 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 257:
+#line 1328 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 3078 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3081 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1334 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 258:
+#line 1336 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			char	prefix;
 			char *	type;
@@ -3100,11 +3103,11 @@
 			(yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
 			YYFREE((yyvsp[0].String));
 		}
-#line 3104 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3107 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1359 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 259:
+#line 1361 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			nic_rule_node *nrn;
 
@@ -3111,11 +3114,11 @@
 			nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
 		}
-#line 3115 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3118 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1366 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 260:
+#line 1368 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			nic_rule_node *nrn;
 
@@ -3122,119 +3125,119 @@
 			nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
 		}
-#line 3126 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3129 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1394 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 270:
+#line 1396 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
-#line 3132 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3135 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1399 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 271:
+#line 1401 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 3141 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3144 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1404 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 272:
+#line 1406 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Int_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 3150 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3153 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1428 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 280:
+#line 1430 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 3159 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3162 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1433 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 281:
+#line 1435 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
 		}
-#line 3168 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3171 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1441 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 282:
+#line 1443 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 3177 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3180 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1446 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 283:
+#line 1448 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
 		}
-#line 3186 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3189 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1454 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 284:
+#line 1456 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
-#line 3192 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3195 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1460 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 286:
+#line 1462 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
-#line 3198 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3201 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1465 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 287:
+#line 1467 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.String_fifo) = (yyvsp[-1].String_fifo);
 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
 		}
-#line 3207 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3210 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 1470 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 288:
+#line 1472 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.String_fifo) = NULL;
 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
 		}
-#line 3216 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3219 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1478 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 289:
+#line 1480 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
 		}
-#line 3225 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3228 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1483 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 290:
+#line 1485 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Address_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
 		}
-#line 3234 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3237 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1491 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 291:
+#line 1493 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
 				yyerror("Integer value is not boolean (0 or 1). Assuming 1");
@@ -3243,29 +3246,29 @@
 				(yyval.Integer) = (yyvsp[0].Integer);
 			}
 		}
-#line 3247 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3250 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1499 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 292:
+#line 1501 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = 1; }
-#line 3253 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3256 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1500 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 293:
+#line 1502 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = 0; }
-#line 3259 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3262 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1504 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 294:
+#line 1506 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Double) = (double)(yyvsp[0].Integer); }
-#line 3265 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3268 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1515 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 296:
+#line 1517 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			sim_node *sn;
 
@@ -3275,125 +3278,125 @@
 			/* Revert from ; to \n for end-of-command */
 			old_config_style = 1;
 		}
-#line 3279 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3282 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1532 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 297:
+#line 1534 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { old_config_style = 0; }
-#line 3285 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3288 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1537 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 298:
+#line 1539 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
 		}
-#line 3294 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3297 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1542 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 299:
+#line 1544 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
 		}
-#line 3303 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3306 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1550 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 300:
+#line 1552 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
-#line 3309 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3312 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1560 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 303:
+#line 1562 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
 		}
-#line 3318 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3321 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1565 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 304:
+#line 1567 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Sim_server_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
 		}
-#line 3327 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3330 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1573 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 305:
+#line 1575 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
-#line 3333 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3336 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1578 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 306:
+#line 1580 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Double) = (yyvsp[-1].Double); }
-#line 3339 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3342 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 1583 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 307:
+#line 1585 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Address_node) = (yyvsp[0].Address_node); }
-#line 3345 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3348 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 1588 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 308:
+#line 1590 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
 		}
-#line 3354 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3357 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 1593 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 309:
+#line 1595 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Sim_script_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
 		}
-#line 3363 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3366 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 1601 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 310:
+#line 1603 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
-#line 3369 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3372 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 310:
-#line 1606 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 311:
+#line 1608 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
 		}
-#line 3378 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3381 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 1611 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 312:
+#line 1613 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     {
 			(yyval.Attr_val_fifo) = NULL;
 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
 		}
-#line 3387 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3390 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 1619 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
+  case 313:
+#line 1621 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
-#line 3393 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3396 "ntp_parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 3397 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
+#line 3400 "ntp_parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3621,7 +3624,7 @@
 #endif
   return yyresult;
 }
-#line 1630 "../../ntpd/ntp_parser.y" /* yacc.c:1906  */
+#line 1632 "../../ntpd/ntp_parser.y" /* yacc.c:1906  */
 
 
 void
Index: contrib/ntp/ntpd/ntp_proto.c
===================================================================
--- contrib/ntp/ntpd/ntp_proto.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_proto.c	(版本 310419)
@@ -138,6 +138,7 @@
  * TOS and multicast mapping stuff
  */
 int	sys_floor = 0;		/* cluster stratum floor */
+u_char	sys_bcpollbstep = 0;	/* Broadcast Poll backstep gate */
 int	sys_ceiling = STRATUM_UNSPEC - 1; /* cluster stratum ceiling */
 int	sys_minsane = 1;	/* minimum candidates */
 int	sys_minclock = NTP_MINCLOCK; /* minimum candidates */
@@ -278,7 +279,7 @@
 	  u_char hismode
 	  )
 {
-	int 		base_packet_length = MIN_V4_PKT_LEN;
+	int		base_packet_length = MIN_V4_PKT_LEN;
 	int		remainder_size;
 	struct pkt *	rpkt;
 	int		keyid;
@@ -335,7 +336,7 @@
 		myorg = &peer->borg;
 	else
 		myorg = &peer->aorg;
-	
+
 	if (L_ISZERO(&p_org) ||
 	    L_ISZERO( myorg) ||
 	    !L_ISEQU(&p_org, myorg)) {
@@ -1450,22 +1451,66 @@
 				++bail;
 			}
 
-			/* too early? worth an error, too! */
+			/* too early? worth an error, too!
+			 *
+			 * [Bug 3113] Ensure that at least one poll
+			 * interval has elapsed since the last **clean**
+			 * packet was received.  We limit the check to
+			 * **clean** packets to prevent replayed packets
+			 * and incorrectly authenticated packets, which
+			 * we'll discard, from being used to create a
+			 * denial of service condition.
+			 */
 			deadband = (1u << pkt->ppoll);
 			if (FLAG_BC_VOL & peer->flags)
 				deadband -= 3;	/* allow greater fuzz after volley */
-			if ((current_time - peer->timelastrec) < deadband) {
+			if ((current_time - peer->timereceived) < deadband) {
 				msyslog(LOG_INFO, "receive: broadcast packet from %s arrived after %lu, not %lu seconds!",
 					stoa(&rbufp->recv_srcadr),
-					(current_time - peer->timelastrec),
+					(current_time - peer->timereceived),
 					deadband);
 				++bail;
 			}
 
-			/* Alert if time from the server is non-monotonic */
-			tdiff = p_xmt;
-			L_SUB(&tdiff, &peer->bxmt);
-			if (tdiff.l_i < 0) {
+			/* Alert if time from the server is non-monotonic.
+			 *
+			 * [Bug 3114] is about Broadcast mode replay DoS.
+			 *
+			 * Broadcast mode *assumes* a trusted network.
+			 * Even so, it's nice to be robust in the face
+			 * of attacks.
+			 *
+			 * If we get an authenticated broadcast packet
+			 * with an "earlier" timestamp, it means one of
+			 * two things:
+			 *
+			 * - the broadcast server had a backward step.
+			 *
+			 * - somebody is trying a replay attack.
+			 *
+			 * deadband: By default, we assume the broadcast
+			 * network is trustable, so we take our accepted
+			 * broadcast packets as we receive them.  But
+			 * some folks might want to take additional poll
+			 * delays before believing a backward step. 
+			 */
+			if (sys_bcpollbstep) {
+				/* pkt->ppoll or peer->ppoll ? */
+				deadband = (1u << pkt->ppoll)
+					   * sys_bcpollbstep + 2;
+			} else {
+				deadband = 0;
+			}
+
+			if (L_ISZERO(&peer->bxmt)) {
+				tdiff.l_ui = tdiff.l_uf = 0;
+			} else {
+				tdiff = p_xmt;
+				L_SUB(&tdiff, &peer->bxmt);
+			}
+			if (tdiff.l_i < 0 &&
+			    (current_time - peer->timereceived) < deadband)
+			{
 				msyslog(LOG_INFO, "receive: broadcast packet from %s contains non-monotonic timestamp: %#010x.%08x -> %#010x.%08x",
 					stoa(&rbufp->recv_srcadr),
 					peer->bxmt.l_ui, peer->bxmt.l_uf,
@@ -1474,8 +1519,6 @@
 				++bail;
 			}
 
-			peer->bxmt = p_xmt;
-
 			if (bail) {
 				peer->timelastrec = current_time;
 				sys_declined++;
@@ -1623,7 +1666,7 @@
 				peer->borg.l_ui, peer->borg.l_uf);
 			return;
 		}
-	
+
 	/*
 	 * Basic mode checks:
 	 *
@@ -1645,13 +1688,38 @@
 	} else if (peer->flip == 0) {
 		INSIST(0 != hisstratum);
 		INSIST(STRATUM_UNSPEC != hisstratum);
+
 		if (0) {
 		} else if (L_ISZERO(&p_org)) {
+			char *action;
+
+			L_CLR(&peer->aorg);
+			/**/
+			switch (hismode) {
+			/* We allow 0org for: */
+			    case UCHAR_MAX:
+				action = "Allow";
+				break;
+			/* We disallow 0org for: */
+			    case MODE_UNSPEC:
+			    case MODE_ACTIVE:
+			    case MODE_PASSIVE:
+			    case MODE_CLIENT:
+			    case MODE_SERVER:
+			    case MODE_BROADCAST:
+				action = "Drop";
+				peer->bogusorg++;
+				peer->flash |= TEST2;	/* bogus */
+				break;
+			    default:
+				INSIST(!"receive(): impossible hismode");
+				break;
+			}
+			/**/
 			msyslog(LOG_INFO,
-				"receive: Got 0 origin timestamp from %s@%s xmt %#010x.%08x",
-				hm_str, ntoa(&peer->srcadr),
+				"receive: %s 0 origin timestamp from %s@%s xmt %#010x.%08x",
+				action, hm_str, ntoa(&peer->srcadr),
 				ntohl(pkt->xmt.l_ui), ntohl(pkt->xmt.l_uf));
-			L_CLR(&peer->aorg);
 		} else if (!L_ISEQU(&p_org, &peer->aorg)) {
 			/* are there cases here where we should bail? */
 			/* Should we set TEST2 if we decide to try xleave? */
@@ -1800,6 +1868,12 @@
 				"receive: Bad broadcast auth (%d) from %s",
 				is_authentic, ntoa(&peer->srcadr));
 		}
+
+		/*
+		 * Now that we know the packet is correctly authenticated,
+		 * update peer->bxmt.
+		 */
+		peer->bxmt = p_xmt;
 	}
 
 
@@ -1878,7 +1952,7 @@
 			peer->badauth++;
 			return;
 		}
-	    	break;
+		break;
 
 	    case MODE_CLIENT:		/* client mode */
 #if 0		/* At this point, MODE_CONTROL is overloaded by MODE_BCLIENT */
@@ -1886,7 +1960,7 @@
 #endif
 	    case MODE_PRIVATE:		/* private mode */
 	    case MODE_BCLIENT:		/* broadcast client mode */
-	    	break;
+		break;
 
 	    case MODE_UNSPEC:		/* unspecified (old version) */
 	    default:
@@ -1893,7 +1967,7 @@
 		msyslog(LOG_INFO,
 			"receive: Unexpected mode (%d) in packet from %s",
 			hismode, ntoa(&peer->srcadr));
-	    	break;
+		break;
 	}
 
 
@@ -2695,6 +2769,7 @@
 	)
 {
 	u_char	u;
+	l_fp	bxmt = peer->bxmt;	/* bcast clients retain this! */
 
 #ifdef AUTOKEY
 	/*
@@ -2731,6 +2806,10 @@
 	peer->flash = peer_unfit(peer);
 	peer->jitter = LOGTOD(sys_precision);
 
+	/* Don't throw away our broadcast replay protection */
+	if (peer->hmode == MODE_BCLIENT)
+		peer->bxmt = bxmt;
+
 	/*
 	 * If interleave mode, initialize the alternate origin switch.
 	 */
@@ -3040,8 +3119,9 @@
 		 * Leave the island immediately if the peer is
 		 * unfit to synchronize.
 		 */
-		if (peer_unfit(peer))
+		if (peer_unfit(peer)) {
 			continue;
+		}
 
 		/*
 		 * If this peer is an orphan parent, elect the
@@ -3081,8 +3161,9 @@
 		 * parent in ancestry so are excluded.
 		 * See http://bugs.ntp.org/2050
 		 */
-		if (peer->stratum > sys_orphan)
+		if (peer->stratum > sys_orphan) {
 			continue;
+		}
 #ifdef REFCLOCK
 		/*
 		 * The following are special cases. We deal
@@ -3531,15 +3612,15 @@
 
 	/*
 	 * Root Distance (LAMBDA) is defined as:
-	 * (delta + DELTA)/2 + epsilon + EPSILON + phi
+	 * (delta + DELTA)/2 + epsilon + EPSILON + D
 	 *
 	 * where:
 	 *  delta   is the round-trip delay
 	 *  DELTA   is the root delay
-	 *  epsilon is the remote server precision + local precision
+	 *  epsilon is the peer dispersion
 	 *	    + (15 usec each second)
 	 *  EPSILON is the root dispersion
-	 *  phi     is the peer jitter statistic
+	 *  D       is sys_jitter
 	 *
 	 * NB: Think hard about why we are using these values, and what
 	 * the alternatives are, and the various pros/cons.
@@ -3548,8 +3629,7 @@
 	 * other worse choices.
 	 */
 	dtemp = (peer->delay + peer->rootdelay) / 2
-		+ LOGTOD(peer->precision)
-		  + LOGTOD(sys_precision)
+		+ peer->disp
 		  + clock_phi * (current_time - peer->update)
 		+ peer->rootdisp
 		+ peer->jitter;
@@ -3995,6 +4075,10 @@
 
 	L_ADD(t, &leap_smear.offset);
 
+	/*
+	** XXX: Should the smear be added to the root dispersion?
+	*/
+
 	return;
 }
 
@@ -4425,8 +4509,9 @@
 	 */
 	if (   peer->leap == LEAP_NOTINSYNC
 	    || peer->stratum < sys_floor
-	    || peer->stratum >= sys_ceiling)
+	    || peer->stratum >= sys_ceiling) {
 		rval |= TEST10;		/* bad synch or stratum */
+	}
 
 	/*
 	 * A distance error for a remote peer occurs if the root
@@ -4435,8 +4520,9 @@
 	 */
 	if (   !(peer->flags & FLAG_REFCLOCK)
 	    && root_distance(peer) >= sys_maxdist
-				      + clock_phi * ULOGTOD(peer->hpoll))
+				      + clock_phi * ULOGTOD(peer->hpoll)) {
 		rval |= TEST11;		/* distance exceeded */
+	}
 
 	/*
 	 * A loop error occurs if the remote peer is synchronized to the
@@ -4444,15 +4530,17 @@
 	 * server as the local peer but only if the remote peer is
 	 * neither a reference clock nor an orphan.
 	 */
-	if (peer->stratum > 1 && local_refid(peer))
+	if (peer->stratum > 1 && local_refid(peer)) {
 		rval |= TEST12;		/* synchronization loop */
+	}
 
 	/*
 	 * An unreachable error occurs if the server is unreachable or
 	 * the noselect bit is set.
 	 */
-	if (!peer->reach || (peer->flags & FLAG_NOSELECT))
+	if (!peer->reach || (peer->flags & FLAG_NOSELECT)) {
 		rval |= TEST13;		/* unreachable */
+	}
 
 	peer->flash &= ~PEER_TEST_MASK;
 	peer->flash |= rval;
@@ -4717,6 +4805,11 @@
 	/*
 	 * tos command - arguments are double, sometimes cast to int
 	 */
+
+	case PROTO_BCPOLLBSTEP:	/* Broadcast Poll Backstep gate (bcpollbstep) */
+		sys_bcpollbstep = (u_char)dvalue;
+		break;
+
 	case PROTO_BEACON:	/* manycast beacon (beacon) */
 		sys_beacon = (int)dvalue;
 		break;
Index: contrib/ntp/CommitLog
===================================================================
--- contrib/ntp/CommitLog	(版本 309693)
+++ contrib/ntp/CommitLog	(版本 310419)
@@ -1,3 +1,1866 @@
+ChangeSet@1.3720, 2016-11-21 08:08:21-05:00, stenn@deacon.udel.edu
+  NTP_4_2_8P9
+  TAG: NTP_4_2_8P9
+
+  ChangeLog@1.1852 +1 -0
+    NTP_4_2_8P9
+
+  ntpd/invoke-ntp.conf.texi@1.203 +1 -1
+    NTP_4_2_8P9
+
+  ntpd/invoke-ntp.keys.texi@1.192 +1 -1
+    NTP_4_2_8P9
+
+  ntpd/invoke-ntpd.texi@1.508 +2 -2
+    NTP_4_2_8P9
+
+  ntpd/ntp.conf.5man@1.237 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntp.conf.5mdoc@1.237 +2 -2
+    NTP_4_2_8P9
+
+  ntpd/ntp.conf.html@1.187 +157 -154
+    NTP_4_2_8P9
+
+  ntpd/ntp.conf.man.in@1.237 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntp.conf.mdoc.in@1.237 +2 -2
+    NTP_4_2_8P9
+
+  ntpd/ntp.keys.5man@1.226 +2 -2
+    NTP_4_2_8P9
+
+  ntpd/ntp.keys.5mdoc@1.226 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntp.keys.html@1.188 +21 -33
+    NTP_4_2_8P9
+
+  ntpd/ntp.keys.man.in@1.226 +2 -2
+    NTP_4_2_8P9
+
+  ntpd/ntp.keys.mdoc.in@1.226 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntpd-opts.c@1.530 +245 -245
+    NTP_4_2_8P9
+
+  ntpd/ntpd-opts.h@1.529 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntpd.1ntpdman@1.337 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntpd.1ntpdmdoc@1.337 +2 -2
+    NTP_4_2_8P9
+
+  ntpd/ntpd.html@1.181 +142 -186
+    NTP_4_2_8P9
+
+  ntpd/ntpd.man.in@1.337 +3 -3
+    NTP_4_2_8P9
+
+  ntpd/ntpd.mdoc.in@1.337 +2 -2
+    NTP_4_2_8P9
+
+  ntpdc/invoke-ntpdc.texi@1.505 +2 -2
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc-opts.c@1.523 +106 -106
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc-opts.h@1.522 +3 -3
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc.1ntpdcman@1.336 +3 -3
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc.1ntpdcmdoc@1.336 +2 -2
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc.html@1.349 +75 -95
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc.man.in@1.336 +3 -3
+    NTP_4_2_8P9
+
+  ntpdc/ntpdc.mdoc.in@1.336 +2 -2
+    NTP_4_2_8P9
+
+  ntpq/invoke-ntpq.texi@1.513 +2 -2
+    NTP_4_2_8P9
+
+  ntpq/ntpq-opts.c@1.530 +113 -113
+    NTP_4_2_8P9
+
+  ntpq/ntpq-opts.h@1.528 +3 -3
+    NTP_4_2_8P9
+
+  ntpq/ntpq.1ntpqman@1.341 +3 -3
+    NTP_4_2_8P9
+
+  ntpq/ntpq.1ntpqmdoc@1.341 +2 -2
+    NTP_4_2_8P9
+
+  ntpq/ntpq.html@1.178 +136 -160
+    NTP_4_2_8P9
+
+  ntpq/ntpq.man.in@1.341 +3 -3
+    NTP_4_2_8P9
+
+  ntpq/ntpq.mdoc.in@1.341 +2 -2
+    NTP_4_2_8P9
+
+  ntpsnmpd/invoke-ntpsnmpd.texi@1.507 +2 -2
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd-opts.c@1.525 +67 -67
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd-opts.h@1.524 +3 -3
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.336 +3 -3
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.336 +2 -2
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd.html@1.176 +10 -14
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd.man.in@1.336 +3 -3
+    NTP_4_2_8P9
+
+  ntpsnmpd/ntpsnmpd.mdoc.in@1.336 +2 -2
+    NTP_4_2_8P9
+
+  packageinfo.sh@1.532 +2 -2
+    NTP_4_2_8P9
+
+  scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.97 +3 -3
+    NTP_4_2_8P9
+
+  scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.98 +2 -2
+    NTP_4_2_8P9
+
+  scripts/calc_tickadj/calc_tickadj.html@1.99 +30 -42
+    NTP_4_2_8P9
+
+  scripts/calc_tickadj/calc_tickadj.man.in@1.96 +3 -3
+    NTP_4_2_8P9
+
+  scripts/calc_tickadj/calc_tickadj.mdoc.in@1.98 +2 -2
+    NTP_4_2_8P9
+
+  scripts/calc_tickadj/invoke-calc_tickadj.texi@1.101 +1 -1
+    NTP_4_2_8P9
+
+  scripts/invoke-plot_summary.texi@1.119 +2 -2
+    NTP_4_2_8P9
+
+  scripts/invoke-summary.texi@1.118 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/invoke-ntp-wait.texi@1.328 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/ntp-wait-opts@1.64 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/ntp-wait.1ntp-waitman@1.325 +3 -3
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.326 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/ntp-wait.html@1.345 +41 -59
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/ntp-wait.man.in@1.325 +3 -3
+    NTP_4_2_8P9
+
+  scripts/ntp-wait/ntp-wait.mdoc.in@1.326 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/invoke-ntpsweep.texi@1.116 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/ntpsweep-opts@1.66 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/ntpsweep.1ntpsweepman@1.104 +3 -3
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.104 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/ntpsweep.html@1.117 +46 -57
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/ntpsweep.man.in@1.104 +3 -3
+    NTP_4_2_8P9
+
+  scripts/ntpsweep/ntpsweep.mdoc.in@1.105 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntptrace/invoke-ntptrace.texi@1.117 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntptrace/ntptrace-opts@1.66 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntptrace/ntptrace.1ntptraceman@1.104 +3 -3
+    NTP_4_2_8P9
+
+  scripts/ntptrace/ntptrace.1ntptracemdoc@1.105 +2 -2
+    NTP_4_2_8P9
+
+  scripts/ntptrace/ntptrace.html@1.118 +38 -47
+    NTP_4_2_8P9
+
+  scripts/ntptrace/ntptrace.man.in@1.104 +3 -3
+    NTP_4_2_8P9
+
+  scripts/ntptrace/ntptrace.mdoc.in@1.106 +2 -2
+    NTP_4_2_8P9
+
+  scripts/plot_summary-opts@1.67 +2 -2
+    NTP_4_2_8P9
+
+  scripts/plot_summary.1plot_summaryman@1.117 +3 -3
+    NTP_4_2_8P9
+
+  scripts/plot_summary.1plot_summarymdoc@1.117 +2 -2
+    NTP_4_2_8P9
+
+  scripts/plot_summary.html@1.120 +40 -58
+    NTP_4_2_8P9
+
+  scripts/plot_summary.man.in@1.117 +3 -3
+    NTP_4_2_8P9
+
+  scripts/plot_summary.mdoc.in@1.117 +2 -2
+    NTP_4_2_8P9
+
+  scripts/summary-opts@1.66 +2 -2
+    NTP_4_2_8P9
+
+  scripts/summary.1summaryman@1.116 +3 -3
+    NTP_4_2_8P9
+
+  scripts/summary.1summarymdoc@1.116 +2 -2
+    NTP_4_2_8P9
+
+  scripts/summary.html@1.119 +37 -49
+    NTP_4_2_8P9
+
+  scripts/summary.man.in@1.116 +3 -3
+    NTP_4_2_8P9
+
+  scripts/summary.mdoc.in@1.116 +2 -2
+    NTP_4_2_8P9
+
+  scripts/update-leap/invoke-update-leap.texi@1.17 +1 -1
+    NTP_4_2_8P9
+
+  scripts/update-leap/update-leap-opts@1.17 +2 -2
+    NTP_4_2_8P9
+
+  scripts/update-leap/update-leap.1update-leapman@1.17 +3 -3
+    NTP_4_2_8P9
+
+  scripts/update-leap/update-leap.1update-leapmdoc@1.17 +2 -2
+    NTP_4_2_8P9
+
+  scripts/update-leap/update-leap.html@1.17 +48 -72
+    NTP_4_2_8P9
+
+  scripts/update-leap/update-leap.man.in@1.17 +3 -3
+    NTP_4_2_8P9
+
+  scripts/update-leap/update-leap.mdoc.in@1.17 +2 -2
+    NTP_4_2_8P9
+
+  sntp/invoke-sntp.texi@1.505 +2 -2
+    NTP_4_2_8P9
+
+  sntp/sntp-opts.c@1.524 +158 -158
+    NTP_4_2_8P9
+
+  sntp/sntp-opts.h@1.522 +3 -3
+    NTP_4_2_8P9
+
+  sntp/sntp.1sntpman@1.340 +3 -3
+    NTP_4_2_8P9
+
+  sntp/sntp.1sntpmdoc@1.340 +2 -2
+    NTP_4_2_8P9
+
+  sntp/sntp.html@1.520 +111 -135
+    NTP_4_2_8P9
+
+  sntp/sntp.man.in@1.340 +3 -3
+    NTP_4_2_8P9
+
+  sntp/sntp.mdoc.in@1.340 +2 -2
+    NTP_4_2_8P9
+
+  util/invoke-ntp-keygen.texi@1.508 +2 -2
+    NTP_4_2_8P9
+
+  util/ntp-keygen-opts.c@1.526 +172 -172
+    NTP_4_2_8P9
+
+  util/ntp-keygen-opts.h@1.524 +3 -3
+    NTP_4_2_8P9
+
+  util/ntp-keygen.1ntp-keygenman@1.336 +3 -3
+    NTP_4_2_8P9
+
+  util/ntp-keygen.1ntp-keygenmdoc@1.336 +2 -2
+    NTP_4_2_8P9
+
+  util/ntp-keygen.html@1.182 +157 -216
+    NTP_4_2_8P9
+
+  util/ntp-keygen.man.in@1.336 +3 -3
+    NTP_4_2_8P9
+
+  util/ntp-keygen.mdoc.in@1.336 +2 -2
+    NTP_4_2_8P9
+
+ChangeSet@1.3719, 2016-11-21 07:07:04-05:00, stenn@deacon.udel.edu
+  ntp-4.2.8p9
+
+  packageinfo.sh@1.531 +1 -1
+    ntp-4.2.8p9
+
+ChangeSet@1.3718, 2016-11-21 03:47:58+00:00, stenn@psp-deb1.ntp.org
+  NEWS updates, final p9 testing
+
+  NEWS@1.203 +25 -17
+    NEWS updates, final p9 testing
+
+  packageinfo.sh@1.530 +2 -2
+    NEWS updates, final p9 testing
+
+ChangeSet@1.3717, 2016-11-18 10:33:02+00:00, stenn@psp-deb1.ntp.org
+  NEWS update for 3142
+
+  NEWS@1.202 +2 -1
+    NEWS update for 3142
+
+ChangeSet@1.3686.23.1, 2016-11-18 08:55:13+01:00, perlinger@ntp.org
+  [Bug 3142] bug in netmask prefix length detection
+
+  ChangeLog@1.1834.23.1 +3 -0
+    [Bug 3142] bug in netmask prefix length detection
+
+  lib/isc/netaddr.c@1.15 +0 -1
+    [Bug 3142] bug in netmask prefix length detection
+
+ChangeSet@1.3715, 2016-11-16 21:25:49-08:00, harlan@fb-x86-a.pfcs.com
+  NEWS file update
+
+  NEWS@1.201 +7 -22
+    NEWS file update
+
+ChangeSet@1.3707.1.1, 2016-11-13 21:59:31-08:00, harlan@fb-x86-a.pfcs.com
+  cleanup
+
+  NEWS@1.197.1.1 +201 -77
+    cleanup
+
+ChangeSet@1.3713, 2016-11-13 21:56:18-08:00, harlan@hms-mbp11.pfcs.com
+  cleanip
+
+  ChangeLog@1.1850 +2 -0
+    cleanip
+
+ChangeSet@1.3712, 2016-11-13 02:43:02+00:00, stenn@psp-deb1.ntp.org
+  NEWS updates
+
+  NEWS@1.199 +17 -0
+    NEWS updates
+
+ChangeSet@1.3710, 2016-11-13 02:30:31+00:00, stenn@psp-deb1.ntp.org
+  NEWS cleanup
+
+  NEWS@1.198 +2 -0
+    NEWS cleanup
+
+ChangeSet@1.3707, 2016-11-12 17:36:54-08:00, harlan@fb-x86-a.pfcs.com
+  NEWS cleanup
+
+  NEWS@1.197 +41 -6
+    NEWS cleanup
+
+ChangeSet@1.3706, 2016-11-12 16:55:59-08:00, harlan@fb-x86-a.pfcs.com
+  [Bug 3067] Root distance calculation needs improvement.  HStenn
+
+  ChangeLog@1.1846.1.2 +1 -0
+    [Bug 3067] Root distance calculation needs improvement.  HStenn
+
+  NEWS@1.196 +1 -0
+    [Bug 3067] Root distance calculation needs improvement.  HStenn
+
+  ntpd/ntp_proto.c@1.396 +16 -11
+    [Bug 3067] Root distance calculation needs improvement.  HStenn
+
+ChangeSet@1.3705, 2016-11-12 15:57:34-08:00, harlan@fb-x86-a.pfcs.com
+  [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org
+
+  ChangeLog@1.1846.1.1 +1 -0
+    [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org
+
+  NEWS@1.195 +1 -0
+    [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org
+
+  ntpd/refclock_gpsdjson.c@1.25 +1 -1
+    [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org
+
+ChangeSet@1.3686.22.1, 2016-11-12 05:54:39+01:00, perlinger@ntp.org
+  [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+
+  ChangeLog@1.1834.22.1 +4 -0
+    [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+
+  include/ntp_intres.h@1.2 +6 -0
+    [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+     - add flags and prototype for 'getaddrinfo_sometime_ex()'
+
+  libntp/ntp_intres.c@1.101 +48 -14
+    [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+     - implement 'getaddrinfo_sometime_ex()', support ignoring all errors
+
+  ntpd/ntp_config.c@1.338.1.1 +11 -10
+    [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+     - move decison about igoring DNS errors to resolver code
+
+ChangeSet@1.3703.1.2, 2016-11-09 12:32:07+00:00, stenn@psp-deb1.ntp.org
+  [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ChangeLog@1.1848 +1 -1
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  html/miscopt.html@1.87 +4 -2
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  include/ntp.h@1.223 +1 -0
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  include/ntpd.h@1.194 +1 -0
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/complete.conf.in@1.32 +1 -1
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/invoke-ntp.conf.texi@1.202 +16 -1
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/keyword-gen-utd@1.29 +1 -1
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/keyword-gen.c@1.35 +1 -0
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp.conf.5man@1.236 +29 -8
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp.conf.5mdoc@1.236 +21 -2
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp.conf.def@1.25 +19 -0
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp.conf.man.in@1.236 +29 -8
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp.conf.mdoc.in@1.236 +21 -2
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp_config.c@1.339 +15 -0
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp_keyword.h@1.31 +1068 -1058
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp_parser.c@1.103 +1196 -1193
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp_parser.h@1.67 +373 -371
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp_parser.y@1.93 +3 -1
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+  ntpd/ntp_proto.c@1.394.1.2 +43 -26
+    [Bug 3114] bcpollbstep, tweaks and cleanup
+
+ChangeSet@1.3703, 2016-11-09 06:06:04+00:00, stenn@psp-deb1.ntp.org
+  typo
+
+  ChangeLog@1.1846 +1 -1
+    typo
+
+ChangeSet@1.3686.21.1, 2016-11-08 20:01:41+01:00, perlinger@ntp.org
+  [Bug 3089] Serial Parser does not work anymore for hopfser like device
+
+  ChangeLog@1.1834.21.1 +4 -0
+    [Bug 3089] Serial Parser does not work anymore for hopfser like device
+
+  libparse/clk_hopf6021.c@1.13 +43 -25
+    [Bug 3089] Serial Parser does not work anymore for hopfser like device
+     - simplified / refactored hex-decoding in driver.
+
+ChangeSet@1.3698.2.1, 2016-11-03 17:02:24-07:00, harlan@max.pfcs.com
+  Added leap smear/root dispersion comment
+
+  ntpd/ntp_proto.c@1.393.1.1 +4 -0
+    Added leap smear/root dispersion comment
+
+ChangeSet@1.3699.1.2, 2016-10-31 10:56:33+00:00, stenn@psp-deb1.ntp.org
+  Add bug 3125 to the NEWS file
+
+  NEWS@1.194 +2 -0
+    Add bug 3125 to the NEWS file
+
+ChangeSet@1.3701, 2016-10-24 07:37:25+02:00, perlinger@ntp.org
+  [winio2 - unlocked]
+   - the great lock removal
+   - the great renaming
+
+  ChangeLog@1.1844 +1 -0
+    [winio2 - unlocked] notes on changes
+
+  ntpd/ntp_refclock.c@1.123 +1 -1
+    [winio2 - unlocked]
+     - whitespace at EOL
+
+  ports/winnt/include/ntp_iocpltypes.h@1.3 +21 -24
+    [winio2 - unlocked]
+     - eliminate critical section, simplify API
+     - the great renaming
+
+  ports/winnt/ntpd/ntp_iocompletionport.c@1.77 +331 -209
+    [winio2 - unlocked]
+     - the great lock removal
+     - handle context objects are only manipulated by IOCPL thread
+     - closing handles is done by main thread after informing IOCPL thread (RPC-style)
+     - the great renaming
+     - restructured UNIX line mode emulation
+
+  ports/winnt/ntpd/ntp_iocpltypes.c@1.3 +31 -95
+    [winio2 - unlocked]
+     - eliminate critical section, simplify API
+     - the great renaming
+    
+
+ChangeSet@1.3698.1.7, 2016-10-23 05:18:04+00:00, stenn@psp-deb1.ntp.org
+  ntp-4.2.8p9-PRE
+
+  ntpd/invoke-ntp.conf.texi@1.201 +1 -1
+    ntp-4.2.8p9-PRE
+
+  ntpd/invoke-ntp.keys.texi@1.191 +1 -1
+    ntp-4.2.8p9-PRE
+
+  ntpd/invoke-ntpd.texi@1.507 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.conf.5man@1.235 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.conf.5mdoc@1.235 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.conf.html@1.186 +104 -91
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.conf.man.in@1.235 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.conf.mdoc.in@1.235 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.keys.5man@1.225 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.keys.5mdoc@1.225 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.keys.html@1.187 +29 -17
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.keys.man.in@1.225 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntp.keys.mdoc.in@1.225 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd-opts.c@1.529 +245 -245
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd-opts.h@1.528 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd.1ntpdman@1.336 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd.1ntpdmdoc@1.336 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd.html@1.180 +146 -102
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd.man.in@1.336 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpd/ntpd.mdoc.in@1.336 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpdc/invoke-ntpdc.texi@1.504 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc-opts.c@1.522 +106 -106
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc-opts.h@1.521 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc.1ntpdcman@1.335 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc.1ntpdcmdoc@1.335 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc.html@1.348 +77 -57
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc.man.in@1.335 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpdc/ntpdc.mdoc.in@1.335 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpq/invoke-ntpq.texi@1.512 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq-opts.c@1.529 +113 -113
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq-opts.h@1.527 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq.1ntpqman@1.340 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq.1ntpqmdoc@1.340 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq.html@1.177 +129 -105
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq.man.in@1.340 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpq/ntpq.mdoc.in@1.340 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/invoke-ntpsnmpd.texi@1.506 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd-opts.c@1.524 +67 -67
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd-opts.h@1.523 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.335 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.335 +2 -2
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd.html@1.175 +14 -10
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd.man.in@1.335 +3 -3
+    ntp-4.2.8p9-PRE
+
+  ntpsnmpd/ntpsnmpd.mdoc.in@1.335 +2 -2
+    ntp-4.2.8p9-PRE
+
+  packageinfo.sh@1.529 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.96 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.97 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/calc_tickadj/calc_tickadj.html@1.98 +34 -22
+    ntp-4.2.8p9-PRE
+
+  scripts/calc_tickadj/calc_tickadj.man.in@1.95 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/calc_tickadj/calc_tickadj.mdoc.in@1.97 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/calc_tickadj/invoke-calc_tickadj.texi@1.100 +1 -1
+    ntp-4.2.8p9-PRE
+
+  scripts/invoke-plot_summary.texi@1.118 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/invoke-summary.texi@1.117 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/invoke-ntp-wait.texi@1.327 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/ntp-wait-opts@1.63 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/ntp-wait.1ntp-waitman@1.324 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.325 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/ntp-wait.html@1.344 +49 -31
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/ntp-wait.man.in@1.324 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/ntp-wait/ntp-wait.mdoc.in@1.325 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/invoke-ntpsweep.texi@1.115 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/ntpsweep-opts@1.65 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/ntpsweep.1ntpsweepman@1.103 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.103 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/ntpsweep.html@1.116 +44 -33
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/ntpsweep.man.in@1.103 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/ntpsweep/ntpsweep.mdoc.in@1.104 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/invoke-ntptrace.texi@1.116 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/ntptrace-opts@1.65 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/ntptrace.1ntptraceman@1.103 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/ntptrace.1ntptracemdoc@1.104 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/ntptrace.html@1.117 +36 -27
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/ntptrace.man.in@1.103 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/ntptrace/ntptrace.mdoc.in@1.105 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/plot_summary-opts@1.66 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/plot_summary.1plot_summaryman@1.116 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/plot_summary.1plot_summarymdoc@1.116 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/plot_summary.html@1.119 +47 -29
+    ntp-4.2.8p9-PRE
+
+  scripts/plot_summary.man.in@1.116 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/plot_summary.mdoc.in@1.116 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/summary-opts@1.65 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/summary.1summaryman@1.115 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/summary.1summarymdoc@1.115 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/summary.html@1.118 +39 -27
+    ntp-4.2.8p9-PRE
+
+  scripts/summary.man.in@1.115 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/summary.mdoc.in@1.115 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/invoke-update-leap.texi@1.16 +1 -1
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/update-leap-opts@1.16 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/update-leap.1update-leapman@1.16 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/update-leap.1update-leapmdoc@1.16 +2 -2
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/update-leap.html@1.16 +59 -35
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/update-leap.man.in@1.16 +3 -3
+    ntp-4.2.8p9-PRE
+
+  scripts/update-leap/update-leap.mdoc.in@1.16 +2 -2
+    ntp-4.2.8p9-PRE
+
+  sntp/invoke-sntp.texi@1.504 +2 -2
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp-opts.c@1.523 +158 -158
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp-opts.h@1.521 +3 -3
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp.1sntpman@1.339 +3 -3
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp.1sntpmdoc@1.339 +2 -2
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp.html@1.519 +109 -85
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp.man.in@1.339 +3 -3
+    ntp-4.2.8p9-PRE
+
+  sntp/sntp.mdoc.in@1.339 +2 -2
+    ntp-4.2.8p9-PRE
+
+  util/invoke-ntp-keygen.texi@1.507 +2 -2
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen-opts.c@1.525 +172 -172
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen-opts.h@1.523 +3 -3
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen.1ntp-keygenman@1.335 +3 -3
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen.1ntp-keygenmdoc@1.335 +2 -2
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen.html@1.181 +183 -124
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen.man.in@1.335 +3 -3
+    ntp-4.2.8p9-PRE
+
+  util/ntp-keygen.mdoc.in@1.335 +2 -2
+    ntp-4.2.8p9-PRE
+
+ChangeSet@1.3688.4.1, 2016-10-20 19:28:06+00:00, stenn@psp-deb1.ntp.org
+  cleanup
+
+  ChangeLog@1.1836.4.1 +1 -0
+    cleanup
+
+ChangeSet@1.3686.20.1, 2016-10-20 20:13:40+02:00, perlinger@ntp.org
+  [Sec 3114] Broadcast Mode Replay Prevention DoS
+
+  ChangeLog@1.1834.20.1 +4 -0
+    [Sec 3114] Broadcast Mode Replay Prevention DoS
+
+  ntpd/ntp_proto.c@1.392.2.1 +39 -6
+    [Sec 3114] Broadcast Mode Replay Prevention DoS
+     - applied patches by Matthew Van Gundy, with some rework.
+
+ChangeSet@1.3686.19.1, 2016-10-20 09:21:04+02:00, perlinger@ntp.org
+  [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS
+
+  ChangeLog@1.1834.19.1 +4 -0
+    [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS
+    
+
+  include/ntp.h@1.220.1.1 +1 -1
+    [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS
+
+  ntpd/ntp_proto.c@1.392.1.1 +12 -3
+    [Sec 3113] Broadcast Mode Poll Interval Enforcement DoS
+     - applied fix as suggested by Matthew Van Gundy
+
+ChangeSet@1.3698.1.5, 2016-10-13 01:26:54-07:00, harlan@max.pfcs.com
+  typo
+
+  ChangeLog@1.1841.1.3 +1 -1
+    typo
+
+ChangeSet@1.3698.1.4, 2016-10-13 01:24:48-07:00, harlan@max.pfcs.com
+  [Bug 3102] Zero origin issues
+
+  ChangeLog@1.1841.1.2 +1 -0
+    [Bug 3102] Zero origin issues
+
+  ntpd/ntp_proto.c@1.393 +28 -3
+    [Bug 3102] Zero origin issues
+
+ChangeSet@1.3698.1.3, 2016-10-11 01:33:28-07:00, harlan@max.pfcs.com
+  Distribute libssl_compat.h
+
+  include/Makefile.am@1.55 +1 -0
+    Distribute libssl_compat.h
+
+ChangeSet@1.3698.1.2, 2016-10-10 22:34:55-07:00, harlan@max.pfcs.com
+  bug 3102 tests
+
+  tests/bug-3102/README-3102.txt@1.1 +43 -0
+    BitKeeper file tests/bug-3102/README-3102.txt
+
+  tests/bug-3102/README-3102.txt@1.0 +0 -0
+
+  tests/bug-3102/zeroorg.py@1.1 +24 -0
+    BitKeeper file tests/bug-3102/zeroorg.py
+
+  tests/bug-3102/zeroorg.py@1.0 +0 -0
+
+ChangeSet@1.3688.3.2, 2016-10-10 01:46:05-07:00, harlan@max.pfcs.com
+  Fix typos in include/ntp.h
+
+  ChangeLog@1.1836.3.1 +1 -0
+    Fix typos in include/ntp.h
+
+  include/ntp.h@1.221 +3 -4
+    Fix typos in include/ntp.h
+
+ChangeSet@1.3699, 2016-10-04 08:36:17+02:00, perlinger@ntp.org
+  [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+
+  ChangeLog@1.1842 +2 -0
+    [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+
+  ports/winnt/include/ntp_iocompletionport.h@1.23 +1 -1
+    [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+     - minor type renaming
+
+  ports/winnt/include/termios.h@1.18 +3 -0
+    [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+     - manage device context for IOCPL together with comport
+
+  ports/winnt/libntp/termios.c@1.34 +191 -120
+    [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+     - manage device context for IOCPL together with comport
+
+  ports/winnt/ntpd/ntp_iocompletionport.c@1.76 +91 -98
+    [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+     - manage device context for IOCPL together with comport
+     - integrate Danny Mayers changes for docket error handling
+
+  ports/winnt/ntpd/ntp_iocpltypes.c@1.2 +2 -2
+    [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order using the loopback-ppsapi-provider.dll
+     - fix wrong instance initialisation
+
+ChangeSet@1.3698, 2016-10-01 10:52:11+00:00, stenn@psp-deb1.ntp.org
+  Update NEWS for 3119
+
+  NEWS@1.193 +17 -0
+    Update NEWS for 3119
+
+ChangeSet@1.3696, 2016-10-01 10:43:24+00:00, stenn@psp-deb1.ntp.org
+  Update NEWS for 3118
+
+  NEWS@1.192 +17 -0
+    Update NEWS for 3118
+
+ChangeSet@1.3694, 2016-10-01 10:29:06+00:00, stenn@psp-deb1.ntp.org
+  Update NEWS for 3110
+
+  NEWS@1.191 +17 -0
+    Update NEWS for 3110
+
+ChangeSet@1.3688.3.1, 2016-10-01 11:36:55+02:00, perlinger@ntp.org
+  [Bug 3095]  Compatibility with openssl 1.1
+   - add new sources to project files
+
+  ports/winnt/vs2005/libntp.vcproj@1.26 +8 -0
+    [Bug 3095]  Compatibility with openssl 1.1
+     - add new sources to project
+
+  ports/winnt/vs2008/libntp/libntp.vcproj@1.57 +12 -0
+    [Bug 3095]  Compatibility with openssl 1.1
+     - add new sources to project
+
+  ports/winnt/vs2013/libntp/libntp.vcxproj@1.12 +4 -1
+    [Bug 3095]  Compatibility with openssl 1.1
+     - add new sources to project
+
+  ports/winnt/vs2013/libntp/libntp.vcxproj.filters@1.10 +14 -5
+    [Bug 3095]  Compatibility with openssl 1.1
+     - add new sources to project
+
+  ports/winnt/vs2015/libntp/libntp.vcxproj@1.2 +3 -0
+    [Bug 3095]  Compatibility with openssl 1.1
+     - add new sources to project
+
+  ports/winnt/vs2015/libntp/libntp.vcxproj.filters@1.2 +9 -0
+    [Bug 3095]  Compatibility with openssl 1.1
+     - add new sources to project
+
+ChangeSet@1.3691, 2016-10-01 09:18:25+00:00, stenn@psp-deb1.ntp.org
+  Update NEWS for 3082
+
+  NEWS@1.190 +17 -0
+    Update NEWS for 3082
+
+ChangeSet@1.3688.1.33, 2016-10-01 08:32:28+00:00, stenn@psp-deb1.ntp.org
+  [Bug 3072] tweaks
+
+  NEWS@1.189 +16 -1
+    [Bug 3072] tweaks
+
+  ntpd/ntp_peer.c@1.160 +6 -1
+    [Bug 3072] tweaks
+
+ChangeSet@1.3688.1.31, 2016-09-29 20:53:30+00:00, perlinger@ntp.org
+  created 'X509_get_signature_nid()' shim for OpenSSL < v1.1.0
+  fixed unit test for sntp/packetProcessing to work with or without AUTOKEY flag
+
+  include/libssl_compat.h@1.2 +8 -1
+    created 'X509_get_signature_nid()' shim for OpenSSL < v1.1.0
+
+  libntp/libssl_compat.c@1.2 +9 -1
+    created 'X509_get_signature_nid()' shim for OpenSSL < v1.1.0
+
+  libntp/ssl_init.c@1.21 +0 -11
+    moved 'X509_get_signature_nid()' for OpenSSL < v1.1.0 to 'libssl_compat.{c,h}'
+
+  sntp/tests/packetProcessing.c@1.12 +0 -13
+    fixed unit test to work with or without AUTOKEY flag
+
+ChangeSet@1.3688.1.30, 2016-09-29 12:03:17+00:00, stenn@psp-deb1.ntp.org
+  NEWS update
+
+  NEWS@1.188 +2 -0
+    NEWS update
+
+ChangeSet@1.3688.2.1, 2016-09-29 11:59:03+00:00, stenn@psp-deb1.ntp.org
+  X509_get_signature_nid() shim tweak
+
+  ChangeLog@1.1836.2.1, stenn@stenn.ntp.org +1 -0
+    Shim X509_get_signature_nid() if needed
+
+  NEWS@1.187, stenn@stenn.ntp.org +1 -0
+    Shim X509_get_signature_nid() if needed
+
+  libntp/ssl_init.c@1.17.1.3 +1 -1
+    X509_get_signature_nid() shim tweak
+
+  libntp/ssl_init.c@1.17.1.2, stenn@stenn.ntp.org +12 -0
+    Shim X509_get_signature_nid() if needed
+
+ChangeSet@1.3688.1.27, 2016-09-28 11:28:56+00:00, stenn@psp-deb1.ntp.org
+  NEWS
+
+  NEWS@1.186 +1 -0
+    NEWS
+
+ChangeSet@1.3688.1.25, 2016-09-28 11:24:36+00:00, stenn@psp-deb1.ntp.org
+  NEWS
+
+  NEWS@1.185 +2 -0
+    NEWS
+
+ChangeSet@1.3688.1.23, 2016-09-28 11:17:22+00:00, stenn@psp-deb1.ntp.org
+  Updated ChangeLog and NEWS
+
+  ChangeLog@1.1836.1.19 +2 -2
+    Updated ChangeLog and NEWS
+
+  NEWS@1.184 +2 -0
+    Updated ChangeLog and NEWS
+
+ChangeSet@1.3688.1.21, 2016-09-28 11:12:28+00:00, stenn@psp-deb1.ntp.org
+  NEWS
+
+  NEWS@1.183 +2 -0
+    NEWS
+
+ChangeSet@1.3688.1.19, 2016-09-28 11:01:29+00:00, stenn@psp-deb1.ntp.org
+  NEWS
+
+  NEWS@1.182 +3 -0
+    NEWS
+
+ChangeSet@1.3688.1.17, 2016-09-28 10:54:12+00:00, stenn@psp-deb1.ntp.org
+  Update ChangeLog and NEWS
+
+  NEWS@1.181 +3 -0
+    Update ChangeLog and NEWS
+
+ChangeSet@1.3688.1.15, 2016-09-28 10:45:21+00:00, stenn@psp-deb1.ntp.org
+  Update ChangeLog and NEWS
+
+  ChangeLog@1.1836.1.14 +2 -2
+    Update ChangeLog and NEWS
+
+  NEWS@1.180 +2 -0
+    Update ChangeLog and NEWS
+
+ChangeSet@1.3688.1.13, 2016-09-28 10:37:17+00:00, stenn@psp-deb1.ntp.org
+  NEWS updates
+
+  NEWS@1.179 +4 -0
+    NEWS updates
+
+ChangeSet@1.3688.1.11, 2016-09-28 10:25:01+00:00, stenn@psp-deb1.ntp.org
+  Update ChangeLog and NEWS
+
+  ChangeLog@1.1836.1.11 +1 -1
+    Update ChangeLog and NEWS
+
+  NEWS@1.178 +1 -0
+    Update ChangeLog and NEWS
+
+ChangeSet@1.3688.1.8, 2016-09-28 08:17:16+00:00, stenn@psp-deb1.ntp.org
+  Update ChangeLog and NEWS
+
+  ChangeLog@1.1836.1.8 +2 -4
+    Update ChangeLog and NEWS
+
+  NEWS@1.177 +3 -0
+    Update ChangeLog and NEWS
+
+ChangeSet@1.3688.1.6, 2016-09-28 08:10:35+00:00, stenn@psp-deb1.ntp.org
+  Update ChangeLog and NEWS
+
+  ChangeLog@1.1836.1.6 +4 -6
+    Update ChangeLog and NEWS
+
+  NEWS@1.176 +4 -0
+    Update ChangeLog and NEWS
+
+ChangeSet@1.3688.1.4, 2016-09-28 07:59:31+00:00, stenn@psp-deb1.ntp.org
+  ChangeLog and NEWS cleanup
+
+  ChangeLog@1.1836.1.4 +2 -4
+    ChangeLog and NEWS cleanup
+
+  NEWS@1.175 +20 -0
+    ChangeLog and NEWS cleanup
+
+ChangeSet@1.3686.9.2, 2016-09-26 08:24:48+02:00, perlinger@ntp.org
+  [Bug 3021] unity_fixture.c needs pragma weak
+   - add library implementation of empty setUp()/tearDown()
+
+  sntp/unity/Makefile.am@1.10 +2 -0
+    [Bug 3021] unity_fixture.c needs pragma weak
+     - add library implementation of empty setUp()/tearDown()
+
+  sntp/unity/ulib_setup.c@1.1 +14 -0
+    [Bug 3021] unity_fixture.c needs pragma weak
+     - add library implementation of empty setUp()/tearDown()
+
+  sntp/unity/ulib_setup.c@1.0 +0 -0
+
+  sntp/unity/ulib_teardown.c@1.1 +13 -0
+    [Bug 3021] unity_fixture.c needs pragma weak
+     - add library implementation of empty setUp()/tearDown()
+
+  sntp/unity/ulib_teardown.c@1.0 +0 -0
+
+ChangeSet@1.3686.18.1, 2016-09-25 10:58:43+02:00, perlinger@ntp.org
+  [Bug 2689] ATOM driver processes last PPS pulse at startup, even if it is very old
+   - make sure PPS source is alive before processing samples
+   - improve stability close to the 500ms phase jump by a 400ms phase gate
+
+  ChangeLog@1.1834.18.1 +6 -0
+    [Bug 2689] ATOM driver processes last PPS pulse at startup, even if it is very old
+
+  ntpd/ntp_refclock.c@1.122 +50 -10
+    [Bug 2689] ATOM driver processes last PPS pulse at startup, even if it is very old
+     - make sure PPS source is alive before processing samples
+     - improve stability close to the 500ms phase jump by a 400ms phase gate
+
+ChangeSet@1.3686.17.1, 2016-09-24 20:38:17+02:00, perlinger@ntp.org
+  [Sec 3118] Mode 6 information disclosure and DDoS vector
+
+  ChangeLog@1.1834.17.1 +4 -0
+    [Sec 3118] Mode 6 information disclosure and DDoS vector
+
+  ntpd/ntp_control.c@1.209.5.1 +3 -3
+    [Sec 3118] Mode 6 information disclosure and DDoS vector
+     - TRAP config via mode 6 packet requires AUTH now
+     - writing the clock status should require AUTH, too.
+
+ChangeSet@1.3686.16.1, 2016-09-23 20:00:55+02:00, perlinger@ntp.org
+  [Sec 3119] Trap crash
+
+  ChangeLog@1.1834.16.1 +3 -0
+    [Sec 3119] Trap crash
+
+  ntpd/ntp_control.c@1.209.4.1 +19 -4
+    [Sec 3119] Trap crash
+     - bail out if we hit a Peer Event without a peer.
+
+ChangeSet@1.3686.15.1, 2016-09-22 20:42:39+02:00, perlinger@ntp.org
+  [Bug 3116] unit tests for NTP time stamp expansion
+
+  ChangeLog@1.1834.15.1 +3 -0
+    [Bug 3116] unit tests for NTP time stamp expansion
+
+  libntp/ntp_calendar.c@1.18 +56 -29
+    [Bug 3116] unit tests for NTP time stamp expansion
+     - added back unsigned spec to constant to avoid confusion
+       and explained why there was no problem at all
+
+  tests/libntp/calendar.c@1.13 +127 -0
+    [Bug 3116] unit tests for NTP time stamp expansion
+     - added test cases for NTP time stamp expansion
+
+  tests/libntp/run-calendar.c@1.12 +20 -15
+    [Bug 3116] unit tests for NTP time stamp expansion
+     - update generated file
+
+ChangeSet@1.3688.1.2, 2016-09-16 08:26:08+00:00, stenn@psp-deb1.ntp.org
+  [Bug 3053] ntp_loopfilter.c frequency calc precedence error.  Sarah White.
+
+  ChangeLog@1.1836.1.2 +1 -0
+    [Bug 3053] ntp_loopfilter.c frequency calc precedence error.  Sarah White.
+
+  ntpd/ntp_loopfilter.c@1.189 +6 -5
+    [Bug 3053] ntp_loopfilter.c frequency calc precedence error.  Sarah White.
+
+ChangeSet@1.3688.1.1, 2016-09-16 08:21:45+00:00, stenn@psp-deb1.ntp.org
+  cleanup
+
+  ChangeLog@1.1836.1.1 +1 -0
+    cleanup
+
+ChangeSet@1.3686.14.1, 2016-09-15 19:29:17+02:00, perlinger@ntp.org
+  [Bug 2959] refclock_jupiter: gps week correction
+
+  ChangeLog@1.1834.14.1 +5 -0
+    [Bug 2959] refclock_jupiter: gps week correction
+
+  ntpd/refclock_jupiter.c@1.30 +66 -1
+    [Bug 2959] refclock_jupiter: gps week correction
+    - fixed GPS week expansion to work based on build date. Special thanks to Craig Leres
+      for initial patch and testing.
+
+ChangeSet@1.3686.13.1, 2016-09-13 07:26:06+02:00, perlinger@ntp.org
+  [Bug 3072] Attack on interface selection
+
+  ChangeLog@1.1834.13.1 +6 -1
+    [Bug 3072] Attack on interface selection
+
+  ntpd/ntp_peer.c@1.159 +61 -50
+    [Bug 3072] Attack on interface selection
+     - implemented Miroslav Lichvars <mlichvar@redhat.com> suggestion to skip interface updates
+       based on incoming packets
+
+ChangeSet@1.3686.12.1, 2016-09-10 17:22:27+02:00, perlinger@ntp.org
+  [Bug 3095] Compatibility with openssl 1.1
+    - applied patches by Kurt Roeckx <kurt@roeckx.be> to source
+    - added shim layer for new SSL API calls
+
+  ChangeLog@1.1834.12.1 +5 -0
+    [Bug 3095] Compatibility with openssl 1.1
+
+  include/libssl_compat.h@1.1 +93 -0
+    [Bug 3095] Compatibility with openssl 1.1
+     shim layer for OpenSSL v1.1 API compatibility
+
+  include/libssl_compat.h@1.0 +0 -0
+
+  libntp/Makefile.am@1.78.1.1 +1 -0
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  libntp/a_md5encrypt.c@1.36.1.1 +26 -28
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  libntp/libssl_compat.c@1.1 +327 -0
+    [Bug 3095] Compatibility with openssl 1.1
+     shim layer for OpenSSL v1.1 API compatibility
+
+  libntp/libssl_compat.c@1.0 +0 -0
+
+  libntp/ssl_init.c@1.17.1.1 +7 -3
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  ntpd/ntp_control.c@1.209.3.1 +13 -10
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  ntpd/ntp_crypto.c@1.186.1.1 +207 -138
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  ntpq/ntpq.c@1.170.1.1 +6 -3
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  sntp/crypto.c@1.21.1.1 +11 -7
+    [Bug 3095] Compatibility with openssl 1.1
+     - switched to new OpenSSL API
+
+  util/ntp-keygen.c@1.107.1.1 +217 -150
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+     - replaced use of deprecated functions
+
+ChangeSet@1.3686.11.1, 2016-09-09 18:34:03+02:00, jnperlin@nemesis.localnet
+  [Sec 3110] Windows: ntpd DoS by oversized UDP packet
+
+  BitKeeper/etc/ignore@1.91.2.1 +2 -0
+    add more studio specific garbage
+
+  ChangeLog@1.1834.11.1 +4 -0
+    [Sec 3110] Windows: ntpd DoS by oversized UDP packet
+
+  ports/winnt/include/ntp_iocpltypes.h@1.2 +1 -0
+    [Sec 3110] Windows: ntpd DoS by oversized UDP packet
+     - add 'ioFlags' to context; should be persistent during overlapped IO
+
+  ports/winnt/ntpd/ntp_iocompletionport.c@1.73.1.1 +48 -9
+    [Sec 3110] Windows: ntpd DoS by oversized UDP packet
+     - fixed error handling for truncated UDP packets
+     - sidekick: fixed handling of spurious ERROR_HOST_UNREACHABLE errors
+     - sidekick: fixed error message formatting for WaitForMultipleObjects() errors
+
+  ports/winnt/vs2015/ntp.sln@1.2 +3 -3
+    [Sec 3110] Windows: ntpd DoS by oversized UDP packet
+      - sidekick: set version of solution to match VS2015
+
+ChangeSet@1.3686.10.1, 2016-09-04 21:10:56+02:00, perlinger@ntp.org
+  [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd'
+
+  ChangeLog@1.1834.10.1 +4 -0
+    [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd'
+
+  tests/ntpd/Makefile.am@1.29 +0 -1
+    [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd'
+     - removed source file that is included from t-ntp_signed.c
+
+ChangeSet@1.3686.9.1, 2016-09-04 19:19:34+02:00, perlinger@ntp.org
+  [Bug 3021] unity_fixture.c needs pragma weak
+
+  ChangeLog@1.1834.9.1 +4 -0
+    [Bug 3021] unity_fixture.c needs pragma weak
+
+  sntp/unity/unity_fixture.c@1.2 +0 -4
+    [Bug 3021] unity_fixture.c needs pragma weak
+     - removed unnecessary & harmful decls of 'setUp()' & 'tearDown()'
+       (no need to declare & implement locally unreferenced functions)
+
+ChangeSet@1.3686.8.1, 2016-09-04 17:37:34+02:00, perlinger@ntp.org
+  [Bug 3050] Fix for bug #2960 causes sntp to print a spurious error message
+
+  ChangeLog@1.1834.8.1 +5 -0
+    [Bug 3050] Fix for bug #2960 causes sntp to print a spurious error message
+
+  libntp/work_fork.c@1.17 +13 -5
+    [Bug 3050] Fix for bug #2960 causes sntp to print a spurious error message
+     - applied patches by Reinhard Max <max@suse.com> and Havard Eidnes <he@uninett.no>.
+       Reinhard fought the cause, Harvard the symptom -- having both should put an end to this issue.
+
+ChangeSet@1.3686.7.2, 2016-09-04 11:20:00+02:00, perlinger@ntp.org
+  [Bug 3059] Potential buffer overrun from oversized hash
+
+  ChangeLog@1.1834.7.2 +2 -0
+    [Bug 3059] Potential buffer overrun from oversized hash
+
+  libntp/a_md5encrypt.c@1.38 +7 -1
+    [Bug 3059] Potential buffer overrun from oversized hash
+     - applied patch by Brian Utterback <brian.utterback@oracle.com>
+
+ChangeSet@1.3686.7.1, 2016-09-04 08:48:03+02:00, perlinger@ntp.org
+  [Bug 3095] Compatibility with openssl 1.1
+    - applied patches by Kurt Roeckx <kurt@roeckx.be> to source
+    - added shim layer for SSL API calls with issues (both directions)
+
+  ChangeLog@1.1834.7.1 +5 -0
+    [Bug 3095] Compatibility with openssl 1.1
+
+  include/libssl_compat.h@1.1 +127 -0
+    [Bug 3095] Compatibility with openssl 1.1
+     shim layer for OpenSSL v1.1 API compatibility
+
+  include/libssl_compat.h@1.0 +0 -0
+
+  libntp/Makefile.am@1.79 +1 -0
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  libntp/a_md5encrypt.c@1.37 +26 -28
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+     - added shim layer for SSL API calls with issues (both directions)
+
+  libntp/libssl_compat.c@1.1 +452 -0
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be> to source
+     - added shim layer for SSL API calls with issues (both directions)
+
+  libntp/libssl_compat.c@1.0 +0 -0
+
+  libntp/ssl_init.c@1.18 +7 -3
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  ntpd/ntp_control.c@1.209.2.1 +13 -10
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  ntpd/ntp_crypto.c@1.187 +207 -138
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  ntpq/ntpq.c@1.171 +6 -3
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+  sntp/crypto.c@1.22 +11 -7
+    [Bug 3095] Compatibility with openssl 1.1
+     - switched to new OpenSSL API
+
+  util/ntp-keygen.c@1.108 +147 -131
+    [Bug 3095] Compatibility with openssl 1.1
+     - applied patches by Kurt Roeckx <kurt@roeckx.be>
+
+ChangeSet@1.3686.6.1, 2016-08-21 09:29:00+02:00, perlinger@ntp.org
+  [Bug 3100] ntpq can't retrieve daemon_version
+   (extended sysvar lookup bug, introduced with fix for bug 3008)
+
+  ChangeLog@1.1834.6.1 +4 -0
+    [Bug 3100] ntpq can't retrieve daemon_version
+
+  ntpd/ntp_control.c@1.209.1.1 +10 -4
+    [Bug 3100] ntpq can't retrieve daemon_version
+     - extended sysvar lookup broken with fix for bug3008: extended sysvar text is "<name>=<val>",
+       name compare has to match if the name match stops at NUL or '='. Bug introduced with bug 3008 fix.
+
+ChangeSet@1.3686.5.1, 2016-08-01 09:09:19+02:00, perlinger@ntp.org
+  [Bug 3068] Linker warnings when building on Solaris.
+   - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com>
+
+  ChangeLog@1.1834.5.1 +2 -0
+    [Bug 3068] Linker warnings when building on Solaris.
+
+  libntp/audio.c@1.37 +3 -3
+    [Bug 3068] Linker warnings when building on Solaris.
+     - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com>
+
+ChangeSet@1.3686.4.1, 2016-07-26 08:56:44+02:00, perlinger@ntp.org
+  [Bug 2998] sntp/tests/packetProcessing.c broken without openssl
+
+  ChangeLog@1.1834.4.1 +1 -0
+    [Bug 2998] sntp/tests/packetProcessing.c broken without openssl
+
+  sntp/tests/packetProcessing.c@1.9.1.1 +107 -89
+    [Bug 2998] sntp/tests/packetProcessing.c broken without openssl
+     - make sure the tests compile when configured using --without-crypto --disable-autokey
+     - ensure the there is no buffer overrun when AUTOKEY is disabled
+
+  sntp/tests/run-packetProcessing.c@1.11 +18 -18
+    [Bug 2998] sntp/tests/packetProcessing.c broken without openssl
+     - automatic testrunner update
+
+  tests/libntp/a_md5encrypt.c@1.15 +1 -3
+    [Bug 2998] sntp/tests/packetProcessing.c broken without openssl
+     - side kick: avoid extra memset by using 'emalloc_zero()'
+
+  tests/libntp/sfptostr.c@1.6 +3 -3
+    [Bug 2998] sntp/tests/packetProcessing.c broken without openssl
+     - side kick: avoid warnings about left shift of negative integer
+
+ChangeSet@1.3686.3.1, 2016-07-23 09:20:53+02:00, perlinger@ntp.org
+  [Bug 3066] NMEA clock ignores pps.
+   (side kick: ignore msbuild 10 user settings file)
+
+  BitKeeper/etc/ignore@1.91.1.1 +1 -0
+    ignore msbuild 10 user setting
+
+  ChangeLog@1.1834.3.1 +4 -0
+    [Bug 3066] NMEA clock ignores pps. (actually, the PPS HACK stopped to work for all serial devices)
+
+  ports/winnt/ntpd/ntp_iocompletionport.c@1.74 +20 -2
+    [Bug 3066] NMEA clock ignores pps. perlinger@ntp.org
+     - PPS-HACK works again; now controllable (explicitely) by the env var PPSAPI_HACK=true/yes/1 (anything else is NO)
+     - if PPSAPI_HACK is not set, a non-empty PPSAPI_DLLS list disables the PPS hack
+
+ChangeSet@1.3686.2.2, 2016-07-06 01:53:32-07:00, harlan@max.pfcs.com
+  [Bug 3084] update-leap mis-parses the leapfile name
+
+  ChangeLog@1.1834.2.2 +1 -0
+    [Bug 3084] update-leap mis-parses the leapfile name
+
+  scripts/update-leap/update-leap.in@1.3 +5 -2
+    [Bug 3084] update-leap mis-parses the leapfile name
+
+ChangeSet@1.3686.2.1, 2016-07-06 01:47:02-07:00, harlan@max.pfcs.com
+  [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY
+
+  ChangeLog@1.1834.2.1 +4 -0
+    [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY
+
+  sntp/tests/packetProcessing.c@1.10 +5 -3
+    [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY
+
+ChangeSet@1.3686.1.1, 2016-07-05 23:15:20+02:00, perlinger@ntp.org
+  [Sec 3075] Core Dump. Added missing paramter validation in read_mru_list(). 
+  [Sec 3082] (title too long -- Variation of [Sec 3075].)
+   - more hardening to read_mru_list().
+
+  ChangeLog@1.1834.1.1 +7 -1
+    [Sec 3075] Core Dump. Added missing paramter validation in read_mru_list()
+    [Sec 3082] (title too long -- Variation of [Sec 3075].)
+     - more hardening to read_mru_list().
+
+  ntpd/ntp_control.c@1.210 +57 -33
+    [Sec 3075] Core Dump. Added missing paramter validation in read_mru_list().
+    [Sec 3082] (title too long -- Variation of [Sec 3075].)
+     - more hardening to read_mru_list().
+
+ChangeSet@1.3688, 2016-06-14 05:57:34+00:00, stenn@psp-deb1.ntp.org
+  bk ignore file cleanup
+
+  BitKeeper/etc/ignore@1.92 +17 -13
+    bk ignore file cleanup
+
+  ChangeLog@1.1836 +1 -0
+    bk ignore file cleanup
+
+ChangeSet@1.3687, 2016-06-14 05:56:12+00:00, stenn@psp-deb1.ntp.org
+  git author attribution cleanup
+
+  BitKeeper/etc/Authors/a115350.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/a115350.txt
+
+  BitKeeper/etc/Authors/a115350.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/abe.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/abe.txt
+
+  BitKeeper/etc/Authors/abe.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/amidamaru.txt@1.1 +2 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/amidamaru.txt
+
+  BitKeeper/etc/Authors/amidamaru.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/bkorb.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/bkorb.txt
+
+  BitKeeper/etc/Authors/bkorb.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/blk.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/blk.txt
+
+  BitKeeper/etc/Authors/blk.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/blu.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/blu.txt
+
+  BitKeeper/etc/Authors/blu.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/bruckman.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/bruckman.txt
+
+  BitKeeper/etc/Authors/bruckman.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/burnicki.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/burnicki.txt
+
+  BitKeeper/etc/Authors/burnicki.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/claas.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/claas.txt
+
+  BitKeeper/etc/Authors/claas.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/clemens.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/clemens.txt
+
+  BitKeeper/etc/Authors/clemens.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/cov-build.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/cov-build.txt
+
+  BitKeeper/etc/Authors/cov-build.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/cprice.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/cprice.txt
+
+  BitKeeper/etc/Authors/cprice.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/davehart.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/davehart.txt
+
+  BitKeeper/etc/Authors/davehart.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/dietrich.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/dietrich.txt
+
+  BitKeeper/etc/Authors/dietrich.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/dunlop.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/dunlop.txt
+
+  BitKeeper/etc/Authors/dunlop.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/fernandoph.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/fernandoph.txt
+
+  BitKeeper/etc/Authors/fernandoph.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/fredb.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/fredb.txt
+
+  BitKeeper/etc/Authors/fredb.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/gerstung.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gerstung.txt
+
+  BitKeeper/etc/Authors/gerstung.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/ginsbach.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/ginsbach.txt
+
+  BitKeeper/etc/Authors/ginsbach.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/gnu.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gnu.txt
+
+  BitKeeper/etc/Authors/gnu.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/gopal.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gopal.txt
+
+  BitKeeper/etc/Authors/gopal.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/gunturu.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/gunturu.txt
+
+  BitKeeper/etc/Authors/gunturu.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/harlan.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/harlan.txt
+
+  BitKeeper/etc/Authors/harlan.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/harlanst.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/harlanst.txt
+
+  BitKeeper/etc/Authors/harlanst.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/hart.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/hart.txt
+
+  BitKeeper/etc/Authors/hart.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/hilbrecht.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/hilbrecht.txt
+
+  BitKeeper/etc/Authors/hilbrecht.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/hstenn.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/hstenn.txt
+
+  BitKeeper/etc/Authors/hstenn.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/jhay.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/jhay.txt
+
+  BitKeeper/etc/Authors/jhay.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/jnperlin.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/jnperlin.txt
+
+  BitKeeper/etc/Authors/jnperlin.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/kamboj.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/kamboj.txt
+
+  BitKeeper/etc/Authors/kamboj.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/kardel.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/kardel.txt
+
+  BitKeeper/etc/Authors/kardel.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/karlsson.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/karlsson.txt
+
+  BitKeeper/etc/Authors/karlsson.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/kuehn.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/kuehn.txt
+
+  BitKeeper/etc/Authors/kuehn.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/linus.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/linus.txt
+
+  BitKeeper/etc/Authors/linus.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/loki.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/loki.txt
+
+  BitKeeper/etc/Authors/loki.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/martin.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/martin.txt
+
+  BitKeeper/etc/Authors/martin.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/matthias.andree.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/matthias.andree.txt
+
+  BitKeeper/etc/Authors/matthias.andree.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/mayer.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/mayer.txt
+
+  BitKeeper/etc/Authors/mayer.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/mbrett.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/mbrett.txt
+
+  BitKeeper/etc/Authors/mbrett.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/murray.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/murray.txt
+
+  BitKeeper/etc/Authors/murray.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/neal.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/neal.txt
+
+  BitKeeper/etc/Authors/neal.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/paul.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/paul.txt
+
+  BitKeeper/etc/Authors/paul.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/peda.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/peda.txt
+
+  BitKeeper/etc/Authors/peda.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/perlinger.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/perlinger.txt
+
+  BitKeeper/etc/Authors/perlinger.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/phk.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/phk.txt
+
+  BitKeeper/etc/Authors/phk.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/rayvt.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/rayvt.txt
+
+  BitKeeper/etc/Authors/rayvt.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/rick.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/rick.txt
+
+  BitKeeper/etc/Authors/rick.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/ro.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/ro.txt
+
+  BitKeeper/etc/Authors/ro.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/root.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/root.txt
+
+  BitKeeper/etc/Authors/root.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/skamboj.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/skamboj.txt
+
+  BitKeeper/etc/Authors/skamboj.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/stenn.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/stenn.txt
+
+  BitKeeper/etc/Authors/stenn.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/tflendrich.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/tflendrich.txt
+
+  BitKeeper/etc/Authors/tflendrich.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/tomek.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/tomek.txt
+
+  BitKeeper/etc/Authors/tomek.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/utterback.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/utterback.txt
+
+  BitKeeper/etc/Authors/utterback.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/venu.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/venu.txt
+
+  BitKeeper/etc/Authors/venu.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/viperus.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/viperus.txt
+
+  BitKeeper/etc/Authors/viperus.txt@1.0 +0 -0
+
+  BitKeeper/etc/Authors/wink.txt@1.1 +1 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/Authors/wink.txt
+
+  BitKeeper/etc/Authors/wink.txt@1.0 +0 -0
+
+  BitKeeper/etc/authors.txt@1.1 +58 -0
+    BitKeeper file /home/stenn/ntp-stable-p8/BitKeeper/etc/authors.txt
+
+  BitKeeper/etc/authors.txt@1.0 +0 -0
+
+  ChangeLog@1.1835 +3 -0
+    git author attribution cleanup
+
+  scripts/build/genAuthors.in@1.2 +7 -5
+    git author attribution cleanup
+
 ChangeSet@1.3686, 2016-06-02 07:40:06-04:00, stenn@deacon.udel.edu
   NTP_4_2_8P8
   TAG: NTP_4_2_8P8
@@ -386,13 +2249,13 @@
   ntpd/ntp_proto.c@1.391 +39 -24
     [Sec 3044] Spoofed server packets are partially processed.  HStenn.
 
-ChangeSet@1.3669.3.2, 2016-05-24 02:58:00-07:00, harlan@hms-mbp11.pfcs.com
+ChangeSet@1.3669.4.2, 2016-05-24 02:58:00-07:00, harlan@hms-mbp11.pfcs.com
   Make sure we have an "author" file for git imports.  HStenn.
 
-  ChangeLog@1.1820.3.3 +1 -0
+  ChangeLog@1.1820.4.3 +1 -0
     Update the problem tests for MacOS for sntp.  HStenn.
 
-  ChangeLog@1.1820.3.2 +1 -0
+  ChangeLog@1.1820.4.2 +1 -0
     Make sure we have an "author" file for git imports.  HStenn.
 
   configure.ac@1.606 +1 -0
@@ -420,10 +2283,10 @@
   sntp/tests/Makefile.am@1.67 +8 -2
     Update the problem tests for MacOS for sntp.  HStenn.
 
-ChangeSet@1.3669.3.1, 2016-05-24 02:25:46-07:00, harlan@hms-mbp11.pfcs.com
+ChangeSet@1.3669.4.1, 2016-05-24 02:25:46-07:00, harlan@hms-mbp11.pfcs.com
   [Sec 3042] Broadcast Interleave.  HStenn.
 
-  ChangeLog@1.1820.3.1 +4 -0
+  ChangeLog@1.1820.4.1 +4 -0
     [Sec 3042] Broadcast Interleave.  HStenn.
 
   ntpd/ntp_proto.c@1.386.1.1 +69 -14
@@ -506,6 +2369,13 @@
   ChangeLog@1.1822.1.2 +1 -0
     [Bug 3052] Add a .gitignore file.  Edmund Wong.
 
+ChangeSet@1.3669.3.2, 2016-05-10 12:11:43+00:00, abe@psp-deb1.ntp.org
+  refclock_jjy.c:
+    [Bug 3047] Correct typo in the comment line.
+
+  ntpd/refclock_jjy.c@1.32 +1 -1
+    [Bug 3047] Correct typo in the comment line.
+
 ChangeSet@1.3675, 2016-05-08 11:59:28+02:00, perlinger@ntp.org
   [Sec 3043]  Autokey association reset. perlinger@ntp.org
    (fixes [Sec 3044] and [Sec 3045], too)
@@ -517,6 +2387,22 @@
     [Sec 3043]  Autokey association reset. perlinger@ntp.org
      (fixes [Sec 3044] and [Sec 3045], too)
 
+ChangeSet@1.3669.3.1, 2016-05-08 07:34:11+00:00, abe@psp-deb1.ntp.org
+  driver40.html, refclock_jjy.c, driver40-ja.html, ChangeLog:
+    [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+
+  ChangeLog@1.1820.3.1 +2 -0
+    [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+
+  html/drivers/driver40-ja.html@1.5 +2 -2
+    [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+
+  html/drivers/driver40.html@1.20 +2 -2
+    [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+
+  ntpd/refclock_jjy.c@1.31 +7 -3
+    [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+
 ChangeSet@1.3674, 2016-05-06 11:05:44+00:00, stenn@psp-deb1.ntp.org
   [Sec 3046] CRYPTO_NAK crash
 
Index: contrib/ntp/NEWS
===================================================================
--- contrib/ntp/NEWS	(版本 309693)
+++ contrib/ntp/NEWS	(版本 310419)
@@ -1,4 +1,311 @@
 ---
+NTP 4.2.8p9 (Harlan Stenn <stenn@ntp.org>, 2016/11/21) 
+
+Focus: Security, Bug fixes, enhancements.
+
+Severity: HIGH
+
+In addition to bug fixes and enhancements, this release fixes the
+following 1 high- (Windows only), 2 medium-, 2 medium-/low, and
+5 low-severity vulnerabilities, and provides 28 other non-security
+fixes and improvements:
+
+* Trap crash
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3119 / CVE-2016-9311 / VU#633847
+   Affects: ntp-4.0.90 (21 July 1999), possibly earlier, up to but not
+   	including 4.2.8p9, and ntp-4.3.0 up to but not including ntp-4.3.94.
+   CVSS2: MED 4.9 (AV:N/AC:H/Au:N/C:N/I:N/A:C)
+   CVSS3: MED 4.4 CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
+   Summary: 
+	ntpd does not enable trap service by default. If trap service
+	has been explicitly enabled, an attacker can send a specially
+	crafted packet to cause a null pointer dereference that will
+	crash ntpd, resulting in a denial of service. 
+   Mitigation:
+        Implement BCP-38.
+	Use "restrict default noquery ..." in your ntp.conf file. Only
+	    allow mode 6 queries from trusted networks and hosts. 
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Matthew Van Gundy of Cisco.
+
+* Mode 6 information disclosure and DDoS vector
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3118 / CVE-2016-9310 / VU#633847
+   Affects: ntp-4.0.90 (21 July 1999), possibly earlier, up to but not
+	including 4.2.8p9, and ntp-4.3.0 up to but not including ntp-4.3.94.
+   CVSS2: MED 6.4 (AV:A/AC:L/Au:N/C:N/I:N/A:P)
+   CVSS3: MED 6.5 CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
+   Summary: 
+	An exploitable configuration modification vulnerability exists
+	in the control mode (mode 6) functionality of ntpd. If, against
+	long-standing BCP recommendations, "restrict default noquery ..."
+	is not specified, a specially crafted control mode packet can set
+	ntpd traps, providing information disclosure and DDoS
+	amplification, and unset ntpd traps, disabling legitimate
+	monitoring. A remote, unauthenticated, network attacker can
+	trigger this vulnerability. 
+   Mitigation:
+        Implement BCP-38.
+	Use "restrict default noquery ..." in your ntp.conf file.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Matthew Van Gundy of Cisco.
+
+* Broadcast Mode Replay Prevention DoS
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3114 / CVE-2016-7427 / VU#633847
+   Affects: ntp-4.2.8p6, up to but not including ntp-4.2.8p9, and 
+	ntp-4.3.90 up to, but not including ntp-4.3.94.
+   CVSS2: LOW 3.3 (AV:A/AC:L/Au:N/C:N/I:N/A:P)
+   CVSS3: MED 4.3 CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
+   Summary: 
+	The broadcast mode of NTP is expected to only be used in a
+	trusted network. If the broadcast network is accessible to an
+	attacker, a potentially exploitable denial of service
+	vulnerability in ntpd's broadcast mode replay prevention
+	functionality can be abused. An attacker with access to the NTP
+	broadcast domain can periodically inject specially crafted
+	broadcast mode NTP packets into the broadcast domain which,
+	while being logged by ntpd, can cause ntpd to reject broadcast
+	mode packets from legitimate NTP broadcast servers. 
+   Mitigation:
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Matthew Van Gundy of Cisco.
+
+* Broadcast Mode Poll Interval Enforcement DoS
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3113 / CVE-2016-7428 / VU#633847
+   Affects: ntp-4.2.8p6, up to but not including ntp-4.2.8p9, and
+	ntp-4.3.90 up to, but not including ntp-4.3.94
+   CVSS2: LOW 3.3 (AV:A/AC:L/Au:N/C:N/I:N/A:P)
+   CVSS3: MED 4.3 CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
+   Summary: 
+	The broadcast mode of NTP is expected to only be used in a
+	trusted network. If the broadcast network is accessible to an
+	attacker, a potentially exploitable denial of service
+	vulnerability in ntpd's broadcast mode poll interval enforcement
+	functionality can be abused. To limit abuse, ntpd restricts the
+	rate at which each broadcast association will process incoming
+	packets. ntpd will reject broadcast mode packets that arrive
+	before the poll interval specified in the preceding broadcast
+	packet expires. An attacker with access to the NTP broadcast
+	domain can send specially crafted broadcast mode NTP packets to
+	the broadcast domain which, while being logged by ntpd, will
+	cause ntpd to reject broadcast mode packets from legitimate NTP
+	broadcast servers. 
+   Mitigation:
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Matthew Van Gundy of Cisco.
+
+* Windows: ntpd DoS by oversized UDP packet
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3110 / CVE-2016-9312 / VU#633847
+   Affects Windows only: ntp-4.?.?, up to but not including ntp-4.2.8p9,
+	and ntp-4.3.0 up to, but not including ntp-4.3.94. 
+   CVSS2: HIGH 7.8 (AV:N/AC:L/Au:N/C:N/I:N/A:C)
+   CVSS3: HIGH 7.5 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
+   Summary: 
+	If a vulnerable instance of ntpd on Windows receives a crafted
+	malicious packet that is "too big", ntpd will stop working. 
+   Mitigation:
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Robert Pajak of ABB.
+
+* 0rigin (zero origin) issues
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3102 / CVE-2016-7431 / VU#633847
+   Affects: ntp-4.2.8p8, and ntp-4.3.93.
+   CVSS2: MED 5.0 (AV:N/AC:L/Au:N/C:N/I:P/A:N)
+   CVSS3: MED 5.3 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
+   Summary: 
+	Zero Origin timestamp problems were fixed by Bug 2945 in
+	ntp-4.2.8p6. However, subsequent timestamp validation checks
+	introduced a regression in the handling of some Zero origin
+	timestamp checks.
+   Mitigation:
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Sharon Goldberg and Aanchal
+	Malhotra of Boston University.
+
+* read_mru_list() does inadequate incoming packet checks
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3082 / CVE-2016-7434 / VU#633847
+   Affects: ntp-4.2.7p22, up to but not including ntp-4.2.8p9, and
+	ntp-4.3.0 up to, but not including ntp-4.3.94.
+   CVSS2: LOW 3.8 (AV:L/AC:H/Au:S/C:N/I:N/A:C)
+   CVSS3: LOW 3.8 CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H
+   Summary: 
+	If ntpd is configured to allow mrulist query requests from a
+	server that sends a crafted malicious packet, ntpd will crash
+	on receipt of that crafted malicious mrulist query packet.
+   Mitigation:
+	Only allow mrulist query packets from trusted hosts.
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Magnus Stubman.
+
+* Attack on interface selection
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3072 / CVE-2016-7429 / VU#633847
+   Affects: ntp-4.2.7p385, up to but not including ntp-4.2.8p9, and
+	ntp-4.3.0 up to, but not including ntp-4.3.94
+   CVSS2: LOW 1.0 (AV:L/AC:H/Au:S/C:N/I:N/A:P)
+   CVSS3: LOW 1.6 CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L
+   Summary: 
+	When ntpd receives a server response on a socket that corresponds
+	to a different interface than was used for the request, the peer
+	structure is updated to use the interface for new requests. If
+	ntpd is running on a host with multiple interfaces in separate
+	networks and the operating system doesn't check source address in
+	received packets (e.g. rp_filter on Linux is set to 0), an
+	attacker that knows the address of the source can send a packet
+	with spoofed source address which will cause ntpd to select wrong
+	interface for the source and prevent it from sending new requests
+	until the list of interfaces is refreshed, which happens on
+	routing changes or every 5 minutes by default. If the attack is
+	repeated often enough (once per second), ntpd will not be able to
+	synchronize with the source.
+   Mitigation:
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+	If you are going to configure your OS to disable source address
+	    checks, also configure your firewall configuration to control
+	    what interfaces can receive packets from what networks.
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Miroslav Lichvar of Red Hat.
+
+* Client rate limiting and server responses
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3071 / CVE-2016-7426 / VU#633847
+   Affects: ntp-4.2.5p203, up to but not including ntp-4.2.8p9, and
+	ntp-4.3.0 up to, but not including ntp-4.3.94
+   CVSS2: LOW 1.0 (AV:L/AC:H/Au:S/C:N/I:N/A:P)
+   CVSS3: LOW 1.6 CVSS:3.0/AV:P/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L
+   Summary: 
+	When ntpd is configured with rate limiting for all associations
+	(restrict default limited in ntp.conf), the limits are applied
+	also to responses received from its configured sources. An
+	attacker who knows the sources (e.g., from an IPv4 refid in
+	server response) and knows the system is (mis)configured in this
+	way can periodically send packets with spoofed source address to
+	keep the rate limiting activated and prevent ntpd from accepting
+	valid responses from its sources. 
+
+	While this blanket rate limiting can be useful to prevent
+	brute-force attacks on the origin timestamp, it allows this DoS
+	attack. Similarly, it allows the attacker to prevent mobilization
+	of ephemeral associations.  
+   Mitigation:
+        Implement BCP-38.
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered by Miroslav Lichvar of Red Hat.
+
+* Fix for bug 2085 broke initial sync calculations 
+   Date Resolved: 21 November 2016; Dev (4.3.94) 21 November 2016
+   References: Sec 3067 / CVE-2016-7433 / VU#633847
+   Affects: ntp-4.2.7p385, up to but not including ntp-4.2.8p9, and
+	ntp-4.3.0 up to, but not including ntp-4.3.94. But the
+	root-distance calculation in general is incorrect in all versions
+	of ntp-4 until this release. 
+   CVSS2: LOW 1.2 (AV:L/AC:H/Au:N/C:N/I:N/A:P)
+   CVSS3: LOW 1.6 CVSS:3.0/AV:P/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:L
+   Summary: 
+	Bug 2085 described a condition where the root delay was included
+	twice, causing the jitter value to be higher than expected. Due
+	to a misinterpretation of a small-print variable in The Book, the
+	fix for this problem was incorrect, resulting in a root distance
+	that did not include the peer dispersion. The calculations and
+	formulae have been reviewed and reconciled, and the code has been
+	updated accordingly. 
+   Mitigation:
+        Upgrade to 4.2.8p9, or later, from the NTP Project Download Page
+	    or the NTP Public Services Project Download Page
+        Properly monitor your ntpd instances, and auto-restart ntpd
+	    (without -g) if it stops running. 
+   Credit: This weakness was discovered independently by Brian Utterback of
+	Oracle, and Sharon Goldberg and Aanchal Malhotra of Boston University. 
+
+Other fixes:
+
+* [Bug 3142] bug in netmask prefix length detection <perlinger@ntp.org>
+* [Bug 3138] gpsdjson refclock should honor fudgetime1. stenn@ntp.org
+* [Bug 3129] Unknown hosts can put resolver thread into a hard loop
+  - moved retry decision where it belongs. <perlinger@ntp.org>
+* [Bug 3125] NTPD doesn't fully start when ntp.conf entries are out of order
+  using the loopback-ppsapi-provider.dll <perlinger@ntp.org>
+* [Bug 3116] unit tests for NTP time stamp expansion. <perlinger@ntp.org>
+* [Bug 3100] ntpq can't retrieve daemon_version <perlinger@ntp.org>
+  - fixed extended sysvar lookup (bug introduced with bug 3008 fix)
+* [Bug 3095] Compatibility with openssl 1.1 <perlinger@ntp.org>
+  - applied patches by Kurt Roeckx <kurt@roeckx.be> to source
+  - added shim layer for SSL API calls with issues (both directions)
+* [Bug 3089] Serial Parser does not work anymore for hopfser like device
+  - simplified / refactored hex-decoding in driver. <perlinger@ntp.org>
+* [Bug 3084] update-leap mis-parses the leapfile name.  HStenn.
+* [Bug 3068] Linker warnings when building on Solaris. perlinger@ntp.org
+  - applied patch thanks to Andrew Stormont <andyjstormont@gmail.com>
+* [Bug 3067] Root distance calculation needs improvement.  HStenn
+* [Bug 3066] NMEA clock ignores pps. perlinger@ntp.org
+  - PPS-HACK works again.
+* [Bug 3059] Potential buffer overrun from oversized hash <perlinger@ntp.org>
+  - applied patch by Brian Utterback <brian.utterback@oracle.com>
+* [Bug 3053] ntp_loopfilter.c frequency calc precedence error.  Sarah White.
+* [Bug 3050] Fix for bug #2960 causes [...] spurious error message.
+  <perlinger@ntp.org>
+  - patches by Reinhard Max <max@suse.com> and Havard Eidnes <he@uninett.no>
+* [Bug 3047] Fix refclock_jjy C-DEX JST2000. abe@ntp.org
+  - Patch provided by Kuramatsu.
+* [Bug 3021] unity_fixture.c needs pragma weak <perlinger@ntp.org>
+  - removed unnecessary & harmful decls of 'setUp()' & 'tearDown()'
+* [Bug 3019] Windows: ERROR_HOST_UNREACHABLE block packet processing. DMayer
+* [Bug 2998] sntp/tests/packetProcessing.c broken without openssl. JPerlinger
+* [Bug 2961] sntp/tests/packetProcessing.c assumes AUTOKEY.  HStenn.
+* [Bug 2959] refclock_jupiter: gps week correction <perlinger@ntp.org>
+  - fixed GPS week expansion to work based on build date. Special thanks
+    to Craig Leres for initial patch and testing.
+* [Bug 2951] ntpd tests fail: multiple definition of `send_via_ntp_signd'
+  - fixed Makefile.am <perlinger@ntp.org>
+* [Bug 2689] ATOM driver processes last PPS pulse at startup,
+             even if it is very old <perlinger@ntp.org>
+  - make sure PPS source is alive before processing samples
+  - improve stability close to the 500ms phase jump (phase gate)
+* Fix typos in include/ntp.h.
+* Shim X509_get_signature_nid() if needed
+* git author attribution cleanup
+* bk ignore file cleanup
+* remove locks in Windows IO, use rpc-like thread synchronisation instead
+
+---
 NTP 4.2.8p8 (Harlan Stenn <stenn@ntp.org>, 2016/06/02) 
 
 Focus: Security, Bug fixes, enhancements.
Index: contrib/ntp/configure
===================================================================
--- contrib/ntp/configure	(版本 309693)
+++ contrib/ntp/configure	(版本 310419)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ntp 4.2.8p8.
+# Generated by GNU Autoconf 2.69 for ntp 4.2.8p9.
 #
 # Report bugs to <http://bugs.ntp.org./>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='ntp'
 PACKAGE_TARNAME='ntp'
-PACKAGE_VERSION='4.2.8p8'
-PACKAGE_STRING='ntp 4.2.8p8'
+PACKAGE_VERSION='4.2.8p9'
+PACKAGE_STRING='ntp 4.2.8p9'
 PACKAGE_BUGREPORT='http://bugs.ntp.org./'
 PACKAGE_URL='http://www.ntp.org./'
 
@@ -1618,7 +1618,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ntp 4.2.8p8 to adapt to many kinds of systems.
+\`configure' configures ntp 4.2.8p9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1688,7 +1688,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ntp 4.2.8p8:";;
+     short | recursive ) echo "Configuration of ntp 4.2.8p9:";;
    esac
   cat <<\_ACEOF
 
@@ -1924,7 +1924,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ntp configure 4.2.8p8
+ntp configure 4.2.8p9
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2754,7 +2754,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ntp $as_me 4.2.8p8, which was
+It was created by ntp $as_me 4.2.8p9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3755,7 +3755,7 @@
 
 # Define the identity of the package.
  PACKAGE='ntp'
- VERSION='4.2.8p8'
+ VERSION='4.2.8p9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -38003,7 +38003,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ntp $as_me 4.2.8p8, which was
+This file was extended by ntp $as_me 4.2.8p9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -38070,7 +38070,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-ntp config.status 4.2.8p8
+ntp config.status 4.2.8p9
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
Index: contrib/ntp/html/drivers/driver40.html
===================================================================
--- contrib/ntp/html/drivers/driver40.html	(版本 309693)
+++ contrib/ntp/html/drivers/driver40.html	(版本 310419)
@@ -16,7 +16,7 @@
 	<body>
 		<h3>JJY Receivers</h3>
 <p>Last update:
-  <!-- #BeginDate format:En2m -->15-May-2015  00:00<!-- #EndDate -->
+  <!-- #BeginDate format:En2m -->08-May-2016  00:00<!-- #EndDate -->
   UTC &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="driver40.html">ENGLISH</a> &nbsp; <a href="driver40-ja.html">JAPANESE</a></p>
 		<hr>
 		<h4>Synopsis</h4>
@@ -136,7 +136,7 @@
 							<tr>
 								<td><code>{ENQ}1J{ETX}</code></td>
 								<td>&nbsp;--&gt;&nbsp;</td>
-								<td><code>{STX}JYYMMDD HHMMSSS{ETX}</code></td>
+								<td><code>{STX}JYYMMDDWHHMMSSS{ETX}</code></td>
 							</tr>
 						</table>
 						<br>
Index: contrib/ntp/html/miscopt.html
===================================================================
--- contrib/ntp/html/miscopt.html	(版本 309693)
+++ contrib/ntp/html/miscopt.html	(版本 310419)
@@ -11,7 +11,7 @@
 <img src="pic/boom3.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
 <p>We have three, now looking for more.</p>
 <p>Last update:
-  <!-- #BeginDate format:En2m -->17-May-2016  06:26<!-- #EndDate -->
+  <!-- #BeginDate format:En2m -->9-Nov-2016  12:26<!-- #EndDate -->
     UTC</p>
 <br clear="left">
 <h4>Related Links</h4>
@@ -145,10 +145,12 @@
       <dd>Specifies the stepout threshold in seconds. The default without this command is 300 s. Since this option also affects the training and startup intervals, it should not be set less than the default. Further details are on the <a href="clock.html">Clock State Machine</a> page.</dd>
     </dl>
   </dd>
-  <dt id="tos"><tt>tos [beacon <i>beacon</i> | ceiling <i>ceiling</i> | cohort {0 | 1} | floor <i>floor</i> | maxclock <i>maxclock </i>| maxdist <i>maxdist</i> | minclock <i>minclock</i> | mindist <i>mindist </i>| minsane <i>minsane</i> | orphan <i>stratum</i> | orphanwait <em>delay</em>]</tt></dt>
+  <dt id="tos"><tt>tos [bcpollbstep <i>poll-gate</i> | beacon <i>beacon</i> | ceiling <i>ceiling</i> | cohort {0 | 1} | floor <i>floor</i> | maxclock <i>maxclock </i>| maxdist <i>maxdist</i> | minclock <i>minclock</i> | mindist <i>mindist </i>| minsane <i>minsane</i> | orphan <i>stratum</i> | orphanwait <em>delay</em>]</tt></dt>
   <dd>This command alters certain system variables used by the the clock selection and clustering algorithms. The default values of these variables have been carefully optimized for a wide range of network speeds and reliability expectations. Very rarely is it necessary to change the default values; but, some folks can't resist twisting the knobs. It can be used to select the quality and quantity of peers used to synchronize the system clock and is most useful in dynamic server discovery schemes. The options are as follows:</dd>
   <dd>
     <dl>
+      <dt><tt>bcpollbstep <i>poll-gate</i></tt></dt>
+      <dd>This option will cause the client to delay believing backward time steps from a broadcast server for <tt>bcpollbstep</tt> poll intervals.  NTP Broadcast networks are expected to be trusted, and if the server's time gets stepped backwards then it's desireable that the clients follow this change as soon as possible.  However, in spite of various protections built-in to the broadcast protocol, it is possible that an attacker could perform a carefully-constructed replay attack and cause clients to erroneously step their clocks backward.  If the risk of a successful broadcast replay attack is greater than the risk of the clients being out of sync in the event that there is a backward step on the broadcast time servers, this option may be used to cause the clients to delay beliveving backward time steps until <i>poll-gate</i> consecutive polls have been received.  The default is 0, which means the client will accept these steps upon receipt.  Any value from 0 to 4 can be specified.</dd>
       <dt><tt>beacon <i>beacon</i></tt></dt>
       <dd>The manycast server sends packets at intervals of 64 s if less than <tt>maxclock</tt> servers are available. Otherwise, it sends packets at the <i><tt>beacon</tt></i> interval in seconds. The default is 3600 s. See the <a href="discover.html">Automatic Server Discovery</a> page for further details.</dd>
       <dt><tt>ceiling <i>ceiling</i></tt></dt>
Index: contrib/ntp/include/Makefile.am
===================================================================
--- contrib/ntp/include/Makefile.am	(版本 309693)
+++ contrib/ntp/include/Makefile.am	(版本 310419)
@@ -16,6 +16,7 @@
 	intreswork.h	\
 	iosignal.h	\
 	l_stdlib.h	\
+	libssl_compat.h	\
 	lib_strbuf.h	\
 	libntp.h	\
 	mbg_gps166.h	\
Index: contrib/ntp/include/Makefile.in
===================================================================
--- contrib/ntp/include/Makefile.in	(版本 309693)
+++ contrib/ntp/include/Makefile.in	(版本 310419)
@@ -501,6 +501,7 @@
 	intreswork.h	\
 	iosignal.h	\
 	l_stdlib.h	\
+	libssl_compat.h	\
 	lib_strbuf.h	\
 	libntp.h	\
 	mbg_gps166.h	\
Index: contrib/ntp/include/libssl_compat.h
===================================================================
--- contrib/ntp/include/libssl_compat.h	(不存在的)
+++ contrib/ntp/include/libssl_compat.h	(版本 310419)
@@ -0,0 +1,100 @@
+/*
+ * libssl_compat.h -- OpenSSL v1.1 compatibility shims
+ *
+ * ---------------------------------------------------------------------
+ *
+ * Written by Juergen Perlinger <perlinger@ntp.org> for the NTP project
+ *
+ * Based on an idea by Kurt Roeckx <kurt@roeckx.be>
+ *
+ * ---------------------------------------------------------------------
+ * This is a clean room implementation of shim functions that have
+ * counterparts in the OpenSSL v1.1 API but not in earlier versions.
+ *
+ * If the OpenSSL version used for compilation needs the shims (that is,
+ * does not provide the new functions) the names of these functions are
+ * redirected to our shims.
+ * ---------------------------------------------------------------------
+ */
+
+#ifndef NTP_LIBSSL_COMPAT_H
+#define NTP_LIBSSL_COMPAT_H
+
+#include "openssl/evp.h"
+#include "openssl/dsa.h"
+#include "openssl/rsa.h"
+
+/* ----------------------------------------------------------------- */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+/* ----------------------------------------------------------------- */
+
+# include <openssl/objects.h>
+# include <openssl/x509.h>
+
+/* shim the new-style API on an old-style OpenSSL */
+
+extern BN_GENCB*	sslshimBN_GENCB_new(void);
+extern void		sslshimBN_GENCB_free(BN_GENCB*);
+
+extern EVP_MD_CTX*	sslshim_EVP_MD_CTX_new(void);
+extern void		sslshim_EVP_MD_CTX_free(EVP_MD_CTX *ctx);
+
+extern int	sslshim_EVP_PKEY_id(const EVP_PKEY * pkey);
+extern int	sslshim_EVP_PKEY_base_id(const EVP_PKEY * pkey);
+extern RSA*	sslshim_EVP_PKEY_get0_RSA(EVP_PKEY * pkey);
+extern DSA*	sslshim_EVP_PKEY_get0_DSA(EVP_PKEY * pkey);
+
+extern void	sslshim_RSA_get0_key(const RSA *prsa, const BIGNUM **pn,
+				     const BIGNUM **pe, const BIGNUM **pd);
+extern int	sslshim_RSA_set0_key(RSA *prsa, BIGNUM *n,
+				     BIGNUM *e, BIGNUM *d);
+extern void	sslshim_RSA_get0_factors(const RSA *prsa, const BIGNUM **pp,
+					 const BIGNUM **pq);
+extern int 	sslshim_RSA_set0_factors(RSA *prsar, BIGNUM *p, BIGNUM *q);
+extern int	sslshim_RSA_set0_crt_params(RSA *prsa, BIGNUM *dmp1,
+					BIGNUM *dmq1, BIGNUM *iqmp);
+
+extern void	sslshim_DSA_SIG_get0(const DSA_SIG *psig, const BIGNUM **pr,
+				     const BIGNUM **ps);
+extern int	sslshim_DSA_SIG_set0(DSA_SIG *psig, BIGNUM *r, BIGNUM *s);
+extern void	sslshim_DSA_get0_pqg(const DSA *pdsa, const BIGNUM **pp,
+				 const BIGNUM **pq, const BIGNUM **pg);
+extern int	sslshim_DSA_set0_pqg(DSA *pdsa, BIGNUM *p, BIGNUM *q, BIGNUM *g);
+extern void	sslshim_DSA_get0_key(const DSA *pdsa, const BIGNUM **ppub_key,
+				 const BIGNUM **ppriv_key);
+extern int	sslshim_DSA_set0_key(DSA *pdsa, BIGNUM *pub_key,
+				     BIGNUM *priv_key);
+
+extern int	sslshim_X509_get_signature_nid(const X509 *x);
+
+#define	BN_GENCB_new		sslshimBN_GENCB_new
+#define	BN_GENCB_free		sslshimBN_GENCB_free
+
+#define EVP_MD_CTX_new		sslshim_EVP_MD_CTX_new
+#define EVP_MD_CTX_free		sslshim_EVP_MD_CTX_free
+
+#define EVP_PKEY_id		sslshim_EVP_PKEY_id
+#define EVP_PKEY_base_id	sslshim_EVP_PKEY_base_id
+#define EVP_PKEY_get0_RSA	sslshim_EVP_PKEY_get0_RSA
+#define EVP_PKEY_get0_DSA	sslshim_EVP_PKEY_get0_DSA
+
+#define RSA_get0_key		sslshim_RSA_get0_key
+#define RSA_set0_key		sslshim_RSA_set0_key
+#define RSA_get0_factors	sslshim_RSA_get0_factors
+#define RSA_set0_factors	sslshim_RSA_set0_factors
+#define RSA_set0_crt_params	sslshim_RSA_set0_crt_params
+
+#define DSA_SIG_get0		sslshim_DSA_SIG_get0
+#define DSA_SIG_set0		sslshim_DSA_SIG_set0
+#define DSA_get0_pqg		sslshim_DSA_get0_pqg
+#define DSA_set0_pqg		sslshim_DSA_set0_pqg
+#define DSA_get0_key		sslshim_DSA_get0_key
+#define DSA_set0_key		sslshim_DSA_set0_key
+
+#define X509_get_signature_nid	sslshim_X509_get_signature_nid
+
+/* ----------------------------------------------------------------- */
+#endif /* OPENSSL_VERSION_NUMBER < v1.1.0 */
+/* ----------------------------------------------------------------- */
+
+#endif /* NTP_LIBSSL_COMPAT_H */

 属性改变: contrib/ntp/include/libssl_compat.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: contrib/ntp/include/ntp.h
===================================================================
--- contrib/ntp/include/ntp.h	(版本 309693)
+++ contrib/ntp/include/ntp.h	(版本 310419)
@@ -391,7 +391,7 @@
 	 * Statistic counters
 	 */
 	u_long	timereset;	/* time stat counters were reset */
-	u_long	timelastrec;	/* last packet received time */
+	u_long	timelastrec;	/* last packet received time, incl. trash */
 	u_long	timereceived;	/* last (clean) packet received time */
 	u_long	timereachable;	/* last reachable/unreachable time */
 
@@ -419,8 +419,7 @@
  * MODE_BROADCAST and MODE_BCLIENT appear in the transition
  * function. MODE_CONTROL and MODE_PRIVATE can appear in packets,
  * but those never survive to the transition function.
- * is a
-/ */
+ */
 #define	MODE_UNSPEC	0	/* unspecified (old version) */
 #define	MODE_ACTIVE	1	/* symmetric active mode */
 #define	MODE_PASSIVE	2	/* symmetric passive mode */
@@ -433,7 +432,7 @@
 #define	MODE_CONTROL	6	/* control mode */
 #define	MODE_PRIVATE	7	/* private mode */
 /*
- * This is a madeup mode for broadcast client.
+ * This is a made-up mode for broadcast client.
  */
 #define	MODE_BCLIENT	6	/* broadcast client mode */
 
@@ -724,6 +723,7 @@
 #define	PROTO_UECRYPTONAK	30
 #define	PROTO_UEDIGEST		31
 #define	PROTO_PCEDIGEST		32
+#define	PROTO_BCPOLLBSTEP	33
 
 /*
  * Configuration items for the loop filter
@@ -731,7 +731,7 @@
 #define	LOOP_DRIFTINIT		1	/* iniitialize frequency */
 #define	LOOP_KERN_CLEAR		2	/* set initial frequency offset */
 #define LOOP_MAX		3	/* set both step offsets */
-#define LOOP_MAX_BACK		4	/* set bacward-step offset */
+#define LOOP_MAX_BACK		4	/* set backward-step offset */
 #define LOOP_MAX_FWD		5	/* set forward-step offset */
 #define LOOP_PANIC		6	/* set panic offseet */
 #define LOOP_PHI		7	/* set dispersion rate */
Index: contrib/ntp/include/ntp_intres.h
===================================================================
--- contrib/ntp/include/ntp_intres.h	(版本 309693)
+++ contrib/ntp/include/ntp_intres.h	(版本 310419)
@@ -9,6 +9,9 @@
 #ifdef WORKER
 #define	INITIAL_DNS_RETRY	2	/* seconds between queries */
 
+/* flags for extended addrinfo version */
+#define GAIR_F_IGNDNSERR	0x0001	/* ignore DNS errors */
+
 /*
  * you call getaddrinfo_sometime(name, service, &hints, retry, callback_func, context);
  * later (*callback_func)(rescode, gai_errno, context, name, service, hints, ai_result) is called.
@@ -19,6 +22,9 @@
 extern int	getaddrinfo_sometime(const char *, const char *,
 				     const struct addrinfo *, int,
 				     gai_sometime_callback, void *);
+extern int	getaddrinfo_sometime_ex(const char *, const char *,
+				     const struct addrinfo *, int,
+				     gai_sometime_callback, void *, u_int);
 /*
  * In gai_sometime_callback routines, the resulting addrinfo list is
  * only available until the callback returns.  To hold on to the list
Index: contrib/ntp/include/ntpd.h
===================================================================
--- contrib/ntp/include/ntpd.h	(版本 309693)
+++ contrib/ntp/include/ntpd.h	(版本 310419)
@@ -483,6 +483,7 @@
 extern double	sys_bdelay; 		/* broadcast client default delay */
 extern int	sys_authenticate;	/* requre authentication for config */
 extern l_fp	sys_authdelay;		/* authentication delay */
+extern u_char	sys_bcpollbstep;	/* broadcast poll backstep gate */
 extern u_long 	sys_epoch;		/* last clock update time */
 extern keyid_t	sys_private;		/* private value for session seed */
 extern int	sys_manycastserver;	/* respond to manycast client pkts */
Index: contrib/ntp/lib/isc/netaddr.c
===================================================================
--- contrib/ntp/lib/isc/netaddr.c	(版本 309693)
+++ contrib/ntp/lib/isc/netaddr.c	(版本 310419)
@@ -280,7 +280,6 @@
 	for (; i < ipbytes; i++) {
 		if (p[i] != 0)
 			return (ISC_R_MASKNONCONTIG);
-		i++;
 	}
 	*lenp = nbytes * 8 + nbits;
 	return (ISC_R_SUCCESS);
Index: contrib/ntp/libntp/Makefile.am
===================================================================
--- contrib/ntp/libntp/Makefile.am	(版本 309693)
+++ contrib/ntp/libntp/Makefile.am	(版本 310419)
@@ -73,6 +73,7 @@
 	iosignal.c					\
 	is_ip_address.c					\
 	lib_strbuf.c					\
+	libssl_compat.c					\
 	machines.c					\
 	mktime.c					\
 	modetoa.c					\
Index: contrib/ntp/libntp/Makefile.in
===================================================================
--- contrib/ntp/libntp/Makefile.in	(版本 309693)
+++ contrib/ntp/libntp/Makefile.in	(版本 310419)
@@ -150,15 +150,15 @@
 	calyearstart.c clocktime.c clocktypes.c decodenetnum.c \
 	dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \
 	hextoint.c hextolfp.c humandate.c icom.c iosignal.c \
-	is_ip_address.c lib_strbuf.c machines.c mktime.c modetoa.c \
-	mstolfp.c msyslog.c netof.c ntp_calendar.c ntp_crypto_rnd.c \
-	ntp_intres.c ntp_libopts.c ntp_lineedit.c ntp_random.c \
-	ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c octtoint.c \
-	prettydate.c refidsmear.c recvbuff.c refnumtoa.c snprintf.c \
-	socket.c socktoa.c socktohost.c ssl_init.c statestr.c strdup.c \
-	strl_obsd.c syssignal.c timetoa.c timevalops.c uglydate.c \
-	vint64ops.c work_fork.c work_thread.c ymd2yd.c \
-	$(srcdir)/../lib/isc/assertions.c \
+	is_ip_address.c lib_strbuf.c libssl_compat.c machines.c \
+	mktime.c modetoa.c mstolfp.c msyslog.c netof.c ntp_calendar.c \
+	ntp_crypto_rnd.c ntp_intres.c ntp_libopts.c ntp_lineedit.c \
+	ntp_random.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \
+	octtoint.c prettydate.c refidsmear.c recvbuff.c refnumtoa.c \
+	snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \
+	statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \
+	timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \
+	ymd2yd.c $(srcdir)/../lib/isc/assertions.c \
 	$(srcdir)/../lib/isc/buffer.c \
 	$(srcdir)/../lib/isc/backtrace-emptytbl.c \
 	$(srcdir)/../lib/isc/backtrace.c \
@@ -209,20 +209,21 @@
 	getopt.$(OBJEXT) hextoint.$(OBJEXT) hextolfp.$(OBJEXT) \
 	humandate.$(OBJEXT) icom.$(OBJEXT) iosignal.$(OBJEXT) \
 	is_ip_address.$(OBJEXT) lib_strbuf.$(OBJEXT) \
-	machines.$(OBJEXT) mktime.$(OBJEXT) modetoa.$(OBJEXT) \
-	mstolfp.$(OBJEXT) msyslog.$(OBJEXT) netof.$(OBJEXT) \
-	ntp_calendar.$(OBJEXT) ntp_crypto_rnd.$(OBJEXT) \
-	ntp_intres.$(OBJEXT) ntp_libopts.$(OBJEXT) \
-	ntp_lineedit.$(OBJEXT) ntp_random.$(OBJEXT) \
-	ntp_rfc2553.$(OBJEXT) ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) \
-	numtohost.$(OBJEXT) octtoint.$(OBJEXT) prettydate.$(OBJEXT) \
-	refidsmear.$(OBJEXT) recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) \
-	snprintf.$(OBJEXT) socket.$(OBJEXT) socktoa.$(OBJEXT) \
-	socktohost.$(OBJEXT) ssl_init.$(OBJEXT) statestr.$(OBJEXT) \
-	strdup.$(OBJEXT) strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) \
-	timetoa.$(OBJEXT) timevalops.$(OBJEXT) uglydate.$(OBJEXT) \
-	vint64ops.$(OBJEXT) work_fork.$(OBJEXT) work_thread.$(OBJEXT) \
-	ymd2yd.$(OBJEXT) $(am__objects_3) $(am__objects_1)
+	libssl_compat.$(OBJEXT) machines.$(OBJEXT) mktime.$(OBJEXT) \
+	modetoa.$(OBJEXT) mstolfp.$(OBJEXT) msyslog.$(OBJEXT) \
+	netof.$(OBJEXT) ntp_calendar.$(OBJEXT) \
+	ntp_crypto_rnd.$(OBJEXT) ntp_intres.$(OBJEXT) \
+	ntp_libopts.$(OBJEXT) ntp_lineedit.$(OBJEXT) \
+	ntp_random.$(OBJEXT) ntp_rfc2553.$(OBJEXT) \
+	ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) numtohost.$(OBJEXT) \
+	octtoint.$(OBJEXT) prettydate.$(OBJEXT) refidsmear.$(OBJEXT) \
+	recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) snprintf.$(OBJEXT) \
+	socket.$(OBJEXT) socktoa.$(OBJEXT) socktohost.$(OBJEXT) \
+	ssl_init.$(OBJEXT) statestr.$(OBJEXT) strdup.$(OBJEXT) \
+	strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) timetoa.$(OBJEXT) \
+	timevalops.$(OBJEXT) uglydate.$(OBJEXT) vint64ops.$(OBJEXT) \
+	work_fork.$(OBJEXT) work_thread.$(OBJEXT) ymd2yd.$(OBJEXT) \
+	$(am__objects_3) $(am__objects_1)
 am_libntp_a_OBJECTS = systime.$(OBJEXT) $(am__objects_4)
 libntp_a_OBJECTS = $(am_libntp_a_OBJECTS)
 libntpsim_a_AR = $(AR) $(ARFLAGS)
@@ -233,15 +234,15 @@
 	calyearstart.c clocktime.c clocktypes.c decodenetnum.c \
 	dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \
 	hextoint.c hextolfp.c humandate.c icom.c iosignal.c \
-	is_ip_address.c lib_strbuf.c machines.c mktime.c modetoa.c \
-	mstolfp.c msyslog.c netof.c ntp_calendar.c ntp_crypto_rnd.c \
-	ntp_intres.c ntp_libopts.c ntp_lineedit.c ntp_random.c \
-	ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c octtoint.c \
-	prettydate.c refidsmear.c recvbuff.c refnumtoa.c snprintf.c \
-	socket.c socktoa.c socktohost.c ssl_init.c statestr.c strdup.c \
-	strl_obsd.c syssignal.c timetoa.c timevalops.c uglydate.c \
-	vint64ops.c work_fork.c work_thread.c ymd2yd.c \
-	$(srcdir)/../lib/isc/assertions.c \
+	is_ip_address.c lib_strbuf.c libssl_compat.c machines.c \
+	mktime.c modetoa.c mstolfp.c msyslog.c netof.c ntp_calendar.c \
+	ntp_crypto_rnd.c ntp_intres.c ntp_libopts.c ntp_lineedit.c \
+	ntp_random.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \
+	octtoint.c prettydate.c refidsmear.c recvbuff.c refnumtoa.c \
+	snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \
+	statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \
+	timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \
+	ymd2yd.c $(srcdir)/../lib/isc/assertions.c \
 	$(srcdir)/../lib/isc/buffer.c \
 	$(srcdir)/../lib/isc/backtrace-emptytbl.c \
 	$(srcdir)/../lib/isc/backtrace.c \
@@ -665,6 +666,7 @@
 	iosignal.c					\
 	is_ip_address.c					\
 	lib_strbuf.c					\
+	libssl_compat.c					\
 	machines.c					\
 	mktime.c					\
 	modetoa.c					\
@@ -813,6 +815,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ip_address.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_strbuf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libssl_compat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/machines.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
Index: contrib/ntp/libntp/a_md5encrypt.c
===================================================================
--- contrib/ntp/libntp/a_md5encrypt.c	(版本 309693)
+++ contrib/ntp/libntp/a_md5encrypt.c	(版本 310419)
@@ -11,6 +11,7 @@
 #include "ntp.h"
 #include "ntp_md5.h"	/* provides OpenSSL digest API */
 #include "isc/string.h"
+#include "libssl_compat.h"
 /*
  * MD5authencrypt - generate message digest
  *
@@ -26,7 +27,7 @@
 {
 	u_char	digest[EVP_MAX_MD_SIZE];
 	u_int	len;
-	EVP_MD_CTX ctx;
+	EVP_MD_CTX *ctx;
 
 	/*
 	 * Compute digest of key concatenated with packet. Note: the
@@ -34,18 +35,20 @@
 	 * was creaded.
 	 */
 	INIT_SSL();
-#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL
-	if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) {
+	ctx = EVP_MD_CTX_new();
+	if (!(ctx && EVP_DigestInit(ctx, EVP_get_digestbynid(type)))) {
 		msyslog(LOG_ERR,
 		    "MAC encrypt: digest init failed");
+		EVP_MD_CTX_free(ctx);
 		return (0);
 	}
-#else
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
-#endif
-	EVP_DigestUpdate(&ctx, key, cache_secretsize);
-	EVP_DigestUpdate(&ctx, (u_char *)pkt, length);
-	EVP_DigestFinal(&ctx, digest, &len);
+	EVP_DigestUpdate(ctx, key, cache_secretsize);
+	EVP_DigestUpdate(ctx, (u_char *)pkt, length);
+	EVP_DigestFinal(ctx, digest, &len);
+	EVP_MD_CTX_free(ctx);
+	/* If the MAC is longer than the MAX then truncate it. */
+	if (len > MAX_MAC_LEN - 4)
+	    len = MAX_MAC_LEN - 4;
 	memmove((u_char *)pkt + length + 4, digest, len);
 	return (len + 4);
 }
@@ -67,7 +70,7 @@
 {
 	u_char	digest[EVP_MAX_MD_SIZE];
 	u_int	len;
-	EVP_MD_CTX ctx;
+	EVP_MD_CTX *ctx;
 
 	/*
 	 * Compute digest of key concatenated with packet. Note: the
@@ -75,24 +78,26 @@
 	 * was created.
 	 */
 	INIT_SSL();
-#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL
-	if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) {
+	ctx = EVP_MD_CTX_new();
+	if (!(ctx && EVP_DigestInit(ctx, EVP_get_digestbynid(type)))) {
 		msyslog(LOG_ERR,
 		    "MAC decrypt: digest init failed");
+		EVP_MD_CTX_free(ctx);
 		return (0);
 	}
-#else
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
-#endif
-	EVP_DigestUpdate(&ctx, key, cache_secretsize);
-	EVP_DigestUpdate(&ctx, (u_char *)pkt, length);
-	EVP_DigestFinal(&ctx, digest, &len);
+	EVP_DigestUpdate(ctx, key, cache_secretsize);
+	EVP_DigestUpdate(ctx, (u_char *)pkt, length);
+	EVP_DigestFinal(ctx, digest, &len);
+	EVP_MD_CTX_free(ctx);
+	/* If the MAC is longer than the MAX then truncate it. */
+	if (len > MAX_MAC_LEN - 4)
+	    len = MAX_MAC_LEN - 4;
 	if (size != (size_t)len + 4) {
 		msyslog(LOG_ERR,
 		    "MAC decrypt: MAC length error");
 		return (0);
 	}
-	return !isc_tsmemcmp(digest, (const char *)pkt + length + 4, len);
+	return !isc_tsmemcmp(digest, (u_char *)pkt + length + 4, len);
 }
 
 /*
@@ -106,7 +111,7 @@
 {
 	u_char		digest[20];
 	u_int32		addr_refid;
-	EVP_MD_CTX	ctx;
+	EVP_MD_CTX	*ctx;
 	u_int		len;
 
 	if (IS_IPV4(addr))
@@ -114,24 +119,23 @@
 
 	INIT_SSL();
 
-#if defined(OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x0090700fL
-	EVP_MD_CTX_init(&ctx);
+	ctx = EVP_MD_CTX_new();
+	EVP_MD_CTX_init(ctx);
 #ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
 	/* MD5 is not used as a crypto hash here. */
-	EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
+	EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
 #endif
-	if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL)) {
+	if (!EVP_DigestInit_ex(ctx, EVP_md5(), NULL)) {
 		msyslog(LOG_ERR,
 		    "MD5 init failed");
+		EVP_MD_CTX_free(ctx);	/* pedantic... but safe */
 		exit(1);
 	}
-#else
-	EVP_DigestInit(&ctx, EVP_md5());
-#endif
 
-	EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr),
+	EVP_DigestUpdate(ctx, (u_char *)PSOCK_ADDR6(addr),
 	    sizeof(struct in6_addr));
-	EVP_DigestFinal(&ctx, digest, &len);
+	EVP_DigestFinal(ctx, digest, &len);
+	EVP_MD_CTX_free(ctx);
 	memcpy(&addr_refid, digest, sizeof(addr_refid));
 	return (addr_refid);
 }
Index: contrib/ntp/libntp/audio.c
===================================================================
--- contrib/ntp/libntp/audio.c	(版本 309693)
+++ contrib/ntp/libntp/audio.c	(版本 310419)
@@ -55,7 +55,7 @@
 #ifdef PCM_STYLE_SOUND
 # define INIT_FILE "/etc/ntp.audio"
 int agc =	SOUND_MIXER_WRITE_RECLEV; /* or IGAIN or LINE */
-int monitor =	SOUND_MIXER_WRITE_VOLUME; /* or OGAIN */
+int audiomonitor =     SOUND_MIXER_WRITE_VOLUME; /* or OGAIN */
 int devmask = 0;
 int recmask = 0;
 char cf_c_dev[100], cf_i_dev[100], cf_agc[100], cf_monitor[100];
@@ -334,7 +334,7 @@
 		/* devmask */
 		i = mixer_name(cf_monitor, devmask);
 		if (i >= 0)
-			monitor = MIXER_WRITE(i);
+                       audiomonitor = MIXER_WRITE(i);
 		else
 			printf("monitor %s not in devmask %#x\n",
 			       cf_monitor, devmask);
@@ -412,7 +412,7 @@
 # endif
 		l |= r << 8;
 		if (cf_monitor[0] != '\0')
-			rval = ioctl(ctl_fd, monitor, &l );
+                       rval = ioctl(ctl_fd, audiomonitor, &l );
 		else 
 			rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_VOLUME,
 				     &l);
Index: contrib/ntp/libntp/libssl_compat.c
===================================================================
--- contrib/ntp/libntp/libssl_compat.c	(不存在的)
+++ contrib/ntp/libntp/libssl_compat.c	(版本 310419)
@@ -0,0 +1,335 @@
+/*
+ * libssl_compat.c -- OpenSSL v1.1 compatibility functions
+ *
+ * ---------------------------------------------------------------------
+ * Written by Juergen Perlinger <perlinger@ntp.org> for the NTP project
+ *
+ * Based on an idea by Kurt Roeckx <kurt@roeckx.be>
+ *
+ * ---------------------------------------------------------------------
+ * This is a clean room implementation of shim functions that have
+ * counterparts in the OpenSSL v1.1 API but not in earlier versions. So
+ * while OpenSSL broke binary compatibility with v1.1, this shim module
+ * should provide the necessary source code compatibility with older
+ * versions of OpenSSL.
+ * ---------------------------------------------------------------------
+ */
+#include "config.h"
+
+#include <string.h>
+#include <openssl/bn.h>
+#include <openssl/evp.h>
+
+#include "ntp_types.h"
+
+/* ----------------------------------------------------------------- */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+/* ----------------------------------------------------------------- */
+
+#include "libssl_compat.h"
+#include "ntp_assert.h"
+
+/* --------------------------------------------------------------------
+ * replace a BIGNUM owned by the caller with another one if it's not
+ * NULL, taking over the ownership of the new value. This clears & frees
+ * the old value -- the clear might be overkill, but it's better to err
+ * on the side of paranoia here.
+ */
+static void
+replace_bn_nn(
+	BIGNUM **	ps,
+	BIGNUM *	n
+	)
+{
+	if (n) {
+		REQUIRE(*ps != n);
+		BN_clear_free(*ps);
+		*ps = n;
+	}
+}
+
+/* --------------------------------------------------------------------
+ * allocation and deallocation of prime number callbacks
+ */
+BN_GENCB*
+sslshimBN_GENCB_new(void)
+{
+	return calloc(1,sizeof(BN_GENCB));
+}
+
+void
+sslshimBN_GENCB_free(
+	BN_GENCB	*cb
+	)
+{
+	free(cb);
+}
+
+/* --------------------------------------------------------------------
+ * allocation and deallocation of message digests
+ */
+EVP_MD_CTX*
+sslshim_EVP_MD_CTX_new(void)
+{
+	return calloc(1, sizeof(EVP_MD_CTX));
+}
+
+void
+sslshim_EVP_MD_CTX_free(
+	EVP_MD_CTX *	pctx
+	)
+{
+	free(pctx);
+}
+
+/* --------------------------------------------------------------------
+ * get EVP keys and key type
+ */
+int
+sslshim_EVP_PKEY_id(
+	const EVP_PKEY *pkey
+	)
+{
+	return (pkey) ? pkey->type : EVP_PKEY_NONE;
+}
+
+int
+sslshim_EVP_PKEY_base_id(
+	const EVP_PKEY *pkey
+	)
+{
+	return (pkey) ? EVP_PKEY_type(pkey->type) : EVP_PKEY_NONE;
+}
+
+RSA*
+sslshim_EVP_PKEY_get0_RSA(
+	EVP_PKEY *	pkey
+	)
+{
+	return (pkey) ? pkey->pkey.rsa : NULL;
+}
+
+DSA*
+sslshim_EVP_PKEY_get0_DSA(
+	EVP_PKEY *	pkey
+	)
+{
+	return (pkey) ? pkey->pkey.dsa : NULL;
+}
+
+/* --------------------------------------------------------------------
+ * set/get RSA params
+ */
+void
+sslshim_RSA_get0_key(
+	const RSA *	prsa,
+	const BIGNUM **	pn,
+	const BIGNUM **	pe,
+	const BIGNUM **	pd
+	)
+{
+	REQUIRE(prsa != NULL);
+
+	if (pn)
+		*pn = prsa->n;
+	if (pe)
+		*pe = prsa->e;
+	if (pd)
+		*pd = prsa->d;
+}
+
+int
+sslshim_RSA_set0_key(
+	RSA *		prsa,
+	BIGNUM *	n,
+	BIGNUM *	e,
+	BIGNUM *	d
+	)
+{
+	REQUIRE(prsa != NULL);
+	if (!((prsa->n || n) && (prsa->e || e)))
+		return 0;
+
+	replace_bn_nn(&prsa->n, n);
+	replace_bn_nn(&prsa->e, e);
+	replace_bn_nn(&prsa->d, d);
+	
+	return 1;
+}
+
+void
+sslshim_RSA_get0_factors(
+	const RSA *	prsa,
+	const BIGNUM **	pp,
+	const BIGNUM **	pq
+	)
+{
+	REQUIRE(prsa != NULL);
+
+	if (pp)
+		*pp = prsa->p;
+	if (pq)
+		*pq = prsa->q;
+}
+
+int
+sslshim_RSA_set0_factors(
+	RSA    *	prsa,
+	BIGNUM *	p,
+	BIGNUM *	q
+	)
+{
+	REQUIRE(prsa != NULL);
+	if (!((prsa->p || p) && (prsa->q || q)))
+		return 0;
+
+	replace_bn_nn(&prsa->p, p);
+	replace_bn_nn(&prsa->q, q);
+
+	return 1;
+}
+
+int
+sslshim_RSA_set0_crt_params(
+	RSA    *	prsa,
+	BIGNUM *	dmp1,
+	BIGNUM *	dmq1,
+	BIGNUM *	iqmp
+	)
+{
+	REQUIRE(prsa != NULL);
+	if (!((prsa->dmp1 || dmp1) &&
+	      (prsa->dmq1 || dmq1) &&
+	      (prsa->iqmp || iqmp) ))
+		return 0;
+
+	replace_bn_nn(&prsa->dmp1, dmp1);
+	replace_bn_nn(&prsa->dmq1, dmq1);
+	replace_bn_nn(&prsa->iqmp, iqmp);
+	
+	return 1;
+}
+
+/* --------------------------------------------------------------------
+ * set/get DSA signature parameters
+ */
+void
+sslshim_DSA_SIG_get0(
+	const DSA_SIG *	psig,
+	const BIGNUM **	pr,
+	const BIGNUM **	ps
+	)
+{
+	REQUIRE(psig != NULL);
+
+	if (pr != NULL)
+		*pr = psig->r;
+	if (ps != NULL)
+		*ps = psig->s;
+}
+
+int
+sslshim_DSA_SIG_set0(
+	DSA_SIG *	psig,
+	BIGNUM *	r,
+	BIGNUM *	s
+	)
+{
+	REQUIRE(psig != NULL);
+	if (!(r && s))
+		return 0;
+
+	replace_bn_nn(&psig->r, r);
+	replace_bn_nn(&psig->s, s);
+	
+	return 1;
+}
+
+/* --------------------------------------------------------------------
+ * get/set DSA parameters
+ */
+void
+sslshim_DSA_get0_pqg(
+	const DSA *	pdsa,
+	const BIGNUM **	pp,
+	const BIGNUM **	pq,
+	const BIGNUM **	pg
+	)
+{
+	REQUIRE(pdsa != NULL);
+
+	if (pp != NULL)
+		*pp = pdsa->p;
+	if (pq != NULL)
+		*pq = pdsa->q;
+	if (pg != NULL)
+		*pg = pdsa->g;
+}
+
+int
+sslshim_DSA_set0_pqg(
+	DSA *		pdsa,
+	BIGNUM *	p,
+	BIGNUM *	q,
+	BIGNUM *	g
+	)
+{
+	if (!((pdsa->p || p) && (pdsa->q || q) && (pdsa->g || g)))
+		return 0;
+
+	replace_bn_nn(&pdsa->p, p);
+	replace_bn_nn(&pdsa->q, q);
+	replace_bn_nn(&pdsa->g, g);
+
+	return 1;
+}
+
+void
+sslshim_DSA_get0_key(
+	const DSA *	pdsa,
+	const BIGNUM **	ppub_key,
+	const BIGNUM **	ppriv_key
+	)
+{
+	REQUIRE(pdsa != NULL);
+
+	if (ppub_key != NULL)
+		*ppub_key = pdsa->pub_key;
+	if (ppriv_key != NULL)
+		*ppriv_key = pdsa->priv_key;
+}
+
+int
+sslshim_DSA_set0_key(
+	DSA *		pdsa,
+	BIGNUM *	pub_key,
+	BIGNUM *	priv_key
+	)
+{
+	REQUIRE(pdsa != NULL);
+	if (!(pdsa->pub_key || pub_key))
+		return 0;
+
+	replace_bn_nn(&pdsa->pub_key, pub_key);
+	replace_bn_nn(&pdsa->priv_key, priv_key);
+
+	return 1;
+}
+
+int
+sslshim_X509_get_signature_nid(
+	const X509 *x
+	)
+{
+	return OBJ_obj2nid(x->sig_alg->algorithm);
+}
+
+/* ----------------------------------------------------------------- */
+#else /* OPENSSL_VERSION_NUMBER >= v1.1.0 */
+/* ----------------------------------------------------------------- */
+
+NONEMPTY_TRANSLATION_UNIT
+
+/* ----------------------------------------------------------------- */
+#endif
+/* ----------------------------------------------------------------- */

 属性改变: contrib/ntp/libntp/libssl_compat.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: contrib/ntp/libntp/ntp_calendar.c
===================================================================
--- contrib/ntp/libntp/ntp_calendar.c	(版本 309693)
+++ contrib/ntp/libntp/ntp_calendar.c	(版本 310419)
@@ -91,7 +91,7 @@
 /*
  *---------------------------------------------------------------------
  * replacing the 'time()' function
- * --------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 
 static systime_func_ptr systime_func = &time;
@@ -395,7 +395,7 @@
 /*
  *---------------------------------------------------------------------
  * basic calendar stuff
- * --------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 
 /* month table for a year starting with March,1st */
@@ -443,11 +443,11 @@
  */
 
 /*
- * ==================================================================
+ * ====================================================================
  *
  * General algorithmic stuff
  *
- * ==================================================================
+ * ====================================================================
  */
 
 /*
@@ -495,7 +495,7 @@
  * 32/16bit divisions and is still performant is a bit more
  * difficult. Since most usecases can be coded in a way that does only
  * require the 32-bit version a 64bit version is NOT provided here.
- * ---------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 int32_t
 ntpcal_periodic_extend(
@@ -542,8 +542,35 @@
 	return pivot;
 }
 
+/*---------------------------------------------------------------------
+ * Note to the casual reader
+ *
+ * In the next two functions you will find (or would have found...)
+ * the expression
+ *
+ *   res.Q_s -= 0x80000000;
+ *
+ * There was some ruckus about a possible programming error due to
+ * integer overflow and sign propagation.
+ *
+ * This assumption is based on a lack of understanding of the C
+ * standard. (Though this is admittedly not one of the most 'natural'
+ * aspects of the 'C' language and easily to get wrong.)
+ *
+ * see 
+ *	http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
+ *	"ISO/IEC 9899:201x Committee Draft — April 12, 2011"
+ *	6.4.4.1 Integer constants, clause 5
+ *
+ * why there is no sign extension/overflow problem here.
+ *
+ * But to ease the minds of the doubtful, I added back the 'u' qualifiers
+ * that somehow got lost over the last years. 
+ */
+
+
 /*
- *-------------------------------------------------------------------
+ *---------------------------------------------------------------------
  * Convert a timestamp in NTP scale to a 64bit seconds value in the UN*X
  * scale with proper epoch unfolding around a given pivot or the current
  * system time. This function happily accepts negative pivot values as
@@ -553,7 +580,7 @@
  * This is also a periodic extension, but since the cycle is 2^32 and
  * the shift is 2^31, we can do some *very* fast math without explicit
  * divisions.
- *-------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 vint64
 ntpcal_ntp_to_time(
@@ -568,7 +595,7 @@
 	res.q_s = (pivot != NULL)
 		      ? *pivot
 		      : now();
-	res.Q_s -= 0x80000000;		/* unshift of half range */
+	res.Q_s -= 0x80000000u;		/* unshift of half range */
 	ntp	-= (uint32_t)JAN_1970;	/* warp into UN*X domain */
 	ntp	-= res.D_s.lo;		/* cycle difference	 */
 	res.Q_s += (uint64_t)ntp;	/* get expanded time	 */
@@ -581,7 +608,7 @@
 		  ? *pivot
 		  : now();
 	res = time_to_vint64(&tmp);
-	M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000);
+	M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000u);
 	ntp -= (uint32_t)JAN_1970;	/* warp into UN*X domain */
 	ntp -= res.D_s.lo;		/* cycle difference	 */
 	M_ADD(res.D_s.hi, res.D_s.lo, 0, ntp);
@@ -592,7 +619,7 @@
 }
 
 /*
- *-------------------------------------------------------------------
+ *---------------------------------------------------------------------
  * Convert a timestamp in NTP scale to a 64bit seconds value in the NTP
  * scale with proper epoch unfolding around a given pivot or the current
  * system time.
@@ -602,7 +629,7 @@
  * This is also a periodic extension, but since the cycle is 2^32 and
  * the shift is 2^31, we can do some *very* fast math without explicit
  * divisions.
- *-------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 vint64
 ntpcal_ntp_to_ntp(
@@ -617,7 +644,7 @@
 	res.q_s = (pivot)
 		      ? *pivot
 		      : now();
-	res.Q_s -= 0x80000000;		/* unshift of half range */
+	res.Q_s -= 0x80000000u;		/* unshift of half range */
 	res.Q_s += (uint32_t)JAN_1970;	/* warp into NTP domain	 */
 	ntp	-= res.D_s.lo;		/* cycle difference	 */
 	res.Q_s += (uint64_t)ntp;	/* get expanded time	 */
@@ -642,20 +669,20 @@
 
 
 /*
- * ==================================================================
+ * ====================================================================
  *
  * Splitting values to composite entities
  *
- * ==================================================================
+ * ====================================================================
  */
 
 /*
- *-------------------------------------------------------------------
+ *---------------------------------------------------------------------
  * Split a 64bit seconds value into elapsed days in 'res.hi' and
  * elapsed seconds since midnight in 'res.lo' using explicit floor
  * division. This function happily accepts negative time values as
  * timestamps before the respective epoch start.
- * -------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 ntpcal_split
 ntpcal_daysplit(
@@ -736,11 +763,11 @@
 }
 
 /*
- *-------------------------------------------------------------------
+ *---------------------------------------------------------------------
  * Split a 32bit seconds value into h/m/s and excessive days.  This
  * function happily accepts negative time values as timestamps before
  * midnight.
- * -------------------------------------------------------------------
+ *---------------------------------------------------------------------
  */
 static int32_t
 priv_timesplit(
@@ -773,7 +800,7 @@
 }
 
 /*
- * ---------------------------------------------------------------------
+ *---------------------------------------------------------------------
  * Given the number of elapsed days in the calendar era, split this
  * number into the number of elapsed years in 'res.hi' and the number
  * of elapsed days of that year in 'res.lo'.
@@ -1053,11 +1080,11 @@
 
 
 /*
- * ==================================================================
+ * ====================================================================
  *
  * merging composite entities
  *
- * ==================================================================
+ * ====================================================================
  */
 
 /*
@@ -1251,8 +1278,8 @@
  * Convert ELAPSED years/months/days of gregorian calendar to elapsed
  * days in year.
  *
- * Note: This will give the true difference to the start of the given year,
- * even if months & days are off-scale.
+ * Note: This will give the true difference to the start of the given
+ * year, even if months & days are off-scale.
  *---------------------------------------------------------------------
  */
 int32_t
@@ -1434,11 +1461,11 @@
 
 
 /*
- * ==================================================================
+ * ====================================================================
  *
  * extended and unchecked variants of caljulian/caltontp
  *
- * ==================================================================
+ * ====================================================================
  */
 int
 ntpcal_ntp64_to_date(
@@ -1500,11 +1527,11 @@
 
 
 /*
- * ==================================================================
+ * ====================================================================
  *
  * day-of-week calculations
  *
- * ==================================================================
+ * ====================================================================
  */
 /*
  * Given a RataDie and a day-of-week, calculate a RDN that is reater-than,
@@ -1557,7 +1584,7 @@
 }
 
 /*
- * ==================================================================
+ * ====================================================================
  *
  * ISO week-calendar conversions
  *
@@ -1601,7 +1628,7 @@
  * smallest possible powers of two, so the division can be implemented
  * as shifts if the optimiser chooses to do so.
  *
- * ==================================================================
+ * ====================================================================
  */
 
 /*
Index: contrib/ntp/libntp/ntp_intres.c
===================================================================
--- contrib/ntp/libntp/ntp_intres.c	(版本 309693)
+++ contrib/ntp/libntp/ntp_intres.c	(版本 310419)
@@ -118,6 +118,7 @@
  * is managed by the code which calls the *_complete routines.
  */
 
+
 /* === typedefs === */
 typedef struct blocking_gai_req_tag {	/* marshalled args */
 	size_t			octets;
@@ -124,8 +125,9 @@
 	u_int			dns_idx;
 	time_t			scheduled;
 	time_t			earliest;
+	int			retry;
 	struct addrinfo		hints;
-	int			retry;
+	u_int			qflags;
 	gai_sometime_callback	callback;
 	void *			context;
 	size_t			nodesize;
@@ -205,8 +207,8 @@
 static	void		scheduled_sleep(time_t, time_t,
 					dnsworker_ctx *);
 static	void		manage_dns_retry_interval(time_t *, time_t *,
-						  int *,
-						  time_t *);
+						  int *, time_t *,
+						  int/*BOOL*/);
 static	int		should_retry_dns(int, int);
 #ifdef HAVE_RES_INIT
 static	void		reload_resolv_conf(dnsworker_ctx *);
@@ -230,13 +232,14 @@
  *			  invokes provided callback completion function.
  */
 int
-getaddrinfo_sometime(
+getaddrinfo_sometime_ex(
 	const char *		node,
 	const char *		service,
 	const struct addrinfo *	hints,
 	int			retry,
 	gai_sometime_callback	callback,
-	void *			context
+	void *			context,
+	u_int			qflags
 	)
 {
 	blocking_gai_req *	gai_req;
@@ -277,6 +280,7 @@
 	gai_req->context = context;
 	gai_req->nodesize = nodesize;
 	gai_req->servsize = servsize;
+	gai_req->qflags = qflags;
 
 	memcpy((char *)gai_req + sizeof(*gai_req), node, nodesize);
 	memcpy((char *)gai_req + sizeof(*gai_req) + nodesize, service,
@@ -451,7 +455,21 @@
 	return 0;
 }
 
+int
+getaddrinfo_sometime(
+	const char *		node,
+	const char *		service,
+	const struct addrinfo *	hints,
+	int			retry,
+	gai_sometime_callback	callback,
+	void *			context
+	)
+{
+	return getaddrinfo_sometime_ex(node, service, hints, retry,
+				       callback, context, 0);
+}
 
+
 static void
 getaddrinfo_sometime_complete(
 	blocking_work_req	rtype,
@@ -470,7 +488,7 @@
 	char *			service;
 	char *			canon_start;
 	time_t			time_now;
-	int			again;
+	int			again, noerr;
 	int			af;
 	const char *		fam_spec;
 	int			i;
@@ -498,8 +516,9 @@
 				  gai_req->dns_idx, humantime(time_now)));
 		}
 	} else {
-		again = should_retry_dns(gai_resp->retcode,
-					 gai_resp->gai_errno);
+		noerr = !!(gai_req->qflags & GAIR_F_IGNDNSERR);
+		again = noerr || should_retry_dns(
+					gai_resp->retcode, gai_resp->gai_errno);
 		/*
 		 * exponential backoff of DNS retries to 64s
 		 */
@@ -528,9 +547,10 @@
 							gai_strerror(gai_resp->retcode),
 							gai_resp->retcode);
 				}
-			manage_dns_retry_interval(&gai_req->scheduled,
-			    &gai_req->earliest, &gai_req->retry,
-			    &child_ctx->next_dns_timeslot);
+			manage_dns_retry_interval(
+				&gai_req->scheduled, &gai_req->earliest,
+				&gai_req->retry, &child_ctx->next_dns_timeslot,
+				noerr);
 			if (!queue_blocking_request(
 					BLOCKING_GETADDRINFO,
 					gai_req,
@@ -826,7 +846,7 @@
 		if (gni_req->retry > 0)
 			manage_dns_retry_interval(&gni_req->scheduled,
 			    &gni_req->earliest, &gni_req->retry,
-			    &child_ctx->next_dns_timeslot);
+						  &child_ctx->next_dns_timeslot, FALSE);
 
 		if (gni_req->retry > 0 && again) {
 			if (!queue_blocking_request(
@@ -1033,19 +1053,33 @@
 	time_t *	pscheduled,
 	time_t *	pwhen,
 	int *		pretry,
-	time_t *	pnext_timeslot
+	time_t *	pnext_timeslot,
+	int		forever
 	)
 {
 	time_t	now;
 	time_t	when;
 	int	retry;
+	int	retmax;
 		
 	now = time(NULL);
 	retry = *pretry;
 	when = max(now + retry, *pnext_timeslot);
 	*pnext_timeslot = when;
-	retry = min(64, retry << 1);
 
+	/* this exponential backoff is slower than doubling up: The
+	 * sequence goes 2-3-4-6-8-12-16-24-32... and the upper limit is
+	 * 64 seconds for things that should not repeat forever, and
+	 * 1024 when repeated forever.
+	 */
+	retmax = forever ? 1024 : 64;
+	retry <<= 1;
+	if (retry & (retry - 1))
+		retry &= (retry - 1);
+	else
+		retry -= (retry >> 2);
+	retry = min(retmax, retry);
+
 	*pscheduled = now;
 	*pwhen = when;
 	*pretry = retry;
Index: contrib/ntp/libntp/ssl_init.c
===================================================================
--- contrib/ntp/libntp/ssl_init.c	(版本 309693)
+++ contrib/ntp/libntp/ssl_init.c	(版本 310419)
@@ -15,6 +15,7 @@
 #ifdef OPENSSL
 #include "openssl/err.h"
 #include "openssl/evp.h"
+#include "libssl_compat.h"
 
 void	atexit_ssl_cleanup(void);
 
@@ -62,6 +63,7 @@
 
 	INIT_SSL();
 }
+
 #endif	/* OPENSSL */
 
 
@@ -84,7 +86,6 @@
 	u_char		digest[EVP_MAX_MD_SIZE];
 	char *		upcased;
 	char *		pch;
-	EVP_MD_CTX	ctx;
 
 	/*
 	 * OpenSSL digest short names are capitalized, so uppercase the
@@ -110,8 +111,12 @@
 
 	if (NULL != pdigest_len) {
 #ifdef OPENSSL
-		EVP_DigestInit(&ctx, EVP_get_digestbynid(key_type));
-		EVP_DigestFinal(&ctx, digest, &digest_len);
+		EVP_MD_CTX	*ctx;
+
+		ctx = EVP_MD_CTX_new();
+		EVP_DigestInit(ctx, EVP_get_digestbynid(key_type));
+		EVP_DigestFinal(ctx, digest, &digest_len);
+		EVP_MD_CTX_free(ctx);
 		if (digest_len > max_digest_len) {
 			fprintf(stderr,
 				"key type %s %u octet digests are too big, max %lu\n",
Index: contrib/ntp/libntp/work_fork.c
===================================================================
--- contrib/ntp/libntp/work_fork.c	(版本 309693)
+++ contrib/ntp/libntp/work_fork.c	(版本 310419)
@@ -114,6 +114,11 @@
 
 /*
  * harvest_child_status() runs in the parent.
+ *
+ * Note the error handling -- this is an interaction with SIGCHLD.
+ * SIG_IGN on SIGCHLD on some OSes means do not wait but reap
+ * automatically. Since we're not really interested in the result code,
+ * we simply ignore the error.
  */
 static void
 harvest_child_status(
@@ -120,12 +125,13 @@
 	blocking_child *	c
 	)
 {
-	if (c->pid)
-	{
+	if (c->pid) {
 		/* Wait on the child so it can finish terminating */
 		if (waitpid(c->pid, NULL, 0) == c->pid)
 			TRACE(4, ("harvested child %d\n", c->pid));
-		else msyslog(LOG_ERR, "error waiting on child %d: %m", c->pid);
+		else if (errno != ECHILD)
+			msyslog(LOG_ERR, "error waiting on child %d: %m", c->pid);
+		c->pid = 0;
 	}
 }
 
@@ -162,7 +168,6 @@
 		close(c->resp_read_pipe);
 		c->resp_read_pipe = -1;
 	}
-	c->pid = 0;
 	c->resp_read_ctx = NULL;
 	DEBUG_INSIST(-1 == c->req_read_pipe);
 	DEBUG_INSIST(-1 == c->resp_write_pipe);
@@ -461,7 +466,10 @@
 	fflush(stdout);
 	fflush(stderr);
 
-	signal_no_reset(SIGCHLD, SIG_IGN);
+	/* [BUG 3050] setting SIGCHLD to SIG_IGN likely causes unwanted
+	 * or undefined effects. We don't do it and leave SIGCHLD alone.
+	 */
+	/* signal_no_reset(SIGCHLD, SIG_IGN); */
 
 	childpid = fork();
 	if (-1 == childpid) {
Index: contrib/ntp/libparse/clk_hopf6021.c
===================================================================
--- contrib/ntp/libparse/clk_hopf6021.c	(版本 309693)
+++ contrib/ntp/libparse/clk_hopf6021.c	(版本 310419)
@@ -113,13 +113,10 @@
 
 #define OFFS(x) format->field_offsets[(x)].offset
 #define STOI(x, y) Stoi(&buffer[OFFS(x)], y, format->field_offsets[(x)].length)
-#define hexval(x) (('0' <= (x) && (x) <= '9') ? (x) - '0' : \
-		   ('a' <= (x) && (x) <= 'f') ? (x) - 'a' + 10 : \
-		   ('A' <= (x) && (x) <= 'F') ? (x) - 'A' + 10 : \
-		   -1)
 
 static parse_cvt_fnc_t cvt_hopf6021;
 static parse_inp_fnc_t inp_hopf6021;
+static unsigned char   hexval(unsigned char);
 
 clockformat_t clock_hopf6021 =
 {
@@ -160,11 +157,11 @@
 		return CVT_FAIL|CVT_BADFMT;
 	}
 
-	clock_time->usecond   = 0;
-	clock_time->utcoffset = 0;
+	clock_time->usecond = 0;
+	clock_time->flags   = 0;
 
-	status = (u_char) hexval(buffer[OFFS(O_FLAGS)]);
-	weekday= (u_char) hexval(buffer[OFFS(O_WDAY)]);
+	status  = hexval(buffer[OFFS(O_FLAGS)]);
+	weekday = hexval(buffer[OFFS(O_WDAY)]);
 
 	if ((status == 0xFF) || (weekday == 0xFF))
 	{
@@ -171,29 +168,29 @@
 		return CVT_FAIL|CVT_BADFMT;
 	}
 
-	clock_time->flags  = 0;
-
 	if (weekday & HOPF_UTC)
 	{
-		clock_time->flags |= PARSEB_UTC;
+		clock_time->flags     |= PARSEB_UTC;
+		clock_time->utcoffset  = 0;
 	}
+	else if (status & HOPF_DST)
+	{
+		clock_time->flags     |= PARSEB_DST;
+		clock_time->utcoffset  = -2*60*60; /* MET DST */
+	}
 	else
 	{
-		if (status & HOPF_DST)
-		{
-			clock_time->flags     |= PARSEB_DST;
-			clock_time->utcoffset  = -2*60*60; /* MET DST */
-		}
-		else
-		{
-			clock_time->utcoffset  = -1*60*60; /* MET */
-		}
+		clock_time->utcoffset  = -1*60*60; /* MET */
 	}
 
-	clock_time->flags |= (status & HOPF_DSTWARN)  ? PARSEB_ANNOUNCE : 0;
-
+	if (status & HOPF_DSTWARN)
+	{
+		clock_time->flags |= PARSEB_ANNOUNCE;
+	}
+	
 	switch (status & HOPF_MODE)
 	{
+	    default:	/* dummy: we cover all 4 cases. */
 	    case HOPF_INVALID:  /* Time/Date invalid */
 		clock_time->flags |= PARSEB_POWERUP;
 		break;
@@ -205,9 +202,6 @@
 	    case HOPF_RADIO:    /* Radio clock */
 	    case HOPF_RADIOHP:  /* Radio clock high precision */
 		break;
-
-	    default:
-		return CVT_FAIL|CVT_BADFMT;
 	}
 
 	return CVT_OK;
@@ -244,6 +238,30 @@
 	}
 }
 
+/*
+ * convert a hex-digit to numeric value
+ */
+static unsigned char
+hexval(
+	unsigned char ch
+	)
+{
+	unsigned int dv;
+	
+	if ((dv = ch - '0') >= 10u)
+	{
+		if ((dv -= 'A'-'0') < 6u || (dv -= 'a'-'A') < 6u)
+		{
+			dv += 10;
+		}
+		else
+		{
+			dv = 0xFF;
+		}
+	}
+	return (unsigned char)dv;
+}
+
 #else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_HOPF6021) */
 int clk_hopf6021_bs;
 #endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_HOPF6021) */
Index: contrib/ntp/ntpd/complete.conf.in
===================================================================
--- contrib/ntp/ntpd/complete.conf.in	(版本 309693)
+++ contrib/ntp/ntpd/complete.conf.in	(版本 310419)
@@ -26,7 +26,7 @@
 requestkey 12
 enable auth ntp monitor stats
 disable bclient calibrate kernel mode7 peer_clear_digest_early unpeer_crypto_early unpeer_crypto_nak_early unpeer_digest_early
-tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300
+tos beacon 3600 ceiling 16 cohort 0 floor 1 maxclock 10 maxdist 1.5 minclock 3 mindist 0.001 minsane 1 orphan 16 orphanwait 300 bcpollbstep 3
 rlimit@HAVE_RLIMIT_MEMLOCK@@HAVE_RLIMIT_STACK@
 tinker allan 1500 dispersion 15 freq 0 huffpuff 7200 panic 1000 step 0.128 stepout 900 tick 0.01
 broadcastclient
Index: contrib/ntp/ntpd/invoke-ntp.keys.texi
===================================================================
--- contrib/ntp/ntpd/invoke-ntp.keys.texi	(版本 309693)
+++ contrib/ntp/ntpd/invoke-ntp.keys.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntp.keys.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:36:10 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:01:58 AM by AutoGen 5.18.5
 # From the definitions    ntp.keys.def
 # and the template file   agtexi-file.tpl
 @end ignore
Index: contrib/ntp/ntpd/keyword-gen-utd
===================================================================
--- contrib/ntp/ntpd/keyword-gen-utd	(版本 309693)
+++ contrib/ntp/ntpd/keyword-gen-utd	(版本 310419)
@@ -1 +1 @@
- *	 Generated 2016-05-19 06:35:34 UTC	  diff_ignore_line
+ *	 Generated 2016-11-09 11:39:28 UTC	  diff_ignore_line
Index: contrib/ntp/ntpd/ntp.conf.5man
===================================================================
--- contrib/ntp/ntpd/ntp.conf.5man	(版本 309693)
+++ contrib/ntp/ntpd/ntp.conf.5man	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp.conf 5man "02 Jun 2016" "4.2.8p8" "File Formats"
+.TH ntp.conf 5man "21 Nov 2016" "4.2.8p9" "File Formats"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OzaOIT/ag-3zaGHT)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Q_ai3f/ag-2_aa2f)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:35:50 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:01:41 AM by AutoGen 5.18.5
 .\" From the definitions ntp.conf.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
@@ -2174,7 +2174,23 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+.SS Broadcast Options
+.TP 7
+.NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]bcpollbstep\f[] \f\*[I-Font]gate\f[]]
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 .SS Manycast Options
+.RS
 .TP 7
 .NOP \f\*[B-Font]tos\f[] [\f\*[B-Font]ceiling\f[] \f\*[I-Font]ceiling\f[] | \f\*[B-Font]cohort\f[] { \f\*[B-Font]0\f[] | \f\*[B-Font]1\f[] } | \f\*[B-Font]floor\f[] \f\*[I-Font]floor\f[] | \f\*[B-Font]minclock\f[] \f\*[I-Font]minclock\f[] | \f\*[B-Font]minsane\f[] \f\*[I-Font]minsane\f[]]
 This command affects the clock selection and clustering
@@ -2244,7 +2260,7 @@
 in an expanding-ring search.
 The default is eight
 multiples of 32 starting at 31.
-.PP
+.RE
 .SH Reference Clock Support
 The NTP Version 4 daemon supports some three dozen different radio,
 satellite and modem reference clocks plus a special pseudo-clock
@@ -2411,6 +2427,7 @@
 Except where noted,
 these options apply to all clock drivers.
 .SS Reference Clock Commands
+.RS
 .TP 7
 .NOP \f\*[B-Font]server\f[] \f[C]127.127.\f[]\f\*[I-Font]t\f[].\f\*[I-Font]u\f[] [\f\*[B-Font]prefer\f[]] [\f\*[B-Font]mode\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]minpoll\f[] \f\*[I-Font]int\f[]] [\f\*[B-Font]maxpoll\f[] \f\*[I-Font]int\f[]]
 This command can be used to configure reference clocks in
@@ -2559,8 +2576,9 @@
 command can be found in
 \fIMonitoring\f[] \fIOptions\f[].
 .RE
-.PP
+.RE
 .SH Miscellaneous Options
+.RS
 .TP 7
 .NOP \f\*[B-Font]broadcastdelay\f[] \f\*[I-Font]seconds\f[]
 The broadcast and multicast modes require a special calibration
@@ -3079,8 +3097,9 @@
 an expanding-ring search.
 The default is eight multiples of 32 starting at
 31.
-.PP
+.RE
 .SH "OPTIONS"
+.RS
 .TP
 .NOP \f\*[B-Font]\-\-help\f[]
 Display usage information and exit.
@@ -3092,7 +3111,7 @@
 Output version of program and exit.  The default mode is `v', a simple
 version.  The `c' mode will print copyright information and `n' will
 print the full copyright notice.
-.PP
+.RE
 .SH "OPTION PRESETS"
 Any option that is not marked as \fInot presettable\fP may be preset
 by loading values from environment variables named:
@@ -3103,6 +3122,7 @@
 .SH "ENVIRONMENT"
 See \fBOPTION PRESETS\fP for configuration environment variables.
 .SH FILES
+.RS
 .TP 15
 .NOP \fI/etc/ntp.conf\f[]
 the default name of the configuration file
@@ -3126,9 +3146,10 @@
 .TP 15
 .NOP \fIntp_dh\f[]
 Diffie-Hellman agreement parameters
-.PP
+.RE
 .SH "EXIT STATUS"
 One of the following exit values will be returned:
+.RS
 .TP
 .NOP 0 " (EXIT_SUCCESS)"
 Successful program execution.
@@ -3139,7 +3160,7 @@
 .NOP 70 " (EX_SOFTWARE)"
 libopts had an internal operational error.  Please report
 it to autogen-users@lists.sourceforge.net.  Thank you.
-.PP
+.RE
 .SH "SEE ALSO"
 \fCntpd\f[]\fR(1ntpdmdoc)\f[],
 \fCntpdc\f[]\fR(1ntpdcmdoc)\f[],
Index: contrib/ntp/ntpd/ntp.conf.def
===================================================================
--- contrib/ntp/ntpd/ntp.conf.def	(版本 309693)
+++ contrib/ntp/ntpd/ntp.conf.def	(版本 310419)
@@ -1997,6 +1997,25 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+.Ss Broadcast Options
+.Bl -tag -width indent
+.It Xo Ic tos
+.Oo
+.Cm bcpollbstep Ar gate
+.Oc
+.Xc
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 .Ss Manycast Options
 .Bl -tag -width indent
 .It Xo Ic tos
Index: contrib/ntp/ntpd/ntp.conf.mdoc.in
===================================================================
--- contrib/ntp/ntpd/ntp.conf.mdoc.in	(版本 309693)
+++ contrib/ntp/ntpd/ntp.conf.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_CONF 5 File Formats
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:16 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:03 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.conf.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -1995,6 +1995,25 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+.Ss Broadcast Options
+.Bl -tag -width indent
+.It Xo Ic tos
+.Oo
+.Cm bcpollbstep Ar gate
+.Oc
+.Xc
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 .Ss Manycast Options
 .Bl -tag -width indent
 .It Xo Ic tos
Index: contrib/ntp/ntpd/ntp.keys.html
===================================================================
--- contrib/ntp/ntpd/ntp.keys.html	(版本 309693)
+++ contrib/ntp/ntpd/ntp.keys.html	(版本 310419)
@@ -33,7 +33,7 @@
 <p>This document describes the symmetric key file for the NTP Project's
 <code>ntpd</code> program.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntp.keys</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntp.keys</code>.
 
   <div class="shortcontents">
 <h2>Short Contents</h2>
Index: contrib/ntp/ntpd/ntp_config.c
===================================================================
--- contrib/ntp/ntpd/ntp_config.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_config.c	(版本 310419)
@@ -53,6 +53,12 @@
 #include "ntp_parser.h"
 #include "ntpd-opts.h"
 
+#ifndef IGNORE_DNS_ERRORS
+# define DNSFLAGS 0
+#else
+# define DNSFLAGS GAIR_F_IGNDNSERR
+#endif
+
 extern int yyparse(void);
 
 /* Bug 2817 */
@@ -2002,6 +2008,21 @@
 			INSIST(0);
 			break;
 
+		case T_Bcpollbstep:
+			if (val > 4) {
+				msyslog(LOG_WARNING,
+					"Using maximum bcpollbstep ceiling %d, %g requested",
+					4, val);
+				val = 4;
+			} else if (val < 0) {
+				msyslog(LOG_WARNING,
+					"Using minimum bcpollbstep floor %d, %g requested",
+					0, val);
+				val = 0;
+			}
+			item = PROTO_BCPOLLBSTEP;
+			break;
+
 		case T_Ceiling:
 			if (val > STRATUM_UNSPEC - 1) {
 				msyslog(LOG_WARNING,
@@ -3813,11 +3834,11 @@
 			hints.ai_socktype = SOCK_DGRAM;
 			hints.ai_protocol = IPPROTO_UDP;
 
-			getaddrinfo_sometime(*cmdline_servers,
+			getaddrinfo_sometime_ex(*cmdline_servers,
 					     "ntp", &hints,
 					     INITIAL_DNS_RETRY,
 					     &peer_name_resolved,
-					     (void *)ctx);
+					     (void *)ctx, DNSFLAGS);
 # else	/* !WORKER follows */
 			msyslog(LOG_ERR,
 				"hostname %s can not be used, please use IP address instead.",
@@ -3891,10 +3912,11 @@
 			hints.ai_socktype = SOCK_DGRAM;
 			hints.ai_protocol = IPPROTO_UDP;
 
-			getaddrinfo_sometime(curr_peer->addr->address,
+			getaddrinfo_sometime_ex(curr_peer->addr->address,
 					     "ntp", &hints,
 					     INITIAL_DNS_RETRY,
-					     &peer_name_resolved, ctx);
+					     &peer_name_resolved, ctx,
+					     DNSFLAGS);
 # else	/* !WORKER follows */
 			msyslog(LOG_ERR,
 				"hostname %s can not be used, please use IP address instead.",
@@ -3935,16 +3957,10 @@
 	DPRINTF(1, ("peer_name_resolved(%s) rescode %d\n", name, rescode));
 
 	if (rescode) {
-#ifndef IGNORE_DNS_ERRORS
 		free(ctx);
 		msyslog(LOG_ERR,
 			"giving up resolving host %s: %s (%d)",
 			name, gai_strerror(rescode), rescode);
-#else	/* IGNORE_DNS_ERRORS follows */
-		getaddrinfo_sometime(name, service, hints,
-				     INITIAL_DNS_RETRY,
-				     &peer_name_resolved, context);
-#endif
 		return;
 	}
 
Index: contrib/ntp/ntpd/ntp_keyword.h
===================================================================
--- contrib/ntp/ntpd/ntp_keyword.h	(版本 309693)
+++ contrib/ntp/ntpd/ntp_keyword.h	(版本 310419)
@@ -2,7 +2,7 @@
  * ntp_keyword.h
  * 
  * NOTE: edit this file with caution, it is generated by keyword-gen.c
- *	 Generated 2016-05-19 06:35:34 UTC	  diff_ignore_line
+ *	 Generated 2016-11-09 11:39:28 UTC	  diff_ignore_line
  *
  */
 #include "ntp_scanner.h"
@@ -10,7 +10,7 @@
 
 #define LOWEST_KEYWORD_ID 258
 
-const char * const keyword_text[195] = {
+const char * const keyword_text[196] = {
 	/* 0       258             T_Abbrev */	"abbrev",
 	/* 1       259                T_Age */	"age",
 	/* 2       260                T_All */	"all",
@@ -21,201 +21,202 @@
 	/* 7       265            T_Automax */	"automax",
 	/* 8       266            T_Average */	"average",
 	/* 9       267            T_Bclient */	"bclient",
-	/* 10      268             T_Beacon */	"beacon",
-	/* 11      269          T_Broadcast */	"broadcast",
-	/* 12      270    T_Broadcastclient */	"broadcastclient",
-	/* 13      271     T_Broadcastdelay */	"broadcastdelay",
-	/* 14      272              T_Burst */	"burst",
-	/* 15      273          T_Calibrate */	"calibrate",
-	/* 16      274            T_Ceiling */	"ceiling",
-	/* 17      275         T_Clockstats */	"clockstats",
-	/* 18      276             T_Cohort */	"cohort",
-	/* 19      277         T_ControlKey */	"controlkey",
-	/* 20      278             T_Crypto */	"crypto",
-	/* 21      279        T_Cryptostats */	"cryptostats",
-	/* 22      280                T_Ctl */	"ctl",
-	/* 23      281                T_Day */	"day",
-	/* 24      282            T_Default */	"default",
-	/* 25      283             T_Digest */	"digest",
-	/* 26      284            T_Disable */	"disable",
-	/* 27      285            T_Discard */	"discard",
-	/* 28      286         T_Dispersion */	"dispersion",
-	/* 29      287             T_Double */	NULL,
-	/* 30      288          T_Driftfile */	"driftfile",
-	/* 31      289               T_Drop */	"drop",
-	/* 32      290               T_Dscp */	"dscp",
-	/* 33      291           T_Ellipsis */	"...",
-	/* 34      292             T_Enable */	"enable",
-	/* 35      293                T_End */	"end",
-	/* 36      294              T_False */	NULL,
-	/* 37      295               T_File */	"file",
-	/* 38      296            T_Filegen */	"filegen",
-	/* 39      297            T_Filenum */	"filenum",
-	/* 40      298              T_Flag1 */	"flag1",
-	/* 41      299              T_Flag2 */	"flag2",
-	/* 42      300              T_Flag3 */	"flag3",
-	/* 43      301              T_Flag4 */	"flag4",
-	/* 44      302              T_Flake */	"flake",
-	/* 45      303              T_Floor */	"floor",
-	/* 46      304               T_Freq */	"freq",
-	/* 47      305              T_Fudge */	"fudge",
-	/* 48      306               T_Host */	"host",
-	/* 49      307           T_Huffpuff */	"huffpuff",
-	/* 50      308             T_Iburst */	"iburst",
-	/* 51      309              T_Ident */	"ident",
-	/* 52      310             T_Ignore */	"ignore",
-	/* 53      311           T_Incalloc */	"incalloc",
-	/* 54      312             T_Incmem */	"incmem",
-	/* 55      313          T_Initalloc */	"initalloc",
-	/* 56      314            T_Initmem */	"initmem",
-	/* 57      315        T_Includefile */	"includefile",
-	/* 58      316            T_Integer */	NULL,
-	/* 59      317          T_Interface */	"interface",
-	/* 60      318           T_Intrange */	NULL,
-	/* 61      319                 T_Io */	"io",
-	/* 62      320               T_Ipv4 */	"ipv4",
-	/* 63      321          T_Ipv4_flag */	"-4",
-	/* 64      322               T_Ipv6 */	"ipv6",
-	/* 65      323          T_Ipv6_flag */	"-6",
-	/* 66      324             T_Kernel */	"kernel",
-	/* 67      325                T_Key */	"key",
-	/* 68      326               T_Keys */	"keys",
-	/* 69      327            T_Keysdir */	"keysdir",
-	/* 70      328                T_Kod */	"kod",
-	/* 71      329             T_Mssntp */	"mssntp",
-	/* 72      330           T_Leapfile */	"leapfile",
-	/* 73      331  T_Leapsmearinterval */	"leapsmearinterval",
-	/* 74      332            T_Limited */	"limited",
-	/* 75      333               T_Link */	"link",
-	/* 76      334             T_Listen */	"listen",
-	/* 77      335          T_Logconfig */	"logconfig",
-	/* 78      336            T_Logfile */	"logfile",
-	/* 79      337          T_Loopstats */	"loopstats",
-	/* 80      338        T_Lowpriotrap */	"lowpriotrap",
-	/* 81      339     T_Manycastclient */	"manycastclient",
-	/* 82      340     T_Manycastserver */	"manycastserver",
-	/* 83      341               T_Mask */	"mask",
-	/* 84      342             T_Maxage */	"maxage",
-	/* 85      343           T_Maxclock */	"maxclock",
-	/* 86      344           T_Maxdepth */	"maxdepth",
-	/* 87      345            T_Maxdist */	"maxdist",
-	/* 88      346             T_Maxmem */	"maxmem",
-	/* 89      347            T_Maxpoll */	"maxpoll",
-	/* 90      348          T_Mdnstries */	"mdnstries",
-	/* 91      349                T_Mem */	"mem",
-	/* 92      350            T_Memlock */	"memlock",
-	/* 93      351           T_Minclock */	"minclock",
-	/* 94      352           T_Mindepth */	"mindepth",
-	/* 95      353            T_Mindist */	"mindist",
-	/* 96      354            T_Minimum */	"minimum",
-	/* 97      355            T_Minpoll */	"minpoll",
-	/* 98      356            T_Minsane */	"minsane",
-	/* 99      357               T_Mode */	"mode",
-	/* 100     358              T_Mode7 */	"mode7",
-	/* 101     359            T_Monitor */	"monitor",
-	/* 102     360              T_Month */	"month",
-	/* 103     361                T_Mru */	"mru",
-	/* 104     362    T_Multicastclient */	"multicastclient",
-	/* 105     363                T_Nic */	"nic",
-	/* 106     364             T_Nolink */	"nolink",
-	/* 107     365           T_Nomodify */	"nomodify",
-	/* 108     366          T_Nomrulist */	"nomrulist",
-	/* 109     367               T_None */	"none",
-	/* 110     368        T_Nonvolatile */	"nonvolatile",
-	/* 111     369             T_Nopeer */	"nopeer",
-	/* 112     370            T_Noquery */	"noquery",
-	/* 113     371           T_Noselect */	"noselect",
-	/* 114     372            T_Noserve */	"noserve",
-	/* 115     373             T_Notrap */	"notrap",
-	/* 116     374            T_Notrust */	"notrust",
-	/* 117     375                T_Ntp */	"ntp",
-	/* 118     376            T_Ntpport */	"ntpport",
-	/* 119     377     T_NtpSignDsocket */	"ntpsigndsocket",
-	/* 120     378             T_Orphan */	"orphan",
-	/* 121     379         T_Orphanwait */	"orphanwait",
-	/* 122     380          T_PCEdigest */	"peer_clear_digest_early",
-	/* 123     381              T_Panic */	"panic",
-	/* 124     382               T_Peer */	"peer",
-	/* 125     383          T_Peerstats */	"peerstats",
-	/* 126     384              T_Phone */	"phone",
-	/* 127     385                T_Pid */	"pid",
-	/* 128     386            T_Pidfile */	"pidfile",
-	/* 129     387               T_Pool */	"pool",
-	/* 130     388               T_Port */	"port",
-	/* 131     389            T_Preempt */	"preempt",
-	/* 132     390             T_Prefer */	"prefer",
-	/* 133     391         T_Protostats */	"protostats",
-	/* 134     392                 T_Pw */	"pw",
-	/* 135     393           T_Randfile */	"randfile",
-	/* 136     394           T_Rawstats */	"rawstats",
-	/* 137     395              T_Refid */	"refid",
-	/* 138     396         T_Requestkey */	"requestkey",
-	/* 139     397              T_Reset */	"reset",
-	/* 140     398           T_Restrict */	"restrict",
-	/* 141     399             T_Revoke */	"revoke",
-	/* 142     400             T_Rlimit */	"rlimit",
-	/* 143     401      T_Saveconfigdir */	"saveconfigdir",
-	/* 144     402             T_Server */	"server",
-	/* 145     403             T_Setvar */	"setvar",
-	/* 146     404             T_Source */	"source",
-	/* 147     405          T_Stacksize */	"stacksize",
-	/* 148     406         T_Statistics */	"statistics",
-	/* 149     407              T_Stats */	"stats",
-	/* 150     408           T_Statsdir */	"statsdir",
-	/* 151     409               T_Step */	"step",
-	/* 152     410           T_Stepback */	"stepback",
-	/* 153     411            T_Stepfwd */	"stepfwd",
-	/* 154     412            T_Stepout */	"stepout",
-	/* 155     413            T_Stratum */	"stratum",
-	/* 156     414             T_String */	NULL,
-	/* 157     415                T_Sys */	"sys",
-	/* 158     416           T_Sysstats */	"sysstats",
-	/* 159     417               T_Tick */	"tick",
-	/* 160     418              T_Time1 */	"time1",
-	/* 161     419              T_Time2 */	"time2",
-	/* 162     420              T_Timer */	"timer",
-	/* 163     421        T_Timingstats */	"timingstats",
-	/* 164     422             T_Tinker */	"tinker",
-	/* 165     423                T_Tos */	"tos",
-	/* 166     424               T_Trap */	"trap",
-	/* 167     425               T_True */	"true",
-	/* 168     426         T_Trustedkey */	"trustedkey",
-	/* 169     427                T_Ttl */	"ttl",
-	/* 170     428               T_Type */	"type",
-	/* 171     429              T_U_int */	NULL,
-	/* 172     430           T_UEcrypto */	"unpeer_crypto_early",
-	/* 173     431        T_UEcryptonak */	"unpeer_crypto_nak_early",
-	/* 174     432           T_UEdigest */	"unpeer_digest_early",
-	/* 175     433           T_Unconfig */	"unconfig",
-	/* 176     434             T_Unpeer */	"unpeer",
-	/* 177     435            T_Version */	"version",
-	/* 178     436    T_WanderThreshold */	NULL,
-	/* 179     437               T_Week */	"week",
-	/* 180     438           T_Wildcard */	"wildcard",
-	/* 181     439             T_Xleave */	"xleave",
-	/* 182     440               T_Year */	"year",
-	/* 183     441               T_Flag */	NULL,
-	/* 184     442                T_EOC */	NULL,
-	/* 185     443           T_Simulate */	"simulate",
-	/* 186     444         T_Beep_Delay */	"beep_delay",
-	/* 187     445       T_Sim_Duration */	"simulation_duration",
-	/* 188     446      T_Server_Offset */	"server_offset",
-	/* 189     447           T_Duration */	"duration",
-	/* 190     448        T_Freq_Offset */	"freq_offset",
-	/* 191     449             T_Wander */	"wander",
-	/* 192     450             T_Jitter */	"jitter",
-	/* 193     451         T_Prop_Delay */	"prop_delay",
-	/* 194     452         T_Proc_Delay */	"proc_delay"
+	/* 10      268        T_Bcpollbstep */	"bcpollbstep",
+	/* 11      269             T_Beacon */	"beacon",
+	/* 12      270          T_Broadcast */	"broadcast",
+	/* 13      271    T_Broadcastclient */	"broadcastclient",
+	/* 14      272     T_Broadcastdelay */	"broadcastdelay",
+	/* 15      273              T_Burst */	"burst",
+	/* 16      274          T_Calibrate */	"calibrate",
+	/* 17      275            T_Ceiling */	"ceiling",
+	/* 18      276         T_Clockstats */	"clockstats",
+	/* 19      277             T_Cohort */	"cohort",
+	/* 20      278         T_ControlKey */	"controlkey",
+	/* 21      279             T_Crypto */	"crypto",
+	/* 22      280        T_Cryptostats */	"cryptostats",
+	/* 23      281                T_Ctl */	"ctl",
+	/* 24      282                T_Day */	"day",
+	/* 25      283            T_Default */	"default",
+	/* 26      284             T_Digest */	"digest",
+	/* 27      285            T_Disable */	"disable",
+	/* 28      286            T_Discard */	"discard",
+	/* 29      287         T_Dispersion */	"dispersion",
+	/* 30      288             T_Double */	NULL,
+	/* 31      289          T_Driftfile */	"driftfile",
+	/* 32      290               T_Drop */	"drop",
+	/* 33      291               T_Dscp */	"dscp",
+	/* 34      292           T_Ellipsis */	"...",
+	/* 35      293             T_Enable */	"enable",
+	/* 36      294                T_End */	"end",
+	/* 37      295              T_False */	NULL,
+	/* 38      296               T_File */	"file",
+	/* 39      297            T_Filegen */	"filegen",
+	/* 40      298            T_Filenum */	"filenum",
+	/* 41      299              T_Flag1 */	"flag1",
+	/* 42      300              T_Flag2 */	"flag2",
+	/* 43      301              T_Flag3 */	"flag3",
+	/* 44      302              T_Flag4 */	"flag4",
+	/* 45      303              T_Flake */	"flake",
+	/* 46      304              T_Floor */	"floor",
+	/* 47      305               T_Freq */	"freq",
+	/* 48      306              T_Fudge */	"fudge",
+	/* 49      307               T_Host */	"host",
+	/* 50      308           T_Huffpuff */	"huffpuff",
+	/* 51      309             T_Iburst */	"iburst",
+	/* 52      310              T_Ident */	"ident",
+	/* 53      311             T_Ignore */	"ignore",
+	/* 54      312           T_Incalloc */	"incalloc",
+	/* 55      313             T_Incmem */	"incmem",
+	/* 56      314          T_Initalloc */	"initalloc",
+	/* 57      315            T_Initmem */	"initmem",
+	/* 58      316        T_Includefile */	"includefile",
+	/* 59      317            T_Integer */	NULL,
+	/* 60      318          T_Interface */	"interface",
+	/* 61      319           T_Intrange */	NULL,
+	/* 62      320                 T_Io */	"io",
+	/* 63      321               T_Ipv4 */	"ipv4",
+	/* 64      322          T_Ipv4_flag */	"-4",
+	/* 65      323               T_Ipv6 */	"ipv6",
+	/* 66      324          T_Ipv6_flag */	"-6",
+	/* 67      325             T_Kernel */	"kernel",
+	/* 68      326                T_Key */	"key",
+	/* 69      327               T_Keys */	"keys",
+	/* 70      328            T_Keysdir */	"keysdir",
+	/* 71      329                T_Kod */	"kod",
+	/* 72      330             T_Mssntp */	"mssntp",
+	/* 73      331           T_Leapfile */	"leapfile",
+	/* 74      332  T_Leapsmearinterval */	"leapsmearinterval",
+	/* 75      333            T_Limited */	"limited",
+	/* 76      334               T_Link */	"link",
+	/* 77      335             T_Listen */	"listen",
+	/* 78      336          T_Logconfig */	"logconfig",
+	/* 79      337            T_Logfile */	"logfile",
+	/* 80      338          T_Loopstats */	"loopstats",
+	/* 81      339        T_Lowpriotrap */	"lowpriotrap",
+	/* 82      340     T_Manycastclient */	"manycastclient",
+	/* 83      341     T_Manycastserver */	"manycastserver",
+	/* 84      342               T_Mask */	"mask",
+	/* 85      343             T_Maxage */	"maxage",
+	/* 86      344           T_Maxclock */	"maxclock",
+	/* 87      345           T_Maxdepth */	"maxdepth",
+	/* 88      346            T_Maxdist */	"maxdist",
+	/* 89      347             T_Maxmem */	"maxmem",
+	/* 90      348            T_Maxpoll */	"maxpoll",
+	/* 91      349          T_Mdnstries */	"mdnstries",
+	/* 92      350                T_Mem */	"mem",
+	/* 93      351            T_Memlock */	"memlock",
+	/* 94      352           T_Minclock */	"minclock",
+	/* 95      353           T_Mindepth */	"mindepth",
+	/* 96      354            T_Mindist */	"mindist",
+	/* 97      355            T_Minimum */	"minimum",
+	/* 98      356            T_Minpoll */	"minpoll",
+	/* 99      357            T_Minsane */	"minsane",
+	/* 100     358               T_Mode */	"mode",
+	/* 101     359              T_Mode7 */	"mode7",
+	/* 102     360            T_Monitor */	"monitor",
+	/* 103     361              T_Month */	"month",
+	/* 104     362                T_Mru */	"mru",
+	/* 105     363    T_Multicastclient */	"multicastclient",
+	/* 106     364                T_Nic */	"nic",
+	/* 107     365             T_Nolink */	"nolink",
+	/* 108     366           T_Nomodify */	"nomodify",
+	/* 109     367          T_Nomrulist */	"nomrulist",
+	/* 110     368               T_None */	"none",
+	/* 111     369        T_Nonvolatile */	"nonvolatile",
+	/* 112     370             T_Nopeer */	"nopeer",
+	/* 113     371            T_Noquery */	"noquery",
+	/* 114     372           T_Noselect */	"noselect",
+	/* 115     373            T_Noserve */	"noserve",
+	/* 116     374             T_Notrap */	"notrap",
+	/* 117     375            T_Notrust */	"notrust",
+	/* 118     376                T_Ntp */	"ntp",
+	/* 119     377            T_Ntpport */	"ntpport",
+	/* 120     378     T_NtpSignDsocket */	"ntpsigndsocket",
+	/* 121     379             T_Orphan */	"orphan",
+	/* 122     380         T_Orphanwait */	"orphanwait",
+	/* 123     381          T_PCEdigest */	"peer_clear_digest_early",
+	/* 124     382              T_Panic */	"panic",
+	/* 125     383               T_Peer */	"peer",
+	/* 126     384          T_Peerstats */	"peerstats",
+	/* 127     385              T_Phone */	"phone",
+	/* 128     386                T_Pid */	"pid",
+	/* 129     387            T_Pidfile */	"pidfile",
+	/* 130     388               T_Pool */	"pool",
+	/* 131     389               T_Port */	"port",
+	/* 132     390            T_Preempt */	"preempt",
+	/* 133     391             T_Prefer */	"prefer",
+	/* 134     392         T_Protostats */	"protostats",
+	/* 135     393                 T_Pw */	"pw",
+	/* 136     394           T_Randfile */	"randfile",
+	/* 137     395           T_Rawstats */	"rawstats",
+	/* 138     396              T_Refid */	"refid",
+	/* 139     397         T_Requestkey */	"requestkey",
+	/* 140     398              T_Reset */	"reset",
+	/* 141     399           T_Restrict */	"restrict",
+	/* 142     400             T_Revoke */	"revoke",
+	/* 143     401             T_Rlimit */	"rlimit",
+	/* 144     402      T_Saveconfigdir */	"saveconfigdir",
+	/* 145     403             T_Server */	"server",
+	/* 146     404             T_Setvar */	"setvar",
+	/* 147     405             T_Source */	"source",
+	/* 148     406          T_Stacksize */	"stacksize",
+	/* 149     407         T_Statistics */	"statistics",
+	/* 150     408              T_Stats */	"stats",
+	/* 151     409           T_Statsdir */	"statsdir",
+	/* 152     410               T_Step */	"step",
+	/* 153     411           T_Stepback */	"stepback",
+	/* 154     412            T_Stepfwd */	"stepfwd",
+	/* 155     413            T_Stepout */	"stepout",
+	/* 156     414            T_Stratum */	"stratum",
+	/* 157     415             T_String */	NULL,
+	/* 158     416                T_Sys */	"sys",
+	/* 159     417           T_Sysstats */	"sysstats",
+	/* 160     418               T_Tick */	"tick",
+	/* 161     419              T_Time1 */	"time1",
+	/* 162     420              T_Time2 */	"time2",
+	/* 163     421              T_Timer */	"timer",
+	/* 164     422        T_Timingstats */	"timingstats",
+	/* 165     423             T_Tinker */	"tinker",
+	/* 166     424                T_Tos */	"tos",
+	/* 167     425               T_Trap */	"trap",
+	/* 168     426               T_True */	"true",
+	/* 169     427         T_Trustedkey */	"trustedkey",
+	/* 170     428                T_Ttl */	"ttl",
+	/* 171     429               T_Type */	"type",
+	/* 172     430              T_U_int */	NULL,
+	/* 173     431           T_UEcrypto */	"unpeer_crypto_early",
+	/* 174     432        T_UEcryptonak */	"unpeer_crypto_nak_early",
+	/* 175     433           T_UEdigest */	"unpeer_digest_early",
+	/* 176     434           T_Unconfig */	"unconfig",
+	/* 177     435             T_Unpeer */	"unpeer",
+	/* 178     436            T_Version */	"version",
+	/* 179     437    T_WanderThreshold */	NULL,
+	/* 180     438               T_Week */	"week",
+	/* 181     439           T_Wildcard */	"wildcard",
+	/* 182     440             T_Xleave */	"xleave",
+	/* 183     441               T_Year */	"year",
+	/* 184     442               T_Flag */	NULL,
+	/* 185     443                T_EOC */	NULL,
+	/* 186     444           T_Simulate */	"simulate",
+	/* 187     445         T_Beep_Delay */	"beep_delay",
+	/* 188     446       T_Sim_Duration */	"simulation_duration",
+	/* 189     447      T_Server_Offset */	"server_offset",
+	/* 190     448           T_Duration */	"duration",
+	/* 191     449        T_Freq_Offset */	"freq_offset",
+	/* 192     450             T_Wander */	"wander",
+	/* 193     451             T_Jitter */	"jitter",
+	/* 194     452         T_Prop_Delay */	"prop_delay",
+	/* 195     453         T_Proc_Delay */	"proc_delay"
 };
 
-#define SCANNER_INIT_S 906
+#define SCANNER_INIT_S 915
 
-const scan_state sst[909] = {
+const scan_state sst[918] = {
 /*SS_T( ch,	f-by, match, other ),				 */
   0,				      /*     0                   */
-  S_ST( '-',	3,      323,     0 ), /*     1                   */
+  S_ST( '-',	3,      324,     0 ), /*     1                   */
   S_ST( '.',	3,        3,     1 ), /*     2                   */
-  S_ST( '.',	3,      291,     0 ), /*     3 .                 */
+  S_ST( '.',	3,      292,     0 ), /*     3 .                 */
   S_ST( 'a',	3,       23,     2 ), /*     4                   */
   S_ST( 'b',	3,        6,     0 ), /*     5 a                 */
   S_ST( 'b',	3,        7,     0 ), /*     6 ab                */
@@ -240,236 +241,236 @@
   S_ST( 'r',	3,       26,     0 ), /*    25 ave               */
   S_ST( 'a',	3,       27,     0 ), /*    26 aver              */
   S_ST( 'g',	3,      266,     0 ), /*    27 avera             */
-  S_ST( 'b',	3,       61,     4 ), /*    28                   */
-  S_ST( 'c',	3,       30,     0 ), /*    29 b                 */
+  S_ST( 'b',	3,       69,     4 ), /*    28                   */
+  S_ST( 'c',	3,       34,     0 ), /*    29 b                 */
   S_ST( 'l',	3,       31,     0 ), /*    30 bc                */
   S_ST( 'i',	3,       32,     0 ), /*    31 bcl               */
   S_ST( 'e',	3,       33,     0 ), /*    32 bcli              */
   S_ST( 'n',	3,      267,     0 ), /*    33 bclie             */
-  S_ST( 'e',	3,       38,    29 ), /*    34 b                 */
-  S_ST( 'a',	3,       36,     0 ), /*    35 be                */
-  S_ST( 'c',	3,       37,     0 ), /*    36 bea               */
-  S_ST( 'o',	3,      268,     0 ), /*    37 beac              */
-  S_ST( 'e',	3,       39,    35 ), /*    38 be                */
-  S_ST( 'p',	3,       40,     0 ), /*    39 bee               */
-  S_ST( '_',	3,       41,     0 ), /*    40 beep              */
-  S_ST( 'd',	3,       42,     0 ), /*    41 beep_             */
-  S_ST( 'e',	3,       43,     0 ), /*    42 beep_d            */
-  S_ST( 'l',	3,       44,     0 ), /*    43 beep_de           */
-  S_ST( 'a',	3,      444,     0 ), /*    44 beep_del          */
-  S_ST( 'r',	3,       46,    34 ), /*    45 b                 */
-  S_ST( 'o',	3,       47,     0 ), /*    46 br                */
-  S_ST( 'a',	3,       48,     0 ), /*    47 bro               */
-  S_ST( 'd',	3,       49,     0 ), /*    48 broa              */
-  S_ST( 'c',	3,       50,     0 ), /*    49 broad             */
-  S_ST( 'a',	3,       51,     0 ), /*    50 broadc            */
-  S_ST( 's',	3,      269,     0 ), /*    51 broadca           */
-  S_ST( 'c',	3,       53,     0 ), /*    52 broadcast         */
-  S_ST( 'l',	3,       54,     0 ), /*    53 broadcastc        */
-  S_ST( 'i',	3,       55,     0 ), /*    54 broadcastcl       */
-  S_ST( 'e',	3,       56,     0 ), /*    55 broadcastcli      */
-  S_ST( 'n',	3,      270,     0 ), /*    56 broadcastclie     */
-  S_ST( 'd',	3,       58,    52 ), /*    57 broadcast         */
-  S_ST( 'e',	3,       59,     0 ), /*    58 broadcastd        */
-  S_ST( 'l',	3,       60,     0 ), /*    59 broadcastde       */
-  S_ST( 'a',	3,      271,     0 ), /*    60 broadcastdel      */
-  S_ST( 'u',	3,       62,    45 ), /*    61 b                 */
-  S_ST( 'r',	3,       63,     0 ), /*    62 bu                */
-  S_ST( 's',	3,      272,     0 ), /*    63 bur               */
-  S_ST( 'c',	3,      104,    28 ), /*    64                   */
-  S_ST( 'a',	3,       66,     0 ), /*    65 c                 */
-  S_ST( 'l',	3,       67,     0 ), /*    66 ca                */
-  S_ST( 'i',	3,       68,     0 ), /*    67 cal               */
-  S_ST( 'b',	3,       69,     0 ), /*    68 cali              */
-  S_ST( 'r',	3,       70,     0 ), /*    69 calib             */
-  S_ST( 'a',	3,       71,     0 ), /*    70 calibr            */
-  S_ST( 't',	3,      273,     0 ), /*    71 calibra           */
-  S_ST( 'e',	3,       73,    65 ), /*    72 c                 */
-  S_ST( 'i',	3,       74,     0 ), /*    73 ce                */
-  S_ST( 'l',	3,       75,     0 ), /*    74 cei               */
-  S_ST( 'i',	3,       76,     0 ), /*    75 ceil              */
-  S_ST( 'n',	3,      274,     0 ), /*    76 ceili             */
-  S_ST( 'l',	3,       78,    72 ), /*    77 c                 */
-  S_ST( 'o',	3,       79,     0 ), /*    78 cl                */
-  S_ST( 'c',	3,       80,     0 ), /*    79 clo               */
-  S_ST( 'k',	3,       81,     0 ), /*    80 cloc              */
-  S_ST( 's',	3,       82,     0 ), /*    81 clock             */
-  S_ST( 't',	3,       83,     0 ), /*    82 clocks            */
-  S_ST( 'a',	3,       84,     0 ), /*    83 clockst           */
-  S_ST( 't',	3,      275,     0 ), /*    84 clocksta          */
-  S_ST( 'o',	3,       89,    77 ), /*    85 c                 */
-  S_ST( 'h',	3,       87,     0 ), /*    86 co                */
-  S_ST( 'o',	3,       88,     0 ), /*    87 coh               */
-  S_ST( 'r',	3,      276,     0 ), /*    88 coho              */
-  S_ST( 'n',	3,       90,    86 ), /*    89 co                */
-  S_ST( 't',	3,       91,     0 ), /*    90 con               */
-  S_ST( 'r',	3,       92,     0 ), /*    91 cont              */
-  S_ST( 'o',	3,       93,     0 ), /*    92 contr             */
-  S_ST( 'l',	3,       94,     0 ), /*    93 contro            */
-  S_ST( 'k',	3,       95,     0 ), /*    94 control           */
-  S_ST( 'e',	3,      277,     0 ), /*    95 controlk          */
-  S_ST( 'r',	3,       97,    85 ), /*    96 c                 */
-  S_ST( 'y',	3,       98,     0 ), /*    97 cr                */
-  S_ST( 'p',	3,       99,     0 ), /*    98 cry               */
-  S_ST( 't',	3,      278,     0 ), /*    99 cryp              */
-  S_ST( 's',	3,      101,     0 ), /*   100 crypto            */
-  S_ST( 't',	3,      102,     0 ), /*   101 cryptos           */
-  S_ST( 'a',	3,      103,     0 ), /*   102 cryptost          */
-  S_ST( 't',	3,      279,     0 ), /*   103 cryptosta         */
-  S_ST( 't',	3,      280,    96 ), /*   104 c                 */
-  S_ST( 'd',	3,      139,    64 ), /*   105                   */
-  S_ST( 'a',	3,      281,     0 ), /*   106 d                 */
-  S_ST( 'e',	3,      108,   106 ), /*   107 d                 */
-  S_ST( 'f',	3,      109,     0 ), /*   108 de                */
-  S_ST( 'a',	3,      110,     0 ), /*   109 def               */
-  S_ST( 'u',	3,      111,     0 ), /*   110 defa              */
-  S_ST( 'l',	3,      282,     0 ), /*   111 defau             */
-  S_ST( 'i',	3,      116,   107 ), /*   112 d                 */
-  S_ST( 'g',	3,      114,     0 ), /*   113 di                */
-  S_ST( 'e',	3,      115,     0 ), /*   114 dig               */
-  S_ST( 's',	3,      283,     0 ), /*   115 dige              */
-  S_ST( 's',	3,      123,   113 ), /*   116 di                */
-  S_ST( 'a',	3,      118,     0 ), /*   117 dis               */
-  S_ST( 'b',	3,      119,     0 ), /*   118 disa              */
-  S_ST( 'l',	3,      284,     0 ), /*   119 disab             */
-  S_ST( 'c',	3,      121,   117 ), /*   120 dis               */
-  S_ST( 'a',	3,      122,     0 ), /*   121 disc              */
-  S_ST( 'r',	3,      285,     0 ), /*   122 disca             */
-  S_ST( 'p',	3,      124,   120 ), /*   123 dis               */
-  S_ST( 'e',	3,      125,     0 ), /*   124 disp              */
-  S_ST( 'r',	3,      126,     0 ), /*   125 dispe             */
-  S_ST( 's',	3,      127,     0 ), /*   126 disper            */
-  S_ST( 'i',	3,      128,     0 ), /*   127 dispers           */
-  S_ST( 'o',	3,      286,     0 ), /*   128 dispersi          */
-  S_ST( 'r',	3,      136,   112 ), /*   129 d                 */
-  S_ST( 'i',	3,      131,     0 ), /*   130 dr                */
-  S_ST( 'f',	3,      132,     0 ), /*   131 dri               */
-  S_ST( 't',	3,      133,     0 ), /*   132 drif              */
-  S_ST( 'f',	3,      134,     0 ), /*   133 drift             */
-  S_ST( 'i',	3,      135,     0 ), /*   134 driftf            */
-  S_ST( 'l',	3,      288,     0 ), /*   135 driftfi           */
-  S_ST( 'o',	3,      289,   130 ), /*   136 dr                */
-  S_ST( 's',	3,      138,   129 ), /*   137 d                 */
-  S_ST( 'c',	3,      290,     0 ), /*   138 ds                */
-  S_ST( 'u',	3,      140,   137 ), /*   139 d                 */
-  S_ST( 'r',	3,      141,     0 ), /*   140 du                */
-  S_ST( 'a',	3,      142,     0 ), /*   141 dur               */
-  S_ST( 't',	3,      143,     0 ), /*   142 dura              */
-  S_ST( 'i',	3,      144,     0 ), /*   143 durat             */
-  S_ST( 'o',	3,      447,     0 ), /*   144 durati            */
-  S_ST( 'e',	3,      146,   105 ), /*   145                   */
-  S_ST( 'n',	3,      293,     0 ), /*   146 e                 */
-  S_ST( 'a',	3,      148,     0 ), /*   147 en                */
-  S_ST( 'b',	3,      149,     0 ), /*   148 ena               */
-  S_ST( 'l',	3,      292,     0 ), /*   149 enab              */
-  S_ST( 'f',	3,      171,   145 ), /*   150                   */
-  S_ST( 'i',	3,      152,     0 ), /*   151 f                 */
-  S_ST( 'l',	3,      295,     0 ), /*   152 fi                */
-  S_ST( 'g',	3,      154,     0 ), /*   153 file              */
-  S_ST( 'e',	3,      296,     0 ), /*   154 fileg             */
-  S_ST( 'n',	3,      156,   153 ), /*   155 file              */
-  S_ST( 'u',	3,      297,     0 ), /*   156 filen             */
-  S_ST( 'l',	3,      161,   151 ), /*   157 f                 */
-  S_ST( 'a',	3,      160,     0 ), /*   158 fl                */
-  S_ST( 'g',	3,      301,     0 ), /*   159 fla               */
-  S_ST( 'k',	3,      302,   159 ), /*   160 fla               */
-  S_ST( 'o',	3,      162,   158 ), /*   161 fl                */
-  S_ST( 'o',	3,      303,     0 ), /*   162 flo               */
-  S_ST( 'r',	3,      164,   157 ), /*   163 f                 */
-  S_ST( 'e',	3,      304,     0 ), /*   164 fr                */
-  S_ST( '_',	3,      166,     0 ), /*   165 freq              */
-  S_ST( 'o',	3,      167,     0 ), /*   166 freq_             */
-  S_ST( 'f',	3,      168,     0 ), /*   167 freq_o            */
-  S_ST( 'f',	3,      169,     0 ), /*   168 freq_of           */
-  S_ST( 's',	3,      170,     0 ), /*   169 freq_off          */
-  S_ST( 'e',	3,      448,     0 ), /*   170 freq_offs         */
-  S_ST( 'u',	3,      172,   163 ), /*   171 f                 */
-  S_ST( 'd',	3,      173,     0 ), /*   172 fu                */
-  S_ST( 'g',	3,      305,     0 ), /*   173 fud               */
-  S_ST( 'h',	3,      177,   150 ), /*   174                   */
-  S_ST( 'o',	3,      176,     0 ), /*   175 h                 */
-  S_ST( 's',	3,      306,     0 ), /*   176 ho                */
-  S_ST( 'u',	3,      178,   175 ), /*   177 h                 */
-  S_ST( 'f',	3,      179,     0 ), /*   178 hu                */
-  S_ST( 'f',	3,      180,     0 ), /*   179 huf               */
-  S_ST( 'p',	3,      181,     0 ), /*   180 huff              */
-  S_ST( 'u',	3,      182,     0 ), /*   181 huffp             */
-  S_ST( 'f',	3,      307,     0 ), /*   182 huffpu            */
-  S_ST( 'i',	3,      224,   174 ), /*   183                   */
-  S_ST( 'b',	3,      185,     0 ), /*   184 i                 */
-  S_ST( 'u',	3,      186,     0 ), /*   185 ib                */
-  S_ST( 'r',	3,      187,     0 ), /*   186 ibu               */
-  S_ST( 's',	3,      308,     0 ), /*   187 ibur              */
-  S_ST( 'd',	3,      189,   184 ), /*   188 i                 */
-  S_ST( 'e',	3,      190,     0 ), /*   189 id                */
-  S_ST( 'n',	3,      309,     0 ), /*   190 ide               */
-  S_ST( 'g',	3,      192,   188 ), /*   191 i                 */
-  S_ST( 'n',	3,      193,     0 ), /*   192 ig                */
-  S_ST( 'o',	3,      194,     0 ), /*   193 ign               */
-  S_ST( 'r',	3,      310,     0 ), /*   194 igno              */
-  S_ST( 'n',	3,      218,   191 ), /*   195 i                 */
-  S_ST( 'c',	3,      208,     0 ), /*   196 in                */
-  S_ST( 'a',	3,      198,     0 ), /*   197 inc               */
-  S_ST( 'l',	3,      199,     0 ), /*   198 inca              */
-  S_ST( 'l',	3,      200,     0 ), /*   199 incal             */
-  S_ST( 'o',	3,      311,     0 ), /*   200 incall            */
-  S_ST( 'l',	3,      202,   197 ), /*   201 inc               */
-  S_ST( 'u',	3,      203,     0 ), /*   202 incl              */
-  S_ST( 'd',	3,      204,     0 ), /*   203 inclu             */
-  S_ST( 'e',	3,      205,     0 ), /*   204 includ            */
-  S_ST( 'f',	3,      206,     0 ), /*   205 include           */
-  S_ST( 'i',	3,      207,     0 ), /*   206 includef          */
-  S_ST( 'l',	3,      315,     0 ), /*   207 includefi         */
-  S_ST( 'm',	3,      209,   201 ), /*   208 inc               */
-  S_ST( 'e',	3,      312,     0 ), /*   209 incm              */
-  S_ST( 'i',	3,      211,   196 ), /*   210 in                */
-  S_ST( 't',	3,      216,     0 ), /*   211 ini               */
-  S_ST( 'a',	3,      213,     0 ), /*   212 init              */
-  S_ST( 'l',	3,      214,     0 ), /*   213 inita             */
-  S_ST( 'l',	3,      215,     0 ), /*   214 inital            */
-  S_ST( 'o',	3,      313,     0 ), /*   215 initall           */
-  S_ST( 'm',	3,      217,   212 ), /*   216 init              */
-  S_ST( 'e',	3,      314,     0 ), /*   217 initm             */
-  S_ST( 't',	3,      219,   210 ), /*   218 in                */
-  S_ST( 'e',	3,      220,     0 ), /*   219 int               */
-  S_ST( 'r',	3,      221,     0 ), /*   220 inte              */
-  S_ST( 'f',	3,      222,     0 ), /*   221 inter             */
-  S_ST( 'a',	3,      223,     0 ), /*   222 interf            */
-  S_ST( 'c',	3,      317,     0 ), /*   223 interfa           */
-  S_ST( 'p',	3,      225,   319 ), /*   224 i                 */
-  S_ST( 'v',	3,      322,     0 ), /*   225 ip                */
-  S_ST( 'j',	3,      227,   183 ), /*   226                   */
-  S_ST( 'i',	3,      228,     0 ), /*   227 j                 */
-  S_ST( 't',	3,      229,     0 ), /*   228 ji                */
-  S_ST( 't',	3,      230,     0 ), /*   229 jit               */
-  S_ST( 'e',	3,      450,     0 ), /*   230 jitt              */
-  S_ST( 'k',	3,      238,   226 ), /*   231                   */
-  S_ST( 'e',	3,      325,     0 ), /*   232 k                 */
-  S_ST( 'r',	3,      234,     0 ), /*   233 ke                */
-  S_ST( 'n',	3,      235,     0 ), /*   234 ker               */
-  S_ST( 'e',	3,      324,     0 ), /*   235 kern              */
-  S_ST( 'd',	3,      237,     0 ), /*   236 keys              */
-  S_ST( 'i',	3,      327,     0 ), /*   237 keysd             */
-  S_ST( 'o',	3,      328,   232 ), /*   238 k                 */
-  S_ST( 'l',	3,      453,   231 ), /*   239                   */
-  S_ST( 'e',	3,      241,     0 ), /*   240 l                 */
-  S_ST( 'a',	3,      242,     0 ), /*   241 le                */
-  S_ST( 'p',	3,      246,     0 ), /*   242 lea               */
-  S_ST( 'f',	3,      244,     0 ), /*   243 leap              */
-  S_ST( 'i',	3,      245,     0 ), /*   244 leapf             */
-  S_ST( 'l',	3,      330,     0 ), /*   245 leapfi            */
-  S_ST( 's',	3,      247,   243 ), /*   246 leap              */
-  S_ST( 'm',	3,      248,     0 ), /*   247 leaps             */
-  S_ST( 'e',	3,      249,     0 ), /*   248 leapsm            */
-  S_ST( 'a',	3,      250,     0 ), /*   249 leapsme           */
-  S_ST( 'r',	3,      251,     0 ), /*   250 leapsmea          */
-  S_ST( 'i',	3,      252,     0 ), /*   251 leapsmear         */
-  S_ST( 'n',	3,      253,     0 ), /*   252 leapsmeari        */
-  S_ST( 't',	3,      254,     0 ), /*   253 leapsmearin       */
-  S_ST( 'e',	3,      255,     0 ), /*   254 leapsmearint      */
-  S_ST( 'r',	3,      256,     0 ), /*   255 leapsmearinte     */
-  S_ST( 'v',	3,      257,     0 ), /*   256 leapsmearinter    */
-  S_ST( 'a',	3,      331,     0 ), /*   257 leapsmearinterv   */
+  S_ST( 'p',	3,       35,    30 ), /*    34 bc                */
+  S_ST( 'o',	3,       36,     0 ), /*    35 bcp               */
+  S_ST( 'l',	3,       37,     0 ), /*    36 bcpo              */
+  S_ST( 'l',	3,       38,     0 ), /*    37 bcpol             */
+  S_ST( 'b',	3,       39,     0 ), /*    38 bcpoll            */
+  S_ST( 's',	3,       40,     0 ), /*    39 bcpollb           */
+  S_ST( 't',	3,       41,     0 ), /*    40 bcpollbs          */
+  S_ST( 'e',	3,      268,     0 ), /*    41 bcpollbst         */
+  S_ST( 'e',	3,       46,    29 ), /*    42 b                 */
+  S_ST( 'a',	3,       44,     0 ), /*    43 be                */
+  S_ST( 'c',	3,       45,     0 ), /*    44 bea               */
+  S_ST( 'o',	3,      269,     0 ), /*    45 beac              */
+  S_ST( 'e',	3,       47,    43 ), /*    46 be                */
+  S_ST( 'p',	3,       48,     0 ), /*    47 bee               */
+  S_ST( '_',	3,       49,     0 ), /*    48 beep              */
+  S_ST( 'd',	3,       50,     0 ), /*    49 beep_             */
+  S_ST( 'e',	3,       51,     0 ), /*    50 beep_d            */
+  S_ST( 'l',	3,       52,     0 ), /*    51 beep_de           */
+  S_ST( 'a',	3,      445,     0 ), /*    52 beep_del          */
+  S_ST( 'r',	3,       54,    42 ), /*    53 b                 */
+  S_ST( 'o',	3,       55,     0 ), /*    54 br                */
+  S_ST( 'a',	3,       56,     0 ), /*    55 bro               */
+  S_ST( 'd',	3,       57,     0 ), /*    56 broa              */
+  S_ST( 'c',	3,       58,     0 ), /*    57 broad             */
+  S_ST( 'a',	3,       59,     0 ), /*    58 broadc            */
+  S_ST( 's',	3,      270,     0 ), /*    59 broadca           */
+  S_ST( 'c',	3,       61,     0 ), /*    60 broadcast         */
+  S_ST( 'l',	3,       62,     0 ), /*    61 broadcastc        */
+  S_ST( 'i',	3,       63,     0 ), /*    62 broadcastcl       */
+  S_ST( 'e',	3,       64,     0 ), /*    63 broadcastcli      */
+  S_ST( 'n',	3,      271,     0 ), /*    64 broadcastclie     */
+  S_ST( 'd',	3,       66,    60 ), /*    65 broadcast         */
+  S_ST( 'e',	3,       67,     0 ), /*    66 broadcastd        */
+  S_ST( 'l',	3,       68,     0 ), /*    67 broadcastde       */
+  S_ST( 'a',	3,      272,     0 ), /*    68 broadcastdel      */
+  S_ST( 'u',	3,       70,    53 ), /*    69 b                 */
+  S_ST( 'r',	3,       71,     0 ), /*    70 bu                */
+  S_ST( 's',	3,      273,     0 ), /*    71 bur               */
+  S_ST( 'c',	3,      112,    28 ), /*    72                   */
+  S_ST( 'a',	3,       74,     0 ), /*    73 c                 */
+  S_ST( 'l',	3,       75,     0 ), /*    74 ca                */
+  S_ST( 'i',	3,       76,     0 ), /*    75 cal               */
+  S_ST( 'b',	3,       77,     0 ), /*    76 cali              */
+  S_ST( 'r',	3,       78,     0 ), /*    77 calib             */
+  S_ST( 'a',	3,       79,     0 ), /*    78 calibr            */
+  S_ST( 't',	3,      274,     0 ), /*    79 calibra           */
+  S_ST( 'e',	3,       81,    73 ), /*    80 c                 */
+  S_ST( 'i',	3,       82,     0 ), /*    81 ce                */
+  S_ST( 'l',	3,       83,     0 ), /*    82 cei               */
+  S_ST( 'i',	3,       84,     0 ), /*    83 ceil              */
+  S_ST( 'n',	3,      275,     0 ), /*    84 ceili             */
+  S_ST( 'l',	3,       86,    80 ), /*    85 c                 */
+  S_ST( 'o',	3,       87,     0 ), /*    86 cl                */
+  S_ST( 'c',	3,       88,     0 ), /*    87 clo               */
+  S_ST( 'k',	3,       89,     0 ), /*    88 cloc              */
+  S_ST( 's',	3,       90,     0 ), /*    89 clock             */
+  S_ST( 't',	3,       91,     0 ), /*    90 clocks            */
+  S_ST( 'a',	3,       92,     0 ), /*    91 clockst           */
+  S_ST( 't',	3,      276,     0 ), /*    92 clocksta          */
+  S_ST( 'o',	3,       97,    85 ), /*    93 c                 */
+  S_ST( 'h',	3,       95,     0 ), /*    94 co                */
+  S_ST( 'o',	3,       96,     0 ), /*    95 coh               */
+  S_ST( 'r',	3,      277,     0 ), /*    96 coho              */
+  S_ST( 'n',	3,       98,    94 ), /*    97 co                */
+  S_ST( 't',	3,       99,     0 ), /*    98 con               */
+  S_ST( 'r',	3,      100,     0 ), /*    99 cont              */
+  S_ST( 'o',	3,      101,     0 ), /*   100 contr             */
+  S_ST( 'l',	3,      102,     0 ), /*   101 contro            */
+  S_ST( 'k',	3,      103,     0 ), /*   102 control           */
+  S_ST( 'e',	3,      278,     0 ), /*   103 controlk          */
+  S_ST( 'r',	3,      105,    93 ), /*   104 c                 */
+  S_ST( 'y',	3,      106,     0 ), /*   105 cr                */
+  S_ST( 'p',	3,      107,     0 ), /*   106 cry               */
+  S_ST( 't',	3,      279,     0 ), /*   107 cryp              */
+  S_ST( 's',	3,      109,     0 ), /*   108 crypto            */
+  S_ST( 't',	3,      110,     0 ), /*   109 cryptos           */
+  S_ST( 'a',	3,      111,     0 ), /*   110 cryptost          */
+  S_ST( 't',	3,      280,     0 ), /*   111 cryptosta         */
+  S_ST( 't',	3,      281,   104 ), /*   112 c                 */
+  S_ST( 'd',	3,      147,    72 ), /*   113                   */
+  S_ST( 'a',	3,      282,     0 ), /*   114 d                 */
+  S_ST( 'e',	3,      116,   114 ), /*   115 d                 */
+  S_ST( 'f',	3,      117,     0 ), /*   116 de                */
+  S_ST( 'a',	3,      118,     0 ), /*   117 def               */
+  S_ST( 'u',	3,      119,     0 ), /*   118 defa              */
+  S_ST( 'l',	3,      283,     0 ), /*   119 defau             */
+  S_ST( 'i',	3,      124,   115 ), /*   120 d                 */
+  S_ST( 'g',	3,      122,     0 ), /*   121 di                */
+  S_ST( 'e',	3,      123,     0 ), /*   122 dig               */
+  S_ST( 's',	3,      284,     0 ), /*   123 dige              */
+  S_ST( 's',	3,      131,   121 ), /*   124 di                */
+  S_ST( 'a',	3,      126,     0 ), /*   125 dis               */
+  S_ST( 'b',	3,      127,     0 ), /*   126 disa              */
+  S_ST( 'l',	3,      285,     0 ), /*   127 disab             */
+  S_ST( 'c',	3,      129,   125 ), /*   128 dis               */
+  S_ST( 'a',	3,      130,     0 ), /*   129 disc              */
+  S_ST( 'r',	3,      286,     0 ), /*   130 disca             */
+  S_ST( 'p',	3,      132,   128 ), /*   131 dis               */
+  S_ST( 'e',	3,      133,     0 ), /*   132 disp              */
+  S_ST( 'r',	3,      134,     0 ), /*   133 dispe             */
+  S_ST( 's',	3,      135,     0 ), /*   134 disper            */
+  S_ST( 'i',	3,      136,     0 ), /*   135 dispers           */
+  S_ST( 'o',	3,      287,     0 ), /*   136 dispersi          */
+  S_ST( 'r',	3,      144,   120 ), /*   137 d                 */
+  S_ST( 'i',	3,      139,     0 ), /*   138 dr                */
+  S_ST( 'f',	3,      140,     0 ), /*   139 dri               */
+  S_ST( 't',	3,      141,     0 ), /*   140 drif              */
+  S_ST( 'f',	3,      142,     0 ), /*   141 drift             */
+  S_ST( 'i',	3,      143,     0 ), /*   142 driftf            */
+  S_ST( 'l',	3,      289,     0 ), /*   143 driftfi           */
+  S_ST( 'o',	3,      290,   138 ), /*   144 dr                */
+  S_ST( 's',	3,      146,   137 ), /*   145 d                 */
+  S_ST( 'c',	3,      291,     0 ), /*   146 ds                */
+  S_ST( 'u',	3,      148,   145 ), /*   147 d                 */
+  S_ST( 'r',	3,      149,     0 ), /*   148 du                */
+  S_ST( 'a',	3,      150,     0 ), /*   149 dur               */
+  S_ST( 't',	3,      151,     0 ), /*   150 dura              */
+  S_ST( 'i',	3,      152,     0 ), /*   151 durat             */
+  S_ST( 'o',	3,      448,     0 ), /*   152 durati            */
+  S_ST( 'e',	3,      154,   113 ), /*   153                   */
+  S_ST( 'n',	3,      294,     0 ), /*   154 e                 */
+  S_ST( 'a',	3,      156,     0 ), /*   155 en                */
+  S_ST( 'b',	3,      157,     0 ), /*   156 ena               */
+  S_ST( 'l',	3,      293,     0 ), /*   157 enab              */
+  S_ST( 'f',	3,      179,   153 ), /*   158                   */
+  S_ST( 'i',	3,      160,     0 ), /*   159 f                 */
+  S_ST( 'l',	3,      296,     0 ), /*   160 fi                */
+  S_ST( 'g',	3,      162,     0 ), /*   161 file              */
+  S_ST( 'e',	3,      297,     0 ), /*   162 fileg             */
+  S_ST( 'n',	3,      164,   161 ), /*   163 file              */
+  S_ST( 'u',	3,      298,     0 ), /*   164 filen             */
+  S_ST( 'l',	3,      169,   159 ), /*   165 f                 */
+  S_ST( 'a',	3,      168,     0 ), /*   166 fl                */
+  S_ST( 'g',	3,      302,     0 ), /*   167 fla               */
+  S_ST( 'k',	3,      303,   167 ), /*   168 fla               */
+  S_ST( 'o',	3,      170,   166 ), /*   169 fl                */
+  S_ST( 'o',	3,      304,     0 ), /*   170 flo               */
+  S_ST( 'r',	3,      172,   165 ), /*   171 f                 */
+  S_ST( 'e',	3,      305,     0 ), /*   172 fr                */
+  S_ST( '_',	3,      174,     0 ), /*   173 freq              */
+  S_ST( 'o',	3,      175,     0 ), /*   174 freq_             */
+  S_ST( 'f',	3,      176,     0 ), /*   175 freq_o            */
+  S_ST( 'f',	3,      177,     0 ), /*   176 freq_of           */
+  S_ST( 's',	3,      178,     0 ), /*   177 freq_off          */
+  S_ST( 'e',	3,      449,     0 ), /*   178 freq_offs         */
+  S_ST( 'u',	3,      180,   171 ), /*   179 f                 */
+  S_ST( 'd',	3,      181,     0 ), /*   180 fu                */
+  S_ST( 'g',	3,      306,     0 ), /*   181 fud               */
+  S_ST( 'h',	3,      185,   158 ), /*   182                   */
+  S_ST( 'o',	3,      184,     0 ), /*   183 h                 */
+  S_ST( 's',	3,      307,     0 ), /*   184 ho                */
+  S_ST( 'u',	3,      186,   183 ), /*   185 h                 */
+  S_ST( 'f',	3,      187,     0 ), /*   186 hu                */
+  S_ST( 'f',	3,      188,     0 ), /*   187 huf               */
+  S_ST( 'p',	3,      189,     0 ), /*   188 huff              */
+  S_ST( 'u',	3,      190,     0 ), /*   189 huffp             */
+  S_ST( 'f',	3,      308,     0 ), /*   190 huffpu            */
+  S_ST( 'i',	3,      232,   182 ), /*   191                   */
+  S_ST( 'b',	3,      193,     0 ), /*   192 i                 */
+  S_ST( 'u',	3,      194,     0 ), /*   193 ib                */
+  S_ST( 'r',	3,      195,     0 ), /*   194 ibu               */
+  S_ST( 's',	3,      309,     0 ), /*   195 ibur              */
+  S_ST( 'd',	3,      197,   192 ), /*   196 i                 */
+  S_ST( 'e',	3,      198,     0 ), /*   197 id                */
+  S_ST( 'n',	3,      310,     0 ), /*   198 ide               */
+  S_ST( 'g',	3,      200,   196 ), /*   199 i                 */
+  S_ST( 'n',	3,      201,     0 ), /*   200 ig                */
+  S_ST( 'o',	3,      202,     0 ), /*   201 ign               */
+  S_ST( 'r',	3,      311,     0 ), /*   202 igno              */
+  S_ST( 'n',	3,      226,   199 ), /*   203 i                 */
+  S_ST( 'c',	3,      216,     0 ), /*   204 in                */
+  S_ST( 'a',	3,      206,     0 ), /*   205 inc               */
+  S_ST( 'l',	3,      207,     0 ), /*   206 inca              */
+  S_ST( 'l',	3,      208,     0 ), /*   207 incal             */
+  S_ST( 'o',	3,      312,     0 ), /*   208 incall            */
+  S_ST( 'l',	3,      210,   205 ), /*   209 inc               */
+  S_ST( 'u',	3,      211,     0 ), /*   210 incl              */
+  S_ST( 'd',	3,      212,     0 ), /*   211 inclu             */
+  S_ST( 'e',	3,      213,     0 ), /*   212 includ            */
+  S_ST( 'f',	3,      214,     0 ), /*   213 include           */
+  S_ST( 'i',	3,      215,     0 ), /*   214 includef          */
+  S_ST( 'l',	3,      316,     0 ), /*   215 includefi         */
+  S_ST( 'm',	3,      217,   209 ), /*   216 inc               */
+  S_ST( 'e',	3,      313,     0 ), /*   217 incm              */
+  S_ST( 'i',	3,      219,   204 ), /*   218 in                */
+  S_ST( 't',	3,      224,     0 ), /*   219 ini               */
+  S_ST( 'a',	3,      221,     0 ), /*   220 init              */
+  S_ST( 'l',	3,      222,     0 ), /*   221 inita             */
+  S_ST( 'l',	3,      223,     0 ), /*   222 inital            */
+  S_ST( 'o',	3,      314,     0 ), /*   223 initall           */
+  S_ST( 'm',	3,      225,   220 ), /*   224 init              */
+  S_ST( 'e',	3,      315,     0 ), /*   225 initm             */
+  S_ST( 't',	3,      227,   218 ), /*   226 in                */
+  S_ST( 'e',	3,      228,     0 ), /*   227 int               */
+  S_ST( 'r',	3,      229,     0 ), /*   228 inte              */
+  S_ST( 'f',	3,      230,     0 ), /*   229 inter             */
+  S_ST( 'a',	3,      231,     0 ), /*   230 interf            */
+  S_ST( 'c',	3,      318,     0 ), /*   231 interfa           */
+  S_ST( 'p',	3,      233,   320 ), /*   232 i                 */
+  S_ST( 'v',	3,      323,     0 ), /*   233 ip                */
+  S_ST( 'j',	3,      235,   191 ), /*   234                   */
+  S_ST( 'i',	3,      236,     0 ), /*   235 j                 */
+  S_ST( 't',	3,      237,     0 ), /*   236 ji                */
+  S_ST( 't',	3,      238,     0 ), /*   237 jit               */
+  S_ST( 'e',	3,      451,     0 ), /*   238 jitt              */
+  S_ST( 'k',	3,      246,   234 ), /*   239                   */
+  S_ST( 'e',	3,      326,     0 ), /*   240 k                 */
+  S_ST( 'r',	3,      242,     0 ), /*   241 ke                */
+  S_ST( 'n',	3,      243,     0 ), /*   242 ker               */
+  S_ST( 'e',	3,      325,     0 ), /*   243 kern              */
+  S_ST( 'd',	3,      245,     0 ), /*   244 keys              */
+  S_ST( 'i',	3,      328,     0 ), /*   245 keysd             */
+  S_ST( 'o',	3,      329,   240 ), /*   246 k                 */
+  S_ST( 'l',	3,      462,   239 ), /*   247                   */
+  S_ST( 'e',	3,      249,     0 ), /*   248 l                 */
+  S_ST( 'a',	3,      250,     0 ), /*   249 le                */
+  S_ST( 'p',	3,      254,     0 ), /*   250 lea               */
+  S_ST( 'f',	3,      252,     0 ), /*   251 leap              */
+  S_ST( 'i',	3,      253,     0 ), /*   252 leapf             */
+  S_ST( 'l',	3,      331,     0 ), /*   253 leapfi            */
+  S_ST( 's',	3,      255,   251 ), /*   254 leap              */
+  S_ST( 'm',	3,      256,     0 ), /*   255 leaps             */
+  S_ST( 'e',	3,      257,     0 ), /*   256 leapsm            */
+  S_ST( 'a',	3,      288,     0 ), /*   257 leapsme           */
   S_ST( 'v',	1,        0,     0 ), /*   258 T_Abbrev          */
   S_ST( 'e',	0,        0,     0 ), /*   259 T_Age             */
   S_ST( 'l',	0,       12,     0 ), /*   260 T_All             */
@@ -480,646 +481,655 @@
   S_ST( 'x',	0,        0,     0 ), /*   265 T_Automax         */
   S_ST( 'e',	0,        0,     0 ), /*   266 T_Average         */
   S_ST( 't',	0,        0,     0 ), /*   267 T_Bclient         */
-  S_ST( 'n',	0,        0,     0 ), /*   268 T_Beacon          */
-  S_ST( 't',	1,       57,     0 ), /*   269 T_Broadcast       */
-  S_ST( 't',	0,        0,     0 ), /*   270 T_Broadcastclient */
-  S_ST( 'y',	0,        0,     0 ), /*   271 T_Broadcastdelay  */
-  S_ST( 't',	0,        0,     0 ), /*   272 T_Burst           */
-  S_ST( 'e',	0,        0,     0 ), /*   273 T_Calibrate       */
-  S_ST( 'g',	0,        0,     0 ), /*   274 T_Ceiling         */
-  S_ST( 's',	0,        0,     0 ), /*   275 T_Clockstats      */
-  S_ST( 't',	0,        0,     0 ), /*   276 T_Cohort          */
-  S_ST( 'y',	0,        0,     0 ), /*   277 T_ControlKey      */
-  S_ST( 'o',	0,      100,     0 ), /*   278 T_Crypto          */
-  S_ST( 's',	0,        0,     0 ), /*   279 T_Cryptostats     */
-  S_ST( 'l',	0,        0,     0 ), /*   280 T_Ctl             */
-  S_ST( 'y',	0,        0,     0 ), /*   281 T_Day             */
-  S_ST( 't',	0,        0,     0 ), /*   282 T_Default         */
-  S_ST( 't',	1,        0,     0 ), /*   283 T_Digest          */
-  S_ST( 'e',	0,        0,     0 ), /*   284 T_Disable         */
-  S_ST( 'd',	0,        0,     0 ), /*   285 T_Discard         */
-  S_ST( 'n',	0,        0,     0 ), /*   286 T_Dispersion      */
-  S_ST( 'i',	3,      436,   240 ), /*   287 l                 */
-  S_ST( 'e',	1,        0,     0 ), /*   288 T_Driftfile       */
-  S_ST( 'p',	0,        0,     0 ), /*   289 T_Drop            */
-  S_ST( 'p',	0,        0,     0 ), /*   290 T_Dscp            */
-  S_ST( '.',	0,        0,     0 ), /*   291 T_Ellipsis        */
-  S_ST( 'e',	0,        0,     0 ), /*   292 T_Enable          */
-  S_ST( 'd',	0,        0,   147 ), /*   293 T_End             */
-  S_ST( 'm',	3,      316,     0 ), /*   294 li                */
-  S_ST( 'e',	1,      155,     0 ), /*   295 T_File            */
-  S_ST( 'n',	0,        0,     0 ), /*   296 T_Filegen         */
-  S_ST( 'm',	0,        0,     0 ), /*   297 T_Filenum         */
-  S_ST( '1',	0,        0,     0 ), /*   298 T_Flag1           */
-  S_ST( '2',	0,        0,   298 ), /*   299 T_Flag2           */
-  S_ST( '3',	0,        0,   299 ), /*   300 T_Flag3           */
-  S_ST( '4',	0,        0,   300 ), /*   301 T_Flag4           */
-  S_ST( 'e',	0,        0,     0 ), /*   302 T_Flake           */
-  S_ST( 'r',	0,        0,     0 ), /*   303 T_Floor           */
-  S_ST( 'q',	0,      165,     0 ), /*   304 T_Freq            */
-  S_ST( 'e',	1,        0,     0 ), /*   305 T_Fudge           */
-  S_ST( 't',	1,        0,     0 ), /*   306 T_Host            */
-  S_ST( 'f',	0,        0,     0 ), /*   307 T_Huffpuff        */
-  S_ST( 't',	0,        0,     0 ), /*   308 T_Iburst          */
-  S_ST( 't',	1,        0,     0 ), /*   309 T_Ident           */
-  S_ST( 'e',	0,        0,     0 ), /*   310 T_Ignore          */
-  S_ST( 'c',	0,        0,     0 ), /*   311 T_Incalloc        */
-  S_ST( 'm',	0,        0,     0 ), /*   312 T_Incmem          */
-  S_ST( 'c',	0,        0,     0 ), /*   313 T_Initalloc       */
-  S_ST( 'm',	0,        0,     0 ), /*   314 T_Initmem         */
-  S_ST( 'e',	1,        0,     0 ), /*   315 T_Includefile     */
-  S_ST( 'i',	3,      318,     0 ), /*   316 lim               */
-  S_ST( 'e',	0,        0,     0 ), /*   317 T_Interface       */
-  S_ST( 't',	3,      414,     0 ), /*   318 limi              */
-  S_ST( 'o',	0,        0,   195 ), /*   319 T_Io              */
-  S_ST( '4',	0,        0,     0 ), /*   320 T_Ipv4            */
-  S_ST( '4',	0,        0,     0 ), /*   321 T_Ipv4_flag       */
-  S_ST( '6',	0,        0,   320 ), /*   322 T_Ipv6            */
-  S_ST( '6',	0,        0,   321 ), /*   323 T_Ipv6_flag       */
-  S_ST( 'l',	0,        0,     0 ), /*   324 T_Kernel          */
-  S_ST( 'y',	0,      326,   233 ), /*   325 T_Key             */
-  S_ST( 's',	1,      236,     0 ), /*   326 T_Keys            */
-  S_ST( 'r',	1,        0,     0 ), /*   327 T_Keysdir         */
-  S_ST( 'd',	0,        0,     0 ), /*   328 T_Kod             */
-  S_ST( 'p',	0,        0,     0 ), /*   329 T_Mssntp          */
-  S_ST( 'e',	1,        0,     0 ), /*   330 T_Leapfile        */
-  S_ST( 'l',	0,        0,     0 ), /*   331 T_Leapsmearinterval */
-  S_ST( 'd',	0,        0,     0 ), /*   332 T_Limited         */
-  S_ST( 'k',	0,        0,     0 ), /*   333 T_Link            */
-  S_ST( 'n',	0,        0,     0 ), /*   334 T_Listen          */
-  S_ST( 'g',	2,        0,     0 ), /*   335 T_Logconfig       */
-  S_ST( 'e',	1,        0,     0 ), /*   336 T_Logfile         */
-  S_ST( 's',	0,        0,     0 ), /*   337 T_Loopstats       */
-  S_ST( 'p',	0,        0,     0 ), /*   338 T_Lowpriotrap     */
-  S_ST( 't',	1,        0,     0 ), /*   339 T_Manycastclient  */
-  S_ST( 'r',	2,        0,     0 ), /*   340 T_Manycastserver  */
-  S_ST( 'k',	0,        0,     0 ), /*   341 T_Mask            */
-  S_ST( 'e',	0,        0,     0 ), /*   342 T_Maxage          */
-  S_ST( 'k',	0,        0,     0 ), /*   343 T_Maxclock        */
-  S_ST( 'h',	0,        0,     0 ), /*   344 T_Maxdepth        */
-  S_ST( 't',	0,        0,     0 ), /*   345 T_Maxdist         */
-  S_ST( 'm',	0,        0,     0 ), /*   346 T_Maxmem          */
-  S_ST( 'l',	0,        0,     0 ), /*   347 T_Maxpoll         */
-  S_ST( 's',	0,        0,     0 ), /*   348 T_Mdnstries       */
-  S_ST( 'm',	0,      522,     0 ), /*   349 T_Mem             */
-  S_ST( 'k',	0,        0,     0 ), /*   350 T_Memlock         */
-  S_ST( 'k',	0,        0,     0 ), /*   351 T_Minclock        */
-  S_ST( 'h',	0,        0,     0 ), /*   352 T_Mindepth        */
-  S_ST( 't',	0,        0,     0 ), /*   353 T_Mindist         */
-  S_ST( 'm',	0,        0,     0 ), /*   354 T_Minimum         */
-  S_ST( 'l',	0,        0,     0 ), /*   355 T_Minpoll         */
-  S_ST( 'e',	0,        0,     0 ), /*   356 T_Minsane         */
-  S_ST( 'e',	0,      358,     0 ), /*   357 T_Mode            */
-  S_ST( '7',	0,        0,     0 ), /*   358 T_Mode7           */
-  S_ST( 'r',	0,        0,     0 ), /*   359 T_Monitor         */
-  S_ST( 'h',	0,        0,     0 ), /*   360 T_Month           */
-  S_ST( 'u',	0,        0,     0 ), /*   361 T_Mru             */
-  S_ST( 't',	2,        0,     0 ), /*   362 T_Multicastclient */
-  S_ST( 'c',	0,        0,     0 ), /*   363 T_Nic             */
-  S_ST( 'k',	0,        0,     0 ), /*   364 T_Nolink          */
-  S_ST( 'y',	0,        0,     0 ), /*   365 T_Nomodify        */
-  S_ST( 't',	0,        0,     0 ), /*   366 T_Nomrulist       */
-  S_ST( 'e',	0,        0,     0 ), /*   367 T_None            */
-  S_ST( 'e',	0,        0,     0 ), /*   368 T_Nonvolatile     */
-  S_ST( 'r',	0,        0,     0 ), /*   369 T_Nopeer          */
-  S_ST( 'y',	0,        0,     0 ), /*   370 T_Noquery         */
-  S_ST( 't',	0,        0,     0 ), /*   371 T_Noselect        */
-  S_ST( 'e',	0,        0,     0 ), /*   372 T_Noserve         */
-  S_ST( 'p',	0,        0,     0 ), /*   373 T_Notrap          */
-  S_ST( 't',	0,        0,     0 ), /*   374 T_Notrust         */
-  S_ST( 'p',	0,      618,     0 ), /*   375 T_Ntp             */
-  S_ST( 't',	0,        0,     0 ), /*   376 T_Ntpport         */
-  S_ST( 't',	1,        0,     0 ), /*   377 T_NtpSignDsocket  */
-  S_ST( 'n',	0,      633,     0 ), /*   378 T_Orphan          */
-  S_ST( 't',	0,        0,     0 ), /*   379 T_Orphanwait      */
-  S_ST( 'y',	0,        0,     0 ), /*   380 T_PCEdigest       */
-  S_ST( 'c',	0,        0,     0 ), /*   381 T_Panic           */
-  S_ST( 'r',	1,      660,     0 ), /*   382 T_Peer            */
-  S_ST( 's',	0,        0,     0 ), /*   383 T_Peerstats       */
-  S_ST( 'e',	2,        0,     0 ), /*   384 T_Phone           */
-  S_ST( 'd',	0,      668,     0 ), /*   385 T_Pid             */
-  S_ST( 'e',	1,        0,     0 ), /*   386 T_Pidfile         */
-  S_ST( 'l',	1,        0,     0 ), /*   387 T_Pool            */
-  S_ST( 't',	0,        0,     0 ), /*   388 T_Port            */
-  S_ST( 't',	0,        0,     0 ), /*   389 T_Preempt         */
-  S_ST( 'r',	0,        0,     0 ), /*   390 T_Prefer          */
-  S_ST( 's',	0,        0,     0 ), /*   391 T_Protostats      */
-  S_ST( 'w',	1,        0,   674 ), /*   392 T_Pw              */
-  S_ST( 'e',	1,        0,     0 ), /*   393 T_Randfile        */
-  S_ST( 's',	0,        0,     0 ), /*   394 T_Rawstats        */
-  S_ST( 'd',	1,        0,     0 ), /*   395 T_Refid           */
-  S_ST( 'y',	0,        0,     0 ), /*   396 T_Requestkey      */
-  S_ST( 't',	0,        0,     0 ), /*   397 T_Reset           */
-  S_ST( 't',	0,        0,     0 ), /*   398 T_Restrict        */
-  S_ST( 'e',	0,        0,     0 ), /*   399 T_Revoke          */
-  S_ST( 't',	0,        0,     0 ), /*   400 T_Rlimit          */
-  S_ST( 'r',	1,        0,     0 ), /*   401 T_Saveconfigdir   */
-  S_ST( 'r',	1,      751,     0 ), /*   402 T_Server          */
-  S_ST( 'r',	1,        0,     0 ), /*   403 T_Setvar          */
-  S_ST( 'e',	0,        0,     0 ), /*   404 T_Source          */
-  S_ST( 'e',	0,        0,     0 ), /*   405 T_Stacksize       */
-  S_ST( 's',	0,        0,     0 ), /*   406 T_Statistics      */
-  S_ST( 's',	0,      794,   789 ), /*   407 T_Stats           */
-  S_ST( 'r',	1,        0,     0 ), /*   408 T_Statsdir        */
-  S_ST( 'p',	0,      802,     0 ), /*   409 T_Step            */
-  S_ST( 'k',	0,        0,     0 ), /*   410 T_Stepback        */
-  S_ST( 'd',	0,        0,     0 ), /*   411 T_Stepfwd         */
-  S_ST( 't',	0,        0,     0 ), /*   412 T_Stepout         */
-  S_ST( 'm',	0,        0,     0 ), /*   413 T_Stratum         */
-  S_ST( 'e',	3,      332,     0 ), /*   414 limit             */
-  S_ST( 's',	0,      809,     0 ), /*   415 T_Sys             */
-  S_ST( 's',	0,        0,     0 ), /*   416 T_Sysstats        */
-  S_ST( 'k',	0,        0,     0 ), /*   417 T_Tick            */
-  S_ST( '1',	0,        0,     0 ), /*   418 T_Time1           */
-  S_ST( '2',	0,        0,   418 ), /*   419 T_Time2           */
-  S_ST( 'r',	0,        0,   419 ), /*   420 T_Timer           */
-  S_ST( 's',	0,        0,     0 ), /*   421 T_Timingstats     */
-  S_ST( 'r',	0,        0,     0 ), /*   422 T_Tinker          */
-  S_ST( 's',	0,        0,     0 ), /*   423 T_Tos             */
-  S_ST( 'p',	1,        0,     0 ), /*   424 T_Trap            */
-  S_ST( 'e',	0,        0,     0 ), /*   425 T_True            */
-  S_ST( 'y',	0,        0,     0 ), /*   426 T_Trustedkey      */
-  S_ST( 'l',	0,        0,     0 ), /*   427 T_Ttl             */
-  S_ST( 'e',	0,        0,     0 ), /*   428 T_Type            */
-  S_ST( 'n',	3,      333,   294 ), /*   429 li                */
-  S_ST( 'y',	0,        0,     0 ), /*   430 T_UEcrypto        */
-  S_ST( 'y',	0,        0,     0 ), /*   431 T_UEcryptonak     */
-  S_ST( 'y',	0,        0,     0 ), /*   432 T_UEdigest        */
-  S_ST( 'g',	1,        0,     0 ), /*   433 T_Unconfig        */
-  S_ST( 'r',	1,      851,     0 ), /*   434 T_Unpeer          */
-  S_ST( 'n',	0,        0,     0 ), /*   435 T_Version         */
-  S_ST( 's',	3,      441,   429 ), /*   436 li                */
-  S_ST( 'k',	0,        0,     0 ), /*   437 T_Week            */
-  S_ST( 'd',	0,        0,     0 ), /*   438 T_Wildcard        */
-  S_ST( 'e',	0,        0,     0 ), /*   439 T_Xleave          */
-  S_ST( 'r',	0,        0,     0 ), /*   440 T_Year            */
-  S_ST( 't',	3,      442,     0 ), /*   441 lis               */
-  S_ST( 'e',	3,      334,     0 ), /*   442 list              */
-  S_ST( 'e',	0,        0,     0 ), /*   443 T_Simulate        */
-  S_ST( 'y',	0,        0,     0 ), /*   444 T_Beep_Delay      */
-  S_ST( 'n',	0,        0,     0 ), /*   445 T_Sim_Duration    */
-  S_ST( 't',	0,        0,     0 ), /*   446 T_Server_Offset   */
-  S_ST( 'n',	0,        0,     0 ), /*   447 T_Duration        */
-  S_ST( 't',	0,        0,     0 ), /*   448 T_Freq_Offset     */
-  S_ST( 'r',	0,        0,     0 ), /*   449 T_Wander          */
-  S_ST( 'r',	0,        0,     0 ), /*   450 T_Jitter          */
-  S_ST( 'y',	0,        0,     0 ), /*   451 T_Prop_Delay      */
-  S_ST( 'y',	0,        0,     0 ), /*   452 T_Proc_Delay      */
-  S_ST( 'o',	3,      469,   287 ), /*   453 l                 */
-  S_ST( 'g',	3,      460,     0 ), /*   454 lo                */
-  S_ST( 'c',	3,      456,     0 ), /*   455 log               */
-  S_ST( 'o',	3,      457,     0 ), /*   456 logc              */
-  S_ST( 'n',	3,      458,     0 ), /*   457 logco             */
-  S_ST( 'f',	3,      459,     0 ), /*   458 logcon            */
-  S_ST( 'i',	3,      335,     0 ), /*   459 logconf           */
-  S_ST( 'f',	3,      461,   455 ), /*   460 log               */
-  S_ST( 'i',	3,      462,     0 ), /*   461 logf              */
-  S_ST( 'l',	3,      336,     0 ), /*   462 logfi             */
-  S_ST( 'o',	3,      464,   454 ), /*   463 lo                */
-  S_ST( 'p',	3,      465,     0 ), /*   464 loo               */
-  S_ST( 's',	3,      466,     0 ), /*   465 loop              */
-  S_ST( 't',	3,      467,     0 ), /*   466 loops             */
-  S_ST( 'a',	3,      468,     0 ), /*   467 loopst            */
-  S_ST( 't',	3,      337,     0 ), /*   468 loopsta           */
-  S_ST( 'w',	3,      470,   463 ), /*   469 lo                */
-  S_ST( 'p',	3,      471,     0 ), /*   470 low               */
-  S_ST( 'r',	3,      472,     0 ), /*   471 lowp              */
-  S_ST( 'i',	3,      473,     0 ), /*   472 lowpr             */
-  S_ST( 'o',	3,      474,     0 ), /*   473 lowpri            */
-  S_ST( 't',	3,      475,     0 ), /*   474 lowprio           */
-  S_ST( 'r',	3,      476,     0 ), /*   475 lowpriot          */
-  S_ST( 'a',	3,      338,     0 ), /*   476 lowpriotr         */
-  S_ST( 'm',	3,      558,   239 ), /*   477                   */
-  S_ST( 'a',	3,      496,     0 ), /*   478 m                 */
-  S_ST( 'n',	3,      480,     0 ), /*   479 ma                */
-  S_ST( 'y',	3,      481,     0 ), /*   480 man               */
-  S_ST( 'c',	3,      482,     0 ), /*   481 many              */
-  S_ST( 'a',	3,      483,     0 ), /*   482 manyc             */
-  S_ST( 's',	3,      484,     0 ), /*   483 manyca            */
-  S_ST( 't',	3,      490,     0 ), /*   484 manycas           */
-  S_ST( 'c',	3,      486,     0 ), /*   485 manycast          */
-  S_ST( 'l',	3,      487,     0 ), /*   486 manycastc         */
-  S_ST( 'i',	3,      488,     0 ), /*   487 manycastcl        */
-  S_ST( 'e',	3,      489,     0 ), /*   488 manycastcli       */
-  S_ST( 'n',	3,      339,     0 ), /*   489 manycastclie      */
-  S_ST( 's',	3,      491,   485 ), /*   490 manycast          */
-  S_ST( 'e',	3,      492,     0 ), /*   491 manycasts         */
-  S_ST( 'r',	3,      493,     0 ), /*   492 manycastse        */
-  S_ST( 'v',	3,      494,     0 ), /*   493 manycastser       */
-  S_ST( 'e',	3,      340,     0 ), /*   494 manycastserv      */
-  S_ST( 's',	3,      341,   479 ), /*   495 ma                */
-  S_ST( 'x',	3,      511,   495 ), /*   496 ma                */
-  S_ST( 'a',	3,      498,     0 ), /*   497 max               */
-  S_ST( 'g',	3,      342,     0 ), /*   498 maxa              */
-  S_ST( 'c',	3,      500,   497 ), /*   499 max               */
-  S_ST( 'l',	3,      501,     0 ), /*   500 maxc              */
-  S_ST( 'o',	3,      502,     0 ), /*   501 maxcl             */
-  S_ST( 'c',	3,      343,     0 ), /*   502 maxclo            */
-  S_ST( 'd',	3,      507,   499 ), /*   503 max               */
-  S_ST( 'e',	3,      505,     0 ), /*   504 maxd              */
-  S_ST( 'p',	3,      506,     0 ), /*   505 maxde             */
-  S_ST( 't',	3,      344,     0 ), /*   506 maxdep            */
-  S_ST( 'i',	3,      508,   504 ), /*   507 maxd              */
-  S_ST( 's',	3,      345,     0 ), /*   508 maxdi             */
-  S_ST( 'm',	3,      510,   503 ), /*   509 max               */
-  S_ST( 'e',	3,      346,     0 ), /*   510 maxm              */
-  S_ST( 'p',	3,      512,   509 ), /*   511 max               */
-  S_ST( 'o',	3,      513,     0 ), /*   512 maxp              */
-  S_ST( 'l',	3,      347,     0 ), /*   513 maxpo             */
-  S_ST( 'd',	3,      515,   478 ), /*   514 m                 */
-  S_ST( 'n',	3,      516,     0 ), /*   515 md                */
-  S_ST( 's',	3,      517,     0 ), /*   516 mdn               */
-  S_ST( 't',	3,      518,     0 ), /*   517 mdns              */
-  S_ST( 'r',	3,      519,     0 ), /*   518 mdnst             */
-  S_ST( 'i',	3,      520,     0 ), /*   519 mdnstr            */
-  S_ST( 'e',	3,      348,     0 ), /*   520 mdnstri           */
-  S_ST( 'e',	3,      349,   514 ), /*   521 m                 */
-  S_ST( 'l',	3,      523,     0 ), /*   522 mem               */
-  S_ST( 'o',	3,      524,     0 ), /*   523 meml              */
-  S_ST( 'c',	3,      350,     0 ), /*   524 memlo             */
-  S_ST( 'i',	3,      526,   521 ), /*   525 m                 */
-  S_ST( 'n',	3,      543,     0 ), /*   526 mi                */
-  S_ST( 'c',	3,      528,     0 ), /*   527 min               */
-  S_ST( 'l',	3,      529,     0 ), /*   528 minc              */
-  S_ST( 'o',	3,      530,     0 ), /*   529 mincl             */
-  S_ST( 'c',	3,      351,     0 ), /*   530 minclo            */
-  S_ST( 'd',	3,      535,   527 ), /*   531 min               */
-  S_ST( 'e',	3,      533,     0 ), /*   532 mind              */
-  S_ST( 'p',	3,      534,     0 ), /*   533 minde             */
-  S_ST( 't',	3,      352,     0 ), /*   534 mindep            */
-  S_ST( 'i',	3,      536,   532 ), /*   535 mind              */
-  S_ST( 's',	3,      353,     0 ), /*   536 mindi             */
-  S_ST( 'i',	3,      538,   531 ), /*   537 min               */
-  S_ST( 'm',	3,      539,     0 ), /*   538 mini              */
-  S_ST( 'u',	3,      354,     0 ), /*   539 minim             */
-  S_ST( 'p',	3,      541,   537 ), /*   540 min               */
-  S_ST( 'o',	3,      542,     0 ), /*   541 minp              */
-  S_ST( 'l',	3,      355,     0 ), /*   542 minpo             */
-  S_ST( 's',	3,      544,   540 ), /*   543 min               */
-  S_ST( 'a',	3,      545,     0 ), /*   544 mins              */
-  S_ST( 'n',	3,      356,     0 ), /*   545 minsa             */
-  S_ST( 'o',	3,      548,   525 ), /*   546 m                 */
-  S_ST( 'd',	3,      357,     0 ), /*   547 mo                */
-  S_ST( 'n',	3,      552,   547 ), /*   548 mo                */
-  S_ST( 'i',	3,      550,     0 ), /*   549 mon               */
-  S_ST( 't',	3,      551,     0 ), /*   550 moni              */
-  S_ST( 'o',	3,      359,     0 ), /*   551 monit             */
-  S_ST( 't',	3,      360,   549 ), /*   552 mon               */
-  S_ST( 'r',	3,      361,   546 ), /*   553 m                 */
-  S_ST( 's',	3,      555,   553 ), /*   554 m                 */
-  S_ST( 's',	3,      556,     0 ), /*   555 ms                */
-  S_ST( 'n',	3,      557,     0 ), /*   556 mss               */
-  S_ST( 't',	3,      329,     0 ), /*   557 mssn              */
-  S_ST( 'u',	3,      559,   554 ), /*   558 m                 */
-  S_ST( 'l',	3,      560,     0 ), /*   559 mu                */
-  S_ST( 't',	3,      561,     0 ), /*   560 mul               */
-  S_ST( 'i',	3,      562,     0 ), /*   561 mult              */
-  S_ST( 'c',	3,      563,     0 ), /*   562 multi             */
-  S_ST( 'a',	3,      564,     0 ), /*   563 multic            */
-  S_ST( 's',	3,      565,     0 ), /*   564 multica           */
-  S_ST( 't',	3,      566,     0 ), /*   565 multicas          */
-  S_ST( 'c',	3,      567,     0 ), /*   566 multicast         */
-  S_ST( 'l',	3,      568,     0 ), /*   567 multicastc        */
-  S_ST( 'i',	3,      569,     0 ), /*   568 multicastcl       */
-  S_ST( 'e',	3,      570,     0 ), /*   569 multicastcli      */
-  S_ST( 'n',	3,      362,     0 ), /*   570 multicastclie     */
-  S_ST( 'n',	3,      614,   477 ), /*   571                   */
-  S_ST( 'i',	3,      363,     0 ), /*   572 n                 */
-  S_ST( 'o',	3,      609,   572 ), /*   573 n                 */
-  S_ST( 'l',	3,      575,     0 ), /*   574 no                */
-  S_ST( 'i',	3,      576,     0 ), /*   575 nol               */
-  S_ST( 'n',	3,      364,     0 ), /*   576 noli              */
-  S_ST( 'm',	3,      582,   574 ), /*   577 no                */
-  S_ST( 'o',	3,      579,     0 ), /*   578 nom               */
-  S_ST( 'd',	3,      580,     0 ), /*   579 nomo              */
-  S_ST( 'i',	3,      581,     0 ), /*   580 nomod             */
-  S_ST( 'f',	3,      365,     0 ), /*   581 nomodi            */
-  S_ST( 'r',	3,      583,   578 ), /*   582 nom               */
-  S_ST( 'u',	3,      584,     0 ), /*   583 nomr              */
-  S_ST( 'l',	3,      585,     0 ), /*   584 nomru             */
-  S_ST( 'i',	3,      586,     0 ), /*   585 nomrul            */
-  S_ST( 's',	3,      366,     0 ), /*   586 nomruli           */
-  S_ST( 'n',	3,      588,   577 ), /*   587 no                */
-  S_ST( 'v',	3,      589,   367 ), /*   588 non               */
-  S_ST( 'o',	3,      590,     0 ), /*   589 nonv              */
-  S_ST( 'l',	3,      591,     0 ), /*   590 nonvo             */
-  S_ST( 'a',	3,      592,     0 ), /*   591 nonvol            */
-  S_ST( 't',	3,      593,     0 ), /*   592 nonvola           */
-  S_ST( 'i',	3,      594,     0 ), /*   593 nonvolat          */
-  S_ST( 'l',	3,      368,     0 ), /*   594 nonvolati         */
-  S_ST( 'p',	3,      596,   587 ), /*   595 no                */
-  S_ST( 'e',	3,      597,     0 ), /*   596 nop               */
-  S_ST( 'e',	3,      369,     0 ), /*   597 nope              */
-  S_ST( 'q',	3,      599,   595 ), /*   598 no                */
-  S_ST( 'u',	3,      600,     0 ), /*   599 noq               */
-  S_ST( 'e',	3,      601,     0 ), /*   600 noqu              */
-  S_ST( 'r',	3,      370,     0 ), /*   601 noque             */
-  S_ST( 's',	3,      603,   598 ), /*   602 no                */
-  S_ST( 'e',	3,      607,     0 ), /*   603 nos               */
-  S_ST( 'l',	3,      605,     0 ), /*   604 nose              */
-  S_ST( 'e',	3,      606,     0 ), /*   605 nosel             */
-  S_ST( 'c',	3,      371,     0 ), /*   606 nosele            */
-  S_ST( 'r',	3,      608,   604 ), /*   607 nose              */
-  S_ST( 'v',	3,      372,     0 ), /*   608 noser             */
-  S_ST( 't',	3,      610,   602 ), /*   609 no                */
-  S_ST( 'r',	3,      612,     0 ), /*   610 not               */
-  S_ST( 'a',	3,      373,     0 ), /*   611 notr              */
-  S_ST( 'u',	3,      613,   611 ), /*   612 notr              */
-  S_ST( 's',	3,      374,     0 ), /*   613 notru             */
-  S_ST( 't',	3,      375,   573 ), /*   614 n                 */
-  S_ST( 'p',	3,      616,     0 ), /*   615 ntp               */
-  S_ST( 'o',	3,      617,     0 ), /*   616 ntpp              */
-  S_ST( 'r',	3,      376,     0 ), /*   617 ntppo             */
-  S_ST( 's',	3,      619,   615 ), /*   618 ntp               */
-  S_ST( 'i',	3,      620,     0 ), /*   619 ntps              */
-  S_ST( 'g',	3,      621,     0 ), /*   620 ntpsi             */
-  S_ST( 'n',	3,      622,     0 ), /*   621 ntpsig            */
-  S_ST( 'd',	3,      623,     0 ), /*   622 ntpsign           */
-  S_ST( 's',	3,      624,     0 ), /*   623 ntpsignd          */
-  S_ST( 'o',	3,      625,     0 ), /*   624 ntpsignds         */
-  S_ST( 'c',	3,      626,     0 ), /*   625 ntpsigndso        */
-  S_ST( 'k',	3,      627,     0 ), /*   626 ntpsigndsoc       */
-  S_ST( 'e',	3,      377,     0 ), /*   627 ntpsigndsock      */
-  S_ST( 'o',	3,      629,   571 ), /*   628                   */
-  S_ST( 'r',	3,      630,     0 ), /*   629 o                 */
-  S_ST( 'p',	3,      631,     0 ), /*   630 or                */
-  S_ST( 'h',	3,      632,     0 ), /*   631 orp               */
-  S_ST( 'a',	3,      378,     0 ), /*   632 orph              */
-  S_ST( 'w',	3,      634,     0 ), /*   633 orphan            */
-  S_ST( 'a',	3,      635,     0 ), /*   634 orphanw           */
-  S_ST( 'i',	3,      379,     0 ), /*   635 orphanwa          */
-  S_ST( 'p',	3,      392,   628 ), /*   636                   */
-  S_ST( 'a',	3,      638,     0 ), /*   637 p                 */
-  S_ST( 'n',	3,      639,     0 ), /*   638 pa                */
-  S_ST( 'i',	3,      381,     0 ), /*   639 pan               */
-  S_ST( 'e',	3,      641,   637 ), /*   640 p                 */
-  S_ST( 'e',	3,      382,     0 ), /*   641 pe                */
-  S_ST( '_',	3,      643,     0 ), /*   642 peer              */
-  S_ST( 'c',	3,      644,     0 ), /*   643 peer_             */
-  S_ST( 'l',	3,      645,     0 ), /*   644 peer_c            */
-  S_ST( 'e',	3,      646,     0 ), /*   645 peer_cl           */
-  S_ST( 'a',	3,      647,     0 ), /*   646 peer_cle          */
-  S_ST( 'r',	3,      648,     0 ), /*   647 peer_clea         */
-  S_ST( '_',	3,      649,     0 ), /*   648 peer_clear        */
-  S_ST( 'd',	3,      650,     0 ), /*   649 peer_clear_       */
-  S_ST( 'i',	3,      651,     0 ), /*   650 peer_clear_d      */
-  S_ST( 'g',	3,      652,     0 ), /*   651 peer_clear_di     */
-  S_ST( 'e',	3,      653,     0 ), /*   652 peer_clear_dig    */
-  S_ST( 's',	3,      654,     0 ), /*   653 peer_clear_dige   */
-  S_ST( 't',	3,      655,     0 ), /*   654 peer_clear_diges  */
-  S_ST( '_',	3,      656,     0 ), /*   655 peer_clear_digest */
-  S_ST( 'e',	3,      657,     0 ), /*   656 peer_clear_digest_ */
-  S_ST( 'a',	3,      658,     0 ), /*   657 peer_clear_digest_e */
-  S_ST( 'r',	3,      659,     0 ), /*   658 peer_clear_digest_ea */
-  S_ST( 'l',	3,      380,     0 ), /*   659 peer_clear_digest_ear */
-  S_ST( 's',	3,      661,   642 ), /*   660 peer              */
-  S_ST( 't',	3,      662,     0 ), /*   661 peers             */
-  S_ST( 'a',	3,      663,     0 ), /*   662 peerst            */
-  S_ST( 't',	3,      383,     0 ), /*   663 peersta           */
-  S_ST( 'h',	3,      665,   640 ), /*   664 p                 */
-  S_ST( 'o',	3,      666,     0 ), /*   665 ph                */
-  S_ST( 'n',	3,      384,     0 ), /*   666 pho               */
-  S_ST( 'i',	3,      385,   664 ), /*   667 p                 */
-  S_ST( 'f',	3,      669,     0 ), /*   668 pid               */
-  S_ST( 'i',	3,      670,     0 ), /*   669 pidf              */
-  S_ST( 'l',	3,      386,     0 ), /*   670 pidfi             */
-  S_ST( 'o',	3,      673,   667 ), /*   671 p                 */
-  S_ST( 'o',	3,      387,     0 ), /*   672 po                */
-  S_ST( 'r',	3,      388,   672 ), /*   673 po                */
-  S_ST( 'r',	3,      681,   671 ), /*   674 p                 */
-  S_ST( 'e',	3,      679,     0 ), /*   675 pr                */
-  S_ST( 'e',	3,      677,     0 ), /*   676 pre               */
-  S_ST( 'm',	3,      678,     0 ), /*   677 pree              */
-  S_ST( 'p',	3,      389,     0 ), /*   678 preem             */
-  S_ST( 'f',	3,      680,   676 ), /*   679 pre               */
-  S_ST( 'e',	3,      390,     0 ), /*   680 pref              */
-  S_ST( 'o',	3,      694,   675 ), /*   681 pr                */
-  S_ST( 'c',	3,      683,     0 ), /*   682 pro               */
-  S_ST( '_',	3,      684,     0 ), /*   683 proc              */
-  S_ST( 'd',	3,      685,     0 ), /*   684 proc_             */
-  S_ST( 'e',	3,      686,     0 ), /*   685 proc_d            */
-  S_ST( 'l',	3,      687,     0 ), /*   686 proc_de           */
-  S_ST( 'a',	3,      452,     0 ), /*   687 proc_del          */
-  S_ST( 'p',	3,      689,   682 ), /*   688 pro               */
-  S_ST( '_',	3,      690,     0 ), /*   689 prop              */
-  S_ST( 'd',	3,      691,     0 ), /*   690 prop_             */
-  S_ST( 'e',	3,      692,     0 ), /*   691 prop_d            */
-  S_ST( 'l',	3,      693,     0 ), /*   692 prop_de           */
-  S_ST( 'a',	3,      451,     0 ), /*   693 prop_del          */
-  S_ST( 't',	3,      695,   688 ), /*   694 pro               */
-  S_ST( 'o',	3,      696,     0 ), /*   695 prot              */
-  S_ST( 's',	3,      697,     0 ), /*   696 proto             */
-  S_ST( 't',	3,      698,     0 ), /*   697 protos            */
-  S_ST( 'a',	3,      699,     0 ), /*   698 protost           */
-  S_ST( 't',	3,      391,     0 ), /*   699 protosta          */
-  S_ST( 'r',	3,      731,   636 ), /*   700                   */
-  S_ST( 'a',	3,      707,     0 ), /*   701 r                 */
-  S_ST( 'n',	3,      703,     0 ), /*   702 ra                */
-  S_ST( 'd',	3,      704,     0 ), /*   703 ran               */
-  S_ST( 'f',	3,      705,     0 ), /*   704 rand              */
-  S_ST( 'i',	3,      706,     0 ), /*   705 randf             */
-  S_ST( 'l',	3,      393,     0 ), /*   706 randfi            */
-  S_ST( 'w',	3,      708,   702 ), /*   707 ra                */
-  S_ST( 's',	3,      709,     0 ), /*   708 raw               */
-  S_ST( 't',	3,      710,     0 ), /*   709 raws              */
-  S_ST( 'a',	3,      711,     0 ), /*   710 rawst             */
-  S_ST( 't',	3,      394,     0 ), /*   711 rawsta            */
-  S_ST( 'e',	3,      728,   701 ), /*   712 r                 */
-  S_ST( 'f',	3,      714,     0 ), /*   713 re                */
-  S_ST( 'i',	3,      395,     0 ), /*   714 ref               */
-  S_ST( 'q',	3,      716,   713 ), /*   715 re                */
-  S_ST( 'u',	3,      717,     0 ), /*   716 req               */
-  S_ST( 'e',	3,      718,     0 ), /*   717 requ              */
-  S_ST( 's',	3,      719,     0 ), /*   718 reque             */
-  S_ST( 't',	3,      720,     0 ), /*   719 reques            */
-  S_ST( 'k',	3,      721,     0 ), /*   720 request           */
-  S_ST( 'e',	3,      396,     0 ), /*   721 requestk          */
-  S_ST( 's',	3,      724,   715 ), /*   722 re                */
-  S_ST( 'e',	3,      397,     0 ), /*   723 res               */
-  S_ST( 't',	3,      725,   723 ), /*   724 res               */
-  S_ST( 'r',	3,      726,     0 ), /*   725 rest              */
-  S_ST( 'i',	3,      727,     0 ), /*   726 restr             */
-  S_ST( 'c',	3,      398,     0 ), /*   727 restri            */
-  S_ST( 'v',	3,      729,   722 ), /*   728 re                */
-  S_ST( 'o',	3,      730,     0 ), /*   729 rev               */
-  S_ST( 'k',	3,      399,     0 ), /*   730 revo              */
-  S_ST( 'l',	3,      732,   712 ), /*   731 r                 */
-  S_ST( 'i',	3,      733,     0 ), /*   732 rl                */
-  S_ST( 'm',	3,      734,     0 ), /*   733 rli               */
-  S_ST( 'i',	3,      400,     0 ), /*   734 rlim              */
-  S_ST( 's',	3,      808,   700 ), /*   735                   */
-  S_ST( 'a',	3,      737,     0 ), /*   736 s                 */
-  S_ST( 'v',	3,      738,     0 ), /*   737 sa                */
-  S_ST( 'e',	3,      739,     0 ), /*   738 sav               */
-  S_ST( 'c',	3,      740,     0 ), /*   739 save              */
-  S_ST( 'o',	3,      741,     0 ), /*   740 savec             */
-  S_ST( 'n',	3,      742,     0 ), /*   741 saveco            */
-  S_ST( 'f',	3,      743,     0 ), /*   742 savecon           */
-  S_ST( 'i',	3,      744,     0 ), /*   743 saveconf          */
-  S_ST( 'g',	3,      745,     0 ), /*   744 saveconfi         */
-  S_ST( 'd',	3,      746,     0 ), /*   745 saveconfig        */
-  S_ST( 'i',	3,      401,     0 ), /*   746 saveconfigd       */
-  S_ST( 'e',	3,      757,   736 ), /*   747 s                 */
-  S_ST( 'r',	3,      749,     0 ), /*   748 se                */
-  S_ST( 'v',	3,      750,     0 ), /*   749 ser               */
-  S_ST( 'e',	3,      402,     0 ), /*   750 serv              */
-  S_ST( '_',	3,      752,     0 ), /*   751 server            */
-  S_ST( 'o',	3,      753,     0 ), /*   752 server_           */
-  S_ST( 'f',	3,      754,     0 ), /*   753 server_o          */
-  S_ST( 'f',	3,      755,     0 ), /*   754 server_of         */
-  S_ST( 's',	3,      756,     0 ), /*   755 server_off        */
-  S_ST( 'e',	3,      446,     0 ), /*   756 server_offs       */
-  S_ST( 't',	3,      758,   748 ), /*   757 se                */
-  S_ST( 'v',	3,      759,     0 ), /*   758 set               */
-  S_ST( 'a',	3,      403,     0 ), /*   759 setv              */
-  S_ST( 'i',	3,      761,   747 ), /*   760 s                 */
-  S_ST( 'm',	3,      762,     0 ), /*   761 si                */
-  S_ST( 'u',	3,      763,     0 ), /*   762 sim               */
-  S_ST( 'l',	3,      764,     0 ), /*   763 simu              */
-  S_ST( 'a',	3,      765,     0 ), /*   764 simul             */
-  S_ST( 't',	3,      766,     0 ), /*   765 simula            */
-  S_ST( 'i',	3,      767,   443 ), /*   766 simulat           */
-  S_ST( 'o',	3,      768,     0 ), /*   767 simulati          */
-  S_ST( 'n',	3,      769,     0 ), /*   768 simulatio         */
-  S_ST( '_',	3,      770,     0 ), /*   769 simulation        */
-  S_ST( 'd',	3,      771,     0 ), /*   770 simulation_       */
-  S_ST( 'u',	3,      772,     0 ), /*   771 simulation_d      */
-  S_ST( 'r',	3,      773,     0 ), /*   772 simulation_du     */
-  S_ST( 'a',	3,      774,     0 ), /*   773 simulation_dur    */
-  S_ST( 't',	3,      775,     0 ), /*   774 simulation_dura   */
-  S_ST( 'i',	3,      776,     0 ), /*   775 simulation_durat  */
-  S_ST( 'o',	3,      445,     0 ), /*   776 simulation_durati */
-  S_ST( 'o',	3,      778,   760 ), /*   777 s                 */
-  S_ST( 'u',	3,      779,     0 ), /*   778 so                */
-  S_ST( 'r',	3,      780,     0 ), /*   779 sou               */
-  S_ST( 'c',	3,      404,     0 ), /*   780 sour              */
-  S_ST( 't',	3,      804,   777 ), /*   781 s                 */
-  S_ST( 'a',	3,      788,     0 ), /*   782 st                */
-  S_ST( 'c',	3,      784,     0 ), /*   783 sta               */
-  S_ST( 'k',	3,      785,     0 ), /*   784 stac              */
-  S_ST( 's',	3,      786,     0 ), /*   785 stack             */
-  S_ST( 'i',	3,      787,     0 ), /*   786 stacks            */
-  S_ST( 'z',	3,      405,     0 ), /*   787 stacksi           */
-  S_ST( 't',	3,      407,   783 ), /*   788 sta               */
-  S_ST( 'i',	3,      790,     0 ), /*   789 stat              */
-  S_ST( 's',	3,      791,     0 ), /*   790 stati             */
-  S_ST( 't',	3,      792,     0 ), /*   791 statis            */
-  S_ST( 'i',	3,      793,     0 ), /*   792 statist           */
-  S_ST( 'c',	3,      406,     0 ), /*   793 statisti          */
-  S_ST( 'd',	3,      795,     0 ), /*   794 stats             */
-  S_ST( 'i',	3,      408,     0 ), /*   795 statsd            */
-  S_ST( 'e',	3,      409,   782 ), /*   796 st                */
-  S_ST( 'b',	3,      798,     0 ), /*   797 step              */
-  S_ST( 'a',	3,      799,     0 ), /*   798 stepb             */
-  S_ST( 'c',	3,      410,     0 ), /*   799 stepba            */
-  S_ST( 'f',	3,      801,   797 ), /*   800 step              */
-  S_ST( 'w',	3,      411,     0 ), /*   801 stepf             */
-  S_ST( 'o',	3,      803,   800 ), /*   802 step              */
-  S_ST( 'u',	3,      412,     0 ), /*   803 stepo             */
-  S_ST( 'r',	3,      805,   796 ), /*   804 st                */
-  S_ST( 'a',	3,      806,     0 ), /*   805 str               */
-  S_ST( 't',	3,      807,     0 ), /*   806 stra              */
-  S_ST( 'u',	3,      413,     0 ), /*   807 strat             */
-  S_ST( 'y',	3,      415,   781 ), /*   808 s                 */
-  S_ST( 's',	3,      810,     0 ), /*   809 sys               */
-  S_ST( 't',	3,      811,     0 ), /*   810 syss              */
-  S_ST( 'a',	3,      812,     0 ), /*   811 sysst             */
-  S_ST( 't',	3,      416,     0 ), /*   812 syssta            */
-  S_ST( 't',	3,      839,   735 ), /*   813                   */
-  S_ST( 'i',	3,      825,     0 ), /*   814 t                 */
-  S_ST( 'c',	3,      417,     0 ), /*   815 ti                */
-  S_ST( 'm',	3,      818,   815 ), /*   816 ti                */
-  S_ST( 'e',	3,      420,     0 ), /*   817 tim               */
-  S_ST( 'i',	3,      819,   817 ), /*   818 tim               */
-  S_ST( 'n',	3,      820,     0 ), /*   819 timi              */
-  S_ST( 'g',	3,      821,     0 ), /*   820 timin             */
-  S_ST( 's',	3,      822,     0 ), /*   821 timing            */
-  S_ST( 't',	3,      823,     0 ), /*   822 timings           */
-  S_ST( 'a',	3,      824,     0 ), /*   823 timingst          */
-  S_ST( 't',	3,      421,     0 ), /*   824 timingsta         */
-  S_ST( 'n',	3,      826,   816 ), /*   825 ti                */
-  S_ST( 'k',	3,      827,     0 ), /*   826 tin               */
-  S_ST( 'e',	3,      422,     0 ), /*   827 tink              */
-  S_ST( 'o',	3,      423,   814 ), /*   828 t                 */
-  S_ST( 'r',	3,      831,   828 ), /*   829 t                 */
-  S_ST( 'a',	3,      424,     0 ), /*   830 tr                */
-  S_ST( 'u',	3,      832,   830 ), /*   831 tr                */
-  S_ST( 's',	3,      833,   425 ), /*   832 tru               */
-  S_ST( 't',	3,      834,     0 ), /*   833 trus              */
-  S_ST( 'e',	3,      835,     0 ), /*   834 trust             */
-  S_ST( 'd',	3,      836,     0 ), /*   835 truste            */
-  S_ST( 'k',	3,      837,     0 ), /*   836 trusted           */
-  S_ST( 'e',	3,      426,     0 ), /*   837 trustedk          */
-  S_ST( 't',	3,      427,   829 ), /*   838 t                 */
-  S_ST( 'y',	3,      840,   838 ), /*   839 t                 */
-  S_ST( 'p',	3,      428,     0 ), /*   840 ty                */
-  S_ST( 'u',	3,      842,   813 ), /*   841                   */
-  S_ST( 'n',	3,      848,     0 ), /*   842 u                 */
-  S_ST( 'c',	3,      844,     0 ), /*   843 un                */
-  S_ST( 'o',	3,      845,     0 ), /*   844 unc               */
-  S_ST( 'n',	3,      846,     0 ), /*   845 unco              */
-  S_ST( 'f',	3,      847,     0 ), /*   846 uncon             */
-  S_ST( 'i',	3,      433,     0 ), /*   847 unconf            */
-  S_ST( 'p',	3,      849,   843 ), /*   848 un                */
-  S_ST( 'e',	3,      850,     0 ), /*   849 unp               */
-  S_ST( 'e',	3,      434,     0 ), /*   850 unpe              */
-  S_ST( '_',	3,      871,     0 ), /*   851 unpeer            */
-  S_ST( 'c',	3,      853,     0 ), /*   852 unpeer_           */
-  S_ST( 'r',	3,      854,     0 ), /*   853 unpeer_c          */
-  S_ST( 'y',	3,      855,     0 ), /*   854 unpeer_cr         */
-  S_ST( 'p',	3,      856,     0 ), /*   855 unpeer_cry        */
-  S_ST( 't',	3,      857,     0 ), /*   856 unpeer_cryp       */
-  S_ST( 'o',	3,      858,     0 ), /*   857 unpeer_crypt      */
-  S_ST( '_',	3,      863,     0 ), /*   858 unpeer_crypto     */
-  S_ST( 'e',	3,      860,     0 ), /*   859 unpeer_crypto_    */
-  S_ST( 'a',	3,      861,     0 ), /*   860 unpeer_crypto_e   */
-  S_ST( 'r',	3,      862,     0 ), /*   861 unpeer_crypto_ea  */
-  S_ST( 'l',	3,      430,     0 ), /*   862 unpeer_crypto_ear */
-  S_ST( 'n',	3,      864,   859 ), /*   863 unpeer_crypto_    */
-  S_ST( 'a',	3,      865,     0 ), /*   864 unpeer_crypto_n   */
-  S_ST( 'k',	3,      866,     0 ), /*   865 unpeer_crypto_na  */
-  S_ST( '_',	3,      867,     0 ), /*   866 unpeer_crypto_nak */
-  S_ST( 'e',	3,      868,     0 ), /*   867 unpeer_crypto_nak_ */
-  S_ST( 'a',	3,      869,     0 ), /*   868 unpeer_crypto_nak_e */
-  S_ST( 'r',	3,      870,     0 ), /*   869 unpeer_crypto_nak_ea */
-  S_ST( 'l',	3,      431,     0 ), /*   870 unpeer_crypto_nak_ear */
-  S_ST( 'd',	3,      872,   852 ), /*   871 unpeer_           */
-  S_ST( 'i',	3,      873,     0 ), /*   872 unpeer_d          */
-  S_ST( 'g',	3,      874,     0 ), /*   873 unpeer_di         */
-  S_ST( 'e',	3,      875,     0 ), /*   874 unpeer_dig        */
-  S_ST( 's',	3,      876,     0 ), /*   875 unpeer_dige       */
-  S_ST( 't',	3,      877,     0 ), /*   876 unpeer_diges      */
-  S_ST( '_',	3,      878,     0 ), /*   877 unpeer_digest     */
-  S_ST( 'e',	3,      879,     0 ), /*   878 unpeer_digest_    */
-  S_ST( 'a',	3,      880,     0 ), /*   879 unpeer_digest_e   */
-  S_ST( 'r',	3,      881,     0 ), /*   880 unpeer_digest_ea  */
-  S_ST( 'l',	3,      432,     0 ), /*   881 unpeer_digest_ear */
-  S_ST( 'v',	3,      883,   841 ), /*   882                   */
-  S_ST( 'e',	3,      884,     0 ), /*   883 v                 */
-  S_ST( 'r',	3,      885,     0 ), /*   884 ve                */
-  S_ST( 's',	3,      886,     0 ), /*   885 ver               */
-  S_ST( 'i',	3,      887,     0 ), /*   886 vers              */
-  S_ST( 'o',	3,      435,     0 ), /*   887 versi             */
-  S_ST( 'w',	3,      895,   882 ), /*   888                   */
-  S_ST( 'a',	3,      890,     0 ), /*   889 w                 */
-  S_ST( 'n',	3,      891,     0 ), /*   890 wa                */
-  S_ST( 'd',	3,      892,     0 ), /*   891 wan               */
-  S_ST( 'e',	3,      449,     0 ), /*   892 wand              */
-  S_ST( 'e',	3,      894,   889 ), /*   893 w                 */
-  S_ST( 'e',	3,      437,     0 ), /*   894 we                */
-  S_ST( 'i',	3,      896,   893 ), /*   895 w                 */
-  S_ST( 'l',	3,      897,     0 ), /*   896 wi                */
-  S_ST( 'd',	3,      898,     0 ), /*   897 wil               */
-  S_ST( 'c',	3,      899,     0 ), /*   898 wild              */
-  S_ST( 'a',	3,      900,     0 ), /*   899 wildc             */
-  S_ST( 'r',	3,      438,     0 ), /*   900 wildca            */
-  S_ST( 'x',	3,      902,   888 ), /*   901                   */
-  S_ST( 'l',	3,      903,     0 ), /*   902 x                 */
-  S_ST( 'e',	3,      904,     0 ), /*   903 xl                */
-  S_ST( 'a',	3,      905,     0 ), /*   904 xle               */
-  S_ST( 'v',	3,      439,     0 ), /*   905 xlea              */
-  S_ST( 'y',	3,      907,   901 ), /*   906 [initial state]   */
-  S_ST( 'e',	3,      908,     0 ), /*   907 y                 */
-  S_ST( 'a',	3,      440,     0 )  /*   908 ye                */
+  S_ST( 'p',	0,        0,     0 ), /*   268 T_Bcpollbstep     */
+  S_ST( 'n',	0,        0,     0 ), /*   269 T_Beacon          */
+  S_ST( 't',	1,       65,     0 ), /*   270 T_Broadcast       */
+  S_ST( 't',	0,        0,     0 ), /*   271 T_Broadcastclient */
+  S_ST( 'y',	0,        0,     0 ), /*   272 T_Broadcastdelay  */
+  S_ST( 't',	0,        0,     0 ), /*   273 T_Burst           */
+  S_ST( 'e',	0,        0,     0 ), /*   274 T_Calibrate       */
+  S_ST( 'g',	0,        0,     0 ), /*   275 T_Ceiling         */
+  S_ST( 's',	0,        0,     0 ), /*   276 T_Clockstats      */
+  S_ST( 't',	0,        0,     0 ), /*   277 T_Cohort          */
+  S_ST( 'y',	0,        0,     0 ), /*   278 T_ControlKey      */
+  S_ST( 'o',	0,      108,     0 ), /*   279 T_Crypto          */
+  S_ST( 's',	0,        0,     0 ), /*   280 T_Cryptostats     */
+  S_ST( 'l',	0,        0,     0 ), /*   281 T_Ctl             */
+  S_ST( 'y',	0,        0,     0 ), /*   282 T_Day             */
+  S_ST( 't',	0,        0,     0 ), /*   283 T_Default         */
+  S_ST( 't',	1,        0,     0 ), /*   284 T_Digest          */
+  S_ST( 'e',	0,        0,     0 ), /*   285 T_Disable         */
+  S_ST( 'd',	0,        0,     0 ), /*   286 T_Discard         */
+  S_ST( 'n',	0,        0,     0 ), /*   287 T_Dispersion      */
+  S_ST( 'r',	3,      295,     0 ), /*   288 leapsmea          */
+  S_ST( 'e',	1,        0,     0 ), /*   289 T_Driftfile       */
+  S_ST( 'p',	0,        0,     0 ), /*   290 T_Drop            */
+  S_ST( 'p',	0,        0,     0 ), /*   291 T_Dscp            */
+  S_ST( '.',	0,        0,     0 ), /*   292 T_Ellipsis        */
+  S_ST( 'e',	0,        0,     0 ), /*   293 T_Enable          */
+  S_ST( 'd',	0,        0,   155 ), /*   294 T_End             */
+  S_ST( 'i',	3,      317,     0 ), /*   295 leapsmear         */
+  S_ST( 'e',	1,      163,     0 ), /*   296 T_File            */
+  S_ST( 'n',	0,        0,     0 ), /*   297 T_Filegen         */
+  S_ST( 'm',	0,        0,     0 ), /*   298 T_Filenum         */
+  S_ST( '1',	0,        0,     0 ), /*   299 T_Flag1           */
+  S_ST( '2',	0,        0,   299 ), /*   300 T_Flag2           */
+  S_ST( '3',	0,        0,   300 ), /*   301 T_Flag3           */
+  S_ST( '4',	0,        0,   301 ), /*   302 T_Flag4           */
+  S_ST( 'e',	0,        0,     0 ), /*   303 T_Flake           */
+  S_ST( 'r',	0,        0,     0 ), /*   304 T_Floor           */
+  S_ST( 'q',	0,      173,     0 ), /*   305 T_Freq            */
+  S_ST( 'e',	1,        0,     0 ), /*   306 T_Fudge           */
+  S_ST( 't',	1,        0,     0 ), /*   307 T_Host            */
+  S_ST( 'f',	0,        0,     0 ), /*   308 T_Huffpuff        */
+  S_ST( 't',	0,        0,     0 ), /*   309 T_Iburst          */
+  S_ST( 't',	1,        0,     0 ), /*   310 T_Ident           */
+  S_ST( 'e',	0,        0,     0 ), /*   311 T_Ignore          */
+  S_ST( 'c',	0,        0,     0 ), /*   312 T_Incalloc        */
+  S_ST( 'm',	0,        0,     0 ), /*   313 T_Incmem          */
+  S_ST( 'c',	0,        0,     0 ), /*   314 T_Initalloc       */
+  S_ST( 'm',	0,        0,     0 ), /*   315 T_Initmem         */
+  S_ST( 'e',	1,        0,     0 ), /*   316 T_Includefile     */
+  S_ST( 'n',	3,      319,     0 ), /*   317 leapsmeari        */
+  S_ST( 'e',	0,        0,     0 ), /*   318 T_Interface       */
+  S_ST( 't',	3,      415,     0 ), /*   319 leapsmearin       */
+  S_ST( 'o',	0,        0,   203 ), /*   320 T_Io              */
+  S_ST( '4',	0,        0,     0 ), /*   321 T_Ipv4            */
+  S_ST( '4',	0,        0,     0 ), /*   322 T_Ipv4_flag       */
+  S_ST( '6',	0,        0,   321 ), /*   323 T_Ipv6            */
+  S_ST( '6',	0,        0,   322 ), /*   324 T_Ipv6_flag       */
+  S_ST( 'l',	0,        0,     0 ), /*   325 T_Kernel          */
+  S_ST( 'y',	0,      327,   241 ), /*   326 T_Key             */
+  S_ST( 's',	1,      244,     0 ), /*   327 T_Keys            */
+  S_ST( 'r',	1,        0,     0 ), /*   328 T_Keysdir         */
+  S_ST( 'd',	0,        0,     0 ), /*   329 T_Kod             */
+  S_ST( 'p',	0,        0,     0 ), /*   330 T_Mssntp          */
+  S_ST( 'e',	1,        0,     0 ), /*   331 T_Leapfile        */
+  S_ST( 'l',	0,        0,     0 ), /*   332 T_Leapsmearinterval */
+  S_ST( 'd',	0,        0,     0 ), /*   333 T_Limited         */
+  S_ST( 'k',	0,        0,     0 ), /*   334 T_Link            */
+  S_ST( 'n',	0,        0,     0 ), /*   335 T_Listen          */
+  S_ST( 'g',	2,        0,     0 ), /*   336 T_Logconfig       */
+  S_ST( 'e',	1,        0,     0 ), /*   337 T_Logfile         */
+  S_ST( 's',	0,        0,     0 ), /*   338 T_Loopstats       */
+  S_ST( 'p',	0,        0,     0 ), /*   339 T_Lowpriotrap     */
+  S_ST( 't',	1,        0,     0 ), /*   340 T_Manycastclient  */
+  S_ST( 'r',	2,        0,     0 ), /*   341 T_Manycastserver  */
+  S_ST( 'k',	0,        0,     0 ), /*   342 T_Mask            */
+  S_ST( 'e',	0,        0,     0 ), /*   343 T_Maxage          */
+  S_ST( 'k',	0,        0,     0 ), /*   344 T_Maxclock        */
+  S_ST( 'h',	0,        0,     0 ), /*   345 T_Maxdepth        */
+  S_ST( 't',	0,        0,     0 ), /*   346 T_Maxdist         */
+  S_ST( 'm',	0,        0,     0 ), /*   347 T_Maxmem          */
+  S_ST( 'l',	0,        0,     0 ), /*   348 T_Maxpoll         */
+  S_ST( 's',	0,        0,     0 ), /*   349 T_Mdnstries       */
+  S_ST( 'm',	0,      531,     0 ), /*   350 T_Mem             */
+  S_ST( 'k',	0,        0,     0 ), /*   351 T_Memlock         */
+  S_ST( 'k',	0,        0,     0 ), /*   352 T_Minclock        */
+  S_ST( 'h',	0,        0,     0 ), /*   353 T_Mindepth        */
+  S_ST( 't',	0,        0,     0 ), /*   354 T_Mindist         */
+  S_ST( 'm',	0,        0,     0 ), /*   355 T_Minimum         */
+  S_ST( 'l',	0,        0,     0 ), /*   356 T_Minpoll         */
+  S_ST( 'e',	0,        0,     0 ), /*   357 T_Minsane         */
+  S_ST( 'e',	0,      359,     0 ), /*   358 T_Mode            */
+  S_ST( '7',	0,        0,     0 ), /*   359 T_Mode7           */
+  S_ST( 'r',	0,        0,     0 ), /*   360 T_Monitor         */
+  S_ST( 'h',	0,        0,     0 ), /*   361 T_Month           */
+  S_ST( 'u',	0,        0,     0 ), /*   362 T_Mru             */
+  S_ST( 't',	2,        0,     0 ), /*   363 T_Multicastclient */
+  S_ST( 'c',	0,        0,     0 ), /*   364 T_Nic             */
+  S_ST( 'k',	0,        0,     0 ), /*   365 T_Nolink          */
+  S_ST( 'y',	0,        0,     0 ), /*   366 T_Nomodify        */
+  S_ST( 't',	0,        0,     0 ), /*   367 T_Nomrulist       */
+  S_ST( 'e',	0,        0,     0 ), /*   368 T_None            */
+  S_ST( 'e',	0,        0,     0 ), /*   369 T_Nonvolatile     */
+  S_ST( 'r',	0,        0,     0 ), /*   370 T_Nopeer          */
+  S_ST( 'y',	0,        0,     0 ), /*   371 T_Noquery         */
+  S_ST( 't',	0,        0,     0 ), /*   372 T_Noselect        */
+  S_ST( 'e',	0,        0,     0 ), /*   373 T_Noserve         */
+  S_ST( 'p',	0,        0,     0 ), /*   374 T_Notrap          */
+  S_ST( 't',	0,        0,     0 ), /*   375 T_Notrust         */
+  S_ST( 'p',	0,      627,     0 ), /*   376 T_Ntp             */
+  S_ST( 't',	0,        0,     0 ), /*   377 T_Ntpport         */
+  S_ST( 't',	1,        0,     0 ), /*   378 T_NtpSignDsocket  */
+  S_ST( 'n',	0,      642,     0 ), /*   379 T_Orphan          */
+  S_ST( 't',	0,        0,     0 ), /*   380 T_Orphanwait      */
+  S_ST( 'y',	0,        0,     0 ), /*   381 T_PCEdigest       */
+  S_ST( 'c',	0,        0,     0 ), /*   382 T_Panic           */
+  S_ST( 'r',	1,      669,     0 ), /*   383 T_Peer            */
+  S_ST( 's',	0,        0,     0 ), /*   384 T_Peerstats       */
+  S_ST( 'e',	2,        0,     0 ), /*   385 T_Phone           */
+  S_ST( 'd',	0,      677,     0 ), /*   386 T_Pid             */
+  S_ST( 'e',	1,        0,     0 ), /*   387 T_Pidfile         */
+  S_ST( 'l',	1,        0,     0 ), /*   388 T_Pool            */
+  S_ST( 't',	0,        0,     0 ), /*   389 T_Port            */
+  S_ST( 't',	0,        0,     0 ), /*   390 T_Preempt         */
+  S_ST( 'r',	0,        0,     0 ), /*   391 T_Prefer          */
+  S_ST( 's',	0,        0,     0 ), /*   392 T_Protostats      */
+  S_ST( 'w',	1,        0,   683 ), /*   393 T_Pw              */
+  S_ST( 'e',	1,        0,     0 ), /*   394 T_Randfile        */
+  S_ST( 's',	0,        0,     0 ), /*   395 T_Rawstats        */
+  S_ST( 'd',	1,        0,     0 ), /*   396 T_Refid           */
+  S_ST( 'y',	0,        0,     0 ), /*   397 T_Requestkey      */
+  S_ST( 't',	0,        0,     0 ), /*   398 T_Reset           */
+  S_ST( 't',	0,        0,     0 ), /*   399 T_Restrict        */
+  S_ST( 'e',	0,        0,     0 ), /*   400 T_Revoke          */
+  S_ST( 't',	0,        0,     0 ), /*   401 T_Rlimit          */
+  S_ST( 'r',	1,        0,     0 ), /*   402 T_Saveconfigdir   */
+  S_ST( 'r',	1,      760,     0 ), /*   403 T_Server          */
+  S_ST( 'r',	1,        0,     0 ), /*   404 T_Setvar          */
+  S_ST( 'e',	0,        0,     0 ), /*   405 T_Source          */
+  S_ST( 'e',	0,        0,     0 ), /*   406 T_Stacksize       */
+  S_ST( 's',	0,        0,     0 ), /*   407 T_Statistics      */
+  S_ST( 's',	0,      803,   798 ), /*   408 T_Stats           */
+  S_ST( 'r',	1,        0,     0 ), /*   409 T_Statsdir        */
+  S_ST( 'p',	0,      811,     0 ), /*   410 T_Step            */
+  S_ST( 'k',	0,        0,     0 ), /*   411 T_Stepback        */
+  S_ST( 'd',	0,        0,     0 ), /*   412 T_Stepfwd         */
+  S_ST( 't',	0,        0,     0 ), /*   413 T_Stepout         */
+  S_ST( 'm',	0,        0,     0 ), /*   414 T_Stratum         */
+  S_ST( 'e',	3,      430,     0 ), /*   415 leapsmearint      */
+  S_ST( 's',	0,      818,     0 ), /*   416 T_Sys             */
+  S_ST( 's',	0,        0,     0 ), /*   417 T_Sysstats        */
+  S_ST( 'k',	0,        0,     0 ), /*   418 T_Tick            */
+  S_ST( '1',	0,        0,     0 ), /*   419 T_Time1           */
+  S_ST( '2',	0,        0,   419 ), /*   420 T_Time2           */
+  S_ST( 'r',	0,        0,   420 ), /*   421 T_Timer           */
+  S_ST( 's',	0,        0,     0 ), /*   422 T_Timingstats     */
+  S_ST( 'r',	0,        0,     0 ), /*   423 T_Tinker          */
+  S_ST( 's',	0,        0,     0 ), /*   424 T_Tos             */
+  S_ST( 'p',	1,        0,     0 ), /*   425 T_Trap            */
+  S_ST( 'e',	0,        0,     0 ), /*   426 T_True            */
+  S_ST( 'y',	0,        0,     0 ), /*   427 T_Trustedkey      */
+  S_ST( 'l',	0,        0,     0 ), /*   428 T_Ttl             */
+  S_ST( 'e',	0,        0,     0 ), /*   429 T_Type            */
+  S_ST( 'r',	3,      437,     0 ), /*   430 leapsmearinte     */
+  S_ST( 'y',	0,        0,     0 ), /*   431 T_UEcrypto        */
+  S_ST( 'y',	0,        0,     0 ), /*   432 T_UEcryptonak     */
+  S_ST( 'y',	0,        0,     0 ), /*   433 T_UEdigest        */
+  S_ST( 'g',	1,        0,     0 ), /*   434 T_Unconfig        */
+  S_ST( 'r',	1,      860,     0 ), /*   435 T_Unpeer          */
+  S_ST( 'n',	0,        0,     0 ), /*   436 T_Version         */
+  S_ST( 'v',	3,      442,     0 ), /*   437 leapsmearinter    */
+  S_ST( 'k',	0,        0,     0 ), /*   438 T_Week            */
+  S_ST( 'd',	0,        0,     0 ), /*   439 T_Wildcard        */
+  S_ST( 'e',	0,        0,     0 ), /*   440 T_Xleave          */
+  S_ST( 'r',	0,        0,     0 ), /*   441 T_Year            */
+  S_ST( 'a',	3,      332,     0 ), /*   442 leapsmearinterv   */
+  S_ST( 'i',	3,      459,   248 ), /*   443 l                 */
+  S_ST( 'e',	0,        0,     0 ), /*   444 T_Simulate        */
+  S_ST( 'y',	0,        0,     0 ), /*   445 T_Beep_Delay      */
+  S_ST( 'n',	0,        0,     0 ), /*   446 T_Sim_Duration    */
+  S_ST( 't',	0,        0,     0 ), /*   447 T_Server_Offset   */
+  S_ST( 'n',	0,        0,     0 ), /*   448 T_Duration        */
+  S_ST( 't',	0,        0,     0 ), /*   449 T_Freq_Offset     */
+  S_ST( 'r',	0,        0,     0 ), /*   450 T_Wander          */
+  S_ST( 'r',	0,        0,     0 ), /*   451 T_Jitter          */
+  S_ST( 'y',	0,        0,     0 ), /*   452 T_Prop_Delay      */
+  S_ST( 'y',	0,        0,     0 ), /*   453 T_Proc_Delay      */
+  S_ST( 'm',	3,      455,     0 ), /*   454 li                */
+  S_ST( 'i',	3,      456,     0 ), /*   455 lim               */
+  S_ST( 't',	3,      457,     0 ), /*   456 limi              */
+  S_ST( 'e',	3,      333,     0 ), /*   457 limit             */
+  S_ST( 'n',	3,      334,   454 ), /*   458 li                */
+  S_ST( 's',	3,      460,   458 ), /*   459 li                */
+  S_ST( 't',	3,      461,     0 ), /*   460 lis               */
+  S_ST( 'e',	3,      335,     0 ), /*   461 list              */
+  S_ST( 'o',	3,      478,   443 ), /*   462 l                 */
+  S_ST( 'g',	3,      469,     0 ), /*   463 lo                */
+  S_ST( 'c',	3,      465,     0 ), /*   464 log               */
+  S_ST( 'o',	3,      466,     0 ), /*   465 logc              */
+  S_ST( 'n',	3,      467,     0 ), /*   466 logco             */
+  S_ST( 'f',	3,      468,     0 ), /*   467 logcon            */
+  S_ST( 'i',	3,      336,     0 ), /*   468 logconf           */
+  S_ST( 'f',	3,      470,   464 ), /*   469 log               */
+  S_ST( 'i',	3,      471,     0 ), /*   470 logf              */
+  S_ST( 'l',	3,      337,     0 ), /*   471 logfi             */
+  S_ST( 'o',	3,      473,   463 ), /*   472 lo                */
+  S_ST( 'p',	3,      474,     0 ), /*   473 loo               */
+  S_ST( 's',	3,      475,     0 ), /*   474 loop              */
+  S_ST( 't',	3,      476,     0 ), /*   475 loops             */
+  S_ST( 'a',	3,      477,     0 ), /*   476 loopst            */
+  S_ST( 't',	3,      338,     0 ), /*   477 loopsta           */
+  S_ST( 'w',	3,      479,   472 ), /*   478 lo                */
+  S_ST( 'p',	3,      480,     0 ), /*   479 low               */
+  S_ST( 'r',	3,      481,     0 ), /*   480 lowp              */
+  S_ST( 'i',	3,      482,     0 ), /*   481 lowpr             */
+  S_ST( 'o',	3,      483,     0 ), /*   482 lowpri            */
+  S_ST( 't',	3,      484,     0 ), /*   483 lowprio           */
+  S_ST( 'r',	3,      485,     0 ), /*   484 lowpriot          */
+  S_ST( 'a',	3,      339,     0 ), /*   485 lowpriotr         */
+  S_ST( 'm',	3,      567,   247 ), /*   486                   */
+  S_ST( 'a',	3,      505,     0 ), /*   487 m                 */
+  S_ST( 'n',	3,      489,     0 ), /*   488 ma                */
+  S_ST( 'y',	3,      490,     0 ), /*   489 man               */
+  S_ST( 'c',	3,      491,     0 ), /*   490 many              */
+  S_ST( 'a',	3,      492,     0 ), /*   491 manyc             */
+  S_ST( 's',	3,      493,     0 ), /*   492 manyca            */
+  S_ST( 't',	3,      499,     0 ), /*   493 manycas           */
+  S_ST( 'c',	3,      495,     0 ), /*   494 manycast          */
+  S_ST( 'l',	3,      496,     0 ), /*   495 manycastc         */
+  S_ST( 'i',	3,      497,     0 ), /*   496 manycastcl        */
+  S_ST( 'e',	3,      498,     0 ), /*   497 manycastcli       */
+  S_ST( 'n',	3,      340,     0 ), /*   498 manycastclie      */
+  S_ST( 's',	3,      500,   494 ), /*   499 manycast          */
+  S_ST( 'e',	3,      501,     0 ), /*   500 manycasts         */
+  S_ST( 'r',	3,      502,     0 ), /*   501 manycastse        */
+  S_ST( 'v',	3,      503,     0 ), /*   502 manycastser       */
+  S_ST( 'e',	3,      341,     0 ), /*   503 manycastserv      */
+  S_ST( 's',	3,      342,   488 ), /*   504 ma                */
+  S_ST( 'x',	3,      520,   504 ), /*   505 ma                */
+  S_ST( 'a',	3,      507,     0 ), /*   506 max               */
+  S_ST( 'g',	3,      343,     0 ), /*   507 maxa              */
+  S_ST( 'c',	3,      509,   506 ), /*   508 max               */
+  S_ST( 'l',	3,      510,     0 ), /*   509 maxc              */
+  S_ST( 'o',	3,      511,     0 ), /*   510 maxcl             */
+  S_ST( 'c',	3,      344,     0 ), /*   511 maxclo            */
+  S_ST( 'd',	3,      516,   508 ), /*   512 max               */
+  S_ST( 'e',	3,      514,     0 ), /*   513 maxd              */
+  S_ST( 'p',	3,      515,     0 ), /*   514 maxde             */
+  S_ST( 't',	3,      345,     0 ), /*   515 maxdep            */
+  S_ST( 'i',	3,      517,   513 ), /*   516 maxd              */
+  S_ST( 's',	3,      346,     0 ), /*   517 maxdi             */
+  S_ST( 'm',	3,      519,   512 ), /*   518 max               */
+  S_ST( 'e',	3,      347,     0 ), /*   519 maxm              */
+  S_ST( 'p',	3,      521,   518 ), /*   520 max               */
+  S_ST( 'o',	3,      522,     0 ), /*   521 maxp              */
+  S_ST( 'l',	3,      348,     0 ), /*   522 maxpo             */
+  S_ST( 'd',	3,      524,   487 ), /*   523 m                 */
+  S_ST( 'n',	3,      525,     0 ), /*   524 md                */
+  S_ST( 's',	3,      526,     0 ), /*   525 mdn               */
+  S_ST( 't',	3,      527,     0 ), /*   526 mdns              */
+  S_ST( 'r',	3,      528,     0 ), /*   527 mdnst             */
+  S_ST( 'i',	3,      529,     0 ), /*   528 mdnstr            */
+  S_ST( 'e',	3,      349,     0 ), /*   529 mdnstri           */
+  S_ST( 'e',	3,      350,   523 ), /*   530 m                 */
+  S_ST( 'l',	3,      532,     0 ), /*   531 mem               */
+  S_ST( 'o',	3,      533,     0 ), /*   532 meml              */
+  S_ST( 'c',	3,      351,     0 ), /*   533 memlo             */
+  S_ST( 'i',	3,      535,   530 ), /*   534 m                 */
+  S_ST( 'n',	3,      552,     0 ), /*   535 mi                */
+  S_ST( 'c',	3,      537,     0 ), /*   536 min               */
+  S_ST( 'l',	3,      538,     0 ), /*   537 minc              */
+  S_ST( 'o',	3,      539,     0 ), /*   538 mincl             */
+  S_ST( 'c',	3,      352,     0 ), /*   539 minclo            */
+  S_ST( 'd',	3,      544,   536 ), /*   540 min               */
+  S_ST( 'e',	3,      542,     0 ), /*   541 mind              */
+  S_ST( 'p',	3,      543,     0 ), /*   542 minde             */
+  S_ST( 't',	3,      353,     0 ), /*   543 mindep            */
+  S_ST( 'i',	3,      545,   541 ), /*   544 mind              */
+  S_ST( 's',	3,      354,     0 ), /*   545 mindi             */
+  S_ST( 'i',	3,      547,   540 ), /*   546 min               */
+  S_ST( 'm',	3,      548,     0 ), /*   547 mini              */
+  S_ST( 'u',	3,      355,     0 ), /*   548 minim             */
+  S_ST( 'p',	3,      550,   546 ), /*   549 min               */
+  S_ST( 'o',	3,      551,     0 ), /*   550 minp              */
+  S_ST( 'l',	3,      356,     0 ), /*   551 minpo             */
+  S_ST( 's',	3,      553,   549 ), /*   552 min               */
+  S_ST( 'a',	3,      554,     0 ), /*   553 mins              */
+  S_ST( 'n',	3,      357,     0 ), /*   554 minsa             */
+  S_ST( 'o',	3,      557,   534 ), /*   555 m                 */
+  S_ST( 'd',	3,      358,     0 ), /*   556 mo                */
+  S_ST( 'n',	3,      561,   556 ), /*   557 mo                */
+  S_ST( 'i',	3,      559,     0 ), /*   558 mon               */
+  S_ST( 't',	3,      560,     0 ), /*   559 moni              */
+  S_ST( 'o',	3,      360,     0 ), /*   560 monit             */
+  S_ST( 't',	3,      361,   558 ), /*   561 mon               */
+  S_ST( 'r',	3,      362,   555 ), /*   562 m                 */
+  S_ST( 's',	3,      564,   562 ), /*   563 m                 */
+  S_ST( 's',	3,      565,     0 ), /*   564 ms                */
+  S_ST( 'n',	3,      566,     0 ), /*   565 mss               */
+  S_ST( 't',	3,      330,     0 ), /*   566 mssn              */
+  S_ST( 'u',	3,      568,   563 ), /*   567 m                 */
+  S_ST( 'l',	3,      569,     0 ), /*   568 mu                */
+  S_ST( 't',	3,      570,     0 ), /*   569 mul               */
+  S_ST( 'i',	3,      571,     0 ), /*   570 mult              */
+  S_ST( 'c',	3,      572,     0 ), /*   571 multi             */
+  S_ST( 'a',	3,      573,     0 ), /*   572 multic            */
+  S_ST( 's',	3,      574,     0 ), /*   573 multica           */
+  S_ST( 't',	3,      575,     0 ), /*   574 multicas          */
+  S_ST( 'c',	3,      576,     0 ), /*   575 multicast         */
+  S_ST( 'l',	3,      577,     0 ), /*   576 multicastc        */
+  S_ST( 'i',	3,      578,     0 ), /*   577 multicastcl       */
+  S_ST( 'e',	3,      579,     0 ), /*   578 multicastcli      */
+  S_ST( 'n',	3,      363,     0 ), /*   579 multicastclie     */
+  S_ST( 'n',	3,      623,   486 ), /*   580                   */
+  S_ST( 'i',	3,      364,     0 ), /*   581 n                 */
+  S_ST( 'o',	3,      618,   581 ), /*   582 n                 */
+  S_ST( 'l',	3,      584,     0 ), /*   583 no                */
+  S_ST( 'i',	3,      585,     0 ), /*   584 nol               */
+  S_ST( 'n',	3,      365,     0 ), /*   585 noli              */
+  S_ST( 'm',	3,      591,   583 ), /*   586 no                */
+  S_ST( 'o',	3,      588,     0 ), /*   587 nom               */
+  S_ST( 'd',	3,      589,     0 ), /*   588 nomo              */
+  S_ST( 'i',	3,      590,     0 ), /*   589 nomod             */
+  S_ST( 'f',	3,      366,     0 ), /*   590 nomodi            */
+  S_ST( 'r',	3,      592,   587 ), /*   591 nom               */
+  S_ST( 'u',	3,      593,     0 ), /*   592 nomr              */
+  S_ST( 'l',	3,      594,     0 ), /*   593 nomru             */
+  S_ST( 'i',	3,      595,     0 ), /*   594 nomrul            */
+  S_ST( 's',	3,      367,     0 ), /*   595 nomruli           */
+  S_ST( 'n',	3,      597,   586 ), /*   596 no                */
+  S_ST( 'v',	3,      598,   368 ), /*   597 non               */
+  S_ST( 'o',	3,      599,     0 ), /*   598 nonv              */
+  S_ST( 'l',	3,      600,     0 ), /*   599 nonvo             */
+  S_ST( 'a',	3,      601,     0 ), /*   600 nonvol            */
+  S_ST( 't',	3,      602,     0 ), /*   601 nonvola           */
+  S_ST( 'i',	3,      603,     0 ), /*   602 nonvolat          */
+  S_ST( 'l',	3,      369,     0 ), /*   603 nonvolati         */
+  S_ST( 'p',	3,      605,   596 ), /*   604 no                */
+  S_ST( 'e',	3,      606,     0 ), /*   605 nop               */
+  S_ST( 'e',	3,      370,     0 ), /*   606 nope              */
+  S_ST( 'q',	3,      608,   604 ), /*   607 no                */
+  S_ST( 'u',	3,      609,     0 ), /*   608 noq               */
+  S_ST( 'e',	3,      610,     0 ), /*   609 noqu              */
+  S_ST( 'r',	3,      371,     0 ), /*   610 noque             */
+  S_ST( 's',	3,      612,   607 ), /*   611 no                */
+  S_ST( 'e',	3,      616,     0 ), /*   612 nos               */
+  S_ST( 'l',	3,      614,     0 ), /*   613 nose              */
+  S_ST( 'e',	3,      615,     0 ), /*   614 nosel             */
+  S_ST( 'c',	3,      372,     0 ), /*   615 nosele            */
+  S_ST( 'r',	3,      617,   613 ), /*   616 nose              */
+  S_ST( 'v',	3,      373,     0 ), /*   617 noser             */
+  S_ST( 't',	3,      619,   611 ), /*   618 no                */
+  S_ST( 'r',	3,      621,     0 ), /*   619 not               */
+  S_ST( 'a',	3,      374,     0 ), /*   620 notr              */
+  S_ST( 'u',	3,      622,   620 ), /*   621 notr              */
+  S_ST( 's',	3,      375,     0 ), /*   622 notru             */
+  S_ST( 't',	3,      376,   582 ), /*   623 n                 */
+  S_ST( 'p',	3,      625,     0 ), /*   624 ntp               */
+  S_ST( 'o',	3,      626,     0 ), /*   625 ntpp              */
+  S_ST( 'r',	3,      377,     0 ), /*   626 ntppo             */
+  S_ST( 's',	3,      628,   624 ), /*   627 ntp               */
+  S_ST( 'i',	3,      629,     0 ), /*   628 ntps              */
+  S_ST( 'g',	3,      630,     0 ), /*   629 ntpsi             */
+  S_ST( 'n',	3,      631,     0 ), /*   630 ntpsig            */
+  S_ST( 'd',	3,      632,     0 ), /*   631 ntpsign           */
+  S_ST( 's',	3,      633,     0 ), /*   632 ntpsignd          */
+  S_ST( 'o',	3,      634,     0 ), /*   633 ntpsignds         */
+  S_ST( 'c',	3,      635,     0 ), /*   634 ntpsigndso        */
+  S_ST( 'k',	3,      636,     0 ), /*   635 ntpsigndsoc       */
+  S_ST( 'e',	3,      378,     0 ), /*   636 ntpsigndsock      */
+  S_ST( 'o',	3,      638,   580 ), /*   637                   */
+  S_ST( 'r',	3,      639,     0 ), /*   638 o                 */
+  S_ST( 'p',	3,      640,     0 ), /*   639 or                */
+  S_ST( 'h',	3,      641,     0 ), /*   640 orp               */
+  S_ST( 'a',	3,      379,     0 ), /*   641 orph              */
+  S_ST( 'w',	3,      643,     0 ), /*   642 orphan            */
+  S_ST( 'a',	3,      644,     0 ), /*   643 orphanw           */
+  S_ST( 'i',	3,      380,     0 ), /*   644 orphanwa          */
+  S_ST( 'p',	3,      393,   637 ), /*   645                   */
+  S_ST( 'a',	3,      647,     0 ), /*   646 p                 */
+  S_ST( 'n',	3,      648,     0 ), /*   647 pa                */
+  S_ST( 'i',	3,      382,     0 ), /*   648 pan               */
+  S_ST( 'e',	3,      650,   646 ), /*   649 p                 */
+  S_ST( 'e',	3,      383,     0 ), /*   650 pe                */
+  S_ST( '_',	3,      652,     0 ), /*   651 peer              */
+  S_ST( 'c',	3,      653,     0 ), /*   652 peer_             */
+  S_ST( 'l',	3,      654,     0 ), /*   653 peer_c            */
+  S_ST( 'e',	3,      655,     0 ), /*   654 peer_cl           */
+  S_ST( 'a',	3,      656,     0 ), /*   655 peer_cle          */
+  S_ST( 'r',	3,      657,     0 ), /*   656 peer_clea         */
+  S_ST( '_',	3,      658,     0 ), /*   657 peer_clear        */
+  S_ST( 'd',	3,      659,     0 ), /*   658 peer_clear_       */
+  S_ST( 'i',	3,      660,     0 ), /*   659 peer_clear_d      */
+  S_ST( 'g',	3,      661,     0 ), /*   660 peer_clear_di     */
+  S_ST( 'e',	3,      662,     0 ), /*   661 peer_clear_dig    */
+  S_ST( 's',	3,      663,     0 ), /*   662 peer_clear_dige   */
+  S_ST( 't',	3,      664,     0 ), /*   663 peer_clear_diges  */
+  S_ST( '_',	3,      665,     0 ), /*   664 peer_clear_digest */
+  S_ST( 'e',	3,      666,     0 ), /*   665 peer_clear_digest_ */
+  S_ST( 'a',	3,      667,     0 ), /*   666 peer_clear_digest_e */
+  S_ST( 'r',	3,      668,     0 ), /*   667 peer_clear_digest_ea */
+  S_ST( 'l',	3,      381,     0 ), /*   668 peer_clear_digest_ear */
+  S_ST( 's',	3,      670,   651 ), /*   669 peer              */
+  S_ST( 't',	3,      671,     0 ), /*   670 peers             */
+  S_ST( 'a',	3,      672,     0 ), /*   671 peerst            */
+  S_ST( 't',	3,      384,     0 ), /*   672 peersta           */
+  S_ST( 'h',	3,      674,   649 ), /*   673 p                 */
+  S_ST( 'o',	3,      675,     0 ), /*   674 ph                */
+  S_ST( 'n',	3,      385,     0 ), /*   675 pho               */
+  S_ST( 'i',	3,      386,   673 ), /*   676 p                 */
+  S_ST( 'f',	3,      678,     0 ), /*   677 pid               */
+  S_ST( 'i',	3,      679,     0 ), /*   678 pidf              */
+  S_ST( 'l',	3,      387,     0 ), /*   679 pidfi             */
+  S_ST( 'o',	3,      682,   676 ), /*   680 p                 */
+  S_ST( 'o',	3,      388,     0 ), /*   681 po                */
+  S_ST( 'r',	3,      389,   681 ), /*   682 po                */
+  S_ST( 'r',	3,      690,   680 ), /*   683 p                 */
+  S_ST( 'e',	3,      688,     0 ), /*   684 pr                */
+  S_ST( 'e',	3,      686,     0 ), /*   685 pre               */
+  S_ST( 'm',	3,      687,     0 ), /*   686 pree              */
+  S_ST( 'p',	3,      390,     0 ), /*   687 preem             */
+  S_ST( 'f',	3,      689,   685 ), /*   688 pre               */
+  S_ST( 'e',	3,      391,     0 ), /*   689 pref              */
+  S_ST( 'o',	3,      703,   684 ), /*   690 pr                */
+  S_ST( 'c',	3,      692,     0 ), /*   691 pro               */
+  S_ST( '_',	3,      693,     0 ), /*   692 proc              */
+  S_ST( 'd',	3,      694,     0 ), /*   693 proc_             */
+  S_ST( 'e',	3,      695,     0 ), /*   694 proc_d            */
+  S_ST( 'l',	3,      696,     0 ), /*   695 proc_de           */
+  S_ST( 'a',	3,      453,     0 ), /*   696 proc_del          */
+  S_ST( 'p',	3,      698,   691 ), /*   697 pro               */
+  S_ST( '_',	3,      699,     0 ), /*   698 prop              */
+  S_ST( 'd',	3,      700,     0 ), /*   699 prop_             */
+  S_ST( 'e',	3,      701,     0 ), /*   700 prop_d            */
+  S_ST( 'l',	3,      702,     0 ), /*   701 prop_de           */
+  S_ST( 'a',	3,      452,     0 ), /*   702 prop_del          */
+  S_ST( 't',	3,      704,   697 ), /*   703 pro               */
+  S_ST( 'o',	3,      705,     0 ), /*   704 prot              */
+  S_ST( 's',	3,      706,     0 ), /*   705 proto             */
+  S_ST( 't',	3,      707,     0 ), /*   706 protos            */
+  S_ST( 'a',	3,      708,     0 ), /*   707 protost           */
+  S_ST( 't',	3,      392,     0 ), /*   708 protosta          */
+  S_ST( 'r',	3,      740,   645 ), /*   709                   */
+  S_ST( 'a',	3,      716,     0 ), /*   710 r                 */
+  S_ST( 'n',	3,      712,     0 ), /*   711 ra                */
+  S_ST( 'd',	3,      713,     0 ), /*   712 ran               */
+  S_ST( 'f',	3,      714,     0 ), /*   713 rand              */
+  S_ST( 'i',	3,      715,     0 ), /*   714 randf             */
+  S_ST( 'l',	3,      394,     0 ), /*   715 randfi            */
+  S_ST( 'w',	3,      717,   711 ), /*   716 ra                */
+  S_ST( 's',	3,      718,     0 ), /*   717 raw               */
+  S_ST( 't',	3,      719,     0 ), /*   718 raws              */
+  S_ST( 'a',	3,      720,     0 ), /*   719 rawst             */
+  S_ST( 't',	3,      395,     0 ), /*   720 rawsta            */
+  S_ST( 'e',	3,      737,   710 ), /*   721 r                 */
+  S_ST( 'f',	3,      723,     0 ), /*   722 re                */
+  S_ST( 'i',	3,      396,     0 ), /*   723 ref               */
+  S_ST( 'q',	3,      725,   722 ), /*   724 re                */
+  S_ST( 'u',	3,      726,     0 ), /*   725 req               */
+  S_ST( 'e',	3,      727,     0 ), /*   726 requ              */
+  S_ST( 's',	3,      728,     0 ), /*   727 reque             */
+  S_ST( 't',	3,      729,     0 ), /*   728 reques            */
+  S_ST( 'k',	3,      730,     0 ), /*   729 request           */
+  S_ST( 'e',	3,      397,     0 ), /*   730 requestk          */
+  S_ST( 's',	3,      733,   724 ), /*   731 re                */
+  S_ST( 'e',	3,      398,     0 ), /*   732 res               */
+  S_ST( 't',	3,      734,   732 ), /*   733 res               */
+  S_ST( 'r',	3,      735,     0 ), /*   734 rest              */
+  S_ST( 'i',	3,      736,     0 ), /*   735 restr             */
+  S_ST( 'c',	3,      399,     0 ), /*   736 restri            */
+  S_ST( 'v',	3,      738,   731 ), /*   737 re                */
+  S_ST( 'o',	3,      739,     0 ), /*   738 rev               */
+  S_ST( 'k',	3,      400,     0 ), /*   739 revo              */
+  S_ST( 'l',	3,      741,   721 ), /*   740 r                 */
+  S_ST( 'i',	3,      742,     0 ), /*   741 rl                */
+  S_ST( 'm',	3,      743,     0 ), /*   742 rli               */
+  S_ST( 'i',	3,      401,     0 ), /*   743 rlim              */
+  S_ST( 's',	3,      817,   709 ), /*   744                   */
+  S_ST( 'a',	3,      746,     0 ), /*   745 s                 */
+  S_ST( 'v',	3,      747,     0 ), /*   746 sa                */
+  S_ST( 'e',	3,      748,     0 ), /*   747 sav               */
+  S_ST( 'c',	3,      749,     0 ), /*   748 save              */
+  S_ST( 'o',	3,      750,     0 ), /*   749 savec             */
+  S_ST( 'n',	3,      751,     0 ), /*   750 saveco            */
+  S_ST( 'f',	3,      752,     0 ), /*   751 savecon           */
+  S_ST( 'i',	3,      753,     0 ), /*   752 saveconf          */
+  S_ST( 'g',	3,      754,     0 ), /*   753 saveconfi         */
+  S_ST( 'd',	3,      755,     0 ), /*   754 saveconfig        */
+  S_ST( 'i',	3,      402,     0 ), /*   755 saveconfigd       */
+  S_ST( 'e',	3,      766,   745 ), /*   756 s                 */
+  S_ST( 'r',	3,      758,     0 ), /*   757 se                */
+  S_ST( 'v',	3,      759,     0 ), /*   758 ser               */
+  S_ST( 'e',	3,      403,     0 ), /*   759 serv              */
+  S_ST( '_',	3,      761,     0 ), /*   760 server            */
+  S_ST( 'o',	3,      762,     0 ), /*   761 server_           */
+  S_ST( 'f',	3,      763,     0 ), /*   762 server_o          */
+  S_ST( 'f',	3,      764,     0 ), /*   763 server_of         */
+  S_ST( 's',	3,      765,     0 ), /*   764 server_off        */
+  S_ST( 'e',	3,      447,     0 ), /*   765 server_offs       */
+  S_ST( 't',	3,      767,   757 ), /*   766 se                */
+  S_ST( 'v',	3,      768,     0 ), /*   767 set               */
+  S_ST( 'a',	3,      404,     0 ), /*   768 setv              */
+  S_ST( 'i',	3,      770,   756 ), /*   769 s                 */
+  S_ST( 'm',	3,      771,     0 ), /*   770 si                */
+  S_ST( 'u',	3,      772,     0 ), /*   771 sim               */
+  S_ST( 'l',	3,      773,     0 ), /*   772 simu              */
+  S_ST( 'a',	3,      774,     0 ), /*   773 simul             */
+  S_ST( 't',	3,      775,     0 ), /*   774 simula            */
+  S_ST( 'i',	3,      776,   444 ), /*   775 simulat           */
+  S_ST( 'o',	3,      777,     0 ), /*   776 simulati          */
+  S_ST( 'n',	3,      778,     0 ), /*   777 simulatio         */
+  S_ST( '_',	3,      779,     0 ), /*   778 simulation        */
+  S_ST( 'd',	3,      780,     0 ), /*   779 simulation_       */
+  S_ST( 'u',	3,      781,     0 ), /*   780 simulation_d      */
+  S_ST( 'r',	3,      782,     0 ), /*   781 simulation_du     */
+  S_ST( 'a',	3,      783,     0 ), /*   782 simulation_dur    */
+  S_ST( 't',	3,      784,     0 ), /*   783 simulation_dura   */
+  S_ST( 'i',	3,      785,     0 ), /*   784 simulation_durat  */
+  S_ST( 'o',	3,      446,     0 ), /*   785 simulation_durati */
+  S_ST( 'o',	3,      787,   769 ), /*   786 s                 */
+  S_ST( 'u',	3,      788,     0 ), /*   787 so                */
+  S_ST( 'r',	3,      789,     0 ), /*   788 sou               */
+  S_ST( 'c',	3,      405,     0 ), /*   789 sour              */
+  S_ST( 't',	3,      813,   786 ), /*   790 s                 */
+  S_ST( 'a',	3,      797,     0 ), /*   791 st                */
+  S_ST( 'c',	3,      793,     0 ), /*   792 sta               */
+  S_ST( 'k',	3,      794,     0 ), /*   793 stac              */
+  S_ST( 's',	3,      795,     0 ), /*   794 stack             */
+  S_ST( 'i',	3,      796,     0 ), /*   795 stacks            */
+  S_ST( 'z',	3,      406,     0 ), /*   796 stacksi           */
+  S_ST( 't',	3,      408,   792 ), /*   797 sta               */
+  S_ST( 'i',	3,      799,     0 ), /*   798 stat              */
+  S_ST( 's',	3,      800,     0 ), /*   799 stati             */
+  S_ST( 't',	3,      801,     0 ), /*   800 statis            */
+  S_ST( 'i',	3,      802,     0 ), /*   801 statist           */
+  S_ST( 'c',	3,      407,     0 ), /*   802 statisti          */
+  S_ST( 'd',	3,      804,     0 ), /*   803 stats             */
+  S_ST( 'i',	3,      409,     0 ), /*   804 statsd            */
+  S_ST( 'e',	3,      410,   791 ), /*   805 st                */
+  S_ST( 'b',	3,      807,     0 ), /*   806 step              */
+  S_ST( 'a',	3,      808,     0 ), /*   807 stepb             */
+  S_ST( 'c',	3,      411,     0 ), /*   808 stepba            */
+  S_ST( 'f',	3,      810,   806 ), /*   809 step              */
+  S_ST( 'w',	3,      412,     0 ), /*   810 stepf             */
+  S_ST( 'o',	3,      812,   809 ), /*   811 step              */
+  S_ST( 'u',	3,      413,     0 ), /*   812 stepo             */
+  S_ST( 'r',	3,      814,   805 ), /*   813 st                */
+  S_ST( 'a',	3,      815,     0 ), /*   814 str               */
+  S_ST( 't',	3,      816,     0 ), /*   815 stra              */
+  S_ST( 'u',	3,      414,     0 ), /*   816 strat             */
+  S_ST( 'y',	3,      416,   790 ), /*   817 s                 */
+  S_ST( 's',	3,      819,     0 ), /*   818 sys               */
+  S_ST( 't',	3,      820,     0 ), /*   819 syss              */
+  S_ST( 'a',	3,      821,     0 ), /*   820 sysst             */
+  S_ST( 't',	3,      417,     0 ), /*   821 syssta            */
+  S_ST( 't',	3,      848,   744 ), /*   822                   */
+  S_ST( 'i',	3,      834,     0 ), /*   823 t                 */
+  S_ST( 'c',	3,      418,     0 ), /*   824 ti                */
+  S_ST( 'm',	3,      827,   824 ), /*   825 ti                */
+  S_ST( 'e',	3,      421,     0 ), /*   826 tim               */
+  S_ST( 'i',	3,      828,   826 ), /*   827 tim               */
+  S_ST( 'n',	3,      829,     0 ), /*   828 timi              */
+  S_ST( 'g',	3,      830,     0 ), /*   829 timin             */
+  S_ST( 's',	3,      831,     0 ), /*   830 timing            */
+  S_ST( 't',	3,      832,     0 ), /*   831 timings           */
+  S_ST( 'a',	3,      833,     0 ), /*   832 timingst          */
+  S_ST( 't',	3,      422,     0 ), /*   833 timingsta         */
+  S_ST( 'n',	3,      835,   825 ), /*   834 ti                */
+  S_ST( 'k',	3,      836,     0 ), /*   835 tin               */
+  S_ST( 'e',	3,      423,     0 ), /*   836 tink              */
+  S_ST( 'o',	3,      424,   823 ), /*   837 t                 */
+  S_ST( 'r',	3,      840,   837 ), /*   838 t                 */
+  S_ST( 'a',	3,      425,     0 ), /*   839 tr                */
+  S_ST( 'u',	3,      841,   839 ), /*   840 tr                */
+  S_ST( 's',	3,      842,   426 ), /*   841 tru               */
+  S_ST( 't',	3,      843,     0 ), /*   842 trus              */
+  S_ST( 'e',	3,      844,     0 ), /*   843 trust             */
+  S_ST( 'd',	3,      845,     0 ), /*   844 truste            */
+  S_ST( 'k',	3,      846,     0 ), /*   845 trusted           */
+  S_ST( 'e',	3,      427,     0 ), /*   846 trustedk          */
+  S_ST( 't',	3,      428,   838 ), /*   847 t                 */
+  S_ST( 'y',	3,      849,   847 ), /*   848 t                 */
+  S_ST( 'p',	3,      429,     0 ), /*   849 ty                */
+  S_ST( 'u',	3,      851,   822 ), /*   850                   */
+  S_ST( 'n',	3,      857,     0 ), /*   851 u                 */
+  S_ST( 'c',	3,      853,     0 ), /*   852 un                */
+  S_ST( 'o',	3,      854,     0 ), /*   853 unc               */
+  S_ST( 'n',	3,      855,     0 ), /*   854 unco              */
+  S_ST( 'f',	3,      856,     0 ), /*   855 uncon             */
+  S_ST( 'i',	3,      434,     0 ), /*   856 unconf            */
+  S_ST( 'p',	3,      858,   852 ), /*   857 un                */
+  S_ST( 'e',	3,      859,     0 ), /*   858 unp               */
+  S_ST( 'e',	3,      435,     0 ), /*   859 unpe              */
+  S_ST( '_',	3,      880,     0 ), /*   860 unpeer            */
+  S_ST( 'c',	3,      862,     0 ), /*   861 unpeer_           */
+  S_ST( 'r',	3,      863,     0 ), /*   862 unpeer_c          */
+  S_ST( 'y',	3,      864,     0 ), /*   863 unpeer_cr         */
+  S_ST( 'p',	3,      865,     0 ), /*   864 unpeer_cry        */
+  S_ST( 't',	3,      866,     0 ), /*   865 unpeer_cryp       */
+  S_ST( 'o',	3,      867,     0 ), /*   866 unpeer_crypt      */
+  S_ST( '_',	3,      872,     0 ), /*   867 unpeer_crypto     */
+  S_ST( 'e',	3,      869,     0 ), /*   868 unpeer_crypto_    */
+  S_ST( 'a',	3,      870,     0 ), /*   869 unpeer_crypto_e   */
+  S_ST( 'r',	3,      871,     0 ), /*   870 unpeer_crypto_ea  */
+  S_ST( 'l',	3,      431,     0 ), /*   871 unpeer_crypto_ear */
+  S_ST( 'n',	3,      873,   868 ), /*   872 unpeer_crypto_    */
+  S_ST( 'a',	3,      874,     0 ), /*   873 unpeer_crypto_n   */
+  S_ST( 'k',	3,      875,     0 ), /*   874 unpeer_crypto_na  */
+  S_ST( '_',	3,      876,     0 ), /*   875 unpeer_crypto_nak */
+  S_ST( 'e',	3,      877,     0 ), /*   876 unpeer_crypto_nak_ */
+  S_ST( 'a',	3,      878,     0 ), /*   877 unpeer_crypto_nak_e */
+  S_ST( 'r',	3,      879,     0 ), /*   878 unpeer_crypto_nak_ea */
+  S_ST( 'l',	3,      432,     0 ), /*   879 unpeer_crypto_nak_ear */
+  S_ST( 'd',	3,      881,   861 ), /*   880 unpeer_           */
+  S_ST( 'i',	3,      882,     0 ), /*   881 unpeer_d          */
+  S_ST( 'g',	3,      883,     0 ), /*   882 unpeer_di         */
+  S_ST( 'e',	3,      884,     0 ), /*   883 unpeer_dig        */
+  S_ST( 's',	3,      885,     0 ), /*   884 unpeer_dige       */
+  S_ST( 't',	3,      886,     0 ), /*   885 unpeer_diges      */
+  S_ST( '_',	3,      887,     0 ), /*   886 unpeer_digest     */
+  S_ST( 'e',	3,      888,     0 ), /*   887 unpeer_digest_    */
+  S_ST( 'a',	3,      889,     0 ), /*   888 unpeer_digest_e   */
+  S_ST( 'r',	3,      890,     0 ), /*   889 unpeer_digest_ea  */
+  S_ST( 'l',	3,      433,     0 ), /*   890 unpeer_digest_ear */
+  S_ST( 'v',	3,      892,   850 ), /*   891                   */
+  S_ST( 'e',	3,      893,     0 ), /*   892 v                 */
+  S_ST( 'r',	3,      894,     0 ), /*   893 ve                */
+  S_ST( 's',	3,      895,     0 ), /*   894 ver               */
+  S_ST( 'i',	3,      896,     0 ), /*   895 vers              */
+  S_ST( 'o',	3,      436,     0 ), /*   896 versi             */
+  S_ST( 'w',	3,      904,   891 ), /*   897                   */
+  S_ST( 'a',	3,      899,     0 ), /*   898 w                 */
+  S_ST( 'n',	3,      900,     0 ), /*   899 wa                */
+  S_ST( 'd',	3,      901,     0 ), /*   900 wan               */
+  S_ST( 'e',	3,      450,     0 ), /*   901 wand              */
+  S_ST( 'e',	3,      903,   898 ), /*   902 w                 */
+  S_ST( 'e',	3,      438,     0 ), /*   903 we                */
+  S_ST( 'i',	3,      905,   902 ), /*   904 w                 */
+  S_ST( 'l',	3,      906,     0 ), /*   905 wi                */
+  S_ST( 'd',	3,      907,     0 ), /*   906 wil               */
+  S_ST( 'c',	3,      908,     0 ), /*   907 wild              */
+  S_ST( 'a',	3,      909,     0 ), /*   908 wildc             */
+  S_ST( 'r',	3,      439,     0 ), /*   909 wildca            */
+  S_ST( 'x',	3,      911,   897 ), /*   910                   */
+  S_ST( 'l',	3,      912,     0 ), /*   911 x                 */
+  S_ST( 'e',	3,      913,     0 ), /*   912 xl                */
+  S_ST( 'a',	3,      914,     0 ), /*   913 xle               */
+  S_ST( 'v',	3,      440,     0 ), /*   914 xlea              */
+  S_ST( 'y',	3,      916,   910 ), /*   915 [initial state]   */
+  S_ST( 'e',	3,      917,     0 ), /*   916 y                 */
+  S_ST( 'a',	3,      441,     0 )  /*   917 ye                */
 };
 
Index: contrib/ntp/ntpd/ntp_parser.h
===================================================================
--- contrib/ntp/ntpd/ntp_parser.h	(版本 309693)
+++ contrib/ntp/ntpd/ntp_parser.h	(版本 310419)
@@ -55,191 +55,192 @@
     T_Automax = 265,
     T_Average = 266,
     T_Bclient = 267,
-    T_Beacon = 268,
-    T_Broadcast = 269,
-    T_Broadcastclient = 270,
-    T_Broadcastdelay = 271,
-    T_Burst = 272,
-    T_Calibrate = 273,
-    T_Ceiling = 274,
-    T_Clockstats = 275,
-    T_Cohort = 276,
-    T_ControlKey = 277,
-    T_Crypto = 278,
-    T_Cryptostats = 279,
-    T_Ctl = 280,
-    T_Day = 281,
-    T_Default = 282,
-    T_Digest = 283,
-    T_Disable = 284,
-    T_Discard = 285,
-    T_Dispersion = 286,
-    T_Double = 287,
-    T_Driftfile = 288,
-    T_Drop = 289,
-    T_Dscp = 290,
-    T_Ellipsis = 291,
-    T_Enable = 292,
-    T_End = 293,
-    T_False = 294,
-    T_File = 295,
-    T_Filegen = 296,
-    T_Filenum = 297,
-    T_Flag1 = 298,
-    T_Flag2 = 299,
-    T_Flag3 = 300,
-    T_Flag4 = 301,
-    T_Flake = 302,
-    T_Floor = 303,
-    T_Freq = 304,
-    T_Fudge = 305,
-    T_Host = 306,
-    T_Huffpuff = 307,
-    T_Iburst = 308,
-    T_Ident = 309,
-    T_Ignore = 310,
-    T_Incalloc = 311,
-    T_Incmem = 312,
-    T_Initalloc = 313,
-    T_Initmem = 314,
-    T_Includefile = 315,
-    T_Integer = 316,
-    T_Interface = 317,
-    T_Intrange = 318,
-    T_Io = 319,
-    T_Ipv4 = 320,
-    T_Ipv4_flag = 321,
-    T_Ipv6 = 322,
-    T_Ipv6_flag = 323,
-    T_Kernel = 324,
-    T_Key = 325,
-    T_Keys = 326,
-    T_Keysdir = 327,
-    T_Kod = 328,
-    T_Mssntp = 329,
-    T_Leapfile = 330,
-    T_Leapsmearinterval = 331,
-    T_Limited = 332,
-    T_Link = 333,
-    T_Listen = 334,
-    T_Logconfig = 335,
-    T_Logfile = 336,
-    T_Loopstats = 337,
-    T_Lowpriotrap = 338,
-    T_Manycastclient = 339,
-    T_Manycastserver = 340,
-    T_Mask = 341,
-    T_Maxage = 342,
-    T_Maxclock = 343,
-    T_Maxdepth = 344,
-    T_Maxdist = 345,
-    T_Maxmem = 346,
-    T_Maxpoll = 347,
-    T_Mdnstries = 348,
-    T_Mem = 349,
-    T_Memlock = 350,
-    T_Minclock = 351,
-    T_Mindepth = 352,
-    T_Mindist = 353,
-    T_Minimum = 354,
-    T_Minpoll = 355,
-    T_Minsane = 356,
-    T_Mode = 357,
-    T_Mode7 = 358,
-    T_Monitor = 359,
-    T_Month = 360,
-    T_Mru = 361,
-    T_Multicastclient = 362,
-    T_Nic = 363,
-    T_Nolink = 364,
-    T_Nomodify = 365,
-    T_Nomrulist = 366,
-    T_None = 367,
-    T_Nonvolatile = 368,
-    T_Nopeer = 369,
-    T_Noquery = 370,
-    T_Noselect = 371,
-    T_Noserve = 372,
-    T_Notrap = 373,
-    T_Notrust = 374,
-    T_Ntp = 375,
-    T_Ntpport = 376,
-    T_NtpSignDsocket = 377,
-    T_Orphan = 378,
-    T_Orphanwait = 379,
-    T_PCEdigest = 380,
-    T_Panic = 381,
-    T_Peer = 382,
-    T_Peerstats = 383,
-    T_Phone = 384,
-    T_Pid = 385,
-    T_Pidfile = 386,
-    T_Pool = 387,
-    T_Port = 388,
-    T_Preempt = 389,
-    T_Prefer = 390,
-    T_Protostats = 391,
-    T_Pw = 392,
-    T_Randfile = 393,
-    T_Rawstats = 394,
-    T_Refid = 395,
-    T_Requestkey = 396,
-    T_Reset = 397,
-    T_Restrict = 398,
-    T_Revoke = 399,
-    T_Rlimit = 400,
-    T_Saveconfigdir = 401,
-    T_Server = 402,
-    T_Setvar = 403,
-    T_Source = 404,
-    T_Stacksize = 405,
-    T_Statistics = 406,
-    T_Stats = 407,
-    T_Statsdir = 408,
-    T_Step = 409,
-    T_Stepback = 410,
-    T_Stepfwd = 411,
-    T_Stepout = 412,
-    T_Stratum = 413,
-    T_String = 414,
-    T_Sys = 415,
-    T_Sysstats = 416,
-    T_Tick = 417,
-    T_Time1 = 418,
-    T_Time2 = 419,
-    T_Timer = 420,
-    T_Timingstats = 421,
-    T_Tinker = 422,
-    T_Tos = 423,
-    T_Trap = 424,
-    T_True = 425,
-    T_Trustedkey = 426,
-    T_Ttl = 427,
-    T_Type = 428,
-    T_U_int = 429,
-    T_UEcrypto = 430,
-    T_UEcryptonak = 431,
-    T_UEdigest = 432,
-    T_Unconfig = 433,
-    T_Unpeer = 434,
-    T_Version = 435,
-    T_WanderThreshold = 436,
-    T_Week = 437,
-    T_Wildcard = 438,
-    T_Xleave = 439,
-    T_Year = 440,
-    T_Flag = 441,
-    T_EOC = 442,
-    T_Simulate = 443,
-    T_Beep_Delay = 444,
-    T_Sim_Duration = 445,
-    T_Server_Offset = 446,
-    T_Duration = 447,
-    T_Freq_Offset = 448,
-    T_Wander = 449,
-    T_Jitter = 450,
-    T_Prop_Delay = 451,
-    T_Proc_Delay = 452
+    T_Bcpollbstep = 268,
+    T_Beacon = 269,
+    T_Broadcast = 270,
+    T_Broadcastclient = 271,
+    T_Broadcastdelay = 272,
+    T_Burst = 273,
+    T_Calibrate = 274,
+    T_Ceiling = 275,
+    T_Clockstats = 276,
+    T_Cohort = 277,
+    T_ControlKey = 278,
+    T_Crypto = 279,
+    T_Cryptostats = 280,
+    T_Ctl = 281,
+    T_Day = 282,
+    T_Default = 283,
+    T_Digest = 284,
+    T_Disable = 285,
+    T_Discard = 286,
+    T_Dispersion = 287,
+    T_Double = 288,
+    T_Driftfile = 289,
+    T_Drop = 290,
+    T_Dscp = 291,
+    T_Ellipsis = 292,
+    T_Enable = 293,
+    T_End = 294,
+    T_False = 295,
+    T_File = 296,
+    T_Filegen = 297,
+    T_Filenum = 298,
+    T_Flag1 = 299,
+    T_Flag2 = 300,
+    T_Flag3 = 301,
+    T_Flag4 = 302,
+    T_Flake = 303,
+    T_Floor = 304,
+    T_Freq = 305,
+    T_Fudge = 306,
+    T_Host = 307,
+    T_Huffpuff = 308,
+    T_Iburst = 309,
+    T_Ident = 310,
+    T_Ignore = 311,
+    T_Incalloc = 312,
+    T_Incmem = 313,
+    T_Initalloc = 314,
+    T_Initmem = 315,
+    T_Includefile = 316,
+    T_Integer = 317,
+    T_Interface = 318,
+    T_Intrange = 319,
+    T_Io = 320,
+    T_Ipv4 = 321,
+    T_Ipv4_flag = 322,
+    T_Ipv6 = 323,
+    T_Ipv6_flag = 324,
+    T_Kernel = 325,
+    T_Key = 326,
+    T_Keys = 327,
+    T_Keysdir = 328,
+    T_Kod = 329,
+    T_Mssntp = 330,
+    T_Leapfile = 331,
+    T_Leapsmearinterval = 332,
+    T_Limited = 333,
+    T_Link = 334,
+    T_Listen = 335,
+    T_Logconfig = 336,
+    T_Logfile = 337,
+    T_Loopstats = 338,
+    T_Lowpriotrap = 339,
+    T_Manycastclient = 340,
+    T_Manycastserver = 341,
+    T_Mask = 342,
+    T_Maxage = 343,
+    T_Maxclock = 344,
+    T_Maxdepth = 345,
+    T_Maxdist = 346,
+    T_Maxmem = 347,
+    T_Maxpoll = 348,
+    T_Mdnstries = 349,
+    T_Mem = 350,
+    T_Memlock = 351,
+    T_Minclock = 352,
+    T_Mindepth = 353,
+    T_Mindist = 354,
+    T_Minimum = 355,
+    T_Minpoll = 356,
+    T_Minsane = 357,
+    T_Mode = 358,
+    T_Mode7 = 359,
+    T_Monitor = 360,
+    T_Month = 361,
+    T_Mru = 362,
+    T_Multicastclient = 363,
+    T_Nic = 364,
+    T_Nolink = 365,
+    T_Nomodify = 366,
+    T_Nomrulist = 367,
+    T_None = 368,
+    T_Nonvolatile = 369,
+    T_Nopeer = 370,
+    T_Noquery = 371,
+    T_Noselect = 372,
+    T_Noserve = 373,
+    T_Notrap = 374,
+    T_Notrust = 375,
+    T_Ntp = 376,
+    T_Ntpport = 377,
+    T_NtpSignDsocket = 378,
+    T_Orphan = 379,
+    T_Orphanwait = 380,
+    T_PCEdigest = 381,
+    T_Panic = 382,
+    T_Peer = 383,
+    T_Peerstats = 384,
+    T_Phone = 385,
+    T_Pid = 386,
+    T_Pidfile = 387,
+    T_Pool = 388,
+    T_Port = 389,
+    T_Preempt = 390,
+    T_Prefer = 391,
+    T_Protostats = 392,
+    T_Pw = 393,
+    T_Randfile = 394,
+    T_Rawstats = 395,
+    T_Refid = 396,
+    T_Requestkey = 397,
+    T_Reset = 398,
+    T_Restrict = 399,
+    T_Revoke = 400,
+    T_Rlimit = 401,
+    T_Saveconfigdir = 402,
+    T_Server = 403,
+    T_Setvar = 404,
+    T_Source = 405,
+    T_Stacksize = 406,
+    T_Statistics = 407,
+    T_Stats = 408,
+    T_Statsdir = 409,
+    T_Step = 410,
+    T_Stepback = 411,
+    T_Stepfwd = 412,
+    T_Stepout = 413,
+    T_Stratum = 414,
+    T_String = 415,
+    T_Sys = 416,
+    T_Sysstats = 417,
+    T_Tick = 418,
+    T_Time1 = 419,
+    T_Time2 = 420,
+    T_Timer = 421,
+    T_Timingstats = 422,
+    T_Tinker = 423,
+    T_Tos = 424,
+    T_Trap = 425,
+    T_True = 426,
+    T_Trustedkey = 427,
+    T_Ttl = 428,
+    T_Type = 429,
+    T_U_int = 430,
+    T_UEcrypto = 431,
+    T_UEcryptonak = 432,
+    T_UEdigest = 433,
+    T_Unconfig = 434,
+    T_Unpeer = 435,
+    T_Version = 436,
+    T_WanderThreshold = 437,
+    T_Week = 438,
+    T_Wildcard = 439,
+    T_Xleave = 440,
+    T_Year = 441,
+    T_Flag = 442,
+    T_EOC = 443,
+    T_Simulate = 444,
+    T_Beep_Delay = 445,
+    T_Sim_Duration = 446,
+    T_Server_Offset = 447,
+    T_Duration = 448,
+    T_Freq_Offset = 449,
+    T_Wander = 450,
+    T_Jitter = 451,
+    T_Prop_Delay = 452,
+    T_Proc_Delay = 453
   };
 #endif
 /* Tokens.  */
@@ -253,191 +254,192 @@
 #define T_Automax 265
 #define T_Average 266
 #define T_Bclient 267
-#define T_Beacon 268
-#define T_Broadcast 269
-#define T_Broadcastclient 270
-#define T_Broadcastdelay 271
-#define T_Burst 272
-#define T_Calibrate 273
-#define T_Ceiling 274
-#define T_Clockstats 275
-#define T_Cohort 276
-#define T_ControlKey 277
-#define T_Crypto 278
-#define T_Cryptostats 279
-#define T_Ctl 280
-#define T_Day 281
-#define T_Default 282
-#define T_Digest 283
-#define T_Disable 284
-#define T_Discard 285
-#define T_Dispersion 286
-#define T_Double 287
-#define T_Driftfile 288
-#define T_Drop 289
-#define T_Dscp 290
-#define T_Ellipsis 291
-#define T_Enable 292
-#define T_End 293
-#define T_False 294
-#define T_File 295
-#define T_Filegen 296
-#define T_Filenum 297
-#define T_Flag1 298
-#define T_Flag2 299
-#define T_Flag3 300
-#define T_Flag4 301
-#define T_Flake 302
-#define T_Floor 303
-#define T_Freq 304
-#define T_Fudge 305
-#define T_Host 306
-#define T_Huffpuff 307
-#define T_Iburst 308
-#define T_Ident 309
-#define T_Ignore 310
-#define T_Incalloc 311
-#define T_Incmem 312
-#define T_Initalloc 313
-#define T_Initmem 314
-#define T_Includefile 315
-#define T_Integer 316
-#define T_Interface 317
-#define T_Intrange 318
-#define T_Io 319
-#define T_Ipv4 320
-#define T_Ipv4_flag 321
-#define T_Ipv6 322
-#define T_Ipv6_flag 323
-#define T_Kernel 324
-#define T_Key 325
-#define T_Keys 326
-#define T_Keysdir 327
-#define T_Kod 328
-#define T_Mssntp 329
-#define T_Leapfile 330
-#define T_Leapsmearinterval 331
-#define T_Limited 332
-#define T_Link 333
-#define T_Listen 334
-#define T_Logconfig 335
-#define T_Logfile 336
-#define T_Loopstats 337
-#define T_Lowpriotrap 338
-#define T_Manycastclient 339
-#define T_Manycastserver 340
-#define T_Mask 341
-#define T_Maxage 342
-#define T_Maxclock 343
-#define T_Maxdepth 344
-#define T_Maxdist 345
-#define T_Maxmem 346
-#define T_Maxpoll 347
-#define T_Mdnstries 348
-#define T_Mem 349
-#define T_Memlock 350
-#define T_Minclock 351
-#define T_Mindepth 352
-#define T_Mindist 353
-#define T_Minimum 354
-#define T_Minpoll 355
-#define T_Minsane 356
-#define T_Mode 357
-#define T_Mode7 358
-#define T_Monitor 359
-#define T_Month 360
-#define T_Mru 361
-#define T_Multicastclient 362
-#define T_Nic 363
-#define T_Nolink 364
-#define T_Nomodify 365
-#define T_Nomrulist 366
-#define T_None 367
-#define T_Nonvolatile 368
-#define T_Nopeer 369
-#define T_Noquery 370
-#define T_Noselect 371
-#define T_Noserve 372
-#define T_Notrap 373
-#define T_Notrust 374
-#define T_Ntp 375
-#define T_Ntpport 376
-#define T_NtpSignDsocket 377
-#define T_Orphan 378
-#define T_Orphanwait 379
-#define T_PCEdigest 380
-#define T_Panic 381
-#define T_Peer 382
-#define T_Peerstats 383
-#define T_Phone 384
-#define T_Pid 385
-#define T_Pidfile 386
-#define T_Pool 387
-#define T_Port 388
-#define T_Preempt 389
-#define T_Prefer 390
-#define T_Protostats 391
-#define T_Pw 392
-#define T_Randfile 393
-#define T_Rawstats 394
-#define T_Refid 395
-#define T_Requestkey 396
-#define T_Reset 397
-#define T_Restrict 398
-#define T_Revoke 399
-#define T_Rlimit 400
-#define T_Saveconfigdir 401
-#define T_Server 402
-#define T_Setvar 403
-#define T_Source 404
-#define T_Stacksize 405
-#define T_Statistics 406
-#define T_Stats 407
-#define T_Statsdir 408
-#define T_Step 409
-#define T_Stepback 410
-#define T_Stepfwd 411
-#define T_Stepout 412
-#define T_Stratum 413
-#define T_String 414
-#define T_Sys 415
-#define T_Sysstats 416
-#define T_Tick 417
-#define T_Time1 418
-#define T_Time2 419
-#define T_Timer 420
-#define T_Timingstats 421
-#define T_Tinker 422
-#define T_Tos 423
-#define T_Trap 424
-#define T_True 425
-#define T_Trustedkey 426
-#define T_Ttl 427
-#define T_Type 428
-#define T_U_int 429
-#define T_UEcrypto 430
-#define T_UEcryptonak 431
-#define T_UEdigest 432
-#define T_Unconfig 433
-#define T_Unpeer 434
-#define T_Version 435
-#define T_WanderThreshold 436
-#define T_Week 437
-#define T_Wildcard 438
-#define T_Xleave 439
-#define T_Year 440
-#define T_Flag 441
-#define T_EOC 442
-#define T_Simulate 443
-#define T_Beep_Delay 444
-#define T_Sim_Duration 445
-#define T_Server_Offset 446
-#define T_Duration 447
-#define T_Freq_Offset 448
-#define T_Wander 449
-#define T_Jitter 450
-#define T_Prop_Delay 451
-#define T_Proc_Delay 452
+#define T_Bcpollbstep 268
+#define T_Beacon 269
+#define T_Broadcast 270
+#define T_Broadcastclient 271
+#define T_Broadcastdelay 272
+#define T_Burst 273
+#define T_Calibrate 274
+#define T_Ceiling 275
+#define T_Clockstats 276
+#define T_Cohort 277
+#define T_ControlKey 278
+#define T_Crypto 279
+#define T_Cryptostats 280
+#define T_Ctl 281
+#define T_Day 282
+#define T_Default 283
+#define T_Digest 284
+#define T_Disable 285
+#define T_Discard 286
+#define T_Dispersion 287
+#define T_Double 288
+#define T_Driftfile 289
+#define T_Drop 290
+#define T_Dscp 291
+#define T_Ellipsis 292
+#define T_Enable 293
+#define T_End 294
+#define T_False 295
+#define T_File 296
+#define T_Filegen 297
+#define T_Filenum 298
+#define T_Flag1 299
+#define T_Flag2 300
+#define T_Flag3 301
+#define T_Flag4 302
+#define T_Flake 303
+#define T_Floor 304
+#define T_Freq 305
+#define T_Fudge 306
+#define T_Host 307
+#define T_Huffpuff 308
+#define T_Iburst 309
+#define T_Ident 310
+#define T_Ignore 311
+#define T_Incalloc 312
+#define T_Incmem 313
+#define T_Initalloc 314
+#define T_Initmem 315
+#define T_Includefile 316
+#define T_Integer 317
+#define T_Interface 318
+#define T_Intrange 319
+#define T_Io 320
+#define T_Ipv4 321
+#define T_Ipv4_flag 322
+#define T_Ipv6 323
+#define T_Ipv6_flag 324
+#define T_Kernel 325
+#define T_Key 326
+#define T_Keys 327
+#define T_Keysdir 328
+#define T_Kod 329
+#define T_Mssntp 330
+#define T_Leapfile 331
+#define T_Leapsmearinterval 332
+#define T_Limited 333
+#define T_Link 334
+#define T_Listen 335
+#define T_Logconfig 336
+#define T_Logfile 337
+#define T_Loopstats 338
+#define T_Lowpriotrap 339
+#define T_Manycastclient 340
+#define T_Manycastserver 341
+#define T_Mask 342
+#define T_Maxage 343
+#define T_Maxclock 344
+#define T_Maxdepth 345
+#define T_Maxdist 346
+#define T_Maxmem 347
+#define T_Maxpoll 348
+#define T_Mdnstries 349
+#define T_Mem 350
+#define T_Memlock 351
+#define T_Minclock 352
+#define T_Mindepth 353
+#define T_Mindist 354
+#define T_Minimum 355
+#define T_Minpoll 356
+#define T_Minsane 357
+#define T_Mode 358
+#define T_Mode7 359
+#define T_Monitor 360
+#define T_Month 361
+#define T_Mru 362
+#define T_Multicastclient 363
+#define T_Nic 364
+#define T_Nolink 365
+#define T_Nomodify 366
+#define T_Nomrulist 367
+#define T_None 368
+#define T_Nonvolatile 369
+#define T_Nopeer 370
+#define T_Noquery 371
+#define T_Noselect 372
+#define T_Noserve 373
+#define T_Notrap 374
+#define T_Notrust 375
+#define T_Ntp 376
+#define T_Ntpport 377
+#define T_NtpSignDsocket 378
+#define T_Orphan 379
+#define T_Orphanwait 380
+#define T_PCEdigest 381
+#define T_Panic 382
+#define T_Peer 383
+#define T_Peerstats 384
+#define T_Phone 385
+#define T_Pid 386
+#define T_Pidfile 387
+#define T_Pool 388
+#define T_Port 389
+#define T_Preempt 390
+#define T_Prefer 391
+#define T_Protostats 392
+#define T_Pw 393
+#define T_Randfile 394
+#define T_Rawstats 395
+#define T_Refid 396
+#define T_Requestkey 397
+#define T_Reset 398
+#define T_Restrict 399
+#define T_Revoke 400
+#define T_Rlimit 401
+#define T_Saveconfigdir 402
+#define T_Server 403
+#define T_Setvar 404
+#define T_Source 405
+#define T_Stacksize 406
+#define T_Statistics 407
+#define T_Stats 408
+#define T_Statsdir 409
+#define T_Step 410
+#define T_Stepback 411
+#define T_Stepfwd 412
+#define T_Stepout 413
+#define T_Stratum 414
+#define T_String 415
+#define T_Sys 416
+#define T_Sysstats 417
+#define T_Tick 418
+#define T_Time1 419
+#define T_Time2 420
+#define T_Timer 421
+#define T_Timingstats 422
+#define T_Tinker 423
+#define T_Tos 424
+#define T_Trap 425
+#define T_True 426
+#define T_Trustedkey 427
+#define T_Ttl 428
+#define T_Type 429
+#define T_U_int 430
+#define T_UEcrypto 431
+#define T_UEcryptonak 432
+#define T_UEdigest 433
+#define T_Unconfig 434
+#define T_Unpeer 435
+#define T_Version 436
+#define T_WanderThreshold 437
+#define T_Week 438
+#define T_Wildcard 439
+#define T_Xleave 440
+#define T_Year 441
+#define T_Flag 442
+#define T_EOC 443
+#define T_Simulate 444
+#define T_Beep_Delay 445
+#define T_Sim_Duration 446
+#define T_Server_Offset 447
+#define T_Duration 448
+#define T_Freq_Offset 449
+#define T_Wander 450
+#define T_Jitter 451
+#define T_Prop_Delay 452
+#define T_Proc_Delay 453
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -463,7 +465,7 @@
 	script_info *		Sim_script;
 	script_info_fifo *	Sim_script_fifo;
 
-#line 467 "../../ntpd/ntp_parser.h" /* yacc.c:1909  */
+#line 469 "ntp_parser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
Index: contrib/ntp/ntpd/ntp_refclock.c
===================================================================
--- contrib/ntp/ntpd/ntp_refclock.c	(版本 309693)
+++ contrib/ntp/ntpd/ntp_refclock.c	(版本 310419)
@@ -710,7 +710,7 @@
 	if (rio->io_input == NULL || (*rio->io_input)(rb) != 0) {
 		rio->recvcount++;
 		packets_received++;
-		handler_pkts++;		
+		handler_pkts++;
 		(*rio->clock_recv)(rb);
 	}
 }
@@ -1208,6 +1208,7 @@
 			    "refclock_ppsapi: time_pps_create: %m");
 			return (0);
 		}
+		ZERO(ap->ts); /* [Bug 2689] defined INIT state */
 	}
 	return (1);
 }
@@ -1278,7 +1279,7 @@
 	struct refclockproc *pp;
 	pps_info_t pps_info;
 	struct timespec timeout;
-	double	dtemp;
+	double	dtemp, dcorr, trash;
 
 	/*
 	 * We require the clock to be synchronized before setting the
@@ -1293,8 +1294,7 @@
 		if (refclock_params(pp->sloppyclockflag, ap) < 1)
 			return (0);
 	}
-	timeout.tv_sec = 0;
-	timeout.tv_nsec = 0;
+	ZERO(timeout);
 	ZERO(pps_info);
 	if (time_pps_fetch(ap->handle, PPS_TSFMT_TSPEC, &pps_info,
 	    &timeout) < 0) {
@@ -1301,7 +1301,7 @@
 		refclock_report(peer, CEVNT_FAULT);
 		return (0);
 	}
-	timeout = ap->ts;
+	timeout = ap->ts;	/* save old timestamp for check */
 	if (ap->pps_params.mode & PPS_CAPTUREASSERT)
 		ap->ts = pps_info.assert_timestamp;
 	else if (ap->pps_params.mode & PPS_CAPTURECLEAR)
@@ -1309,22 +1309,62 @@
 	else
 		return (0);
 
+	/* [Bug 2689] Discard the first sample we read -- if the PPS
+	 * source is currently down / disconnected, we have read a
+	 * potentially *very* stale value here. So if our old TS value
+	 * is all-zero, we consider this sample unrealiable and drop it.
+	 *
+	 * Note 1: a better check would compare the PPS time stamp to
+	 * the current system time and drop it if it's more than say 3s
+	 * away.
+	 *
+	 * Note 2: If we ever again get an all-zero PPS sample, the next
+	 * one will be discarded. This can happen every 136yrs and is
+	 * unlikely to be ever observed.
+	 */
+	if (0 == (timeout.tv_sec | timeout.tv_nsec))
+		return (0);
+
+	/* If the PPS source fails to deliver a new sample between
+	 * polls, it regurgitates the last sample. We do not want to
+	 * process the same sample multiple times.
+	 */
 	if (0 == memcmp(&timeout, &ap->ts, sizeof(timeout)))
 		return (0);
 
 	/*
-	 * Convert to signed fraction offset and stuff in median filter.
+	 * Convert to signed fraction offset, apply fudge and properly
+	 * fold the correction into the [-0.5s,0.5s] range. Handle
+	 * excessive fudge times, too.
 	 */
+	dtemp = ap->ts.tv_nsec / 1e9;
+	dcorr = modf((pp->fudgetime1 - dtemp), &trash);
+	if (dcorr > 0.5)
+		dcorr -= 1.0;
+	else if (dcorr < -0.5)
+		dcorr += 1.0;
+
+	/* phase gate check: avoid wobbling by +/-1s when too close to
+	 * the switch-over point. We allow +/-400ms max phase deviation.
+	 * The trade-off is clear: The smaller the limit, the less
+	 * sensitive to sampling noise the clock becomes. OTOH the
+	 * system must get into phase gate range by other means for the
+	 * PPS clock to lock in.
+	 */
+	if (fabs(dcorr) > 0.4)
+		return (0);
+
+	/*
+	 * record this time stamp and stuff in median filter
+	 */
 	pp->lastrec.l_ui = (u_int32)ap->ts.tv_sec + JAN_1970;
-	dtemp = ap->ts.tv_nsec / 1e9;
 	pp->lastrec.l_uf = (u_int32)(dtemp * FRAC);
-	if (dtemp > .5)
-		dtemp -= 1.;
-	SAMPLE(-dtemp + pp->fudgetime1);
+	SAMPLE(dcorr);
+	
 #ifdef DEBUG
 	if (debug > 1)
 		printf("refclock_pps: %lu %f %f\n", current_time,
-		    dtemp, pp->fudgetime1);
+		    dcorr, pp->fudgetime1);
 #endif
 	return (1);
 }
Index: contrib/ntp/ntpd/ntpd.1ntpdmdoc
===================================================================
--- contrib/ntp/ntpd/ntpd.1ntpdmdoc	(版本 309693)
+++ contrib/ntp/ntpd/ntpd.1ntpdmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPD 1ntpdmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpd-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:22 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpd-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpd/ntpd.1ntpdman
===================================================================
--- contrib/ntp/ntpd/ntpd.1ntpdman	(版本 309693)
+++ contrib/ntp/ntpd/ntpd.1ntpdman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpd 1ntpdman "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpd 1ntpdman "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Jnai2U/ag-Ynaa1U)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-giaGkh/ag-tiayjh)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:36:01 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:01:50 AM by AutoGen 5.18.5
 .\" From the definitions ntpd-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpd/ntpd.mdoc.in
===================================================================
--- contrib/ntp/ntpd/ntpd.mdoc.in	(版本 309693)
+++ contrib/ntp/ntpd/ntpd.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPD @NTPD_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpd-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:22 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpd-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpdc/invoke-ntpdc.texi
===================================================================
--- contrib/ntp/ntpdc/invoke-ntpdc.texi	(版本 309693)
+++ contrib/ntp/ntpdc/invoke-ntpdc.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntpdc.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:36:54 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:02:33 AM by AutoGen 5.18.5
 # From the definitions    ntpdc-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -76,7 +76,7 @@
 
 @exampleindent 0
 @example
-ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8
+ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9
 Usage:  ntpdc [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...]
   Flg Arg Option-Name    Description
    -4 no  ipv4           Force IPv4 DNS name resolution
Index: contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc
===================================================================
--- contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPDC 1ntpdcmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpdc-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:58 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:35 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpdc-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpq/invoke-ntpq.texi
===================================================================
--- contrib/ntp/ntpq/invoke-ntpq.texi	(版本 309693)
+++ contrib/ntp/ntpq/invoke-ntpq.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntpq.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:37:46 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:03:06 AM by AutoGen 5.18.5
 # From the definitions    ntpq-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -848,7 +848,7 @@
 
 @exampleindent 0
 @example
-ntpq - standard NTP query program - Ver. 4.2.8p8
+ntpq - standard NTP query program - Ver. 4.2.8p9
 Usage:  ntpq [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...]
   Flg Arg Option-Name    Description
    -4 no  ipv4           Force IPv4 DNS name resolution
Index: contrib/ntp/ntpq/ntpq.1ntpqmdoc
===================================================================
--- contrib/ntp/ntpq/ntpq.1ntpqmdoc	(版本 309693)
+++ contrib/ntp/ntpq/ntpq.1ntpqmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPQ 1ntpqmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpq-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:37:48 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpq-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpq/ntpq.mdoc.in
===================================================================
--- contrib/ntp/ntpq/ntpq.mdoc.in	(版本 309693)
+++ contrib/ntp/ntpq/ntpq.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPQ @NTPQ_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpq-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:37:48 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpq-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpd/ntpd-opts.h
===================================================================
--- contrib/ntp/ntpd/ntpd-opts.h	(版本 309693)
+++ contrib/ntp/ntpd/ntpd-opts.h	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpd-opts.h)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:32:40 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 07:59:42 AM by AutoGen 5.18.5
  *  From the definitions    ntpd-opts.def
  *  and the template file   options
  *
@@ -106,9 +106,9 @@
 /** count of all options for ntpd */
 #define OPTION_CT    38
 /** ntpd version */
-#define NTPD_VERSION       "4.2.8p8"
+#define NTPD_VERSION       "4.2.8p9"
 /** Full ntpd version text */
-#define NTPD_FULL_VERSION  "ntpd 4.2.8p8"
+#define NTPD_FULL_VERSION  "ntpd 4.2.8p9"
 
 /**
  *  Interface defines for all options.  Replace "n" with the UPPER_CASED
Index: contrib/ntp/ntpd/ntpd.man.in
===================================================================
--- contrib/ntp/ntpd/ntpd.man.in	(版本 309693)
+++ contrib/ntp/ntpd/ntpd.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpd @NTPD_MS@ "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpd @NTPD_MS@ "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Jnai2U/ag-Ynaa1U)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-giaGkh/ag-tiayjh)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:36:01 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:01:50 AM by AutoGen 5.18.5
 .\" From the definitions ntpd-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpd/refclock_jupiter.c
===================================================================
--- contrib/ntp/ntpd/refclock_jupiter.c	(版本 309693)
+++ contrib/ntp/ntpd/refclock_jupiter.c	(版本 310419)
@@ -89,6 +89,11 @@
 /* Unix timestamp for the GPS epoch: January 6, 1980 */
 #define GPS_EPOCH 315964800
 
+/* Rata Die Number of first day of GPS epoch. This is the number of days
+ * since 0000-12-31 to 1980-01-06 in the proleptic Gregorian Calendar.
+ */
+#define RDN_GPS_EPOCH (4*146097 + 138431 + 1)
+
 /* Double short to unsigned int */
 #define DS2UI(p) ((getshort((p)[1]) << 16) | getshort((p)[0]))
 
@@ -154,6 +159,10 @@
 static	void	jupiter_shutdown(int, struct peer *);
 static	int	jupiter_start	(int, struct peer *);
 
+static	u_int	get_full_week(u_int base_week, u_int gpos_week);
+static	u_int	get_base_week(void);
+
+
 /*
  * Transfer vector
  */
@@ -846,8 +855,14 @@
 		return ("Navigation solution not valid");
 	}
 
-	instance->gpos_gweek = jg->gweek;
 	instance->gpos_sweek = DS2UI(jg->sweek);
+	instance->gpos_gweek = get_full_week(get_base_week(),
+					     getshort(jg->gweek));
+
+	/* according to the protocol spec, the seconds-in-week cannot
+	 * exceed the nominal value: Is it really necessary to normalise
+	 * the seconds???
+	 */
 	while(instance->gpos_sweek >= WEEKSECS) {
 		instance->gpos_sweek -= WEEKSECS;
 		++instance->gpos_gweek;
@@ -1115,6 +1130,56 @@
 	return (cc);
 }
 
+static u_int
+get_base_week(void)
+{
+	static int 	init_done /* = 0 */;
+	static u_int	base_week;
+
+	/* Get the build date, convert to days since GPS epoch and
+	 * finally weeks since GPS epoch.  Note that the build stamp is
+	 * trusted once it is fetched -- only dates before the GPS epoch
+	 * are not permitted. This will permit proper synchronisation
+	 * for a time range of 1024 weeks starting with 00:00:00 of the
+	 * last Sunday on or before the build time.
+	 *
+	 * If the impossible happens and fetching the build date fails,
+	 * a 1024-week cycle starting with 2016-01-03 is assumed to
+	 * avoid catastropic errors. This will work until 2035-08-19.
+	 */
+	if (!init_done) {
+		struct calendar bd;
+		if (ntpcal_get_build_date(&bd)) {
+			int32_t days = ntpcal_date_to_rd(&bd);
+			if (days > RDN_GPS_EPOCH)
+				days -= RDN_GPS_EPOCH;
+			else
+				days = 0;
+			base_week = days / 7; 
+		} else {
+			base_week = 1878; /* 2016-01-03, Sunday */
+			msyslog(LOG_ERR,
+				"refclock_jupiter: ntpcal_get_build_date() failed: %s",
+				"using 2016-01-03 as GPS base!");
+		}
+		init_done = 1;
+	}
+	return base_week;
+}
+
+static u_int
+get_full_week(
+	u_int base_week,
+	u_int gpos_week
+	)
+{
+	/* Periodic extension on base week. Since the period is 1024
+	 * weeks and we do unsigned arithmetic here, we can do wonderful
+	 * things with masks and the well-defined overflow behaviour.
+	 */
+	return base_week + ((gpos_week - base_week) & 1023);
+}
+
 #else /* not (REFCLOCK && CLOCK_JUPITER && HAVE_PPSAPI) */
 int refclock_jupiter_bs;
 #endif /* not (REFCLOCK && CLOCK_JUPITER && HAVE_PPSAPI) */
Index: contrib/ntp/ntpdc/ntpdc.1ntpdcman
===================================================================
--- contrib/ntp/ntpdc/ntpdc.1ntpdcman	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc.1ntpdcman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpdc 1ntpdcman "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpdc 1ntpdcman "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-seaORW/ag-FeaGQW)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gTaibj/ag-tTaaaj)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:36:50 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:02:29 AM by AutoGen 5.18.5
 .\" From the definitions ntpdc-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpdc/ntpdc.mdoc.in
===================================================================
--- contrib/ntp/ntpdc/ntpdc.mdoc.in	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPDC @NTPDC_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpdc-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:58 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:35 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpdc-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpq/ntpq.1ntpqman
===================================================================
--- contrib/ntp/ntpq/ntpq.1ntpqman	(版本 309693)
+++ contrib/ntp/ntpq/ntpq.1ntpqman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpq 1ntpqman "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpq 1ntpqman "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pGa42X/ag-CGaW1X)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-nWaWmk/ag-AWaOlk)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:37:41 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:03:02 AM by AutoGen 5.18.5
 .\" From the definitions ntpq-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpq/ntpq.man.in
===================================================================
--- contrib/ntp/ntpq/ntpq.man.in	(版本 309693)
+++ contrib/ntp/ntpq/ntpq.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpq @NTPQ_MS@ "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpq @NTPQ_MS@ "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pGa42X/ag-CGaW1X)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-nWaWmk/ag-AWaOlk)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:37:41 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:03:02 AM by AutoGen 5.18.5
 .\" From the definitions ntpq-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpd/ntpd-opts.c
===================================================================
--- contrib/ntp/ntpd/ntpd-opts.c	(版本 309693)
+++ contrib/ntp/ntpd/ntpd-opts.c	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpd-opts.c)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:32:42 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 07:59:43 AM by AutoGen 5.18.5
  *  From the definitions    ntpd-opts.def
  *  and the template file   options
  *
@@ -75,7 +75,7 @@
  *  static const strings for ntpd options
  */
 static char const ntpd_opt_strs[3129] =
-/*     0 */ "ntpd 4.2.8p8\n"
+/*     0 */ "ntpd 4.2.8p9\n"
             "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the NTP License, copies of which\n"
@@ -205,12 +205,12 @@
 /*  2900 */ "output version information and exit\0"
 /*  2936 */ "version\0"
 /*  2944 */ "NTPD\0"
-/*  2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p8\n"
+/*  2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p9\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n"
             "\t\t[ <server1> ... <serverN> ]\n\0"
 /*  3080 */ "http://bugs.ntp.org, bugs@ntp.org\0"
 /*  3114 */ "\n\0"
-/*  3116 */ "ntpd 4.2.8p8";
+/*  3116 */ "ntpd 4.2.8p9";
 
 /**
  *  ipv4 option description with
@@ -1529,7 +1529,7 @@
      translate option names.
    */
   /* referenced via ntpdOptions.pzCopyright */
-  puts(_("ntpd 4.2.8p8\n\
+  puts(_("ntpd 4.2.8p9\n\
 Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
 This is free software. It is licensed for use, modification and\n\
 redistribution under the terms of the NTP License, copies of which\n\
@@ -1670,7 +1670,7 @@
   puts(_("output version information and exit"));
 
   /* referenced via ntpdOptions.pzUsageTitle */
-  puts(_("ntpd - NTP daemon program - Ver. 4.2.8p8\n\
+  puts(_("ntpd - NTP daemon program - Ver. 4.2.8p9\n\
 Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
 \t\t[ <server1> ... <serverN> ]\n"));
 
@@ -1678,7 +1678,7 @@
   puts(_("\n"));
 
   /* referenced via ntpdOptions.pzFullVersion */
-  puts(_("ntpd 4.2.8p8"));
+  puts(_("ntpd 4.2.8p9"));
 
   /* referenced via ntpdOptions.pzFullUsage */
   puts(_("<<<NOT-FOUND>>>"));
Index: contrib/ntp/ntpd/ntpd.html
===================================================================
--- contrib/ntp/ntpd/ntpd.html	(版本 309693)
+++ contrib/ntp/ntpd/ntpd.html	(版本 310419)
@@ -39,7 +39,7 @@
 symmetric and broadcast modes, and with both symmetric-key and public-key
 cryptography.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntpd</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntpd</code>.
 
 <ul class="menu">
 <li><a accesskey="1" href="#ntpd-Description">ntpd Description</a>:             Description
@@ -220,7 +220,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntpd - NTP daemon program - Ver. 4.2.8p7
+<pre class="example">ntpd - NTP daemon program - Ver. 4.2.8p9-RC
 Usage:  ntpd [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]... \
                 [ &lt;server1&gt; ... &lt;serverN&gt; ]
   Flg Arg Option-Name    Description
Index: contrib/ntp/ntpd/refclock_jjy.c
===================================================================
--- contrib/ntp/ntpd/refclock_jjy.c	(版本 309693)
+++ contrib/ntp/ntpd/refclock_jjy.c	(版本 310419)
@@ -106,6 +106,10 @@
 /*  2015/05/15							      */
 /*    [Add]    Support the SEIKO TIME SYSTEMS TDC-300		      */
 /*								      */
+/*  2016/05/08							      */
+/*    [Fix]    C-DEX JST2000                                          */
+/*             Thanks to Mr. Kuramatsu for the report and the patch.  */
+/*								      */
 /**********************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -1499,9 +1503,9 @@
 		return JJY_RECEIVE_ERROR ;
 	}
 
-	/* JYYMMDD HHMMSSS */
+	/* JYYMMDDWHHMMSSS */
 
-	rc = sscanf ( pBuf, "J%2d%2d%2d %2d%2d%2d%1d",
+	rc = sscanf ( pBuf, "J%2d%2d%2d%*1d%2d%2d%2d%1d",
 		      &up->year, &up->month, &up->day,
 		      &up->hour, &up->minute, &up->second,
 		      &up->msecond ) ;
Index: contrib/ntp/ntpdc/ntpdc-opts.h
===================================================================
--- contrib/ntp/ntpdc/ntpdc-opts.h	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc-opts.h	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpdc-opts.h)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:36:34 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:02:17 AM by AutoGen 5.18.5
  *  From the definitions    ntpdc-opts.def
  *  and the template file   options
  *
@@ -83,9 +83,9 @@
 /** count of all options for ntpdc */
 #define OPTION_CT    15
 /** ntpdc version */
-#define NTPDC_VERSION       "4.2.8p8"
+#define NTPDC_VERSION       "4.2.8p9"
 /** Full ntpdc version text */
-#define NTPDC_FULL_VERSION  "ntpdc 4.2.8p8"
+#define NTPDC_FULL_VERSION  "ntpdc 4.2.8p9"
 
 /**
  *  Interface defines for all options.  Replace "n" with the UPPER_CASED
Index: contrib/ntp/ntpdc/ntpdc.man.in
===================================================================
--- contrib/ntp/ntpdc/ntpdc.man.in	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpdc @NTPDC_MS@ "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpdc @NTPDC_MS@ "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-seaORW/ag-FeaGQW)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gTaibj/ag-tTaaaj)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:36:50 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:02:29 AM by AutoGen 5.18.5
 .\" From the definitions ntpdc-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpq/ntpq-opts.h
===================================================================
--- contrib/ntp/ntpq/ntpq-opts.h	(版本 309693)
+++ contrib/ntp/ntpq/ntpq-opts.h	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpq-opts.h)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:37:04 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:02:38 AM by AutoGen 5.18.5
  *  From the definitions    ntpq-opts.def
  *  and the template file   options
  *
@@ -84,9 +84,9 @@
 /** count of all options for ntpq */
 #define OPTION_CT    16
 /** ntpq version */
-#define NTPQ_VERSION       "4.2.8p8"
+#define NTPQ_VERSION       "4.2.8p9"
 /** Full ntpq version text */
-#define NTPQ_FULL_VERSION  "ntpq 4.2.8p8"
+#define NTPQ_FULL_VERSION  "ntpq 4.2.8p9"
 
 /**
  *  Interface defines for all options.  Replace "n" with the UPPER_CASED
Index: contrib/ntp/ntpq/ntpq.html
===================================================================
--- contrib/ntp/ntpq/ntpq.html	(版本 309693)
+++ contrib/ntp/ntpq/ntpq.html	(版本 310419)
@@ -44,7 +44,7 @@
 and determine the performance of
 <code>ntpd</code>, the NTP daemon.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntpq</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntpq</code>.
 
 <ul class="menu">
 <li><a accesskey="1" href="#ntpq-Description">ntpq Description</a>
@@ -770,7 +770,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntpq - standard NTP query program - Ver. 4.2.8p7
+<pre class="example">ntpq - standard NTP query program - Ver. 4.2.8p9-RC
 Usage:  ntpq [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]... [ host ...]
   Flg Arg Option-Name    Description
    -4 no  ipv4           Force IPv4 DNS name resolution
Index: contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.c)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:37:55 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:03:11 AM by AutoGen 5.18.5
  *  From the definitions    ntpsnmpd-opts.def
  *  and the template file   options
  *
@@ -61,7 +61,7 @@
  *  static const strings for ntpsnmpd options
  */
 static char const ntpsnmpd_opt_strs[1610] =
-/*     0 */ "ntpsnmpd 4.2.8p8\n"
+/*     0 */ "ntpsnmpd 4.2.8p9\n"
             "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the NTP License, copies of which\n"
@@ -101,7 +101,7 @@
 /*  1414 */ "no-load-opts\0"
 /*  1427 */ "no\0"
 /*  1430 */ "NTPSNMPD\0"
-/*  1439 */ "ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p8\n"
+/*  1439 */ "ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p9\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
 /*  1542 */ "$HOME\0"
 /*  1548 */ ".\0"
@@ -108,7 +108,7 @@
 /*  1550 */ ".ntprc\0"
 /*  1557 */ "http://bugs.ntp.org, bugs@ntp.org\0"
 /*  1591 */ "\n\0"
-/*  1593 */ "ntpsnmpd 4.2.8p8";
+/*  1593 */ "ntpsnmpd 4.2.8p9";
 
 /**
  *  nofork option description:
@@ -554,7 +554,7 @@
      translate option names.
    */
   /* referenced via ntpsnmpdOptions.pzCopyright */
-  puts(_("ntpsnmpd 4.2.8p8\n\
+  puts(_("ntpsnmpd 4.2.8p9\n\
 Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
 This is free software. It is licensed for use, modification and\n\
 redistribution under the terms of the NTP License, copies of which\n\
@@ -599,7 +599,7 @@
   puts(_("load options from a config file"));
 
   /* referenced via ntpsnmpdOptions.pzUsageTitle */
-  puts(_("ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p8\n\
+  puts(_("ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p9\n\
 Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n"));
 
   /* referenced via ntpsnmpdOptions.pzExplain */
@@ -606,7 +606,7 @@
   puts(_("\n"));
 
   /* referenced via ntpsnmpdOptions.pzFullVersion */
-  puts(_("ntpsnmpd 4.2.8p8"));
+  puts(_("ntpsnmpd 4.2.8p9"));
 
   /* referenced via ntpsnmpdOptions.pzFullUsage */
   puts(_("<<<NOT-FOUND>>>"));
Index: contrib/ntp/ntpsnmpd/ntpsnmpd.html
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd.html	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd.html	(版本 310419)
@@ -42,7 +42,7 @@
 <p>The <code>ntpsnmpd</code> utility program is used to monitor NTP daemon <code>ntpd</code>
 operations and determine performance.  It uses the standard NTP mode 6 control
 
-  <p>This document applies to version 4.2.8p8 of <code>ntpsnmpd</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntpsnmpd</code>.
 
 <ul class="menu">
 <li><a accesskey="1" href="#ntpsnmpd-Description">ntpsnmpd Description</a>:             Description
Index: contrib/ntp/scripts/build/genAuthors.in
===================================================================
--- contrib/ntp/scripts/build/genAuthors.in	(版本 309693)
+++ contrib/ntp/scripts/build/genAuthors.in	(版本 310419)
@@ -34,14 +34,16 @@
 
 my $bk_u = "bk changes -and:USER: | sort -u |";
 chomp(my $bk_root = `bk root`);
-my $A_path = "$bk_root/BitKeeper/etc/authors.txt";
+my $A_dir = "$bk_root/BitKeeper/etc/Authors";
+my $A_file = "$bk_root/BitKeeper/etc/authors.txt";
 my %authors;
 my $problem = 0;
 
-die "bkroot: <$bk_root>, A_path: <$A_path>\n" if (! -r $A_path);
+die "bkroot: <$bk_root>, A_dir: <$A_dir>\n" if (! -r $A_dir);
+die "bkroot: <$bk_root>, A_file: <$A_file>\n" if (! -r $A_file);
 
 # Process the authors.txt file
-open(my $FILE, '<', $A_path) or die "Could not open <$A_path>: $!\n";
+open(my $FILE, '<', $A_file) or die "Could not open <$A_file>: $!\n";
 while (<$FILE>) {
   chomp;
   if (/^([\S]+) = ([\V]+) <([\w.-]+\@[\w.-]+)>$/) {
@@ -48,7 +50,7 @@
     # print "Got '$1 = $2 <$3>'\n";
     $authors{$1} = "";
   } else {
-    print "In $A_path: unrecognized line: '$_'\n";
+    print "In $A_file: unrecognized line: '$_'\n";
     $problem = 1;
   }
 }
@@ -69,7 +71,7 @@
   if (!defined($authors{$Name})) {
     $problem = 1;
     print "<$Name> is not a defined author!\n";
-    open(my $FILE, '>>', "$A_path/$name.txt") || die "Cannot create '$A_path/$name.txt': $!\n";
+    open(my $FILE, '>>', "$A_dir/$name.txt") || die "Cannot create '$A_dir/$name.txt': $!\n";
     print $FILE "$Name = \n";
     close($FILE);
   }
Index: contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in
===================================================================
--- contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in	(版本 309693)
+++ contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH calc_tickadj 1calc_tickadjman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH calc_tickadj 1calc_tickadjman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-3laW2J/ag-ema41J)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OyayV3/ag-1yaGU3)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:25 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:34 AM by AutoGen 5.18.5
 .\" From the definitions calc_tickadj-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpsnmpd 1ntpsnmpdman "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpsnmpd 1ntpsnmpdman "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IPay_Y/ag-WPaq.Y)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oTaGvl/ag-ATayul)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:39:11 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:03:18 AM by AutoGen 5.18.5
 .\" From the definitions ntpsnmpd-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPSNMPD @NTPSNMPD_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:39:18 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:24 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpsnmpd-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc
===================================================================
--- contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc	(版本 309693)
+++ contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt CALC_TICKADJ 1calc_tickadjmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (calc_tickadj-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:24:27 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:36 AM by AutoGen 5.18.5
 .\"  From the definitions    calc_tickadj-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi
===================================================================
--- contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi	(版本 309693)
+++ contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-calc_tickadj.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:24:29 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:58:38 AM by AutoGen 5.18.5
 # From the definitions    calc_tickadj-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
Index: contrib/ntp/scripts/ntp-wait/ntp-wait-opts
===================================================================
--- contrib/ntp/scripts/ntp-wait/ntp-wait-opts	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/ntp-wait-opts	(版本 310419)
@@ -1,6 +1,6 @@
 # EDIT THIS FILE WITH CAUTION  (ntp-wait-opts)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:24:33 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:58:41 AM by AutoGen 5.18.5
 # From the definitions    ntp-wait-opts.def
 # and the template file   perlopt
 
@@ -40,7 +40,7 @@
         'help|?', 'more-help'));
 
     $usage = <<'USAGE';
-ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p8
+ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p9
 USAGE: ntp-wait [ -<flag> [<val>] | --<name>[{=| }<val>] ]... 
 
     -n, --tries=num              Number of times to check ntpd
Index: contrib/ntp/ntpd/refclock_gpsdjson.c
===================================================================
--- contrib/ntp/ntpd/refclock_gpsdjson.c	(版本 309693)
+++ contrib/ntp/ntpd/refclock_gpsdjson.c	(版本 310419)
@@ -949,7 +949,7 @@
 	pp->lastref = stamp;
 	if (pp->coderecv == pp->codeproc)
 		refclock_report(peer, CEVNT_NOMINAL);
-	refclock_process_offset(pp, stamp, recvt, 0.0);
+	refclock_process_offset(pp, stamp, recvt, pp->fudgetime1);
 }
 
 /* ------------------------------------------------------------------ */
Index: contrib/ntp/ntpdc/ntpdc-opts.c
===================================================================
--- contrib/ntp/ntpdc/ntpdc-opts.c	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc-opts.c	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpdc-opts.c)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:36:34 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:02:18 AM by AutoGen 5.18.5
  *  From the definitions    ntpdc-opts.def
  *  and the template file   options
  *
@@ -69,7 +69,7 @@
  *  static const strings for ntpdc options
  */
 static char const ntpdc_opt_strs[1911] =
-/*     0 */ "ntpdc 4.2.8p8\n"
+/*     0 */ "ntpdc 4.2.8p9\n"
             "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the NTP License, copies of which\n"
@@ -128,7 +128,7 @@
 /*  1694 */ "no-load-opts\0"
 /*  1707 */ "no\0"
 /*  1710 */ "NTPDC\0"
-/*  1716 */ "ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8\n"
+/*  1716 */ "ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n\0"
 /*  1846 */ "$HOME\0"
 /*  1852 */ ".\0"
@@ -135,7 +135,7 @@
 /*  1854 */ ".ntprc\0"
 /*  1861 */ "http://bugs.ntp.org, bugs@ntp.org\0"
 /*  1895 */ "\n\0"
-/*  1897 */ "ntpdc 4.2.8p8";
+/*  1897 */ "ntpdc 4.2.8p9";
 
 /**
  *  ipv4 option description with
@@ -796,7 +796,7 @@
      translate option names.
    */
   /* referenced via ntpdcOptions.pzCopyright */
-  puts(_("ntpdc 4.2.8p8\n\
+  puts(_("ntpdc 4.2.8p9\n\
 Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
 This is free software. It is licensed for use, modification and\n\
 redistribution under the terms of the NTP License, copies of which\n\
@@ -862,7 +862,7 @@
   puts(_("load options from a config file"));
 
   /* referenced via ntpdcOptions.pzUsageTitle */
-  puts(_("ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8\n\
+  puts(_("ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9\n\
 Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n"));
 
   /* referenced via ntpdcOptions.pzExplain */
@@ -869,7 +869,7 @@
   puts(_("\n"));
 
   /* referenced via ntpdcOptions.pzFullVersion */
-  puts(_("ntpdc 4.2.8p8"));
+  puts(_("ntpdc 4.2.8p9"));
 
   /* referenced via ntpdcOptions.pzFullUsage */
   puts(_("<<<NOT-FOUND>>>"));
Index: contrib/ntp/ntpdc/ntpdc.html
===================================================================
--- contrib/ntp/ntpdc/ntpdc.html	(版本 309693)
+++ contrib/ntp/ntpdc/ntpdc.html	(版本 310419)
@@ -36,7 +36,7 @@
 clock.  Run as root, it can correct the system clock to this offset as
 well.  It can be run as an interactive command or from a cron job.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntpdc</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntpdc</code>.
 
   <p>The program implements the SNTP protocol as defined by RFC 5905, the NTPv4
 IETF specification.
@@ -152,7 +152,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p8
+<pre class="example">ntpdc - vendor-specific NTPD control program - Ver. 4.2.8p9
 Usage:  ntpdc [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]... [ host ...]
   Flg Arg Option-Name    Description
    -4 no  ipv4           Force IPv4 DNS name resolution
Index: contrib/ntp/ntpq/ntpq-opts.c
===================================================================
--- contrib/ntp/ntpq/ntpq-opts.c	(版本 309693)
+++ contrib/ntp/ntpq/ntpq-opts.c	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpq-opts.c)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:37:05 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:02:38 AM by AutoGen 5.18.5
  *  From the definitions    ntpq-opts.def
  *  and the template file   options
  *
@@ -69,7 +69,7 @@
  *  static const strings for ntpq options
  */
 static char const ntpq_opt_strs[1982] =
-/*     0 */ "ntpq 4.2.8p8\n"
+/*     0 */ "ntpq 4.2.8p9\n"
             "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the NTP License, copies of which\n"
@@ -132,13 +132,13 @@
 /*  1775 */ "no-load-opts\0"
 /*  1788 */ "no\0"
 /*  1791 */ "NTPQ\0"
-/*  1796 */ "ntpq - standard NTP query program - Ver. 4.2.8p8\n"
+/*  1796 */ "ntpq - standard NTP query program - Ver. 4.2.8p9\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n\0"
 /*  1915 */ "$HOME\0"
 /*  1921 */ ".\0"
 /*  1923 */ ".ntprc\0"
 /*  1930 */ "http://bugs.ntp.org, bugs@ntp.org\0"
-/*  1964 */ "ntpq 4.2.8p8\0"
+/*  1964 */ "ntpq 4.2.8p9\0"
 /*  1977 */ "hash";
 
 /**
@@ -841,7 +841,7 @@
      translate option names.
    */
   /* referenced via ntpqOptions.pzCopyright */
-  puts(_("ntpq 4.2.8p8\n\
+  puts(_("ntpq 4.2.8p9\n\
 Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
 This is free software. It is licensed for use, modification and\n\
 redistribution under the terms of the NTP License, copies of which\n\
@@ -910,11 +910,11 @@
   puts(_("load options from a config file"));
 
   /* referenced via ntpqOptions.pzUsageTitle */
-  puts(_("ntpq - standard NTP query program - Ver. 4.2.8p8\n\
+  puts(_("ntpq - standard NTP query program - Ver. 4.2.8p9\n\
 Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n"));
 
   /* referenced via ntpqOptions.pzFullVersion */
-  puts(_("ntpq 4.2.8p8"));
+  puts(_("ntpq 4.2.8p9"));
 
   /* referenced via ntpqOptions.pzFullUsage */
   puts(_("<<<NOT-FOUND>>>"));
Index: contrib/ntp/ntpq/ntpq.c
===================================================================
--- contrib/ntp/ntpq/ntpq.c	(版本 309693)
+++ contrib/ntp/ntpq/ntpq.c	(版本 310419)
@@ -34,6 +34,7 @@
 #include "openssl/evp.h"
 #include "openssl/objects.h"
 #include "openssl/err.h"
+#include "libssl_compat.h"
 #endif
 #include <ssl_applink.c>
 
@@ -3582,7 +3583,7 @@
     size_t len, n;
     const char *name, *cp, **seen;
     struct hstate *hstate = arg;
-    EVP_MD_CTX ctx;
+    EVP_MD_CTX *ctx;
     u_int digest_len;
     u_char digest[EVP_MAX_MD_SIZE];
 
@@ -3613,8 +3614,10 @@
      * Keep this consistent with keytype_from_text() in ssl_init.c.
      */
 
-    EVP_DigestInit(&ctx, EVP_get_digestbyname(name));
-    EVP_DigestFinal(&ctx, digest, &digest_len);
+    ctx = EVP_MD_CTX_new();
+    EVP_DigestInit(ctx, EVP_get_digestbyname(name));
+    EVP_DigestFinal(ctx, digest, &digest_len);
+    EVP_MD_CTX_free(ctx);
     if (digest_len > (MAX_MAC_LEN - sizeof(keyid_t)))
         return;
 
Index: contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi
===================================================================
--- contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi	(版本 309693)
+++ contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntpsnmpd.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:39:15 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:03:22 AM by AutoGen 5.18.5
 # From the definitions    ntpsnmpd-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -47,7 +47,7 @@
 
 @exampleindent 0
 @example
-ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p8
+ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.8p9
 Usage:  ntpsnmpd [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]...
   Flg Arg Option-Name    Description
    -n no  nofork         Do not fork
Index: contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPSNMPD 1ntpsnmpdmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:39:18 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:24 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpsnmpd-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/packageinfo.sh
===================================================================
--- contrib/ntp/packageinfo.sh	(版本 309693)
+++ contrib/ntp/packageinfo.sh	(版本 310419)
@@ -83,7 +83,7 @@
 # - Numeric values increment
 # - empty 'increments' to 1
 # - NEW 'increments' to empty
-point=8
+point=9
 
 ### betapoint is normally modified by script.
 # ntp-stable Beta number (betapoint)
Index: contrib/ntp/scripts/calc_tickadj/calc_tickadj.html
===================================================================
--- contrib/ntp/scripts/calc_tickadj/calc_tickadj.html	(版本 309693)
+++ contrib/ntp/scripts/calc_tickadj/calc_tickadj.html	(版本 310419)
@@ -31,7 +31,7 @@
 <h2 class="unnumbered">calc_tickadj User's Manual</h2>
 
 <p>This document describes the use of the NTP Project's <code>calc_tickadj</code> program. 
-This document applies to version 4.2.8p8 of <code>calc_tickadj</code>.
+This document applies to version 4.2.8p9 of <code>calc_tickadj</code>.
 
   <div class="shortcontents">
 <h2>Short Contents</h2>
Index: contrib/ntp/scripts/invoke-plot_summary.texi
===================================================================
--- contrib/ntp/scripts/invoke-plot_summary.texi	(版本 309693)
+++ contrib/ntp/scripts/invoke-plot_summary.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-plot_summary.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:50 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:26 AM by AutoGen 5.18.5
 # From the definitions    plot_summary-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -41,7 +41,7 @@
 
 @exampleindent 0
 @example
-plot_summary - plot statistics generated by summary script - Ver. 4.2.8p8
+plot_summary - plot statistics generated by summary script - Ver. 4.2.8p9
 USAGE: plot_summary [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... 
 
         --directory=str          Where the summary files are
Index: contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman
===================================================================
--- contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp-wait 1ntp-waitman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntp-wait 1ntp-waitman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IZaWqL/ag-WZa4pL)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oRayj5/ag-CRaGi5)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:36 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:43 AM by AutoGen 5.18.5
 .\" From the definitions ntp-wait-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in
===================================================================
--- contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_WAIT @NTP_WAIT_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp-wait-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:24:44 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:50 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp-wait-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc
===================================================================
--- contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPSWEEP 1ntpsweepmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpsweep-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:24:55 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:59 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpsweep-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi
===================================================================
--- contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntptrace.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:03 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:07 AM by AutoGen 5.18.5
 # From the definitions    ntptrace-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -62,7 +62,7 @@
 
 @exampleindent 0
 @example
-ntptrace - Trace peers of an NTP server - Ver. 4.2.8p8
+ntptrace - Trace peers of an NTP server - Ver. 4.2.8p9
 USAGE: ntptrace [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [host]
 
     -n, --numeric                Print IP addresses instead of hostnames
Index: contrib/ntp/scripts/ntptrace/ntptrace.html
===================================================================
--- contrib/ntp/scripts/ntptrace/ntptrace.html	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/ntptrace.html	(版本 310419)
@@ -31,7 +31,7 @@
 <h2 class="unnumbered">Simple Network Time Protocol User Manual</h2>
 
 <p>This document describes the use of the NTP Project's <code>ntptrace</code> program. 
-This document applies to version 4.2.8p8 of <code>ntptrace</code>.
+This document applies to version 4.2.8p9 of <code>ntptrace</code>.
 
   <div class="shortcontents">
 <h2>Short Contents</h2>
@@ -107,7 +107,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntptrace - Trace peers of an NTP server - Ver. 4.2.8p8
+<pre class="example">ntptrace - Trace peers of an NTP server - Ver. 4.2.8p9
 USAGE: ntptrace [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]... [host]
 
     -n, --numeric                Print IP addresses instead of hostnames
Index: contrib/ntp/scripts/plot_summary.1plot_summaryman
===================================================================
--- contrib/ntp/scripts/plot_summary.1plot_summaryman	(版本 309693)
+++ contrib/ntp/scripts/plot_summary.1plot_summaryman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH plot_summary 1plot_summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH plot_summary 1plot_summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-4QaG0Q/ag-hRaOZQ)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-BQayqe/ag-OQaGpe)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:25:53 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:28 AM by AutoGen 5.18.5
 .\" From the definitions plot_summary-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/plot_summary.mdoc.in
===================================================================
--- contrib/ntp/scripts/plot_summary.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/plot_summary.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt PLOT_SUMMARY 1plot_summarymdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (plot_summary-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:25:55 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:30 AM by AutoGen 5.18.5
 .\"  From the definitions    plot_summary-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.h)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:37:55 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:03:11 AM by AutoGen 5.18.5
  *  From the definitions    ntpsnmpd-opts.def
  *  and the template file   options
  *
@@ -76,9 +76,9 @@
 /** count of all options for ntpsnmpd */
 #define OPTION_CT    8
 /** ntpsnmpd version */
-#define NTPSNMPD_VERSION       "4.2.8p8"
+#define NTPSNMPD_VERSION       "4.2.8p9"
 /** Full ntpsnmpd version text */
-#define NTPSNMPD_FULL_VERSION  "ntpsnmpd 4.2.8p8"
+#define NTPSNMPD_FULL_VERSION  "ntpsnmpd 4.2.8p9"
 
 /**
  *  Interface defines for all options.  Replace "n" with the UPPER_CASED
Index: contrib/ntp/ntpsnmpd/ntpsnmpd.man.in
===================================================================
--- contrib/ntp/ntpsnmpd/ntpsnmpd.man.in	(版本 309693)
+++ contrib/ntp/ntpsnmpd/ntpsnmpd.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpsnmpd @NTPSNMPD_MS@ "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH ntpsnmpd @NTPSNMPD_MS@ "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IPay_Y/ag-WPaq.Y)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oTaGvl/ag-ATayul)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:39:11 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:03:18 AM by AutoGen 5.18.5
 .\" From the definitions ntpsnmpd-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman
===================================================================
--- contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman	(版本 309693)
+++ contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH calc_tickadj 1calc_tickadjman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH calc_tickadj 1calc_tickadjman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-3laW2J/ag-ema41J)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OyayV3/ag-1yaGU3)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:25 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:34 AM by AutoGen 5.18.5
 .\" From the definitions calc_tickadj-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in
===================================================================
--- contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt CALC_TICKADJ 1calc_tickadjmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (calc_tickadj-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:24:27 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:36 AM by AutoGen 5.18.5
 .\"  From the definitions    calc_tickadj-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi
===================================================================
--- contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntp-wait.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:24:39 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:58:47 AM by AutoGen 5.18.5
 # From the definitions    ntp-wait-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -61,7 +61,7 @@
 
 @exampleindent 0
 @example
-ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p8
+ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p9
 USAGE: ntp-wait [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... 
 
     -n, --tries=num              Number of times to check ntpd
Index: contrib/ntp/scripts/ntp-wait/ntp-wait.html
===================================================================
--- contrib/ntp/scripts/ntp-wait/ntp-wait.html	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/ntp-wait.html	(版本 310419)
@@ -39,7 +39,7 @@
 and only then start any applicaitons (like database servers) that require
 accurate and stable time.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntp-wait</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntp-wait</code>.
 
 <div class="shortcontents">
 <h2>Short Contents</h2>
@@ -114,7 +114,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p8
+<pre class="example">ntp-wait - Wait for ntpd to stabilize the system clock - Ver. 4.2.8p9
 USAGE: ntp-wait [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]...
 
     -n, --tries=num              Number of times to check ntpd
Index: contrib/ntp/scripts/ntpsweep/ntpsweep-opts
===================================================================
--- contrib/ntp/scripts/ntpsweep/ntpsweep-opts	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/ntpsweep-opts	(版本 310419)
@@ -1,6 +1,6 @@
 # EDIT THIS FILE WITH CAUTION  (ntpsweep-opts)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:24:46 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:58:51 AM by AutoGen 5.18.5
 # From the definitions    ntpsweep-opts.def
 # and the template file   perlopt
 
@@ -43,7 +43,7 @@
         'help|?', 'more-help'));
 
     $usage = <<'USAGE';
-ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p8
+ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p9
 USAGE: ntpsweep [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [hostfile]
 
     -l, --host-list=str          Host to execute actions on
Index: contrib/ntp/scripts/ntpsweep/ntpsweep.man.in
===================================================================
--- contrib/ntp/scripts/ntpsweep/ntpsweep.man.in	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/ntpsweep.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpsweep 1ntpsweepman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntpsweep 1ntpsweepman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-KKaWSM/ag-XKa4RM)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pTaqL6/ag-CTayK6)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:51 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:56 AM by AutoGen 5.18.5
 .\" From the definitions ntpsweep-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/invoke-summary.texi
===================================================================
--- contrib/ntp/scripts/invoke-summary.texi	(版本 309693)
+++ contrib/ntp/scripts/invoke-summary.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-summary.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:58 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:32 AM by AutoGen 5.18.5
 # From the definitions    summary-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -42,7 +42,7 @@
 
 @exampleindent 0
 @example
-summary - compute various stastics from NTP stat files - Ver. 4.2.8p8
+summary - compute various stastics from NTP stat files - Ver. 4.2.8p9
 USAGE: summary [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... 
 
         --directory=str          Directory containing stat files
Index: contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc
===================================================================
--- contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_WAIT 1ntp-waitmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp-wait-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:24:44 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:50 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp-wait-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi
===================================================================
--- contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntpsweep.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:24:48 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:58:54 AM by AutoGen 5.18.5
 # From the definitions    ntpsweep-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -45,7 +45,7 @@
 
 @exampleindent 0
 @example
-ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p8
+ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p9
 USAGE: ntpsweep [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [hostfile]
 
     -l, --host-list=str          Host to execute actions on
Index: contrib/ntp/scripts/ntpsweep/ntpsweep.html
===================================================================
--- contrib/ntp/scripts/ntpsweep/ntpsweep.html	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/ntpsweep.html	(版本 310419)
@@ -30,7 +30,7 @@
 
   <p>This document describes the use of the NTP Project's <code>ntpsweep</code> program.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntpsweep</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntpsweep</code>.
 
   <div class="shortcontents">
 <h2>Short Contents</h2>
@@ -90,7 +90,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p8
+<pre class="example">ntpsweep - Print various informations about given ntp servers - Ver. 4.2.8p9
 USAGE: ntpsweep [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]... [hostfile]
 
     -l, --host-list=str          Host to execute actions on
Index: contrib/ntp/scripts/ntptrace/ntptrace-opts
===================================================================
--- contrib/ntp/scripts/ntptrace/ntptrace-opts	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/ntptrace-opts	(版本 310419)
@@ -1,6 +1,6 @@
 # EDIT THIS FILE WITH CAUTION  (ntptrace-opts)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:24:57 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:01 AM by AutoGen 5.18.5
 # From the definitions    ntptrace-opts.def
 # and the template file   perlopt
 
@@ -40,7 +40,7 @@
         'help|?', 'more-help'));
 
     $usage = <<'USAGE';
-ntptrace - Trace peers of an NTP server - Ver. 4.2.8p8
+ntptrace - Trace peers of an NTP server - Ver. 4.2.8p9
 USAGE: ntptrace [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [host]
 
     -n, --numeric                Print IP addresses instead of hostnames
Index: contrib/ntp/scripts/ntptrace/ntptrace.man.in
===================================================================
--- contrib/ntp/scripts/ntptrace/ntptrace.man.in	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/ntptrace.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntptrace @NTPTRACE_MS@ "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntptrace @NTPTRACE_MS@ "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-GMa4.N/ag-VMaa.N)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TDaOwb/ag-6DaWvb)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:59 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:03 AM by AutoGen 5.18.5
 .\" From the definitions ntptrace-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/plot_summary.1plot_summarymdoc
===================================================================
--- contrib/ntp/scripts/plot_summary.1plot_summarymdoc	(版本 309693)
+++ contrib/ntp/scripts/plot_summary.1plot_summarymdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt PLOT_SUMMARY 1plot_summarymdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (plot_summary-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:25:55 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:30 AM by AutoGen 5.18.5
 .\"  From the definitions    plot_summary-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/summary-opts
===================================================================
--- contrib/ntp/scripts/summary-opts	(版本 309693)
+++ contrib/ntp/scripts/summary-opts	(版本 310419)
@@ -1,6 +1,6 @@
 # EDIT THIS FILE WITH CAUTION  (summary-opts)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:48 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:24 AM by AutoGen 5.18.5
 # From the definitions    summary-opts.def
 # and the template file   perlopt
 
@@ -44,7 +44,7 @@
         'help|?', 'more-help'));
 
     $usage = <<'USAGE';
-summary - compute various stastics from NTP stat files - Ver. 4.2.8p8
+summary - compute various stastics from NTP stat files - Ver. 4.2.8p9
 USAGE: summary [ -<flag> [<val>] | --<name>[{=| }<val>] ]... 
 
         --directory=str          Directory containing stat files
Index: contrib/ntp/scripts/summary.man.in
===================================================================
--- contrib/ntp/scripts/summary.man.in	(版本 309693)
+++ contrib/ntp/scripts/summary.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH summary 1summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH summary 1summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OuaicR/ag-3uaqbR)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-SaaaEe/ag-5aaiDe)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:26:00 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:34 AM by AutoGen 5.18.5
 .\" From the definitions summary-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/update-leap/update-leap.1update-leapman
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap.1update-leapman	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap.1update-leapman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH update-leap 1update-leapman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH update-leap 1update-leapman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-qJaG0O/ag-DJaOZO)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Oraiqc/ag-1raqpc)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:25:07 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:10 AM by AutoGen 5.18.5
 .\" From the definitions update-leap-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/update-leap/update-leap.man.in
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap.man.in	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH update-leap 1update-leapman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH update-leap 1update-leapman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-qJaG0O/ag-DJaOZO)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Oraiqc/ag-1raqpc)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:25:07 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:10 AM by AutoGen 5.18.5
 .\" From the definitions update-leap-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/ntp-wait/ntp-wait.man.in
===================================================================
--- contrib/ntp/scripts/ntp-wait/ntp-wait.man.in	(版本 309693)
+++ contrib/ntp/scripts/ntp-wait/ntp-wait.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp-wait @NTP_WAIT_MS@ "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntp-wait @NTP_WAIT_MS@ "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-IZaWqL/ag-WZa4pL)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-oRayj5/ag-CRaGi5)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:36 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:43 AM by AutoGen 5.18.5
 .\" From the definitions ntp-wait-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman
===================================================================
--- contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntpsweep 1ntpsweepman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntpsweep 1ntpsweepman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-KKaWSM/ag-XKa4RM)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-pTaqL6/ag-CTayK6)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:51 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:56 AM by AutoGen 5.18.5
 .\" From the definitions ntpsweep-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in
===================================================================
--- contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPSWEEP 1ntpsweepmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpsweep-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:24:55 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:59 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpsweep-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc
===================================================================
--- contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPTRACE 1ntptracemdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntptrace-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:25:05 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntptrace-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/plot_summary-opts
===================================================================
--- contrib/ntp/scripts/plot_summary-opts	(版本 309693)
+++ contrib/ntp/scripts/plot_summary-opts	(版本 310419)
@@ -1,6 +1,6 @@
 # EDIT THIS FILE WITH CAUTION  (plot_summary-opts)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:41 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:22 AM by AutoGen 5.18.5
 # From the definitions    plot_summary-opts.def
 # and the template file   perlopt
 
@@ -46,7 +46,7 @@
         'help|?', 'more-help'));
 
     $usage = <<'USAGE';
-plot_summary - plot statistics generated by summary script - Ver. 4.2.8p8
+plot_summary - plot statistics generated by summary script - Ver. 4.2.8p9
 USAGE: plot_summary [ -<flag> [<val>] | --<name>[{=| }<val>] ]... 
 
         --directory=str          Where the summary files are
Index: contrib/ntp/scripts/plot_summary.man.in
===================================================================
--- contrib/ntp/scripts/plot_summary.man.in	(版本 309693)
+++ contrib/ntp/scripts/plot_summary.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH plot_summary 1plot_summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH plot_summary 1plot_summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-4QaG0Q/ag-hRaOZQ)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-BQayqe/ag-OQaGpe)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:25:53 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:28 AM by AutoGen 5.18.5
 .\" From the definitions plot_summary-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/summary.1summarymdoc
===================================================================
--- contrib/ntp/scripts/summary.1summarymdoc	(版本 309693)
+++ contrib/ntp/scripts/summary.1summarymdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt SUMMARY 1summarymdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (summary-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:26:02 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:36 AM by AutoGen 5.18.5
 .\"  From the definitions    summary-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/update-leap/invoke-update-leap.texi
===================================================================
--- contrib/ntp/scripts/update-leap/invoke-update-leap.texi	(版本 309693)
+++ contrib/ntp/scripts/update-leap/invoke-update-leap.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-update-leap.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:12 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:14 AM by AutoGen 5.18.5
 # From the definitions    update-leap-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
Index: contrib/ntp/scripts/update-leap/update-leap.html
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap.html	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap.html	(版本 310419)
@@ -30,7 +30,7 @@
 
   <p>This document describes the use of the NTP Project's <code>update-leap</code> program.
 
-  <p>This document applies to version 4.2.8p8 of <code>update-leap</code>.
+  <p>This document applies to version 4.2.8p9 of <code>update-leap</code>.
 
 <div class="shortcontents">
 <h2>Short Contents</h2>
Index: contrib/ntp/sntp/configure
===================================================================
--- contrib/ntp/sntp/configure	(版本 309693)
+++ contrib/ntp/sntp/configure	(版本 310419)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for sntp 4.2.8p8.
+# Generated by GNU Autoconf 2.69 for sntp 4.2.8p9.
 #
 # Report bugs to <http://bugs.ntp.org./>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='sntp'
 PACKAGE_TARNAME='sntp'
-PACKAGE_VERSION='4.2.8p8'
-PACKAGE_STRING='sntp 4.2.8p8'
+PACKAGE_VERSION='4.2.8p9'
+PACKAGE_STRING='sntp 4.2.8p9'
 PACKAGE_BUGREPORT='http://bugs.ntp.org./'
 PACKAGE_URL='http://www.ntp.org./'
 
@@ -1496,7 +1496,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sntp 4.2.8p8 to adapt to many kinds of systems.
+\`configure' configures sntp 4.2.8p9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1566,7 +1566,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sntp 4.2.8p8:";;
+     short | recursive ) echo "Configuration of sntp 4.2.8p9:";;
    esac
   cat <<\_ACEOF
 
@@ -1712,7 +1712,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sntp configure 4.2.8p8
+sntp configure 4.2.8p9
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2542,7 +2542,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sntp $as_me 4.2.8p8, which was
+It was created by sntp $as_me 4.2.8p9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3539,7 +3539,7 @@
 
 # Define the identity of the package.
  PACKAGE='sntp'
- VERSION='4.2.8p8'
+ VERSION='4.2.8p9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -31184,7 +31184,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sntp $as_me 4.2.8p8, which was
+This file was extended by sntp $as_me 4.2.8p9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -31251,7 +31251,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-sntp config.status 4.2.8p8
+sntp config.status 4.2.8p9
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
Index: contrib/ntp/scripts/summary.html
===================================================================
--- contrib/ntp/scripts/summary.html	(版本 309693)
+++ contrib/ntp/scripts/summary.html	(版本 310419)
@@ -31,7 +31,7 @@
 <h2 class="unnumbered">Summary User Manual</h2>
 
 <p>This document describes the use of the NTP Project's <code>summary</code> program. 
-This document applies to version 4.2.8p8 of <code>summary</code>.
+This document applies to version 4.2.8p9 of <code>summary</code>.
 
   <div class="shortcontents">
 <h2>Short Contents</h2>
@@ -88,7 +88,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">summary - compute various stastics from NTP stat files - Ver. 4.2.8p8
+<pre class="example">summary - compute various stastics from NTP stat files - Ver. 4.2.8p9
 USAGE: summary [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]...
 
         --directory=str          Directory containing stat files
Index: contrib/ntp/scripts/update-leap/update-leap-opts
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap-opts	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap-opts	(版本 310419)
@@ -1,6 +1,6 @@
 # EDIT THIS FILE WITH CAUTION  (update-leap-opts)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:25:39 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:59:22 AM by AutoGen 5.18.5
 # From the definitions    update-leap-opts.def
 # and the template file   perlopt
 
@@ -46,7 +46,7 @@
         'help|?', 'more-help'));
 
     $usage = <<'USAGE';
-update-leap - leap-seconds file manager/updater - Ver. 4.2.8p8
+update-leap - leap-seconds file manager/updater - Ver. 4.2.8p9
 USAGE: update-leap [ -<flag> [<val>] | --<name>[{=| }<val>] ]... 
 
     -s, --source-url=str         The URL of the master copy of the leapseconds file
Index: contrib/ntp/scripts/update-leap/update-leap.in
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap.in	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap.in	(版本 310419)
@@ -34,7 +34,10 @@
 my $VERBOSE = "";
 
 # Where to get the file
-my $LEAPSRC="ftp://time.nist.gov/pub/leap-seconds.list";
+# Choices:
+#	https://www.ietf.org/timezones/data/leap-seconds.list
+#	ftp://time.nist.gov/pub/leap-seconds.list
+my $LEAPSRC="https://www.ietf.org/timezones/data/leap-seconds.list";
 my $LEAPFILE;
 
 # How many times to try to download new file
@@ -300,7 +303,7 @@
 open(LF, $NTPCONF) || die "Can't open <$NTPCONF>: $!\n";
 while (<LF>) {
     chomp;
-    if (/^ *leapfile\s+(\S+)/) {
+    if (/^ *leapfile\s+"(\S+)"/) {
 	$LEAPFILE = $1;
     }
 }
Index: contrib/ntp/sntp/crypto.c
===================================================================
--- contrib/ntp/sntp/crypto.c	(版本 309693)
+++ contrib/ntp/sntp/crypto.c	(版本 310419)
@@ -2,6 +2,7 @@
 #include "crypto.h"
 #include <ctype.h>
 #include "isc/string.h"
+#include "libssl_compat.h"
 
 struct key *key_ptr;
 size_t key_cnt = 0;
@@ -17,7 +18,7 @@
 {
 	u_int		len = mac_size;
 	int		key_type;
-	EVP_MD_CTX	ctx;
+	EVP_MD_CTX *	ctx;
 	
 	if (cmp_key->key_len > 64)
 		return 0;
@@ -26,11 +27,14 @@
 
 	INIT_SSL();
 	key_type = keytype_from_text(cmp_key->type, NULL);
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(key_type));
-	EVP_DigestUpdate(&ctx, (const u_char *)cmp_key->key_seq, (u_int)cmp_key->key_len);
-	EVP_DigestUpdate(&ctx, pkt_data, (u_int)pkt_size);
-	EVP_DigestFinal(&ctx, digest, &len);
-
+	
+	ctx = EVP_MD_CTX_new();
+	EVP_DigestInit(ctx, EVP_get_digestbynid(key_type));
+	EVP_DigestUpdate(ctx, (const u_char *)cmp_key->key_seq, (u_int)cmp_key->key_len);
+	EVP_DigestUpdate(ctx, pkt_data, (u_int)pkt_size);
+	EVP_DigestFinal(ctx, digest, &len);
+	EVP_MD_CTX_free(ctx);
+	
 	return (int)len;
 }
 
@@ -64,7 +68,7 @@
 		 * with.  sntp is a 1-shot program, so snooping for
 		 * timing attacks is Harder.
 		 */
-		authentic = !memcmp(digest, pkt_data + pkt_size + 4,
+		authentic = !memcmp(digest, (const char*)pkt_data + pkt_size + 4,
 				    hash_len);
 	}
 	return authentic;
Index: contrib/ntp/sntp/m4/version.m4
===================================================================
--- contrib/ntp/sntp/m4/version.m4	(版本 309693)
+++ contrib/ntp/sntp/m4/version.m4	(版本 310419)
@@ -1 +1 @@
-m4_define([VERSION_NUMBER],[4.2.8p8])
+m4_define([VERSION_NUMBER],[4.2.8p9])
Index: contrib/ntp/sntp/sntp.1sntpmdoc
===================================================================
--- contrib/ntp/sntp/sntp.1sntpmdoc	(版本 309693)
+++ contrib/ntp/sntp/sntp.1sntpmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt SNTP 1sntpmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (sntp-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:20:03 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:32 AM by AutoGen 5.18.5
 .\"  From the definitions    sntp-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -211,7 +211,7 @@
 more than enough for a unicast response.  If \fBsntp\fP is
 only waiting for a broadcast response a longer timeout is
 likely needed.
-.It  Fl \-wait , " Fl \-no\-wait"
+.It  Fl \-wait , Fl \-no\-wait
 Wait for pending replies (if not setting the time).
 The \fIno\-wait\fP form will disable the option.
 This option is enabled by default.
Index: contrib/ntp/sntp/tests/packetProcessing.c
===================================================================
--- contrib/ntp/sntp/tests/packetProcessing.c	(版本 309693)
+++ contrib/ntp/sntp/tests/packetProcessing.c	(版本 310419)
@@ -1,10 +1,5 @@
 #include "config.h"
 
-/* need autokey for some of the tests, or the will create buffer overruns. */
-#ifndef AUTOKEY
-# define AUTOKEY 1
-#endif
-
 #include "sntptest.h"
 #include "networking.h"
 #include "ntp_stdlib.h"
@@ -13,7 +8,7 @@
 
 const char * Version = "stub unit test Version string";
 
-// Hacks into the key database.
+/* Hacks into the key database. */
 extern struct key* key_ptr;
 extern int key_cnt;
 
@@ -41,9 +36,25 @@
 void test_CorrectAuthenticatedPacketMD5(void);
 void test_CorrectAuthenticatedPacketSHA1(void);
 
+/* [Bug 2998] There are some issues whith the definition of 'struct pkt'
+ * when AUTOKEY is undefined -- the formal struct is too small to hold
+ * all the extension fields that are going to be tested. We have to make
+ * sure we have the extra bytes, or the test yield undefined results due
+ * to buffer overrun. 
+ */
+#ifndef AUTOKEY
+# define EXTRA_BUFSIZE 256
+#else
+# define EXTRA_BUFSIZE 0
+#endif
 
-static struct pkt testpkt;
-static struct pkt testspkt;
+union tpkt {
+	struct pkt p;
+	u_char     b[sizeof(struct pkt) + EXTRA_BUFSIZE];
+}; 
+
+static union tpkt testpkt;
+static union tpkt testspkt;
 static sockaddr_u testsock;
 bool restoreKeyDb;
 
@@ -95,10 +106,10 @@
 	/* Initialize the test packet and socket,
 	 * so they contain at least some valid data.
 	 */
-	testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, NTP_VERSION,
+	testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, NTP_VERSION,
 										MODE_SERVER);
-	testpkt.stratum = STRATUM_REFCLOCK;
-	memcpy(&testpkt.refid, "GPS\0", 4);
+	testpkt.p.stratum = STRATUM_REFCLOCK;
+	memcpy(&testpkt.p.refid, "GPS\0", 4);
 
 	/* Set the origin timestamp of the received packet to the
 	 * same value as the transmit timestamp of the sent packet.
@@ -107,8 +118,8 @@
 	tmp.l_ui = 1000UL;
 	tmp.l_uf = 0UL;
 
-	HTONL_FP(&tmp, &testpkt.org);
-	HTONL_FP(&tmp, &testspkt.xmt);
+	HTONL_FP(&tmp, &testpkt.p.org);
+	HTONL_FP(&tmp, &testspkt.p.xmt);
 }
 
 
@@ -129,11 +140,11 @@
 test_TooShortLength(void)
 {
 	TEST_ASSERT_EQUAL(PACKET_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC - 1,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC - 1,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 	TEST_ASSERT_EQUAL(PACKET_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC - 1,
-				      MODE_BROADCAST, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC - 1,
+				      MODE_BROADCAST, &testspkt.p, "UnitTest"));
 }
 
 
@@ -141,11 +152,11 @@
 test_LengthNotMultipleOfFour(void)
 {
 	TEST_ASSERT_EQUAL(PACKET_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC + 6,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC + 6,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 	TEST_ASSERT_EQUAL(PACKET_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC + 3,
-				      MODE_BROADCAST, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC + 3,
+				      MODE_BROADCAST, &testspkt.p, "UnitTest"));
 }
 
 
@@ -152,11 +163,18 @@
 void
 test_TooShortExtensionFieldLength(void)
 {
+	/* [Bug 2998] We have to get around the formal specification of
+	 * the extension field if AUTOKEY is undefined. (At least CLANG
+	 * issues a warning in this case. It's just a warning, but
+	 * still...
+	 */
+	uint32_t * pe = testpkt.p.exten + 7;
+	
 	/* The lower 16-bits are the length of the extension field.
 	 * This lengths must be multiples of 4 bytes, which gives
 	 * a minimum of 4 byte extension field length.
 	 */
-	testpkt.exten[7] = htonl(3); /* 3 bytes is too short. */
+	*pe = htonl(3); /* 3 bytes is too short. */
 
 	/* We send in a pkt_len of header size + 4 byte extension
 	 * header + 24 byte MAC, this prevents the length error to
@@ -165,8 +183,8 @@
 	int pkt_len = LEN_PKT_NOMAC + 4 + 24;
 
 	TEST_ASSERT_EQUAL(PACKET_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -181,8 +199,8 @@
 
 	/* We demand authentication, but no MAC header is present. */
 	TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -196,8 +214,8 @@
 	int pkt_len = LEN_PKT_NOMAC + 4; /* + 4 byte MAC = Crypto-NAK */
 
 	TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -211,19 +229,19 @@
 	/* Prepare the packet. */
 	int pkt_len = LEN_PKT_NOMAC;
 
-	testpkt.exten[0] = htonl(50);
-	int mac_len = make_mac(&testpkt, pkt_len,
+	testpkt.p.exten[0] = htonl(50);
+	int mac_len = make_mac(&testpkt.p, pkt_len,
 			       MAX_MD5_LEN, key_ptr,
-			       &testpkt.exten[1]);
+			       &testpkt.p.exten[1]);
 
 	pkt_len += 4 + mac_len;
 
 	/* Now, alter the MAC so it becomes invalid. */
-	testpkt.exten[1] += 1;
+	testpkt.p.exten[1] += 1;
 
 	TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -239,15 +257,15 @@
 	 */
 	int pkt_len = LEN_PKT_NOMAC;
 
-	testpkt.exten[0] = htonl(50);
-	int mac_len = make_mac(&testpkt, pkt_len,
+	testpkt.p.exten[0] = htonl(50);
+	int mac_len = make_mac(&testpkt.p, pkt_len,
 			       MAX_MD5_LEN, key_ptr,
-			       &testpkt.exten[1]);
+			       &testpkt.p.exten[1]);
 	pkt_len += 4 + mac_len;
 
 	TEST_ASSERT_EQUAL(SERVER_AUTH_FAIL,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -256,16 +274,16 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
-					    NTP_OLDVERSION - 1,
-					    MODE_CLIENT);
-	TEST_ASSERT_TRUE(PKT_VERSION(testpkt.li_vn_mode) < NTP_OLDVERSION);
+	testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+					      NTP_OLDVERSION - 1,
+					      MODE_CLIENT);
+	TEST_ASSERT_TRUE(PKT_VERSION(testpkt.p.li_vn_mode) < NTP_OLDVERSION);
 
 	int pkt_len = LEN_PKT_NOMAC;
 	
 	TEST_ASSERT_EQUAL(SERVER_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -274,16 +292,16 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
-					    NTP_VERSION + 1,
-					    MODE_CLIENT);
-	TEST_ASSERT_TRUE(PKT_VERSION(testpkt.li_vn_mode) > NTP_VERSION);
+	testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+					      NTP_VERSION + 1,
+					      MODE_CLIENT);
+	TEST_ASSERT_TRUE(PKT_VERSION(testpkt.p.li_vn_mode) > NTP_VERSION);
 
 	int pkt_len = LEN_PKT_NOMAC;
 
 	TEST_ASSERT_EQUAL(SERVER_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -292,16 +310,16 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
-					    NTP_VERSION,
-					    MODE_CLIENT);
+	testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+					      NTP_VERSION,
+					      MODE_CLIENT);
 
 	/* The packet has a mode of MODE_CLIENT, but process_pkt expects
 	 * MODE_SERVER
 	 */
 	TEST_ASSERT_EQUAL(SERVER_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -311,12 +329,12 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.stratum = STRATUM_PKT_UNSPEC;
-	memcpy(&testpkt.refid, "RATE", 4);
+	testpkt.p.stratum = STRATUM_PKT_UNSPEC;
+	memcpy(&testpkt.p.refid, "RATE", 4);
 
 	TEST_ASSERT_EQUAL(KOD_RATE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -325,12 +343,12 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.stratum = STRATUM_PKT_UNSPEC;
-	memcpy(&testpkt.refid, "DENY", 4);
+	testpkt.p.stratum = STRATUM_PKT_UNSPEC;
+	memcpy(&testpkt.p.refid, "DENY", 4);
 
 	TEST_ASSERT_EQUAL(KOD_DEMOBILIZE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -339,13 +357,13 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC,
-					    NTP_VERSION,
-					    MODE_SERVER);
+	testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC,
+					      NTP_VERSION,
+					      MODE_SERVER);
 
 	TEST_ASSERT_EQUAL(SERVER_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -357,15 +375,15 @@
 	l_fp tmp;
 	tmp.l_ui = 1000UL;
 	tmp.l_uf = 0UL;
-	HTONL_FP(&tmp, &testpkt.org);
+	HTONL_FP(&tmp, &testpkt.p.org);
 
 	tmp.l_ui = 2000UL;
 	tmp.l_uf = 0UL;
-	HTONL_FP(&tmp, &testspkt.xmt);
+	HTONL_FP(&tmp, &testspkt.p.xmt);
 
 	TEST_ASSERT_EQUAL(PACKET_UNUSEABLE,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -374,12 +392,12 @@
 {
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
-	testpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
-					    NTP_VERSION,
-					    MODE_BROADCAST);
+	testpkt.p.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+					      NTP_VERSION,
+					      MODE_BROADCAST);
 
 	TEST_ASSERT_EQUAL(LEN_PKT_NOMAC,
-		  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
+		  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
 			      MODE_BROADCAST, NULL, "UnitTest"));
 }
 
@@ -390,8 +408,8 @@
 	TEST_ASSERT_FALSE(ENABLED_OPT(AUTHENTICATION));
 
 	TEST_ASSERT_EQUAL(LEN_PKT_NOMAC,
-			  process_pkt(&testpkt, &testsock, LEN_PKT_NOMAC,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, LEN_PKT_NOMAC,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -404,16 +422,16 @@
 	int pkt_len = LEN_PKT_NOMAC;
 
 	/* Prepare the packet. */
-	testpkt.exten[0] = htonl(10);
-	int mac_len = make_mac(&testpkt, pkt_len,
+	testpkt.p.exten[0] = htonl(10);
+	int mac_len = make_mac(&testpkt.p, pkt_len,
 			       MAX_MD5_LEN, key_ptr,
-			       &testpkt.exten[1]);
+			       &testpkt.p.exten[1]);
 
 	pkt_len += 4 + mac_len;
 
 	TEST_ASSERT_EQUAL(pkt_len,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
 
 
@@ -426,14 +444,14 @@
 	int pkt_len = LEN_PKT_NOMAC;
 
 	/* Prepare the packet. */
-	testpkt.exten[0] = htonl(20);
-	int mac_len = make_mac(&testpkt, pkt_len,
+	testpkt.p.exten[0] = htonl(20);
+	int mac_len = make_mac(&testpkt.p, pkt_len,
 			       MAX_MAC_LEN, key_ptr,
-			       &testpkt.exten[1]);
+			       &testpkt.p.exten[1]);
 
 	pkt_len += 4 + mac_len;
 
 	TEST_ASSERT_EQUAL(pkt_len,
-			  process_pkt(&testpkt, &testsock, pkt_len,
-				      MODE_SERVER, &testspkt, "UnitTest"));
+			  process_pkt(&testpkt.p, &testsock, pkt_len,
+				      MODE_SERVER, &testspkt.p, "UnitTest"));
 }
Index: contrib/ntp/sntp/unity/ulib_setup.c
===================================================================
--- contrib/ntp/sntp/unity/ulib_setup.c	(不存在的)
+++ contrib/ntp/sntp/unity/ulib_setup.c	(版本 310419)
@@ -0,0 +1,14 @@
+/* default / lib implementation of 'setUp()'
+ *
+ * SOLARIS does not support weak symbols -- need a real lib
+ * implemetation here.
+ */
+
+extern void setUp(void);
+
+void setUp(void)
+{
+	/* empty on purpose */
+}
+
+/* -*- that's all folks! -*- */

 属性改变: contrib/ntp/sntp/unity/ulib_setup.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: contrib/ntp/tests/libntp/a_md5encrypt.c
===================================================================
--- contrib/ntp/tests/libntp/a_md5encrypt.c	(版本 309693)
+++ contrib/ntp/tests/libntp/a_md5encrypt.c	(版本 310419)
@@ -49,9 +49,7 @@
 	u_int32 *packetPtr;
 	int length;
 
-	packetPtr = emalloc(totalLength * sizeof(*packetPtr));
-
-	memset(packetPtr + packetLength, 0, keyIdLength);
+	packetPtr = emalloc_zero(totalLength * sizeof(*packetPtr));
 	memcpy(packetPtr, packet, packetLength);
 
 	cache_secretsize = keyLength;
Index: contrib/ntp/tests/ntpd/Makefile.am
===================================================================
--- contrib/ntp/tests/ntpd/Makefile.am	(版本 309693)
+++ contrib/ntp/tests/ntpd/Makefile.am	(版本 310419)
@@ -156,7 +156,6 @@
 	t-ntp_signd.c				\
 	run-t-ntp_signd.c			\
 	$(srcdir)/../libntp/test-libntp.c	\
-	$(srcdir)/../../ntpd/ntp_signd.c	\
 	$(NULL)
 
 $(srcdir)/run-t-ntp_signd.c: $(srcdir)/t-ntp_signd.c $(std_unity_list)
Index: contrib/ntp/util/ntp-keygen-opts.h
===================================================================
--- contrib/ntp/util/ntp-keygen-opts.h	(版本 309693)
+++ contrib/ntp/util/ntp-keygen-opts.h	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.h)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:39:23 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:03:29 AM by AutoGen 5.18.5
  *  From the definitions    ntp-keygen-opts.def
  *  and the template file   options
  *
@@ -94,9 +94,9 @@
 /** count of all options for ntp-keygen */
 #define OPTION_CT    26
 /** ntp-keygen version */
-#define NTP_KEYGEN_VERSION       "4.2.8p8"
+#define NTP_KEYGEN_VERSION       "4.2.8p9"
 /** Full ntp-keygen version text */
-#define NTP_KEYGEN_FULL_VERSION  "ntp-keygen (ntp) 4.2.8p8"
+#define NTP_KEYGEN_FULL_VERSION  "ntp-keygen (ntp) 4.2.8p9"
 
 /**
  *  Interface defines for all options.  Replace "n" with the UPPER_CASED
Index: contrib/ntp/util/ntp-keygen.html
===================================================================
--- contrib/ntp/util/ntp-keygen.html	(版本 309693)
+++ contrib/ntp/util/ntp-keygen.html	(版本 310419)
@@ -70,7 +70,7 @@
 printable ASCII format so they can be embedded as MIME attachments in
 mail to other sites.
 
-  <p>This document applies to version 4.2.8p8 of <code>ntp-keygen</code>.
+  <p>This document applies to version 4.2.8p9 of <code>ntp-keygen</code>.
 
 <div class="node">
 <p><hr>
@@ -1085,7 +1085,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p7
+<pre class="example">ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9-RC
 Usage:  ntp-keygen [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]...
   Flg Arg Option-Name    Description
    -b Num imbits         identity modulus bits
Index: usr.sbin/ntp/config.h
===================================================================
--- usr.sbin/ntp/config.h	(版本 309693)
+++ usr.sbin/ntp/config.h	(版本 310419)
@@ -1449,7 +1449,7 @@
 #define PACKAGE_NAME "ntp"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "ntp 4.2.8p8"
+#define PACKAGE_STRING "ntp 4.2.8p9"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "ntp"
@@ -1458,7 +1458,7 @@
 #define PACKAGE_URL "http://www.ntp.org./"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "4.2.8p8"
+#define PACKAGE_VERSION "4.2.8p9"
 
 /* data dir */
 #define PERLLIBDIR "/usr/local/share/ntp/lib"
@@ -1639,7 +1639,7 @@
 /* #undef USE_UDP_SIGPOLL */
 
 /* Version number of package */
-#define VERSION "4.2.8p8"
+#define VERSION "4.2.8p9"
 
 /* vsnprintf expands "%m" to strerror(errno) */
 /* #undef VSNPRINTF_PERCENT_M */
@@ -1816,5 +1816,5 @@
 /*
  * FreeBSD specific: Explicitly specify date/time for reproducible build.
  */
-#define	MKREPRO_DATE "Jun 03 2016"
-#define	MKREPRO_TIME "06:34:37"
+#define	MKREPRO_DATE "Nov 22 2016"
+#define	MKREPRO_TIME "06:54:45"
Index: usr.sbin/ntp/doc/ntpd.8
===================================================================
--- usr.sbin/ntp/doc/ntpd.8	(版本 309693)
+++ usr.sbin/ntp/doc/ntpd.8	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPD 8 User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpd-opts.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:22 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpd-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman
===================================================================
--- contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntptrace 1ntptraceman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntptrace 1ntptraceman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-GMa4.N/ag-VMaa.N)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TDaOwb/ag-6DaWvb)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:24:59 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:03 AM by AutoGen 5.18.5
 .\" From the definitions ntptrace-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in
===================================================================
--- contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPTRACE @NTPTRACE_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntptrace-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:25:05 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntptrace-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/plot_summary.html
===================================================================
--- contrib/ntp/scripts/plot_summary.html	(版本 309693)
+++ contrib/ntp/scripts/plot_summary.html	(版本 310419)
@@ -31,7 +31,7 @@
 <h2 class="unnumbered">Plot_summary User Manual</h2>
 
 <p>This document describes the use of the NTP Project's <code>plot_summary</code> program. 
-This document applies to version 4.2.8p8 of <code>plot_summary</code>.
+This document applies to version 4.2.8p9 of <code>plot_summary</code>.
 
   <div class="shortcontents">
 <h2>Short Contents</h2>
@@ -89,7 +89,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">plot_summary - plot statistics generated by summary script - Ver. 4.2.8p8
+<pre class="example">plot_summary - plot statistics generated by summary script - Ver. 4.2.8p9
 USAGE: plot_summary [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]...
 
         --directory=str          Where the summary files are
Index: contrib/ntp/scripts/summary.1summaryman
===================================================================
--- contrib/ntp/scripts/summary.1summaryman	(版本 309693)
+++ contrib/ntp/scripts/summary.1summaryman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH summary 1summaryman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH summary 1summaryman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-OuaicR/ag-3uaqbR)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-SaaaEe/ag-5aaiDe)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:26:00 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:59:34 AM by AutoGen 5.18.5
 .\" From the definitions summary-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/scripts/summary.mdoc.in
===================================================================
--- contrib/ntp/scripts/summary.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/summary.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt SUMMARY 1summarymdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (summary-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:26:02 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:36 AM by AutoGen 5.18.5
 .\"  From the definitions    summary-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt UPDATE_LEAP 1update-leapmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (update-leap-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:25:37 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:20 AM by AutoGen 5.18.5
 .\"  From the definitions    update-leap-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/scripts/update-leap/update-leap.mdoc.in
===================================================================
--- contrib/ntp/scripts/update-leap/update-leap.mdoc.in	(版本 309693)
+++ contrib/ntp/scripts/update-leap/update-leap.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt UPDATE_LEAP 1update-leapmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (update-leap-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:25:37 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:59:20 AM by AutoGen 5.18.5
 .\"  From the definitions    update-leap-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/sntp/include/version.texi
===================================================================
--- contrib/ntp/sntp/include/version.texi	(版本 309693)
+++ contrib/ntp/sntp/include/version.texi	(版本 310419)
@@ -1,3 +1,3 @@
-@set UPDATED 02 June 2016
-@set EDITION 4.2.8p8
-@set VERSION 4.2.8p8
+@set UPDATED 21 November 2016
+@set EDITION 4.2.8p9
+@set VERSION 4.2.8p9
Index: contrib/ntp/sntp/sntp-opts.h
===================================================================
--- contrib/ntp/sntp/sntp-opts.h	(版本 309693)
+++ contrib/ntp/sntp/sntp-opts.h	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (sntp-opts.h)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:18:40 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 07:38:39 AM by AutoGen 5.18.5
  *  From the definitions    sntp-opts.def
  *  and the template file   options
  *
@@ -91,9 +91,9 @@
 /** count of all options for sntp */
 #define OPTION_CT    23
 /** sntp version */
-#define SNTP_VERSION       "4.2.8p8"
+#define SNTP_VERSION       "4.2.8p9"
 /** Full sntp version text */
-#define SNTP_FULL_VERSION  "sntp 4.2.8p8"
+#define SNTP_FULL_VERSION  "sntp 4.2.8p9"
 
 /**
  *  Interface defines for all options.  Replace "n" with the UPPER_CASED
Index: usr.sbin/ntp/libntp/Makefile
===================================================================
--- usr.sbin/ntp/libntp/Makefile	(版本 309693)
+++ usr.sbin/ntp/libntp/Makefile	(版本 310419)
@@ -17,7 +17,9 @@
 	emalloc.c	findconfig.c	getopt.c	hextoint.c \
 	hextolfp.c	humandate.c	icom.c		iosignal.c \
 	is_ip_address.c \
-	lib_strbuf.c	machines.c	mktime.c	modetoa.c \
+	lib_strbuf.c	\
+	libssl_compat.c \
+	machines.c	mktime.c	modetoa.c \
 	mstolfp.c	msyslog.c	netof.c		ntp_calendar.c \
 	ntp_crypto_rnd.c		ntp_intres.c	ntp_libopts.c \
 	ntp_lineedit.c	ntp_random.c	ntp_rfc2553.c	ntp_worker.c \
Index: contrib/ntp/sntp/invoke-sntp.texi
===================================================================
--- contrib/ntp/sntp/invoke-sntp.texi	(版本 309693)
+++ contrib/ntp/sntp/invoke-sntp.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-sntp.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:19:58 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 07:58:29 AM by AutoGen 5.18.5
 # From the definitions    sntp-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -101,7 +101,7 @@
 
 @exampleindent 0
 @example
-sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8
+sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9
 Usage:  sntp [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... \
                 [ hostname-or-IP ...]
   Flg Arg Option-Name    Description
Index: contrib/ntp/sntp/sntp.1sntpman
===================================================================
--- contrib/ntp/sntp/sntp.1sntpman	(版本 309693)
+++ contrib/ntp/sntp/sntp.1sntpman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH sntp 1sntpman "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH sntp 1sntpman "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-5CayKq/ag-fDaqJq)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Mfai12/ag-0faa02)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:19:39 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:25 AM by AutoGen 5.18.5
 .\" From the definitions sntp-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/sntp/sntp.mdoc.in
===================================================================
--- contrib/ntp/sntp/sntp.mdoc.in	(版本 309693)
+++ contrib/ntp/sntp/sntp.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt SNTP @SNTP_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (sntp-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:20:03 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:32 AM by AutoGen 5.18.5
 .\"  From the definitions    sntp-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/sntp/unity/Makefile.in
===================================================================
--- contrib/ntp/sntp/unity/Makefile.in	(版本 309693)
+++ contrib/ntp/sntp/unity/Makefile.in	(版本 310419)
@@ -134,8 +134,9 @@
 libunity_a_LIBADD =
 am__objects_1 =
 am_libunity_a_OBJECTS = libunity_a-colcomp.$(OBJEXT) \
-	libunity_a-unity.$(OBJEXT) libunity_a-unity_fixture.$(OBJEXT) \
-	$(am__objects_1)
+	libunity_a-unity.$(OBJEXT) libunity_a-ulib_setup.$(OBJEXT) \
+	libunity_a-ulib_teardown.$(OBJEXT) \
+	libunity_a-unity_fixture.$(OBJEXT) $(am__objects_1)
 libunity_a_OBJECTS = $(am_libunity_a_OBJECTS)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -453,6 +454,8 @@
 libunity_a_SOURCES = \
 	../libpkgver/colcomp.c			\
 	unity.c					\
+	ulib_setup.c				\
+	ulib_teardown.c				\
 	unity.h					\
 	unity_config.h				\
 	unity_internals.h			\
@@ -518,6 +521,8 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-colcomp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-ulib_setup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-ulib_teardown.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-unity.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunity_a-unity_fixture.Po@am__quote@
 
@@ -570,6 +575,34 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-unity.obj `if test -f 'unity.c'; then $(CYGPATH_W) 'unity.c'; else $(CYGPATH_W) '$(srcdir)/unity.c'; fi`
 
+libunity_a-ulib_setup.o: ulib_setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_setup.o -MD -MP -MF $(DEPDIR)/libunity_a-ulib_setup.Tpo -c -o libunity_a-ulib_setup.o `test -f 'ulib_setup.c' || echo '$(srcdir)/'`ulib_setup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_setup.Tpo $(DEPDIR)/libunity_a-ulib_setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ulib_setup.c' object='libunity_a-ulib_setup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_setup.o `test -f 'ulib_setup.c' || echo '$(srcdir)/'`ulib_setup.c
+
+libunity_a-ulib_setup.obj: ulib_setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_setup.obj -MD -MP -MF $(DEPDIR)/libunity_a-ulib_setup.Tpo -c -o libunity_a-ulib_setup.obj `if test -f 'ulib_setup.c'; then $(CYGPATH_W) 'ulib_setup.c'; else $(CYGPATH_W) '$(srcdir)/ulib_setup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_setup.Tpo $(DEPDIR)/libunity_a-ulib_setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ulib_setup.c' object='libunity_a-ulib_setup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_setup.obj `if test -f 'ulib_setup.c'; then $(CYGPATH_W) 'ulib_setup.c'; else $(CYGPATH_W) '$(srcdir)/ulib_setup.c'; fi`
+
+libunity_a-ulib_teardown.o: ulib_teardown.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_teardown.o -MD -MP -MF $(DEPDIR)/libunity_a-ulib_teardown.Tpo -c -o libunity_a-ulib_teardown.o `test -f 'ulib_teardown.c' || echo '$(srcdir)/'`ulib_teardown.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_teardown.Tpo $(DEPDIR)/libunity_a-ulib_teardown.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ulib_teardown.c' object='libunity_a-ulib_teardown.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_teardown.o `test -f 'ulib_teardown.c' || echo '$(srcdir)/'`ulib_teardown.c
+
+libunity_a-ulib_teardown.obj: ulib_teardown.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-ulib_teardown.obj -MD -MP -MF $(DEPDIR)/libunity_a-ulib_teardown.Tpo -c -o libunity_a-ulib_teardown.obj `if test -f 'ulib_teardown.c'; then $(CYGPATH_W) 'ulib_teardown.c'; else $(CYGPATH_W) '$(srcdir)/ulib_teardown.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-ulib_teardown.Tpo $(DEPDIR)/libunity_a-ulib_teardown.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ulib_teardown.c' object='libunity_a-ulib_teardown.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -c -o libunity_a-ulib_teardown.obj `if test -f 'ulib_teardown.c'; then $(CYGPATH_W) 'ulib_teardown.c'; else $(CYGPATH_W) '$(srcdir)/ulib_teardown.c'; fi`
+
 libunity_a-unity_fixture.o: unity_fixture.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libunity_a_CFLAGS) $(CFLAGS) -MT libunity_a-unity_fixture.o -MD -MP -MF $(DEPDIR)/libunity_a-unity_fixture.Tpo -c -o libunity_a-unity_fixture.o `test -f 'unity_fixture.c' || echo '$(srcdir)/'`unity_fixture.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libunity_a-unity_fixture.Tpo $(DEPDIR)/libunity_a-unity_fixture.Po
Index: contrib/ntp/sntp/version.c
===================================================================
--- contrib/ntp/sntp/version.c	(版本 309693)
+++ contrib/ntp/sntp/version.c	(版本 310419)
@@ -2,4 +2,4 @@
  * version file for sntp
  */
 #include <config.h>
-const char * Version = "sntp 4.2.8p7@1.3265-o Thu Jun  2 11:19:34 UTC 2016 (29)";
+const char * Version = "sntp 4.2.8p9@1.3265-o Mon Nov 21 12:58:21 UTC 2016 (31)";
Index: contrib/ntp/tests/libntp/sfptostr.c
===================================================================
--- contrib/ntp/tests/libntp/sfptostr.c	(版本 309693)
+++ contrib/ntp/tests/libntp/sfptostr.c	(版本 310419)
@@ -39,7 +39,7 @@
 
 void test_NegativeInteger(void)
 {
-	s_fp test = -200 << 16; // exact -200.000000
+	s_fp test = -(200 << 16); // exact -200.000000
 
 	TEST_ASSERT_EQUAL_STRING("-200.000000", fptoa(test, SFP_MAX_PRECISION));
 	TEST_ASSERT_EQUAL_STRING("-200000.000", fptoms(test, SFP_MAX_PRECISION));
@@ -55,7 +55,7 @@
 
 void test_NegativeIntegerNegativeFraction(void)
 {
-	s_fp test = (-200 << 16) - (1 << 15); // -200 - 0.5
+	s_fp test = -(200 << 16) - (1 << 15); // -200 - 0.5
 
 	TEST_ASSERT_EQUAL_STRING("-200.500000", fptoa(test, SFP_MAX_PRECISION));
 	TEST_ASSERT_EQUAL_STRING("-200500.000", fptoms(test, SFP_MAX_PRECISION));
@@ -71,7 +71,7 @@
 
 void test_NegativeIntegerPositiveFraction(void)
 {
-	s_fp test = (-200 << 16) + (1 << 14)*3; // -200 + 0.75
+	s_fp test = -(200 << 16) + (1 << 14)*3; // -200 + 0.75
 
 	TEST_ASSERT_EQUAL_STRING("-199.250000", fptoa(test, SFP_MAX_PRECISION));
 	TEST_ASSERT_EQUAL_STRING("-199250.000", fptoms(test, SFP_MAX_PRECISION));
Index: contrib/ntp/util/ntp-keygen-opts.c
===================================================================
--- contrib/ntp/util/ntp-keygen-opts.c	(版本 309693)
+++ contrib/ntp/util/ntp-keygen-opts.c	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.c)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:39:24 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 08:03:30 AM by AutoGen 5.18.5
  *  From the definitions    ntp-keygen-opts.def
  *  and the template file   options
  *
@@ -72,7 +72,7 @@
  *  static const strings for ntp-keygen options
  */
 static char const ntp_keygen_opt_strs[2419] =
-/*     0 */ "ntp-keygen (ntp) 4.2.8p8\n"
+/*     0 */ "ntp-keygen (ntp) 4.2.8p9\n"
             "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the NTP License, copies of which\n"
@@ -164,7 +164,7 @@
 /*  2202 */ "no-load-opts\0"
 /*  2215 */ "no\0"
 /*  2218 */ "NTP_KEYGEN\0"
-/*  2229 */ "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p8\n"
+/*  2229 */ "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
 /*  2343 */ "$HOME\0"
 /*  2349 */ ".\0"
@@ -171,7 +171,7 @@
 /*  2351 */ ".ntprc\0"
 /*  2358 */ "http://bugs.ntp.org, bugs@ntp.org\0"
 /*  2392 */ "\n\0"
-/*  2394 */ "ntp-keygen (ntp) 4.2.8p8";
+/*  2394 */ "ntp-keygen (ntp) 4.2.8p9";
 
 /**
  *  imbits option description:
@@ -1309,7 +1309,7 @@
      translate option names.
    */
   /* referenced via ntp_keygenOptions.pzCopyright */
-  puts(_("ntp-keygen (ntp) 4.2.8p8\n\
+  puts(_("ntp-keygen (ntp) 4.2.8p9\n\
 Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
 This is free software. It is licensed for use, modification and\n\
 redistribution under the terms of the NTP License, copies of which\n\
@@ -1408,7 +1408,7 @@
   puts(_("load options from a config file"));
 
   /* referenced via ntp_keygenOptions.pzUsageTitle */
-  puts(_("ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p8\n\
+  puts(_("ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9\n\
 Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n"));
 
   /* referenced via ntp_keygenOptions.pzExplain */
@@ -1415,7 +1415,7 @@
   puts(_("\n"));
 
   /* referenced via ntp_keygenOptions.pzFullVersion */
-  puts(_("ntp-keygen (ntp) 4.2.8p8"));
+  puts(_("ntp-keygen (ntp) 4.2.8p9"));
 
   /* referenced via ntp_keygenOptions.pzFullUsage */
   puts(_("<<<NOT-FOUND>>>"));
Index: contrib/ntp/util/ntp-keygen.c
===================================================================
--- contrib/ntp/util/ntp-keygen.c	(版本 309693)
+++ contrib/ntp/util/ntp-keygen.c	(版本 310419)
@@ -105,6 +105,7 @@
 #include "openssl/pem.h"
 #include "openssl/x509v3.h"
 #include <openssl/objects.h>
+#include "libssl_compat.h"
 #endif	/* OPENSSL */
 #include <ssl_applink.c>
 
@@ -148,6 +149,10 @@
 EVP_PKEY *readkey	(char *, char *, u_int *, EVP_PKEY **);
 void	writekey	(char *, char *, u_int *, EVP_PKEY **);
 u_long	asn2ntp		(ASN1_TIME *);
+
+static DSA* genDsaParams(int, char*);
+static RSA* genRsaKeyPair(int, char*);
+
 #endif	/* AUTOKEY */
 
 /*
@@ -294,7 +299,6 @@
 	int	optct;		/* option count */
 #ifdef AUTOKEY
 	X509	*cert = NULL;	/* X509 certificate */
-	X509_EXTENSION *ext;	/* X509v3 extension */
 	EVP_PKEY *pkey_host = NULL; /* host key */
 	EVP_PKEY *pkey_sign = NULL; /* sign key */
 	EVP_PKEY *pkey_iffkey = NULL; /* IFF sever keys */
@@ -511,8 +515,7 @@
 		 * Extract digest/signature scheme.
 		 */
 		if (scheme == NULL) {
-			nid = OBJ_obj2nid(cert->cert_info->
-			    signature->algorithm);
+			nid = X509_get_signature_nid(cert);
 			scheme = OBJ_nid2sn(nid);
 		}
 
@@ -524,8 +527,13 @@
 			ptr = strstr(groupbuf, "CN=");
 			cnt = X509_get_ext_count(cert);
 			for (i = 0; i < cnt; i++) {
+				X509_EXTENSION *ext;
+				ASN1_OBJECT *obj;
+
 				ext = X509_get_ext(cert, i);
-				if (OBJ_obj2nid(ext->object) ==
+				obj = X509_EXTENSION_get_object(ext);
+
+				if (OBJ_obj2nid(obj) ==
 				    NID_ext_key_usage) {
 					bp = BIO_new(BIO_s_mem());
 					X509V3_EXT_print(bp, ext, 0, 0);
@@ -617,9 +625,15 @@
 			    filename);
 		}
 	}
-	if (pkey_gqkey != NULL)
-		grpkey = BN_bn2hex(pkey_gqkey->pkey.rsa->q);
+	if (pkey_gqkey != NULL) {
+		RSA	*rsa;
+		const BIGNUM *q;
 
+		rsa = EVP_PKEY_get0_RSA(pkey_gqkey);
+		RSA_get0_factors(rsa, NULL, &q);
+		grpkey = BN_bn2hex(q);
+	}
+
 	/*
 	 * Write the nonencrypted GQ client parameters to the stdout
 	 * stream. The parameter file is the server key file with the
@@ -634,9 +648,10 @@
 		    filename);
 		fprintf(stdout, "# %s\n# %s\n", filename,
 		    ctime(&epoch));
-		rsa = pkey_gqkey->pkey.rsa;
-		BN_copy(rsa->p, BN_value_one());
-		BN_copy(rsa->q, BN_value_one());
+		/* XXX: This modifies the private key and should probably use a
+		 * copy of it instead. */
+		rsa = EVP_PKEY_get0_RSA(pkey_gqkey);
+		RSA_set0_factors(rsa, BN_dup(BN_value_one()), BN_dup(BN_value_one()));
 		pkey = EVP_PKEY_new();
 		EVP_PKEY_assign_RSA(pkey, rsa);
 		PEM_write_PKCS8PrivateKey(stdout, pkey, NULL, NULL, 0,
@@ -658,7 +673,7 @@
 		    filename);
 		fprintf(stdout, "# %s\n# %s\n", filename,
 		    ctime(&epoch));
-		rsa = pkey_gqkey->pkey.rsa;
+		rsa = EVP_PKEY_get0_RSA(pkey_gqkey);
 		pkey = EVP_PKEY_new();
 		EVP_PKEY_assign_RSA(pkey, rsa);
 		PEM_write_PKCS8PrivateKey(stdout, pkey, cipher, NULL, 0,
@@ -699,8 +714,10 @@
 		    filename);
 		fprintf(stdout, "# %s\n# %s\n", filename,
 		    ctime(&epoch));
-		dsa = pkey_iffkey->pkey.dsa;
-		BN_copy(dsa->priv_key, BN_value_one());
+		/* XXX: This modifies the private key and should probably use a
+		 * copy of it instead. */
+		dsa = EVP_PKEY_get0_DSA(pkey_iffkey);
+		DSA_set0_key(dsa, NULL, BN_dup(BN_value_one()));
 		pkey = EVP_PKEY_new();
 		EVP_PKEY_assign_DSA(pkey, dsa);
 		PEM_write_PKCS8PrivateKey(stdout, pkey, NULL, NULL, 0,
@@ -722,7 +739,7 @@
 		    filename);
 		fprintf(stdout, "# %s\n# %s\n", filename,
 		    ctime(&epoch));
-		dsa = pkey_iffkey->pkey.dsa;
+		dsa = EVP_PKEY_get0_DSA(pkey_iffkey);
 		pkey = EVP_PKEY_new();
 		EVP_PKEY_assign_DSA(pkey, dsa);
 		PEM_write_PKCS8PrivateKey(stdout, pkey, cipher, NULL, 0,
@@ -767,7 +784,7 @@
 		    NULL, NULL);
 		fflush(stdout);
 		if (debug)
-			DSA_print_fp(stderr, pkey->pkey.dsa, 0);
+			DSA_print_fp(stderr, EVP_PKEY_get0_DSA(pkey), 0);
 	}
 
 	/*
@@ -785,7 +802,7 @@
 		    NULL, passwd2);
 		fflush(stdout);
 		if (debug)
-			DSA_print_fp(stderr, pkey->pkey.dsa, 0);
+			DSA_print_fp(stderr, EVP_PKEY_get0_DSA(pkey), 0);
 	}
 
 	/*
@@ -934,11 +951,11 @@
 		if (pkey == NULL)
 			pkey = parkey;
 		if (debug) {
-			if (parkey->type == EVP_PKEY_DSA)
-				DSA_print_fp(stderr, parkey->pkey.dsa,
+			if (EVP_PKEY_base_id(parkey) == EVP_PKEY_DSA)
+				DSA_print_fp(stderr, EVP_PKEY_get0_DSA(parkey),
 				    0);
-			else if (parkey->type == EVP_PKEY_RSA)
-				RSA_print_fp(stderr, parkey->pkey.rsa,
+			else if (EVP_PKEY_base_id(parkey) == EVP_PKEY_RSA)
+				RSA_print_fp(stderr, EVP_PKEY_get0_RSA(parkey),
 				    0);
 		}
 	}
@@ -967,7 +984,7 @@
 	FILE	*str;
 
 	fprintf(stderr, "Generating RSA keys (%d bits)...\n", modulus);
-	rsa = RSA_generate_key(modulus, 65537, cb, _UC("RSA"));
+	rsa = genRsaKeyPair(modulus, _UC("RSA"));
 	fprintf(stderr, "\n");
 	if (rsa == NULL) {
 		fprintf(stderr, "RSA generate keys fails\n%s\n",
@@ -1006,7 +1023,7 @@
 	return (pkey);
 }
 
- 
+
 /*
  * Generate DSA public/private key pair
  */
@@ -1017,7 +1034,6 @@
 {
 	EVP_PKEY *pkey;		/* private key */
 	DSA	*dsa;		/* DSA parameters */
-	u_char	seed[20];	/* seed for parameters */
 	FILE	*str;
 
 	/*
@@ -1025,9 +1041,7 @@
 	 */
 	fprintf(stderr,
 	    "Generating DSA parameters (%d bits)...\n", modulus);
-	RAND_bytes(seed, sizeof(seed));
-	dsa = DSA_generate_parameters(modulus, seed, sizeof(seed), NULL,
-	    NULL, cb, _UC("DSA"));
+	dsa = genDsaParams(modulus, _UC("DSA"));
 	fprintf(stderr, "\n");
 	if (dsa == NULL) {
 		fprintf(stderr, "DSA generate parameters fails\n%s\n",
@@ -1119,26 +1133,26 @@
 {
 	EVP_PKEY *pkey;		/* private key */
 	DSA	*dsa;		/* DSA parameters */
-	u_char	seed[20];	/* seed for parameters */
 	BN_CTX	*ctx;		/* BN working space */
 	BIGNUM	*b, *r, *k, *u, *v, *w; /* BN temp */
 	FILE	*str;
 	u_int	temp;
-
+	const BIGNUM *p, *q, *g;
+	BIGNUM *pub_key, *priv_key;
+	
 	/*
 	 * Generate DSA parameters for use as IFF parameters.
 	 */
 	fprintf(stderr, "Generating IFF keys (%d bits)...\n",
 	    modulus2);
-	RAND_bytes(seed, sizeof(seed));
-	dsa = DSA_generate_parameters(modulus2, seed, sizeof(seed), NULL,
-	    NULL, cb, _UC("IFF"));
+	dsa = genDsaParams(modulus2, _UC("IFF"));
 	fprintf(stderr, "\n");
 	if (dsa == NULL) {
 		fprintf(stderr, "DSA generate parameters fails\n%s\n",
 		    ERR_error_string(ERR_get_error(), NULL));
-		return (NULL);;
+		return (NULL);
 	}
+	DSA_get0_pqg(dsa, &p, &q, &g);
 
 	/*
 	 * Generate the private and public keys. The DSA parameters and
@@ -1147,12 +1161,12 @@
 	 */
 	b = BN_new(); r = BN_new(); k = BN_new();
 	u = BN_new(); v = BN_new(); w = BN_new(); ctx = BN_CTX_new();
-	BN_rand(b, BN_num_bits(dsa->q), -1, 0);	/* a */
-	BN_mod(b, b, dsa->q, ctx);
-	BN_sub(v, dsa->q, b);
-	BN_mod_exp(v, dsa->g, v, dsa->p, ctx); /* g^(q - b) mod p */
-	BN_mod_exp(u, dsa->g, b, dsa->p, ctx);	/* g^b mod p */
-	BN_mod_mul(u, u, v, dsa->p, ctx);
+	BN_rand(b, BN_num_bits(q), -1, 0);	/* a */
+	BN_mod(b, b, q, ctx);
+	BN_sub(v, q, b);
+	BN_mod_exp(v, g, v, p, ctx); /* g^(q - b) mod p */
+	BN_mod_exp(u, g, b, p, ctx);	/* g^b mod p */
+	BN_mod_mul(u, u, v, p, ctx);
 	temp = BN_is_one(u);
 	fprintf(stderr,
 	    "Confirm g^(q - b) g^b = 1 mod p: %s\n", temp == 1 ?
@@ -1162,8 +1176,9 @@
 		BN_free(u); BN_free(v); BN_free(w); BN_CTX_free(ctx);
 		return (NULL);
 	}
-	dsa->priv_key = BN_dup(b);		/* private key */
-	dsa->pub_key = BN_dup(v);		/* public key */
+	pub_key = BN_dup(v);
+	priv_key = BN_dup(b);
+	DSA_set0_key(dsa, pub_key, priv_key);
 
 	/*
 	 * Here is a trial round of the protocol. First, Alice rolls
@@ -1170,8 +1185,8 @@
 	 * random nonce r mod q and sends it to Bob. She needs only
 	 * q from parameters.
 	 */
-	BN_rand(r, BN_num_bits(dsa->q), -1, 0);	/* r */
-	BN_mod(r, r, dsa->q, ctx);
+	BN_rand(r, BN_num_bits(q), -1, 0);	/* r */
+	BN_mod(r, r, q, ctx);
 
 	/*
 	 * Bob rolls random nonce k mod q, computes y = k + b r mod q
@@ -1178,12 +1193,12 @@
 	 * and x = g^k mod p, then sends (y, x) to Alice. He needs
 	 * p, q and b from parameters and r from Alice.
 	 */
-	BN_rand(k, BN_num_bits(dsa->q), -1, 0);	/* k, 0 < k < q  */
-	BN_mod(k, k, dsa->q, ctx);
-	BN_mod_mul(v, dsa->priv_key, r, dsa->q, ctx); /* b r mod q */
+	BN_rand(k, BN_num_bits(q), -1, 0);	/* k, 0 < k < q  */
+	BN_mod(k, k, q, ctx);
+	BN_mod_mul(v, priv_key, r, q, ctx); /* b r mod q */
 	BN_add(v, v, k);
-	BN_mod(v, v, dsa->q, ctx);		/* y = k + b r mod q */
-	BN_mod_exp(u, dsa->g, k, dsa->p, ctx);	/* x = g^k mod p */
+	BN_mod(v, v, q, ctx);		/* y = k + b r mod q */
+	BN_mod_exp(u, g, k, p, ctx);	/* x = g^k mod p */
 
 	/*
 	 * Alice verifies x = g^y v^r to confirm that Bob has group key
@@ -1191,9 +1206,9 @@
 	 * original r. We omit the detail here thatt only the hash of y
 	 * is sent.
 	 */
-	BN_mod_exp(v, dsa->g, v, dsa->p, ctx); /* g^y mod p */
-	BN_mod_exp(w, dsa->pub_key, r, dsa->p, ctx); /* v^r */
-	BN_mod_mul(v, w, v, dsa->p, ctx);	/* product mod p */
+	BN_mod_exp(v, g, v, p, ctx); /* g^y mod p */
+	BN_mod_exp(w, pub_key, r, p, ctx); /* v^r */
+	BN_mod_mul(v, w, v, p, ctx);	/* product mod p */
 	temp = BN_cmp(u, v);
 	fprintf(stderr,
 	    "Confirm g^k = g^(k + b r) g^(q - b) r: %s\n", temp ==
@@ -1301,7 +1316,9 @@
 	BIGNUM	*u, *v, *g, *k, *r, *y; /* BN temps */
 	FILE	*str;
 	u_int	temp;
-
+	BIGNUM	*b;
+	const BIGNUM	*n;
+	
 	/*
 	 * Generate RSA parameters for use as GQ parameters.
 	 */
@@ -1308,7 +1325,7 @@
 	fprintf(stderr,
 	    "Generating GQ parameters (%d bits)...\n",
 	     modulus2);
-	rsa = RSA_generate_key(modulus2, 65537, cb, _UC("GQ"));
+	rsa = genRsaKeyPair(modulus2, _UC("GQ"));
 	fprintf(stderr, "\n");
 	if (rsa == NULL) {
 		fprintf(stderr, "RSA generate keys fails\n%s\n",
@@ -1315,8 +1332,10 @@
 		    ERR_error_string(ERR_get_error(), NULL));
 		return (NULL);
 	}
+	RSA_get0_key(rsa, &n, NULL, NULL);
 	u = BN_new(); v = BN_new(); g = BN_new();
 	k = BN_new(); r = BN_new(); y = BN_new();
+	b = BN_new();
 
 	/*
 	 * Generate the group key b, which is saved in the e member of
@@ -1324,17 +1343,17 @@
 	 * member encrypted by the member private key.
 	 */
 	ctx = BN_CTX_new();
-	BN_rand(rsa->e, BN_num_bits(rsa->n), -1, 0); /* b */
-	BN_mod(rsa->e, rsa->e, rsa->n, ctx);
+	BN_rand(b, BN_num_bits(n), -1, 0); /* b */
+	BN_mod(b, b, n, ctx);
 
 	/*
 	 * When generating his certificate, Bob rolls random private key
 	 * u, then computes inverse v = u^-1. 
 	 */
-	BN_rand(u, BN_num_bits(rsa->n), -1, 0); /* u */
-	BN_mod(u, u, rsa->n, ctx);
-	BN_mod_inverse(v, u, rsa->n, ctx);	/* u^-1 mod n */
-	BN_mod_mul(k, v, u, rsa->n, ctx);
+	BN_rand(u, BN_num_bits(n), -1, 0); /* u */
+	BN_mod(u, u, n, ctx);
+	BN_mod_inverse(v, u, n, ctx);	/* u^-1 mod n */
+	BN_mod_mul(k, v, u, n, ctx);
 
 	/*
 	 * Bob computes public key v = (u^-1)^b, which is saved in an
@@ -1341,9 +1360,9 @@
 	 * extension field on his certificate. We check that u^b v =
 	 * 1 mod n.
 	 */
-	BN_mod_exp(v, v, rsa->e, rsa->n, ctx);
-	BN_mod_exp(g, u, rsa->e, rsa->n, ctx); /* u^b */
-	BN_mod_mul(g, g, v, rsa->n, ctx); /* u^b (u^-1)^b */
+	BN_mod_exp(v, v, b, n, ctx);
+	BN_mod_exp(g, u, b, n, ctx); /* u^b */
+	BN_mod_mul(g, g, v, n, ctx); /* u^b (u^-1)^b */
 	temp = BN_is_one(g);
 	fprintf(stderr,
 	    "Confirm u^b (u^-1)^b = 1 mod n: %s\n", temp ? "yes" :
@@ -1355,8 +1374,11 @@
 		RSA_free(rsa);
 		return (NULL);
 	}
-	BN_copy(rsa->p, u);			/* private key */
-	BN_copy(rsa->q, v);			/* public key */
+	/* setting 'u' and 'v' into a RSA object takes over ownership.
+	 * Since we use these values again, we have to pass in dupes,
+	 * or we'll corrupt the program!
+	 */
+	RSA_set0_factors(rsa, BN_dup(u), BN_dup(v));
 
 	/*
 	 * Here is a trial run of the protocol. First, Alice rolls
@@ -1363,8 +1385,8 @@
 	 * random nonce r mod n and sends it to Bob. She needs only n
 	 * from parameters.
 	 */
-	BN_rand(r, BN_num_bits(rsa->n), -1, 0);	/* r */
-	BN_mod(r, r, rsa->n, ctx);
+	BN_rand(r, BN_num_bits(n), -1, 0);	/* r */
+	BN_mod(r, r, n, ctx);
 
 	/*
 	 * Bob rolls random nonce k mod n, computes y = k u^r mod n and
@@ -1371,11 +1393,11 @@
 	 * g = k^b mod n, then sends (y, g) to Alice. He needs n, u, b
 	 * from parameters and r from Alice. 
 	 */
-	BN_rand(k, BN_num_bits(rsa->n), -1, 0);	/* k */
-	BN_mod(k, k, rsa->n, ctx);
-	BN_mod_exp(y, rsa->p, r, rsa->n, ctx);	/* u^r mod n */
-	BN_mod_mul(y, k, y, rsa->n, ctx);	/* y = k u^r mod n */
-	BN_mod_exp(g, k, rsa->e, rsa->n, ctx);	/* g = k^b mod n */
+	BN_rand(k, BN_num_bits(n), -1, 0);	/* k */
+	BN_mod(k, k, n, ctx);
+	BN_mod_exp(y, u, r, n, ctx);	/* u^r mod n */
+	BN_mod_mul(y, k, y, n, ctx);	/* y = k u^r mod n */
+	BN_mod_exp(g, k, b, n, ctx);	/* g = k^b mod n */
 
 	/*
 	 * Alice verifies g = v^r y^b mod n to confirm that Bob has
@@ -1384,9 +1406,9 @@
 	 * original r. We omit the detaul here that only the hash of g
 	 * is sent.
 	 */
-	BN_mod_exp(v, rsa->q, r, rsa->n, ctx);	/* v^r mod n */
-	BN_mod_exp(y, y, rsa->e, rsa->n, ctx); /* y^b mod n */
-	BN_mod_mul(y, v, y, rsa->n, ctx);	/* v^r y^b mod n */
+	BN_mod_exp(v, v, r, n, ctx);	/* v^r mod n */
+	BN_mod_exp(y, y, b, n, ctx);	/* y^b mod n */
+	BN_mod_mul(y, v, y, n, ctx);	/* v^r y^b mod n */
 	temp = BN_cmp(y, g);
 	fprintf(stderr, "Confirm g^k = v^r y^b mod n: %s\n", temp == 0 ?
 	    "yes" : "no");
@@ -1410,10 +1432,9 @@
 	 * dmq1	not used
 	 * iqmp	not used
 	 */
-	BN_copy(rsa->d, BN_value_one());
-	BN_copy(rsa->dmp1, BN_value_one());
-	BN_copy(rsa->dmq1, BN_value_one());
-	BN_copy(rsa->iqmp, BN_value_one());
+	RSA_set0_key(rsa, NULL, b, BN_dup(BN_value_one()));
+	RSA_set0_crt_params(rsa, BN_dup(BN_value_one()), BN_dup(BN_value_one()),
+		BN_dup(BN_value_one()));
 	str = fheader("GQkey", id, groupname);
 	pkey = EVP_PKEY_new();
 	EVP_PKEY_assign_RSA(pkey, rsa);
@@ -1509,7 +1530,7 @@
 	DSA	*dsa, *dsa2, *sdsa; /* DSA parameters */
 	BN_CTX	*ctx;		/* BN working space */
 	BIGNUM	*a[MVMAX];	/* polynomial coefficient vector */
-	BIGNUM	*g[MVMAX];	/* public key vector */
+	BIGNUM	*gs[MVMAX];	/* public key vector */
 	BIGNUM	*s1[MVMAX];	/* private enabling keys */
 	BIGNUM	*x[MVMAX];	/* polynomial zeros vector */
 	BIGNUM	*xbar[MVMAX], *xhat[MVMAX]; /* private keys vector */
@@ -1520,6 +1541,7 @@
 	BIGNUM	*bige;		/* session encryption key */
 	BIGNUM	*gbar, *ghat;	/* public key */
 	BIGNUM	*u, *v, *w;	/* BN scratch */
+	BIGNUM	*p, *q, *g, *priv_key, *pub_key;
 	int	i, j, n;
 	FILE	*str;
 	u_int	temp;
@@ -1544,14 +1566,14 @@
 	ctx = BN_CTX_new(); u = BN_new(); v = BN_new(); w = BN_new();
 	b = BN_new(); b1 = BN_new();
 	dsa = DSA_new();
-	dsa->p = BN_new(); dsa->q = BN_new(); dsa->g = BN_new();
-	dsa->priv_key = BN_new(); dsa->pub_key = BN_new();
+	p = BN_new(); q = BN_new(); g = BN_new();
+	priv_key = BN_new(); pub_key = BN_new();
 	temp = 0;
 	for (j = 1; j <= n; j++) {
 		s1[j] = BN_new();
 		while (1) {
-			BN_generate_prime(s1[j], modulus2 / n, 0, NULL,
-			    NULL, NULL, NULL);
+			BN_generate_prime_ex(s1[j], modulus2 / n, 0,
+					     NULL, NULL, NULL);
 			for (i = 1; i < j; i++) {
 				if (BN_cmp(s1[i], s1[j]) == 0)
 					break;
@@ -1577,21 +1599,20 @@
 	 */
 	temp = 0;
 	while (1) {
-		BN_one(dsa->q);
+		BN_one(q);
 		for (j = 1; j <= n; j++)
-			BN_mul(dsa->q, dsa->q, s1[j], ctx);
-		BN_copy(dsa->p, dsa->q);
-		BN_add(dsa->p, dsa->p, dsa->p);
-		BN_add_word(dsa->p, 1);
-		if (BN_is_prime(dsa->p, BN_prime_checks, NULL, ctx,
-		    NULL))
+			BN_mul(q, q, s1[j], ctx);
+		BN_copy(p, q);
+		BN_add(p, p, p);
+		BN_add_word(p, 1);
+		if (BN_is_prime_ex(p, BN_prime_checks, ctx, NULL))
 			break;
 
 		temp++;
 		j = temp % n + 1;
 		while (1) {
-			BN_generate_prime(u, modulus2 / n, 0, 0, NULL,
-			    NULL, NULL);
+			BN_generate_prime_ex(u, modulus2 / n, 0,
+					     NULL, NULL, NULL);
 			for (i = 1; i <= n; i++) {
 				if (BN_cmp(u, s1[i]) == 0)
 					break;
@@ -1608,20 +1629,22 @@
 	 * gcd(g, p - 1) = 1 and g^q = 1. This is a generator of p, not
 	 * q. This may take several iterations.
 	 */
-	BN_copy(v, dsa->p);
+	BN_copy(v, p);
 	BN_sub_word(v, 1);
 	while (1) {
-		BN_rand(dsa->g, BN_num_bits(dsa->p) - 1, 0, 0);
-		BN_mod(dsa->g, dsa->g, dsa->p, ctx);
-		BN_gcd(u, dsa->g, v, ctx);
+		BN_rand(g, BN_num_bits(p) - 1, 0, 0);
+		BN_mod(g, g, p, ctx);
+		BN_gcd(u, g, v, ctx);
 		if (!BN_is_one(u))
 			continue;
 
-		BN_mod_exp(u, dsa->g, dsa->q, dsa->p, ctx);
+		BN_mod_exp(u, g, q, p, ctx);
 		if (BN_is_one(u))
 			break;
 	}
 
+	DSA_set0_pqg(dsa, p, q, g);
+
 	/*
 	 * Setup is now complete. Roll random polynomial roots x[j]
 	 * (j = 1...n) for all j. While it may not be strictly
@@ -1630,14 +1653,14 @@
 	 */
 	fprintf(stderr,
 	    "Generating polynomial coefficients for %d roots (%d bits)\n",
-	    n, BN_num_bits(dsa->q)); 
+	    n, BN_num_bits(q));
 	for (j = 1; j <= n; j++) {
 		x[j] = BN_new();
 
 		while (1) {
-			BN_rand(x[j], BN_num_bits(dsa->q), 0, 0);
-			BN_mod(x[j], x[j], dsa->q, ctx);
-			BN_gcd(u, x[j], dsa->q, ctx);
+			BN_rand(x[j], BN_num_bits(q), 0, 0);
+			BN_mod(x[j], x[j], q, ctx);
+			BN_gcd(u, x[j], q, ctx);
 			if (BN_is_one(u))
 				break;
 		}
@@ -1655,26 +1678,26 @@
 	for (j = 1; j <= n; j++) {
 		BN_zero(w);
 		for (i = 0; i < j; i++) {
-			BN_copy(u, dsa->q);
-			BN_mod_mul(v, a[i], x[j], dsa->q, ctx);
+			BN_copy(u, q);
+			BN_mod_mul(v, a[i], x[j], q, ctx);
 			BN_sub(u, u, v);
 			BN_add(u, u, w);
 			BN_copy(w, a[i]);
-			BN_mod(a[i], u, dsa->q, ctx);
+			BN_mod(a[i], u, q, ctx);
 		}
 	}
 
 	/*
-	 * Generate g[i] = g^a[i] mod p for all i and the generator g.
+	 * Generate gs[i] = g^a[i] mod p for all i and the generator g.
 	 */
 	for (i = 0; i <= n; i++) {
-		g[i] = BN_new();
-		BN_mod_exp(g[i], dsa->g, a[i], dsa->p, ctx);
+		gs[i] = BN_new();
+		BN_mod_exp(gs[i], g, a[i], p, ctx);
 	}
 
 	/*
-	 * Verify prod(g[i]^(a[i] x[j]^i)) = 1 for all i, j. Note the
-	 * a[i] x[j]^i exponent is computed mod q, but the g[i] is
+	 * Verify prod(gs[i]^(a[i] x[j]^i)) = 1 for all i, j. Note the
+	 * a[i] x[j]^i exponent is computed mod q, but the gs[i] is
 	 * computed mod p. also note the expression given in the paper
 	 * is incorrect.
 	 */
@@ -1683,16 +1706,16 @@
 		BN_one(u);
 		for (i = 0; i <= n; i++) {
 			BN_set_word(v, i);
-			BN_mod_exp(v, x[j], v, dsa->q, ctx);
-			BN_mod_mul(v, v, a[i], dsa->q, ctx);
-			BN_mod_exp(v, dsa->g, v, dsa->p, ctx);
-			BN_mod_mul(u, u, v, dsa->p, ctx);
+			BN_mod_exp(v, x[j], v, q, ctx);
+			BN_mod_mul(v, v, a[i], q, ctx);
+			BN_mod_exp(v, g, v, p, ctx);
+			BN_mod_mul(u, u, v, p, ctx);
 		}
 		if (!BN_is_one(u))
 			temp = 0;
 	}
 	fprintf(stderr,
-	    "Confirm prod(g[i]^(x[j]^i)) = 1 for all i, j: %s\n", temp ?
+	    "Confirm prod(gs[i]^(x[j]^i)) = 1 for all i, j: %s\n", temp ?
 	    "yes" : "no");
 	if (!temp) {
 		return (NULL);
@@ -1708,9 +1731,9 @@
 	for (j = 1; j <= n; j++) {
 		for (i = 0; i < n; i++) {
 			BN_set_word(v, i);
-			BN_mod_exp(v, x[j], v, dsa->q, ctx);
-			BN_mod_exp(v, g[i], v, dsa->p, ctx);
-			BN_mod_mul(biga, biga, v, dsa->p, ctx);
+			BN_mod_exp(v, x[j], v, q, ctx);
+			BN_mod_exp(v, gs[i], v, p, ctx);
+			BN_mod_mul(biga, biga, v, p, ctx);
 		}
 	}
 
@@ -1720,13 +1743,13 @@
 	 * mod q. If b is changed, the client keys must be recomputed.
 	 */
 	while (1) {
-		BN_rand(b, BN_num_bits(dsa->q), 0, 0);
-		BN_mod(b, b, dsa->q, ctx);
-		BN_gcd(u, b, dsa->q, ctx);
+		BN_rand(b, BN_num_bits(q), 0, 0);
+		BN_mod(b, b, q, ctx);
+		BN_gcd(u, b, q, ctx);
 		if (BN_is_one(u))
 			break;
 	}
-	BN_mod_inverse(b1, b, dsa->q, ctx);
+	BN_mod_inverse(b1, b, q, ctx);
 
 	/*
 	 * Make private client keys (xbar[j], xhat[j]) for all j. Note
@@ -1740,7 +1763,7 @@
 	for (j = 1; j <= n; j++) {
 		xbar[j] = BN_new(); xhat[j] = BN_new();
 
-		BN_add(w, dsa->q, s1[j]);
+		BN_add(w, q, s1[j]);
 		BN_div(w, u, w, s1[j], ctx);
 		BN_zero(xbar[j]);
 		BN_set_word(v, n);
@@ -1748,12 +1771,12 @@
 			if (i == j)
 				continue;
 
-			BN_mod_exp(u, x[i], v, dsa->q, ctx);
+			BN_mod_exp(u, x[i], v, q, ctx);
 			BN_add(xbar[j], xbar[j], u);
 		}
-		BN_mod_mul(xbar[j], xbar[j], b1, dsa->q, ctx);
-		BN_mod_exp(xhat[j], x[j], v, dsa->q, ctx);
-		BN_mod_mul(xhat[j], xhat[j], w, dsa->q, ctx);
+		BN_mod_mul(xbar[j], xbar[j], b1, q, ctx);
+		BN_mod_exp(xhat[j], x[j], v, q, ctx);
+		BN_mod_mul(xhat[j], xhat[j], w, q, ctx);
 	}
 
 	/*
@@ -1764,7 +1787,7 @@
 	 * additional keys, so we sail on with only token revocations.
 	 */
 	s = BN_new();
-	BN_copy(s, dsa->q);
+	BN_copy(s, q);
 	BN_div(s, u, s, s1[n], ctx);
 
 	/*
@@ -1776,10 +1799,10 @@
 	 * changed.
 	 */
 	bige = BN_new(); gbar = BN_new(); ghat = BN_new();
-	BN_mod_exp(bige, biga, s, dsa->p, ctx);
-	BN_mod_exp(gbar, dsa->g, s, dsa->p, ctx);
-	BN_mod_mul(v, s, b, dsa->q, ctx);
-	BN_mod_exp(ghat, dsa->g, v, dsa->p, ctx);
+	BN_mod_exp(bige, biga, s, p, ctx);
+	BN_mod_exp(gbar, g, s, p, ctx);
+	BN_mod_mul(v, s, b, q, ctx);
+	BN_mod_exp(ghat, g, v, p, ctx);
 	
 	/*
 	 * Notes: We produce the key media in three steps. The first
@@ -1815,8 +1838,9 @@
 	i = 0;
 	str = fheader("MVta", "mvta", groupname);
 	fprintf(stderr, "Generating MV trusted-authority keys\n");
-	BN_copy(dsa->priv_key, biga);
-	BN_copy(dsa->pub_key, b);
+	BN_copy(priv_key, biga);
+	BN_copy(pub_key, b);
+	DSA_set0_key(dsa, pub_key, priv_key);
 	pkey = EVP_PKEY_new();
 	EVP_PKEY_assign_DSA(pkey, dsa);
 	PEM_write_PKCS8PrivateKey(str, pkey, cipher, NULL, 0, NULL,
@@ -1838,11 +1862,8 @@
 	 */
 	fprintf(stderr, "Generating MV server keys\n");
 	dsa2 = DSA_new();
-	dsa2->p = BN_dup(dsa->p);
-	dsa2->q = BN_dup(dsa->q); 
-	dsa2->g = BN_dup(bige); 
-	dsa2->priv_key = BN_dup(gbar);
-	dsa2->pub_key = BN_dup(ghat);
+	DSA_set0_pqg(dsa2, BN_dup(p), BN_dup(q), BN_dup(bige));
+	DSA_set0_key(dsa2, BN_dup(ghat), BN_dup(gbar));
 	pkey1 = EVP_PKEY_new();
 	EVP_PKEY_assign_DSA(pkey1, dsa2);
 	PEM_write_PKCS8PrivateKey(str, pkey1, cipher, NULL, 0, NULL,
@@ -1863,11 +1884,9 @@
 	fprintf(stderr, "Generating %d MV client keys\n", n);
 	for (j = 1; j <= n; j++) {
 		sdsa = DSA_new();
-		sdsa->p = BN_dup(dsa->p);
-		sdsa->q = BN_dup(BN_value_one()); 
-		sdsa->g = BN_dup(BN_value_one()); 
-		sdsa->priv_key = BN_dup(xbar[j]);
-		sdsa->pub_key = BN_dup(xhat[j]);
+		DSA_set0_pqg(sdsa, BN_dup(p), BN_dup(BN_value_one()),
+			BN_dup(BN_value_one()));
+		DSA_set0_key(sdsa, BN_dup(xhat[j]), BN_dup(xbar[j]));
 		pkey1 = EVP_PKEY_new();
 		EVP_PKEY_set1_DSA(pkey1, sdsa);
 		PEM_write_PKCS8PrivateKey(str, pkey1, cipher, NULL, 0,
@@ -1877,17 +1896,15 @@
 			DSA_print_fp(stderr, sdsa, 0);
 
 		/*
-		 * The product gbar^k)^xbar[j] (ghat^k)^xhat[j] and E
+		 * The product (gbar^k)^xbar[j] (ghat^k)^xhat[j] and E
 		 * are inverses of each other. We check that the product
 		 * is one for each client except the ones that have been
 		 * revoked. 
 		 */
-		BN_mod_exp(v, dsa2->priv_key, sdsa->pub_key, dsa->p,
-		    ctx);
-		BN_mod_exp(u, dsa2->pub_key, sdsa->priv_key, dsa->p,
-		    ctx);
-		BN_mod_mul(u, u, v, dsa->p, ctx);
-		BN_mod_mul(u, u, bige, dsa->p, ctx);
+		BN_mod_exp(v, gbar, xhat[j], p, ctx);
+		BN_mod_exp(u, ghat, xbar[j], p, ctx);
+		BN_mod_mul(u, u, v, p, ctx);
+		BN_mod_mul(u, u, bige, p, ctx);
 		if (!BN_is_one(u)) {
 			fprintf(stderr, "Revoke key %d\n", j);
 			continue;
@@ -1900,7 +1917,7 @@
 	 * Free the countries.
 	 */
 	for (i = 0; i <= n; i++) {
-		BN_free(a[i]); BN_free(g[i]);
+		BN_free(a[i]); BN_free(gs[i]);
 	}
 	for (j = 1; j <= n; j++) {
 		BN_free(x[j]); BN_free(xbar[j]); BN_free(xhat[j]);
@@ -1945,7 +1962,7 @@
 	 * the version to 3. Set the initial validity to the current
 	 * time and the finalvalidity one year hence.
 	 */
- 	id = OBJ_nid2sn(md->pkey_type);
+ 	id = OBJ_nid2sn(EVP_MD_pkey_type(md));
 	fprintf(stderr, "Generating new certificate %s %s\n", name, id);
 	cert = X509_new();
 	X509_set_version(cert, 2L);
@@ -2154,6 +2171,56 @@
 	fprintf(stderr, "Invalid %s key type %s\n", id, type);
 	return (NULL);
 }
+
+static RSA*
+genRsaKeyPair(
+	int	bits,
+	char *	what
+	)
+{
+	RSA *		rsa = RSA_new();
+	BN_GENCB *	gcb = BN_GENCB_new();
+	BIGNUM *	bne = BN_new();
+	
+	if (gcb)
+		BN_GENCB_set_old(gcb, cb, what);
+	if (bne)
+		BN_set_word(bne, 65537);
+	if (!(rsa && gcb && bne && RSA_generate_key_ex(
+		      rsa, bits, bne, gcb)))
+	{
+		RSA_free(rsa);
+		rsa = NULL;
+	}
+	BN_GENCB_free(gcb);
+	BN_free(bne);
+	return rsa;
+}
+
+static DSA*
+genDsaParams(
+	int	bits,
+	char *	what
+	)
+{
+	
+	DSA *		dsa = DSA_new();
+	BN_GENCB *	gcb = BN_GENCB_new();
+	u_char		seed[20];
+	
+	if (gcb)
+		BN_GENCB_set_old(gcb, cb, what);
+	RAND_bytes(seed, sizeof(seed));
+	if (!(dsa && gcb && DSA_generate_parameters_ex(
+		      dsa, bits, seed, sizeof(seed), NULL, NULL, gcb)))
+	{
+		DSA_free(dsa);
+		dsa = NULL;
+	}
+	BN_GENCB_free(gcb);
+	return dsa;
+}
+
 #endif	/* AUTOKEY */
 
 
Index: sys/conf/newvers.sh
===================================================================
--- sys/conf/newvers.sh	(版本 309693)
+++ sys/conf/newvers.sh	(版本 310419)
@@ -32,7 +32,7 @@
 
 TYPE="FreeBSD"
 REVISION="10.3"
-BRANCH="RELEASE-p14"
+BRANCH="RELEASE-p15"
 if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
 	BRANCH=${BRANCH_OVERRIDE}
 fi
Index: usr.sbin/ntp/doc/ntp.keys.5
===================================================================
--- usr.sbin/ntp/doc/ntp.keys.5	(版本 309693)
+++ usr.sbin/ntp/doc/ntp.keys.5	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_KEYS 5 File Formats
 .Os SunOS 5.10
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:20 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:06 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agmdoc-file.tpl
 .Sh NAME
Index: usr.sbin/ntp/doc/sntp.8
===================================================================
--- usr.sbin/ntp/doc/sntp.8	(版本 309693)
+++ usr.sbin/ntp/doc/sntp.8	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt SNTP 8 User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (sntp-opts.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:20:03 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 07:58:32 AM by AutoGen 5.18.5
 .\"  From the definitions    sntp-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -213,7 +213,7 @@
 more than enough for a unicast response.  If \fBsntp\fP is
 only waiting for a broadcast response a longer timeout is
 likely needed.
-.It  Fl \-wait , " Fl \-no\-wait"
+.It  Fl \-wait , Fl \-no\-wait
 Wait for pending replies (if not setting the time).
 The \fIno\-wait\fP form will disable the option.
 This option is enabled by default.
Index: contrib/ntp/sntp/include/version.def
===================================================================
--- contrib/ntp/sntp/include/version.def	(版本 309693)
+++ contrib/ntp/sntp/include/version.def	(版本 310419)
@@ -1 +1 @@
-version = '4.2.8p8';
+version = '4.2.8p9';
Index: contrib/ntp/sntp/sntp-opts.c
===================================================================
--- contrib/ntp/sntp/sntp-opts.c	(版本 309693)
+++ contrib/ntp/sntp/sntp-opts.c	(版本 310419)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (sntp-opts.c)
  *
- *  It has been AutoGen-ed  June  2, 2016 at 07:18:42 AM by AutoGen 5.18.5
+ *  It has been AutoGen-ed  November 21, 2016 at 07:38:40 AM by AutoGen 5.18.5
  *  From the definitions    sntp-opts.def
  *  and the template file   options
  *
@@ -70,7 +70,7 @@
  *  static const strings for sntp options
  */
 static char const sntp_opt_strs[2549] =
-/*     0 */ "sntp 4.2.8p8\n"
+/*     0 */ "sntp 4.2.8p9\n"
             "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
             "redistribution under the terms of the NTP License, copies of which\n"
@@ -155,7 +155,7 @@
 /*  2298 */ "LOAD_OPTS\0"
 /*  2308 */ "no-load-opts\0"
 /*  2321 */ "SNTP\0"
-/*  2326 */ "sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8\n"
+/*  2326 */ "sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n"
             "\t\t[ hostname-or-IP ...]\n\0"
 /*  2485 */ "$HOME\0"
@@ -163,7 +163,7 @@
 /*  2493 */ ".ntprc\0"
 /*  2500 */ "http://bugs.ntp.org, bugs@ntp.org\0"
 /*  2534 */ "\n\0"
-/*  2536 */ "sntp 4.2.8p8";
+/*  2536 */ "sntp 4.2.8p9";
 
 /**
  *  ipv4 option description with
@@ -1173,7 +1173,7 @@
      translate option names.
    */
   /* referenced via sntpOptions.pzCopyright */
-  puts(_("sntp 4.2.8p8\n\
+  puts(_("sntp 4.2.8p9\n\
 Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
 This is free software. It is licensed for use, modification and\n\
 redistribution under the terms of the NTP License, copies of which\n\
@@ -1263,7 +1263,7 @@
   puts(_("load options from a config file"));
 
   /* referenced via sntpOptions.pzUsageTitle */
-  puts(_("sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8\n\
+  puts(_("sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9\n\
 Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
 \t\t[ hostname-or-IP ...]\n"));
 
@@ -1271,7 +1271,7 @@
   puts(_("\n"));
 
   /* referenced via sntpOptions.pzFullVersion */
-  puts(_("sntp 4.2.8p8"));
+  puts(_("sntp 4.2.8p9"));
 
   /* referenced via sntpOptions.pzFullUsage */
   puts(_("<<<NOT-FOUND>>>"));
Index: contrib/ntp/sntp/sntp.html
===================================================================
--- contrib/ntp/sntp/sntp.html	(版本 309693)
+++ contrib/ntp/sntp/sntp.html	(版本 310419)
@@ -36,7 +36,7 @@
 clock.  Run as root, it can correct the system clock to this offset as
 well.  It can be run as an interactive command or from a cron job.
 
-  <p>This document applies to version 4.2.8p8 of <code>sntp</code>.
+  <p>This document applies to version 4.2.8p9 of <code>sntp</code>.
 
   <p>The program implements the SNTP protocol as defined by RFC 5905, the NTPv4
 IETF specification.
@@ -176,7 +176,7 @@
 used to select the program, defaulting to <span class="file">more</span>.  Both will exit
 with a status code of 0.
 
-<pre class="example">sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p8
+<pre class="example">sntp - standard Simple Network Time Protocol client program - Ver. 4.2.8p9
 Usage:  sntp [ -&lt;flag&gt; [&lt;val&gt;] | --&lt;name&gt;[{=| }&lt;val&gt;] ]... \
                 [ hostname-or-IP ...]
   Flg Arg Option-Name    Description
Index: contrib/ntp/sntp/tests/run-packetProcessing.c
===================================================================
--- contrib/ntp/sntp/tests/run-packetProcessing.c	(版本 309693)
+++ contrib/ntp/sntp/tests/run-packetProcessing.c	(版本 310419)
@@ -66,24 +66,24 @@
 {
   progname = argv[0];
   UnityBegin("packetProcessing.c");
-  RUN_TEST(test_TooShortLength, 25);
-  RUN_TEST(test_LengthNotMultipleOfFour, 26);
-  RUN_TEST(test_TooShortExtensionFieldLength, 27);
-  RUN_TEST(test_UnauthenticatedPacketReject, 28);
-  RUN_TEST(test_CryptoNAKPacketReject, 29);
-  RUN_TEST(test_AuthenticatedPacketInvalid, 30);
-  RUN_TEST(test_AuthenticatedPacketUnknownKey, 31);
-  RUN_TEST(test_ServerVersionTooOld, 32);
-  RUN_TEST(test_ServerVersionTooNew, 33);
-  RUN_TEST(test_NonWantedMode, 34);
-  RUN_TEST(test_KoDRate, 35);
-  RUN_TEST(test_KoDDeny, 36);
-  RUN_TEST(test_RejectUnsyncedServer, 37);
-  RUN_TEST(test_RejectWrongResponseServerMode, 38);
-  RUN_TEST(test_AcceptNoSentPacketBroadcastMode, 39);
-  RUN_TEST(test_CorrectUnauthenticatedPacket, 40);
-  RUN_TEST(test_CorrectAuthenticatedPacketMD5, 41);
-  RUN_TEST(test_CorrectAuthenticatedPacketSHA1, 42);
+  RUN_TEST(test_TooShortLength, 20);
+  RUN_TEST(test_LengthNotMultipleOfFour, 21);
+  RUN_TEST(test_TooShortExtensionFieldLength, 22);
+  RUN_TEST(test_UnauthenticatedPacketReject, 23);
+  RUN_TEST(test_CryptoNAKPacketReject, 24);
+  RUN_TEST(test_AuthenticatedPacketInvalid, 25);
+  RUN_TEST(test_AuthenticatedPacketUnknownKey, 26);
+  RUN_TEST(test_ServerVersionTooOld, 27);
+  RUN_TEST(test_ServerVersionTooNew, 28);
+  RUN_TEST(test_NonWantedMode, 29);
+  RUN_TEST(test_KoDRate, 30);
+  RUN_TEST(test_KoDDeny, 31);
+  RUN_TEST(test_RejectUnsyncedServer, 32);
+  RUN_TEST(test_RejectWrongResponseServerMode, 33);
+  RUN_TEST(test_AcceptNoSentPacketBroadcastMode, 34);
+  RUN_TEST(test_CorrectUnauthenticatedPacket, 35);
+  RUN_TEST(test_CorrectAuthenticatedPacketMD5, 36);
+  RUN_TEST(test_CorrectAuthenticatedPacketSHA1, 37);
 
   return (UnityEnd());
 }
Index: contrib/ntp/sntp/unity/ulib_teardown.c
===================================================================
--- contrib/ntp/sntp/unity/ulib_teardown.c	(不存在的)
+++ contrib/ntp/sntp/unity/ulib_teardown.c	(版本 310419)
@@ -0,0 +1,13 @@
+/* default / lib implementation of 'tearDown()'
+ *
+ * SOLARIS does not support weak symbols -- need a real lib
+ * implemetation here.
+ */
+
+extern void tearDown(void);
+
+void tearDown(void)
+{
+	/* empty on purpose */
+}
+

 属性改变: contrib/ntp/sntp/unity/ulib_teardown.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: contrib/ntp/tests/libntp/calendar.c
===================================================================
--- contrib/ntp/tests/libntp/calendar.c	(版本 309693)
+++ contrib/ntp/tests/libntp/calendar.c	(版本 310419)
@@ -2,6 +2,7 @@
 
 #include "ntp_stdlib.h" /* test fail without this include, for some reason */
 #include "ntp_calendar.h"
+#include "ntp_unixtime.h"
 #include "unity.h"
 
 #include <string.h>
@@ -19,6 +20,7 @@
 char *	DateFromIsoToString(const struct isodate *iso);
 int	IsEqualDateCal(const struct calendar *expected, const struct calendar *actual);
 int	IsEqualDateIso(const struct isodate *expected, const struct isodate *actual);
+
 void	test_DaySplitMerge(void);
 void	test_SplitYearDays1(void);
 void	test_SplitYearDays2(void);
@@ -35,6 +37,8 @@
 void	test_IsoCalWeeksToYearEnd(void);
 void	test_DaySecToDate(void);
 
+void	test_NtpToNtp(void);
+void	test_NtpToTime(void);
 
 void
 setUp(void)
@@ -608,3 +612,126 @@
 
 	return;
 }
+
+/* --------------------------------------------------------------------
+ * unfolding of (truncated) NTP time stamps to full 64bit values.
+ *
+ * Note: These tests need a 64bit time_t to be useful.
+ */
+
+void
+test_NtpToNtp(void)
+{
+#   if SIZEOF_TIME_T <= 4
+	
+	TEST_IGNORE_MESSAGE("test only useful for sizeof(time_t) > 4, skipped");
+
+#   else
+	
+	static const uint32_t ntp_vals[6] = {
+		UINT32_C(0x00000000),
+		UINT32_C(0x00000001),
+		UINT32_C(0x7FFFFFFF),
+		UINT32_C(0x80000000),
+		UINT32_C(0x80000001),
+		UINT32_C(0xFFFFFFFF)
+	};
+
+	static char	lbuf[128];
+	vint64		hold;
+	time_t		pivot, texp, diff;
+	int		loops, iloop;
+	
+	pivot = 0;
+	for (loops = 0; loops < 16; ++loops) {
+		for (iloop = 0; iloop < 6; ++iloop) {
+			hold = ntpcal_ntp_to_ntp(
+				ntp_vals[iloop], &pivot);
+			texp = vint64_to_time(&hold);
+
+			/* constraint 1: texp must be in the
+			 * (right-open) intervall [p-(2^31), p+(2^31)[,
+			 * but the pivot 'p' must be taken in full NTP
+			 * time scale!
+			 */
+			diff = texp - (pivot + JAN_1970);
+			snprintf(lbuf, sizeof(lbuf),
+				 "bounds check: piv=%lld exp=%lld dif=%lld",
+				 (long long)pivot,
+				 (long long)texp,
+				 (long long)diff);
+			TEST_ASSERT_MESSAGE((diff >= INT32_MIN) && (diff <= INT32_MAX),
+					    lbuf);
+
+			/* constraint 2: low word must be equal to
+			 * input
+			 */
+			snprintf(lbuf, sizeof(lbuf),
+				 "low check: ntp(in)=$%08lu ntp(out[0:31])=$%08lu",
+				 (unsigned long)ntp_vals[iloop],
+				 (unsigned long)hold.D_s.lo);
+			TEST_ASSERT_EQUAL_MESSAGE(ntp_vals[iloop], hold.D_s.lo, lbuf);
+		}
+		pivot += 0x20000000;
+	}
+#   endif
+}
+
+void
+test_NtpToTime(void)
+{
+#   if SIZEOF_TIME_T <= 4
+	
+	TEST_IGNORE_MESSAGE("test only useful for sizeof(time_t) > 4, skipped");
+	
+#   else
+	
+	static const uint32_t ntp_vals[6] = {
+		UINT32_C(0x00000000),
+		UINT32_C(0x00000001),
+		UINT32_C(0x7FFFFFFF),
+		UINT32_C(0x80000000),
+		UINT32_C(0x80000001),
+		UINT32_C(0xFFFFFFFF)
+	};
+
+	static char	lbuf[128];
+	vint64		hold;
+	time_t		pivot, texp, diff;
+	uint32_t	back;
+	int		loops, iloop;
+	
+	pivot = 0;
+	for (loops = 0; loops < 16; ++loops) {
+		for (iloop = 0; iloop < 6; ++iloop) {
+			hold = ntpcal_ntp_to_time(
+				ntp_vals[iloop], &pivot);
+			texp = vint64_to_time(&hold);
+
+			/* constraint 1: texp must be in the
+			 * (right-open) intervall [p-(2^31), p+(2^31)[
+			 */
+			diff = texp - pivot;
+			snprintf(lbuf, sizeof(lbuf),
+				 "bounds check: piv=%lld exp=%lld dif=%lld",
+				 (long long)pivot,
+				 (long long)texp,
+				 (long long)diff);
+			TEST_ASSERT_MESSAGE((diff >= INT32_MIN) && (diff <= INT32_MAX),
+					    lbuf);
+
+			/* constraint 2: conversion from full time back
+			 * to truncated NTP time must yield same result
+			 * as input.
+			*/
+			back = (uint32_t)texp + JAN_1970;
+			snprintf(lbuf, sizeof(lbuf),
+				 "modulo check: ntp(in)=$%08lu ntp(out)=$%08lu",
+				 (unsigned long)ntp_vals[iloop],
+				 (unsigned long)back);
+			TEST_ASSERT_EQUAL_MESSAGE(ntp_vals[iloop], back, lbuf);
+		}
+		pivot += 0x20000000;
+	}
+#   endif
+}
Index: contrib/ntp/tests/ntpd/Makefile.in
===================================================================
--- contrib/ntp/tests/ntpd/Makefile.in	(版本 309693)
+++ contrib/ntp/tests/ntpd/Makefile.in	(版本 310419)
@@ -205,7 +205,7 @@
 	-o $@
 am_test_ntp_signd_OBJECTS = t-ntp_signd.$(OBJEXT) \
 	run-t-ntp_signd.$(OBJEXT) test-libntp.$(OBJEXT) \
-	ntp_signd.$(OBJEXT) $(am__objects_1)
+	$(am__objects_1)
 test_ntp_signd_OBJECTS = $(am_test_ntp_signd_OBJECTS)
 test_ntp_signd_DEPENDENCIES = $(am__DEPENDENCIES_3) \
 	$(top_builddir)/ntpd/ntp_config.o \
@@ -871,7 +871,6 @@
 	t-ntp_signd.c				\
 	run-t-ntp_signd.c			\
 	$(srcdir)/../libntp/test-libntp.c	\
-	$(srcdir)/../../ntpd/ntp_signd.c	\
 	$(NULL)
 
 
@@ -971,7 +970,6 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_signd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-t-ntp_signd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-ntp_signd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-libntp.Po@am__quote@
@@ -1194,20 +1192,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test-libntp.obj `if test -f '$(srcdir)/../libntp/test-libntp.c'; then $(CYGPATH_W) '$(srcdir)/../libntp/test-libntp.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libntp/test-libntp.c'; fi`
 
-ntp_signd.o: $(srcdir)/../../ntpd/ntp_signd.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntp_signd.o -MD -MP -MF $(DEPDIR)/ntp_signd.Tpo -c -o ntp_signd.o `test -f '$(srcdir)/../../ntpd/ntp_signd.c' || echo '$(srcdir)/'`$(srcdir)/../../ntpd/ntp_signd.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ntp_signd.Tpo $(DEPDIR)/ntp_signd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(srcdir)/../../ntpd/ntp_signd.c' object='ntp_signd.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntp_signd.o `test -f '$(srcdir)/../../ntpd/ntp_signd.c' || echo '$(srcdir)/'`$(srcdir)/../../ntpd/ntp_signd.c
-
-ntp_signd.obj: $(srcdir)/../../ntpd/ntp_signd.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ntp_signd.obj -MD -MP -MF $(DEPDIR)/ntp_signd.Tpo -c -o ntp_signd.obj `if test -f '$(srcdir)/../../ntpd/ntp_signd.c'; then $(CYGPATH_W) '$(srcdir)/../../ntpd/ntp_signd.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../../ntpd/ntp_signd.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ntp_signd.Tpo $(DEPDIR)/ntp_signd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$(srcdir)/../../ntpd/ntp_signd.c' object='ntp_signd.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ntp_signd.obj `if test -f '$(srcdir)/../../ntpd/ntp_signd.c'; then $(CYGPATH_W) '$(srcdir)/../../ntpd/ntp_signd.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../../ntpd/ntp_signd.c'; fi`
-
 test_rc_cmdlength-rc_cmdlength.o: rc_cmdlength.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_rc_cmdlength_CFLAGS) $(CFLAGS) -MT test_rc_cmdlength-rc_cmdlength.o -MD -MP -MF $(DEPDIR)/test_rc_cmdlength-rc_cmdlength.Tpo -c -o test_rc_cmdlength-rc_cmdlength.o `test -f 'rc_cmdlength.c' || echo '$(srcdir)/'`rc_cmdlength.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_rc_cmdlength-rc_cmdlength.Tpo $(DEPDIR)/test_rc_cmdlength-rc_cmdlength.Po
Index: contrib/ntp/util/ntp-keygen.1ntp-keygenman
===================================================================
--- contrib/ntp/util/ntp-keygen.1ntp-keygenman	(版本 309693)
+++ contrib/ntp/util/ntp-keygen.1ntp-keygenman	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp-keygen 1ntp-keygenman "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntp-keygen 1ntp-keygenman "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-.JaGB0/ag-lKayA0)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-psaWZm/ag-DsaOYm)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:39:36 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:03:41 AM by AutoGen 5.18.5
 .\" From the definitions ntp-keygen-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/util/ntp-keygen.man.in
===================================================================
--- contrib/ntp/util/ntp-keygen.man.in	(版本 309693)
+++ contrib/ntp/util/ntp-keygen.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp-keygen @NTP_KEYGEN_MS@ "02 Jun 2016" "ntp (4.2.8p8)" "User Commands"
+.TH ntp-keygen @NTP_KEYGEN_MS@ "21 Nov 2016" "ntp (4.2.8p9)" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-.JaGB0/ag-lKayA0)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-psaWZm/ag-DsaOYm)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:39:36 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 08:03:41 AM by AutoGen 5.18.5
 .\" From the definitions ntp-keygen-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: usr.sbin/ntp/doc/ntp-keygen.8
===================================================================
--- usr.sbin/ntp/doc/ntp-keygen.8	(版本 309693)
+++ usr.sbin/ntp/doc/ntp-keygen.8	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_KEYGEN 8 User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:39:43 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:48 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp-keygen-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: usr.sbin/ntp/doc/ntpdc.8
===================================================================
--- usr.sbin/ntp/doc/ntpdc.8	(版本 309693)
+++ usr.sbin/ntp/doc/ntpdc.8	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPDC 8 User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpdc-opts.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:58 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:35 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpdc-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: usr.sbin/ntp/scripts/mkver
===================================================================
--- usr.sbin/ntp/scripts/mkver	(版本 309693)
+++ usr.sbin/ntp/scripts/mkver	(版本 310419)
@@ -6,7 +6,7 @@
 
 ConfStr="$PROG"
 
-ConfStr="$ConfStr 4.2.8p8"
+ConfStr="$ConfStr 4.2.8p9"
 
 case "$CSET" in
  '') ;;
Index: contrib/ntp/sntp/sntp.man.in
===================================================================
--- contrib/ntp/sntp/sntp.man.in	(版本 309693)
+++ contrib/ntp/sntp/sntp.man.in	(版本 310419)
@@ -10,11 +10,11 @@
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH sntp @SNTP_MS@ "02 Jun 2016" "4.2.8p8" "User Commands"
+.TH sntp @SNTP_MS@ "21 Nov 2016" "4.2.8p9" "User Commands"
 .\"
-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-5CayKq/ag-fDaqJq)
+.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-Mfai12/ag-0faa02)
 .\"
-.\" It has been AutoGen-ed June 2, 2016 at 07:19:39 AM by AutoGen 5.18.5
+.\" It has been AutoGen-ed November 21, 2016 at 07:58:25 AM by AutoGen 5.18.5
 .\" From the definitions sntp-opts.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
Index: contrib/ntp/sntp/unity/Makefile.am
===================================================================
--- contrib/ntp/sntp/unity/Makefile.am	(版本 309693)
+++ contrib/ntp/sntp/unity/Makefile.am	(版本 310419)
@@ -12,6 +12,8 @@
 libunity_a_SOURCES =				\
 	../libpkgver/colcomp.c			\
 	unity.c					\
+	ulib_setup.c				\
+	ulib_teardown.c				\
 	unity.h					\
 	unity_config.h				\
 	unity_internals.h			\
Index: contrib/ntp/sntp/unity/unity_fixture.c
===================================================================
--- contrib/ntp/sntp/unity/unity_fixture.c	(版本 309693)
+++ contrib/ntp/sntp/unity/unity_fixture.c	(版本 310419)
@@ -17,10 +17,6 @@
 
 int verbose = 0;
 
-void setUp(void);
-void tearDown(void);
-void setUp(void)    { /*does nothing*/ }
-void tearDown(void) { /*does nothing*/ }
 
 static void announceTestRun(unsigned int runNumber)
 {
Index: contrib/ntp/tests/libntp/run-calendar.c
===================================================================
--- contrib/ntp/tests/libntp/run-calendar.c	(版本 309693)
+++ contrib/ntp/tests/libntp/run-calendar.c	(版本 310419)
@@ -25,6 +25,7 @@
 #include "config.h"
 #include "ntp_stdlib.h"
 #include "ntp_calendar.h"
+#include "ntp_unixtime.h"
 #include <string.h>
 
 //=======External Functions This Runner Calls=====
@@ -45,6 +46,8 @@
 extern void test_IsoCalWeeksToYearStart(void);
 extern void test_IsoCalWeeksToYearEnd(void);
 extern void test_DaySecToDate(void);
+extern void test_NtpToNtp(void);
+extern void test_NtpToTime(void);
 
 
 //=======Test Reset Option=====
@@ -63,21 +66,23 @@
 {
   progname = argv[0];
   UnityBegin("calendar.c");
-  RUN_TEST(test_DaySplitMerge, 22);
-  RUN_TEST(test_SplitYearDays1, 23);
-  RUN_TEST(test_SplitYearDays2, 24);
-  RUN_TEST(test_RataDie1, 25);
-  RUN_TEST(test_LeapYears1, 26);
-  RUN_TEST(test_LeapYears2, 27);
-  RUN_TEST(test_RoundTripDate, 28);
-  RUN_TEST(test_RoundTripYearStart, 29);
-  RUN_TEST(test_RoundTripMonthStart, 30);
-  RUN_TEST(test_RoundTripWeekStart, 31);
-  RUN_TEST(test_RoundTripDayStart, 32);
-  RUN_TEST(test_IsoCalYearsToWeeks, 33);
-  RUN_TEST(test_IsoCalWeeksToYearStart, 34);
-  RUN_TEST(test_IsoCalWeeksToYearEnd, 35);
-  RUN_TEST(test_DaySecToDate, 36);
+  RUN_TEST(test_DaySplitMerge, 24);
+  RUN_TEST(test_SplitYearDays1, 25);
+  RUN_TEST(test_SplitYearDays2, 26);
+  RUN_TEST(test_RataDie1, 27);
+  RUN_TEST(test_LeapYears1, 28);
+  RUN_TEST(test_LeapYears2, 29);
+  RUN_TEST(test_RoundTripDate, 30);
+  RUN_TEST(test_RoundTripYearStart, 31);
+  RUN_TEST(test_RoundTripMonthStart, 32);
+  RUN_TEST(test_RoundTripWeekStart, 33);
+  RUN_TEST(test_RoundTripDayStart, 34);
+  RUN_TEST(test_IsoCalYearsToWeeks, 35);
+  RUN_TEST(test_IsoCalWeeksToYearStart, 36);
+  RUN_TEST(test_IsoCalWeeksToYearEnd, 37);
+  RUN_TEST(test_DaySecToDate, 38);
+  RUN_TEST(test_NtpToNtp, 40);
+  RUN_TEST(test_NtpToTime, 41);
 
   return (UnityEnd());
 }
Index: contrib/ntp/util/invoke-ntp-keygen.texi
===================================================================
--- contrib/ntp/util/invoke-ntp-keygen.texi	(版本 309693)
+++ contrib/ntp/util/invoke-ntp-keygen.texi	(版本 310419)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntp-keygen.texi)
 #
-# It has been AutoGen-ed  June  2, 2016 at 07:39:40 AM by AutoGen 5.18.5
+# It has been AutoGen-ed  November 21, 2016 at 08:03:45 AM by AutoGen 5.18.5
 # From the definitions    ntp-keygen-opts.def
 # and the template file   agtexi-cmd.tpl
 @end ignore
@@ -886,7 +886,7 @@
 
 @exampleindent 0
 @example
-ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p8
+ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.8p9
 Usage:  ntp-keygen [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]...
   Flg Arg Option-Name    Description
    -b Num imbits         identity modulus bits
Index: contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc
===================================================================
--- contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc	(版本 309693)
+++ contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_KEYGEN 1ntp-keygenmdoc User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:39:43 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:48 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp-keygen-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: contrib/ntp/util/ntp-keygen.mdoc.in
===================================================================
--- contrib/ntp/util/ntp-keygen.mdoc.in	(版本 309693)
+++ contrib/ntp/util/ntp-keygen.mdoc.in	(版本 310419)
@@ -1,9 +1,9 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_KEYGEN @NTP_KEYGEN_MS@ User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp-keygen-opts.mdoc)
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:39:43 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:48 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp-keygen-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
Index: usr.sbin/ntp/doc/ntp.conf.5
===================================================================
--- usr.sbin/ntp/doc/ntp.conf.5	(版本 309693)
+++ usr.sbin/ntp/doc/ntp.conf.5	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTP_CONF 5 File Formats
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:36:16 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:02:03 AM by AutoGen 5.18.5
 .\"  From the definitions    ntp.conf.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -1997,6 +1997,25 @@
 scheme starts all over from the beginning and
 the expanding ring shrinks to the minimum and increments
 from there while collecting all servers in scope.
+.Ss Broadcast Options
+.Bl -tag -width indent
+.It Xo Ic tos
+.Oo
+.Cm bcpollbstep Ar gate
+.Oc
+.Xc
+This command provides a way to delay,
+by the specified number of broadcast poll intervals,
+believing backward time steps from a broadcast server.
+Broadcast time networks are expected to be trusted.
+In the event a broadcast server's time is stepped backwards,
+there is clear benefit to having the clients notice this change
+as soon as possible.
+Attacks such as replay attacks can happen, however,
+and even though there are a number of protections built in to
+broadcast mode, attempts to perform  a replay attack are possible.
+This value defaults to 0, but can be changed
+to any number of poll intervals between 0 and 4.
 .Ss Manycast Options
 .Bl -tag -width indent
 .It Xo Ic tos
Index: usr.sbin/ntp/doc/ntpq.8
===================================================================
--- usr.sbin/ntp/doc/ntpq.8	(版本 309693)
+++ usr.sbin/ntp/doc/ntpq.8	(版本 310419)
@@ -1,4 +1,4 @@
-.Dd June 2 2016
+.Dd November 21 2016
 .Dt NTPQ 8 User Commands
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntpq-opts.mdoc)
@@ -5,7 +5,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.\"  It has been AutoGen-ed  June  2, 2016 at 07:37:48 AM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  November 21, 2016 at 08:03:08 AM by AutoGen 5.18.5
 .\"  From the definitions    ntpq-opts.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
