]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
sys_lamport and sys_tsrounding. Document .../N in ntp.keys
authorHarlan Stenn <stenn@ntp.org>
Thu, 11 Jan 2018 12:25:17 +0000 (12:25 +0000)
committerHarlan Stenn <stenn@ntp.org>
Thu, 11 Jan 2018 12:25:17 +0000 (12:25 +0000)
bk: 5a5757ad4FWawfaSfGj1qo3Ddsg3Gg

19 files changed:
ChangeLog
NEWS
html/keygen.html
include/ntp_request.h
include/ntpd.h
libntp/systime.c
ntpd/invoke-ntp.keys.texi
ntpd/ntp.keys.5man
ntpd/ntp.keys.5mdoc
ntpd/ntp.keys.def
ntpd/ntp.keys.man.in
ntpd/ntp.keys.mdoc.in
ntpd/ntp_control.c
ntpd/ntp_parser.c
ntpd/ntp_parser.h
ntpd/ntp_proto.c
ntpd/ntp_request.c
ntpdc/layout.std
ntpq/ntpq-subs.c

index ccbe396530588804570fdfb6617efca211e1f658..7fa37677a38d6dbc50e72a3e9bea6a866a765c83 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -71,6 +71,8 @@
 * sntp: show the IP of who sent us a crypto-NAK.  HStenn.
 * Allow .../N to specify subnet bits for IPs in ntp.keys.  HStenn, JPerlinger.
 * authistrustedip() - use it in more places.  HStenn, JPerlinger.
+* New sysstats: sys_lamport, sys_tsrounding.  HStenn.
+* Update ntp.keys .../N documentation.  HStenn.
 
 ---
 (4.2.8p10) 2017/03/21 Released by Harlan Stenn <stenn@ntp.org>
diff --git a/NEWS b/NEWS
index 5cd1db36edafadf1bb238ba3572c7627a1d15067..048a0a1e4a628770d6146106f20492b8992249da 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,9 @@ update-leap needs:
        Net::SSLeay
        IO::Socket::SSL
 
+New sysstats variables: sys_lamport, sys_tsrounding
+See them with: ntpq -c "rv 0 ss_lamport,ss_tsrounding"
+
 --
 NTP 4.2.8p10 (Harlan Stenn <stenn@ntp.org>, 2017/03/21) 
 
index bad97fb9455344c4d7b70b662aef29fd4ca1dde6..4f10a28d2a85e51d00ba2803cd5efec183b65ebe 100644 (file)
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
-       <head>
-               <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
-               <meta name="generator" content="HTML Tidy, see www.w3.org">
-               <title>ntp-keygen - generate public and private keys</title>
-               <link href="scripts/style.css" type="text/css" rel="stylesheet">
-       </head>
-       <body>
-               <h3><tt>ntp-keygen</tt> - generate public and private keys</h3>
-               <p><img src="pic/alice23.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a></p>
-               <p>Alice holds the key.</p>
-               <p>Last update:
-               <!-- #BeginDate format:En2m -->10-Mar-2014  05:11<!-- #EndDate -->
-               UTC</p>
-               <br clear="left">
-               <h4>Related Links</h4>
-               <script type="text/javascript" language="javascript" src="scripts/manual.txt"></script>
-               <h4>Table of Contents</h4>
-               <ul>
-                       <li class="inline"><a href="#synop">Synopsis</a></li>
-                       <li class="inline"><a href="#descrip">Description</a></li>
-                       <li class="inline"><a href="#run">Running the program</a></li>
-                       <li class="inline"><a href="#cmd">Command Line Options</a></li>
-                       <li class="inline"><a href="#rand">Random Seed File</a></li>
-                       <li class="inline"><a href="#fmt">Cryptographic Data Files</a></li>
-                       <li class="inline"><a href="#bug">Bugs</a></li>
-               </ul>
-               <hr>
-               <h4 id="synop">Synopsis</h4>
-               <p id="intro"><tt>ntp-keygen [ -deGHIMPT ] [ -b <i>modulus</i> ] [ -c [ RSA-MD2 | RSA-MD5 | RSA-SHA
-                       | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ] ]
-  [ -C <i>cipher</i> ] [-i <i>group</i> ] [ -l <em>days</em>]
-  [ -m <i>modulus</i> ]  [ -p <i>passwd1</i> ] [ -q <i>passwd2</i> ] 
-  [ -S [ RSA | DSA ] ] [ -s <i>host</i> ] [ -V <i>nkeys</i> ]</tt></p>
-<h4 id="descrip">Description</h4>
-<p>This program generates cryptographic data files used by the NTPv4 authentication and identity schemes. It can generate  message digest keys used in symmetric   key cryptography and, if the OpenSSL software library has been installed, it can generate host keys, sign keys, certificates, and identity keys and parameters used by the Autokey public key cryptography. The message digest keys file is generated in a format compatible with NTPv3. All other files are in PEM-encoded printable ASCII format so they can be embedded as MIME attachments in mail to other sites.</p>
-<p>When used to generate message digest keys, the program produces a file containing
-  ten pseudo-random printable ASCII strings suitable for the MD5 message digest algorithm included in the distribution. If the OpenSSL library is installed, it produces an additional ten hex-encoded random bit strings suitable for the SHA1, AES-128 CMAC, and other message digest algorithms. The message digest keys file  must be distributed and stored using secure means beyond the scope of  NTP  itself. Besides the keys used for ordinary NTP associations, additional keys can be defined as passwords for the <tt><a href="ntpq.html">ntpq</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> utility programs.</p>
-<p>The remaining generated files are compatible with other OpenSSL applications and other Public Key Infrastructure (PKI) resources. Certificates generated by this program are compatible with extant industry practice, although some users might find the interpretation of X509v3 extension fields somewhat liberal. However, the identity keys are probably not compatible with anything other than Autokey.</p>
-<p>Some files used by this program are encrypted using a private password. The <tt>-p</tt> option specifies the password for local encrypted files and the <tt>-q</tt> option the password for encrypted files sent to remote sites. If no  password is specified, the host name returned by the Unix <tt>gethostname()</tt> function, normally the DNS name of the host, is used.</p>
-<p>The <tt>pw</tt> option of the <tt>crypto</tt> configuration command specifies the read password for previously encrypted local files. This must match the local password used by this program. If not specified, the host name is used. Thus, if files are generated by this program without password, they can be read back by <tt>ntpd</tt> without password, but only on the same host.</p>
-<p>Normally, encrypted files for each host are generated by that host and used only by that host, although exceptions exist as noted later on this page. The symmetric keys file, normally called <tt>ntp.keys</tt>, is usually installed in <tt>/etc</tt>. Other files and links are usually installed   in  <tt>/usr/local/etc</tt>, which is normally in a shared filesystem in NFS-mounted networks and cannot be changed by shared clients. The location of the keys directory can be changed by the <tt>keysdir</tt> configuration command in such cases. Normally, this is in <tt>/etc</tt>.</p>
-<p>This program directs commentary and error messages to the standard error stream <tt>stderr</tt> and remote files to the standard output stream <tt>stdout</tt> where they can be piped to other applications or redirected to  files. The names used for generated files and links all begin with the string <tt>ntpkey</tt> and include the file type, generating host and filestamp, as described in the <a href="#fmt">Cryptographic Data Files</a> section below</p>
-<h4 id="run">Running the Program</h4>
-<p>To test and gain experience with Autokey concepts, log in as root and change to the keys directory, usually <tt>/usr/local/etc</tt>. When run for the first time, or if all files with names beginning <tt>ntpkey</tt> have been removed, use the <tt>ntp-keygen </tt>command without arguments to generate a default RSA host key and matching RSA-MD5 certificate with expiration date one year hence. If run again without options, the program uses the existing keys and parameters and generates only a new certificate with new expiration date one year hence.</p>
-<p>Run the command on as many hosts as necessary. Designate one of them as the trusted host (TH) using <tt>ntp-keygen</tt> with the <tt>-T</tt> option and configure it to synchronize from reliable Internet servers. Then configure the other hosts to synchronize to the TH directly or indirectly. A certificate trail is created when Autokey asks the immediately ascendant host towards the TH to sign its certificate, which is then provided to the immediately descendant host on request. All group hosts should have acyclic certificate trails ending on the TH.</p>
-<p>The host key is used to encrypt the cookie when required and so must be RSA type. By default, the host key is also the sign key used to encrypt signatures. A different sign key can be assigned using the <tt>-S</tt> option and this can be either RSA or DSA type. By default, the signature message digest type is MD5, but any combination of sign key type and message digest type supported by the OpenSSL library can be specified using the <tt>-c</tt> option.</p>
-<p>The rules say cryptographic media should be generated with proventic filestamps, which means the host should already be synchronized before this program is run. This of course creates a chicken-and-egg problem when the host is started for the first time. Accordingly, the host time should be set by some other means, such as eyeball-and-wristwatch, at least so that the certificate lifetime is within the current year. After that and when the host is synchronized to a proventic source, the certificate should be re-generated.</p>
-<p>Additional information on trusted groups and identity schemes is on the <a href="autokey.html">Autokey Public-Key Authentication</a> page.</p>
-<h4 id="cmd">Command Line Options</h4>
-<dl>
-  <dt><tt>-b <i>modulus</i></tt></dt>
-  <dd>Set the modulus for generating identity keys to <i>modulus</i> bits. The modulus defaults to 256, but can be set from 256 (32 octets) to 2048 (256 octets). Use the larger moduli with caution, as this can consume considerable computing resources and increases the size of authenticated packets.</dd>
-  <dt><tt>-c [ RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ]</tt></dt>
-  <dd>Select certificate digital signature and message digest scheme. Note that  RSA schemes must be used with an RSA sign key and DSA schemes must be used with a DSA sign key. The default without this option is <tt>RSA-MD5</tt>. If compatibility with FIPS 140-2 is required, either the <tt>DSA-SHA</tt> or <tt>DSA-SHA1</tt> scheme must be used.</dd>
-  <dt><tt>-C <i>cipher</i></tt></dt>
-  <dd>Select the OpenSSL cipher to use for password-protected keys. The <tt>openssl -h</tt> command provided with OpenSSL displays available ciphers. The default without this option is <tt>des-ede3-cbc</tt>.</dd>
-  <dt><tt>-d</tt></dt>
-  <dd>Enable debugging. This option displays the cryptographic data produced for eye-friendly billboards.</dd>
-  <dt><tt>-e</tt></dt>
-  <dd>Extract the IFF or GQ public parameters from the <tt>IFFkey</tt> or <tt>GQkey</tt> keys file previously specified.  Send the unencrypted data to the standard output stream <tt>stdout</tt>.</dd>
-  <dt><tt>-G</tt></dt>
-  <dd>Generate a new encrypted GQ key     file for the Guillou-Quisquater (GQ) identity scheme. This option is mutually exclusive with the <tt>-I</tt> and <tt>-V</tt> options.</dd>
-  <dt><tt>-H</tt></dt>
-  <dd>Generate a new encrypted RSA public/private host key file.</dd>
-  <dt><tt>-i <i>group</i></tt></dt>
-  <dd>Set the optional Autokey group name to <tt><i>group</i></tt>. This is used in the identity scheme parameter file names. In that role, the default is the host name if no group is provided. The group name, if specified using <tt>-i</tt> or using <tt>-s</tt> following an <tt>@</tt> character, is also used in certificate subject and issuer names in the form <tt><i>host</i>@<i>group</i></tt> and should match the group specified via <tt>crypto ident</tt> or <tt>server ident</tt> in ntpd's configuration file.</dd>
-  <dt><tt>-I</tt></dt>
-  <dd>Generate a new encrypted IFF key file for the Schnorr (IFF) identity scheme. This option is mutually exclusive with the <tt>-G</tt> and <tt>-V</tt> options.</dd>
-  <dt><tt>-l <i>days</i></tt></dt>
-  <dd>Set the lifetime for certificates to <tt><i>days</i></tt>. The default lifetime is one year (365 d).</dd>
-  <dt><tt>-m <i>modulus</i></tt></dt>
-  <dd>Set the modulus for generating files to <i>modulus</i> bits. The modulus defaults to 512, but can be set from 256 (32 octets) to 2048 (256 octets). Use the larger moduli with caution, as this can consume considerable computing resources and increases the size of authenticated packets.</dd>
-  <dt><tt>-M</tt></dt>
-  <dd>Generate a new  keys file containing 10 MD5  keys and 10 SHA  keys. An MD5 key is a string of 20 random printable ASCII characters, while a SHA key is a string of 40 random hex digits. The file can be edited using a text editor to change the key type or key content. This option is mutually exclusive with all other option.</dd>
-  <dt><tt>-P</tt></dt>
-  <dd>Generate a new private certificate used by the PC identity scheme. By default, the program generates public certificates. Note: the PC identity scheme is not recommended for new installations.</dd>
-  <dt><tt>-p <i>passwd</i></tt></dt>
-  <dd>Set the password for reading and writing encrypted files to <tt><i>passwd.</i></tt> These include the host, sign and identify key files. By default, the password is the string returned by the Unix <tt>gethostname()</tt> routine.</dd>
-  <dt><tt>-q <i>passwd</i></tt></dt>
-  <dd>Set the password for  writing encrypted IFF, GQ and MV identity files redirected to <tt>stdout</tt> to <tt><i>passwd.</i></tt> In effect, these files are decrypted with the <tt>-p</tt> password, then encrypted with the <tt>-q</tt> password. By default, the password is the string returned by the Unix <tt>gethostname()</tt> routine.</dd>
-  <dt><tt>-S [ RSA | DSA ]</tt></dt>
-  <dd>Generate a new encrypted public/private sign key file of the specified type. By default, the sign key is
-    the host key and has the same type. If compatibly with FIPS 140-2 is required,
-    the sign key type must be <tt>DSA</tt>.</dd>
-  <dt><tt>-s <i>host</i>[@<i>group</i>]</tt></dt>
-  <dd>Specify the Autokey host name, where <tt><i>host</i></tt> is the host name and <tt><i>group</i></tt> is the optional group name. The host name, and if provided, group name are used in <tt><i>host</i>@<i>group</i></tt> form as certificate subject and issuer.  Specifying <tt>-s @<i>group</i></tt> is allowed, and results in leaving the host name unchanged, as with <tt>-i <i>group</i></tt>. The group name, or if no group is provided, the host name are also used in the file names of IFF, GQ, and MV identity scheme parameter files. If <tt><i>host</i></tt> is not specified, the default host name is the string returned by the <tt>gethostname()</tt> routine.</dd>
-  <dt><tt>-T</tt></dt>
-  <dd>Generate a trusted certificate. By default, the program generates nontrusted certificates.</dd>
-  <dt><tt>-V <i>nkeys</i></tt></dt>
-  <dd>Generate <tt>nkeys</tt> encrypted server     keys for the Mu-Varadharajan (MV)  identity scheme. This option is mutually exclusive with the <tt>-I</tt> and <tt>-G</tt> options. Note: support for this option should be considered a work in progress.</dd>
-</dl>
-<h4 id="rand">Random Seed File</h4>
-<p>All cryptographically sound key generation schemes must have means to randomize the entropy seed used to initialize the internal pseudo-random number generator used by the OpenSSL library routines. If a site supports <tt>ssh</tt>, it is very likely that means to do this are already available. The entropy seed used by the OpenSSL library is contained in a file, usually called <tt>.rnd</tt>, which must be available when starting the <tt>ntp-keygen</tt> program or <tt>ntpd</tt> daemon.</p>
-<p>The OpenSSL library looks for the file using the path specified by the <tt>RANDFILE</tt> environment variable in the user home directory, whether root or some other user. If the <tt>RANDFILE</tt> environment variable is not present, the library looks for the <tt>.rnd</tt> file in the user home directory. Since both the <tt>ntp-keygen</tt> program and <tt>ntpd</tt> daemon must run as root, the logical place to put this file is in <tt>/.rnd</tt> or <tt>/root/.rnd</tt>. If the file is not available or cannot be written, the program exits with a message to the system log.</p>
-<h4 id="fmt">Cryptographic Data Files</h4>
-<p>File and link names are in the form <tt>ntpkey_<i>key</i>_<i>name</i>.<i>fstamp</i></tt>, where <tt><i>key</i></tt> is the key or parameter type, <tt><i>name</i></tt> is the host or group name and <tt><i>fstamp</i></tt> is the filestamp (NTP seconds) when the file was created). By convention, <em><tt>key</tt></em> names in generated file names include both upper and lower case  characters, while  <em><tt>key</tt></em> names in generated link names include only lower case characters. The filestamp is not used in generated link names.</p>
-<p>The  <em><tt>key</tt></em> name is a string defining the cryptographic key type. Key types include public/private keys <tt>host</tt> and <tt>sign</tt>, certificate <tt>cert</tt> and several challenge/response key types. By convention, client files used for challenges have a <tt>par</tt> subtype, as in the IFF challenge <tt>IFFpar</tt>, while server files for responses have a <tt>key</tt> subtype, as in the GQ response <tt>GQkey</tt>.</p>
-<p>All files begin with two nonencrypted lines. The first line contains the file name in the format <tt>ntpkey_<i>key</i>_<i>host</i>.<i>fstamp</i></tt>. The second line contains the datestamp in conventional Unix <tt>date</tt> format. Lines beginning with <tt>#</tt> are ignored.</p>
-<p>The remainder of the file contains cryptographic data encoded first using ASN.1 rules, then encrypted using the DES-CBC algorithm with given password and finally written in PEM-encoded printable ASCII text preceded and followed by MIME content identifier lines.</p>
-<p>The format of the symmetric keys file, ordinarily named <tt>ntp.keys,</tt> is somewhat different than the other files in the interest of backward compatibility. Ordinarily, the file is generated by this program, but it can be constructed and edited using an ordinary text editor.</p>
-<table>
-  <caption style="caption-side: bottom;">
-    Figure 1. Typical Symmetric Key File
-  </caption>
-  <tr><td style="border: 1px solid black; border-spacing: 0;">
-       <pre style="color:grey;">
-# ntpkey_MD5key_bk.ntp.org.3595864945
-# Thu Dec 12 19:22:25 2013
+  <head>
+    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+    <meta name="generator" content="HTML Tidy, see www.w3.org">
+    <title>ntp-keygen - generate public and private keys</title>
+    <link href="scripts/style.css" type="text/css" rel="stylesheet">
+  </head>
+  <body>
+    <h3><tt>ntp-keygen</tt> - generate public and private keys</h3>
+    <p><img src="pic/alice23.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a></p>
+    <p>Alice holds the key.</p>
+    <p>Last update:
+      <!-- #BeginDate format:En2m -->11-Jan-2018  11:55<!-- #EndDate -->
+      UTC</p>
+    <br clear="left">
+    <h4>Related Links</h4>
+    <script type="text/javascript" language="javascript" src="scripts/manual.txt"></script>
+    <h4>Table of Contents</h4>
+    <ul>
+      <li class="inline"><a href="#synop">Synopsis</a></li>
+      <li class="inline"><a href="#descrip">Description</a></li>
+      <li class="inline"><a href="#run">Running the program</a></li>
+      <li class="inline"><a href="#cmd">Command Line Options</a></li>
+      <li class="inline"><a href="#rand">Random Seed File</a></li>
+      <li class="inline"><a href="#fmt">Cryptographic Data Files</a></li>
+      <li class="inline"><a href="#bug">Bugs</a></li>
+    </ul>
+    <hr>
+    <h4 id="synop">Synopsis</h4>
+    <p id="intro"><tt>ntp-keygen [ -deGHIMPT ] [ -b <i>modulus</i> ] [ -c [ RSA-MD2 | RSA-MD5 | RSA-SHA
+       | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ] ]
+       [ -C <i>cipher</i> ] [-i <i>group</i> ] [ -l <em>days</em>]
+       [ -m <i>modulus</i> ]  [ -p <i>passwd1</i> ] [ -q <i>passwd2</i> ] 
+       [ -S [ RSA | DSA ] ] [ -s <i>host</i> ] [ -V <i>nkeys</i> ]</tt></p>
+    <h4 id="descrip">Description</h4>
+    <p>This program generates cryptographic data files used by the NTPv4
+      authentication and identity schemes.  It can generate message digest keys
+      used in symmetric key cryptography and, if the OpenSSL software library
+      has been installed, it can generate host keys, sign keys, certificates,
+      and identity keys and parameters used by the Autokey public key
+      cryptography.  The message digest keys file is generated in a format
+      compatible with NTPv3.  All other files are in PEM-encoded printable ASCII
+      format so they can be embedded as MIME attachments in mail to other
+      sites.</p>
+    <p>When used to generate message digest keys, the program produces a file
+      containing ten pseudo-random printable ASCII strings suitable for the MD5
+      message digest algorithm included in the distribution.  If the OpenSSL
+      library is installed, it produces an additional ten hex-encoded random bit
+      strings suitable for the SHA1, AES-128 CMAC, and other message digest
+      algorithms.  The message digest keys file must be distributed and stored
+      using secure means beyond the scope of NTP itself.  Besides the keys used
+      for ordinary NTP associations, additional keys can be defined as passwords
+      for the <tt><a href="ntpq.html">ntpq</a></tt>
+      and <tt><a href="ntpdc.html">ntpdc</a></tt> utility programs.</p>
+    <p>The remaining generated files are compatible with other OpenSSL
+      applications and other Public Key Infrastructure (PKI)
+      resources.  Certificates generated by this program are compatible with
+      extant industry practice, although some users might find the
+      interpretation of X509v3 extension fields somewhat liberal.  However,
+      the identity keys are probably not compatible with anything other than
+      Autokey.</p>
+    <p>Some files used by this program are encrypted using a private
+      password.  The <tt>-p</tt> option specifies the password for local
+      encrypted files and the <tt>-q</tt> option the password for encrypted
+      files sent to remote sites.  If no password is specified, the host name
+      returned by the Unix <tt>gethostname()</tt> function, normally the DNS
+      name of the host, is used.</p>
+    <p>The <tt>pw</tt> option of the <tt>crypto</tt> configuration command
+      specifies the read password for previously encrypted local files.
+      This must match the local password used by this program.  If not
+      specified, the host name is used.  Thus, if files are generated by
+      this program without password, they can be read back by <tt>ntpd</tt>
+      without password, but only on the same host.</p>
+    <p>Normally, encrypted files for each host are generated by that host
+      and used only by that host, although exceptions exist as noted later
+      on this page.  The symmetric keys file, normally
+      called <tt>ntp.keys</tt>, is usually installed in <tt>/etc</tt>.
+      Other files and links are usually installed
+      in <tt>/usr/local/etc</tt>, which is normally in a shared filesystem
+      in NFS-mounted networks and cannot be changed by shared clients.  The
+      location of the keys directory can be changed by the <tt>keysdir</tt>
+      configuration command in such cases.  Normally, this is
+      in <tt>/etc</tt>.</p>
+    <p>This program directs commentary and error messages to the standard
+      error stream <tt>stderr</tt> and remote files to the standard output
+      stream <tt>stdout</tt> where they can be piped to other applications
+      or redirected to files.  The names used for generated files and links
+      all begin with the string <tt>ntpkey</tt> and include the file type,
+      generating host and filestamp, as described in
+      the <a href="#fmt">Cryptographic Data Files</a> section below</p>
+    <h4 id="run">Running the Program</h4>
+    <p>To test and gain experience with Autokey concepts, log in as root and
+      change to the keys directory, usually <tt>/usr/local/etc</tt>.  When
+      run for the first time, or if all files with names
+      beginning <tt>ntpkey</tt> have been removed, use
+      the <tt>ntp-keygen</tt> command without arguments to generate a
+      default RSA host key and matching RSA-MD5 certificate with expiration
+      date one year hence.  If run again without options, the program uses
+      the existing keys and parameters and generates only a new certificate
+      with new expiration date one year hence.</p>
+    <p>Run the command on as many hosts as necessary.  Designate one of them
+      as the trusted host (TH) using <tt>ntp-keygen</tt> with
+      the <tt>-T</tt> option and configure it to synchronize from reliable
+      Internet servers.  Then configure the other hosts to synchronize to
+      the TH directly or indirectly.  A certificate trail is created when
+      Autokey asks the immediately ascendant host towards the TH to sign its
+      certificate, which is then provided to the immediately descendant host
+      on request.  All group hosts should have acyclic certificate trails
+      ending on the TH.</p>
+    <p>The host key is used to encrypt the cookie when required and so must
+      be RSA type.  By default, the host key is also the sign key used to
+      encrypt signatures.  A different sign key can be assigned using
+      the <tt>-S</tt> option and this can be either RSA or DSA type.  By
+      default, the signature message digest type is MD5, but any combination
+      of sign key type and message digest type supported by the OpenSSL
+      library can be specified using the <tt>-c</tt> option.</p>
+    <p>The rules say cryptographic media should be generated with proventic
+      filestamps, which means the host should already be synchronized before
+      this program is run.  This of course creates a chicken-and-egg problem
+      when the host is started for the first time.  Accordingly, the host
+      time should be set by some other means, such as
+      eyeball-and-wristwatch, at least so that the certificate lifetime is
+      within the current year.  After that and when the host is synchronized
+      to a proventic source, the certificate should be re-generated.</p>
+    <p>Additional information on trusted groups and identity schemes is on
+      the <a href="autokey.html">Autokey Public-Key Authentication</a>
+      page.</p>
+    <h4 id="cmd">Command Line Options</h4>
+    <dl>
+      <dt><tt>-b <i>modulus</i></tt></dt>
+      <dd>Set the modulus for generating identity keys to <i>modulus</i>
+       bits.  The modulus defaults to 256, but can be set from 256 (32
+       octets) to 2048 (256 octets).  Use the larger moduli with caution,
+       as this can consume considerable computing resources and increases
+       the size of authenticated packets.</dd>
+      <dt><tt>-c [ RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ]</tt></dt>
+      <dd>Select certificate digital signature and message digest scheme.
+       Note that RSA schemes must be used with an RSA sign key and DSA
+       schemes must be used with a DSA sign key.  The default without this
+       option is <tt>RSA-MD5</tt>.  If compatibility with FIPS 140-2 is
+       required, either the <tt>DSA-SHA</tt> or <tt>DSA-SHA1</tt> scheme
+       must be used.</dd>
+      <dt><tt>-C <i>cipher</i></tt></dt>
+      <dd>Select the OpenSSL cipher to use for password-protected keys.
+       The <tt>openssl -h</tt> command provided with OpenSSL displays
+       available ciphers.  The default without this option
+       is <tt>des-ede3-cbc</tt>.</dd>
+      <dt><tt>-d</tt></dt>
+      <dd>Enable debugging.  This option displays the cryptographic data
+       produced for eye-friendly billboards.</dd>
+      <dt><tt>-e</tt></dt>
+      <dd>Extract the IFF or GQ public parameters from the <tt>IFFkey</tt>
+       or <tt>GQkey</tt> keys file previously specified.  Send the
+       unencrypted data to the standard output stream <tt>stdout</tt>.</dd>
+      <dt><tt>-G</tt></dt>
+      <dd>Generate a new encrypted GQ key file for the Guillou-Quisquater
+       (GQ) identity scheme.  This option is mutually exclusive with
+       the <tt>-I</tt> and <tt>-V</tt> options.</dd>
+      <dt><tt>-H</tt></dt>
+      <dd>Generate a new encrypted RSA public/private host key file.</dd>
+      <dt><tt>-i <i>group</i></tt></dt>
+      <dd>Set the optional Autokey group name to <tt><i>group</i></tt>. This
+       is used in the identity scheme parameter file names.  In that role,
+       the default is the host name if no group is provided.  The group
+       name, if specified using <tt>-i</tt> or using <tt>-s</tt> following
+       an <tt>@</tt> character, is also used in certificate subject and
+       issuer names in the form <tt><i>host</i>@<i>group</i></tt> and
+       should match the group specified via <tt>crypto ident</tt>
+       or <tt>server ident</tt> in ntpd's configuration file.</dd>
+      <dt><tt>-I</tt></dt>
+      <dd>Generate a new encrypted IFF key file for the Schnorr (IFF)
+       identity scheme.  This option is mutually exclusive with
+       the <tt>-G</tt> and <tt>-V</tt> options.</dd>
+      <dt><tt>-l <i>days</i></tt></dt>
+      <dd>Set the lifetime for certificates to <tt><i>days</i></tt>.  The
+      default lifetime is one year (365 d).</dd>
+      <dt><tt>-m <i>modulus</i></tt></dt>
+      <dd>Set the modulus for generating files to <i>modulus</i> bits.  The
+       modulus defaults to 512, but can be set from 256 (32 octets) to 2048
+       (256 octets).  Use the larger moduli with caution, as this can
+       consume considerable computing resources and increases the size of
+       authenticated packets.</dd>
+      <dt><tt>-M</tt></dt>
+      <dd>Generate a new keys file containing 10 MD5 keys and 10 SHA keys.
+       An MD5 key is a string of 20 random printable ASCII characters,
+       while a SHA key is a string of 40 random hex digits. The file can be
+       edited using a text editor to change the key type or key content.
+       This option is mutually exclusive with all other options.</dd>
+      <dt><tt>-P</tt></dt>
+      <dd>Generate a new private certificate used by the PC identity scheme.
+       By default, the program generates public certificates.  Note: the PC
+       identity scheme is not recommended for new installations.</dd>
+      <dt><tt>-p <i>passwd</i></tt></dt>
+      <dd>Set the password for reading and writing encrypted files
+       to <tt><i>passwd</i></tt>.  These include the host, sign and
+       identify key files.  By default, the password is the string returned
+       by the Unix <tt>gethostname()</tt> routine.</dd>
+      <dt><tt>-q <i>passwd</i></tt></dt>
+      <dd>Set the password for writing encrypted IFF, GQ and MV identity
+       files redirected to <tt>stdout</tt> to <tt><i>passwd</i></tt>=.  In
+       effect, these files are decrypted with the <tt>-p</tt> password,
+       then encrypted with the <tt>-q</tt> password.  By default, the
+       password is the string returned by the Unix <tt>gethostname()</tt>
+       routine.</dd>
+      <dt><tt>-S [ RSA | DSA ]</tt></dt>
+      <dd>Generate a new encrypted public/private sign key file of the
+       specified type.  By default, the sign key is the host key and has
+       the same type.  If compatibly with FIPS 140-2 is required, the sign
+       key type must be <tt>DSA</tt>.</dd>
+      <dt><tt>-s <i>host</i>[@<i>group</i>]</tt></dt>
+      <dd>Specify the Autokey host name, where <tt><i>host</i></tt> is the
+       host name and <tt><i>group</i></tt> is the optional group name.  The
+       host name, and if provided, group name are used
+       in <tt><i>host</i>@<i>group</i></tt> form as certificate subject and
+       issuer.  Specifying <tt>-s @<i>group</i></tt> is allowed, and
+       results in leaving the host name unchanged, as
+       with <tt>-i <i>group</i></tt>.  The group name, or if no group is
+       provided, the host name are also used in the file names of IFF, GQ,
+       and MV identity scheme parameter files.  If <tt><i>host</i></tt> is
+       not specified, the default host name is the string returned by
+       the <tt>gethostname()</tt> routine.</dd>
+      <dt><tt>-T</tt></dt>
+      <dd>Generate a trusted certificate.  By default, the program generates
+       nontrusted certificates.</dd>
+      <dt><tt>-V <i>nkeys</i></tt></dt>
+      <dd>Generate <tt>nkeys</tt> encrypted server keys for the
+       Mu-Varadharajan (MV) identity scheme.  This option is mutually
+       exclusive with the <tt>-I</tt> and <tt>-G</tt> options.  Note:
+       support for this option should be considered a work in
+       progress.</dd>
+    </dl>
+    <h4 id="rand">Random Seed File</h4>
+    <p>All cryptographically sound key generation schemes must have means to
+      randomize the entropy seed used to initialize the internal
+      pseudo-random number generator used by the OpenSSL library routines.
+      If a site supports <tt>ssh</tt>, it is very likely that means to do
+      this are already available.  The entropy seed used by the OpenSSL
+      library is contained in a file, usually called <tt>.rnd</tt>, which
+      must be available when starting the <tt>ntp-keygen</tt> program
+      or <tt>ntpd</tt> daemon.</p>
+    <p>The OpenSSL library looks for the file using the path specified by
+      the <tt>RANDFILE</tt> environment variable in the user home directory,
+      whether root or some other user.  If the <tt>RANDFILE</tt> environment
+      variable is not present, the library looks for the <tt>.rnd</tt> file
+      in the user home directory.  Since both the <tt>ntp-keygen</tt>
+      program and <tt>ntpd</tt> daemon must run as root, the logical place
+      to put this file is in <tt>/.rnd</tt> or <tt>/root/.rnd</tt>.  If the
+      file is not available or cannot be written, the program exits with a
+      message to the system log.</p>
+    <h4 id="fmt">Cryptographic Data Files</h4>
+    <p>File and link names are in the
+      form <tt>ntpkey_<i>key</i>_<i>name</i>.<i>fstamp</i></tt>,
+      where <tt><i>key</i></tt> is the key or parameter
+      type, <tt><i>name</i></tt> is the host or group name
+      and <tt><i>fstamp</i></tt> is the filestamp (NTP seconds) when the
+      file was created).  By convention, <em><tt>key</tt></em> names in
+      generated file names include both upper and lower case characters,
+      while <em><tt>key</tt></em> names in generated link names include only
+      lower case characters.  The filestamp is not used in generated link
+      names.</p>
+    <p>The <em><tt>key</tt></em> name is a string defining the cryptographic
+      key type.  Key types include public/private keys <tt>host</tt>
+      and <tt>sign</tt>, certificate <tt>cert</tt> and several
+      challenge/response key types.  By convention, client files used for
+      challenges have a <tt>par</tt> subtype, as in the IFF
+      challenge <tt>IFFpar</tt>, while server files for responses have
+      a <tt>key</tt> subtype, as in the GQ response <tt>GQkey</tt>.</p>
+    <p>All files begin with two nonencrypted lines.  The first line contains
+    the file name in the
+    format <tt>ntpkey_<i>key</i>_<i>host</i>.<i>fstamp</i></tt>.  The second
+    line contains the datestamp in conventional Unix <tt>date</tt> format.
+    Lines beginning with <tt>#</tt> are ignored.</p>
+    <p>The remainder of the file contains cryptographic data encoded first
+      using ASN.1 rules, then encrypted using the DES-CBC algorithm with
+      given password and finally written in PEM-encoded printable ASCII text
+      preceded and followed by MIME content identifier lines.</p>
+    <p>The format of the symmetric keys file, ordinarily
+      named <tt>ntp.keys,</tt> is somewhat different than the other files in
+      the interest of backward compatibility.  Ordinarily, the file is
+      generated by this program, but it can be constructed and edited using
+      an ordinary text editor.</p>
+    <table>
+      <caption style="caption-side: bottom;">
+       Figure 1. Typical Symmetric Key File
+      </caption>
+      <tr><td style="border: 1px solid black; border-spacing: 0;">
+         <pre style="color:grey;">
+           # ntpkey_MD5key_bk.ntp.org.3595864945
+           # Thu Dec 12 19:22:25 2013
 
-1  MD5 L";Nw&lt;`.I&lt;f4U0)247"i  # MD5 key
-2  MD5 &amp;&gt;l0%XXK9O'51VwV&lt;xq~  # MD5 key
-3  MD5 lb4zLW~d^!K:]RsD'qb6  # MD5 key
-4  MD5 Yue:tL[+vR)M`n~bY,'?  # MD5 key
-5  MD5 B;fxlKgr/&amp;4ZTbL6=RxA  # MD5 key
-6  MD5 4eYwa`o}3i@@V@..R9!l  # MD5 key
-7  MD5 `A.([h+;wTQ|xfi%Sn_!  # MD5 key
-8  MD5 45:V,r4]l6y^JH6"Sh?F  # MD5 key
-9  MD5 3-5vcn*6l29DS?Xdsg)*  # MD5 key
-10 MD5 2late4Me              # MD5 key
-11 SHA1 a27872d3030a9025b8446c751b4551a7629af65c  # SHA1 key
-12 SHA1 21bc3b4865dbb9e920902abdccb3e04ff97a5e74  # SHA1 key
-13 SHA1 2b7736fe24fef5ba85ae11594132ab5d6f6daba9  # SHA1 key
-14 SHA  a5332809c8878dd3a5b918819108a111509aeceb  # SHA  key
-15 MD2  2fe16c88c760ff2f16d4267e36c1aa6c926e6964  # MD2  key
-16 MD4  b2691811dc19cfc0e2f9bcacd74213f29812183d  # MD4  key
-17 MD5  e4d6735b8bdad58ec5ffcb087300a17f7fef1f7c  # MD5  key
-18 MDC2 a8d5e2315c025bf3a79174c87fbd10477de2eabc  # MDC2 key
-19 RIPEMD160 77ca332cafb30e3cafb174dcd5b80ded7ba9b3d2  # RIPEMD160 key
-20 AES128CMAC f92ff73eee86c1e7dc638d6489a04e4e555af878  # AES128CMAC key
-  </pre></td></tr></table>
-<p>Figure 1 shows a typical symmetric keys file used by the reference implementation.  Each line of the file contains three fields, first an integer between 1 and 65534, inclusive, representing the key identifier used in the <tt>server</tt> and <tt>peer</tt> configuration commands. Next is the key type for the message digest algorithm, which in the absence of the OpenSSL library must be  <tt>MD5</tt> to designate the  MD5 message digest algorithm. If the OpenSSL library is installed, the key type can be any message digest algorithm supported by that library. However, if compatibility with FIPS 140-2 is required, the key type must be either <tt>SHA</tt> or <tt>SHA1</tt>. The key type can be changed using an ASCII text editor.</p>
-<p>   An MD5 key consists of a   printable ASCII string less than or equal to 16 characters and terminated by  whitespace or a # character.   An OpenSSL key consists of a hex-encoded ASCII string of 40 characters, which is truncated as necessary.</p>
-<p>Note that the keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt> programs are checked against passwords requested by the programs and entered by hand, so it is generally appropriate to specify these keys in human readable ASCII format.</p>
-<p>The <tt>ntp-keygen</tt> program generates a MD5 symmetric keys file <tt>ntpkey_MD5key_<i>hostname.filestamp</i></tt>. Since the file contains private shared keys, it should be visible only to root and distributed by secure means to other subnet hosts. The NTP daemon loads the file <tt>ntp.keys</tt>, so <tt>ntp-keygen</tt> installs a soft link from this name to the generated file. Subsequently, similar soft links must be installed by manual or automated means on the other subnet hosts. While this file is not used with the Autokey Version 2 protocol, it is needed to authenticate some remote configuration commands used by the <a href="ntpq.html"><tt>ntpq</tt></a> and <a href="ntpdc.html"><tt>ntpdc</tt></a> utilities.</p>
-<h4 id="bug">Bugs</h4>
-<p>It can take quite a while to generate some cryptographic values.</p>
-<hr>
-<script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
-</body>
+           1  MD5 L";Nw&lt;`.I&lt;f4U0)247"i  # MD5 key
+           2  MD5 &amp;&gt;l0%XXK9O'51VwV&lt;xq~  # MD5 key
+           3  MD5 lb4zLW~d^!K:]RsD'qb6  # MD5 key
+           4  MD5 Yue:tL[+vR)M`n~bY,'?  # MD5 key
+           5  MD5 B;fxlKgr/&amp;4ZTbL6=RxA  # MD5 key
+           6  MD5 4eYwa`o}3i@@V@..R9!l  # MD5 key
+           7  MD5 `A.([h+;wTQ|xfi%Sn_!  # MD5 key
+           8  MD5 45:V,r4]l6y^JH6.Sh?F  # MD5 key
+           9  MD5 3-5vcn*6l29DS?Xdsg)*  # MD5 key
+           10 MD5 2late4Me              # MD5 key
+           11 SHA1 a27872d3030a9025b8446c751b4551a7629af65c  # SHA1 key
+           12 SHA1 21bc3b4865dbb9e920902abdccb3e04ff97a5e74  # SHA1 key
+           13 SHA1 2b7736fe24fef5ba85ae11594132ab5d6f6daba9  # SHA1 key
+           14 SHA  a5332809c8878dd3a5b918819108a111509aeceb  # SHA  key
+           15 MD2  2fe16c88c760ff2f16d4267e36c1aa6c926e6964  # MD2  key
+           16 MD4  b2691811dc19cfc0e2f9bcacd74213f29812183d  # MD4  key
+           17 MD5  e4d6735b8bdad58ec5ffcb087300a17f7fef1f7c  # MD5  key
+           18 MDC2 a8d5e2315c025bf3a79174c87fbd10477de2eabc  # MDC2 key
+           19 RIPEMD160 77ca332cafb30e3cafb174dcd5b80ded7ba9b3d2  # RIPEMD160 key
+           20 AES128CMAC f92ff73eee86c1e7dc638d6489a04e4e555af878  # AES128CMAC key
+           21 MD5 sampo 10.1.2.3/24
+    </pre></td></tr></table>
+    <p>Figure 1 shows a typical symmetric keys file used by the reference
+      implementation.  Each line of the file contains three or four fields,
+      first an integer between 1 and 65534, inclusive, representing the key
+      identifier used in the <tt>server</tt> and <tt>peer</tt> configuration
+      commands.  Second is the key type for the message digest algorithm,
+      which in the absence of the OpenSSL library must be <tt>MD5</tt> to
+      designate the MD5 message digest algorithm.  If the OpenSSL library is
+      installed, the key type can be any message digest algorithm supported
+      by that library.  However, if compatibility with FIPS 140-2 is
+      required, the key type must be either <tt>SHA</tt> or <tt>SHA1</tt>.
+      The key type can be changed using an ASCII text editor.</p>
+    <p>The third field is the key.</p>
+    <p>An MD5 key consists of a printable ASCII string less than or equal to
+      16 characters and terminated by whitespace or a # character.  An
+      OpenSSL key consists of a hex-encoded ASCII string of 40 characters,
+      which is truncated as necessary.</p>
+    <p>Note that the keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt>
+      programs are checked against passwords requested by the programs and
+      entered by hand, so it is generally appropriate to specify these keys
+      in human readable ASCII format.</p>
+    <p>The optional fourth field is one or more IPs, with each IP separated
+      with a comma.  An IP may end with an optional <tt>/subnetbits</tt>
+      suffix, which limits the acceptance of the key identifier to packets
+      claiming to be from the described IP space.</p>
+    <p>The <tt>ntp-keygen</tt> program generates a MD5 symmetric keys
+      file <tt>ntpkey_MD5key_<i>hostname.filestamp</i></tt>.  Since the file
+      contains private shared keys, it should be visible only to root and
+      distributed by secure means to other subnet hosts.  The NTP daemon
+      loads the file <tt>ntp.keys</tt>, so <tt>ntp-keygen</tt> installs a
+      soft link from this name to the generated file.  Subsequently, similar
+      soft links must be installed by manual or automated means on the other
+      subnet hosts.  While this file is not used with the Autokey Version 2
+      protocol, it is needed to authenticate some remote configuration
+      commands used by the <a href="ntpq.html"><tt>ntpq</tt></a>
+      and <a href="ntpdc.html"><tt>ntpdc</tt></a> utilities.</p>
+    <h4 id="bug">Bugs</h4>
+    <p>It can take quite a while to generate some cryptographic values.</p>
+    <hr>
+    <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+  </body>
 </html>
index 93a27e2ad5b14ad7b310cfdf3cd9d26d6d6b2c4d..52c973f0a3a253e914049a1197af706d626395cc 100644 (file)
@@ -513,6 +513,8 @@ struct info_sys_stats {
        u_int32 badauth;        /* bad authentication */
        u_int32 received;       /* packets received */
        u_int32 limitrejected;  /* rate exceeded */
+       u_int32 lamport;        /* Lamport violations */
+       u_int32 tsrounding;     /* Timestamp rounding errors */
 };
 
 
index 2b4bddcd6d09e48bdc11901abc2efeef817777b1..39266ffcb87225d73a9f4b1c7ef08269295ad088 100644 (file)
@@ -500,18 +500,19 @@ extern u_int      sys_ttlmax;             /* max ttl mapping vector index */
 /*
  * Statistics counters
  */
-extern u_long  sys_stattime;           /* time since reset */
-extern u_long  sys_received;           /* packets received */
-extern u_long  sys_processed;          /* packets for this host */
-extern u_long  sys_restricted;         /* restricted packets */
-extern u_long  sys_newversion;         /* current version  */
-extern u_long  sys_oldversion;         /* old version */
-extern u_long  sys_restricted;         /* access denied */
-extern u_long  sys_badlength;          /* bad length or format */
 extern u_long  sys_badauth;            /* bad authentication */
+extern u_long  sys_badlength;          /* bad length or format */
 extern u_long  sys_declined;           /* declined */
-extern u_long  sys_limitrejected;      /* rate exceeded */
 extern u_long  sys_kodsent;            /* KoD sent */
+extern u_long  sys_lamport;            /* Lamport violation */
+extern u_long  sys_limitrejected;      /* rate exceeded */
+extern u_long  sys_newversion;         /* current version  */
+extern u_long  sys_oldversion;         /* old version */
+extern u_long  sys_processed;          /* packets for this host */
+extern u_long  sys_received;           /* packets received */
+extern u_long  sys_restricted;         /* access denied */
+extern u_long  sys_stattime;           /* time since reset */
+extern u_long  sys_tsrounding;         /* timestamp rounding errors */
 
 /* ntp_request.c */
 extern keyid_t info_auth_keyid;        /* keyid used to authenticate requests */
index 18528438a3cc5b6599ca5ebc1173b08f06af8897..8e70897466cb2884007d6cfc7f6c0485da56fa2c 100644 (file)
@@ -31,6 +31,9 @@
 int    allow_panic = FALSE;            /* allow panic correction (-g) */
 int    enable_panic_check = TRUE;      /* Can we check allow_panic's state? */
 
+u_long sys_lamport;                    /* Lamport violation */
+u_long sys_tsrounding;                 /* timestamp rounding errors */
+
 #ifndef USE_COMPILETIME_PIVOT
 # define USE_COMPILETIME_PIVOT 1
 #endif
@@ -114,7 +117,7 @@ set_sys_fuzz(
        INSIST(sys_fuzz >= 0);
        INSIST(sys_fuzz <= 1.0);
        /* [Bug 3450] ensure nsec fuzz >= sys_fuzz to reduce chance of
-        * short falling fuzz advance
+        * short-falling fuzz advance
         */
        sys_fuzz_nsec = (long)ceil(sys_fuzz * 1e9);
 }
@@ -194,8 +197,10 @@ get_systime(
          * introduce small steps backward. It should not be an issue on
          * systems where get_ostime() results in a true syscall.)
          */
-        if (cmp_tspec(add_tspec_ns(ts, 50000000), ts_last) < 0)
+        if (cmp_tspec(add_tspec_ns(ts, 50000000), ts_last) < 0) {
                 lamport_violated = 1;
+                sys_lamport++;
+       }
         ts_last = ts;
 
        /*
@@ -248,10 +253,10 @@ get_systime(
         * along silently.
         */
        if (!USING_SIGIO()) {
-               if (!L_ISZERO(&lfp_prev) &&
-                   !lamport_violated    &&
-                   (sys_fuzz > 0.0)      )
-               {
+               if (   !L_ISZERO(&lfp_prev)
+                   && !lamport_violated
+                   && (sys_fuzz > 0.0)
+                  ) {
                        lfpdelta = result;
                        L_SUB(&lfpdelta, &lfp_prev);
                        L_SUBUF(&lfpdelta, 1);
@@ -262,6 +267,7 @@ get_systime(
                                            lfptoa(&lfpdelta, 9)));
                                result = lfp_prev;
                                L_ADDUF(&result, 1);
+                               sys_tsrounding++;
                        }
                }
                lfp_prev = result;
index 7b93dd65c36b37f0afde64f1d0711718f8329359..509864dcad39e5de3531c5d36c3b1eb168ea1c4f 100644 (file)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntp.keys.texi)
 #
-# It has been AutoGen-ed  May 19, 2017 at 12:32:59 PM by AutoGen 5.18.5
+# It has been AutoGen-ed  January 11, 2018 at 12:04:08 PM by AutoGen 5.18.5
 # From the definitions    ntp.keys.def
 # and the template file   agtexi-file.tpl
 @end ignore
@@ -45,16 +45,24 @@ where
 is a positive integer (between 1 and 65534),
 @kbd{type}
 is the message digest algorithm,
-and
 @kbd{key}
 is the key itself, and
 @kbd{opt_IP_list}
 is an optional comma-separated list of IPs
+where the
+@kbd{keyno}
+should be trusted.
 that are allowed to serve time.
+Each IP in
+@kbd{opt_IP_list}
+may contain an optional
+@code{/subnetbits}
+specification which identifies the number of bits for
+the desired subnet of trust.
 If
 @kbd{opt_IP_list}
 is empty,
-any properly-authenticated server message will be
+any properly-authenticated message will be
 accepted.
 
 The
index 61b64b654a75e3f55c392a9ffb0c8f25e9439f1b..12884b856936dd0aebf7b954b5713fa20caf593e 100644 (file)
@@ -1,8 +1,8 @@
-.TH ntp.keys 5man "19 May 2017" "4.2.8p10" "File Formats"
+.TH ntp.keys 5man "11 Jan 2018" "4.2.8p10" "File Formats"
 .\"
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.man)
 .\"
-.\"  It has been AutoGen-ed  May 19, 2017 at 12:33:02 PM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  January 11, 2018 at 12:04:09 PM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agman-file.tpl
 .Sh NAME
@@ -76,16 +76,24 @@ where
 is a positive integer (between 1 and 65534),
 \f\*[I-Font]type\f[]
 is the message digest algorithm,
-and
 \f\*[I-Font]key\f[]
 is the key itself, and
 \f\*[I-Font]opt_IP_list\f[]
 is an optional comma-separated list of IPs
+where the
+\f\*[I-Font]keyno\f[]
+should be trusted.
 that are allowed to serve time.
+Each IP in
+\f\*[I-Font]opt_IP_list\f[]
+may contain an optional
+\f\*[B-Font]/subnetbits\f[]
+specification which identifies the number of bits for
+the desired subnet of trust.
 If
 \f\*[I-Font]opt_IP_list\f[]
 is empty,
-any properly-authenticated server message will be
+any properly-authenticated message will be
 accepted.
 .sp \n(Ppu
 .ne 2
index d9cf51dc090e8924a28aed030c4d5e2d6dfeae31..15fa6b4f309f1f1604e7deb76a4f07d161e5960a 100644 (file)
@@ -1,9 +1,9 @@
-.Dd May 19 2017
+.Dd January 11 2018
 .Dt NTP_KEYS 5mdoc File Formats
 .Os Linux 3.2.0-4-686-pae
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  May 19, 2017 at 12:32:54 PM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  January 11, 2018 at 12:04:07 PM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agmdoc-file.tpl
 .Sh NAME
@@ -51,16 +51,24 @@ where
 is a positive integer (between 1 and 65534),
 .Ar type
 is the message digest algorithm,
-and
 .Ar key
 is the key itself, and
 .Ar opt_IP_list
 is an optional comma\-separated list of IPs
+where the
+.Ar keyno
+should be trusted.
 that are allowed to serve time.
+Each IP in
+.Ar opt_IP_list
+may contain an optional
+.Cm /subnetbits
+specification which identifies the number of bits for
+the desired subnet of trust.
 If
 .Ar opt_IP_list
 is empty,
-any properly\-authenticated server message will be
+any properly\-authenticated message will be
 accepted.
 .Pp
 The
index efe774c2e541ae84bdeb957b8abaf7ef35f8e0f5..88dd2aac3e086173d2f32caf209c76d970ed692b 100644 (file)
@@ -50,16 +50,24 @@ where
 is a positive integer (between 1 and 65534),
 .Ar type
 is the message digest algorithm,
-and
 .Ar key
 is the key itself, and
 .Ar opt_IP_list
 is an optional comma-separated list of IPs
+where the
+.Ar keyno
+should be trusted.
 that are allowed to serve time.
+Each IP in
+.Ar opt_IP_list
+may contain an optional
+.Cm /subnetbits
+specification which identifies the number of bits for
+the desired subnet of trust.
 If
 .Ar opt_IP_list
 is empty,
-any properly-authenticated server message will be
+any properly-authenticated message will be
 accepted.
 .Pp
 The
index cf1aa1162614de08439f0260b056776d7851ba8d..3459e38827e8a1f4c75e23cdbb8a83f16358b021 100644 (file)
@@ -1,8 +1,8 @@
-.TH ntp.keys 5 "19 May 2017" "4.2.8p10" "File Formats"
+.TH ntp.keys 5 "11 Jan 2018" "4.2.8p10" "File Formats"
 .\"
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.man)
 .\"
-.\"  It has been AutoGen-ed  May 19, 2017 at 12:33:02 PM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  January 11, 2018 at 12:04:09 PM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agman-file.tpl
 .Sh NAME
@@ -76,16 +76,24 @@ where
 is a positive integer (between 1 and 65534),
 \f\*[I-Font]type\f[]
 is the message digest algorithm,
-and
 \f\*[I-Font]key\f[]
 is the key itself, and
 \f\*[I-Font]opt_IP_list\f[]
 is an optional comma-separated list of IPs
+where the
+\f\*[I-Font]keyno\f[]
+should be trusted.
 that are allowed to serve time.
+Each IP in
+\f\*[I-Font]opt_IP_list\f[]
+may contain an optional
+\f\*[B-Font]/subnetbits\f[]
+specification which identifies the number of bits for
+the desired subnet of trust.
 If
 \f\*[I-Font]opt_IP_list\f[]
 is empty,
-any properly-authenticated server message will be
+any properly-authenticated message will be
 accepted.
 .sp \n(Ppu
 .ne 2
index f8c9cd325e911b445b392b9a077faee96ac3a85f..9e165a52c18bcf057559a8b6c18c5a797c96651c 100644 (file)
@@ -1,9 +1,9 @@
-.Dd May 19 2017
+.Dd January 11 2018
 .Dt NTP_KEYS 5 File Formats
 .Os Linux 3.2.0-4-686-pae
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  May 19, 2017 at 12:32:54 PM by AutoGen 5.18.5
+.\"  It has been AutoGen-ed  January 11, 2018 at 12:04:07 PM by AutoGen 5.18.5
 .\"  From the definitions    ntp.keys.def
 .\"  and the template file   agmdoc-file.tpl
 .Sh NAME
@@ -51,16 +51,24 @@ where
 is a positive integer (between 1 and 65534),
 .Ar type
 is the message digest algorithm,
-and
 .Ar key
 is the key itself, and
 .Ar opt_IP_list
 is an optional comma\-separated list of IPs
+where the
+.Ar keyno
+should be trusted.
 that are allowed to serve time.
+Each IP in
+.Ar opt_IP_list
+may contain an optional
+.Cm /subnetbits
+specification which identifies the number of bits for
+the desired subnet of trust.
 If
 .Ar opt_IP_list
 is empty,
-any properly\-authenticated server message will be
+any properly\-authenticated message will be
 accepted.
 .Pp
 The
index 57d65238c137a5d3316124916b38da6b62b1efa7..756a874c178a85bffcf5db8ac3d418fb90be9483 100644 (file)
@@ -176,56 +176,58 @@ static const struct ctl_proc control_codes[] = {
 #define        CS_SS_LIMITED           41
 #define        CS_SS_KODSENT           42
 #define        CS_SS_PROCESSED         43
-#define        CS_PEERADR              44
-#define        CS_PEERMODE             45
-#define        CS_BCASTDELAY           46
-#define        CS_AUTHDELAY            47
-#define        CS_AUTHKEYS             48
-#define        CS_AUTHFREEK            49
-#define        CS_AUTHKLOOKUPS         50
-#define        CS_AUTHKNOTFOUND        51
-#define        CS_AUTHKUNCACHED        52
-#define        CS_AUTHKEXPIRED         53
-#define        CS_AUTHENCRYPTS         54
-#define        CS_AUTHDECRYPTS         55
-#define        CS_AUTHRESET            56
-#define        CS_K_OFFSET             57
-#define        CS_K_FREQ               58
-#define        CS_K_MAXERR             59
-#define        CS_K_ESTERR             60
-#define        CS_K_STFLAGS            61
-#define        CS_K_TIMECONST          62
-#define        CS_K_PRECISION          63
-#define        CS_K_FREQTOL            64
-#define        CS_K_PPS_FREQ           65
-#define        CS_K_PPS_STABIL         66
-#define        CS_K_PPS_JITTER         67
-#define        CS_K_PPS_CALIBDUR       68
-#define        CS_K_PPS_CALIBS         69
-#define        CS_K_PPS_CALIBERRS      70
-#define        CS_K_PPS_JITEXC         71
-#define        CS_K_PPS_STBEXC         72
+#define        CS_SS_LAMPORT           44
+#define        CS_SS_TSROUNDING        45
+#define        CS_PEERADR              46
+#define        CS_PEERMODE             47
+#define        CS_BCASTDELAY           48
+#define        CS_AUTHDELAY            49
+#define        CS_AUTHKEYS             50
+#define        CS_AUTHFREEK            51
+#define        CS_AUTHKLOOKUPS         52
+#define        CS_AUTHKNOTFOUND        53
+#define        CS_AUTHKUNCACHED        54
+#define        CS_AUTHKEXPIRED         55
+#define        CS_AUTHENCRYPTS         56
+#define        CS_AUTHDECRYPTS         57
+#define        CS_AUTHRESET            58
+#define        CS_K_OFFSET             59
+#define        CS_K_FREQ               60
+#define        CS_K_MAXERR             61
+#define        CS_K_ESTERR             62
+#define        CS_K_STFLAGS            63
+#define        CS_K_TIMECONST          64
+#define        CS_K_PRECISION          65
+#define        CS_K_FREQTOL            66
+#define        CS_K_PPS_FREQ           67
+#define        CS_K_PPS_STABIL         68
+#define        CS_K_PPS_JITTER         69
+#define        CS_K_PPS_CALIBDUR       70
+#define        CS_K_PPS_CALIBS         71
+#define        CS_K_PPS_CALIBERRS      72
+#define        CS_K_PPS_JITEXC         73
+#define        CS_K_PPS_STBEXC         74
 #define        CS_KERN_FIRST           CS_K_OFFSET
 #define        CS_KERN_LAST            CS_K_PPS_STBEXC
-#define        CS_IOSTATS_RESET        73
-#define        CS_TOTAL_RBUF           74
-#define        CS_FREE_RBUF            75
-#define        CS_USED_RBUF            76
-#define        CS_RBUF_LOWATER         77
-#define        CS_IO_DROPPED           78
-#define        CS_IO_IGNORED           79
-#define        CS_IO_RECEIVED          80
-#define        CS_IO_SENT              81
-#define        CS_IO_SENDFAILED        82
-#define        CS_IO_WAKEUPS           83
-#define        CS_IO_GOODWAKEUPS       84
-#define        CS_TIMERSTATS_RESET     85
-#define        CS_TIMER_OVERRUNS       86
-#define        CS_TIMER_XMTS           87
-#define        CS_FUZZ                 88
-#define        CS_WANDER_THRESH        89
-#define        CS_LEAPSMEARINTV        90
-#define        CS_LEAPSMEAROFFS        91
+#define        CS_IOSTATS_RESET        75
+#define        CS_TOTAL_RBUF           76
+#define        CS_FREE_RBUF            77
+#define        CS_USED_RBUF            78
+#define        CS_RBUF_LOWATER         79
+#define        CS_IO_DROPPED           80
+#define        CS_IO_IGNORED           81
+#define        CS_IO_RECEIVED          82
+#define        CS_IO_SENT              83
+#define        CS_IO_SENDFAILED        84
+#define        CS_IO_WAKEUPS           85
+#define        CS_IO_GOODWAKEUPS       86
+#define        CS_TIMERSTATS_RESET     87
+#define        CS_TIMER_OVERRUNS       88
+#define        CS_TIMER_XMTS           89
+#define        CS_FUZZ                 90
+#define        CS_WANDER_THRESH        91
+#define        CS_LEAPSMEARINTV        92
+#define        CS_LEAPSMEAROFFS        93
 #define        CS_MAX_NOAUTOKEY        CS_LEAPSMEAROFFS
 #ifdef AUTOKEY
 #define        CS_FLAGS                (1 + CS_MAX_NOAUTOKEY)
@@ -376,55 +378,57 @@ static const struct ctl_var sys_var[] = {
        { CS_SS_LIMITED,        RO, "ss_limited" },     /* 41 */
        { CS_SS_KODSENT,        RO, "ss_kodsent" },     /* 42 */
        { CS_SS_PROCESSED,      RO, "ss_processed" },   /* 43 */
-       { CS_PEERADR,           RO, "peeradr" },        /* 44 */
-       { CS_PEERMODE,          RO, "peermode" },       /* 45 */
-       { CS_BCASTDELAY,        RO, "bcastdelay" },     /* 46 */
-       { CS_AUTHDELAY,         RO, "authdelay" },      /* 47 */
-       { CS_AUTHKEYS,          RO, "authkeys" },       /* 48 */
-       { CS_AUTHFREEK,         RO, "authfreek" },      /* 49 */
-       { CS_AUTHKLOOKUPS,      RO, "authklookups" },   /* 50 */
-       { CS_AUTHKNOTFOUND,     RO, "authknotfound" },  /* 51 */
-       { CS_AUTHKUNCACHED,     RO, "authkuncached" },  /* 52 */
-       { CS_AUTHKEXPIRED,      RO, "authkexpired" },   /* 53 */
-       { CS_AUTHENCRYPTS,      RO, "authencrypts" },   /* 54 */
-       { CS_AUTHDECRYPTS,      RO, "authdecrypts" },   /* 55 */
-       { CS_AUTHRESET,         RO, "authreset" },      /* 56 */
-       { CS_K_OFFSET,          RO, "koffset" },        /* 57 */
-       { CS_K_FREQ,            RO, "kfreq" },          /* 58 */
-       { CS_K_MAXERR,          RO, "kmaxerr" },        /* 59 */
-       { CS_K_ESTERR,          RO, "kesterr" },        /* 60 */
-       { CS_K_STFLAGS,         RO, "kstflags" },       /* 61 */
-       { CS_K_TIMECONST,       RO, "ktimeconst" },     /* 62 */
-       { CS_K_PRECISION,       RO, "kprecis" },        /* 63 */
-       { CS_K_FREQTOL,         RO, "kfreqtol" },       /* 64 */
-       { CS_K_PPS_FREQ,        RO, "kppsfreq" },       /* 65 */
-       { CS_K_PPS_STABIL,      RO, "kppsstab" },       /* 66 */
-       { CS_K_PPS_JITTER,      RO, "kppsjitter" },     /* 67 */
-       { CS_K_PPS_CALIBDUR,    RO, "kppscalibdur" },   /* 68 */
-       { CS_K_PPS_CALIBS,      RO, "kppscalibs" },     /* 69 */
-       { CS_K_PPS_CALIBERRS,   RO, "kppscaliberrs" },  /* 70 */
-       { CS_K_PPS_JITEXC,      RO, "kppsjitexc" },     /* 71 */
-       { CS_K_PPS_STBEXC,      RO, "kppsstbexc" },     /* 72 */
-       { CS_IOSTATS_RESET,     RO, "iostats_reset" },  /* 73 */
-       { CS_TOTAL_RBUF,        RO, "total_rbuf" },     /* 74 */
-       { CS_FREE_RBUF,         RO, "free_rbuf" },      /* 75 */
-       { CS_USED_RBUF,         RO, "used_rbuf" },      /* 76 */
-       { CS_RBUF_LOWATER,      RO, "rbuf_lowater" },   /* 77 */
-       { CS_IO_DROPPED,        RO, "io_dropped" },     /* 78 */
-       { CS_IO_IGNORED,        RO, "io_ignored" },     /* 79 */
-       { CS_IO_RECEIVED,       RO, "io_received" },    /* 80 */
-       { CS_IO_SENT,           RO, "io_sent" },        /* 81 */
-       { CS_IO_SENDFAILED,     RO, "io_sendfailed" },  /* 82 */
-       { CS_IO_WAKEUPS,        RO, "io_wakeups" },     /* 83 */
-       { CS_IO_GOODWAKEUPS,    RO, "io_goodwakeups" }, /* 84 */
-       { CS_TIMERSTATS_RESET,  RO, "timerstats_reset" },/* 85 */
-       { CS_TIMER_OVERRUNS,    RO, "timer_overruns" }, /* 86 */
-       { CS_TIMER_XMTS,        RO, "timer_xmts" },     /* 87 */
-       { CS_FUZZ,              RO, "fuzz" },           /* 88 */
-       { CS_WANDER_THRESH,     RO, "clk_wander_threshold" }, /* 89 */
-
-       { CS_LEAPSMEARINTV,     RO, "leapsmearinterval" },    /* 90 */
-       { CS_LEAPSMEAROFFS,     RO, "leapsmearoffset" },      /* 91 */
+       { CS_SS_LAMPORT,        RO, "ss_lamport" },     /* 44 */
+       { CS_SS_TSROUNDING,     RO, "ss_tsrounding" },  /* 45 */
+       { CS_PEERADR,           RO, "peeradr" },        /* 46 */
+       { CS_PEERMODE,          RO, "peermode" },       /* 47 */
+       { CS_BCASTDELAY,        RO, "bcastdelay" },     /* 48 */
+       { CS_AUTHDELAY,         RO, "authdelay" },      /* 49 */
+       { CS_AUTHKEYS,          RO, "authkeys" },       /* 50 */
+       { CS_AUTHFREEK,         RO, "authfreek" },      /* 51 */
+       { CS_AUTHKLOOKUPS,      RO, "authklookups" },   /* 52 */
+       { CS_AUTHKNOTFOUND,     RO, "authknotfound" },  /* 53 */
+       { CS_AUTHKUNCACHED,     RO, "authkuncached" },  /* 54 */
+       { CS_AUTHKEXPIRED,      RO, "authkexpired" },   /* 55 */
+       { CS_AUTHENCRYPTS,      RO, "authencrypts" },   /* 56 */
+       { CS_AUTHDECRYPTS,      RO, "authdecrypts" },   /* 57 */
+       { CS_AUTHRESET,         RO, "authreset" },      /* 58 */
+       { CS_K_OFFSET,          RO, "koffset" },        /* 59 */
+       { CS_K_FREQ,            RO, "kfreq" },          /* 60 */
+       { CS_K_MAXERR,          RO, "kmaxerr" },        /* 61 */
+       { CS_K_ESTERR,          RO, "kesterr" },        /* 62 */
+       { CS_K_STFLAGS,         RO, "kstflags" },       /* 63 */
+       { CS_K_TIMECONST,       RO, "ktimeconst" },     /* 64 */
+       { CS_K_PRECISION,       RO, "kprecis" },        /* 65 */
+       { CS_K_FREQTOL,         RO, "kfreqtol" },       /* 66 */
+       { CS_K_PPS_FREQ,        RO, "kppsfreq" },       /* 67 */
+       { CS_K_PPS_STABIL,      RO, "kppsstab" },       /* 68 */
+       { CS_K_PPS_JITTER,      RO, "kppsjitter" },     /* 69 */
+       { CS_K_PPS_CALIBDUR,    RO, "kppscalibdur" },   /* 70 */
+       { CS_K_PPS_CALIBS,      RO, "kppscalibs" },     /* 71 */
+       { CS_K_PPS_CALIBERRS,   RO, "kppscaliberrs" },  /* 72 */
+       { CS_K_PPS_JITEXC,      RO, "kppsjitexc" },     /* 73 */
+       { CS_K_PPS_STBEXC,      RO, "kppsstbexc" },     /* 74 */
+       { CS_IOSTATS_RESET,     RO, "iostats_reset" },  /* 75 */
+       { CS_TOTAL_RBUF,        RO, "total_rbuf" },     /* 76 */
+       { CS_FREE_RBUF,         RO, "free_rbuf" },      /* 77 */
+       { CS_USED_RBUF,         RO, "used_rbuf" },      /* 78 */
+       { CS_RBUF_LOWATER,      RO, "rbuf_lowater" },   /* 79 */
+       { CS_IO_DROPPED,        RO, "io_dropped" },     /* 80 */
+       { CS_IO_IGNORED,        RO, "io_ignored" },     /* 81 */
+       { CS_IO_RECEIVED,       RO, "io_received" },    /* 82 */
+       { CS_IO_SENT,           RO, "io_sent" },        /* 83 */
+       { CS_IO_SENDFAILED,     RO, "io_sendfailed" },  /* 84 */
+       { CS_IO_WAKEUPS,        RO, "io_wakeups" },     /* 85 */
+       { CS_IO_GOODWAKEUPS,    RO, "io_goodwakeups" }, /* 86 */
+       { CS_TIMERSTATS_RESET,  RO, "timerstats_reset" },/* 87 */
+       { CS_TIMER_OVERRUNS,    RO, "timer_overruns" }, /* 88 */
+       { CS_TIMER_XMTS,        RO, "timer_xmts" },     /* 89 */
+       { CS_FUZZ,              RO, "fuzz" },           /* 90 */
+       { CS_WANDER_THRESH,     RO, "clk_wander_threshold" }, /* 91 */
+
+       { CS_LEAPSMEARINTV,     RO, "leapsmearinterval" },    /* 92 */
+       { CS_LEAPSMEAROFFS,     RO, "leapsmearoffset" },      /* 93 */
 
 #ifdef AUTOKEY
        { CS_FLAGS,     RO, "flags" },          /* 1 + CS_MAX_NOAUTOKEY */
@@ -436,7 +440,7 @@ static const struct ctl_var sys_var[] = {
        { CS_IDENT,     RO, "ident" },          /* 7 + CS_MAX_NOAUTOKEY */
        { CS_DIGEST,    RO, "digest" },         /* 8 + CS_MAX_NOAUTOKEY */
 #endif /* AUTOKEY */
-       { 0,            EOV, "" }               /* 87/95 */
+       { 0,            EOV, "" }               /* 94/102 */
 };
 
 static struct ctl_var *ext_sys_var = NULL;
@@ -2218,6 +2222,14 @@ ctl_putsys(
                ctl_putuint(sys_var[varid].text, sys_limitrejected);
                break;
 
+       case CS_SS_LAMPORT:
+               ctl_putuint(sys_var[varid].text, sys_lamport);
+               break;
+
+       case CS_SS_TSROUNDING:
+               ctl_putuint(sys_var[varid].text, sys_tsrounding);
+               break;
+
        case CS_SS_KODSENT:
                ctl_putuint(sys_var[varid].text, sys_kodsent);
                break;
index b445aeee27497d00ffe82907e736210daddc1174..a8a8c20c48b3462c8ccfa4cc45a1fe59938a99aa 100644 (file)
@@ -96,7 +96,7 @@
   #  define ONLY_SIM(a)        NULL
   #endif
 
-#line 100 "ntp_parser.c" /* yacc.c:339  */
+#line 100 "../../ntpd/ntp_parser.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
 
 /* In a future release of Bison, this section will be replaced
    by #include "y.tab.h".  */
-#ifndef YY_YY_NTP_PARSER_H_INCLUDED
-# define YY_YY_NTP_PARSER_H_INCLUDED
+#ifndef YY_YY_Y_TAB_H_INCLUDED
+# define YY_YY_Y_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 1
@@ -557,7 +557,7 @@ union YYSTYPE
        script_info *           Sim_script;
        script_info_fifo *      Sim_script_fifo;
 
-#line 561 "ntp_parser.c" /* yacc.c:355  */
+#line 561 "../../ntpd/ntp_parser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -570,11 +570,11 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
-#endif /* !YY_YY_NTP_PARSER_H_INCLUDED  */
+#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
 
-#line 578 "ntp_parser.c" /* yacc.c:358  */
+#line 578 "../../ntpd/ntp_parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -2131,7 +2131,7 @@ yyreduce:
                                ip_ctx->errpos.nline,
                                ip_ctx->errpos.ncol);
                }
-#line 2135 "ntp_parser.c" /* yacc.c:1646  */
+#line 2135 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -2142,37 +2142,37 @@ yyreduce:
                        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 2146 "ntp_parser.c" /* yacc.c:1646  */
+#line 2146 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 27:
 #line 437 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
-#line 2152 "ntp_parser.c" /* yacc.c:1646  */
+#line 2152 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 28:
 #line 442 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
-#line 2158 "ntp_parser.c" /* yacc.c:1646  */
+#line 2158 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 29:
 #line 447 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = AF_INET; }
-#line 2164 "ntp_parser.c" /* yacc.c:1646  */
+#line 2164 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 30:
 #line 449 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = AF_INET6; }
-#line 2170 "ntp_parser.c" /* yacc.c:1646  */
+#line 2170 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 31:
 #line 454 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 2176 "ntp_parser.c" /* yacc.c:1646  */
+#line 2176 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 32:
@@ -2181,31 +2181,31 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2185 "ntp_parser.c" /* yacc.c:1646  */
+#line 2185 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 36:
 #line 470 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2191 "ntp_parser.c" /* yacc.c:1646  */
+#line 2191 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 45:
 #line 486 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2197 "ntp_parser.c" /* yacc.c:1646  */
+#line 2197 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 46:
 #line 488 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2203 "ntp_parser.c" /* yacc.c:1646  */
+#line 2203 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 53:
 #line 502 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2209 "ntp_parser.c" /* yacc.c:1646  */
+#line 2209 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 55:
@@ -2217,31 +2217,31 @@ yyreduce:
                        if (my_node)
                                APPEND_G_FIFO(cfgt.unpeers, my_node);
                }
-#line 2221 "ntp_parser.c" /* yacc.c:1646  */
+#line 2221 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 58:
 #line 537 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.broadcastclient = 1; }
-#line 2227 "ntp_parser.c" /* yacc.c:1646  */
+#line 2227 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 59:
 #line 539 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
-#line 2233 "ntp_parser.c" /* yacc.c:1646  */
+#line 2233 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 60:
 #line 541 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
-#line 2239 "ntp_parser.c" /* yacc.c:1646  */
+#line 2239 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 61:
 #line 543 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.mdnstries = (yyvsp[0].Integer); }
-#line 2245 "ntp_parser.c" /* yacc.c:1646  */
+#line 2245 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 62:
@@ -2252,13 +2252,13 @@ yyreduce:
                        atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
                        APPEND_G_FIFO(cfgt.vars, atrv);
                }
-#line 2256 "ntp_parser.c" /* yacc.c:1646  */
+#line 2256 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 63:
 #line 561 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.control_key = (yyvsp[0].Integer); }
-#line 2262 "ntp_parser.c" /* yacc.c:1646  */
+#line 2262 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 64:
@@ -2267,31 +2267,31 @@ yyreduce:
                        cfgt.auth.cryptosw++;
                        CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
                }
-#line 2271 "ntp_parser.c" /* yacc.c:1646  */
+#line 2271 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 65:
 #line 568 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.keys = (yyvsp[0].String); }
-#line 2277 "ntp_parser.c" /* yacc.c:1646  */
+#line 2277 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 66:
 #line 570 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.keysdir = (yyvsp[0].String); }
-#line 2283 "ntp_parser.c" /* yacc.c:1646  */
+#line 2283 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 67:
 #line 572 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.request_key = (yyvsp[0].Integer); }
-#line 2289 "ntp_parser.c" /* yacc.c:1646  */
+#line 2289 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 68:
 #line 574 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.revoke = (yyvsp[0].Integer); }
-#line 2295 "ntp_parser.c" /* yacc.c:1646  */
+#line 2295 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 69:
@@ -2305,19 +2305,19 @@ yyreduce:
                        DESTROY_G_FIFO(cfgt.auth.trusted_key_list, destroy_attr_val); /* remove for append */
                        CONCAT_G_FIFOS(cfgt.auth.trusted_key_list, (yyvsp[0].Attr_val_fifo));
                }
-#line 2309 "ntp_parser.c" /* yacc.c:1646  */
+#line 2309 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 70:
 #line 586 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
-#line 2315 "ntp_parser.c" /* yacc.c:1646  */
+#line 2315 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 71:
 #line 591 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 2321 "ntp_parser.c" /* yacc.c:1646  */
+#line 2321 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 72:
@@ -2326,13 +2326,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2330 "ntp_parser.c" /* yacc.c:1646  */
+#line 2330 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 73:
 #line 601 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2336 "ntp_parser.c" /* yacc.c:1646  */
+#line 2336 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 74:
@@ -2345,13 +2345,13 @@ yyreduce:
                                "please use 'revoke %d' instead.",
                                cfgt.auth.revoke, cfgt.auth.revoke);
                }
-#line 2349 "ntp_parser.c" /* yacc.c:1646  */
+#line 2349 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 80:
 #line 628 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
-#line 2355 "ntp_parser.c" /* yacc.c:1646  */
+#line 2355 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 81:
@@ -2360,7 +2360,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2364 "ntp_parser.c" /* yacc.c:1646  */
+#line 2364 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 82:
@@ -2369,37 +2369,37 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2373 "ntp_parser.c" /* yacc.c:1646  */
+#line 2373 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 83:
 #line 646 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
-#line 2379 "ntp_parser.c" /* yacc.c:1646  */
+#line 2379 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 84:
 #line 648 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2385 "ntp_parser.c" /* yacc.c:1646  */
+#line 2385 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 85:
 #line 650 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
-#line 2391 "ntp_parser.c" /* yacc.c:1646  */
+#line 2391 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 86:
 #line 652 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Basedate, (yyvsp[0].Integer)); }
-#line 2397 "ntp_parser.c" /* yacc.c:1646  */
+#line 2397 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 98:
 #line 679 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
-#line 2403 "ntp_parser.c" /* yacc.c:1646  */
+#line 2403 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 99:
@@ -2412,7 +2412,7 @@ yyreduce:
                                yyerror("statsdir remote configuration ignored");
                        }
                }
-#line 2416 "ntp_parser.c" /* yacc.c:1646  */
+#line 2416 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 100:
@@ -2423,7 +2423,7 @@ yyreduce:
                        fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.filegen_opts, fgn);
                }
-#line 2427 "ntp_parser.c" /* yacc.c:1646  */
+#line 2427 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 101:
@@ -2432,7 +2432,7 @@ yyreduce:
                        (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 2436 "ntp_parser.c" /* yacc.c:1646  */
+#line 2436 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 102:
@@ -2441,13 +2441,13 @@ yyreduce:
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 2445 "ntp_parser.c" /* yacc.c:1646  */
+#line 2445 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 111:
 #line 724 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 2451 "ntp_parser.c" /* yacc.c:1646  */
+#line 2451 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 112:
@@ -2456,7 +2456,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2460 "ntp_parser.c" /* yacc.c:1646  */
+#line 2460 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 113:
@@ -2470,7 +2470,7 @@ yyreduce:
                                yyerror("filegen file remote config ignored");
                        }
                }
-#line 2474 "ntp_parser.c" /* yacc.c:1646  */
+#line 2474 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 114:
@@ -2483,7 +2483,7 @@ yyreduce:
                                yyerror("filegen type remote config ignored");
                        }
                }
-#line 2487 "ntp_parser.c" /* yacc.c:1646  */
+#line 2487 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 115:
@@ -2502,13 +2502,13 @@ yyreduce:
                                yyerror(err);
                        }
                }
-#line 2506 "ntp_parser.c" /* yacc.c:1646  */
+#line 2506 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 116:
 #line 768 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2512 "ntp_parser.c" /* yacc.c:1646  */
+#line 2512 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 128:
@@ -2516,7 +2516,7 @@ yyreduce:
     {
                        CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
                }
-#line 2520 "ntp_parser.c" /* yacc.c:1646  */
+#line 2520 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 129:
@@ -2524,7 +2524,7 @@ yyreduce:
     {
                        CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
                }
-#line 2528 "ntp_parser.c" /* yacc.c:1646  */
+#line 2528 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 130:
@@ -2536,7 +2536,7 @@ yyreduce:
                                                  lex_current()->curpos.nline);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2540 "ntp_parser.c" /* yacc.c:1646  */
+#line 2540 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 131:
@@ -2548,7 +2548,7 @@ yyreduce:
                                                  lex_current()->curpos.nline);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2552 "ntp_parser.c" /* yacc.c:1646  */
+#line 2552 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 132:
@@ -2560,7 +2560,7 @@ yyreduce:
                                                  lex_current()->curpos.nline);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2564 "ntp_parser.c" /* yacc.c:1646  */
+#line 2564 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 133:
@@ -2579,7 +2579,7 @@ yyreduce:
                                lex_current()->curpos.nline);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2583 "ntp_parser.c" /* yacc.c:1646  */
+#line 2583 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 134:
@@ -2598,7 +2598,7 @@ yyreduce:
                                lex_current()->curpos.nline);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2602 "ntp_parser.c" /* yacc.c:1646  */
+#line 2602 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 135:
@@ -2611,13 +2611,13 @@ yyreduce:
                                NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2615 "ntp_parser.c" /* yacc.c:1646  */
+#line 2615 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 136:
 #line 872 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Int_fifo) = NULL; }
-#line 2621 "ntp_parser.c" /* yacc.c:1646  */
+#line 2621 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 137:
@@ -2626,7 +2626,7 @@ yyreduce:
                        (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 2630 "ntp_parser.c" /* yacc.c:1646  */
+#line 2630 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 155:
@@ -2635,7 +2635,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2639 "ntp_parser.c" /* yacc.c:1646  */
+#line 2639 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 156:
@@ -2644,13 +2644,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2648 "ntp_parser.c" /* yacc.c:1646  */
+#line 2648 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 157:
 #line 915 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2654 "ntp_parser.c" /* yacc.c:1646  */
+#line 2654 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 161:
@@ -2659,7 +2659,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2663 "ntp_parser.c" /* yacc.c:1646  */
+#line 2663 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 162:
@@ -2668,13 +2668,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2672 "ntp_parser.c" /* yacc.c:1646  */
+#line 2672 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 163:
 #line 939 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2678 "ntp_parser.c" /* yacc.c:1646  */
+#line 2678 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 172:
@@ -2685,7 +2685,7 @@ yyreduce:
                        aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.fudge, aon);
                }
-#line 2689 "ntp_parser.c" /* yacc.c:1646  */
+#line 2689 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 173:
@@ -2694,7 +2694,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2698 "ntp_parser.c" /* yacc.c:1646  */
+#line 2698 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 174:
@@ -2703,19 +2703,19 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2707 "ntp_parser.c" /* yacc.c:1646  */
+#line 2707 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 175:
 #line 982 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2713 "ntp_parser.c" /* yacc.c:1646  */
+#line 2713 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 176:
 #line 984 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2719 "ntp_parser.c" /* yacc.c:1646  */
+#line 2719 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 177:
@@ -2728,25 +2728,25 @@ yyreduce:
                                yyerror("fudge factor: stratum value not in [0..16], ignored");
                        }
                }
-#line 2732 "ntp_parser.c" /* yacc.c:1646  */
+#line 2732 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 178:
 #line 995 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2738 "ntp_parser.c" /* yacc.c:1646  */
+#line 2738 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 179:
 #line 997 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2744 "ntp_parser.c" /* yacc.c:1646  */
+#line 2744 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 186:
 #line 1018 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
-#line 2750 "ntp_parser.c" /* yacc.c:1646  */
+#line 2750 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 187:
@@ -2755,7 +2755,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2759 "ntp_parser.c" /* yacc.c:1646  */
+#line 2759 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 188:
@@ -2764,25 +2764,25 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2768 "ntp_parser.c" /* yacc.c:1646  */
+#line 2768 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 189:
 #line 1036 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2774 "ntp_parser.c" /* yacc.c:1646  */
+#line 2774 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 193:
 #line 1052 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
-#line 2780 "ntp_parser.c" /* yacc.c:1646  */
+#line 2780 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 194:
 #line 1054 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
-#line 2786 "ntp_parser.c" /* yacc.c:1646  */
+#line 2786 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 195:
@@ -2791,7 +2791,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2795 "ntp_parser.c" /* yacc.c:1646  */
+#line 2795 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 196:
@@ -2800,13 +2800,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2804 "ntp_parser.c" /* yacc.c:1646  */
+#line 2804 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 197:
 #line 1072 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2810 "ntp_parser.c" /* yacc.c:1646  */
+#line 2810 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 198:
@@ -2824,13 +2824,13 @@ yyreduce:
                                yyerror(err_str);
                        }
                }
-#line 2828 "ntp_parser.c" /* yacc.c:1646  */
+#line 2828 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 211:
 #line 1113 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
-#line 2834 "ntp_parser.c" /* yacc.c:1646  */
+#line 2834 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 212:
@@ -2839,7 +2839,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2843 "ntp_parser.c" /* yacc.c:1646  */
+#line 2843 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 213:
@@ -2848,13 +2848,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2852 "ntp_parser.c" /* yacc.c:1646  */
+#line 2852 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 214:
 #line 1131 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2858 "ntp_parser.c" /* yacc.c:1646  */
+#line 2858 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 227:
@@ -2865,7 +2865,7 @@ yyreduce:
                        av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 2869 "ntp_parser.c" /* yacc.c:1646  */
+#line 2869 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 228:
@@ -2876,7 +2876,7 @@ yyreduce:
                        av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 2880 "ntp_parser.c" /* yacc.c:1646  */
+#line 2880 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 229:
@@ -2887,7 +2887,7 @@ yyreduce:
                        av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 2891 "ntp_parser.c" /* yacc.c:1646  */
+#line 2891 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 230:
@@ -2907,7 +2907,7 @@ yyreduce:
                                yyerror(error_text);
                        }
                }
-#line 2911 "ntp_parser.c" /* yacc.c:1646  */
+#line 2911 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 231:
@@ -2930,37 +2930,37 @@ yyreduce:
                        }
                        YYFREE((yyvsp[-1].String)); /* avoid leak */
                }
-#line 2934 "ntp_parser.c" /* yacc.c:1646  */
+#line 2934 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 232:
 #line 1212 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { lex_flush_stack(); }
-#line 2940 "ntp_parser.c" /* yacc.c:1646  */
+#line 2940 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 233:
 #line 1214 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { /* see drift_parm below for actions */ }
-#line 2946 "ntp_parser.c" /* yacc.c:1646  */
+#line 2946 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 234:
 #line 1216 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
-#line 2952 "ntp_parser.c" /* yacc.c:1646  */
+#line 2952 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 235:
 #line 1218 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
-#line 2958 "ntp_parser.c" /* yacc.c:1646  */
+#line 2958 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 236:
 #line 1220 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
-#line 2964 "ntp_parser.c" /* yacc.c:1646  */
+#line 2964 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 237:
@@ -2971,13 +2971,13 @@ yyreduce:
                        aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.trap, aon);
                }
-#line 2975 "ntp_parser.c" /* yacc.c:1646  */
+#line 2975 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 238:
 #line 1229 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
-#line 2981 "ntp_parser.c" /* yacc.c:1646  */
+#line 2981 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 243:
@@ -2987,7 +2987,7 @@ yyreduce:
                        yyerror("Built without LEAP_SMEAR support.");
 #endif
                }
-#line 2991 "ntp_parser.c" /* yacc.c:1646  */
+#line 2991 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 249:
@@ -3002,7 +3002,7 @@ yyreduce:
                                yyerror("driftfile remote configuration ignored");
                        }
                }
-#line 3006 "ntp_parser.c" /* yacc.c:1646  */
+#line 3006 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 250:
@@ -3019,7 +3019,7 @@ yyreduce:
                                yyerror("driftfile remote configuration ignored");
                        }
                }
-#line 3023 "ntp_parser.c" /* yacc.c:1646  */
+#line 3023 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 251:
@@ -3033,25 +3033,25 @@ yyreduce:
                                yyerror("driftfile remote configuration ignored");
                        }
                }
-#line 3037 "ntp_parser.c" /* yacc.c:1646  */
+#line 3037 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 252:
 #line 1301 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
-#line 3043 "ntp_parser.c" /* yacc.c:1646  */
+#line 3043 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 254:
 #line 1307 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = 0; }
-#line 3049 "ntp_parser.c" /* yacc.c:1646  */
+#line 3049 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 255:
 #line 1312 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val_fifo) = NULL; }
-#line 3055 "ntp_parser.c" /* yacc.c:1646  */
+#line 3055 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 256:
@@ -3060,13 +3060,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3064 "ntp_parser.c" /* yacc.c:1646  */
+#line 3064 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 257:
 #line 1322 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 3070 "ntp_parser.c" /* yacc.c:1646  */
+#line 3070 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 258:
@@ -3075,7 +3075,7 @@ yyreduce:
                        (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
                        destroy_address_node((yyvsp[0].Address_node));
                }
-#line 3079 "ntp_parser.c" /* yacc.c:1646  */
+#line 3079 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 259:
@@ -3084,7 +3084,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3088 "ntp_parser.c" /* yacc.c:1646  */
+#line 3088 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 260:
@@ -3093,7 +3093,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3097 "ntp_parser.c" /* yacc.c:1646  */
+#line 3097 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 261:
@@ -3119,7 +3119,7 @@ yyreduce:
                        (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
                        YYFREE((yyvsp[0].String));
                }
-#line 3123 "ntp_parser.c" /* yacc.c:1646  */
+#line 3123 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 262:
@@ -3130,7 +3130,7 @@ yyreduce:
                        nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
                        APPEND_G_FIFO(cfgt.nic_rules, nrn);
                }
-#line 3134 "ntp_parser.c" /* yacc.c:1646  */
+#line 3134 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 263:
@@ -3141,13 +3141,13 @@ yyreduce:
                        nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
                        APPEND_G_FIFO(cfgt.nic_rules, nrn);
                }
-#line 3145 "ntp_parser.c" /* yacc.c:1646  */
+#line 3145 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 273:
 #line 1405 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
-#line 3151 "ntp_parser.c" /* yacc.c:1646  */
+#line 3151 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 274:
@@ -3156,7 +3156,7 @@ yyreduce:
                        (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3160 "ntp_parser.c" /* yacc.c:1646  */
+#line 3160 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 275:
@@ -3165,7 +3165,7 @@ yyreduce:
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3169 "ntp_parser.c" /* yacc.c:1646  */
+#line 3169 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 283:
@@ -3174,7 +3174,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3178 "ntp_parser.c" /* yacc.c:1646  */
+#line 3178 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 284:
@@ -3183,7 +3183,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3187 "ntp_parser.c" /* yacc.c:1646  */
+#line 3187 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 285:
@@ -3192,7 +3192,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3196 "ntp_parser.c" /* yacc.c:1646  */
+#line 3196 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 286:
@@ -3201,19 +3201,19 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3205 "ntp_parser.c" /* yacc.c:1646  */
+#line 3205 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 287:
 #line 1465 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
-#line 3211 "ntp_parser.c" /* yacc.c:1646  */
+#line 3211 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 289:
 #line 1471 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
-#line 3217 "ntp_parser.c" /* yacc.c:1646  */
+#line 3217 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 290:
@@ -3222,7 +3222,7 @@ yyreduce:
                        (yyval.String_fifo) = (yyvsp[-1].String_fifo);
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
                }
-#line 3226 "ntp_parser.c" /* yacc.c:1646  */
+#line 3226 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 291:
@@ -3231,7 +3231,7 @@ yyreduce:
                        (yyval.String_fifo) = NULL;
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
                }
-#line 3235 "ntp_parser.c" /* yacc.c:1646  */
+#line 3235 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 292:
@@ -3240,7 +3240,7 @@ yyreduce:
                        (yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
                }
-#line 3244 "ntp_parser.c" /* yacc.c:1646  */
+#line 3244 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 293:
@@ -3249,7 +3249,7 @@ yyreduce:
                        (yyval.Address_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
                }
-#line 3253 "ntp_parser.c" /* yacc.c:1646  */
+#line 3253 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 294:
@@ -3262,31 +3262,31 @@ yyreduce:
                                (yyval.Integer) = (yyvsp[0].Integer);
                        }
                }
-#line 3266 "ntp_parser.c" /* yacc.c:1646  */
+#line 3266 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 295:
 #line 1510 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = 1; }
-#line 3272 "ntp_parser.c" /* yacc.c:1646  */
+#line 3272 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 296:
 #line 1511 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = 0; }
-#line 3278 "ntp_parser.c" /* yacc.c:1646  */
+#line 3278 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 297:
 #line 1515 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Double) = (double)(yyvsp[0].Integer); }
-#line 3284 "ntp_parser.c" /* yacc.c:1646  */
+#line 3284 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 299:
 #line 1521 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Integer) = basedate_eval_string((yyvsp[0].String)); YYFREE((yyvsp[0].String)); }
-#line 3290 "ntp_parser.c" /* yacc.c:1646  */
+#line 3290 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 300:
@@ -3300,13 +3300,13 @@ yyreduce:
                        /* Revert from ; to \n for end-of-command */
                        old_config_style = 1;
                }
-#line 3304 "ntp_parser.c" /* yacc.c:1646  */
+#line 3304 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 301:
 #line 1546 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { old_config_style = 0; }
-#line 3310 "ntp_parser.c" /* yacc.c:1646  */
+#line 3310 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 302:
@@ -3315,7 +3315,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3319 "ntp_parser.c" /* yacc.c:1646  */
+#line 3319 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 303:
@@ -3324,13 +3324,13 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3328 "ntp_parser.c" /* yacc.c:1646  */
+#line 3328 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 304:
 #line 1564 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
-#line 3334 "ntp_parser.c" /* yacc.c:1646  */
+#line 3334 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 307:
@@ -3339,7 +3339,7 @@ yyreduce:
                        (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
                }
-#line 3343 "ntp_parser.c" /* yacc.c:1646  */
+#line 3343 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 308:
@@ -3348,25 +3348,25 @@ yyreduce:
                        (yyval.Sim_server_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
                }
-#line 3352 "ntp_parser.c" /* yacc.c:1646  */
+#line 3352 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 309:
 #line 1587 "../../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 3358 "ntp_parser.c" /* yacc.c:1646  */
+#line 3358 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 310:
 #line 1592 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Double) = (yyvsp[-1].Double); }
-#line 3364 "ntp_parser.c" /* yacc.c:1646  */
+#line 3364 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 311:
 #line 1597 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Address_node) = (yyvsp[0].Address_node); }
-#line 3370 "ntp_parser.c" /* yacc.c:1646  */
+#line 3370 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 312:
@@ -3375,7 +3375,7 @@ yyreduce:
                        (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
                }
-#line 3379 "ntp_parser.c" /* yacc.c:1646  */
+#line 3379 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 313:
@@ -3384,13 +3384,13 @@ yyreduce:
                        (yyval.Sim_script_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
                }
-#line 3388 "ntp_parser.c" /* yacc.c:1646  */
+#line 3388 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 314:
 #line 1615 "../../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 3394 "ntp_parser.c" /* yacc.c:1646  */
+#line 3394 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 315:
@@ -3399,7 +3399,7 @@ yyreduce:
                        (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3403 "ntp_parser.c" /* yacc.c:1646  */
+#line 3403 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 316:
@@ -3408,17 +3408,17 @@ yyreduce:
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3412 "ntp_parser.c" /* yacc.c:1646  */
+#line 3412 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
   case 317:
 #line 1633 "../../ntpd/ntp_parser.y" /* yacc.c:1646  */
     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
-#line 3418 "ntp_parser.c" /* yacc.c:1646  */
+#line 3418 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 3422 "ntp_parser.c" /* yacc.c:1646  */
+#line 3422 "../../ntpd/ntp_parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
index 8e7f053d250c034718f485caba861b2511097ecb..ed0da4fe27844da7a72af9382767d81b8cb35a60 100644 (file)
@@ -30,8 +30,8 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_NTP_PARSER_H_INCLUDED
-# define YY_YY_NTP_PARSER_H_INCLUDED
+#ifndef YY_YY_Y_TAB_H_INCLUDED
+# define YY_YY_Y_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 1
@@ -471,7 +471,7 @@ union YYSTYPE
        script_info *           Sim_script;
        script_info_fifo *      Sim_script_fifo;
 
-#line 475 "ntp_parser.h" /* yacc.c:1909  */
+#line 475 "../../ntpd/ntp_parser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -484,4 +484,4 @@ extern YYSTYPE yylval;
 
 int yyparse (void);
 
-#endif /* !YY_YY_NTP_PARSER_H_INCLUDED  */
+#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
index d0a402f5877b7da66f2097510be7857ca4373d82..ab2f936e2914bc6de8b7bffc39099f951d73081a 100644 (file)
@@ -4989,4 +4989,6 @@ proto_clr_stats(void)
        sys_badauth = 0;
        sys_limitrejected = 0;
        sys_kodsent = 0;
+       sys_lamport = 0;
+       sys_tsrounding = 0;
 }
index 1acbf80d46545f0521ea1e5c42e1ed213a3909e2..1463eaa94195f811e6f34a163d17766058d6f868 100644 (file)
@@ -1151,6 +1151,8 @@ sys_stats(
        ss->badauth = htonl((u_int32)sys_badauth);
        ss->limitrejected = htonl((u_int32)sys_limitrejected);
        ss->received = htonl((u_int32)sys_received);
+       ss->lamport = htonl((u_int32)sys_lamport);
+       ss->tsrounding = htonl((u_int32)sys_tsrounding);
        (void) more_pkt();
        flush_pkt();
 }
index 6117f5215f2c915d5fea1c1667a6b1b294410f71..01b46c5c60be282d8a9411639fc7627537e86c5e 100644 (file)
@@ -168,7 +168,7 @@ offsetof(v6_flag) = 56
 offsetof(unused4) = 60
 offsetof(peer6) = 64
 
-sizeof(struct info_sys_stats) = 44
+sizeof(struct info_sys_stats) = 52
 offsetof(timeup) = 0
 offsetof(timereset) = 4
 offsetof(denied) = 8
@@ -180,6 +180,8 @@ offsetof(processed) = 28
 offsetof(badauth) = 32
 offsetof(received) = 36
 offsetof(limitrejected) = 40
+offsetof(lamport) = 44
+offsetof(tsrounding) = 48
 
 sizeof(struct old_info_sys_stats) = 40
 offsetof(timeup) = 0
index 56aed3298d11f79e63f06406e4f0c8f06fb0bba0..acc175d197de6ab3585fa01d923155767b41e881 100644 (file)
@@ -3859,6 +3859,10 @@ sysstats(
        VDC_INIT("ss_limited",          "rate limited:         ", NTP_STR),
        VDC_INIT("ss_kodsent",          "KoD responses:        ", NTP_STR),
        VDC_INIT("ss_processed",        "processed for time:   ", NTP_STR),
+#if 0
+       VDC_INIT("ss_lamport",          "Lamport violations:    ", NTP_STR),
+       VDC_INIT("ss_tsrounding",       "bad timestamp rounding:", NTP_STR),
+#endif
        VDC_INIT(NULL,                  NULL,                     0)
     };