]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 3872] Ignore restrict mask for hostname.
authorDave Hart <hart@ntp.org>
Sat, 30 Sep 2023 03:53:06 +0000 (03:53 +0000)
committerDave Hart <hart@ntp.org>
Sat, 30 Sep 2023 03:53:06 +0000 (03:53 +0000)
[Bug 3868] Cannot restrict a pool peer.
[Bug 3855] ntpq lacks an equivalent to ntpdc's delrestrict.
Correct handling of not-found or unreadable or corrupt driftfile
  to match comments by starting protocol engine in FREQ mode.
Add missing printf-style arg in ntp_util.c.
Update ntp.conf documentation to add "delrestrict" and correct
  information about KoD rate limiting.

bk: 65179ba2xy6JnBVUxzObJNPiQuYDyQ

31 files changed:
ChangeLog
include/ntp.h
include/ntp_config.h
include/ntpd.h
include/vint64ops.h
libntp/vint64ops.c
ntpd/complete.conf.in
ntpd/invoke-ntp.conf.texi
ntpd/keyword-gen-utd
ntpd/keyword-gen.c
ntpd/ntp.conf.5man
ntpd/ntp.conf.5mdoc
ntpd/ntp.conf.def
ntpd/ntp.conf.html
ntpd/ntp.conf.man.in
ntpd/ntp.conf.mdoc.in
ntpd/ntp_config.c
ntpd/ntp_io.c
ntpd/ntp_keyword.h
ntpd/ntp_leapsec.c
ntpd/ntp_monitor.c
ntpd/ntp_parser.c
ntpd/ntp_parser.h
ntpd/ntp_parser.y
ntpd/ntp_peer.c
ntpd/ntp_proto.c
ntpd/ntp_request.c
ntpd/ntp_restrict.c
ntpd/ntp_util.c
ntpd/ntpd.c
tests/libntp/vi64ops.c

index a27b72b5ac4cdaa50f1114adcde9dbb89b15372f..552ca4f00399ccc533554aa47a5bfae289e37965 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,14 @@
 ---
 
+* [Bug 3872] Ignore restrict mask for hostname. <hart@ntp.org>
 * [Bug 3869] Remove long-gone "calldelay" & "crypto sign" from docs.
              Reported by PoolMUC@web.de. <hart@ntp.org>
+* [Bug 3868] Cannot restrict a pool peer. <hart@ntp.org>  Thanks to
+             Edward McGuire for tracking down the deficiency.
 * [Bug 3859] Use NotifyIpInterfaceChange on Windows ntpd. <hart@ntp.org>
 * [Bug 3856] Enable Edit & Continue debugging with Visual Studio.
              <hart@ntp.org>
+* [Bug 3855] ntpq lacks an equivalent to ntpdc's delrestrict. <hart@ntp.org>
 * [Bug 3854] ntpd 4.2.8p17 corrupts rawstats file with space in refid.
              <hart@ntp.org>
 * [Bug 3853] Clean up warnings with modern compilers. <hart@ntp.org>
@@ -34,6 +38,8 @@
              is disabled.  <burnicki@ntp.org>
 * [Bug 3825] Don't touch HTML files unless building inside a BK repo.
              Fix the script checkHtmlFileDates.  <burnicki@ntp.org>
+* Update ntp.conf documentation to add "delrestrict" and correct information
+  about KoD rate limiting.  <hart@ntp.org>
 * html/clockopt.html cleanup.  <stenn@ntp.org>
 * Add DSA, DSA-SHA, and SHA to tests/libntp/digests.c. <hart@ntp.org>
 * Provide ntpd thread names to debugger on Windows. <hart@ntp.org>
index 402085b2125f16d8e09e65caa0e0cbaf9dfe12da..9ff5a408f15dfa98dfcfe60a930288d43cc75558 100644 (file)
@@ -841,10 +841,10 @@ typedef struct restrict_u_tag     restrict_u;
 struct restrict_u_tag {
        restrict_u *    link;           /* link to next entry */
        u_int32         count;          /* number of packets matched */
+       u_int32         expire;         /* valid until current_time */
        u_short         rflags;         /* restrict (accesslist) flags */
-       u_short         mflags;         /* match flags */
+       u_int32         mflags;         /* match flags */
        short           ippeerlimit;    /* limit of associations matching */
-       u_long          expire;         /* valid until time */
        union {                         /* variant starting here */
                res_addr4 v4;
                res_addr6 v6;
@@ -872,10 +872,6 @@ struct r4addr_tag {
 #define        RES_NOPEER              0x0010  /* new association denied */
 #define        RES_NOEPEER             0x0020  /* new ephemeral association denied */
 #define RES_LIMITED            0x0040  /* packet rate exceeded */
-#define RES_FLAGS              (RES_IGNORE | RES_DONTSERVE |\
-                                   RES_DONTTRUST | RES_VERSION |\
-                                   RES_NOPEER | RES_NOEPEER | RES_LIMITED)
-
 #define        RES_NOQUERY             0x0080  /* mode 6/7 packet denied */
 #define        RES_NOMODIFY            0x0100  /* mode 6/7 modify denied */
 #define        RES_NOTRAP              0x0200  /* mode 6/7 set trap denied */
@@ -890,7 +886,10 @@ struct r4addr_tag {
 
 #define RES_UNUSED             0x0000  /* Unused flag bits (none left) */
 
-#define        RES_ALLFLAGS            (RES_FLAGS | RES_NOQUERY |      \
+#define        RES_ALLFLAGS            (RES_IGNORE | RES_DONTSERVE |   \
+                                RES_DONTTRUST | RES_VERSION |  \
+                                RES_NOPEER | RES_NOEPEER |     \
+                                RES_LIMITED | RES_NOQUERY |    \
                                 RES_NOMODIFY | RES_NOTRAP |    \
                                 RES_LPTRAP | RES_KOD |         \
                                 RES_MSSNTP | RES_FLAKE |       \
index dbb64e3a2eeee4920992666385a2f051cbd8f6a9..2fce70945035028d1da5dbf62e5cc1b53ad7ed59 100644 (file)
@@ -113,7 +113,9 @@ struct restrict_node_tag {
        address_node *  addr;
        address_node *  mask;
        attr_val_fifo * flag_tok_fifo;
+       int/*BOOL*/     remove;
        int             line_no;
+       int             column;
        short           ippeerlimit;
        short           srvfuzrft;
 };
@@ -317,10 +319,13 @@ void        destroy_attr_val(attr_val *node);
 filegen_node *create_filegen_node(int filegen_token,
                                  attr_val_fifo *options);
 string_node *create_string_node(char *str);
-restrict_node *create_restrict_node(address_node *addr,
-                                   address_node *mask,
-                                   short ippeerlimit,
-                                   attr_val_fifo *flags, int line_no);
+restrict_node *create_restrict_node(address_node *     addr,
+                                   address_node *      mask,
+                                   short               ippeerlimit,
+                                   attr_val_fifo *     flag_tok_fifo,
+                                   int/*BOOL*/         remove,
+                                   int                 nline,
+                                   int                 ncol);
 int_node *create_int_node(int val);
 addr_opts_node *create_addr_opts_node(address_node *addr,
                                      attr_val_fifo *options);
index c3ed6684eec406be242d65d145b5b9248448e264..28e2d05cd1d4d4cee553df09be5c01c069f5ac2c 100644 (file)
@@ -277,13 +277,14 @@ extern    void    reset_auth_stats(void);
 /* ntp_restrict.c */
 extern void    init_restrict   (void);
 extern void    restrictions    (sockaddr_u *, r4addr *);
-extern void    hack_restrict   (restrict_op op, sockaddr_u *resaddr,
-                                sockaddr_uresmask, short ippeerlimit,
+extern int/*BOOL*/hack_restrict(restrict_op op, sockaddr_u *resaddr,
+                                sockaddr_u *resmask, short ippeerlimit,
                                 u_short mflags, u_short rflags,
-                                u_long expire);
-extern void    restrict_source (sockaddr_u *, int, u_long);
-extern void    dump_restricts  (void);
+                                u_int32 expire);
+extern void    restrict_source (sockaddr_u *addr, int/*BOOL*/ remove,
+                                u_int32 lifetime);
 #ifdef DEBUG
+extern void    dump_restricts  (void);
 extern const char *resop_str   (restrict_op op);
 extern const char *rflags_str  (u_short rflags);
 extern const char *mflags_str  (u_short mflags);
index 888d342781fb35fd2a8f76a7fed9ff824d8cbc7b..50a8c4016264ef476454775f75507ae4f6055d03 100644 (file)
@@ -23,6 +23,6 @@ extern vint64 subv64i32(const vint64 * lhs, int32_t rhs);
 extern vint64 subv64u32(const vint64 * lhs, uint32_t rhs);
 
 /* parsing. works like strtoul() or strtoull() */
-extern vint64 strtouv64(char const * begp, char const ** const endp, int base);
+extern vint64 strtouv64(char * begp, char ** endp, int base);
 
 #endif /*!defined(VINT64OPS_H)*/
index 1d5087d95438df3c44b5e1f8116a8b0bb8ac342a..23c9f26dcfacb4375507178caedd2f0bb2dda841 100644 (file)
 
 #include "ntp_types.h"
 #include "ntp_fp.h"
+#include "ntp_malloc.h"
 #include "vint64ops.h"
 
 /* -------------------------------------------------------------------------*/
 
 vint64
 strtouv64(
-       char const *            begp,
-       char const ** const     endp,
-       int                     base
+       char *  begp,
+       char ** endp,
+       int     base
        )
 {
-       vint64  res;
-       u_char  digit;
-       int     sig, num;
-       const u_char *src;
+       vint64  res;
+       u_char  digit;
+       int     sig, num;
+       u_char *src;
        
        num = sig = 0;
-       src = (const u_char*)begp;
+       src = (u_char *)begp;
        while (isspace(*src))
                src++;
 
@@ -61,7 +62,7 @@ strtouv64(
                return res;
        }
        
-       memset(&res, 0, sizeof(res));
+       ZERO(res);
        while (*src) {
                if (isdigit(*src))
                        digit = *src - '0';
@@ -97,7 +98,7 @@ strtouv64(
        if (!num)
                errno = EINVAL;
        if (endp)
-               *endp = (const char *)src;
+               *endp = (char *)src;
        if (sig)
                M_NEG(res.D_s.hi, res.D_s.lo);
        return res;
index 77b619773fbfb58ddef71167657d3b871c34fda7..117e84b6f62eaee7bca853ac2e20c2b6d57f3c3f 100644 (file)
@@ -37,26 +37,31 @@ pool 0.north-america.pool.ntp.org. iburst preempt
 server 1.north-america.pool.ntp.org. iburst
 server -4 2.north-america.pool.ntp.org. minpoll 6 maxpoll 10 iburst
 server -6 ntp.davehart.net. minpoll 6 maxpoll 10 version 5 burst iburst
-peer -6 davehart.broker.freenet6.net. ident "autokey-group" xleave autokey
+peer -6 example.com. ident "autokey-group" xleave autokey
 peer -4 192.168.192.168 key 1 noselect
 server [fe80::123%1] xmtnonce
 broadcast 192.168.192.255
-manycastclient 224.0.1.1
-manycastclient ff05::101
+manycastclient 224.0.1.1 key 14 iburst
+manycastclient ff05::101 maxpoll 6 key 1
 manycastserver 224.0.1.1 ff05::101
 multicastclient 224.0.1.1 ff05::101
 mru maxage 64 mindepth 600 initalloc 600 initmem 16 incalloc 99 incmem 4 maxdepth 1024 maxmem 4096
 discard minimum 1 average 3 monitor 3000
 pollskewlist 3 1|2 4 3|4 default 6|7
-restrict default ippeerlimit -1
-restrict default ippeerlimit 0 nomodify limited kod noserve nomrulist
+restrict default
+restrict default ippeerlimit 0 nomodify limited kod nopeer noserve nomrulist
 restrict source ippeerlimit 1
 restrict source ippeerlimit 2 nomodify limited kod
-restrict trusted.host.name.example.com. ippeerlimit -1 nomodify
-restrict [fe80::1] mask [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff] ippeerlimit -1
-restrict 127.0.0.1 mask 255.255.255.255 ippeerlimit -1
-restrict 127.0.0.2 ippeerlimit -1 serverresponse fuzz
-restrict ::1 ippeerlimit -1
+restrict trusted.host.name.example.com. nomodify
+delrestrict trusted.host.name.example.com.
+restrict 192.0.2.66 epeer flake lowpriotrap mssntp noepeer noquery notrap notrust ntpport version
+delrestrict source 192.0.2.123
+delrestrict source [2001:db8::123]
+restrict fe80::1
+restrict 127.0.0.1
+restrict ::1
+restrict 192.0.2.2 serverresponse fuzz
+restrict fec0:: mask [ffff::] ignore
 interface drop ipv6
 interface ignore ipv4
 interface drop wildcard
@@ -68,5 +73,5 @@ phone "ATDT13034944774" "ATDT12027621594"
 setvar varnondef = "this variable does not have default after the value"
 setvar vanity = "name plate" default
 trap 127.0.0.1 interface 127.0.0.1 port 1234
-trap 127.0.0.2
+trap 192.0.2.2
 reset allpeers auth ctl io mem sys timer
index 6279bb2fa66a6904cf8a64ff8f03e0d5d7c28bb8..89f85287cbbb8e0a71a7515a2744658dfa097e02 100644 (file)
@@ -6,7 +6,7 @@
 #
 # EDIT THIS FILE WITH CAUTION  (invoke-ntp.conf.texi)
 #
-# It has been AutoGen-ed  September  5, 2023 at 07:46:41 PM by AutoGen 5.18.16
+# It has been AutoGen-ed  September 30, 2023 at 03:20:45 AM by AutoGen 5.18.16
 # From the definitions    ntp.conf.def
 # and the template file   agtexi-file.tpl
 @end ignore
@@ -1457,25 +1457,26 @@ by default the probability of replacing it with an
 entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
-@item @code{restrict} @code{address} @code{[@code{mask} @kbd{mask}]} @code{[@code{ippeerlimit} @kbd{int}]} @code{[@kbd{flag} @kbd{...}]}
+@item @code{restrict} @kbd{address} @code{[@code{mask} @kbd{mask}]} @code{[@code{ippeerlimit} @kbd{int}]} @code{[@kbd{flag} @kbd{...}]}
 The
 @kbd{address}
 argument expressed in
-dotted-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 @kbd{address}
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+@kbd{mask}
+is ignored and an individual host mask is
+used for each entry.
 The
 @kbd{mask}
-argument expressed in dotted-quad form defaults to
-@code{255.255.255.255},
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 @kbd{address}
 is treated as the address of an individual host.
-A default entry (address
-@code{0.0.0.0},
-mask
-@code{0.0.0.0})
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 @code{default},
@@ -1512,12 +1513,12 @@ and
 @code{ntpdc(1ntpdcmdoc)}
 queries.
 @item @code{kod}
-If this flag is set when an access violation occurs, a kiss-o'-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+If this flag is set when a rate violation occurs, a kiss-o'-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+@code{discard} @code{average}
+defaulting to 8s.  Otherwise, no response is sent.
 @item @code{limited}
 Deny service if the packet spacing violates the lower limits specified
 in the
@@ -1607,15 +1608,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 @code{ntpport}
-and
-@code{non-ntpport}
-may
-be specified.
+and the other does not.
 The
 @code{ntpport}
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 @item @code{serverresponse fuzz}
 When reponding to server requests,
@@ -1627,12 +1626,28 @@ Deny packets that do not match the current NTP version.
 
 Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host's interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+@code{manycastclient}
+when
+@code{manycast}
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
+@item @code{delrestrict} @code{[source]} @kbd{address}
+Remove a previously-set restriction.  This is useful for
+runtime configuration via
+@code{ntpq(1ntpqmdoc)}
+.  If
+@code{source}
+is specified, a dynamic restriction created from the 
+@code{restrict} @code{source}
+template at the time
+an association was added is removed.  Without
+@code{source}
+a static restriction is removed.
 @end table
 @node Automatic NTP Configuration Options
 @subsection Automatic NTP Configuration Options
index 0eb94005b839bb3a8e5dec125a20005d4a005222..60bc132ce064afd0bb72f1fd1a04c19c994137d8 100644 (file)
@@ -1 +1 @@
- *      Generated 2022-03-27 14:17:11 UTC        diff_ignore_line
+ *      Generated 2023-09-25 05:34:02 UTC        diff_ignore_line
index 7c498b2f555d29ef9b091b3ce1b9d64a36fe6344..014227a2ba083024481b485898ff7d8bb4f35080 100644 (file)
@@ -44,6 +44,7 @@ struct key_tok ntp_keywords[] = {
 { "broadcastdelay",    T_Broadcastdelay,       FOLLBY_TOKEN },
 { "checkhash",         T_Checkhash,            FOLLBY_TOKEN },
 { "ctl",               T_Ctl,                  FOLLBY_TOKEN },
+{ "delrestrict",       T_Delrestrict,          FOLLBY_TOKEN },
 { "device",            T_Device,               FOLLBY_STRING },
 { "disable",           T_Disable,              FOLLBY_TOKEN },
 { "driftfile",         T_Driftfile,            FOLLBY_STRING },
index 8b436000f546796bce1b438b0348ead0b44dd6a3..edbbc423031c81081f1884a0e403ce19596c0c0f 100644 (file)
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp.conf 5man "05 Sep 2023" "4.2.8p17" "File Formats"
+.TH ntp.conf 5man "30 Sep 2023" "4.2.8p17" "File Formats"
 .\"
 .\" EDIT THIS FILE WITH CAUTION (in-mem file)
 .\"
-.\" It has been AutoGen-ed September 5, 2023 at 07:46:44 PM by AutoGen 5.18.16
+.\" It has been AutoGen-ed September 30, 2023 at 03:20:48 AM by AutoGen 5.18.16
 .\" From the definitions ntp.conf.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
@@ -1658,25 +1658,26 @@ entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
 .TP 7
-.NOP \f\*[B-Font]restrict\f[] \f\*[B-Font]address\f[] [\f\*[B-Font]mask\f[] \f\*[I-Font]mask\f[]] [\f\*[B-Font]ippeerlimit\f[] \f\*[I-Font]int\f[]] [\f\*[I-Font]flag\f[] \f\*[I-Font]...\f[]]
+.NOP \f\*[B-Font]restrict\f[] \f\*[I-Font]address\f[] [\f\*[B-Font]mask\f[] \f\*[I-Font]mask\f[]] [\f\*[B-Font]ippeerlimit\f[] \f\*[I-Font]int\f[]] [\f\*[I-Font]flag\f[] \f\*[I-Font]...\f[]]
 The
 \f\*[I-Font]address\f[]
 argument expressed in
-dotted-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 \f\*[I-Font]address\f[]
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+\f\*[I-Font]mask\f[]
+is ignored and an individual host mask is
+used for each entry.
 The
 \f\*[I-Font]mask\f[]
-argument expressed in dotted-quad form defaults to
-\f\*[B-Font]255.255.255.255\f[],
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 \f\*[I-Font]address\f[]
 is treated as the address of an individual host.
-A default entry (address
-\f\*[B-Font]0.0.0.0\f[],
-mask
-\f\*[B-Font]0.0.0.0\f[])
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 \f\*[B-Font]default\f[],
@@ -1715,12 +1716,12 @@ and
 queries.
 .TP 7
 .NOP \f\*[B-Font]kod\f[]
-If this flag is set when an access violation occurs, a kiss-o'-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+If this flag is set when a rate violation occurs, a kiss-o'-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+\f\*[B-Font]discard\f[] \f\*[B-Font]average\f[]
+defaulting to 8s.  Otherwise, no response is sent.
 .TP 7
 .NOP \f\*[B-Font]limited\f[]
 Deny service if the packet spacing violates the lower limits specified
@@ -1820,15 +1821,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 \f\*[B-Font]ntpport\f[]
-and
-\f\*[B-Font]non-ntpport\f[]
-may
-be specified.
+and the other does not.
 The
 \f\*[B-Font]ntpport\f[]
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 .TP 7
 .NOP \f\*[B-Font]serverresponse fuzz\f[]
@@ -1844,12 +1843,29 @@ Deny packets that do not match the current NTP version.
 
 Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host's interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+\f\*[B-Font]manycastclient\f[]
+when
+\f\*[B-Font]manycast\f[]
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
+.TP 7
+.NOP \f\*[B-Font]delrestrict\f[] [source] \f\*[I-Font]address\f[]
+Remove a previously-set restriction.  This is useful for
+runtime configuration via
+\fCntpq\f[]\fR(1ntpqmdoc)\f[]
+.  If
+\f\*[B-Font]source\f[]
+is specified, a dynamic restriction created from the 
+\f\*[B-Font]restrict\f[] \f\*[B-Font]source\f[]
+template at the time
+an association was added is removed.  Without
+\f\*[B-Font]source\f[]
+a static restriction is removed.
 .PP
 .SH Automatic NTP Configuration Options
 .SS Manycasting
index fec5218b4d70c49daf9445d4842ff936e9928162..a92096496ecddaf3663c612d3db104cf3092c3fe 100644 (file)
@@ -1,9 +1,9 @@
-.Dd September 5 2023
+.Dd September 30 2023
 .Dt NTP_CONF 5mdoc File Formats
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  September  5, 2023 at 07:46:38 PM by AutoGen 5.18.16
+.\"  It has been AutoGen-ed  September 30, 2023 at 03:20:43 AM by AutoGen 5.18.16
 .\"  From the definitions    ntp.conf.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -1525,7 +1525,8 @@ by default the probability of replacing it with an
 entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
-.It Xo Ic restrict address
+.It Xo Ic restrict
+.Ar address
 .Op Cm mask Ar mask
 .Op Cm ippeerlimit Ar int
 .Op Ar flag ...
@@ -1533,21 +1534,22 @@ than 3000 seconds old, the probability is 100%.
 The
 .Ar address
 argument expressed in
-dotted\-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 .Ar address
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+.Ar mask
+is ignored and an individual host mask is
+used for each entry.
 The
 .Ar mask
-argument expressed in dotted\-quad form defaults to
-.Cm 255.255.255.255 ,
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 .Ar address
 is treated as the address of an individual host.
-A default entry (address
-.Cm 0.0.0.0 ,
-mask
-.Cm 0.0.0.0 )
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 .Cm default ,
@@ -1584,12 +1586,12 @@ and
 .Xr ntpdc 1ntpdcmdoc
 queries.
 .It Cm kod
-If this flag is set when an access violation occurs, a kiss\-o'\-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+If this flag is set when a rate violation occurs, a kiss\-o'\-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+.Cm discard average
+defaulting to 8s.  Otherwise, no response is sent.
 .It Cm limited
 Deny service if the packet spacing violates the lower limits specified
 in the
@@ -1679,15 +1681,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 .Cm ntpport
-and
-.Cm non\-ntpport
-may
-be specified.
+and the other does not.
 The
 .Cm ntpport
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 .It Ic "serverresponse fuzz"
 When reponding to server requests,
@@ -1699,12 +1699,31 @@ Deny packets that do not match the current NTP version.
 .Pp
 Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host's interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+.Cm manycastclient
+when
+.Cm manycast
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
+.It Xo Ic delrestrict
+.Op source
+.Ar address
+.Xc
+Remove a previously\-set restriction.  This is useful for
+runtime configuration via
+.Xr ntpq 1ntpqmdoc
+.  If
+.Cm source
+is specified, a dynamic restriction created from the 
+.Cm restrict source
+template at the time
+an association was added is removed.  Without
+.Cm source
+a static restriction is removed.
 .El
 .Sh Automatic NTP Configuration Options
 .Ss Manycasting
index 73a6993feb847881afcc2f561f1297ba5138206d..444e3b35e3516adb82285e3f3f4363f1fa87080f 100644 (file)
@@ -1528,7 +1528,8 @@ by default the probability of replacing it with an
 entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
-.It Xo Ic restrict address
+.It Xo Ic restrict
+.Ar address
 .Op Cm mask Ar mask
 .Op Cm ippeerlimit Ar int
 .Op Ar flag ...
@@ -1536,21 +1537,22 @@ than 3000 seconds old, the probability is 100%.
 The
 .Ar address
 argument expressed in
-dotted-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 .Ar address
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+.Ar mask
+is ignored and an individual host mask is
+used for each entry.
 The
 .Ar mask
-argument expressed in dotted-quad form defaults to
-.Cm 255.255.255.255 ,
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 .Ar address
 is treated as the address of an individual host.
-A default entry (address
-.Cm 0.0.0.0 ,
-mask
-.Cm 0.0.0.0 )
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 .Cm default ,
@@ -1587,12 +1589,12 @@ and
 .Xr ntpdc 1ntpdcmdoc
 queries.
 .It Cm kod
-If this flag is set when an access violation occurs, a kiss-o'-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+If this flag is set when a rate violation occurs, a kiss-o'-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+.Cm discard average
+defaulting to 8s.  Otherwise, no response is sent.
 .It Cm limited
 Deny service if the packet spacing violates the lower limits specified
 in the
@@ -1682,15 +1684,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 .Cm ntpport
-and
-.Cm non-ntpport
-may
-be specified.
+and the other does not.
 The
 .Cm ntpport
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 .It Ic "serverresponse fuzz"
 When reponding to server requests,
@@ -1702,12 +1702,31 @@ Deny packets that do not match the current NTP version.
 .Pp
 Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host's interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+.Cm manycastclient
+when
+.Cm manycast
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
+.It Xo Ic delrestrict
+.Op source
+.Ar address
+.Xc
+Remove a previously-set restriction.  This is useful for
+runtime configuration via
+.Xr ntpq 1ntpqmdoc
+.  If
+.Cm source
+is specified, a dynamic restriction created from the 
+.Cm restrict source
+template at the time
+an association was added is removed.  Without
+.Cm source
+a static restriction is removed.
 .El
 .Sh Automatic NTP Configuration Options
 .Ss Manycasting
index 3785a5c258506c16931e99725f39df896321f16b..e084fcf90222ddadbb8121f9a0df03146a89dcb8 100644 (file)
@@ -1649,25 +1649,26 @@ entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
 </p></dd>
-<dt><code>restrict</code> <code>address</code> <code>[<code>mask</code> <kbd>mask</kbd>]</code> <code>[<code>ippeerlimit</code> <kbd>int</kbd>]</code> <code>[<kbd>flag</kbd> <kbd>...</kbd>]</code></dt>
+<dt><code>restrict</code> <kbd>address</kbd> <code>[<code>mask</code> <kbd>mask</kbd>]</code> <code>[<code>ippeerlimit</code> <kbd>int</kbd>]</code> <code>[<kbd>flag</kbd> <kbd>...</kbd>]</code></dt>
 <dd><p>The
 <kbd>address</kbd>
 argument expressed in
-dotted-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 <kbd>address</kbd>
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+<kbd>mask</kbd>
+is ignored and an individual host mask is
+used for each entry.
 The
 <kbd>mask</kbd>
-argument expressed in dotted-quad form defaults to
-<code>255.255.255.255</code>,
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 <kbd>address</kbd>
 is treated as the address of an individual host.
-A default entry (address
-<code>0.0.0.0</code>,
-mask
-<code>0.0.0.0</code>)
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 <code>default</code>,
@@ -1705,12 +1706,12 @@ and
 queries.
 </p></dd>
 <dt><code>kod</code></dt>
-<dd><p>If this flag is set when an access violation occurs, a kiss-o&rsquo;-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+<dd><p>If this flag is set when a rate violation occurs, a kiss-o&rsquo;-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+<code>discard</code> <code>average</code>
+defaulting to 8s.  Otherwise, no response is sent.
 </p></dd>
 <dt><code>limited</code></dt>
 <dd><p>Deny service if the packet spacing violates the lower limits specified
@@ -1810,15 +1811,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 <code>ntpport</code>
-and
-<code>non-ntpport</code>
-may
-be specified.
+and the other does not.
 The
 <code>ntpport</code>
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 </p></dd>
 <dt><code>serverresponse fuzz</code></dt>
@@ -1833,13 +1832,30 @@ fuzz the low order bits of the
 
 <p>Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host&rsquo;s interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+<code>manycastclient</code>
+when
+<code>manycast</code>
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
 </p></dd>
+<dt><code>delrestrict</code> <code>[source]</code> <kbd>address</kbd></dt>
+<dd><p>Remove a previously-set restriction.  This is useful for
+runtime configuration via
+<code>ntpq(1ntpqmdoc)</code>
+.  If
+<code>source</code>
+is specified, a dynamic restriction created from the 
+<code>restrict</code> <code>source</code>
+template at the time
+an association was added is removed.  Without
+<code>source</code>
+a static restriction is removed.
+</p></dd>
 </dl>
 <hr>
 <span id="Automatic-NTP-Configuration-Options"></span><div class="header">
index 06e8f68e56119dd67f378010f4071bf4d1fa43c4..7d85e612e80f62ae5fe2ad458b534aea2092e7ef 100644 (file)
 .ds B-Font B
 .ds I-Font I
 .ds R-Font R
-.TH ntp.conf 5 "05 Sep 2023" "4.2.8p17" "File Formats"
+.TH ntp.conf 5 "30 Sep 2023" "4.2.8p17" "File Formats"
 .\"
 .\" EDIT THIS FILE WITH CAUTION (in-mem file)
 .\"
-.\" It has been AutoGen-ed September 5, 2023 at 07:46:44 PM by AutoGen 5.18.16
+.\" It has been AutoGen-ed September 30, 2023 at 03:20:48 AM by AutoGen 5.18.16
 .\" From the definitions ntp.conf.def
 .\" and the template file agman-cmd.tpl
 .SH NAME
@@ -1658,25 +1658,26 @@ entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
 .TP 7
-.NOP \f\*[B-Font]restrict\f[] \f\*[B-Font]address\f[] [\f\*[B-Font]mask\f[] \f\*[I-Font]mask\f[]] [\f\*[B-Font]ippeerlimit\f[] \f\*[I-Font]int\f[]] [\f\*[I-Font]flag\f[] \f\*[I-Font]...\f[]]
+.NOP \f\*[B-Font]restrict\f[] \f\*[I-Font]address\f[] [\f\*[B-Font]mask\f[] \f\*[I-Font]mask\f[]] [\f\*[B-Font]ippeerlimit\f[] \f\*[I-Font]int\f[]] [\f\*[I-Font]flag\f[] \f\*[I-Font]...\f[]]
 The
 \f\*[I-Font]address\f[]
 argument expressed in
-dotted-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 \f\*[I-Font]address\f[]
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+\f\*[I-Font]mask\f[]
+is ignored and an individual host mask is
+used for each entry.
 The
 \f\*[I-Font]mask\f[]
-argument expressed in dotted-quad form defaults to
-\f\*[B-Font]255.255.255.255\f[],
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 \f\*[I-Font]address\f[]
 is treated as the address of an individual host.
-A default entry (address
-\f\*[B-Font]0.0.0.0\f[],
-mask
-\f\*[B-Font]0.0.0.0\f[])
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 \f\*[B-Font]default\f[],
@@ -1715,12 +1716,12 @@ and
 queries.
 .TP 7
 .NOP \f\*[B-Font]kod\f[]
-If this flag is set when an access violation occurs, a kiss-o'-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+If this flag is set when a rate violation occurs, a kiss-o'-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+\f\*[B-Font]discard\f[] \f\*[B-Font]average\f[]
+defaulting to 8s.  Otherwise, no response is sent.
 .TP 7
 .NOP \f\*[B-Font]limited\f[]
 Deny service if the packet spacing violates the lower limits specified
@@ -1820,15 +1821,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 \f\*[B-Font]ntpport\f[]
-and
-\f\*[B-Font]non-ntpport\f[]
-may
-be specified.
+and the other does not.
 The
 \f\*[B-Font]ntpport\f[]
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 .TP 7
 .NOP \f\*[B-Font]serverresponse fuzz\f[]
@@ -1844,12 +1843,29 @@ Deny packets that do not match the current NTP version.
 
 Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host's interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+\f\*[B-Font]manycastclient\f[]
+when
+\f\*[B-Font]manycast\f[]
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
+.TP 7
+.NOP \f\*[B-Font]delrestrict\f[] [source] \f\*[I-Font]address\f[]
+Remove a previously-set restriction.  This is useful for
+runtime configuration via
+\fCntpq\f[]\fR(@NTPQ_MS@)\f[]
+.  If
+\f\*[B-Font]source\f[]
+is specified, a dynamic restriction created from the 
+\f\*[B-Font]restrict\f[] \f\*[B-Font]source\f[]
+template at the time
+an association was added is removed.  Without
+\f\*[B-Font]source\f[]
+a static restriction is removed.
 .PP
 .SH Automatic NTP Configuration Options
 .SS Manycasting
index 3172060653ac8c014c3aa9d18eb2ce70e261bf2c..6b8b5e607709c8348d064e85e87b23c0da3e0af1 100644 (file)
@@ -1,9 +1,9 @@
-.Dd September 5 2023
+.Dd September 30 2023
 .Dt NTP_CONF 5 File Formats
 .Os
 .\"  EDIT THIS FILE WITH CAUTION  (ntp.mdoc)
 .\"
-.\"  It has been AutoGen-ed  September  5, 2023 at 07:46:38 PM by AutoGen 5.18.16
+.\"  It has been AutoGen-ed  September 30, 2023 at 03:20:43 AM by AutoGen 5.18.16
 .\"  From the definitions    ntp.conf.def
 .\"  and the template file   agmdoc-cmd.tpl
 .Sh NAME
@@ -1525,7 +1525,8 @@ by default the probability of replacing it with an
 entry representing the client request being processed
 now is 10%. Conversely, if the oldest entry is more
 than 3000 seconds old, the probability is 100%.
-.It Xo Ic restrict address
+.It Xo Ic restrict
+.Ar address
 .Op Cm mask Ar mask
 .Op Cm ippeerlimit Ar int
 .Op Ar flag ...
@@ -1533,21 +1534,22 @@ than 3000 seconds old, the probability is 100%.
 The
 .Ar address
 argument expressed in
-dotted\-quad form is the address of a host or network.
+numeric form is the address of a host or network.
 Alternatively, the
 .Ar address
-argument can be a valid host DNS name.
+argument can be a valid hostname.  When a hostname
+is provided, a restriction entry is created for each
+address the hostname resolves to, and any provided
+.Ar mask
+is ignored and an individual host mask is
+used for each entry.
 The
 .Ar mask
-argument expressed in dotted\-quad form defaults to
-.Cm 255.255.255.255 ,
-meaning that the
+argument expressed in numeric form defaults to
+all bits lit, meaning that the
 .Ar address
 is treated as the address of an individual host.
-A default entry (address
-.Cm 0.0.0.0 ,
-mask
-.Cm 0.0.0.0 )
+A default entry with address and mask all zeroes
 is always included and is always the first entry in the list.
 Note that text string
 .Cm default ,
@@ -1584,12 +1586,12 @@ and
 .Xr ntpdc @NTPDC_MS@
 queries.
 .It Cm kod
-If this flag is set when an access violation occurs, a kiss\-o'\-death
-(KoD) packet is sent.
-KoD packets are rate limited to no more than one
-per second.
-If another KoD packet occurs within one second after the
-last one, the packet is dropped.
+If this flag is set when a rate violation occurs, a kiss\-o'\-death
+(KoD) packet is sometimes sent.
+KoD packets are rate limited to no more than one per minimum
+average interpacket spacing, set by
+.Cm discard average
+defaulting to 8s.  Otherwise, no response is sent.
 .It Cm limited
 Deny service if the packet spacing violates the lower limits specified
 in the
@@ -1679,15 +1681,13 @@ restriction flag.
 Its presence causes the restriction entry to be
 matched only if the source port in the packet is the standard NTP
 UDP port (123).
-Both
+There can be two restriction entries with the same IP address if
+one specifies
 .Cm ntpport
-and
-.Cm non\-ntpport
-may
-be specified.
+and the other does not.
 The
 .Cm ntpport
-is considered more specific and
+entry is considered more specific and
 is sorted later in the list.
 .It Ic "serverresponse fuzz"
 When reponding to server requests,
@@ -1699,12 +1699,31 @@ Deny packets that do not match the current NTP version.
 .Pp
 Default restriction list entries with the flags ignore, interface,
 ntpport, for each of the local host's interface addresses are
-inserted into the table at startup to prevent the server
-from attempting to synchronize to its own time.
+inserted into the table at startup to prevent ntpd
+from attempting to synchronize to itself, such as with
+.Cm manycastclient
+when
+.Cm manycast
+is also specified with the same multicast address.
 A default entry is also always present, though if it is
 otherwise unconfigured; no flags are associated
 with the default entry (i.e., everything besides your own
 NTP server is unrestricted).
+.It Xo Ic delrestrict
+.Op source
+.Ar address
+.Xc
+Remove a previously\-set restriction.  This is useful for
+runtime configuration via
+.Xr ntpq @NTPQ_MS@
+.  If
+.Cm source
+is specified, a dynamic restriction created from the 
+.Cm restrict source
+template at the time
+an association was added is removed.  Without
+.Cm source
+a static restriction is removed.
 .El
 .Sh Automatic NTP Configuration Options
 .Ss Manycasting
index ad456b42be31347d74c6a7acee7ead2540e73b4e..37c9c482010e72732795084891bf35a186af3b2a 100644 (file)
@@ -377,12 +377,9 @@ static u_int32 get_match(const char *, struct masks *);
 static u_int32 get_logmask(const char *);
 static int/*BOOL*/ is_refclk_addr(const address_node * addr);
 
-#ifndef SIM
 static int getnetnum(const char *num, sockaddr_u *addr, int complain,
                     enum gnn_type a_type);
 
-#endif
-
 #if defined(__GNUC__) /* this covers CLANG, too */
 static void  __attribute__((__noreturn__,format(printf,1,2))) fatal_error(const char *fmt, ...)
 #elif defined(_MSC_VER)
@@ -1002,18 +999,24 @@ dump_config_tree(
        for (rest_node = HEAD_PFIFO(ptree->restrict_opts);
             rest_node != NULL;
             rest_node = rest_node->link) {
-               int is_default = 0;
+               int/*BOOL*/ is_default = FALSE;
+               int/*BOOL*/ omit_mask;
+               sockaddr_u mask;
+               sockaddr_u onesmask;
 
+               s = NULL;
+               atrv = HEAD_PFIFO(rest_node->flag_tok_fifo);
+               for (; atrv != NULL; atrv = atrv->link) {
+                       if (   T_Integer == atrv->type
+                           && T_Source == atrv->attr) {
+                               s = keyword(T_Source);
+                               break;
+                       }
+               }
                if (NULL == rest_node->addr) {
-                       s = "default";
-                       /* Don't need to set is_default=1 here */
-                       atrv = HEAD_PFIFO(rest_node->flag_tok_fifo);
-                       for ( ; atrv != NULL; atrv = atrv->link) {
-                               if (   T_Integer == atrv->type
-                                   && T_Source == atrv->attr) {
-                                       s = "source";
-                                       break;
-                               }
+                       if (NULL == s) {
+                               s = keyword(T_Default);
+                               /* Don't need to set is_default here */
                        }
                } else {
                        const char *ap = rest_node->addr->address;
@@ -1023,25 +1026,51 @@ dump_config_tree(
                                mp = rest_node->mask->address;
 
                        if (   rest_node->addr->type == AF_INET
-                           && !strcmp(ap, "0.0.0.0")
-                           && !strcmp(mp, "0.0.0.0")) {
-                               is_default = 1;
+                           && !strcmp(mp, "0.0.0.0")
+                           && !strcmp(ap, mp)) {
+                               is_default = TRUE;
                                s = "-4 default";
                        } else if (   rest_node->mask
                                   && rest_node->mask->type == AF_INET6
-                                  && !strcmp(ap, "::")
-                                  && !strcmp(mp, "::")) {
-                               is_default = 1;
+                                  && !strcmp(mp, "::")
+                                  && !strcmp(ap, mp)) {
+                               is_default = TRUE;
                                s = "-6 default";
                        } else {
-                               s = ap;
+                               if (NULL == s) {
+                                       s = ap;
+                               } else {
+                                       LIB_GETBUF(s1);
+                                       snprintf(s1, LIB_BUFLENGTH,
+                                                "%s %s",
+                                                keyword(T_Source), ap);
+                                       s = s1;
+                               }
+                       }
+               }
+               fprintf(df, "%s %s",
+                       keyword(rest_node->remove
+                                       ? T_Delrestrict
+                                       : T_Restrict),
+                       s);
+               if (rest_node->mask != NULL && !is_default) {
+                       ZERO(mask);
+                       AF(&mask) = AF_UNSPEC;
+                       omit_mask = (0 != getnetnum(rest_node->mask->address,
+                                                   &mask, 0, t_UNK));
+                       if (omit_mask) {
+                               SET_HOSTMASK(&onesmask, AF(&mask));
+                               omit_mask = SOCK_EQ(&mask, &onesmask);
+                       }
+                       if (!omit_mask) {
+                               fprintf(df, " mask %s",
+                                       rest_node->mask->address);
                        }
                }
-               fprintf(df, "restrict %s", s);
-               if (rest_node->mask != NULL && !is_default)
-                       fprintf(df, " mask %s",
-                               rest_node->mask->address);
-               fprintf(df, " ippeerlimit %d", rest_node->ippeerlimit);
+               if (-1 != rest_node->ippeerlimit) {
+                       fprintf(df, " ippeerlimit %d",
+                               rest_node->ippeerlimit);
+               }
                atrv = HEAD_PFIFO(rest_node->flag_tok_fifo);
                for ( ; atrv != NULL; atrv = atrv->link) {
                        if (   T_Integer == atrv->type
@@ -1049,7 +1078,7 @@ dump_config_tree(
                                fprintf(df, " %s", keyword(atrv->attr));
                        }
                }
-               fprintf(df, "\n");            
+               fprintf(df, "\n");
 /**/
 #if 0
 msyslog(LOG_INFO, "Dumping flag_tok_fifo:");
@@ -1578,8 +1607,10 @@ create_restrict_node(
        address_node *  mask,
        short           ippeerlimit,
        attr_val_fifo * flag_tok_fifo,
-       int             nline
-       )
+       int/*BOOL*/     remove,
+       int             nline,
+       int             ncol
+)
 {
        restrict_node *my_node;
 
@@ -1588,7 +1619,9 @@ create_restrict_node(
        my_node->mask = mask;
        my_node->ippeerlimit = ippeerlimit;
        my_node->flag_tok_fifo = flag_tok_fifo;
+       my_node->remove = remove;
        my_node->line_no = nline;
+       my_node->column = ncol;
 
        return my_node;
 }
@@ -2186,6 +2219,7 @@ free_config_auth(
 }
 #endif /* FREE_CFG_T */
 
+
 #ifndef SIM
 /* Configure low-level clock-related parameters. Return TRUE if the
  * clock might need adjustment like era-checking after the call, FALSE
@@ -2193,16 +2227,16 @@ free_config_auth(
  */
 static int/*BOOL*/
 config_tos_clock(
-       config_tree *ptree
-       )
+       config_treeptree
+)
 {
        int             ret;
-       attr_val *      tos;
+       attr_val* tos;
 
        ret = FALSE;
        tos = HEAD_PFIFO(ptree->orphan_cmds);
        for (; tos != NULL; tos = tos->link) {
-               switch(tos->attr) {
+               switch (tos->attr) {
 
                default:
                        break;
@@ -2214,12 +2248,13 @@ config_tos_clock(
                }
        }
 
-       if (basedate_get_day() <= NTP_TO_UNIX_DAYS)
+       if (basedate_get_day() <= NTP_TO_UNIX_DAYS) {
                basedate_set_day(basedate_eval_buildstamp() - 11);
-           
+       }
        return ret;
 }
-#endif /* SIM */
+#endif /* !SIM */
+
 
 static void
 config_tos(
@@ -2606,7 +2641,8 @@ config_access(
        struct addrinfo *       ai_list;
        struct addrinfo *       pai;
        int                     rc;
-       int                     restrict_default;
+       int/*BOOL*/             success;
+       int/*BOOL*/             restrict_default;
        u_short                 rflags;
        u_short                 mflags;
        short                   ippeerlimit;
@@ -2615,9 +2651,9 @@ config_access(
        attr_val *              dflt_psl_atr;
        const char *            signd_warning =
 #ifdef HAVE_NTP_SIGND
-           "MS-SNTP signd operations currently block ntpd degrading service to all clients.";
+           "MS-SNTP signd operations currently block ntpd degrading service to all clients.\n";
 #else
-           "mssntp restrict bit ignored, this ntpd was configured without --enable-ntp-signd.";
+           "mssntp restrict bit ignored, this ntpd was configured without --enable-ntp-signd.\n";
 #endif
 
        /* Configure the mru options */
@@ -2822,28 +2858,31 @@ config_access(
                }
 
                if ((RES_MSSNTP & rflags) && !warned_signd) {
-                       warned_signd = 1;
-                       fprintf(stderr, "%s\n", signd_warning);
+                       warned_signd = TRUE;
+                       fprintf(stderr, "%s", signd_warning);
                        msyslog(LOG_WARNING, "%s", signd_warning);
                }
 
-               /* It would be swell if we could identify the line number */
                if ((RES_KOD & rflags) && !(RES_LIMITED & rflags)) {
                        const char *kod_where = (my_node->addr)
                                          ? my_node->addr->address
                                          : (mflags & RESM_SOURCE)
                                            ? "source"
                                            : "default";
-                       const char *kod_warn = "KOD does nothing without LIMITED.";
-
-                       fprintf(stderr, "restrict %s: %s\n", kod_where, kod_warn);
-                       msyslog(LOG_WARNING, "restrict %s: %s", kod_where, kod_warn);
+                       const char *kod_warn = "'kod' does nothing without 'limited'.\n";
+
+                       fprintf(stderr, "line %d col %d restrict %s: %s",
+                               my_node->line_no, my_node->column, 
+                               kod_where, kod_warn);
+                       msyslog(LOG_WARNING, "line %d col %d restrict %s: %s",
+                               my_node->line_no, my_node->column,
+                               kod_where, kod_warn);
                }
 
                ZERO_SOCK(&addr);
                ai_list = NULL;
                pai = NULL;
-               restrict_default = 0;
+               restrict_default = FALSE;
 
                if (NULL == my_node->addr) {
                        ZERO_SOCK(&mask);
@@ -2853,13 +2892,18 @@ config_access(
                                 * without a -4 / -6 qualifier, add to
                                 * both lists
                                 */
-                               restrict_default = 1;
+                               restrict_default = TRUE;
                        } else {
                                /* apply "restrict source ..." */
-                               DPRINTF(1, ("restrict source template ippeerlimit %d mflags %x rflags %x\n",
-                                       ippeerlimit, mflags, rflags));
-                               hack_restrict(RESTRICT_FLAGS, NULL, NULL,
-                                             ippeerlimit, mflags, rflags, 0);
+                               success = hack_restrict(RESTRICT_FLAGS,
+                                                       NULL, NULL,
+                                                       ippeerlimit,
+                                                       mflags, rflags,
+                                                       0);
+                               if (!success) {
+                                       msyslog(LOG_ERR,
+                                               "unable to save restrict source");
+                               }
                                continue;
                        }
                } else {
@@ -2891,33 +2935,37 @@ config_access(
                                                 &ai_list);
                                if (rc) {
                                        msyslog(LOG_ERR,
-                                               "restrict: ignoring line %d, address/host '%s' unusable.",
+                                               "restrict: line %d col %d"
+                                               " address/host '%s' unusable.",
                                                my_node->line_no,
+                                               my_node->column,
                                                my_node->addr->address);
                                        continue;
                                }
                                INSIST(ai_list != NULL);
                                pai = ai_list;
                                INSIST(pai->ai_addr != NULL);
-                               INSIST(sizeof(addr) >=
-                                          pai->ai_addrlen);
+                               INSIST(sizeof(addr) >= pai->ai_addrlen);
                                memcpy(&addr, pai->ai_addr,
                                       pai->ai_addrlen);
                                INSIST(AF_INET == AF(&addr) ||
                                           AF_INET6 == AF(&addr));
                        }
 
+                       /* default to all-ones mask for single address */
                        SET_HOSTMASK(&mask, AF(&addr));
 
-                       /* Resolve the mask */
-                       if (my_node->mask) {
+                       /* Ignore mask if addr from hostname [Bug 3872] */
+                       if (NULL == ai_list && my_node->mask) {
                                ZERO_SOCK(&mask);
                                AF(&mask) = my_node->mask->type;
                                if (getnetnum(my_node->mask->address,
                                              &mask, 1, t_MSK) != 1) {
                                        msyslog(LOG_ERR,
-                                               "restrict: ignoring line %d, mask '%s' unusable.",
+                                               "restrict: line %d col %d"
+                                               " mask '%s' unusable.",
                                                my_node->line_no,
+                                               my_node->column,
                                                my_node->mask->address);
                                        continue;
                                }
@@ -2928,15 +2976,43 @@ config_access(
                if (restrict_default) {
                        AF(&addr) = AF_INET;
                        AF(&mask) = AF_INET;
-                       hack_restrict(RESTRICT_FLAGS, &addr, &mask,
-                                     ippeerlimit, mflags, rflags, 0);
+                       success = hack_restrict(
+                                       RESTRICT_FLAGS,
+                                       &addr, 
+                                       &mask,
+                                       ippeerlimit,
+                                       mflags,
+                                       rflags,
+                                       0
+                                       );
+                       if (!success) {
+                               msyslog(LOG_ERR,
+                                       "unable to save %s %s restriction",
+                                       stoa(&addr), stoa(&mask));
+                       }
                        AF(&addr) = AF_INET6;
                        AF(&mask) = AF_INET6;
                }
 
                do {
-                       hack_restrict(RESTRICT_FLAGS, &addr, &mask,
-                                     ippeerlimit, mflags, rflags, 0);
+                       success = hack_restrict(
+                                       my_node->remove
+                                               ? RESTRICT_REMOVE
+                                               : RESTRICT_FLAGS,
+                                       &addr,
+                                       &mask,
+                                       ippeerlimit,
+                                       mflags,
+                                       rflags,
+                                       0);
+                       if (!success) {
+                               msyslog(LOG_ERR,
+                                       "unable to %s %s %s restriction",
+                                       my_node->remove
+                                               ? "delete"
+                                               : "save",
+                                       stoa(&addr), stoa(&mask));
+                       }
                        if (pai != NULL &&
                            NULL != (pai = pai->ai_next)) {
                                INSIST(pai->ai_addr != NULL);
@@ -2951,8 +3027,9 @@ config_access(
                        }
                } while (pai != NULL);
 
-               if (ai_list != NULL)
+               if (ai_list != NULL) {
                        freeaddrinfo(ai_list);
+               }
        }
 
        /*
@@ -2974,7 +3051,7 @@ config_access(
                } else if (   atrv->attr < NTP_MINPOLL
                           || atrv->attr > NTP_MAXPOLL) {
                        msyslog(LOG_ERR,
-                               "Poll %d out of bounds for pollskewlist, (%d-%d)",
+                               "Poll %d out of bounds [%d-%d] for pollskewlist",
                                atrv->attr, NTP_MINPOLL, NTP_MAXPOLL);
                }
        }
@@ -5259,10 +5336,9 @@ normal_dtoa(
        pch_nz = pch_e;
        while ('0' == *pch_nz)
                pch_nz++;
-       if (pch_nz == pch_e)
-               return buf;
-       strlcpy(pch_e, pch_nz, LIB_BUFLENGTH - (pch_e - buf));
-
+       if (pch_nz > pch_e) {
+               memmove(pch_e, pch_nz, 1 + strlen(pch_nz));
+       }
        return buf;
 }
 
@@ -5524,12 +5600,11 @@ gettokens_netinfo (
  * returns 1 for success, and mysteriously, 0 for most failures, and
  * -1 if the address found is IPv6 and we believe IPv6 isn't working.
  */
-#ifndef SIM
 static int
 getnetnum(
        const char *num,
        sockaddr_u *addr,
-       int complain,
+       int complain,           /* ignored */
        enum gnn_type a_type    /* ignored */
        )
 {
@@ -5537,22 +5612,21 @@ getnetnum(
                AF_INET == AF(addr) ||
                AF_INET6 == AF(addr));
 
-       if (!is_ip_address(num, AF(addr), addr))
+       if (!is_ip_address(num, AF(addr), addr)) {
                return 0;
-
-       if (IS_IPV6(addr) && !ipv6_works)
-               return -1;
-
+       }
 # ifdef ISC_PLATFORM_HAVESALEN
        addr->sa.sa_len = SIZEOF_SOCKADDR(AF(addr));
 # endif
        SET_PORT(addr, NTP_PORT);
 
-       DPRINTF(2, ("getnetnum given %s, got %s\n", num, stoa(addr)));
-
-       return 1;
+       if (IS_IPV6(addr) && !ipv6_works) {
+               return -1;
+       } else {
+               return 1;
+       }
 }
-#endif /* !SIM */
+
 
 #if defined(HAVE_SETRLIMIT)
 void
index 4a332ed189d6953ddad4cc983daf0aefa1e4ade8..87a8b0fd71654468759077ebd178cc36b5536ce2 100644 (file)
@@ -987,6 +987,7 @@ remove_interface(
        endpt *         unlinked;
        endpt **        pmclisthead;
        sockaddr_u      resmask;
+       int/*BOOL*/     success;
 
        UNLINK_SLIST(unlinked, ep_list, ep, elink, endpt);
        if (!ep->ignore_packets && INT_MULTICAST & ep->flags) {
@@ -1007,7 +1008,9 @@ remove_interface(
 
        if (ep->fd != INVALID_SOCKET) {
                msyslog(LOG_INFO,
-                       "Deleting interface #%d %s, %s#%d, interface stats: received=%ld, sent=%ld, dropped=%ld, active_time=%ld secs",
+                       "Deleting %d %s, [%s]:%hd, stats:"
+                       " received=%ld, sent=%ld, dropped=%ld,"
+                       " active_time=%ld secs",
                        ep->ifnum,
                        ep->name,
                        stoa(&ep->sin),
@@ -1042,8 +1045,14 @@ remove_interface(
 
        /* remove restrict interface entry */
        SET_HOSTMASK(&resmask, AF(&ep->sin));
-       hack_restrict(RESTRICT_REMOVEIF, &ep->sin, &resmask, 0,
-                     RESM_NTPONLY | RESM_INTERFACE, 0, 0);
+       success = hack_restrict(RESTRICT_REMOVEIF, &ep->sin, &resmask, 0,
+                               RESM_NTPONLY | RESM_INTERFACE, 0, 0);
+       if (!success) {
+               msyslog(LOG_ERR,
+                       "unable to remove self-restriction for %s",
+                       stoa(&ep->sin));
+       }
+
 }
 
 
@@ -2118,6 +2127,7 @@ create_interface(
 {
        sockaddr_u      resmask;
        endpt *         iface;
+       int/*BOOL*/     success;
 #if defined(MCAST) && defined(MULTICAST_NONEWSOCKET)
        remaddr_t *     entry;
        remaddr_t *     next_entry;
@@ -2156,8 +2166,13 @@ create_interface(
         * Blacklist our own addresses, no use talking to ourself
         */
        SET_HOSTMASK(&resmask, AF(&iface->sin));
-       hack_restrict(RESTRICT_FLAGS, &iface->sin, &resmask,
-                     -4, RESM_NTPONLY | RESM_INTERFACE, RES_IGNORE, 0);
+       success = hack_restrict(RESTRICT_FLAGS, &iface->sin, &resmask,
+                               -4, RESM_NTPONLY | RESM_INTERFACE,
+                               RES_IGNORE, 0);
+       if (!success) {
+               msyslog(LOG_ERR,
+                       "unable to self-restrict %s", stoa(&iface->sin));
+       }
 
        /*
         * set globals with the first found
index 7b3efc2cda30411820e97f3bc9821fed375e9cec..7fa610bb39b92e7c23f40ab5a5cb6388cca7a42d 100644 (file)
@@ -2,7 +2,7 @@
  * ntp_keyword.h
  * 
  * NOTE: edit this file with caution, it is generated by keyword-gen.c
- *      Generated 2022-03-27 14:17:11 UTC        diff_ignore_line
+ *      Generated 2023-09-25 05:34:02 UTC        diff_ignore_line
  *
  */
 #include "ntp_scanner.h"
@@ -10,7 +10,7 @@
 
 #define LOWEST_KEYWORD_ID 258
 
-const char * const keyword_text[212] = {
+const char * const keyword_text[213] = {
        /* 0       258             T_Abbrev */  "abbrev",
        /* 1       259                T_Age */  "age",
        /* 2       260                T_All */  "all",
@@ -39,200 +39,201 @@ const char * const keyword_text[212] = {
        /* 25      283                T_Ctl */  "ctl",
        /* 26      284                T_Day */  "day",
        /* 27      285            T_Default */  "default",
-       /* 28      286             T_Device */  "device",
-       /* 29      287             T_Digest */  "digest",
-       /* 30      288            T_Disable */  "disable",
-       /* 31      289            T_Discard */  "discard",
-       /* 32      290         T_Dispersion */  "dispersion",
-       /* 33      291             T_Double */  NULL,
-       /* 34      292          T_Driftfile */  "driftfile",
-       /* 35      293               T_Drop */  "drop",
-       /* 36      294               T_Dscp */  "dscp",
-       /* 37      295           T_Ellipsis */  "...",
-       /* 38      296             T_Enable */  "enable",
-       /* 39      297                T_End */  "end",
-       /* 40      298              T_Epeer */  "epeer",
-       /* 41      299              T_False */  NULL,
-       /* 42      300               T_File */  "file",
-       /* 43      301            T_Filegen */  "filegen",
-       /* 44      302            T_Filenum */  "filenum",
-       /* 45      303              T_Flag1 */  "flag1",
-       /* 46      304              T_Flag2 */  "flag2",
-       /* 47      305              T_Flag3 */  "flag3",
-       /* 48      306              T_Flag4 */  "flag4",
-       /* 49      307              T_Flake */  "flake",
-       /* 50      308              T_Floor */  "floor",
-       /* 51      309               T_Freq */  "freq",
-       /* 52      310              T_Fudge */  "fudge",
-       /* 53      311               T_Fuzz */  "fuzz",
-       /* 54      312               T_Host */  "host",
-       /* 55      313           T_Huffpuff */  "huffpuff",
-       /* 56      314             T_Iburst */  "iburst",
-       /* 57      315              T_Ident */  "ident",
-       /* 58      316             T_Ignore */  "ignore",
-       /* 59      317         T_Ignorehash */  "ignorehash",
-       /* 60      318           T_Incalloc */  "incalloc",
-       /* 61      319             T_Incmem */  "incmem",
-       /* 62      320          T_Initalloc */  "initalloc",
-       /* 63      321            T_Initmem */  "initmem",
-       /* 64      322        T_Includefile */  "includefile",
-       /* 65      323            T_Integer */  NULL,
-       /* 66      324          T_Interface */  "interface",
-       /* 67      325           T_Intrange */  NULL,
-       /* 68      326                 T_Io */  "io",
-       /* 69      327        T_Ippeerlimit */  "ippeerlimit",
-       /* 70      328               T_Ipv4 */  "ipv4",
-       /* 71      329          T_Ipv4_flag */  "-4",
-       /* 72      330               T_Ipv6 */  "ipv6",
-       /* 73      331          T_Ipv6_flag */  "-6",
-       /* 74      332             T_Kernel */  "kernel",
-       /* 75      333                T_Key */  "key",
-       /* 76      334               T_Keys */  "keys",
-       /* 77      335            T_Keysdir */  "keysdir",
-       /* 78      336                T_Kod */  "kod",
-       /* 79      337           T_Leapfile */  "leapfile",
-       /* 80      338  T_Leapsmearinterval */  "leapsmearinterval",
-       /* 81      339            T_Limited */  "limited",
-       /* 82      340               T_Link */  "link",
-       /* 83      341             T_Listen */  "listen",
-       /* 84      342          T_Logconfig */  "logconfig",
-       /* 85      343            T_Logfile */  "logfile",
-       /* 86      344          T_Loopstats */  "loopstats",
-       /* 87      345        T_Lowpriotrap */  "lowpriotrap",
-       /* 88      346     T_Manycastclient */  "manycastclient",
-       /* 89      347     T_Manycastserver */  "manycastserver",
-       /* 90      348               T_Mask */  "mask",
-       /* 91      349             T_Maxage */  "maxage",
-       /* 92      350           T_Maxclock */  "maxclock",
-       /* 93      351           T_Maxdepth */  "maxdepth",
-       /* 94      352            T_Maxdist */  "maxdist",
-       /* 95      353             T_Maxmem */  "maxmem",
-       /* 96      354            T_Maxpoll */  "maxpoll",
-       /* 97      355          T_Mdnstries */  "mdnstries",
-       /* 98      356                T_Mem */  "mem",
-       /* 99      357            T_Memlock */  "memlock",
-       /* 100     358           T_Minclock */  "minclock",
-       /* 101     359           T_Mindepth */  "mindepth",
-       /* 102     360            T_Mindist */  "mindist",
-       /* 103     361            T_Minimum */  "minimum",
-       /* 104     362          T_Minjitter */  "minjitter",
-       /* 105     363            T_Minpoll */  "minpoll",
-       /* 106     364            T_Minsane */  "minsane",
-       /* 107     365               T_Mode */  "mode",
-       /* 108     366              T_Mode7 */  "mode7",
-       /* 109     367            T_Monitor */  "monitor",
-       /* 110     368              T_Month */  "month",
-       /* 111     369                T_Mru */  "mru",
-       /* 112     370             T_Mssntp */  "mssntp",
-       /* 113     371    T_Multicastclient */  "multicastclient",
-       /* 114     372                T_Nic */  "nic",
-       /* 115     373             T_Nolink */  "nolink",
-       /* 116     374           T_Nomodify */  "nomodify",
-       /* 117     375          T_Nomrulist */  "nomrulist",
-       /* 118     376               T_None */  "none",
-       /* 119     377        T_Nonvolatile */  "nonvolatile",
-       /* 120     378            T_Noepeer */  "noepeer",
-       /* 121     379             T_Nopeer */  "nopeer",
-       /* 122     380            T_Noquery */  "noquery",
-       /* 123     381           T_Noselect */  "noselect",
-       /* 124     382            T_Noserve */  "noserve",
-       /* 125     383             T_Notrap */  "notrap",
-       /* 126     384            T_Notrust */  "notrust",
-       /* 127     385                T_Ntp */  "ntp",
-       /* 128     386            T_Ntpport */  "ntpport",
-       /* 129     387     T_NtpSignDsocket */  "ntpsigndsocket",
-       /* 130     388             T_Orphan */  "orphan",
-       /* 131     389         T_Orphanwait */  "orphanwait",
-       /* 132     390          T_PCEdigest */  "peer_clear_digest_early",
-       /* 133     391              T_Panic */  "panic",
-       /* 134     392               T_Peer */  "peer",
-       /* 135     393          T_Peerstats */  "peerstats",
-       /* 136     394              T_Phone */  "phone",
-       /* 137     395                T_Pid */  "pid",
-       /* 138     396            T_Pidfile */  "pidfile",
-       /* 139     397               T_Poll */  "poll",
-       /* 140     398       T_PollSkewList */  "pollskewlist",
-       /* 141     399               T_Pool */  "pool",
-       /* 142     400               T_Port */  "port",
-       /* 143     401            T_PpsData */  "ppsdata",
-       /* 144     402            T_Preempt */  "preempt",
-       /* 145     403             T_Prefer */  "prefer",
-       /* 146     404         T_Protostats */  "protostats",
-       /* 147     405                 T_Pw */  "pw",
-       /* 148     406           T_Randfile */  "randfile",
-       /* 149     407           T_Rawstats */  "rawstats",
-       /* 150     408              T_Refid */  "refid",
-       /* 151     409         T_Requestkey */  "requestkey",
-       /* 152     410              T_Reset */  "reset",
-       /* 153     411           T_Restrict */  "restrict",
-       /* 154     412             T_Revoke */  "revoke",
-       /* 155     413             T_Rlimit */  "rlimit",
-       /* 156     414      T_Saveconfigdir */  "saveconfigdir",
-       /* 157     415             T_Server */  "server",
-       /* 158     416     T_Serverresponse */  "serverresponse",
-       /* 159     417 T_ServerresponseFuzz */  NULL,
-       /* 160     418             T_Setvar */  "setvar",
-       /* 161     419             T_Source */  "source",
-       /* 162     420          T_Stacksize */  "stacksize",
-       /* 163     421         T_Statistics */  "statistics",
-       /* 164     422              T_Stats */  "stats",
-       /* 165     423           T_Statsdir */  "statsdir",
-       /* 166     424               T_Step */  "step",
-       /* 167     425           T_Stepback */  "stepback",
-       /* 168     426            T_Stepfwd */  "stepfwd",
-       /* 169     427            T_Stepout */  "stepout",
-       /* 170     428            T_Stratum */  "stratum",
-       /* 171     429             T_String */  NULL,
-       /* 172     430                T_Sys */  "sys",
-       /* 173     431           T_Sysstats */  "sysstats",
-       /* 174     432               T_Tick */  "tick",
-       /* 175     433              T_Time1 */  "time1",
-       /* 176     434              T_Time2 */  "time2",
-       /* 177     435           T_TimeData */  "timedata",
-       /* 178     436              T_Timer */  "timer",
-       /* 179     437        T_Timingstats */  "timingstats",
-       /* 180     438             T_Tinker */  "tinker",
-       /* 181     439                T_Tos */  "tos",
-       /* 182     440               T_Trap */  "trap",
-       /* 183     441               T_True */  "true",
-       /* 184     442         T_Trustedkey */  "trustedkey",
-       /* 185     443                T_Ttl */  "ttl",
-       /* 186     444               T_Type */  "type",
-       /* 187     445              T_U_int */  NULL,
-       /* 188     446           T_UEcrypto */  "unpeer_crypto_early",
-       /* 189     447        T_UEcryptonak */  "unpeer_crypto_nak_early",
-       /* 190     448           T_UEdigest */  "unpeer_digest_early",
-       /* 191     449           T_Unconfig */  "unconfig",
-       /* 192     450             T_Unpeer */  "unpeer",
-       /* 193     451            T_Version */  "version",
-       /* 194     452    T_WanderThreshold */  NULL,
-       /* 195     453               T_Week */  "week",
-       /* 196     454           T_Wildcard */  "wildcard",
-       /* 197     455             T_Xleave */  "xleave",
-       /* 198     456           T_Xmtnonce */  "xmtnonce",
-       /* 199     457               T_Year */  "year",
-       /* 200     458               T_Flag */  NULL,
-       /* 201     459                T_EOC */  NULL,
-       /* 202     460           T_Simulate */  "simulate",
-       /* 203     461         T_Beep_Delay */  "beep_delay",
-       /* 204     462       T_Sim_Duration */  "simulation_duration",
-       /* 205     463      T_Server_Offset */  "server_offset",
-       /* 206     464           T_Duration */  "duration",
-       /* 207     465        T_Freq_Offset */  "freq_offset",
-       /* 208     466             T_Wander */  "wander",
-       /* 209     467             T_Jitter */  "jitter",
-       /* 210     468         T_Prop_Delay */  "prop_delay",
-       /* 211     469         T_Proc_Delay */  "proc_delay"
+       /* 28      286        T_Delrestrict */  "delrestrict",
+       /* 29      287             T_Device */  "device",
+       /* 30      288             T_Digest */  "digest",
+       /* 31      289            T_Disable */  "disable",
+       /* 32      290            T_Discard */  "discard",
+       /* 33      291         T_Dispersion */  "dispersion",
+       /* 34      292             T_Double */  NULL,
+       /* 35      293          T_Driftfile */  "driftfile",
+       /* 36      294               T_Drop */  "drop",
+       /* 37      295               T_Dscp */  "dscp",
+       /* 38      296           T_Ellipsis */  "...",
+       /* 39      297             T_Enable */  "enable",
+       /* 40      298                T_End */  "end",
+       /* 41      299              T_Epeer */  "epeer",
+       /* 42      300              T_False */  NULL,
+       /* 43      301               T_File */  "file",
+       /* 44      302            T_Filegen */  "filegen",
+       /* 45      303            T_Filenum */  "filenum",
+       /* 46      304              T_Flag1 */  "flag1",
+       /* 47      305              T_Flag2 */  "flag2",
+       /* 48      306              T_Flag3 */  "flag3",
+       /* 49      307              T_Flag4 */  "flag4",
+       /* 50      308              T_Flake */  "flake",
+       /* 51      309              T_Floor */  "floor",
+       /* 52      310               T_Freq */  "freq",
+       /* 53      311              T_Fudge */  "fudge",
+       /* 54      312               T_Fuzz */  "fuzz",
+       /* 55      313               T_Host */  "host",
+       /* 56      314           T_Huffpuff */  "huffpuff",
+       /* 57      315             T_Iburst */  "iburst",
+       /* 58      316              T_Ident */  "ident",
+       /* 59      317             T_Ignore */  "ignore",
+       /* 60      318         T_Ignorehash */  "ignorehash",
+       /* 61      319           T_Incalloc */  "incalloc",
+       /* 62      320             T_Incmem */  "incmem",
+       /* 63      321          T_Initalloc */  "initalloc",
+       /* 64      322            T_Initmem */  "initmem",
+       /* 65      323        T_Includefile */  "includefile",
+       /* 66      324            T_Integer */  NULL,
+       /* 67      325          T_Interface */  "interface",
+       /* 68      326           T_Intrange */  NULL,
+       /* 69      327                 T_Io */  "io",
+       /* 70      328        T_Ippeerlimit */  "ippeerlimit",
+       /* 71      329               T_Ipv4 */  "ipv4",
+       /* 72      330          T_Ipv4_flag */  "-4",
+       /* 73      331               T_Ipv6 */  "ipv6",
+       /* 74      332          T_Ipv6_flag */  "-6",
+       /* 75      333             T_Kernel */  "kernel",
+       /* 76      334                T_Key */  "key",
+       /* 77      335               T_Keys */  "keys",
+       /* 78      336            T_Keysdir */  "keysdir",
+       /* 79      337                T_Kod */  "kod",
+       /* 80      338           T_Leapfile */  "leapfile",
+       /* 81      339  T_Leapsmearinterval */  "leapsmearinterval",
+       /* 82      340            T_Limited */  "limited",
+       /* 83      341               T_Link */  "link",
+       /* 84      342             T_Listen */  "listen",
+       /* 85      343          T_Logconfig */  "logconfig",
+       /* 86      344            T_Logfile */  "logfile",
+       /* 87      345          T_Loopstats */  "loopstats",
+       /* 88      346        T_Lowpriotrap */  "lowpriotrap",
+       /* 89      347     T_Manycastclient */  "manycastclient",
+       /* 90      348     T_Manycastserver */  "manycastserver",
+       /* 91      349               T_Mask */  "mask",
+       /* 92      350             T_Maxage */  "maxage",
+       /* 93      351           T_Maxclock */  "maxclock",
+       /* 94      352           T_Maxdepth */  "maxdepth",
+       /* 95      353            T_Maxdist */  "maxdist",
+       /* 96      354             T_Maxmem */  "maxmem",
+       /* 97      355            T_Maxpoll */  "maxpoll",
+       /* 98      356          T_Mdnstries */  "mdnstries",
+       /* 99      357                T_Mem */  "mem",
+       /* 100     358            T_Memlock */  "memlock",
+       /* 101     359           T_Minclock */  "minclock",
+       /* 102     360           T_Mindepth */  "mindepth",
+       /* 103     361            T_Mindist */  "mindist",
+       /* 104     362            T_Minimum */  "minimum",
+       /* 105     363          T_Minjitter */  "minjitter",
+       /* 106     364            T_Minpoll */  "minpoll",
+       /* 107     365            T_Minsane */  "minsane",
+       /* 108     366               T_Mode */  "mode",
+       /* 109     367              T_Mode7 */  "mode7",
+       /* 110     368            T_Monitor */  "monitor",
+       /* 111     369              T_Month */  "month",
+       /* 112     370                T_Mru */  "mru",
+       /* 113     371             T_Mssntp */  "mssntp",
+       /* 114     372    T_Multicastclient */  "multicastclient",
+       /* 115     373                T_Nic */  "nic",
+       /* 116     374             T_Nolink */  "nolink",
+       /* 117     375           T_Nomodify */  "nomodify",
+       /* 118     376          T_Nomrulist */  "nomrulist",
+       /* 119     377               T_None */  "none",
+       /* 120     378        T_Nonvolatile */  "nonvolatile",
+       /* 121     379            T_Noepeer */  "noepeer",
+       /* 122     380             T_Nopeer */  "nopeer",
+       /* 123     381            T_Noquery */  "noquery",
+       /* 124     382           T_Noselect */  "noselect",
+       /* 125     383            T_Noserve */  "noserve",
+       /* 126     384             T_Notrap */  "notrap",
+       /* 127     385            T_Notrust */  "notrust",
+       /* 128     386                T_Ntp */  "ntp",
+       /* 129     387            T_Ntpport */  "ntpport",
+       /* 130     388     T_NtpSignDsocket */  "ntpsigndsocket",
+       /* 131     389             T_Orphan */  "orphan",
+       /* 132     390         T_Orphanwait */  "orphanwait",
+       /* 133     391          T_PCEdigest */  "peer_clear_digest_early",
+       /* 134     392              T_Panic */  "panic",
+       /* 135     393               T_Peer */  "peer",
+       /* 136     394          T_Peerstats */  "peerstats",
+       /* 137     395              T_Phone */  "phone",
+       /* 138     396                T_Pid */  "pid",
+       /* 139     397            T_Pidfile */  "pidfile",
+       /* 140     398               T_Poll */  "poll",
+       /* 141     399       T_PollSkewList */  "pollskewlist",
+       /* 142     400               T_Pool */  "pool",
+       /* 143     401               T_Port */  "port",
+       /* 144     402            T_PpsData */  "ppsdata",
+       /* 145     403            T_Preempt */  "preempt",
+       /* 146     404             T_Prefer */  "prefer",
+       /* 147     405         T_Protostats */  "protostats",
+       /* 148     406                 T_Pw */  "pw",
+       /* 149     407           T_Randfile */  "randfile",
+       /* 150     408           T_Rawstats */  "rawstats",
+       /* 151     409              T_Refid */  "refid",
+       /* 152     410         T_Requestkey */  "requestkey",
+       /* 153     411              T_Reset */  "reset",
+       /* 154     412           T_Restrict */  "restrict",
+       /* 155     413             T_Revoke */  "revoke",
+       /* 156     414             T_Rlimit */  "rlimit",
+       /* 157     415      T_Saveconfigdir */  "saveconfigdir",
+       /* 158     416             T_Server */  "server",
+       /* 159     417     T_Serverresponse */  "serverresponse",
+       /* 160     418 T_ServerresponseFuzz */  NULL,
+       /* 161     419             T_Setvar */  "setvar",
+       /* 162     420             T_Source */  "source",
+       /* 163     421          T_Stacksize */  "stacksize",
+       /* 164     422         T_Statistics */  "statistics",
+       /* 165     423              T_Stats */  "stats",
+       /* 166     424           T_Statsdir */  "statsdir",
+       /* 167     425               T_Step */  "step",
+       /* 168     426           T_Stepback */  "stepback",
+       /* 169     427            T_Stepfwd */  "stepfwd",
+       /* 170     428            T_Stepout */  "stepout",
+       /* 171     429            T_Stratum */  "stratum",
+       /* 172     430             T_String */  NULL,
+       /* 173     431                T_Sys */  "sys",
+       /* 174     432           T_Sysstats */  "sysstats",
+       /* 175     433               T_Tick */  "tick",
+       /* 176     434              T_Time1 */  "time1",
+       /* 177     435              T_Time2 */  "time2",
+       /* 178     436           T_TimeData */  "timedata",
+       /* 179     437              T_Timer */  "timer",
+       /* 180     438        T_Timingstats */  "timingstats",
+       /* 181     439             T_Tinker */  "tinker",
+       /* 182     440                T_Tos */  "tos",
+       /* 183     441               T_Trap */  "trap",
+       /* 184     442               T_True */  "true",
+       /* 185     443         T_Trustedkey */  "trustedkey",
+       /* 186     444                T_Ttl */  "ttl",
+       /* 187     445               T_Type */  "type",
+       /* 188     446              T_U_int */  NULL,
+       /* 189     447           T_UEcrypto */  "unpeer_crypto_early",
+       /* 190     448        T_UEcryptonak */  "unpeer_crypto_nak_early",
+       /* 191     449           T_UEdigest */  "unpeer_digest_early",
+       /* 192     450           T_Unconfig */  "unconfig",
+       /* 193     451             T_Unpeer */  "unpeer",
+       /* 194     452            T_Version */  "version",
+       /* 195     453    T_WanderThreshold */  NULL,
+       /* 196     454               T_Week */  "week",
+       /* 197     455           T_Wildcard */  "wildcard",
+       /* 198     456             T_Xleave */  "xleave",
+       /* 199     457           T_Xmtnonce */  "xmtnonce",
+       /* 200     458               T_Year */  "year",
+       /* 201     459               T_Flag */  NULL,
+       /* 202     460                T_EOC */  NULL,
+       /* 203     461           T_Simulate */  "simulate",
+       /* 204     462         T_Beep_Delay */  "beep_delay",
+       /* 205     463       T_Sim_Duration */  "simulation_duration",
+       /* 206     464      T_Server_Offset */  "server_offset",
+       /* 207     465           T_Duration */  "duration",
+       /* 208     466        T_Freq_Offset */  "freq_offset",
+       /* 209     467             T_Wander */  "wander",
+       /* 210     468             T_Jitter */  "jitter",
+       /* 211     469         T_Prop_Delay */  "prop_delay",
+       /* 212     470         T_Proc_Delay */  "proc_delay"
 };
 
-#define SCANNER_INIT_S 999
+#define SCANNER_INIT_S 1008
 
-const scan_state sst[1002] = {
+const scan_state sst[1011] = {
 /*SS_T( ch,    f-by, match, other ),                            */
   0,                                 /*     0                   */
-  S_ST( '-',   3,      331,     0 ), /*     1                   */
+  S_ST( '-',   3,      332,     0 ), /*     1                   */
   S_ST( '.',   3,        3,     1 ), /*     2                   */
-  S_ST( '.',   3,      295,     0 ), /*     3 .                 */
+  S_ST( '.',   3,      296,     0 ), /*     3 .                 */
   S_ST( 'a',   3,       23,     2 ), /*     4                   */
   S_ST( 'b',   3,        6,     0 ), /*     5 a                 */
   S_ST( 'b',   3,        7,     0 ), /*     6 ab                */
@@ -287,7 +288,7 @@ const scan_state sst[1002] = {
   S_ST( 'd',   3,       56,     0 ), /*    55 beep_             */
   S_ST( 'e',   3,       57,     0 ), /*    56 beep_d            */
   S_ST( 'l',   3,       58,     0 ), /*    57 beep_de           */
-  S_ST( 'a',   3,      461,     0 ), /*    58 beep_del          */
+  S_ST( 'a',   3,      462,     0 ), /*    58 beep_del          */
   S_ST( 'r',   3,       60,    48 ), /*    59 b                 */
   S_ST( 'o',   3,       61,     0 ), /*    60 br                */
   S_ST( 'a',   3,       62,     0 ), /*    61 bro               */
@@ -355,138 +356,138 @@ const scan_state sst[1002] = {
   S_ST( 'a',   3,      124,     0 ), /*   123 cryptost          */
   S_ST( 't',   3,      282,     0 ), /*   124 cryptosta         */
   S_ST( 't',   3,      283,   117 ), /*   125 c                 */
-  S_ST( 'd',   3,      163,    78 ), /*   126                   */
+  S_ST( 'd',   3,      171,    78 ), /*   126                   */
   S_ST( 'a',   3,      284,     0 ), /*   127 d                 */
-  S_ST( 'e',   3,      133,   127 ), /*   128 d                 */
+  S_ST( 'e',   3,      141,   127 ), /*   128 d                 */
   S_ST( 'f',   3,      130,     0 ), /*   129 de                */
   S_ST( 'a',   3,      131,     0 ), /*   130 def               */
   S_ST( 'u',   3,      132,     0 ), /*   131 defa              */
   S_ST( 'l',   3,      285,     0 ), /*   132 defau             */
-  S_ST( 'v',   3,      134,   129 ), /*   133 de                */
-  S_ST( 'i',   3,      135,     0 ), /*   134 dev               */
-  S_ST( 'c',   3,      286,     0 ), /*   135 devi              */
-  S_ST( 'i',   3,      140,   128 ), /*   136 d                 */
-  S_ST( 'g',   3,      138,     0 ), /*   137 di                */
-  S_ST( 'e',   3,      139,     0 ), /*   138 dig               */
-  S_ST( 's',   3,      287,     0 ), /*   139 dige              */
-  S_ST( 's',   3,      147,   137 ), /*   140 di                */
-  S_ST( 'a',   3,      142,     0 ), /*   141 dis               */
-  S_ST( 'b',   3,      143,     0 ), /*   142 disa              */
-  S_ST( 'l',   3,      288,     0 ), /*   143 disab             */
-  S_ST( 'c',   3,      145,   141 ), /*   144 dis               */
-  S_ST( 'a',   3,      146,     0 ), /*   145 disc              */
-  S_ST( 'r',   3,      289,     0 ), /*   146 disca             */
-  S_ST( 'p',   3,      148,   144 ), /*   147 dis               */
-  S_ST( 'e',   3,      149,     0 ), /*   148 disp              */
-  S_ST( 'r',   3,      150,     0 ), /*   149 dispe             */
-  S_ST( 's',   3,      151,     0 ), /*   150 disper            */
-  S_ST( 'i',   3,      152,     0 ), /*   151 dispers           */
-  S_ST( 'o',   3,      290,     0 ), /*   152 dispersi          */
-  S_ST( 'r',   3,      160,   136 ), /*   153 d                 */
-  S_ST( 'i',   3,      155,     0 ), /*   154 dr                */
-  S_ST( 'f',   3,      156,     0 ), /*   155 dri               */
-  S_ST( 't',   3,      157,     0 ), /*   156 drif              */
-  S_ST( 'f',   3,      158,     0 ), /*   157 drift             */
-  S_ST( 'i',   3,      159,     0 ), /*   158 driftf            */
-  S_ST( 'l',   3,      292,     0 ), /*   159 driftfi           */
-  S_ST( 'o',   3,      293,   154 ), /*   160 dr                */
-  S_ST( 's',   3,      162,   153 ), /*   161 d                 */
-  S_ST( 'c',   3,      294,     0 ), /*   162 ds                */
-  S_ST( 'u',   3,      164,   161 ), /*   163 d                 */
-  S_ST( 'r',   3,      165,     0 ), /*   164 du                */
-  S_ST( 'a',   3,      166,     0 ), /*   165 dur               */
-  S_ST( 't',   3,      167,     0 ), /*   166 dura              */
-  S_ST( 'i',   3,      168,     0 ), /*   167 durat             */
-  S_ST( 'o',   3,      464,     0 ), /*   168 durati            */
-  S_ST( 'e',   3,      174,   126 ), /*   169                   */
-  S_ST( 'n',   3,      297,     0 ), /*   170 e                 */
-  S_ST( 'a',   3,      172,     0 ), /*   171 en                */
-  S_ST( 'b',   3,      173,     0 ), /*   172 ena               */
-  S_ST( 'l',   3,      296,     0 ), /*   173 enab              */
-  S_ST( 'p',   3,      175,   170 ), /*   174 e                 */
-  S_ST( 'e',   3,      176,     0 ), /*   175 ep                */
-  S_ST( 'e',   3,      298,     0 ), /*   176 epe               */
-  S_ST( 'f',   3,      198,   169 ), /*   177                   */
-  S_ST( 'i',   3,      179,     0 ), /*   178 f                 */
-  S_ST( 'l',   3,      300,     0 ), /*   179 fi                */
-  S_ST( 'g',   3,      181,     0 ), /*   180 file              */
-  S_ST( 'e',   3,      301,     0 ), /*   181 fileg             */
-  S_ST( 'n',   3,      183,   180 ), /*   182 file              */
-  S_ST( 'u',   3,      302,     0 ), /*   183 filen             */
-  S_ST( 'l',   3,      188,   178 ), /*   184 f                 */
-  S_ST( 'a',   3,      187,     0 ), /*   185 fl                */
-  S_ST( 'g',   3,      306,     0 ), /*   186 fla               */
-  S_ST( 'k',   3,      307,   186 ), /*   187 fla               */
-  S_ST( 'o',   3,      189,   185 ), /*   188 fl                */
-  S_ST( 'o',   3,      308,     0 ), /*   189 flo               */
-  S_ST( 'r',   3,      191,   184 ), /*   190 f                 */
-  S_ST( 'e',   3,      309,     0 ), /*   191 fr                */
-  S_ST( '_',   3,      193,     0 ), /*   192 freq              */
-  S_ST( 'o',   3,      194,     0 ), /*   193 freq_             */
-  S_ST( 'f',   3,      195,     0 ), /*   194 freq_o            */
-  S_ST( 'f',   3,      196,     0 ), /*   195 freq_of           */
-  S_ST( 's',   3,      197,     0 ), /*   196 freq_off          */
-  S_ST( 'e',   3,      465,     0 ), /*   197 freq_offs         */
-  S_ST( 'u',   3,      201,   190 ), /*   198 f                 */
-  S_ST( 'd',   3,      200,     0 ), /*   199 fu                */
-  S_ST( 'g',   3,      310,     0 ), /*   200 fud               */
-  S_ST( 'z',   3,      311,   199 ), /*   201 fu                */
-  S_ST( 'h',   3,      205,   177 ), /*   202                   */
-  S_ST( 'o',   3,      204,     0 ), /*   203 h                 */
-  S_ST( 's',   3,      312,     0 ), /*   204 ho                */
-  S_ST( 'u',   3,      206,   203 ), /*   205 h                 */
-  S_ST( 'f',   3,      207,     0 ), /*   206 hu                */
-  S_ST( 'f',   3,      208,     0 ), /*   207 huf               */
-  S_ST( 'p',   3,      209,     0 ), /*   208 huff              */
-  S_ST( 'u',   3,      210,     0 ), /*   209 huffp             */
-  S_ST( 'f',   3,      313,     0 ), /*   210 huffpu            */
-  S_ST( 'i',   3,      255,   202 ), /*   211                   */
-  S_ST( 'b',   3,      213,     0 ), /*   212 i                 */
-  S_ST( 'u',   3,      214,     0 ), /*   213 ib                */
-  S_ST( 'r',   3,      215,     0 ), /*   214 ibu               */
-  S_ST( 's',   3,      314,     0 ), /*   215 ibur              */
-  S_ST( 'd',   3,      217,   212 ), /*   216 i                 */
-  S_ST( 'e',   3,      218,     0 ), /*   217 id                */
-  S_ST( 'n',   3,      315,     0 ), /*   218 ide               */
-  S_ST( 'g',   3,      220,   216 ), /*   219 i                 */
-  S_ST( 'n',   3,      221,     0 ), /*   220 ig                */
-  S_ST( 'o',   3,      222,     0 ), /*   221 ign               */
-  S_ST( 'r',   3,      316,     0 ), /*   222 igno              */
-  S_ST( 'h',   3,      224,     0 ), /*   223 ignore            */
-  S_ST( 'a',   3,      225,     0 ), /*   224 ignoreh           */
-  S_ST( 's',   3,      317,     0 ), /*   225 ignoreha          */
-  S_ST( 'n',   3,      249,   219 ), /*   226 i                 */
-  S_ST( 'c',   3,      239,     0 ), /*   227 in                */
-  S_ST( 'a',   3,      229,     0 ), /*   228 inc               */
-  S_ST( 'l',   3,      230,     0 ), /*   229 inca              */
-  S_ST( 'l',   3,      231,     0 ), /*   230 incal             */
-  S_ST( 'o',   3,      318,     0 ), /*   231 incall            */
-  S_ST( 'l',   3,      233,   228 ), /*   232 inc               */
-  S_ST( 'u',   3,      234,     0 ), /*   233 incl              */
-  S_ST( 'd',   3,      235,     0 ), /*   234 inclu             */
-  S_ST( 'e',   3,      236,     0 ), /*   235 includ            */
-  S_ST( 'f',   3,      237,     0 ), /*   236 include           */
-  S_ST( 'i',   3,      238,     0 ), /*   237 includef          */
-  S_ST( 'l',   3,      322,     0 ), /*   238 includefi         */
-  S_ST( 'm',   3,      240,   232 ), /*   239 inc               */
-  S_ST( 'e',   3,      319,     0 ), /*   240 incm              */
-  S_ST( 'i',   3,      242,   227 ), /*   241 in                */
-  S_ST( 't',   3,      247,     0 ), /*   242 ini               */
-  S_ST( 'a',   3,      244,     0 ), /*   243 init              */
-  S_ST( 'l',   3,      245,     0 ), /*   244 inita             */
-  S_ST( 'l',   3,      246,     0 ), /*   245 inital            */
-  S_ST( 'o',   3,      320,     0 ), /*   246 initall           */
-  S_ST( 'm',   3,      248,   243 ), /*   247 init              */
-  S_ST( 'e',   3,      321,     0 ), /*   248 initm             */
-  S_ST( 't',   3,      250,   241 ), /*   249 in                */
-  S_ST( 'e',   3,      251,     0 ), /*   250 int               */
-  S_ST( 'r',   3,      252,     0 ), /*   251 inte              */
-  S_ST( 'f',   3,      253,     0 ), /*   252 inter             */
-  S_ST( 'a',   3,      254,     0 ), /*   253 interf            */
-  S_ST( 'c',   3,      324,     0 ), /*   254 interfa           */
-  S_ST( 'p',   3,      445,   326 ), /*   255 i                 */
-  S_ST( 'p',   3,      257,     0 ), /*   256 ip                */
-  S_ST( 'e',   3,      291,     0 ), /*   257 ipp               */
+  S_ST( 'l',   3,      134,   129 ), /*   133 de                */
+  S_ST( 'r',   3,      135,     0 ), /*   134 del               */
+  S_ST( 'e',   3,      136,     0 ), /*   135 delr              */
+  S_ST( 's',   3,      137,     0 ), /*   136 delre             */
+  S_ST( 't',   3,      138,     0 ), /*   137 delres            */
+  S_ST( 'r',   3,      139,     0 ), /*   138 delrest           */
+  S_ST( 'i',   3,      140,     0 ), /*   139 delrestr          */
+  S_ST( 'c',   3,      286,     0 ), /*   140 delrestri         */
+  S_ST( 'v',   3,      142,   133 ), /*   141 de                */
+  S_ST( 'i',   3,      143,     0 ), /*   142 dev               */
+  S_ST( 'c',   3,      287,     0 ), /*   143 devi              */
+  S_ST( 'i',   3,      148,   128 ), /*   144 d                 */
+  S_ST( 'g',   3,      146,     0 ), /*   145 di                */
+  S_ST( 'e',   3,      147,     0 ), /*   146 dig               */
+  S_ST( 's',   3,      288,     0 ), /*   147 dige              */
+  S_ST( 's',   3,      155,   145 ), /*   148 di                */
+  S_ST( 'a',   3,      150,     0 ), /*   149 dis               */
+  S_ST( 'b',   3,      151,     0 ), /*   150 disa              */
+  S_ST( 'l',   3,      289,     0 ), /*   151 disab             */
+  S_ST( 'c',   3,      153,   149 ), /*   152 dis               */
+  S_ST( 'a',   3,      154,     0 ), /*   153 disc              */
+  S_ST( 'r',   3,      290,     0 ), /*   154 disca             */
+  S_ST( 'p',   3,      156,   152 ), /*   155 dis               */
+  S_ST( 'e',   3,      157,     0 ), /*   156 disp              */
+  S_ST( 'r',   3,      158,     0 ), /*   157 dispe             */
+  S_ST( 's',   3,      159,     0 ), /*   158 disper            */
+  S_ST( 'i',   3,      160,     0 ), /*   159 dispers           */
+  S_ST( 'o',   3,      291,     0 ), /*   160 dispersi          */
+  S_ST( 'r',   3,      168,   144 ), /*   161 d                 */
+  S_ST( 'i',   3,      163,     0 ), /*   162 dr                */
+  S_ST( 'f',   3,      164,     0 ), /*   163 dri               */
+  S_ST( 't',   3,      165,     0 ), /*   164 drif              */
+  S_ST( 'f',   3,      166,     0 ), /*   165 drift             */
+  S_ST( 'i',   3,      167,     0 ), /*   166 driftf            */
+  S_ST( 'l',   3,      293,     0 ), /*   167 driftfi           */
+  S_ST( 'o',   3,      294,   162 ), /*   168 dr                */
+  S_ST( 's',   3,      170,   161 ), /*   169 d                 */
+  S_ST( 'c',   3,      295,     0 ), /*   170 ds                */
+  S_ST( 'u',   3,      172,   169 ), /*   171 d                 */
+  S_ST( 'r',   3,      173,     0 ), /*   172 du                */
+  S_ST( 'a',   3,      174,     0 ), /*   173 dur               */
+  S_ST( 't',   3,      175,     0 ), /*   174 dura              */
+  S_ST( 'i',   3,      176,     0 ), /*   175 durat             */
+  S_ST( 'o',   3,      465,     0 ), /*   176 durati            */
+  S_ST( 'e',   3,      182,   126 ), /*   177                   */
+  S_ST( 'n',   3,      298,     0 ), /*   178 e                 */
+  S_ST( 'a',   3,      180,     0 ), /*   179 en                */
+  S_ST( 'b',   3,      181,     0 ), /*   180 ena               */
+  S_ST( 'l',   3,      297,     0 ), /*   181 enab              */
+  S_ST( 'p',   3,      183,   178 ), /*   182 e                 */
+  S_ST( 'e',   3,      184,     0 ), /*   183 ep                */
+  S_ST( 'e',   3,      299,     0 ), /*   184 epe               */
+  S_ST( 'f',   3,      206,   177 ), /*   185                   */
+  S_ST( 'i',   3,      187,     0 ), /*   186 f                 */
+  S_ST( 'l',   3,      301,     0 ), /*   187 fi                */
+  S_ST( 'g',   3,      189,     0 ), /*   188 file              */
+  S_ST( 'e',   3,      302,     0 ), /*   189 fileg             */
+  S_ST( 'n',   3,      191,   188 ), /*   190 file              */
+  S_ST( 'u',   3,      303,     0 ), /*   191 filen             */
+  S_ST( 'l',   3,      196,   186 ), /*   192 f                 */
+  S_ST( 'a',   3,      195,     0 ), /*   193 fl                */
+  S_ST( 'g',   3,      307,     0 ), /*   194 fla               */
+  S_ST( 'k',   3,      308,   194 ), /*   195 fla               */
+  S_ST( 'o',   3,      197,   193 ), /*   196 fl                */
+  S_ST( 'o',   3,      309,     0 ), /*   197 flo               */
+  S_ST( 'r',   3,      199,   192 ), /*   198 f                 */
+  S_ST( 'e',   3,      310,     0 ), /*   199 fr                */
+  S_ST( '_',   3,      201,     0 ), /*   200 freq              */
+  S_ST( 'o',   3,      202,     0 ), /*   201 freq_             */
+  S_ST( 'f',   3,      203,     0 ), /*   202 freq_o            */
+  S_ST( 'f',   3,      204,     0 ), /*   203 freq_of           */
+  S_ST( 's',   3,      205,     0 ), /*   204 freq_off          */
+  S_ST( 'e',   3,      466,     0 ), /*   205 freq_offs         */
+  S_ST( 'u',   3,      209,   198 ), /*   206 f                 */
+  S_ST( 'd',   3,      208,     0 ), /*   207 fu                */
+  S_ST( 'g',   3,      311,     0 ), /*   208 fud               */
+  S_ST( 'z',   3,      312,   207 ), /*   209 fu                */
+  S_ST( 'h',   3,      213,   185 ), /*   210                   */
+  S_ST( 'o',   3,      212,     0 ), /*   211 h                 */
+  S_ST( 's',   3,      313,     0 ), /*   212 ho                */
+  S_ST( 'u',   3,      214,   211 ), /*   213 h                 */
+  S_ST( 'f',   3,      215,     0 ), /*   214 hu                */
+  S_ST( 'f',   3,      216,     0 ), /*   215 huf               */
+  S_ST( 'p',   3,      217,     0 ), /*   216 huff              */
+  S_ST( 'u',   3,      218,     0 ), /*   217 huffp             */
+  S_ST( 'f',   3,      314,     0 ), /*   218 huffpu            */
+  S_ST( 'i',   3,      430,   210 ), /*   219                   */
+  S_ST( 'b',   3,      221,     0 ), /*   220 i                 */
+  S_ST( 'u',   3,      222,     0 ), /*   221 ib                */
+  S_ST( 'r',   3,      223,     0 ), /*   222 ibu               */
+  S_ST( 's',   3,      315,     0 ), /*   223 ibur              */
+  S_ST( 'd',   3,      225,   220 ), /*   224 i                 */
+  S_ST( 'e',   3,      226,     0 ), /*   225 id                */
+  S_ST( 'n',   3,      316,     0 ), /*   226 ide               */
+  S_ST( 'g',   3,      228,   224 ), /*   227 i                 */
+  S_ST( 'n',   3,      229,     0 ), /*   228 ig                */
+  S_ST( 'o',   3,      230,     0 ), /*   229 ign               */
+  S_ST( 'r',   3,      317,     0 ), /*   230 igno              */
+  S_ST( 'h',   3,      232,     0 ), /*   231 ignore            */
+  S_ST( 'a',   3,      233,     0 ), /*   232 ignoreh           */
+  S_ST( 's',   3,      318,     0 ), /*   233 ignoreha          */
+  S_ST( 'n',   3,      257,   227 ), /*   234 i                 */
+  S_ST( 'c',   3,      247,     0 ), /*   235 in                */
+  S_ST( 'a',   3,      237,     0 ), /*   236 inc               */
+  S_ST( 'l',   3,      238,     0 ), /*   237 inca              */
+  S_ST( 'l',   3,      239,     0 ), /*   238 incal             */
+  S_ST( 'o',   3,      319,     0 ), /*   239 incall            */
+  S_ST( 'l',   3,      241,   236 ), /*   240 inc               */
+  S_ST( 'u',   3,      242,     0 ), /*   241 incl              */
+  S_ST( 'd',   3,      243,     0 ), /*   242 inclu             */
+  S_ST( 'e',   3,      244,     0 ), /*   243 includ            */
+  S_ST( 'f',   3,      245,     0 ), /*   244 include           */
+  S_ST( 'i',   3,      246,     0 ), /*   245 includef          */
+  S_ST( 'l',   3,      323,     0 ), /*   246 includefi         */
+  S_ST( 'm',   3,      248,   240 ), /*   247 inc               */
+  S_ST( 'e',   3,      320,     0 ), /*   248 incm              */
+  S_ST( 'i',   3,      250,   235 ), /*   249 in                */
+  S_ST( 't',   3,      255,     0 ), /*   250 ini               */
+  S_ST( 'a',   3,      252,     0 ), /*   251 init              */
+  S_ST( 'l',   3,      253,     0 ), /*   252 inita             */
+  S_ST( 'l',   3,      254,     0 ), /*   253 inital            */
+  S_ST( 'o',   3,      321,     0 ), /*   254 initall           */
+  S_ST( 'm',   3,      256,   251 ), /*   255 init              */
+  S_ST( 'e',   3,      322,     0 ), /*   256 initm             */
+  S_ST( 't',   3,      292,   249 ), /*   257 in                */
   S_ST( 'v',   1,        0,     0 ), /*   258 T_Abbrev          */
   S_ST( 'e',   0,        0,     0 ), /*   259 T_Age             */
   S_ST( 'l',   0,       12,     0 ), /*   260 T_All             */
@@ -515,721 +516,730 @@ const scan_state sst[1002] = {
   S_ST( 'l',   0,        0,     0 ), /*   283 T_Ctl             */
   S_ST( 'y',   0,        0,     0 ), /*   284 T_Day             */
   S_ST( 't',   0,        0,     0 ), /*   285 T_Default         */
-  S_ST( 'e',   1,        0,     0 ), /*   286 T_Device          */
-  S_ST( 't',   1,        0,     0 ), /*   287 T_Digest          */
-  S_ST( 'e',   0,        0,     0 ), /*   288 T_Disable         */
-  S_ST( 'd',   0,        0,     0 ), /*   289 T_Discard         */
-  S_ST( 'n',   0,        0,     0 ), /*   290 T_Dispersion      */
-  S_ST( 'e',   3,      299,     0 ), /*   291 ippe              */
-  S_ST( 'e',   1,        0,     0 ), /*   292 T_Driftfile       */
-  S_ST( 'p',   0,        0,     0 ), /*   293 T_Drop            */
-  S_ST( 'p',   0,        0,     0 ), /*   294 T_Dscp            */
-  S_ST( '.',   0,        0,     0 ), /*   295 T_Ellipsis        */
-  S_ST( 'e',   0,        0,     0 ), /*   296 T_Enable          */
-  S_ST( 'd',   0,        0,   171 ), /*   297 T_End             */
-  S_ST( 'r',   0,        0,     0 ), /*   298 T_Epeer           */
-  S_ST( 'r',   3,      323,     0 ), /*   299 ippee             */
-  S_ST( 'e',   1,      182,     0 ), /*   300 T_File            */
-  S_ST( 'n',   0,        0,     0 ), /*   301 T_Filegen         */
-  S_ST( 'm',   0,        0,     0 ), /*   302 T_Filenum         */
-  S_ST( '1',   0,        0,     0 ), /*   303 T_Flag1           */
-  S_ST( '2',   0,        0,   303 ), /*   304 T_Flag2           */
-  S_ST( '3',   0,        0,   304 ), /*   305 T_Flag3           */
-  S_ST( '4',   0,        0,   305 ), /*   306 T_Flag4           */
-  S_ST( 'e',   0,        0,     0 ), /*   307 T_Flake           */
-  S_ST( 'r',   0,        0,     0 ), /*   308 T_Floor           */
-  S_ST( 'q',   0,      192,     0 ), /*   309 T_Freq            */
-  S_ST( 'e',   1,        0,     0 ), /*   310 T_Fudge           */
-  S_ST( 'z',   0,        0,     0 ), /*   311 T_Fuzz            */
-  S_ST( 't',   1,        0,     0 ), /*   312 T_Host            */
-  S_ST( 'f',   0,        0,     0 ), /*   313 T_Huffpuff        */
-  S_ST( 't',   0,        0,     0 ), /*   314 T_Iburst          */
-  S_ST( 't',   1,        0,     0 ), /*   315 T_Ident           */
-  S_ST( 'e',   0,      223,     0 ), /*   316 T_Ignore          */
-  S_ST( 'h',   0,        0,     0 ), /*   317 T_Ignorehash      */
-  S_ST( 'c',   0,        0,     0 ), /*   318 T_Incalloc        */
-  S_ST( 'm',   0,        0,     0 ), /*   319 T_Incmem          */
-  S_ST( 'c',   0,        0,     0 ), /*   320 T_Initalloc       */
-  S_ST( 'm',   0,        0,     0 ), /*   321 T_Initmem         */
-  S_ST( 'e',   1,        0,     0 ), /*   322 T_Includefile     */
-  S_ST( 'l',   3,      325,     0 ), /*   323 ippeer            */
-  S_ST( 'e',   0,        0,     0 ), /*   324 T_Interface       */
-  S_ST( 'i',   3,      417,     0 ), /*   325 ippeerl           */
-  S_ST( 'o',   0,        0,   226 ), /*   326 T_Io              */
-  S_ST( 't',   0,        0,     0 ), /*   327 T_Ippeerlimit     */
-  S_ST( '4',   0,        0,     0 ), /*   328 T_Ipv4            */
-  S_ST( '4',   0,        0,     0 ), /*   329 T_Ipv4_flag       */
-  S_ST( '6',   0,        0,   328 ), /*   330 T_Ipv6            */
-  S_ST( '6',   0,        0,   329 ), /*   331 T_Ipv6_flag       */
-  S_ST( 'l',   0,        0,     0 ), /*   332 T_Kernel          */
-  S_ST( 'y',   0,      334,   474 ), /*   333 T_Key             */
-  S_ST( 's',   1,      477,     0 ), /*   334 T_Keys            */
-  S_ST( 'r',   1,        0,     0 ), /*   335 T_Keysdir         */
-  S_ST( 'd',   0,        0,     0 ), /*   336 T_Kod             */
-  S_ST( 'e',   1,        0,     0 ), /*   337 T_Leapfile        */
-  S_ST( 'l',   0,        0,     0 ), /*   338 T_Leapsmearinterval */
-  S_ST( 'd',   0,        0,     0 ), /*   339 T_Limited         */
-  S_ST( 'k',   0,        0,     0 ), /*   340 T_Link            */
-  S_ST( 'n',   0,        0,     0 ), /*   341 T_Listen          */
-  S_ST( 'g',   2,        0,     0 ), /*   342 T_Logconfig       */
-  S_ST( 'e',   1,        0,     0 ), /*   343 T_Logfile         */
-  S_ST( 's',   0,        0,     0 ), /*   344 T_Loopstats       */
-  S_ST( 'p',   0,        0,     0 ), /*   345 T_Lowpriotrap     */
-  S_ST( 't',   1,        0,     0 ), /*   346 T_Manycastclient  */
-  S_ST( 'r',   2,        0,     0 ), /*   347 T_Manycastserver  */
-  S_ST( 'k',   0,        0,     0 ), /*   348 T_Mask            */
-  S_ST( 'e',   0,        0,     0 ), /*   349 T_Maxage          */
-  S_ST( 'k',   0,        0,     0 ), /*   350 T_Maxclock        */
-  S_ST( 'h',   0,        0,     0 ), /*   351 T_Maxdepth        */
-  S_ST( 't',   0,        0,     0 ), /*   352 T_Maxdist         */
-  S_ST( 'm',   0,        0,     0 ), /*   353 T_Maxmem          */
-  S_ST( 'l',   0,        0,     0 ), /*   354 T_Maxpoll         */
-  S_ST( 's',   0,        0,     0 ), /*   355 T_Mdnstries       */
-  S_ST( 'm',   0,      577,     0 ), /*   356 T_Mem             */
-  S_ST( 'k',   0,        0,     0 ), /*   357 T_Memlock         */
-  S_ST( 'k',   0,        0,     0 ), /*   358 T_Minclock        */
-  S_ST( 'h',   0,        0,     0 ), /*   359 T_Mindepth        */
-  S_ST( 't',   0,        0,     0 ), /*   360 T_Mindist         */
-  S_ST( 'm',   0,        0,     0 ), /*   361 T_Minimum         */
-  S_ST( 'r',   0,        0,     0 ), /*   362 T_Minjitter       */
-  S_ST( 'l',   0,        0,     0 ), /*   363 T_Minpoll         */
-  S_ST( 'e',   0,        0,     0 ), /*   364 T_Minsane         */
-  S_ST( 'e',   0,      366,     0 ), /*   365 T_Mode            */
-  S_ST( '7',   0,        0,     0 ), /*   366 T_Mode7           */
-  S_ST( 'r',   0,        0,     0 ), /*   367 T_Monitor         */
-  S_ST( 'h',   0,        0,     0 ), /*   368 T_Month           */
-  S_ST( 'u',   0,        0,     0 ), /*   369 T_Mru             */
-  S_ST( 'p',   0,        0,     0 ), /*   370 T_Mssntp          */
-  S_ST( 't',   2,        0,     0 ), /*   371 T_Multicastclient */
-  S_ST( 'c',   0,        0,     0 ), /*   372 T_Nic             */
-  S_ST( 'k',   0,        0,     0 ), /*   373 T_Nolink          */
-  S_ST( 'y',   0,        0,     0 ), /*   374 T_Nomodify        */
-  S_ST( 't',   0,        0,     0 ), /*   375 T_Nomrulist       */
-  S_ST( 'e',   0,        0,     0 ), /*   376 T_None            */
-  S_ST( 'e',   0,        0,     0 ), /*   377 T_Nonvolatile     */
-  S_ST( 'r',   0,        0,     0 ), /*   378 T_Noepeer         */
-  S_ST( 'r',   0,        0,     0 ), /*   379 T_Nopeer          */
-  S_ST( 'y',   0,        0,     0 ), /*   380 T_Noquery         */
-  S_ST( 't',   0,        0,     0 ), /*   381 T_Noselect        */
-  S_ST( 'e',   0,        0,     0 ), /*   382 T_Noserve         */
-  S_ST( 'p',   0,        0,     0 ), /*   383 T_Notrap          */
-  S_ST( 't',   0,        0,     0 ), /*   384 T_Notrust         */
-  S_ST( 'p',   0,      682,     0 ), /*   385 T_Ntp             */
-  S_ST( 't',   0,        0,     0 ), /*   386 T_Ntpport         */
-  S_ST( 't',   1,        0,     0 ), /*   387 T_NtpSignDsocket  */
-  S_ST( 'n',   0,      697,     0 ), /*   388 T_Orphan          */
-  S_ST( 't',   0,        0,     0 ), /*   389 T_Orphanwait      */
-  S_ST( 'y',   0,        0,     0 ), /*   390 T_PCEdigest       */
-  S_ST( 'c',   0,        0,     0 ), /*   391 T_Panic           */
-  S_ST( 'r',   1,      724,     0 ), /*   392 T_Peer            */
-  S_ST( 's',   0,        0,     0 ), /*   393 T_Peerstats       */
-  S_ST( 'e',   2,        0,     0 ), /*   394 T_Phone           */
-  S_ST( 'd',   0,      732,     0 ), /*   395 T_Pid             */
-  S_ST( 'e',   1,        0,     0 ), /*   396 T_Pidfile         */
-  S_ST( 'l',   0,      737,     0 ), /*   397 T_Poll            */
-  S_ST( 't',   0,        0,     0 ), /*   398 T_PollSkewList    */
-  S_ST( 'l',   1,        0,     0 ), /*   399 T_Pool            */
-  S_ST( 't',   0,        0,     0 ), /*   400 T_Port            */
-  S_ST( 'a',   1,        0,     0 ), /*   401 T_PpsData         */
-  S_ST( 't',   0,        0,     0 ), /*   402 T_Preempt         */
-  S_ST( 'r',   0,        0,     0 ), /*   403 T_Prefer          */
-  S_ST( 's',   0,        0,     0 ), /*   404 T_Protostats      */
-  S_ST( 'w',   1,        0,   751 ), /*   405 T_Pw              */
-  S_ST( 'e',   1,        0,     0 ), /*   406 T_Randfile        */
-  S_ST( 's',   0,        0,     0 ), /*   407 T_Rawstats        */
-  S_ST( 'd',   1,        0,     0 ), /*   408 T_Refid           */
-  S_ST( 'y',   0,        0,     0 ), /*   409 T_Requestkey      */
-  S_ST( 't',   0,        0,     0 ), /*   410 T_Reset           */
-  S_ST( 't',   0,        0,     0 ), /*   411 T_Restrict        */
-  S_ST( 'e',   0,        0,     0 ), /*   412 T_Revoke          */
-  S_ST( 't',   0,        0,     0 ), /*   413 T_Rlimit          */
-  S_ST( 'r',   1,        0,     0 ), /*   414 T_Saveconfigdir   */
-  S_ST( 'r',   1,      834,     0 ), /*   415 T_Server          */
-  S_ST( 'e',   0,        0,     0 ), /*   416 T_Serverresponse  */
-  S_ST( 'm',   3,      429,     0 ), /*   417 ippeerli          */
-  S_ST( 'r',   1,        0,     0 ), /*   418 T_Setvar          */
-  S_ST( 'e',   0,        0,     0 ), /*   419 T_Source          */
-  S_ST( 'e',   0,        0,     0 ), /*   420 T_Stacksize       */
-  S_ST( 's',   0,        0,     0 ), /*   421 T_Statistics      */
-  S_ST( 's',   0,      878,   873 ), /*   422 T_Stats           */
-  S_ST( 'r',   1,        0,     0 ), /*   423 T_Statsdir        */
-  S_ST( 'p',   0,      886,     0 ), /*   424 T_Step            */
-  S_ST( 'k',   0,        0,     0 ), /*   425 T_Stepback        */
-  S_ST( 'd',   0,        0,     0 ), /*   426 T_Stepfwd         */
-  S_ST( 't',   0,        0,     0 ), /*   427 T_Stepout         */
-  S_ST( 'm',   0,        0,     0 ), /*   428 T_Stratum         */
-  S_ST( 'i',   3,      327,     0 ), /*   429 ippeerlim         */
-  S_ST( 's',   0,      893,     0 ), /*   430 T_Sys             */
-  S_ST( 's',   0,        0,     0 ), /*   431 T_Sysstats        */
-  S_ST( 'k',   0,        0,     0 ), /*   432 T_Tick            */
-  S_ST( '1',   0,        0,     0 ), /*   433 T_Time1           */
-  S_ST( '2',   0,        0,   433 ), /*   434 T_Time2           */
-  S_ST( 'a',   1,        0,     0 ), /*   435 T_TimeData        */
-  S_ST( 'r',   0,        0,   902 ), /*   436 T_Timer           */
-  S_ST( 's',   0,        0,     0 ), /*   437 T_Timingstats     */
-  S_ST( 'r',   0,        0,     0 ), /*   438 T_Tinker          */
-  S_ST( 's',   0,        0,     0 ), /*   439 T_Tos             */
-  S_ST( 'p',   1,        0,     0 ), /*   440 T_Trap            */
-  S_ST( 'e',   0,        0,     0 ), /*   441 T_True            */
-  S_ST( 'y',   0,        0,     0 ), /*   442 T_Trustedkey      */
-  S_ST( 'l',   0,        0,     0 ), /*   443 T_Ttl             */
-  S_ST( 'e',   0,        0,     0 ), /*   444 T_Type            */
-  S_ST( 'v',   3,      330,   256 ), /*   445 ip                */
-  S_ST( 'y',   0,        0,     0 ), /*   446 T_UEcrypto        */
-  S_ST( 'y',   0,        0,     0 ), /*   447 T_UEcryptonak     */
-  S_ST( 'y',   0,        0,     0 ), /*   448 T_UEdigest        */
-  S_ST( 'g',   1,        0,     0 ), /*   449 T_Unconfig        */
-  S_ST( 'r',   1,      938,     0 ), /*   450 T_Unpeer          */
-  S_ST( 'n',   0,        0,     0 ), /*   451 T_Version         */
-  S_ST( 'j',   3,      458,   211 ), /*   452                   */
-  S_ST( 'k',   0,        0,     0 ), /*   453 T_Week            */
-  S_ST( 'd',   0,        0,     0 ), /*   454 T_Wildcard        */
-  S_ST( 'e',   0,        0,     0 ), /*   455 T_Xleave          */
-  S_ST( 'e',   0,        0,     0 ), /*   456 T_Xmtnonce        */
-  S_ST( 'r',   0,        0,     0 ), /*   457 T_Year            */
-  S_ST( 'i',   3,      459,     0 ), /*   458 j                 */
-  S_ST( 't',   3,      470,     0 ), /*   459 ji                */
-  S_ST( 'e',   0,        0,     0 ), /*   460 T_Simulate        */
-  S_ST( 'y',   0,        0,     0 ), /*   461 T_Beep_Delay      */
-  S_ST( 'n',   0,        0,     0 ), /*   462 T_Sim_Duration    */
-  S_ST( 't',   0,        0,     0 ), /*   463 T_Server_Offset   */
-  S_ST( 'n',   0,        0,     0 ), /*   464 T_Duration        */
-  S_ST( 't',   0,        0,     0 ), /*   465 T_Freq_Offset     */
-  S_ST( 'r',   0,        0,     0 ), /*   466 T_Wander          */
-  S_ST( 'r',   0,        0,     0 ), /*   467 T_Jitter          */
-  S_ST( 'y',   0,        0,     0 ), /*   468 T_Prop_Delay      */
-  S_ST( 'y',   0,        0,     0 ), /*   469 T_Proc_Delay      */
-  S_ST( 't',   3,      471,     0 ), /*   470 jit               */
-  S_ST( 'e',   3,      467,     0 ), /*   471 jitt              */
-  S_ST( 'k',   3,      479,   452 ), /*   472                   */
-  S_ST( 'e',   3,      333,     0 ), /*   473 k                 */
-  S_ST( 'r',   3,      475,     0 ), /*   474 ke                */
-  S_ST( 'n',   3,      476,     0 ), /*   475 ker               */
-  S_ST( 'e',   3,      332,     0 ), /*   476 kern              */
-  S_ST( 'd',   3,      478,     0 ), /*   477 keys              */
-  S_ST( 'i',   3,      335,     0 ), /*   478 keysd             */
-  S_ST( 'o',   3,      336,   473 ), /*   479 k                 */
-  S_ST( 'l',   3,      508,   472 ), /*   480                   */
-  S_ST( 'e',   3,      482,     0 ), /*   481 l                 */
-  S_ST( 'a',   3,      483,     0 ), /*   482 le                */
-  S_ST( 'p',   3,      487,     0 ), /*   483 lea               */
-  S_ST( 'f',   3,      485,     0 ), /*   484 leap              */
-  S_ST( 'i',   3,      486,     0 ), /*   485 leapf             */
-  S_ST( 'l',   3,      337,     0 ), /*   486 leapfi            */
-  S_ST( 's',   3,      488,   484 ), /*   487 leap              */
-  S_ST( 'm',   3,      489,     0 ), /*   488 leaps             */
-  S_ST( 'e',   3,      490,     0 ), /*   489 leapsm            */
-  S_ST( 'a',   3,      491,     0 ), /*   490 leapsme           */
-  S_ST( 'r',   3,      492,     0 ), /*   491 leapsmea          */
-  S_ST( 'i',   3,      493,     0 ), /*   492 leapsmear         */
-  S_ST( 'n',   3,      494,     0 ), /*   493 leapsmeari        */
-  S_ST( 't',   3,      495,     0 ), /*   494 leapsmearin       */
-  S_ST( 'e',   3,      496,     0 ), /*   495 leapsmearint      */
-  S_ST( 'r',   3,      497,     0 ), /*   496 leapsmearinte     */
-  S_ST( 'v',   3,      498,     0 ), /*   497 leapsmearinter    */
-  S_ST( 'a',   3,      338,     0 ), /*   498 leapsmearinterv   */
-  S_ST( 'i',   3,      505,   481 ), /*   499 l                 */
-  S_ST( 'm',   3,      501,     0 ), /*   500 li                */
-  S_ST( 'i',   3,      502,     0 ), /*   501 lim               */
-  S_ST( 't',   3,      503,     0 ), /*   502 limi              */
-  S_ST( 'e',   3,      339,     0 ), /*   503 limit             */
-  S_ST( 'n',   3,      340,   500 ), /*   504 li                */
-  S_ST( 's',   3,      506,   504 ), /*   505 li                */
-  S_ST( 't',   3,      507,     0 ), /*   506 lis               */
-  S_ST( 'e',   3,      341,     0 ), /*   507 list              */
-  S_ST( 'o',   3,      524,   499 ), /*   508 l                 */
-  S_ST( 'g',   3,      515,     0 ), /*   509 lo                */
-  S_ST( 'c',   3,      511,     0 ), /*   510 log               */
-  S_ST( 'o',   3,      512,     0 ), /*   511 logc              */
-  S_ST( 'n',   3,      513,     0 ), /*   512 logco             */
-  S_ST( 'f',   3,      514,     0 ), /*   513 logcon            */
-  S_ST( 'i',   3,      342,     0 ), /*   514 logconf           */
-  S_ST( 'f',   3,      516,   510 ), /*   515 log               */
-  S_ST( 'i',   3,      517,     0 ), /*   516 logf              */
-  S_ST( 'l',   3,      343,     0 ), /*   517 logfi             */
-  S_ST( 'o',   3,      519,   509 ), /*   518 lo                */
-  S_ST( 'p',   3,      520,     0 ), /*   519 loo               */
-  S_ST( 's',   3,      521,     0 ), /*   520 loop              */
-  S_ST( 't',   3,      522,     0 ), /*   521 loops             */
-  S_ST( 'a',   3,      523,     0 ), /*   522 loopst            */
-  S_ST( 't',   3,      344,     0 ), /*   523 loopsta           */
-  S_ST( 'w',   3,      525,   518 ), /*   524 lo                */
-  S_ST( 'p',   3,      526,     0 ), /*   525 low               */
-  S_ST( 'r',   3,      527,     0 ), /*   526 lowp              */
-  S_ST( 'i',   3,      528,     0 ), /*   527 lowpr             */
-  S_ST( 'o',   3,      529,     0 ), /*   528 lowpri            */
-  S_ST( 't',   3,      530,     0 ), /*   529 lowprio           */
-  S_ST( 'r',   3,      531,     0 ), /*   530 lowpriot          */
-  S_ST( 'a',   3,      345,     0 ), /*   531 lowpriotr         */
-  S_ST( 'm',   3,      618,   480 ), /*   532                   */
-  S_ST( 'a',   3,      551,     0 ), /*   533 m                 */
-  S_ST( 'n',   3,      535,     0 ), /*   534 ma                */
-  S_ST( 'y',   3,      536,     0 ), /*   535 man               */
-  S_ST( 'c',   3,      537,     0 ), /*   536 many              */
-  S_ST( 'a',   3,      538,     0 ), /*   537 manyc             */
-  S_ST( 's',   3,      539,     0 ), /*   538 manyca            */
-  S_ST( 't',   3,      545,     0 ), /*   539 manycas           */
-  S_ST( 'c',   3,      541,     0 ), /*   540 manycast          */
-  S_ST( 'l',   3,      542,     0 ), /*   541 manycastc         */
-  S_ST( 'i',   3,      543,     0 ), /*   542 manycastcl        */
-  S_ST( 'e',   3,      544,     0 ), /*   543 manycastcli       */
-  S_ST( 'n',   3,      346,     0 ), /*   544 manycastclie      */
-  S_ST( 's',   3,      546,   540 ), /*   545 manycast          */
-  S_ST( 'e',   3,      547,     0 ), /*   546 manycasts         */
-  S_ST( 'r',   3,      548,     0 ), /*   547 manycastse        */
-  S_ST( 'v',   3,      549,     0 ), /*   548 manycastser       */
-  S_ST( 'e',   3,      347,     0 ), /*   549 manycastserv      */
-  S_ST( 's',   3,      348,   534 ), /*   550 ma                */
-  S_ST( 'x',   3,      566,   550 ), /*   551 ma                */
-  S_ST( 'a',   3,      553,     0 ), /*   552 max               */
-  S_ST( 'g',   3,      349,     0 ), /*   553 maxa              */
-  S_ST( 'c',   3,      555,   552 ), /*   554 max               */
-  S_ST( 'l',   3,      556,     0 ), /*   555 maxc              */
-  S_ST( 'o',   3,      557,     0 ), /*   556 maxcl             */
-  S_ST( 'c',   3,      350,     0 ), /*   557 maxclo            */
-  S_ST( 'd',   3,      562,   554 ), /*   558 max               */
-  S_ST( 'e',   3,      560,     0 ), /*   559 maxd              */
-  S_ST( 'p',   3,      561,     0 ), /*   560 maxde             */
-  S_ST( 't',   3,      351,     0 ), /*   561 maxdep            */
-  S_ST( 'i',   3,      563,   559 ), /*   562 maxd              */
-  S_ST( 's',   3,      352,     0 ), /*   563 maxdi             */
-  S_ST( 'm',   3,      565,   558 ), /*   564 max               */
-  S_ST( 'e',   3,      353,     0 ), /*   565 maxm              */
-  S_ST( 'p',   3,      567,   564 ), /*   566 max               */
-  S_ST( 'o',   3,      568,     0 ), /*   567 maxp              */
-  S_ST( 'l',   3,      354,     0 ), /*   568 maxpo             */
-  S_ST( 'd',   3,      570,   533 ), /*   569 m                 */
-  S_ST( 'n',   3,      571,     0 ), /*   570 md                */
-  S_ST( 's',   3,      572,     0 ), /*   571 mdn               */
-  S_ST( 't',   3,      573,     0 ), /*   572 mdns              */
-  S_ST( 'r',   3,      574,     0 ), /*   573 mdnst             */
-  S_ST( 'i',   3,      575,     0 ), /*   574 mdnstr            */
-  S_ST( 'e',   3,      355,     0 ), /*   575 mdnstri           */
-  S_ST( 'e',   3,      356,   569 ), /*   576 m                 */
-  S_ST( 'l',   3,      578,     0 ), /*   577 mem               */
-  S_ST( 'o',   3,      579,     0 ), /*   578 meml              */
-  S_ST( 'c',   3,      357,     0 ), /*   579 memlo             */
-  S_ST( 'i',   3,      581,   576 ), /*   580 m                 */
-  S_ST( 'n',   3,      603,     0 ), /*   581 mi                */
-  S_ST( 'c',   3,      583,     0 ), /*   582 min               */
-  S_ST( 'l',   3,      584,     0 ), /*   583 minc              */
-  S_ST( 'o',   3,      585,     0 ), /*   584 mincl             */
-  S_ST( 'c',   3,      358,     0 ), /*   585 minclo            */
-  S_ST( 'd',   3,      590,   582 ), /*   586 min               */
-  S_ST( 'e',   3,      588,     0 ), /*   587 mind              */
-  S_ST( 'p',   3,      589,     0 ), /*   588 minde             */
-  S_ST( 't',   3,      359,     0 ), /*   589 mindep            */
-  S_ST( 'i',   3,      591,   587 ), /*   590 mind              */
-  S_ST( 's',   3,      360,     0 ), /*   591 mindi             */
-  S_ST( 'i',   3,      593,   586 ), /*   592 min               */
-  S_ST( 'm',   3,      594,     0 ), /*   593 mini              */
-  S_ST( 'u',   3,      361,     0 ), /*   594 minim             */
-  S_ST( 'j',   3,      596,   592 ), /*   595 min               */
-  S_ST( 'i',   3,      597,     0 ), /*   596 minj              */
-  S_ST( 't',   3,      598,     0 ), /*   597 minji             */
-  S_ST( 't',   3,      599,     0 ), /*   598 minjit            */
-  S_ST( 'e',   3,      362,     0 ), /*   599 minjitt           */
-  S_ST( 'p',   3,      601,   595 ), /*   600 min               */
-  S_ST( 'o',   3,      602,     0 ), /*   601 minp              */
-  S_ST( 'l',   3,      363,     0 ), /*   602 minpo             */
-  S_ST( 's',   3,      604,   600 ), /*   603 min               */
-  S_ST( 'a',   3,      605,     0 ), /*   604 mins              */
-  S_ST( 'n',   3,      364,     0 ), /*   605 minsa             */
-  S_ST( 'o',   3,      608,   580 ), /*   606 m                 */
-  S_ST( 'd',   3,      365,     0 ), /*   607 mo                */
-  S_ST( 'n',   3,      612,   607 ), /*   608 mo                */
-  S_ST( 'i',   3,      610,     0 ), /*   609 mon               */
-  S_ST( 't',   3,      611,     0 ), /*   610 moni              */
-  S_ST( 'o',   3,      367,     0 ), /*   611 monit             */
-  S_ST( 't',   3,      368,   609 ), /*   612 mon               */
-  S_ST( 'r',   3,      369,   606 ), /*   613 m                 */
-  S_ST( 's',   3,      615,   613 ), /*   614 m                 */
-  S_ST( 's',   3,      616,     0 ), /*   615 ms                */
-  S_ST( 'n',   3,      617,     0 ), /*   616 mss               */
-  S_ST( 't',   3,      370,     0 ), /*   617 mssn              */
-  S_ST( 'u',   3,      619,   614 ), /*   618 m                 */
-  S_ST( 'l',   3,      620,     0 ), /*   619 mu                */
-  S_ST( 't',   3,      621,     0 ), /*   620 mul               */
-  S_ST( 'i',   3,      622,     0 ), /*   621 mult              */
-  S_ST( 'c',   3,      623,     0 ), /*   622 multi             */
-  S_ST( 'a',   3,      624,     0 ), /*   623 multic            */
-  S_ST( 's',   3,      625,     0 ), /*   624 multica           */
-  S_ST( 't',   3,      626,     0 ), /*   625 multicas          */
-  S_ST( 'c',   3,      627,     0 ), /*   626 multicast         */
-  S_ST( 'l',   3,      628,     0 ), /*   627 multicastc        */
-  S_ST( 'i',   3,      629,     0 ), /*   628 multicastcl       */
-  S_ST( 'e',   3,      630,     0 ), /*   629 multicastcli      */
-  S_ST( 'n',   3,      371,     0 ), /*   630 multicastclie     */
-  S_ST( 'n',   3,      678,   532 ), /*   631                   */
-  S_ST( 'i',   3,      372,     0 ), /*   632 n                 */
-  S_ST( 'o',   3,      673,   632 ), /*   633 n                 */
-  S_ST( 'e',   3,      635,     0 ), /*   634 no                */
-  S_ST( 'p',   3,      636,     0 ), /*   635 noe               */
-  S_ST( 'e',   3,      637,     0 ), /*   636 noep              */
-  S_ST( 'e',   3,      378,     0 ), /*   637 noepe             */
-  S_ST( 'l',   3,      639,   634 ), /*   638 no                */
-  S_ST( 'i',   3,      640,     0 ), /*   639 nol               */
-  S_ST( 'n',   3,      373,     0 ), /*   640 noli              */
-  S_ST( 'm',   3,      646,   638 ), /*   641 no                */
-  S_ST( 'o',   3,      643,     0 ), /*   642 nom               */
-  S_ST( 'd',   3,      644,     0 ), /*   643 nomo              */
-  S_ST( 'i',   3,      645,     0 ), /*   644 nomod             */
-  S_ST( 'f',   3,      374,     0 ), /*   645 nomodi            */
-  S_ST( 'r',   3,      647,   642 ), /*   646 nom               */
-  S_ST( 'u',   3,      648,     0 ), /*   647 nomr              */
-  S_ST( 'l',   3,      649,     0 ), /*   648 nomru             */
-  S_ST( 'i',   3,      650,     0 ), /*   649 nomrul            */
-  S_ST( 's',   3,      375,     0 ), /*   650 nomruli           */
-  S_ST( 'n',   3,      652,   641 ), /*   651 no                */
-  S_ST( 'v',   3,      653,   376 ), /*   652 non               */
-  S_ST( 'o',   3,      654,     0 ), /*   653 nonv              */
-  S_ST( 'l',   3,      655,     0 ), /*   654 nonvo             */
-  S_ST( 'a',   3,      656,     0 ), /*   655 nonvol            */
-  S_ST( 't',   3,      657,     0 ), /*   656 nonvola           */
-  S_ST( 'i',   3,      658,     0 ), /*   657 nonvolat          */
-  S_ST( 'l',   3,      377,     0 ), /*   658 nonvolati         */
-  S_ST( 'p',   3,      660,   651 ), /*   659 no                */
-  S_ST( 'e',   3,      661,     0 ), /*   660 nop               */
-  S_ST( 'e',   3,      379,     0 ), /*   661 nope              */
-  S_ST( 'q',   3,      663,   659 ), /*   662 no                */
-  S_ST( 'u',   3,      664,     0 ), /*   663 noq               */
-  S_ST( 'e',   3,      665,     0 ), /*   664 noqu              */
-  S_ST( 'r',   3,      380,     0 ), /*   665 noque             */
-  S_ST( 's',   3,      667,   662 ), /*   666 no                */
-  S_ST( 'e',   3,      671,     0 ), /*   667 nos               */
-  S_ST( 'l',   3,      669,     0 ), /*   668 nose              */
-  S_ST( 'e',   3,      670,     0 ), /*   669 nosel             */
-  S_ST( 'c',   3,      381,     0 ), /*   670 nosele            */
-  S_ST( 'r',   3,      672,   668 ), /*   671 nose              */
-  S_ST( 'v',   3,      382,     0 ), /*   672 noser             */
-  S_ST( 't',   3,      674,   666 ), /*   673 no                */
-  S_ST( 'r',   3,      676,     0 ), /*   674 not               */
-  S_ST( 'a',   3,      383,     0 ), /*   675 notr              */
-  S_ST( 'u',   3,      677,   675 ), /*   676 notr              */
-  S_ST( 's',   3,      384,     0 ), /*   677 notru             */
-  S_ST( 't',   3,      385,   633 ), /*   678 n                 */
-  S_ST( 'p',   3,      680,     0 ), /*   679 ntp               */
-  S_ST( 'o',   3,      681,     0 ), /*   680 ntpp              */
-  S_ST( 'r',   3,      386,     0 ), /*   681 ntppo             */
-  S_ST( 's',   3,      683,   679 ), /*   682 ntp               */
-  S_ST( 'i',   3,      684,     0 ), /*   683 ntps              */
-  S_ST( 'g',   3,      685,     0 ), /*   684 ntpsi             */
-  S_ST( 'n',   3,      686,     0 ), /*   685 ntpsig            */
-  S_ST( 'd',   3,      687,     0 ), /*   686 ntpsign           */
-  S_ST( 's',   3,      688,     0 ), /*   687 ntpsignd          */
-  S_ST( 'o',   3,      689,     0 ), /*   688 ntpsignds         */
-  S_ST( 'c',   3,      690,     0 ), /*   689 ntpsigndso        */
-  S_ST( 'k',   3,      691,     0 ), /*   690 ntpsigndsoc       */
-  S_ST( 'e',   3,      387,     0 ), /*   691 ntpsigndsock      */
-  S_ST( 'o',   3,      693,   631 ), /*   692                   */
-  S_ST( 'r',   3,      694,     0 ), /*   693 o                 */
-  S_ST( 'p',   3,      695,     0 ), /*   694 or                */
-  S_ST( 'h',   3,      696,     0 ), /*   695 orp               */
-  S_ST( 'a',   3,      388,     0 ), /*   696 orph              */
-  S_ST( 'w',   3,      698,     0 ), /*   697 orphan            */
-  S_ST( 'a',   3,      699,     0 ), /*   698 orphanw           */
-  S_ST( 'i',   3,      389,     0 ), /*   699 orphanwa          */
-  S_ST( 'p',   3,      405,   692 ), /*   700                   */
-  S_ST( 'a',   3,      702,     0 ), /*   701 p                 */
-  S_ST( 'n',   3,      703,     0 ), /*   702 pa                */
-  S_ST( 'i',   3,      391,     0 ), /*   703 pan               */
-  S_ST( 'e',   3,      705,   701 ), /*   704 p                 */
-  S_ST( 'e',   3,      392,     0 ), /*   705 pe                */
-  S_ST( '_',   3,      707,     0 ), /*   706 peer              */
-  S_ST( 'c',   3,      708,     0 ), /*   707 peer_             */
-  S_ST( 'l',   3,      709,     0 ), /*   708 peer_c            */
-  S_ST( 'e',   3,      710,     0 ), /*   709 peer_cl           */
-  S_ST( 'a',   3,      711,     0 ), /*   710 peer_cle          */
-  S_ST( 'r',   3,      712,     0 ), /*   711 peer_clea         */
-  S_ST( '_',   3,      713,     0 ), /*   712 peer_clear        */
-  S_ST( 'd',   3,      714,     0 ), /*   713 peer_clear_       */
-  S_ST( 'i',   3,      715,     0 ), /*   714 peer_clear_d      */
-  S_ST( 'g',   3,      716,     0 ), /*   715 peer_clear_di     */
-  S_ST( 'e',   3,      717,     0 ), /*   716 peer_clear_dig    */
-  S_ST( 's',   3,      718,     0 ), /*   717 peer_clear_dige   */
-  S_ST( 't',   3,      719,     0 ), /*   718 peer_clear_diges  */
-  S_ST( '_',   3,      720,     0 ), /*   719 peer_clear_digest */
-  S_ST( 'e',   3,      721,     0 ), /*   720 peer_clear_digest_ */
-  S_ST( 'a',   3,      722,     0 ), /*   721 peer_clear_digest_e */
-  S_ST( 'r',   3,      723,     0 ), /*   722 peer_clear_digest_ea */
-  S_ST( 'l',   3,      390,     0 ), /*   723 peer_clear_digest_ear */
-  S_ST( 's',   3,      725,   706 ), /*   724 peer              */
-  S_ST( 't',   3,      726,     0 ), /*   725 peers             */
-  S_ST( 'a',   3,      727,     0 ), /*   726 peerst            */
-  S_ST( 't',   3,      393,     0 ), /*   727 peersta           */
-  S_ST( 'h',   3,      729,   704 ), /*   728 p                 */
-  S_ST( 'o',   3,      730,     0 ), /*   729 ph                */
-  S_ST( 'n',   3,      394,     0 ), /*   730 pho               */
-  S_ST( 'i',   3,      395,   728 ), /*   731 p                 */
-  S_ST( 'f',   3,      733,     0 ), /*   732 pid               */
-  S_ST( 'i',   3,      734,     0 ), /*   733 pidf              */
-  S_ST( 'l',   3,      396,     0 ), /*   734 pidfi             */
-  S_ST( 'o',   3,      745,   731 ), /*   735 p                 */
-  S_ST( 'l',   3,      397,     0 ), /*   736 po                */
-  S_ST( 's',   3,      738,     0 ), /*   737 poll              */
-  S_ST( 'k',   3,      739,     0 ), /*   738 polls             */
-  S_ST( 'e',   3,      740,     0 ), /*   739 pollsk            */
-  S_ST( 'w',   3,      741,     0 ), /*   740 pollske           */
-  S_ST( 'l',   3,      742,     0 ), /*   741 pollskew          */
-  S_ST( 'i',   3,      743,     0 ), /*   742 pollskewl         */
-  S_ST( 's',   3,      398,     0 ), /*   743 pollskewli        */
-  S_ST( 'o',   3,      399,   736 ), /*   744 po                */
-  S_ST( 'r',   3,      400,   744 ), /*   745 po                */
-  S_ST( 'p',   3,      747,   735 ), /*   746 p                 */
-  S_ST( 's',   3,      748,     0 ), /*   747 pp                */
-  S_ST( 'd',   3,      749,     0 ), /*   748 pps               */
-  S_ST( 'a',   3,      750,     0 ), /*   749 ppsd              */
-  S_ST( 't',   3,      401,     0 ), /*   750 ppsda             */
-  S_ST( 'r',   3,      758,   746 ), /*   751 p                 */
-  S_ST( 'e',   3,      756,     0 ), /*   752 pr                */
-  S_ST( 'e',   3,      754,     0 ), /*   753 pre               */
-  S_ST( 'm',   3,      755,     0 ), /*   754 pree              */
-  S_ST( 'p',   3,      402,     0 ), /*   755 preem             */
-  S_ST( 'f',   3,      757,   753 ), /*   756 pre               */
-  S_ST( 'e',   3,      403,     0 ), /*   757 pref              */
-  S_ST( 'o',   3,      771,   752 ), /*   758 pr                */
-  S_ST( 'c',   3,      760,     0 ), /*   759 pro               */
-  S_ST( '_',   3,      761,     0 ), /*   760 proc              */
-  S_ST( 'd',   3,      762,     0 ), /*   761 proc_             */
-  S_ST( 'e',   3,      763,     0 ), /*   762 proc_d            */
-  S_ST( 'l',   3,      764,     0 ), /*   763 proc_de           */
-  S_ST( 'a',   3,      469,     0 ), /*   764 proc_del          */
-  S_ST( 'p',   3,      766,   759 ), /*   765 pro               */
-  S_ST( '_',   3,      767,     0 ), /*   766 prop              */
-  S_ST( 'd',   3,      768,     0 ), /*   767 prop_             */
-  S_ST( 'e',   3,      769,     0 ), /*   768 prop_d            */
-  S_ST( 'l',   3,      770,     0 ), /*   769 prop_de           */
-  S_ST( 'a',   3,      468,     0 ), /*   770 prop_del          */
-  S_ST( 't',   3,      772,   765 ), /*   771 pro               */
-  S_ST( 'o',   3,      773,     0 ), /*   772 prot              */
-  S_ST( 's',   3,      774,     0 ), /*   773 proto             */
-  S_ST( 't',   3,      775,     0 ), /*   774 protos            */
-  S_ST( 'a',   3,      776,     0 ), /*   775 protost           */
-  S_ST( 't',   3,      404,     0 ), /*   776 protosta          */
-  S_ST( 'r',   3,      808,   700 ), /*   777                   */
-  S_ST( 'a',   3,      784,     0 ), /*   778 r                 */
-  S_ST( 'n',   3,      780,     0 ), /*   779 ra                */
-  S_ST( 'd',   3,      781,     0 ), /*   780 ran               */
-  S_ST( 'f',   3,      782,     0 ), /*   781 rand              */
-  S_ST( 'i',   3,      783,     0 ), /*   782 randf             */
-  S_ST( 'l',   3,      406,     0 ), /*   783 randfi            */
-  S_ST( 'w',   3,      785,   779 ), /*   784 ra                */
-  S_ST( 's',   3,      786,     0 ), /*   785 raw               */
-  S_ST( 't',   3,      787,     0 ), /*   786 raws              */
-  S_ST( 'a',   3,      788,     0 ), /*   787 rawst             */
-  S_ST( 't',   3,      407,     0 ), /*   788 rawsta            */
-  S_ST( 'e',   3,      805,   778 ), /*   789 r                 */
-  S_ST( 'f',   3,      791,     0 ), /*   790 re                */
-  S_ST( 'i',   3,      408,     0 ), /*   791 ref               */
-  S_ST( 'q',   3,      793,   790 ), /*   792 re                */
-  S_ST( 'u',   3,      794,     0 ), /*   793 req               */
-  S_ST( 'e',   3,      795,     0 ), /*   794 requ              */
-  S_ST( 's',   3,      796,     0 ), /*   795 reque             */
-  S_ST( 't',   3,      797,     0 ), /*   796 reques            */
-  S_ST( 'k',   3,      798,     0 ), /*   797 request           */
-  S_ST( 'e',   3,      409,     0 ), /*   798 requestk          */
-  S_ST( 's',   3,      801,   792 ), /*   799 re                */
-  S_ST( 'e',   3,      410,     0 ), /*   800 res               */
-  S_ST( 't',   3,      802,   800 ), /*   801 res               */
-  S_ST( 'r',   3,      803,     0 ), /*   802 rest              */
-  S_ST( 'i',   3,      804,     0 ), /*   803 restr             */
-  S_ST( 'c',   3,      411,     0 ), /*   804 restri            */
-  S_ST( 'v',   3,      806,   799 ), /*   805 re                */
-  S_ST( 'o',   3,      807,     0 ), /*   806 rev               */
-  S_ST( 'k',   3,      412,     0 ), /*   807 revo              */
-  S_ST( 'l',   3,      809,   789 ), /*   808 r                 */
-  S_ST( 'i',   3,      810,     0 ), /*   809 rl                */
-  S_ST( 'm',   3,      811,     0 ), /*   810 rli               */
-  S_ST( 'i',   3,      413,     0 ), /*   811 rlim              */
-  S_ST( 's',   3,      892,   777 ), /*   812                   */
-  S_ST( 'a',   3,      814,     0 ), /*   813 s                 */
-  S_ST( 'v',   3,      815,     0 ), /*   814 sa                */
-  S_ST( 'e',   3,      816,     0 ), /*   815 sav               */
-  S_ST( 'c',   3,      817,     0 ), /*   816 save              */
-  S_ST( 'o',   3,      818,     0 ), /*   817 savec             */
-  S_ST( 'n',   3,      819,     0 ), /*   818 saveco            */
-  S_ST( 'f',   3,      820,     0 ), /*   819 savecon           */
-  S_ST( 'i',   3,      821,     0 ), /*   820 saveconf          */
-  S_ST( 'g',   3,      822,     0 ), /*   821 saveconfi         */
-  S_ST( 'd',   3,      823,     0 ), /*   822 saveconfig        */
-  S_ST( 'i',   3,      414,     0 ), /*   823 saveconfigd       */
-  S_ST( 'e',   3,      841,   813 ), /*   824 s                 */
-  S_ST( 'r',   3,      826,     0 ), /*   825 se                */
-  S_ST( 'v',   3,      827,     0 ), /*   826 ser               */
-  S_ST( 'e',   3,      415,     0 ), /*   827 serv              */
-  S_ST( '_',   3,      829,     0 ), /*   828 server            */
-  S_ST( 'o',   3,      830,     0 ), /*   829 server_           */
-  S_ST( 'f',   3,      831,     0 ), /*   830 server_o          */
-  S_ST( 'f',   3,      832,     0 ), /*   831 server_of         */
-  S_ST( 's',   3,      833,     0 ), /*   832 server_off        */
-  S_ST( 'e',   3,      463,     0 ), /*   833 server_offs       */
-  S_ST( 'r',   3,      835,   828 ), /*   834 server            */
-  S_ST( 'e',   3,      836,     0 ), /*   835 serverr           */
-  S_ST( 's',   3,      837,     0 ), /*   836 serverre          */
-  S_ST( 'p',   3,      838,     0 ), /*   837 serverres         */
-  S_ST( 'o',   3,      839,     0 ), /*   838 serverresp        */
-  S_ST( 'n',   3,      840,     0 ), /*   839 serverrespo       */
-  S_ST( 's',   3,      416,     0 ), /*   840 serverrespon      */
-  S_ST( 't',   3,      842,   825 ), /*   841 se                */
-  S_ST( 'v',   3,      843,     0 ), /*   842 set               */
-  S_ST( 'a',   3,      418,     0 ), /*   843 setv              */
-  S_ST( 'i',   3,      845,   824 ), /*   844 s                 */
-  S_ST( 'm',   3,      846,     0 ), /*   845 si                */
-  S_ST( 'u',   3,      847,     0 ), /*   846 sim               */
-  S_ST( 'l',   3,      848,     0 ), /*   847 simu              */
-  S_ST( 'a',   3,      849,     0 ), /*   848 simul             */
-  S_ST( 't',   3,      850,     0 ), /*   849 simula            */
-  S_ST( 'i',   3,      851,   460 ), /*   850 simulat           */
-  S_ST( 'o',   3,      852,     0 ), /*   851 simulati          */
-  S_ST( 'n',   3,      853,     0 ), /*   852 simulatio         */
-  S_ST( '_',   3,      854,     0 ), /*   853 simulation        */
-  S_ST( 'd',   3,      855,     0 ), /*   854 simulation_       */
-  S_ST( 'u',   3,      856,     0 ), /*   855 simulation_d      */
-  S_ST( 'r',   3,      857,     0 ), /*   856 simulation_du     */
-  S_ST( 'a',   3,      858,     0 ), /*   857 simulation_dur    */
-  S_ST( 't',   3,      859,     0 ), /*   858 simulation_dura   */
-  S_ST( 'i',   3,      860,     0 ), /*   859 simulation_durat  */
-  S_ST( 'o',   3,      462,     0 ), /*   860 simulation_durati */
-  S_ST( 'o',   3,      862,   844 ), /*   861 s                 */
-  S_ST( 'u',   3,      863,     0 ), /*   862 so                */
-  S_ST( 'r',   3,      864,     0 ), /*   863 sou               */
-  S_ST( 'c',   3,      419,     0 ), /*   864 sour              */
-  S_ST( 't',   3,      888,   861 ), /*   865 s                 */
-  S_ST( 'a',   3,      872,     0 ), /*   866 st                */
-  S_ST( 'c',   3,      868,     0 ), /*   867 sta               */
-  S_ST( 'k',   3,      869,     0 ), /*   868 stac              */
-  S_ST( 's',   3,      870,     0 ), /*   869 stack             */
-  S_ST( 'i',   3,      871,     0 ), /*   870 stacks            */
-  S_ST( 'z',   3,      420,     0 ), /*   871 stacksi           */
-  S_ST( 't',   3,      422,   867 ), /*   872 sta               */
-  S_ST( 'i',   3,      874,     0 ), /*   873 stat              */
-  S_ST( 's',   3,      875,     0 ), /*   874 stati             */
-  S_ST( 't',   3,      876,     0 ), /*   875 statis            */
-  S_ST( 'i',   3,      877,     0 ), /*   876 statist           */
-  S_ST( 'c',   3,      421,     0 ), /*   877 statisti          */
-  S_ST( 'd',   3,      879,     0 ), /*   878 stats             */
-  S_ST( 'i',   3,      423,     0 ), /*   879 statsd            */
-  S_ST( 'e',   3,      424,   866 ), /*   880 st                */
-  S_ST( 'b',   3,      882,     0 ), /*   881 step              */
-  S_ST( 'a',   3,      883,     0 ), /*   882 stepb             */
-  S_ST( 'c',   3,      425,     0 ), /*   883 stepba            */
-  S_ST( 'f',   3,      885,   881 ), /*   884 step              */
-  S_ST( 'w',   3,      426,     0 ), /*   885 stepf             */
-  S_ST( 'o',   3,      887,   884 ), /*   886 step              */
-  S_ST( 'u',   3,      427,     0 ), /*   887 stepo             */
-  S_ST( 'r',   3,      889,   880 ), /*   888 st                */
-  S_ST( 'a',   3,      890,     0 ), /*   889 str               */
-  S_ST( 't',   3,      891,     0 ), /*   890 stra              */
-  S_ST( 'u',   3,      428,     0 ), /*   891 strat             */
-  S_ST( 'y',   3,      430,   865 ), /*   892 s                 */
-  S_ST( 's',   3,      894,     0 ), /*   893 sys               */
-  S_ST( 't',   3,      895,     0 ), /*   894 syss              */
-  S_ST( 'a',   3,      896,     0 ), /*   895 sysst             */
-  S_ST( 't',   3,      431,     0 ), /*   896 syssta            */
-  S_ST( 't',   3,      926,   812 ), /*   897                   */
-  S_ST( 'i',   3,      912,     0 ), /*   898 t                 */
-  S_ST( 'c',   3,      432,     0 ), /*   899 ti                */
-  S_ST( 'm',   3,      905,   899 ), /*   900 ti                */
-  S_ST( 'e',   3,      436,     0 ), /*   901 tim               */
-  S_ST( 'd',   3,      903,   434 ), /*   902 time              */
-  S_ST( 'a',   3,      904,     0 ), /*   903 timed             */
-  S_ST( 't',   3,      435,     0 ), /*   904 timeda            */
-  S_ST( 'i',   3,      906,   901 ), /*   905 tim               */
-  S_ST( 'n',   3,      907,     0 ), /*   906 timi              */
-  S_ST( 'g',   3,      908,     0 ), /*   907 timin             */
-  S_ST( 's',   3,      909,     0 ), /*   908 timing            */
-  S_ST( 't',   3,      910,     0 ), /*   909 timings           */
-  S_ST( 'a',   3,      911,     0 ), /*   910 timingst          */
-  S_ST( 't',   3,      437,     0 ), /*   911 timingsta         */
-  S_ST( 'n',   3,      913,   900 ), /*   912 ti                */
-  S_ST( 'k',   3,      914,     0 ), /*   913 tin               */
-  S_ST( 'e',   3,      438,     0 ), /*   914 tink              */
-  S_ST( 'o',   3,      439,   898 ), /*   915 t                 */
-  S_ST( 'r',   3,      918,   915 ), /*   916 t                 */
-  S_ST( 'a',   3,      440,     0 ), /*   917 tr                */
-  S_ST( 'u',   3,      919,   917 ), /*   918 tr                */
-  S_ST( 's',   3,      920,   441 ), /*   919 tru               */
-  S_ST( 't',   3,      921,     0 ), /*   920 trus              */
-  S_ST( 'e',   3,      922,     0 ), /*   921 trust             */
-  S_ST( 'd',   3,      923,     0 ), /*   922 truste            */
-  S_ST( 'k',   3,      924,     0 ), /*   923 trusted           */
-  S_ST( 'e',   3,      442,     0 ), /*   924 trustedk          */
-  S_ST( 't',   3,      443,   916 ), /*   925 t                 */
-  S_ST( 'y',   3,      927,   925 ), /*   926 t                 */
-  S_ST( 'p',   3,      444,     0 ), /*   927 ty                */
-  S_ST( 'u',   3,      929,   897 ), /*   928                   */
-  S_ST( 'n',   3,      935,     0 ), /*   929 u                 */
-  S_ST( 'c',   3,      931,     0 ), /*   930 un                */
-  S_ST( 'o',   3,      932,     0 ), /*   931 unc               */
-  S_ST( 'n',   3,      933,     0 ), /*   932 unco              */
-  S_ST( 'f',   3,      934,     0 ), /*   933 uncon             */
-  S_ST( 'i',   3,      449,     0 ), /*   934 unconf            */
-  S_ST( 'p',   3,      936,   930 ), /*   935 un                */
-  S_ST( 'e',   3,      937,     0 ), /*   936 unp               */
-  S_ST( 'e',   3,      450,     0 ), /*   937 unpe              */
-  S_ST( '_',   3,      958,     0 ), /*   938 unpeer            */
-  S_ST( 'c',   3,      940,     0 ), /*   939 unpeer_           */
-  S_ST( 'r',   3,      941,     0 ), /*   940 unpeer_c          */
-  S_ST( 'y',   3,      942,     0 ), /*   941 unpeer_cr         */
-  S_ST( 'p',   3,      943,     0 ), /*   942 unpeer_cry        */
-  S_ST( 't',   3,      944,     0 ), /*   943 unpeer_cryp       */
-  S_ST( 'o',   3,      945,     0 ), /*   944 unpeer_crypt      */
-  S_ST( '_',   3,      950,     0 ), /*   945 unpeer_crypto     */
-  S_ST( 'e',   3,      947,     0 ), /*   946 unpeer_crypto_    */
-  S_ST( 'a',   3,      948,     0 ), /*   947 unpeer_crypto_e   */
-  S_ST( 'r',   3,      949,     0 ), /*   948 unpeer_crypto_ea  */
-  S_ST( 'l',   3,      446,     0 ), /*   949 unpeer_crypto_ear */
-  S_ST( 'n',   3,      951,   946 ), /*   950 unpeer_crypto_    */
-  S_ST( 'a',   3,      952,     0 ), /*   951 unpeer_crypto_n   */
-  S_ST( 'k',   3,      953,     0 ), /*   952 unpeer_crypto_na  */
-  S_ST( '_',   3,      954,     0 ), /*   953 unpeer_crypto_nak */
-  S_ST( 'e',   3,      955,     0 ), /*   954 unpeer_crypto_nak_ */
-  S_ST( 'a',   3,      956,     0 ), /*   955 unpeer_crypto_nak_e */
-  S_ST( 'r',   3,      957,     0 ), /*   956 unpeer_crypto_nak_ea */
-  S_ST( 'l',   3,      447,     0 ), /*   957 unpeer_crypto_nak_ear */
-  S_ST( 'd',   3,      959,   939 ), /*   958 unpeer_           */
-  S_ST( 'i',   3,      960,     0 ), /*   959 unpeer_d          */
-  S_ST( 'g',   3,      961,     0 ), /*   960 unpeer_di         */
-  S_ST( 'e',   3,      962,     0 ), /*   961 unpeer_dig        */
-  S_ST( 's',   3,      963,     0 ), /*   962 unpeer_dige       */
-  S_ST( 't',   3,      964,     0 ), /*   963 unpeer_diges      */
-  S_ST( '_',   3,      965,     0 ), /*   964 unpeer_digest     */
-  S_ST( 'e',   3,      966,     0 ), /*   965 unpeer_digest_    */
-  S_ST( 'a',   3,      967,     0 ), /*   966 unpeer_digest_e   */
-  S_ST( 'r',   3,      968,     0 ), /*   967 unpeer_digest_ea  */
-  S_ST( 'l',   3,      448,     0 ), /*   968 unpeer_digest_ear */
-  S_ST( 'v',   3,      970,   928 ), /*   969                   */
-  S_ST( 'e',   3,      971,     0 ), /*   970 v                 */
-  S_ST( 'r',   3,      972,     0 ), /*   971 ve                */
-  S_ST( 's',   3,      973,     0 ), /*   972 ver               */
-  S_ST( 'i',   3,      974,     0 ), /*   973 vers              */
-  S_ST( 'o',   3,      451,     0 ), /*   974 versi             */
-  S_ST( 'w',   3,      982,   969 ), /*   975                   */
-  S_ST( 'a',   3,      977,     0 ), /*   976 w                 */
-  S_ST( 'n',   3,      978,     0 ), /*   977 wa                */
-  S_ST( 'd',   3,      979,     0 ), /*   978 wan               */
-  S_ST( 'e',   3,      466,     0 ), /*   979 wand              */
-  S_ST( 'e',   3,      981,   976 ), /*   980 w                 */
-  S_ST( 'e',   3,      453,     0 ), /*   981 we                */
-  S_ST( 'i',   3,      983,   980 ), /*   982 w                 */
-  S_ST( 'l',   3,      984,     0 ), /*   983 wi                */
-  S_ST( 'd',   3,      985,     0 ), /*   984 wil               */
-  S_ST( 'c',   3,      986,     0 ), /*   985 wild              */
-  S_ST( 'a',   3,      987,     0 ), /*   986 wildc             */
-  S_ST( 'r',   3,      454,     0 ), /*   987 wildca            */
-  S_ST( 'x',   3,      993,   975 ), /*   988                   */
-  S_ST( 'l',   3,      990,     0 ), /*   989 x                 */
-  S_ST( 'e',   3,      991,     0 ), /*   990 xl                */
-  S_ST( 'a',   3,      992,     0 ), /*   991 xle               */
-  S_ST( 'v',   3,      455,     0 ), /*   992 xlea              */
-  S_ST( 'm',   3,      994,   989 ), /*   993 x                 */
-  S_ST( 't',   3,      995,     0 ), /*   994 xm                */
-  S_ST( 'n',   3,      996,     0 ), /*   995 xmt               */
-  S_ST( 'o',   3,      997,     0 ), /*   996 xmtn              */
-  S_ST( 'n',   3,      998,     0 ), /*   997 xmtno             */
-  S_ST( 'c',   3,      456,     0 ), /*   998 xmtnon            */
-  S_ST( 'y',   3,     1000,   988 ), /*   999 [initial state]   */
-  S_ST( 'e',   3,     1001,     0 ), /*  1000 y                 */
-  S_ST( 'a',   3,      457,     0 )  /*  1001 ye                */
+  S_ST( 't',   0,        0,     0 ), /*   286 T_Delrestrict     */
+  S_ST( 'e',   1,        0,     0 ), /*   287 T_Device          */
+  S_ST( 't',   1,        0,     0 ), /*   288 T_Digest          */
+  S_ST( 'e',   0,        0,     0 ), /*   289 T_Disable         */
+  S_ST( 'd',   0,        0,     0 ), /*   290 T_Discard         */
+  S_ST( 'n',   0,        0,     0 ), /*   291 T_Dispersion      */
+  S_ST( 'e',   3,      300,     0 ), /*   292 int               */
+  S_ST( 'e',   1,        0,     0 ), /*   293 T_Driftfile       */
+  S_ST( 'p',   0,        0,     0 ), /*   294 T_Drop            */
+  S_ST( 'p',   0,        0,     0 ), /*   295 T_Dscp            */
+  S_ST( '.',   0,        0,     0 ), /*   296 T_Ellipsis        */
+  S_ST( 'e',   0,        0,     0 ), /*   297 T_Enable          */
+  S_ST( 'd',   0,        0,   179 ), /*   298 T_End             */
+  S_ST( 'r',   0,        0,     0 ), /*   299 T_Epeer           */
+  S_ST( 'r',   3,      324,     0 ), /*   300 inte              */
+  S_ST( 'e',   1,      190,     0 ), /*   301 T_File            */
+  S_ST( 'n',   0,        0,     0 ), /*   302 T_Filegen         */
+  S_ST( 'm',   0,        0,     0 ), /*   303 T_Filenum         */
+  S_ST( '1',   0,        0,     0 ), /*   304 T_Flag1           */
+  S_ST( '2',   0,        0,   304 ), /*   305 T_Flag2           */
+  S_ST( '3',   0,        0,   305 ), /*   306 T_Flag3           */
+  S_ST( '4',   0,        0,   306 ), /*   307 T_Flag4           */
+  S_ST( 'e',   0,        0,     0 ), /*   308 T_Flake           */
+  S_ST( 'r',   0,        0,     0 ), /*   309 T_Floor           */
+  S_ST( 'q',   0,      200,     0 ), /*   310 T_Freq            */
+  S_ST( 'e',   1,        0,     0 ), /*   311 T_Fudge           */
+  S_ST( 'z',   0,        0,     0 ), /*   312 T_Fuzz            */
+  S_ST( 't',   1,        0,     0 ), /*   313 T_Host            */
+  S_ST( 'f',   0,        0,     0 ), /*   314 T_Huffpuff        */
+  S_ST( 't',   0,        0,     0 ), /*   315 T_Iburst          */
+  S_ST( 't',   1,        0,     0 ), /*   316 T_Ident           */
+  S_ST( 'e',   0,      231,     0 ), /*   317 T_Ignore          */
+  S_ST( 'h',   0,        0,     0 ), /*   318 T_Ignorehash      */
+  S_ST( 'c',   0,        0,     0 ), /*   319 T_Incalloc        */
+  S_ST( 'm',   0,        0,     0 ), /*   320 T_Incmem          */
+  S_ST( 'c',   0,        0,     0 ), /*   321 T_Initalloc       */
+  S_ST( 'm',   0,        0,     0 ), /*   322 T_Initmem         */
+  S_ST( 'e',   1,        0,     0 ), /*   323 T_Includefile     */
+  S_ST( 'f',   3,      326,     0 ), /*   324 inter             */
+  S_ST( 'e',   0,        0,     0 ), /*   325 T_Interface       */
+  S_ST( 'a',   3,      418,     0 ), /*   326 interf            */
+  S_ST( 'o',   0,        0,   234 ), /*   327 T_Io              */
+  S_ST( 't',   0,        0,     0 ), /*   328 T_Ippeerlimit     */
+  S_ST( '4',   0,        0,     0 ), /*   329 T_Ipv4            */
+  S_ST( '4',   0,        0,     0 ), /*   330 T_Ipv4_flag       */
+  S_ST( '6',   0,        0,   329 ), /*   331 T_Ipv6            */
+  S_ST( '6',   0,        0,   330 ), /*   332 T_Ipv6_flag       */
+  S_ST( 'l',   0,        0,     0 ), /*   333 T_Kernel          */
+  S_ST( 'y',   0,      335,   483 ), /*   334 T_Key             */
+  S_ST( 's',   1,      486,     0 ), /*   335 T_Keys            */
+  S_ST( 'r',   1,        0,     0 ), /*   336 T_Keysdir         */
+  S_ST( 'd',   0,        0,     0 ), /*   337 T_Kod             */
+  S_ST( 'e',   1,        0,     0 ), /*   338 T_Leapfile        */
+  S_ST( 'l',   0,        0,     0 ), /*   339 T_Leapsmearinterval */
+  S_ST( 'd',   0,        0,     0 ), /*   340 T_Limited         */
+  S_ST( 'k',   0,        0,     0 ), /*   341 T_Link            */
+  S_ST( 'n',   0,        0,     0 ), /*   342 T_Listen          */
+  S_ST( 'g',   2,        0,     0 ), /*   343 T_Logconfig       */
+  S_ST( 'e',   1,        0,     0 ), /*   344 T_Logfile         */
+  S_ST( 's',   0,        0,     0 ), /*   345 T_Loopstats       */
+  S_ST( 'p',   0,        0,     0 ), /*   346 T_Lowpriotrap     */
+  S_ST( 't',   1,        0,     0 ), /*   347 T_Manycastclient  */
+  S_ST( 'r',   2,        0,     0 ), /*   348 T_Manycastserver  */
+  S_ST( 'k',   0,        0,     0 ), /*   349 T_Mask            */
+  S_ST( 'e',   0,        0,     0 ), /*   350 T_Maxage          */
+  S_ST( 'k',   0,        0,     0 ), /*   351 T_Maxclock        */
+  S_ST( 'h',   0,        0,     0 ), /*   352 T_Maxdepth        */
+  S_ST( 't',   0,        0,     0 ), /*   353 T_Maxdist         */
+  S_ST( 'm',   0,        0,     0 ), /*   354 T_Maxmem          */
+  S_ST( 'l',   0,        0,     0 ), /*   355 T_Maxpoll         */
+  S_ST( 's',   0,        0,     0 ), /*   356 T_Mdnstries       */
+  S_ST( 'm',   0,      586,     0 ), /*   357 T_Mem             */
+  S_ST( 'k',   0,        0,     0 ), /*   358 T_Memlock         */
+  S_ST( 'k',   0,        0,     0 ), /*   359 T_Minclock        */
+  S_ST( 'h',   0,        0,     0 ), /*   360 T_Mindepth        */
+  S_ST( 't',   0,        0,     0 ), /*   361 T_Mindist         */
+  S_ST( 'm',   0,        0,     0 ), /*   362 T_Minimum         */
+  S_ST( 'r',   0,        0,     0 ), /*   363 T_Minjitter       */
+  S_ST( 'l',   0,        0,     0 ), /*   364 T_Minpoll         */
+  S_ST( 'e',   0,        0,     0 ), /*   365 T_Minsane         */
+  S_ST( 'e',   0,      367,     0 ), /*   366 T_Mode            */
+  S_ST( '7',   0,        0,     0 ), /*   367 T_Mode7           */
+  S_ST( 'r',   0,        0,     0 ), /*   368 T_Monitor         */
+  S_ST( 'h',   0,        0,     0 ), /*   369 T_Month           */
+  S_ST( 'u',   0,        0,     0 ), /*   370 T_Mru             */
+  S_ST( 'p',   0,        0,     0 ), /*   371 T_Mssntp          */
+  S_ST( 't',   2,        0,     0 ), /*   372 T_Multicastclient */
+  S_ST( 'c',   0,        0,     0 ), /*   373 T_Nic             */
+  S_ST( 'k',   0,        0,     0 ), /*   374 T_Nolink          */
+  S_ST( 'y',   0,        0,     0 ), /*   375 T_Nomodify        */
+  S_ST( 't',   0,        0,     0 ), /*   376 T_Nomrulist       */
+  S_ST( 'e',   0,        0,     0 ), /*   377 T_None            */
+  S_ST( 'e',   0,        0,     0 ), /*   378 T_Nonvolatile     */
+  S_ST( 'r',   0,        0,     0 ), /*   379 T_Noepeer         */
+  S_ST( 'r',   0,        0,     0 ), /*   380 T_Nopeer          */
+  S_ST( 'y',   0,        0,     0 ), /*   381 T_Noquery         */
+  S_ST( 't',   0,        0,     0 ), /*   382 T_Noselect        */
+  S_ST( 'e',   0,        0,     0 ), /*   383 T_Noserve         */
+  S_ST( 'p',   0,        0,     0 ), /*   384 T_Notrap          */
+  S_ST( 't',   0,        0,     0 ), /*   385 T_Notrust         */
+  S_ST( 'p',   0,      691,     0 ), /*   386 T_Ntp             */
+  S_ST( 't',   0,        0,     0 ), /*   387 T_Ntpport         */
+  S_ST( 't',   1,        0,     0 ), /*   388 T_NtpSignDsocket  */
+  S_ST( 'n',   0,      706,     0 ), /*   389 T_Orphan          */
+  S_ST( 't',   0,        0,     0 ), /*   390 T_Orphanwait      */
+  S_ST( 'y',   0,        0,     0 ), /*   391 T_PCEdigest       */
+  S_ST( 'c',   0,        0,     0 ), /*   392 T_Panic           */
+  S_ST( 'r',   1,      733,     0 ), /*   393 T_Peer            */
+  S_ST( 's',   0,        0,     0 ), /*   394 T_Peerstats       */
+  S_ST( 'e',   2,        0,     0 ), /*   395 T_Phone           */
+  S_ST( 'd',   0,      741,     0 ), /*   396 T_Pid             */
+  S_ST( 'e',   1,        0,     0 ), /*   397 T_Pidfile         */
+  S_ST( 'l',   0,      746,     0 ), /*   398 T_Poll            */
+  S_ST( 't',   0,        0,     0 ), /*   399 T_PollSkewList    */
+  S_ST( 'l',   1,        0,     0 ), /*   400 T_Pool            */
+  S_ST( 't',   0,        0,     0 ), /*   401 T_Port            */
+  S_ST( 'a',   1,        0,     0 ), /*   402 T_PpsData         */
+  S_ST( 't',   0,        0,     0 ), /*   403 T_Preempt         */
+  S_ST( 'r',   0,        0,     0 ), /*   404 T_Prefer          */
+  S_ST( 's',   0,        0,     0 ), /*   405 T_Protostats      */
+  S_ST( 'w',   1,        0,   760 ), /*   406 T_Pw              */
+  S_ST( 'e',   1,        0,     0 ), /*   407 T_Randfile        */
+  S_ST( 's',   0,        0,     0 ), /*   408 T_Rawstats        */
+  S_ST( 'd',   1,        0,     0 ), /*   409 T_Refid           */
+  S_ST( 'y',   0,        0,     0 ), /*   410 T_Requestkey      */
+  S_ST( 't',   0,        0,     0 ), /*   411 T_Reset           */
+  S_ST( 't',   0,        0,     0 ), /*   412 T_Restrict        */
+  S_ST( 'e',   0,        0,     0 ), /*   413 T_Revoke          */
+  S_ST( 't',   0,        0,     0 ), /*   414 T_Rlimit          */
+  S_ST( 'r',   1,        0,     0 ), /*   415 T_Saveconfigdir   */
+  S_ST( 'r',   1,      843,     0 ), /*   416 T_Server          */
+  S_ST( 'e',   0,        0,     0 ), /*   417 T_Serverresponse  */
+  S_ST( 'c',   3,      325,     0 ), /*   418 interfa           */
+  S_ST( 'r',   1,        0,     0 ), /*   419 T_Setvar          */
+  S_ST( 'e',   0,        0,     0 ), /*   420 T_Source          */
+  S_ST( 'e',   0,        0,     0 ), /*   421 T_Stacksize       */
+  S_ST( 's',   0,        0,     0 ), /*   422 T_Statistics      */
+  S_ST( 's',   0,      887,   882 ), /*   423 T_Stats           */
+  S_ST( 'r',   1,        0,     0 ), /*   424 T_Statsdir        */
+  S_ST( 'p',   0,      895,     0 ), /*   425 T_Step            */
+  S_ST( 'k',   0,        0,     0 ), /*   426 T_Stepback        */
+  S_ST( 'd',   0,        0,     0 ), /*   427 T_Stepfwd         */
+  S_ST( 't',   0,        0,     0 ), /*   428 T_Stepout         */
+  S_ST( 'm',   0,        0,     0 ), /*   429 T_Stratum         */
+  S_ST( 'p',   3,      475,   327 ), /*   430 i                 */
+  S_ST( 's',   0,      902,     0 ), /*   431 T_Sys             */
+  S_ST( 's',   0,        0,     0 ), /*   432 T_Sysstats        */
+  S_ST( 'k',   0,        0,     0 ), /*   433 T_Tick            */
+  S_ST( '1',   0,        0,     0 ), /*   434 T_Time1           */
+  S_ST( '2',   0,        0,   434 ), /*   435 T_Time2           */
+  S_ST( 'a',   1,        0,     0 ), /*   436 T_TimeData        */
+  S_ST( 'r',   0,        0,   911 ), /*   437 T_Timer           */
+  S_ST( 's',   0,        0,     0 ), /*   438 T_Timingstats     */
+  S_ST( 'r',   0,        0,     0 ), /*   439 T_Tinker          */
+  S_ST( 's',   0,        0,     0 ), /*   440 T_Tos             */
+  S_ST( 'p',   1,        0,     0 ), /*   441 T_Trap            */
+  S_ST( 'e',   0,        0,     0 ), /*   442 T_True            */
+  S_ST( 'y',   0,        0,     0 ), /*   443 T_Trustedkey      */
+  S_ST( 'l',   0,        0,     0 ), /*   444 T_Ttl             */
+  S_ST( 'e',   0,        0,     0 ), /*   445 T_Type            */
+  S_ST( 'p',   3,      453,     0 ), /*   446 ip                */
+  S_ST( 'y',   0,        0,     0 ), /*   447 T_UEcrypto        */
+  S_ST( 'y',   0,        0,     0 ), /*   448 T_UEcryptonak     */
+  S_ST( 'y',   0,        0,     0 ), /*   449 T_UEdigest        */
+  S_ST( 'g',   1,        0,     0 ), /*   450 T_Unconfig        */
+  S_ST( 'r',   1,      947,     0 ), /*   451 T_Unpeer          */
+  S_ST( 'n',   0,        0,     0 ), /*   452 T_Version         */
+  S_ST( 'e',   3,      459,     0 ), /*   453 ipp               */
+  S_ST( 'k',   0,        0,     0 ), /*   454 T_Week            */
+  S_ST( 'd',   0,        0,     0 ), /*   455 T_Wildcard        */
+  S_ST( 'e',   0,        0,     0 ), /*   456 T_Xleave          */
+  S_ST( 'e',   0,        0,     0 ), /*   457 T_Xmtnonce        */
+  S_ST( 'r',   0,        0,     0 ), /*   458 T_Year            */
+  S_ST( 'e',   3,      460,     0 ), /*   459 ippe              */
+  S_ST( 'r',   3,      471,     0 ), /*   460 ippee             */
+  S_ST( 'e',   0,        0,     0 ), /*   461 T_Simulate        */
+  S_ST( 'y',   0,        0,     0 ), /*   462 T_Beep_Delay      */
+  S_ST( 'n',   0,        0,     0 ), /*   463 T_Sim_Duration    */
+  S_ST( 't',   0,        0,     0 ), /*   464 T_Server_Offset   */
+  S_ST( 'n',   0,        0,     0 ), /*   465 T_Duration        */
+  S_ST( 't',   0,        0,     0 ), /*   466 T_Freq_Offset     */
+  S_ST( 'r',   0,        0,     0 ), /*   467 T_Wander          */
+  S_ST( 'r',   0,        0,     0 ), /*   468 T_Jitter          */
+  S_ST( 'y',   0,        0,     0 ), /*   469 T_Prop_Delay      */
+  S_ST( 'y',   0,        0,     0 ), /*   470 T_Proc_Delay      */
+  S_ST( 'l',   3,      472,     0 ), /*   471 ippeer            */
+  S_ST( 'i',   3,      473,     0 ), /*   472 ippeerl           */
+  S_ST( 'm',   3,      474,     0 ), /*   473 ippeerli          */
+  S_ST( 'i',   3,      328,     0 ), /*   474 ippeerlim         */
+  S_ST( 'v',   3,      331,   446 ), /*   475 ip                */
+  S_ST( 'j',   3,      477,   219 ), /*   476                   */
+  S_ST( 'i',   3,      478,     0 ), /*   477 j                 */
+  S_ST( 't',   3,      479,     0 ), /*   478 ji                */
+  S_ST( 't',   3,      480,     0 ), /*   479 jit               */
+  S_ST( 'e',   3,      468,     0 ), /*   480 jitt              */
+  S_ST( 'k',   3,      488,   476 ), /*   481                   */
+  S_ST( 'e',   3,      334,     0 ), /*   482 k                 */
+  S_ST( 'r',   3,      484,     0 ), /*   483 ke                */
+  S_ST( 'n',   3,      485,     0 ), /*   484 ker               */
+  S_ST( 'e',   3,      333,     0 ), /*   485 kern              */
+  S_ST( 'd',   3,      487,     0 ), /*   486 keys              */
+  S_ST( 'i',   3,      336,     0 ), /*   487 keysd             */
+  S_ST( 'o',   3,      337,   482 ), /*   488 k                 */
+  S_ST( 'l',   3,      517,   481 ), /*   489                   */
+  S_ST( 'e',   3,      491,     0 ), /*   490 l                 */
+  S_ST( 'a',   3,      492,     0 ), /*   491 le                */
+  S_ST( 'p',   3,      496,     0 ), /*   492 lea               */
+  S_ST( 'f',   3,      494,     0 ), /*   493 leap              */
+  S_ST( 'i',   3,      495,     0 ), /*   494 leapf             */
+  S_ST( 'l',   3,      338,     0 ), /*   495 leapfi            */
+  S_ST( 's',   3,      497,   493 ), /*   496 leap              */
+  S_ST( 'm',   3,      498,     0 ), /*   497 leaps             */
+  S_ST( 'e',   3,      499,     0 ), /*   498 leapsm            */
+  S_ST( 'a',   3,      500,     0 ), /*   499 leapsme           */
+  S_ST( 'r',   3,      501,     0 ), /*   500 leapsmea          */
+  S_ST( 'i',   3,      502,     0 ), /*   501 leapsmear         */
+  S_ST( 'n',   3,      503,     0 ), /*   502 leapsmeari        */
+  S_ST( 't',   3,      504,     0 ), /*   503 leapsmearin       */
+  S_ST( 'e',   3,      505,     0 ), /*   504 leapsmearint      */
+  S_ST( 'r',   3,      506,     0 ), /*   505 leapsmearinte     */
+  S_ST( 'v',   3,      507,     0 ), /*   506 leapsmearinter    */
+  S_ST( 'a',   3,      339,     0 ), /*   507 leapsmearinterv   */
+  S_ST( 'i',   3,      514,   490 ), /*   508 l                 */
+  S_ST( 'm',   3,      510,     0 ), /*   509 li                */
+  S_ST( 'i',   3,      511,     0 ), /*   510 lim               */
+  S_ST( 't',   3,      512,     0 ), /*   511 limi              */
+  S_ST( 'e',   3,      340,     0 ), /*   512 limit             */
+  S_ST( 'n',   3,      341,   509 ), /*   513 li                */
+  S_ST( 's',   3,      515,   513 ), /*   514 li                */
+  S_ST( 't',   3,      516,     0 ), /*   515 lis               */
+  S_ST( 'e',   3,      342,     0 ), /*   516 list              */
+  S_ST( 'o',   3,      533,   508 ), /*   517 l                 */
+  S_ST( 'g',   3,      524,     0 ), /*   518 lo                */
+  S_ST( 'c',   3,      520,     0 ), /*   519 log               */
+  S_ST( 'o',   3,      521,     0 ), /*   520 logc              */
+  S_ST( 'n',   3,      522,     0 ), /*   521 logco             */
+  S_ST( 'f',   3,      523,     0 ), /*   522 logcon            */
+  S_ST( 'i',   3,      343,     0 ), /*   523 logconf           */
+  S_ST( 'f',   3,      525,   519 ), /*   524 log               */
+  S_ST( 'i',   3,      526,     0 ), /*   525 logf              */
+  S_ST( 'l',   3,      344,     0 ), /*   526 logfi             */
+  S_ST( 'o',   3,      528,   518 ), /*   527 lo                */
+  S_ST( 'p',   3,      529,     0 ), /*   528 loo               */
+  S_ST( 's',   3,      530,     0 ), /*   529 loop              */
+  S_ST( 't',   3,      531,     0 ), /*   530 loops             */
+  S_ST( 'a',   3,      532,     0 ), /*   531 loopst            */
+  S_ST( 't',   3,      345,     0 ), /*   532 loopsta           */
+  S_ST( 'w',   3,      534,   527 ), /*   533 lo                */
+  S_ST( 'p',   3,      535,     0 ), /*   534 low               */
+  S_ST( 'r',   3,      536,     0 ), /*   535 lowp              */
+  S_ST( 'i',   3,      537,     0 ), /*   536 lowpr             */
+  S_ST( 'o',   3,      538,     0 ), /*   537 lowpri            */
+  S_ST( 't',   3,      539,     0 ), /*   538 lowprio           */
+  S_ST( 'r',   3,      540,     0 ), /*   539 lowpriot          */
+  S_ST( 'a',   3,      346,     0 ), /*   540 lowpriotr         */
+  S_ST( 'm',   3,      627,   489 ), /*   541                   */
+  S_ST( 'a',   3,      560,     0 ), /*   542 m                 */
+  S_ST( 'n',   3,      544,     0 ), /*   543 ma                */
+  S_ST( 'y',   3,      545,     0 ), /*   544 man               */
+  S_ST( 'c',   3,      546,     0 ), /*   545 many              */
+  S_ST( 'a',   3,      547,     0 ), /*   546 manyc             */
+  S_ST( 's',   3,      548,     0 ), /*   547 manyca            */
+  S_ST( 't',   3,      554,     0 ), /*   548 manycas           */
+  S_ST( 'c',   3,      550,     0 ), /*   549 manycast          */
+  S_ST( 'l',   3,      551,     0 ), /*   550 manycastc         */
+  S_ST( 'i',   3,      552,     0 ), /*   551 manycastcl        */
+  S_ST( 'e',   3,      553,     0 ), /*   552 manycastcli       */
+  S_ST( 'n',   3,      347,     0 ), /*   553 manycastclie      */
+  S_ST( 's',   3,      555,   549 ), /*   554 manycast          */
+  S_ST( 'e',   3,      556,     0 ), /*   555 manycasts         */
+  S_ST( 'r',   3,      557,     0 ), /*   556 manycastse        */
+  S_ST( 'v',   3,      558,     0 ), /*   557 manycastser       */
+  S_ST( 'e',   3,      348,     0 ), /*   558 manycastserv      */
+  S_ST( 's',   3,      349,   543 ), /*   559 ma                */
+  S_ST( 'x',   3,      575,   559 ), /*   560 ma                */
+  S_ST( 'a',   3,      562,     0 ), /*   561 max               */
+  S_ST( 'g',   3,      350,     0 ), /*   562 maxa              */
+  S_ST( 'c',   3,      564,   561 ), /*   563 max               */
+  S_ST( 'l',   3,      565,     0 ), /*   564 maxc              */
+  S_ST( 'o',   3,      566,     0 ), /*   565 maxcl             */
+  S_ST( 'c',   3,      351,     0 ), /*   566 maxclo            */
+  S_ST( 'd',   3,      571,   563 ), /*   567 max               */
+  S_ST( 'e',   3,      569,     0 ), /*   568 maxd              */
+  S_ST( 'p',   3,      570,     0 ), /*   569 maxde             */
+  S_ST( 't',   3,      352,     0 ), /*   570 maxdep            */
+  S_ST( 'i',   3,      572,   568 ), /*   571 maxd              */
+  S_ST( 's',   3,      353,     0 ), /*   572 maxdi             */
+  S_ST( 'm',   3,      574,   567 ), /*   573 max               */
+  S_ST( 'e',   3,      354,     0 ), /*   574 maxm              */
+  S_ST( 'p',   3,      576,   573 ), /*   575 max               */
+  S_ST( 'o',   3,      577,     0 ), /*   576 maxp              */
+  S_ST( 'l',   3,      355,     0 ), /*   577 maxpo             */
+  S_ST( 'd',   3,      579,   542 ), /*   578 m                 */
+  S_ST( 'n',   3,      580,     0 ), /*   579 md                */
+  S_ST( 's',   3,      581,     0 ), /*   580 mdn               */
+  S_ST( 't',   3,      582,     0 ), /*   581 mdns              */
+  S_ST( 'r',   3,      583,     0 ), /*   582 mdnst             */
+  S_ST( 'i',   3,      584,     0 ), /*   583 mdnstr            */
+  S_ST( 'e',   3,      356,     0 ), /*   584 mdnstri           */
+  S_ST( 'e',   3,      357,   578 ), /*   585 m                 */
+  S_ST( 'l',   3,      587,     0 ), /*   586 mem               */
+  S_ST( 'o',   3,      588,     0 ), /*   587 meml              */
+  S_ST( 'c',   3,      358,     0 ), /*   588 memlo             */
+  S_ST( 'i',   3,      590,   585 ), /*   589 m                 */
+  S_ST( 'n',   3,      612,     0 ), /*   590 mi                */
+  S_ST( 'c',   3,      592,     0 ), /*   591 min               */
+  S_ST( 'l',   3,      593,     0 ), /*   592 minc              */
+  S_ST( 'o',   3,      594,     0 ), /*   593 mincl             */
+  S_ST( 'c',   3,      359,     0 ), /*   594 minclo            */
+  S_ST( 'd',   3,      599,   591 ), /*   595 min               */
+  S_ST( 'e',   3,      597,     0 ), /*   596 mind              */
+  S_ST( 'p',   3,      598,     0 ), /*   597 minde             */
+  S_ST( 't',   3,      360,     0 ), /*   598 mindep            */
+  S_ST( 'i',   3,      600,   596 ), /*   599 mind              */
+  S_ST( 's',   3,      361,     0 ), /*   600 mindi             */
+  S_ST( 'i',   3,      602,   595 ), /*   601 min               */
+  S_ST( 'm',   3,      603,     0 ), /*   602 mini              */
+  S_ST( 'u',   3,      362,     0 ), /*   603 minim             */
+  S_ST( 'j',   3,      605,   601 ), /*   604 min               */
+  S_ST( 'i',   3,      606,     0 ), /*   605 minj              */
+  S_ST( 't',   3,      607,     0 ), /*   606 minji             */
+  S_ST( 't',   3,      608,     0 ), /*   607 minjit            */
+  S_ST( 'e',   3,      363,     0 ), /*   608 minjitt           */
+  S_ST( 'p',   3,      610,   604 ), /*   609 min               */
+  S_ST( 'o',   3,      611,     0 ), /*   610 minp              */
+  S_ST( 'l',   3,      364,     0 ), /*   611 minpo             */
+  S_ST( 's',   3,      613,   609 ), /*   612 min               */
+  S_ST( 'a',   3,      614,     0 ), /*   613 mins              */
+  S_ST( 'n',   3,      365,     0 ), /*   614 minsa             */
+  S_ST( 'o',   3,      617,   589 ), /*   615 m                 */
+  S_ST( 'd',   3,      366,     0 ), /*   616 mo                */
+  S_ST( 'n',   3,      621,   616 ), /*   617 mo                */
+  S_ST( 'i',   3,      619,     0 ), /*   618 mon               */
+  S_ST( 't',   3,      620,     0 ), /*   619 moni              */
+  S_ST( 'o',   3,      368,     0 ), /*   620 monit             */
+  S_ST( 't',   3,      369,   618 ), /*   621 mon               */
+  S_ST( 'r',   3,      370,   615 ), /*   622 m                 */
+  S_ST( 's',   3,      624,   622 ), /*   623 m                 */
+  S_ST( 's',   3,      625,     0 ), /*   624 ms                */
+  S_ST( 'n',   3,      626,     0 ), /*   625 mss               */
+  S_ST( 't',   3,      371,     0 ), /*   626 mssn              */
+  S_ST( 'u',   3,      628,   623 ), /*   627 m                 */
+  S_ST( 'l',   3,      629,     0 ), /*   628 mu                */
+  S_ST( 't',   3,      630,     0 ), /*   629 mul               */
+  S_ST( 'i',   3,      631,     0 ), /*   630 mult              */
+  S_ST( 'c',   3,      632,     0 ), /*   631 multi             */
+  S_ST( 'a',   3,      633,     0 ), /*   632 multic            */
+  S_ST( 's',   3,      634,     0 ), /*   633 multica           */
+  S_ST( 't',   3,      635,     0 ), /*   634 multicas          */
+  S_ST( 'c',   3,      636,     0 ), /*   635 multicast         */
+  S_ST( 'l',   3,      637,     0 ), /*   636 multicastc        */
+  S_ST( 'i',   3,      638,     0 ), /*   637 multicastcl       */
+  S_ST( 'e',   3,      639,     0 ), /*   638 multicastcli      */
+  S_ST( 'n',   3,      372,     0 ), /*   639 multicastclie     */
+  S_ST( 'n',   3,      687,   541 ), /*   640                   */
+  S_ST( 'i',   3,      373,     0 ), /*   641 n                 */
+  S_ST( 'o',   3,      682,   641 ), /*   642 n                 */
+  S_ST( 'e',   3,      644,     0 ), /*   643 no                */
+  S_ST( 'p',   3,      645,     0 ), /*   644 noe               */
+  S_ST( 'e',   3,      646,     0 ), /*   645 noep              */
+  S_ST( 'e',   3,      379,     0 ), /*   646 noepe             */
+  S_ST( 'l',   3,      648,   643 ), /*   647 no                */
+  S_ST( 'i',   3,      649,     0 ), /*   648 nol               */
+  S_ST( 'n',   3,      374,     0 ), /*   649 noli              */
+  S_ST( 'm',   3,      655,   647 ), /*   650 no                */
+  S_ST( 'o',   3,      652,     0 ), /*   651 nom               */
+  S_ST( 'd',   3,      653,     0 ), /*   652 nomo              */
+  S_ST( 'i',   3,      654,     0 ), /*   653 nomod             */
+  S_ST( 'f',   3,      375,     0 ), /*   654 nomodi            */
+  S_ST( 'r',   3,      656,   651 ), /*   655 nom               */
+  S_ST( 'u',   3,      657,     0 ), /*   656 nomr              */
+  S_ST( 'l',   3,      658,     0 ), /*   657 nomru             */
+  S_ST( 'i',   3,      659,     0 ), /*   658 nomrul            */
+  S_ST( 's',   3,      376,     0 ), /*   659 nomruli           */
+  S_ST( 'n',   3,      661,   650 ), /*   660 no                */
+  S_ST( 'v',   3,      662,   377 ), /*   661 non               */
+  S_ST( 'o',   3,      663,     0 ), /*   662 nonv              */
+  S_ST( 'l',   3,      664,     0 ), /*   663 nonvo             */
+  S_ST( 'a',   3,      665,     0 ), /*   664 nonvol            */
+  S_ST( 't',   3,      666,     0 ), /*   665 nonvola           */
+  S_ST( 'i',   3,      667,     0 ), /*   666 nonvolat          */
+  S_ST( 'l',   3,      378,     0 ), /*   667 nonvolati         */
+  S_ST( 'p',   3,      669,   660 ), /*   668 no                */
+  S_ST( 'e',   3,      670,     0 ), /*   669 nop               */
+  S_ST( 'e',   3,      380,     0 ), /*   670 nope              */
+  S_ST( 'q',   3,      672,   668 ), /*   671 no                */
+  S_ST( 'u',   3,      673,     0 ), /*   672 noq               */
+  S_ST( 'e',   3,      674,     0 ), /*   673 noqu              */
+  S_ST( 'r',   3,      381,     0 ), /*   674 noque             */
+  S_ST( 's',   3,      676,   671 ), /*   675 no                */
+  S_ST( 'e',   3,      680,     0 ), /*   676 nos               */
+  S_ST( 'l',   3,      678,     0 ), /*   677 nose              */
+  S_ST( 'e',   3,      679,     0 ), /*   678 nosel             */
+  S_ST( 'c',   3,      382,     0 ), /*   679 nosele            */
+  S_ST( 'r',   3,      681,   677 ), /*   680 nose              */
+  S_ST( 'v',   3,      383,     0 ), /*   681 noser             */
+  S_ST( 't',   3,      683,   675 ), /*   682 no                */
+  S_ST( 'r',   3,      685,     0 ), /*   683 not               */
+  S_ST( 'a',   3,      384,     0 ), /*   684 notr              */
+  S_ST( 'u',   3,      686,   684 ), /*   685 notr              */
+  S_ST( 's',   3,      385,     0 ), /*   686 notru             */
+  S_ST( 't',   3,      386,   642 ), /*   687 n                 */
+  S_ST( 'p',   3,      689,     0 ), /*   688 ntp               */
+  S_ST( 'o',   3,      690,     0 ), /*   689 ntpp              */
+  S_ST( 'r',   3,      387,     0 ), /*   690 ntppo             */
+  S_ST( 's',   3,      692,   688 ), /*   691 ntp               */
+  S_ST( 'i',   3,      693,     0 ), /*   692 ntps              */
+  S_ST( 'g',   3,      694,     0 ), /*   693 ntpsi             */
+  S_ST( 'n',   3,      695,     0 ), /*   694 ntpsig            */
+  S_ST( 'd',   3,      696,     0 ), /*   695 ntpsign           */
+  S_ST( 's',   3,      697,     0 ), /*   696 ntpsignd          */
+  S_ST( 'o',   3,      698,     0 ), /*   697 ntpsignds         */
+  S_ST( 'c',   3,      699,     0 ), /*   698 ntpsigndso        */
+  S_ST( 'k',   3,      700,     0 ), /*   699 ntpsigndsoc       */
+  S_ST( 'e',   3,      388,     0 ), /*   700 ntpsigndsock      */
+  S_ST( 'o',   3,      702,   640 ), /*   701                   */
+  S_ST( 'r',   3,      703,     0 ), /*   702 o                 */
+  S_ST( 'p',   3,      704,     0 ), /*   703 or                */
+  S_ST( 'h',   3,      705,     0 ), /*   704 orp               */
+  S_ST( 'a',   3,      389,     0 ), /*   705 orph              */
+  S_ST( 'w',   3,      707,     0 ), /*   706 orphan            */
+  S_ST( 'a',   3,      708,     0 ), /*   707 orphanw           */
+  S_ST( 'i',   3,      390,     0 ), /*   708 orphanwa          */
+  S_ST( 'p',   3,      406,   701 ), /*   709                   */
+  S_ST( 'a',   3,      711,     0 ), /*   710 p                 */
+  S_ST( 'n',   3,      712,     0 ), /*   711 pa                */
+  S_ST( 'i',   3,      392,     0 ), /*   712 pan               */
+  S_ST( 'e',   3,      714,   710 ), /*   713 p                 */
+  S_ST( 'e',   3,      393,     0 ), /*   714 pe                */
+  S_ST( '_',   3,      716,     0 ), /*   715 peer              */
+  S_ST( 'c',   3,      717,     0 ), /*   716 peer_             */
+  S_ST( 'l',   3,      718,     0 ), /*   717 peer_c            */
+  S_ST( 'e',   3,      719,     0 ), /*   718 peer_cl           */
+  S_ST( 'a',   3,      720,     0 ), /*   719 peer_cle          */
+  S_ST( 'r',   3,      721,     0 ), /*   720 peer_clea         */
+  S_ST( '_',   3,      722,     0 ), /*   721 peer_clear        */
+  S_ST( 'd',   3,      723,     0 ), /*   722 peer_clear_       */
+  S_ST( 'i',   3,      724,     0 ), /*   723 peer_clear_d      */
+  S_ST( 'g',   3,      725,     0 ), /*   724 peer_clear_di     */
+  S_ST( 'e',   3,      726,     0 ), /*   725 peer_clear_dig    */
+  S_ST( 's',   3,      727,     0 ), /*   726 peer_clear_dige   */
+  S_ST( 't',   3,      728,     0 ), /*   727 peer_clear_diges  */
+  S_ST( '_',   3,      729,     0 ), /*   728 peer_clear_digest */
+  S_ST( 'e',   3,      730,     0 ), /*   729 peer_clear_digest_ */
+  S_ST( 'a',   3,      731,     0 ), /*   730 peer_clear_digest_e */
+  S_ST( 'r',   3,      732,     0 ), /*   731 peer_clear_digest_ea */
+  S_ST( 'l',   3,      391,     0 ), /*   732 peer_clear_digest_ear */
+  S_ST( 's',   3,      734,   715 ), /*   733 peer              */
+  S_ST( 't',   3,      735,     0 ), /*   734 peers             */
+  S_ST( 'a',   3,      736,     0 ), /*   735 peerst            */
+  S_ST( 't',   3,      394,     0 ), /*   736 peersta           */
+  S_ST( 'h',   3,      738,   713 ), /*   737 p                 */
+  S_ST( 'o',   3,      739,     0 ), /*   738 ph                */
+  S_ST( 'n',   3,      395,     0 ), /*   739 pho               */
+  S_ST( 'i',   3,      396,   737 ), /*   740 p                 */
+  S_ST( 'f',   3,      742,     0 ), /*   741 pid               */
+  S_ST( 'i',   3,      743,     0 ), /*   742 pidf              */
+  S_ST( 'l',   3,      397,     0 ), /*   743 pidfi             */
+  S_ST( 'o',   3,      754,   740 ), /*   744 p                 */
+  S_ST( 'l',   3,      398,     0 ), /*   745 po                */
+  S_ST( 's',   3,      747,     0 ), /*   746 poll              */
+  S_ST( 'k',   3,      748,     0 ), /*   747 polls             */
+  S_ST( 'e',   3,      749,     0 ), /*   748 pollsk            */
+  S_ST( 'w',   3,      750,     0 ), /*   749 pollske           */
+  S_ST( 'l',   3,      751,     0 ), /*   750 pollskew          */
+  S_ST( 'i',   3,      752,     0 ), /*   751 pollskewl         */
+  S_ST( 's',   3,      399,     0 ), /*   752 pollskewli        */
+  S_ST( 'o',   3,      400,   745 ), /*   753 po                */
+  S_ST( 'r',   3,      401,   753 ), /*   754 po                */
+  S_ST( 'p',   3,      756,   744 ), /*   755 p                 */
+  S_ST( 's',   3,      757,     0 ), /*   756 pp                */
+  S_ST( 'd',   3,      758,     0 ), /*   757 pps               */
+  S_ST( 'a',   3,      759,     0 ), /*   758 ppsd              */
+  S_ST( 't',   3,      402,     0 ), /*   759 ppsda             */
+  S_ST( 'r',   3,      767,   755 ), /*   760 p                 */
+  S_ST( 'e',   3,      765,     0 ), /*   761 pr                */
+  S_ST( 'e',   3,      763,     0 ), /*   762 pre               */
+  S_ST( 'm',   3,      764,     0 ), /*   763 pree              */
+  S_ST( 'p',   3,      403,     0 ), /*   764 preem             */
+  S_ST( 'f',   3,      766,   762 ), /*   765 pre               */
+  S_ST( 'e',   3,      404,     0 ), /*   766 pref              */
+  S_ST( 'o',   3,      780,   761 ), /*   767 pr                */
+  S_ST( 'c',   3,      769,     0 ), /*   768 pro               */
+  S_ST( '_',   3,      770,     0 ), /*   769 proc              */
+  S_ST( 'd',   3,      771,     0 ), /*   770 proc_             */
+  S_ST( 'e',   3,      772,     0 ), /*   771 proc_d            */
+  S_ST( 'l',   3,      773,     0 ), /*   772 proc_de           */
+  S_ST( 'a',   3,      470,     0 ), /*   773 proc_del          */
+  S_ST( 'p',   3,      775,   768 ), /*   774 pro               */
+  S_ST( '_',   3,      776,     0 ), /*   775 prop              */
+  S_ST( 'd',   3,      777,     0 ), /*   776 prop_             */
+  S_ST( 'e',   3,      778,     0 ), /*   777 prop_d            */
+  S_ST( 'l',   3,      779,     0 ), /*   778 prop_de           */
+  S_ST( 'a',   3,      469,     0 ), /*   779 prop_del          */
+  S_ST( 't',   3,      781,   774 ), /*   780 pro               */
+  S_ST( 'o',   3,      782,     0 ), /*   781 prot              */
+  S_ST( 's',   3,      783,     0 ), /*   782 proto             */
+  S_ST( 't',   3,      784,     0 ), /*   783 protos            */
+  S_ST( 'a',   3,      785,     0 ), /*   784 protost           */
+  S_ST( 't',   3,      405,     0 ), /*   785 protosta          */
+  S_ST( 'r',   3,      817,   709 ), /*   786                   */
+  S_ST( 'a',   3,      793,     0 ), /*   787 r                 */
+  S_ST( 'n',   3,      789,     0 ), /*   788 ra                */
+  S_ST( 'd',   3,      790,     0 ), /*   789 ran               */
+  S_ST( 'f',   3,      791,     0 ), /*   790 rand              */
+  S_ST( 'i',   3,      792,     0 ), /*   791 randf             */
+  S_ST( 'l',   3,      407,     0 ), /*   792 randfi            */
+  S_ST( 'w',   3,      794,   788 ), /*   793 ra                */
+  S_ST( 's',   3,      795,     0 ), /*   794 raw               */
+  S_ST( 't',   3,      796,     0 ), /*   795 raws              */
+  S_ST( 'a',   3,      797,     0 ), /*   796 rawst             */
+  S_ST( 't',   3,      408,     0 ), /*   797 rawsta            */
+  S_ST( 'e',   3,      814,   787 ), /*   798 r                 */
+  S_ST( 'f',   3,      800,     0 ), /*   799 re                */
+  S_ST( 'i',   3,      409,     0 ), /*   800 ref               */
+  S_ST( 'q',   3,      802,   799 ), /*   801 re                */
+  S_ST( 'u',   3,      803,     0 ), /*   802 req               */
+  S_ST( 'e',   3,      804,     0 ), /*   803 requ              */
+  S_ST( 's',   3,      805,     0 ), /*   804 reque             */
+  S_ST( 't',   3,      806,     0 ), /*   805 reques            */
+  S_ST( 'k',   3,      807,     0 ), /*   806 request           */
+  S_ST( 'e',   3,      410,     0 ), /*   807 requestk          */
+  S_ST( 's',   3,      810,   801 ), /*   808 re                */
+  S_ST( 'e',   3,      411,     0 ), /*   809 res               */
+  S_ST( 't',   3,      811,   809 ), /*   810 res               */
+  S_ST( 'r',   3,      812,     0 ), /*   811 rest              */
+  S_ST( 'i',   3,      813,     0 ), /*   812 restr             */
+  S_ST( 'c',   3,      412,     0 ), /*   813 restri            */
+  S_ST( 'v',   3,      815,   808 ), /*   814 re                */
+  S_ST( 'o',   3,      816,     0 ), /*   815 rev               */
+  S_ST( 'k',   3,      413,     0 ), /*   816 revo              */
+  S_ST( 'l',   3,      818,   798 ), /*   817 r                 */
+  S_ST( 'i',   3,      819,     0 ), /*   818 rl                */
+  S_ST( 'm',   3,      820,     0 ), /*   819 rli               */
+  S_ST( 'i',   3,      414,     0 ), /*   820 rlim              */
+  S_ST( 's',   3,      901,   786 ), /*   821                   */
+  S_ST( 'a',   3,      823,     0 ), /*   822 s                 */
+  S_ST( 'v',   3,      824,     0 ), /*   823 sa                */
+  S_ST( 'e',   3,      825,     0 ), /*   824 sav               */
+  S_ST( 'c',   3,      826,     0 ), /*   825 save              */
+  S_ST( 'o',   3,      827,     0 ), /*   826 savec             */
+  S_ST( 'n',   3,      828,     0 ), /*   827 saveco            */
+  S_ST( 'f',   3,      829,     0 ), /*   828 savecon           */
+  S_ST( 'i',   3,      830,     0 ), /*   829 saveconf          */
+  S_ST( 'g',   3,      831,     0 ), /*   830 saveconfi         */
+  S_ST( 'd',   3,      832,     0 ), /*   831 saveconfig        */
+  S_ST( 'i',   3,      415,     0 ), /*   832 saveconfigd       */
+  S_ST( 'e',   3,      850,   822 ), /*   833 s                 */
+  S_ST( 'r',   3,      835,     0 ), /*   834 se                */
+  S_ST( 'v',   3,      836,     0 ), /*   835 ser               */
+  S_ST( 'e',   3,      416,     0 ), /*   836 serv              */
+  S_ST( '_',   3,      838,     0 ), /*   837 server            */
+  S_ST( 'o',   3,      839,     0 ), /*   838 server_           */
+  S_ST( 'f',   3,      840,     0 ), /*   839 server_o          */
+  S_ST( 'f',   3,      841,     0 ), /*   840 server_of         */
+  S_ST( 's',   3,      842,     0 ), /*   841 server_off        */
+  S_ST( 'e',   3,      464,     0 ), /*   842 server_offs       */
+  S_ST( 'r',   3,      844,   837 ), /*   843 server            */
+  S_ST( 'e',   3,      845,     0 ), /*   844 serverr           */
+  S_ST( 's',   3,      846,     0 ), /*   845 serverre          */
+  S_ST( 'p',   3,      847,     0 ), /*   846 serverres         */
+  S_ST( 'o',   3,      848,     0 ), /*   847 serverresp        */
+  S_ST( 'n',   3,      849,     0 ), /*   848 serverrespo       */
+  S_ST( 's',   3,      417,     0 ), /*   849 serverrespon      */
+  S_ST( 't',   3,      851,   834 ), /*   850 se                */
+  S_ST( 'v',   3,      852,     0 ), /*   851 set               */
+  S_ST( 'a',   3,      419,     0 ), /*   852 setv              */
+  S_ST( 'i',   3,      854,   833 ), /*   853 s                 */
+  S_ST( 'm',   3,      855,     0 ), /*   854 si                */
+  S_ST( 'u',   3,      856,     0 ), /*   855 sim               */
+  S_ST( 'l',   3,      857,     0 ), /*   856 simu              */
+  S_ST( 'a',   3,      858,     0 ), /*   857 simul             */
+  S_ST( 't',   3,      859,     0 ), /*   858 simula            */
+  S_ST( 'i',   3,      860,   461 ), /*   859 simulat           */
+  S_ST( 'o',   3,      861,     0 ), /*   860 simulati          */
+  S_ST( 'n',   3,      862,     0 ), /*   861 simulatio         */
+  S_ST( '_',   3,      863,     0 ), /*   862 simulation        */
+  S_ST( 'd',   3,      864,     0 ), /*   863 simulation_       */
+  S_ST( 'u',   3,      865,     0 ), /*   864 simulation_d      */
+  S_ST( 'r',   3,      866,     0 ), /*   865 simulation_du     */
+  S_ST( 'a',   3,      867,     0 ), /*   866 simulation_dur    */
+  S_ST( 't',   3,      868,     0 ), /*   867 simulation_dura   */
+  S_ST( 'i',   3,      869,     0 ), /*   868 simulation_durat  */
+  S_ST( 'o',   3,      463,     0 ), /*   869 simulation_durati */
+  S_ST( 'o',   3,      871,   853 ), /*   870 s                 */
+  S_ST( 'u',   3,      872,     0 ), /*   871 so                */
+  S_ST( 'r',   3,      873,     0 ), /*   872 sou               */
+  S_ST( 'c',   3,      420,     0 ), /*   873 sour              */
+  S_ST( 't',   3,      897,   870 ), /*   874 s                 */
+  S_ST( 'a',   3,      881,     0 ), /*   875 st                */
+  S_ST( 'c',   3,      877,     0 ), /*   876 sta               */
+  S_ST( 'k',   3,      878,     0 ), /*   877 stac              */
+  S_ST( 's',   3,      879,     0 ), /*   878 stack             */
+  S_ST( 'i',   3,      880,     0 ), /*   879 stacks            */
+  S_ST( 'z',   3,      421,     0 ), /*   880 stacksi           */
+  S_ST( 't',   3,      423,   876 ), /*   881 sta               */
+  S_ST( 'i',   3,      883,     0 ), /*   882 stat              */
+  S_ST( 's',   3,      884,     0 ), /*   883 stati             */
+  S_ST( 't',   3,      885,     0 ), /*   884 statis            */
+  S_ST( 'i',   3,      886,     0 ), /*   885 statist           */
+  S_ST( 'c',   3,      422,     0 ), /*   886 statisti          */
+  S_ST( 'd',   3,      888,     0 ), /*   887 stats             */
+  S_ST( 'i',   3,      424,     0 ), /*   888 statsd            */
+  S_ST( 'e',   3,      425,   875 ), /*   889 st                */
+  S_ST( 'b',   3,      891,     0 ), /*   890 step              */
+  S_ST( 'a',   3,      892,     0 ), /*   891 stepb             */
+  S_ST( 'c',   3,      426,     0 ), /*   892 stepba            */
+  S_ST( 'f',   3,      894,   890 ), /*   893 step              */
+  S_ST( 'w',   3,      427,     0 ), /*   894 stepf             */
+  S_ST( 'o',   3,      896,   893 ), /*   895 step              */
+  S_ST( 'u',   3,      428,     0 ), /*   896 stepo             */
+  S_ST( 'r',   3,      898,   889 ), /*   897 st                */
+  S_ST( 'a',   3,      899,     0 ), /*   898 str               */
+  S_ST( 't',   3,      900,     0 ), /*   899 stra              */
+  S_ST( 'u',   3,      429,     0 ), /*   900 strat             */
+  S_ST( 'y',   3,      431,   874 ), /*   901 s                 */
+  S_ST( 's',   3,      903,     0 ), /*   902 sys               */
+  S_ST( 't',   3,      904,     0 ), /*   903 syss              */
+  S_ST( 'a',   3,      905,     0 ), /*   904 sysst             */
+  S_ST( 't',   3,      432,     0 ), /*   905 syssta            */
+  S_ST( 't',   3,      935,   821 ), /*   906                   */
+  S_ST( 'i',   3,      921,     0 ), /*   907 t                 */
+  S_ST( 'c',   3,      433,     0 ), /*   908 ti                */
+  S_ST( 'm',   3,      914,   908 ), /*   909 ti                */
+  S_ST( 'e',   3,      437,     0 ), /*   910 tim               */
+  S_ST( 'd',   3,      912,   435 ), /*   911 time              */
+  S_ST( 'a',   3,      913,     0 ), /*   912 timed             */
+  S_ST( 't',   3,      436,     0 ), /*   913 timeda            */
+  S_ST( 'i',   3,      915,   910 ), /*   914 tim               */
+  S_ST( 'n',   3,      916,     0 ), /*   915 timi              */
+  S_ST( 'g',   3,      917,     0 ), /*   916 timin             */
+  S_ST( 's',   3,      918,     0 ), /*   917 timing            */
+  S_ST( 't',   3,      919,     0 ), /*   918 timings           */
+  S_ST( 'a',   3,      920,     0 ), /*   919 timingst          */
+  S_ST( 't',   3,      438,     0 ), /*   920 timingsta         */
+  S_ST( 'n',   3,      922,   909 ), /*   921 ti                */
+  S_ST( 'k',   3,      923,     0 ), /*   922 tin               */
+  S_ST( 'e',   3,      439,     0 ), /*   923 tink              */
+  S_ST( 'o',   3,      440,   907 ), /*   924 t                 */
+  S_ST( 'r',   3,      927,   924 ), /*   925 t                 */
+  S_ST( 'a',   3,      441,     0 ), /*   926 tr                */
+  S_ST( 'u',   3,      928,   926 ), /*   927 tr                */
+  S_ST( 's',   3,      929,   442 ), /*   928 tru               */
+  S_ST( 't',   3,      930,     0 ), /*   929 trus              */
+  S_ST( 'e',   3,      931,     0 ), /*   930 trust             */
+  S_ST( 'd',   3,      932,     0 ), /*   931 truste            */
+  S_ST( 'k',   3,      933,     0 ), /*   932 trusted           */
+  S_ST( 'e',   3,      443,     0 ), /*   933 trustedk          */
+  S_ST( 't',   3,      444,   925 ), /*   934 t                 */
+  S_ST( 'y',   3,      936,   934 ), /*   935 t                 */
+  S_ST( 'p',   3,      445,     0 ), /*   936 ty                */
+  S_ST( 'u',   3,      938,   906 ), /*   937                   */
+  S_ST( 'n',   3,      944,     0 ), /*   938 u                 */
+  S_ST( 'c',   3,      940,     0 ), /*   939 un                */
+  S_ST( 'o',   3,      941,     0 ), /*   940 unc               */
+  S_ST( 'n',   3,      942,     0 ), /*   941 unco              */
+  S_ST( 'f',   3,      943,     0 ), /*   942 uncon             */
+  S_ST( 'i',   3,      450,     0 ), /*   943 unconf            */
+  S_ST( 'p',   3,      945,   939 ), /*   944 un                */
+  S_ST( 'e',   3,      946,     0 ), /*   945 unp               */
+  S_ST( 'e',   3,      451,     0 ), /*   946 unpe              */
+  S_ST( '_',   3,      967,     0 ), /*   947 unpeer            */
+  S_ST( 'c',   3,      949,     0 ), /*   948 unpeer_           */
+  S_ST( 'r',   3,      950,     0 ), /*   949 unpeer_c          */
+  S_ST( 'y',   3,      951,     0 ), /*   950 unpeer_cr         */
+  S_ST( 'p',   3,      952,     0 ), /*   951 unpeer_cry        */
+  S_ST( 't',   3,      953,     0 ), /*   952 unpeer_cryp       */
+  S_ST( 'o',   3,      954,     0 ), /*   953 unpeer_crypt      */
+  S_ST( '_',   3,      959,     0 ), /*   954 unpeer_crypto     */
+  S_ST( 'e',   3,      956,     0 ), /*   955 unpeer_crypto_    */
+  S_ST( 'a',   3,      957,     0 ), /*   956 unpeer_crypto_e   */
+  S_ST( 'r',   3,      958,     0 ), /*   957 unpeer_crypto_ea  */
+  S_ST( 'l',   3,      447,     0 ), /*   958 unpeer_crypto_ear */
+  S_ST( 'n',   3,      960,   955 ), /*   959 unpeer_crypto_    */
+  S_ST( 'a',   3,      961,     0 ), /*   960 unpeer_crypto_n   */
+  S_ST( 'k',   3,      962,     0 ), /*   961 unpeer_crypto_na  */
+  S_ST( '_',   3,      963,     0 ), /*   962 unpeer_crypto_nak */
+  S_ST( 'e',   3,      964,     0 ), /*   963 unpeer_crypto_nak_ */
+  S_ST( 'a',   3,      965,     0 ), /*   964 unpeer_crypto_nak_e */
+  S_ST( 'r',   3,      966,     0 ), /*   965 unpeer_crypto_nak_ea */
+  S_ST( 'l',   3,      448,     0 ), /*   966 unpeer_crypto_nak_ear */
+  S_ST( 'd',   3,      968,   948 ), /*   967 unpeer_           */
+  S_ST( 'i',   3,      969,     0 ), /*   968 unpeer_d          */
+  S_ST( 'g',   3,      970,     0 ), /*   969 unpeer_di         */
+  S_ST( 'e',   3,      971,     0 ), /*   970 unpeer_dig        */
+  S_ST( 's',   3,      972,     0 ), /*   971 unpeer_dige       */
+  S_ST( 't',   3,      973,     0 ), /*   972 unpeer_diges      */
+  S_ST( '_',   3,      974,     0 ), /*   973 unpeer_digest     */
+  S_ST( 'e',   3,      975,     0 ), /*   974 unpeer_digest_    */
+  S_ST( 'a',   3,      976,     0 ), /*   975 unpeer_digest_e   */
+  S_ST( 'r',   3,      977,     0 ), /*   976 unpeer_digest_ea  */
+  S_ST( 'l',   3,      449,     0 ), /*   977 unpeer_digest_ear */
+  S_ST( 'v',   3,      979,   937 ), /*   978                   */
+  S_ST( 'e',   3,      980,     0 ), /*   979 v                 */
+  S_ST( 'r',   3,      981,     0 ), /*   980 ve                */
+  S_ST( 's',   3,      982,     0 ), /*   981 ver               */
+  S_ST( 'i',   3,      983,     0 ), /*   982 vers              */
+  S_ST( 'o',   3,      452,     0 ), /*   983 versi             */
+  S_ST( 'w',   3,      991,   978 ), /*   984                   */
+  S_ST( 'a',   3,      986,     0 ), /*   985 w                 */
+  S_ST( 'n',   3,      987,     0 ), /*   986 wa                */
+  S_ST( 'd',   3,      988,     0 ), /*   987 wan               */
+  S_ST( 'e',   3,      467,     0 ), /*   988 wand              */
+  S_ST( 'e',   3,      990,   985 ), /*   989 w                 */
+  S_ST( 'e',   3,      454,     0 ), /*   990 we                */
+  S_ST( 'i',   3,      992,   989 ), /*   991 w                 */
+  S_ST( 'l',   3,      993,     0 ), /*   992 wi                */
+  S_ST( 'd',   3,      994,     0 ), /*   993 wil               */
+  S_ST( 'c',   3,      995,     0 ), /*   994 wild              */
+  S_ST( 'a',   3,      996,     0 ), /*   995 wildc             */
+  S_ST( 'r',   3,      455,     0 ), /*   996 wildca            */
+  S_ST( 'x',   3,     1002,   984 ), /*   997                   */
+  S_ST( 'l',   3,      999,     0 ), /*   998 x                 */
+  S_ST( 'e',   3,     1000,     0 ), /*   999 xl                */
+  S_ST( 'a',   3,     1001,     0 ), /*  1000 xle               */
+  S_ST( 'v',   3,      456,     0 ), /*  1001 xlea              */
+  S_ST( 'm',   3,     1003,   998 ), /*  1002 x                 */
+  S_ST( 't',   3,     1004,     0 ), /*  1003 xm                */
+  S_ST( 'n',   3,     1005,     0 ), /*  1004 xmt               */
+  S_ST( 'o',   3,     1006,     0 ), /*  1005 xmtn              */
+  S_ST( 'n',   3,     1007,     0 ), /*  1006 xmtno             */
+  S_ST( 'c',   3,      457,     0 ), /*  1007 xmtnon            */
+  S_ST( 'y',   3,     1009,   997 ), /*  1008 [initial state]   */
+  S_ST( 'e',   3,     1010,     0 ), /*  1009 y                 */
+  S_ST( 'a',   3,      458,     0 )  /*  1010 ye                */
 };
 
index fcd3bd29b11538c4dbddf786334feb646773aab0..2618862c57baea2f3728cab46c12b5a389b11611 100644 (file)
@@ -200,7 +200,7 @@ leapsec_load(
                        ttime = strtouv64(cp, &ep, 10);
                        if (parsefail(cp, ep))
                                goto fail_read;
-                               cp = skipws(ep);
+                       cp = skipws(ep);
                        taiof = strtol(cp, &endp, 10);
                        if (   parsefail(cp, endp)
                            || taiof > INT16_MAX || taiof < INT16_MIN)
index b3db452a243ee675a173e932b964760a118edb82..8af8dff301c4a6af45a596e6ae077028057f554b 100644 (file)
@@ -329,9 +329,9 @@ ntp_monitor(
 
        REQUIRE(rbufp != NULL);
 
-       if (mon_enabled == MON_OFF)
+       if (mon_enabled == MON_OFF) {
                return ~(RES_LIMITED | RES_KOD) & flags;
-
+       }
        pkt = &rbufp->recv_pkt;
        hash = MON_HASH(&rbufp->recv_srcadr);
        mode = PKT_MODE(pkt->li_vn_mode);
@@ -343,10 +343,11 @@ ntp_monitor(
         * otherwise cron'ed ntpdate or similar evades RES_LIMITED.
         */
 
-       for (; mon != NULL; mon = mon->hash_next)
-               if (SOCK_EQ(&mon->rmtadr, &rbufp->recv_srcadr))
+       for (; mon != NULL; mon = mon->hash_next) {
+               if (SOCK_EQ(&mon->rmtadr, &rbufp->recv_srcadr)) {
                        break;
-
+               }
+       }
        if (mon != NULL) {
                interval_fp = rbufp->recv_time;
                L_SUB(&interval_fp, &mon->last);
@@ -388,17 +389,17 @@ ntp_monitor(
                 * the average threshold plus the increment and leave
                 * the RES_LIMITED and RES_KOD bits lit. Otherwise,
                 * leave the counter alone and douse the RES_KOD bit.
-                * This rate-limits the KoDs to no less than the average
-                * headway.
+                * This rate-limits the KoDs to no more often than the
+                * average headway.
                 */
                if (interval + 1 >= ntp_minpkt && leak < limit) {
                        mon->leak = leak - 2;
                        restrict_mask &= ~(RES_LIMITED | RES_KOD);
-               } else if (mon->leak < limit)
+               } else if (mon->leak < limit) {
                        mon->leak = limit + head;
-               else
+               } else {
                        restrict_mask &= ~RES_KOD;
-
+               }
                mon->flags = restrict_mask;
 
                return mon->flags;
index edf87f609b5da677e699ce40f8a52eeddb138255..e5ee5e10a45933cb28e6e2628283fb27a876f218 100644 (file)
@@ -174,190 +174,191 @@ extern int yydebug;
     T_Ctl = 283,                   /* T_Ctl  */
     T_Day = 284,                   /* T_Day  */
     T_Default = 285,               /* T_Default  */
-    T_Device = 286,                /* T_Device  */
-    T_Digest = 287,                /* T_Digest  */
-    T_Disable = 288,               /* T_Disable  */
-    T_Discard = 289,               /* T_Discard  */
-    T_Dispersion = 290,            /* T_Dispersion  */
-    T_Double = 291,                /* T_Double  */
-    T_Driftfile = 292,             /* T_Driftfile  */
-    T_Drop = 293,                  /* T_Drop  */
-    T_Dscp = 294,                  /* T_Dscp  */
-    T_Ellipsis = 295,              /* T_Ellipsis  */
-    T_Enable = 296,                /* T_Enable  */
-    T_End = 297,                   /* T_End  */
-    T_Epeer = 298,                 /* T_Epeer  */
-    T_False = 299,                 /* T_False  */
-    T_File = 300,                  /* T_File  */
-    T_Filegen = 301,               /* T_Filegen  */
-    T_Filenum = 302,               /* T_Filenum  */
-    T_Flag1 = 303,                 /* T_Flag1  */
-    T_Flag2 = 304,                 /* T_Flag2  */
-    T_Flag3 = 305,                 /* T_Flag3  */
-    T_Flag4 = 306,                 /* T_Flag4  */
-    T_Flake = 307,                 /* T_Flake  */
-    T_Floor = 308,                 /* T_Floor  */
-    T_Freq = 309,                  /* T_Freq  */
-    T_Fudge = 310,                 /* T_Fudge  */
-    T_Fuzz = 311,                  /* T_Fuzz  */
-    T_Host = 312,                  /* T_Host  */
-    T_Huffpuff = 313,              /* T_Huffpuff  */
-    T_Iburst = 314,                /* T_Iburst  */
-    T_Ident = 315,                 /* T_Ident  */
-    T_Ignore = 316,                /* T_Ignore  */
-    T_Ignorehash = 317,            /* T_Ignorehash  */
-    T_Incalloc = 318,              /* T_Incalloc  */
-    T_Incmem = 319,                /* T_Incmem  */
-    T_Initalloc = 320,             /* T_Initalloc  */
-    T_Initmem = 321,               /* T_Initmem  */
-    T_Includefile = 322,           /* T_Includefile  */
-    T_Integer = 323,               /* T_Integer  */
-    T_Interface = 324,             /* T_Interface  */
-    T_Intrange = 325,              /* T_Intrange  */
-    T_Io = 326,                    /* T_Io  */
-    T_Ippeerlimit = 327,           /* T_Ippeerlimit  */
-    T_Ipv4 = 328,                  /* T_Ipv4  */
-    T_Ipv4_flag = 329,             /* T_Ipv4_flag  */
-    T_Ipv6 = 330,                  /* T_Ipv6  */
-    T_Ipv6_flag = 331,             /* T_Ipv6_flag  */
-    T_Kernel = 332,                /* T_Kernel  */
-    T_Key = 333,                   /* T_Key  */
-    T_Keys = 334,                  /* T_Keys  */
-    T_Keysdir = 335,               /* T_Keysdir  */
-    T_Kod = 336,                   /* T_Kod  */
-    T_Leapfile = 337,              /* T_Leapfile  */
-    T_Leapsmearinterval = 338,     /* T_Leapsmearinterval  */
-    T_Limited = 339,               /* T_Limited  */
-    T_Link = 340,                  /* T_Link  */
-    T_Listen = 341,                /* T_Listen  */
-    T_Logconfig = 342,             /* T_Logconfig  */
-    T_Logfile = 343,               /* T_Logfile  */
-    T_Loopstats = 344,             /* T_Loopstats  */
-    T_Lowpriotrap = 345,           /* T_Lowpriotrap  */
-    T_Manycastclient = 346,        /* T_Manycastclient  */
-    T_Manycastserver = 347,        /* T_Manycastserver  */
-    T_Mask = 348,                  /* T_Mask  */
-    T_Maxage = 349,                /* T_Maxage  */
-    T_Maxclock = 350,              /* T_Maxclock  */
-    T_Maxdepth = 351,              /* T_Maxdepth  */
-    T_Maxdist = 352,               /* T_Maxdist  */
-    T_Maxmem = 353,                /* T_Maxmem  */
-    T_Maxpoll = 354,               /* T_Maxpoll  */
-    T_Mdnstries = 355,             /* T_Mdnstries  */
-    T_Mem = 356,                   /* T_Mem  */
-    T_Memlock = 357,               /* T_Memlock  */
-    T_Minclock = 358,              /* T_Minclock  */
-    T_Mindepth = 359,              /* T_Mindepth  */
-    T_Mindist = 360,               /* T_Mindist  */
-    T_Minimum = 361,               /* T_Minimum  */
-    T_Minjitter = 362,             /* T_Minjitter  */
-    T_Minpoll = 363,               /* T_Minpoll  */
-    T_Minsane = 364,               /* T_Minsane  */
-    T_Mode = 365,                  /* T_Mode  */
-    T_Mode7 = 366,                 /* T_Mode7  */
-    T_Monitor = 367,               /* T_Monitor  */
-    T_Month = 368,                 /* T_Month  */
-    T_Mru = 369,                   /* T_Mru  */
-    T_Mssntp = 370,                /* T_Mssntp  */
-    T_Multicastclient = 371,       /* T_Multicastclient  */
-    T_Nic = 372,                   /* T_Nic  */
-    T_Nolink = 373,                /* T_Nolink  */
-    T_Nomodify = 374,              /* T_Nomodify  */
-    T_Nomrulist = 375,             /* T_Nomrulist  */
-    T_None = 376,                  /* T_None  */
-    T_Nonvolatile = 377,           /* T_Nonvolatile  */
-    T_Noepeer = 378,               /* T_Noepeer  */
-    T_Nopeer = 379,                /* T_Nopeer  */
-    T_Noquery = 380,               /* T_Noquery  */
-    T_Noselect = 381,              /* T_Noselect  */
-    T_Noserve = 382,               /* T_Noserve  */
-    T_Notrap = 383,                /* T_Notrap  */
-    T_Notrust = 384,               /* T_Notrust  */
-    T_Ntp = 385,                   /* T_Ntp  */
-    T_Ntpport = 386,               /* T_Ntpport  */
-    T_NtpSignDsocket = 387,        /* T_NtpSignDsocket  */
-    T_Orphan = 388,                /* T_Orphan  */
-    T_Orphanwait = 389,            /* T_Orphanwait  */
-    T_PCEdigest = 390,             /* T_PCEdigest  */
-    T_Panic = 391,                 /* T_Panic  */
-    T_Peer = 392,                  /* T_Peer  */
-    T_Peerstats = 393,             /* T_Peerstats  */
-    T_Phone = 394,                 /* T_Phone  */
-    T_Pid = 395,                   /* T_Pid  */
-    T_Pidfile = 396,               /* T_Pidfile  */
-    T_Poll = 397,                  /* T_Poll  */
-    T_PollSkewList = 398,          /* T_PollSkewList  */
-    T_Pool = 399,                  /* T_Pool  */
-    T_Port = 400,                  /* T_Port  */
-    T_PpsData = 401,               /* T_PpsData  */
-    T_Preempt = 402,               /* T_Preempt  */
-    T_Prefer = 403,                /* T_Prefer  */
-    T_Protostats = 404,            /* T_Protostats  */
-    T_Pw = 405,                    /* T_Pw  */
-    T_Randfile = 406,              /* T_Randfile  */
-    T_Rawstats = 407,              /* T_Rawstats  */
-    T_Refid = 408,                 /* T_Refid  */
-    T_Requestkey = 409,            /* T_Requestkey  */
-    T_Reset = 410,                 /* T_Reset  */
-    T_Restrict = 411,              /* T_Restrict  */
-    T_Revoke = 412,                /* T_Revoke  */
-    T_Rlimit = 413,                /* T_Rlimit  */
-    T_Saveconfigdir = 414,         /* T_Saveconfigdir  */
-    T_Server = 415,                /* T_Server  */
-    T_Serverresponse = 416,        /* T_Serverresponse  */
-    T_ServerresponseFuzz = 417,    /* T_ServerresponseFuzz  */
-    T_Setvar = 418,                /* T_Setvar  */
-    T_Source = 419,                /* T_Source  */
-    T_Stacksize = 420,             /* T_Stacksize  */
-    T_Statistics = 421,            /* T_Statistics  */
-    T_Stats = 422,                 /* T_Stats  */
-    T_Statsdir = 423,              /* T_Statsdir  */
-    T_Step = 424,                  /* T_Step  */
-    T_Stepback = 425,              /* T_Stepback  */
-    T_Stepfwd = 426,               /* T_Stepfwd  */
-    T_Stepout = 427,               /* T_Stepout  */
-    T_Stratum = 428,               /* T_Stratum  */
-    T_String = 429,                /* T_String  */
-    T_Sys = 430,                   /* T_Sys  */
-    T_Sysstats = 431,              /* T_Sysstats  */
-    T_Tick = 432,                  /* T_Tick  */
-    T_Time1 = 433,                 /* T_Time1  */
-    T_Time2 = 434,                 /* T_Time2  */
-    T_TimeData = 435,              /* T_TimeData  */
-    T_Timer = 436,                 /* T_Timer  */
-    T_Timingstats = 437,           /* T_Timingstats  */
-    T_Tinker = 438,                /* T_Tinker  */
-    T_Tos = 439,                   /* T_Tos  */
-    T_Trap = 440,                  /* T_Trap  */
-    T_True = 441,                  /* T_True  */
-    T_Trustedkey = 442,            /* T_Trustedkey  */
-    T_Ttl = 443,                   /* T_Ttl  */
-    T_Type = 444,                  /* T_Type  */
-    T_U_int = 445,                 /* T_U_int  */
-    T_UEcrypto = 446,              /* T_UEcrypto  */
-    T_UEcryptonak = 447,           /* T_UEcryptonak  */
-    T_UEdigest = 448,              /* T_UEdigest  */
-    T_Unconfig = 449,              /* T_Unconfig  */
-    T_Unpeer = 450,                /* T_Unpeer  */
-    T_Version = 451,               /* T_Version  */
-    T_WanderThreshold = 452,       /* T_WanderThreshold  */
-    T_Week = 453,                  /* T_Week  */
-    T_Wildcard = 454,              /* T_Wildcard  */
-    T_Xleave = 455,                /* T_Xleave  */
-    T_Xmtnonce = 456,              /* T_Xmtnonce  */
-    T_Year = 457,                  /* T_Year  */
-    T_Flag = 458,                  /* T_Flag  */
-    T_EOC = 459,                   /* T_EOC  */
-    T_Simulate = 460,              /* T_Simulate  */
-    T_Beep_Delay = 461,            /* T_Beep_Delay  */
-    T_Sim_Duration = 462,          /* T_Sim_Duration  */
-    T_Server_Offset = 463,         /* T_Server_Offset  */
-    T_Duration = 464,              /* T_Duration  */
-    T_Freq_Offset = 465,           /* T_Freq_Offset  */
-    T_Wander = 466,                /* T_Wander  */
-    T_Jitter = 467,                /* T_Jitter  */
-    T_Prop_Delay = 468,            /* T_Prop_Delay  */
-    T_Proc_Delay = 469             /* T_Proc_Delay  */
+    T_Delrestrict = 286,           /* T_Delrestrict  */
+    T_Device = 287,                /* T_Device  */
+    T_Digest = 288,                /* T_Digest  */
+    T_Disable = 289,               /* T_Disable  */
+    T_Discard = 290,               /* T_Discard  */
+    T_Dispersion = 291,            /* T_Dispersion  */
+    T_Double = 292,                /* T_Double  */
+    T_Driftfile = 293,             /* T_Driftfile  */
+    T_Drop = 294,                  /* T_Drop  */
+    T_Dscp = 295,                  /* T_Dscp  */
+    T_Ellipsis = 296,              /* T_Ellipsis  */
+    T_Enable = 297,                /* T_Enable  */
+    T_End = 298,                   /* T_End  */
+    T_Epeer = 299,                 /* T_Epeer  */
+    T_False = 300,                 /* T_False  */
+    T_File = 301,                  /* T_File  */
+    T_Filegen = 302,               /* T_Filegen  */
+    T_Filenum = 303,               /* T_Filenum  */
+    T_Flag1 = 304,                 /* T_Flag1  */
+    T_Flag2 = 305,                 /* T_Flag2  */
+    T_Flag3 = 306,                 /* T_Flag3  */
+    T_Flag4 = 307,                 /* T_Flag4  */
+    T_Flake = 308,                 /* T_Flake  */
+    T_Floor = 309,                 /* T_Floor  */
+    T_Freq = 310,                  /* T_Freq  */
+    T_Fudge = 311,                 /* T_Fudge  */
+    T_Fuzz = 312,                  /* T_Fuzz  */
+    T_Host = 313,                  /* T_Host  */
+    T_Huffpuff = 314,              /* T_Huffpuff  */
+    T_Iburst = 315,                /* T_Iburst  */
+    T_Ident = 316,                 /* T_Ident  */
+    T_Ignore = 317,                /* T_Ignore  */
+    T_Ignorehash = 318,            /* T_Ignorehash  */
+    T_Incalloc = 319,              /* T_Incalloc  */
+    T_Incmem = 320,                /* T_Incmem  */
+    T_Initalloc = 321,             /* T_Initalloc  */
+    T_Initmem = 322,               /* T_Initmem  */
+    T_Includefile = 323,           /* T_Includefile  */
+    T_Integer = 324,               /* T_Integer  */
+    T_Interface = 325,             /* T_Interface  */
+    T_Intrange = 326,              /* T_Intrange  */
+    T_Io = 327,                    /* T_Io  */
+    T_Ippeerlimit = 328,           /* T_Ippeerlimit  */
+    T_Ipv4 = 329,                  /* T_Ipv4  */
+    T_Ipv4_flag = 330,             /* T_Ipv4_flag  */
+    T_Ipv6 = 331,                  /* T_Ipv6  */
+    T_Ipv6_flag = 332,             /* T_Ipv6_flag  */
+    T_Kernel = 333,                /* T_Kernel  */
+    T_Key = 334,                   /* T_Key  */
+    T_Keys = 335,                  /* T_Keys  */
+    T_Keysdir = 336,               /* T_Keysdir  */
+    T_Kod = 337,                   /* T_Kod  */
+    T_Leapfile = 338,              /* T_Leapfile  */
+    T_Leapsmearinterval = 339,     /* T_Leapsmearinterval  */
+    T_Limited = 340,               /* T_Limited  */
+    T_Link = 341,                  /* T_Link  */
+    T_Listen = 342,                /* T_Listen  */
+    T_Logconfig = 343,             /* T_Logconfig  */
+    T_Logfile = 344,               /* T_Logfile  */
+    T_Loopstats = 345,             /* T_Loopstats  */
+    T_Lowpriotrap = 346,           /* T_Lowpriotrap  */
+    T_Manycastclient = 347,        /* T_Manycastclient  */
+    T_Manycastserver = 348,        /* T_Manycastserver  */
+    T_Mask = 349,                  /* T_Mask  */
+    T_Maxage = 350,                /* T_Maxage  */
+    T_Maxclock = 351,              /* T_Maxclock  */
+    T_Maxdepth = 352,              /* T_Maxdepth  */
+    T_Maxdist = 353,               /* T_Maxdist  */
+    T_Maxmem = 354,                /* T_Maxmem  */
+    T_Maxpoll = 355,               /* T_Maxpoll  */
+    T_Mdnstries = 356,             /* T_Mdnstries  */
+    T_Mem = 357,                   /* T_Mem  */
+    T_Memlock = 358,               /* T_Memlock  */
+    T_Minclock = 359,              /* T_Minclock  */
+    T_Mindepth = 360,              /* T_Mindepth  */
+    T_Mindist = 361,               /* T_Mindist  */
+    T_Minimum = 362,               /* T_Minimum  */
+    T_Minjitter = 363,             /* T_Minjitter  */
+    T_Minpoll = 364,               /* T_Minpoll  */
+    T_Minsane = 365,               /* T_Minsane  */
+    T_Mode = 366,                  /* T_Mode  */
+    T_Mode7 = 367,                 /* T_Mode7  */
+    T_Monitor = 368,               /* T_Monitor  */
+    T_Month = 369,                 /* T_Month  */
+    T_Mru = 370,                   /* T_Mru  */
+    T_Mssntp = 371,                /* T_Mssntp  */
+    T_Multicastclient = 372,       /* T_Multicastclient  */
+    T_Nic = 373,                   /* T_Nic  */
+    T_Nolink = 374,                /* T_Nolink  */
+    T_Nomodify = 375,              /* T_Nomodify  */
+    T_Nomrulist = 376,             /* T_Nomrulist  */
+    T_None = 377,                  /* T_None  */
+    T_Nonvolatile = 378,           /* T_Nonvolatile  */
+    T_Noepeer = 379,               /* T_Noepeer  */
+    T_Nopeer = 380,                /* T_Nopeer  */
+    T_Noquery = 381,               /* T_Noquery  */
+    T_Noselect = 382,              /* T_Noselect  */
+    T_Noserve = 383,               /* T_Noserve  */
+    T_Notrap = 384,                /* T_Notrap  */
+    T_Notrust = 385,               /* T_Notrust  */
+    T_Ntp = 386,                   /* T_Ntp  */
+    T_Ntpport = 387,               /* T_Ntpport  */
+    T_NtpSignDsocket = 388,        /* T_NtpSignDsocket  */
+    T_Orphan = 389,                /* T_Orphan  */
+    T_Orphanwait = 390,            /* T_Orphanwait  */
+    T_PCEdigest = 391,             /* T_PCEdigest  */
+    T_Panic = 392,                 /* T_Panic  */
+    T_Peer = 393,                  /* T_Peer  */
+    T_Peerstats = 394,             /* T_Peerstats  */
+    T_Phone = 395,                 /* T_Phone  */
+    T_Pid = 396,                   /* T_Pid  */
+    T_Pidfile = 397,               /* T_Pidfile  */
+    T_Poll = 398,                  /* T_Poll  */
+    T_PollSkewList = 399,          /* T_PollSkewList  */
+    T_Pool = 400,                  /* T_Pool  */
+    T_Port = 401,                  /* T_Port  */
+    T_PpsData = 402,               /* T_PpsData  */
+    T_Preempt = 403,               /* T_Preempt  */
+    T_Prefer = 404,                /* T_Prefer  */
+    T_Protostats = 405,            /* T_Protostats  */
+    T_Pw = 406,                    /* T_Pw  */
+    T_Randfile = 407,              /* T_Randfile  */
+    T_Rawstats = 408,              /* T_Rawstats  */
+    T_Refid = 409,                 /* T_Refid  */
+    T_Requestkey = 410,            /* T_Requestkey  */
+    T_Reset = 411,                 /* T_Reset  */
+    T_Restrict = 412,              /* T_Restrict  */
+    T_Revoke = 413,                /* T_Revoke  */
+    T_Rlimit = 414,                /* T_Rlimit  */
+    T_Saveconfigdir = 415,         /* T_Saveconfigdir  */
+    T_Server = 416,                /* T_Server  */
+    T_Serverresponse = 417,        /* T_Serverresponse  */
+    T_ServerresponseFuzz = 418,    /* T_ServerresponseFuzz  */
+    T_Setvar = 419,                /* T_Setvar  */
+    T_Source = 420,                /* T_Source  */
+    T_Stacksize = 421,             /* T_Stacksize  */
+    T_Statistics = 422,            /* T_Statistics  */
+    T_Stats = 423,                 /* T_Stats  */
+    T_Statsdir = 424,              /* T_Statsdir  */
+    T_Step = 425,                  /* T_Step  */
+    T_Stepback = 426,              /* T_Stepback  */
+    T_Stepfwd = 427,               /* T_Stepfwd  */
+    T_Stepout = 428,               /* T_Stepout  */
+    T_Stratum = 429,               /* T_Stratum  */
+    T_String = 430,                /* T_String  */
+    T_Sys = 431,                   /* T_Sys  */
+    T_Sysstats = 432,              /* T_Sysstats  */
+    T_Tick = 433,                  /* T_Tick  */
+    T_Time1 = 434,                 /* T_Time1  */
+    T_Time2 = 435,                 /* T_Time2  */
+    T_TimeData = 436,              /* T_TimeData  */
+    T_Timer = 437,                 /* T_Timer  */
+    T_Timingstats = 438,           /* T_Timingstats  */
+    T_Tinker = 439,                /* T_Tinker  */
+    T_Tos = 440,                   /* T_Tos  */
+    T_Trap = 441,                  /* T_Trap  */
+    T_True = 442,                  /* T_True  */
+    T_Trustedkey = 443,            /* T_Trustedkey  */
+    T_Ttl = 444,                   /* T_Ttl  */
+    T_Type = 445,                  /* T_Type  */
+    T_U_int = 446,                 /* T_U_int  */
+    T_UEcrypto = 447,              /* T_UEcrypto  */
+    T_UEcryptonak = 448,           /* T_UEcryptonak  */
+    T_UEdigest = 449,              /* T_UEdigest  */
+    T_Unconfig = 450,              /* T_Unconfig  */
+    T_Unpeer = 451,                /* T_Unpeer  */
+    T_Version = 452,               /* T_Version  */
+    T_WanderThreshold = 453,       /* T_WanderThreshold  */
+    T_Week = 454,                  /* T_Week  */
+    T_Wildcard = 455,              /* T_Wildcard  */
+    T_Xleave = 456,                /* T_Xleave  */
+    T_Xmtnonce = 457,              /* T_Xmtnonce  */
+    T_Year = 458,                  /* T_Year  */
+    T_Flag = 459,                  /* T_Flag  */
+    T_EOC = 460,                   /* T_EOC  */
+    T_Simulate = 461,              /* T_Simulate  */
+    T_Beep_Delay = 462,            /* T_Beep_Delay  */
+    T_Sim_Duration = 463,          /* T_Sim_Duration  */
+    T_Server_Offset = 464,         /* T_Server_Offset  */
+    T_Duration = 465,              /* T_Duration  */
+    T_Freq_Offset = 466,           /* T_Freq_Offset  */
+    T_Wander = 467,                /* T_Wander  */
+    T_Jitter = 468,                /* T_Jitter  */
+    T_Prop_Delay = 469,            /* T_Prop_Delay  */
+    T_Proc_Delay = 470             /* T_Proc_Delay  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -394,190 +395,191 @@ extern int yydebug;
 #define T_Ctl 283
 #define T_Day 284
 #define T_Default 285
-#define T_Device 286
-#define T_Digest 287
-#define T_Disable 288
-#define T_Discard 289
-#define T_Dispersion 290
-#define T_Double 291
-#define T_Driftfile 292
-#define T_Drop 293
-#define T_Dscp 294
-#define T_Ellipsis 295
-#define T_Enable 296
-#define T_End 297
-#define T_Epeer 298
-#define T_False 299
-#define T_File 300
-#define T_Filegen 301
-#define T_Filenum 302
-#define T_Flag1 303
-#define T_Flag2 304
-#define T_Flag3 305
-#define T_Flag4 306
-#define T_Flake 307
-#define T_Floor 308
-#define T_Freq 309
-#define T_Fudge 310
-#define T_Fuzz 311
-#define T_Host 312
-#define T_Huffpuff 313
-#define T_Iburst 314
-#define T_Ident 315
-#define T_Ignore 316
-#define T_Ignorehash 317
-#define T_Incalloc 318
-#define T_Incmem 319
-#define T_Initalloc 320
-#define T_Initmem 321
-#define T_Includefile 322
-#define T_Integer 323
-#define T_Interface 324
-#define T_Intrange 325
-#define T_Io 326
-#define T_Ippeerlimit 327
-#define T_Ipv4 328
-#define T_Ipv4_flag 329
-#define T_Ipv6 330
-#define T_Ipv6_flag 331
-#define T_Kernel 332
-#define T_Key 333
-#define T_Keys 334
-#define T_Keysdir 335
-#define T_Kod 336
-#define T_Leapfile 337
-#define T_Leapsmearinterval 338
-#define T_Limited 339
-#define T_Link 340
-#define T_Listen 341
-#define T_Logconfig 342
-#define T_Logfile 343
-#define T_Loopstats 344
-#define T_Lowpriotrap 345
-#define T_Manycastclient 346
-#define T_Manycastserver 347
-#define T_Mask 348
-#define T_Maxage 349
-#define T_Maxclock 350
-#define T_Maxdepth 351
-#define T_Maxdist 352
-#define T_Maxmem 353
-#define T_Maxpoll 354
-#define T_Mdnstries 355
-#define T_Mem 356
-#define T_Memlock 357
-#define T_Minclock 358
-#define T_Mindepth 359
-#define T_Mindist 360
-#define T_Minimum 361
-#define T_Minjitter 362
-#define T_Minpoll 363
-#define T_Minsane 364
-#define T_Mode 365
-#define T_Mode7 366
-#define T_Monitor 367
-#define T_Month 368
-#define T_Mru 369
-#define T_Mssntp 370
-#define T_Multicastclient 371
-#define T_Nic 372
-#define T_Nolink 373
-#define T_Nomodify 374
-#define T_Nomrulist 375
-#define T_None 376
-#define T_Nonvolatile 377
-#define T_Noepeer 378
-#define T_Nopeer 379
-#define T_Noquery 380
-#define T_Noselect 381
-#define T_Noserve 382
-#define T_Notrap 383
-#define T_Notrust 384
-#define T_Ntp 385
-#define T_Ntpport 386
-#define T_NtpSignDsocket 387
-#define T_Orphan 388
-#define T_Orphanwait 389
-#define T_PCEdigest 390
-#define T_Panic 391
-#define T_Peer 392
-#define T_Peerstats 393
-#define T_Phone 394
-#define T_Pid 395
-#define T_Pidfile 396
-#define T_Poll 397
-#define T_PollSkewList 398
-#define T_Pool 399
-#define T_Port 400
-#define T_PpsData 401
-#define T_Preempt 402
-#define T_Prefer 403
-#define T_Protostats 404
-#define T_Pw 405
-#define T_Randfile 406
-#define T_Rawstats 407
-#define T_Refid 408
-#define T_Requestkey 409
-#define T_Reset 410
-#define T_Restrict 411
-#define T_Revoke 412
-#define T_Rlimit 413
-#define T_Saveconfigdir 414
-#define T_Server 415
-#define T_Serverresponse 416
-#define T_ServerresponseFuzz 417
-#define T_Setvar 418
-#define T_Source 419
-#define T_Stacksize 420
-#define T_Statistics 421
-#define T_Stats 422
-#define T_Statsdir 423
-#define T_Step 424
-#define T_Stepback 425
-#define T_Stepfwd 426
-#define T_Stepout 427
-#define T_Stratum 428
-#define T_String 429
-#define T_Sys 430
-#define T_Sysstats 431
-#define T_Tick 432
-#define T_Time1 433
-#define T_Time2 434
-#define T_TimeData 435
-#define T_Timer 436
-#define T_Timingstats 437
-#define T_Tinker 438
-#define T_Tos 439
-#define T_Trap 440
-#define T_True 441
-#define T_Trustedkey 442
-#define T_Ttl 443
-#define T_Type 444
-#define T_U_int 445
-#define T_UEcrypto 446
-#define T_UEcryptonak 447
-#define T_UEdigest 448
-#define T_Unconfig 449
-#define T_Unpeer 450
-#define T_Version 451
-#define T_WanderThreshold 452
-#define T_Week 453
-#define T_Wildcard 454
-#define T_Xleave 455
-#define T_Xmtnonce 456
-#define T_Year 457
-#define T_Flag 458
-#define T_EOC 459
-#define T_Simulate 460
-#define T_Beep_Delay 461
-#define T_Sim_Duration 462
-#define T_Server_Offset 463
-#define T_Duration 464
-#define T_Freq_Offset 465
-#define T_Wander 466
-#define T_Jitter 467
-#define T_Prop_Delay 468
-#define T_Proc_Delay 469
+#define T_Delrestrict 286
+#define T_Device 287
+#define T_Digest 288
+#define T_Disable 289
+#define T_Discard 290
+#define T_Dispersion 291
+#define T_Double 292
+#define T_Driftfile 293
+#define T_Drop 294
+#define T_Dscp 295
+#define T_Ellipsis 296
+#define T_Enable 297
+#define T_End 298
+#define T_Epeer 299
+#define T_False 300
+#define T_File 301
+#define T_Filegen 302
+#define T_Filenum 303
+#define T_Flag1 304
+#define T_Flag2 305
+#define T_Flag3 306
+#define T_Flag4 307
+#define T_Flake 308
+#define T_Floor 309
+#define T_Freq 310
+#define T_Fudge 311
+#define T_Fuzz 312
+#define T_Host 313
+#define T_Huffpuff 314
+#define T_Iburst 315
+#define T_Ident 316
+#define T_Ignore 317
+#define T_Ignorehash 318
+#define T_Incalloc 319
+#define T_Incmem 320
+#define T_Initalloc 321
+#define T_Initmem 322
+#define T_Includefile 323
+#define T_Integer 324
+#define T_Interface 325
+#define T_Intrange 326
+#define T_Io 327
+#define T_Ippeerlimit 328
+#define T_Ipv4 329
+#define T_Ipv4_flag 330
+#define T_Ipv6 331
+#define T_Ipv6_flag 332
+#define T_Kernel 333
+#define T_Key 334
+#define T_Keys 335
+#define T_Keysdir 336
+#define T_Kod 337
+#define T_Leapfile 338
+#define T_Leapsmearinterval 339
+#define T_Limited 340
+#define T_Link 341
+#define T_Listen 342
+#define T_Logconfig 343
+#define T_Logfile 344
+#define T_Loopstats 345
+#define T_Lowpriotrap 346
+#define T_Manycastclient 347
+#define T_Manycastserver 348
+#define T_Mask 349
+#define T_Maxage 350
+#define T_Maxclock 351
+#define T_Maxdepth 352
+#define T_Maxdist 353
+#define T_Maxmem 354
+#define T_Maxpoll 355
+#define T_Mdnstries 356
+#define T_Mem 357
+#define T_Memlock 358
+#define T_Minclock 359
+#define T_Mindepth 360
+#define T_Mindist 361
+#define T_Minimum 362
+#define T_Minjitter 363
+#define T_Minpoll 364
+#define T_Minsane 365
+#define T_Mode 366
+#define T_Mode7 367
+#define T_Monitor 368
+#define T_Month 369
+#define T_Mru 370
+#define T_Mssntp 371
+#define T_Multicastclient 372
+#define T_Nic 373
+#define T_Nolink 374
+#define T_Nomodify 375
+#define T_Nomrulist 376
+#define T_None 377
+#define T_Nonvolatile 378
+#define T_Noepeer 379
+#define T_Nopeer 380
+#define T_Noquery 381
+#define T_Noselect 382
+#define T_Noserve 383
+#define T_Notrap 384
+#define T_Notrust 385
+#define T_Ntp 386
+#define T_Ntpport 387
+#define T_NtpSignDsocket 388
+#define T_Orphan 389
+#define T_Orphanwait 390
+#define T_PCEdigest 391
+#define T_Panic 392
+#define T_Peer 393
+#define T_Peerstats 394
+#define T_Phone 395
+#define T_Pid 396
+#define T_Pidfile 397
+#define T_Poll 398
+#define T_PollSkewList 399
+#define T_Pool 400
+#define T_Port 401
+#define T_PpsData 402
+#define T_Preempt 403
+#define T_Prefer 404
+#define T_Protostats 405
+#define T_Pw 406
+#define T_Randfile 407
+#define T_Rawstats 408
+#define T_Refid 409
+#define T_Requestkey 410
+#define T_Reset 411
+#define T_Restrict 412
+#define T_Revoke 413
+#define T_Rlimit 414
+#define T_Saveconfigdir 415
+#define T_Server 416
+#define T_Serverresponse 417
+#define T_ServerresponseFuzz 418
+#define T_Setvar 419
+#define T_Source 420
+#define T_Stacksize 421
+#define T_Statistics 422
+#define T_Stats 423
+#define T_Statsdir 424
+#define T_Step 425
+#define T_Stepback 426
+#define T_Stepfwd 427
+#define T_Stepout 428
+#define T_Stratum 429
+#define T_String 430
+#define T_Sys 431
+#define T_Sysstats 432
+#define T_Tick 433
+#define T_Time1 434
+#define T_Time2 435
+#define T_TimeData 436
+#define T_Timer 437
+#define T_Timingstats 438
+#define T_Tinker 439
+#define T_Tos 440
+#define T_Trap 441
+#define T_True 442
+#define T_Trustedkey 443
+#define T_Ttl 444
+#define T_Type 445
+#define T_U_int 446
+#define T_UEcrypto 447
+#define T_UEcryptonak 448
+#define T_UEdigest 449
+#define T_Unconfig 450
+#define T_Unpeer 451
+#define T_Version 452
+#define T_WanderThreshold 453
+#define T_Week 454
+#define T_Wildcard 455
+#define T_Xleave 456
+#define T_Xmtnonce 457
+#define T_Year 458
+#define T_Flag 459
+#define T_EOC 460
+#define T_Simulate 461
+#define T_Beep_Delay 462
+#define T_Sim_Duration 463
+#define T_Server_Offset 464
+#define T_Duration 465
+#define T_Freq_Offset 466
+#define T_Wander 467
+#define T_Jitter 468
+#define T_Prop_Delay 469
+#define T_Proc_Delay 470
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -602,7 +604,7 @@ union YYSTYPE
        script_info *           Sim_script;
        script_info_fifo *      Sim_script_fifo;
 
-#line 606 "ntp_parser.c"
+#line 608 "ntp_parser.c"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -653,311 +655,313 @@ enum yysymbol_kind_t
   YYSYMBOL_T_Ctl = 28,                     /* T_Ctl  */
   YYSYMBOL_T_Day = 29,                     /* T_Day  */
   YYSYMBOL_T_Default = 30,                 /* T_Default  */
-  YYSYMBOL_T_Device = 31,                  /* T_Device  */
-  YYSYMBOL_T_Digest = 32,                  /* T_Digest  */
-  YYSYMBOL_T_Disable = 33,                 /* T_Disable  */
-  YYSYMBOL_T_Discard = 34,                 /* T_Discard  */
-  YYSYMBOL_T_Dispersion = 35,              /* T_Dispersion  */
-  YYSYMBOL_T_Double = 36,                  /* T_Double  */
-  YYSYMBOL_T_Driftfile = 37,               /* T_Driftfile  */
-  YYSYMBOL_T_Drop = 38,                    /* T_Drop  */
-  YYSYMBOL_T_Dscp = 39,                    /* T_Dscp  */
-  YYSYMBOL_T_Ellipsis = 40,                /* T_Ellipsis  */
-  YYSYMBOL_T_Enable = 41,                  /* T_Enable  */
-  YYSYMBOL_T_End = 42,                     /* T_End  */
-  YYSYMBOL_T_Epeer = 43,                   /* T_Epeer  */
-  YYSYMBOL_T_False = 44,                   /* T_False  */
-  YYSYMBOL_T_File = 45,                    /* T_File  */
-  YYSYMBOL_T_Filegen = 46,                 /* T_Filegen  */
-  YYSYMBOL_T_Filenum = 47,                 /* T_Filenum  */
-  YYSYMBOL_T_Flag1 = 48,                   /* T_Flag1  */
-  YYSYMBOL_T_Flag2 = 49,                   /* T_Flag2  */
-  YYSYMBOL_T_Flag3 = 50,                   /* T_Flag3  */
-  YYSYMBOL_T_Flag4 = 51,                   /* T_Flag4  */
-  YYSYMBOL_T_Flake = 52,                   /* T_Flake  */
-  YYSYMBOL_T_Floor = 53,                   /* T_Floor  */
-  YYSYMBOL_T_Freq = 54,                    /* T_Freq  */
-  YYSYMBOL_T_Fudge = 55,                   /* T_Fudge  */
-  YYSYMBOL_T_Fuzz = 56,                    /* T_Fuzz  */
-  YYSYMBOL_T_Host = 57,                    /* T_Host  */
-  YYSYMBOL_T_Huffpuff = 58,                /* T_Huffpuff  */
-  YYSYMBOL_T_Iburst = 59,                  /* T_Iburst  */
-  YYSYMBOL_T_Ident = 60,                   /* T_Ident  */
-  YYSYMBOL_T_Ignore = 61,                  /* T_Ignore  */
-  YYSYMBOL_T_Ignorehash = 62,              /* T_Ignorehash  */
-  YYSYMBOL_T_Incalloc = 63,                /* T_Incalloc  */
-  YYSYMBOL_T_Incmem = 64,                  /* T_Incmem  */
-  YYSYMBOL_T_Initalloc = 65,               /* T_Initalloc  */
-  YYSYMBOL_T_Initmem = 66,                 /* T_Initmem  */
-  YYSYMBOL_T_Includefile = 67,             /* T_Includefile  */
-  YYSYMBOL_T_Integer = 68,                 /* T_Integer  */
-  YYSYMBOL_T_Interface = 69,               /* T_Interface  */
-  YYSYMBOL_T_Intrange = 70,                /* T_Intrange  */
-  YYSYMBOL_T_Io = 71,                      /* T_Io  */
-  YYSYMBOL_T_Ippeerlimit = 72,             /* T_Ippeerlimit  */
-  YYSYMBOL_T_Ipv4 = 73,                    /* T_Ipv4  */
-  YYSYMBOL_T_Ipv4_flag = 74,               /* T_Ipv4_flag  */
-  YYSYMBOL_T_Ipv6 = 75,                    /* T_Ipv6  */
-  YYSYMBOL_T_Ipv6_flag = 76,               /* T_Ipv6_flag  */
-  YYSYMBOL_T_Kernel = 77,                  /* T_Kernel  */
-  YYSYMBOL_T_Key = 78,                     /* T_Key  */
-  YYSYMBOL_T_Keys = 79,                    /* T_Keys  */
-  YYSYMBOL_T_Keysdir = 80,                 /* T_Keysdir  */
-  YYSYMBOL_T_Kod = 81,                     /* T_Kod  */
-  YYSYMBOL_T_Leapfile = 82,                /* T_Leapfile  */
-  YYSYMBOL_T_Leapsmearinterval = 83,       /* T_Leapsmearinterval  */
-  YYSYMBOL_T_Limited = 84,                 /* T_Limited  */
-  YYSYMBOL_T_Link = 85,                    /* T_Link  */
-  YYSYMBOL_T_Listen = 86,                  /* T_Listen  */
-  YYSYMBOL_T_Logconfig = 87,               /* T_Logconfig  */
-  YYSYMBOL_T_Logfile = 88,                 /* T_Logfile  */
-  YYSYMBOL_T_Loopstats = 89,               /* T_Loopstats  */
-  YYSYMBOL_T_Lowpriotrap = 90,             /* T_Lowpriotrap  */
-  YYSYMBOL_T_Manycastclient = 91,          /* T_Manycastclient  */
-  YYSYMBOL_T_Manycastserver = 92,          /* T_Manycastserver  */
-  YYSYMBOL_T_Mask = 93,                    /* T_Mask  */
-  YYSYMBOL_T_Maxage = 94,                  /* T_Maxage  */
-  YYSYMBOL_T_Maxclock = 95,                /* T_Maxclock  */
-  YYSYMBOL_T_Maxdepth = 96,                /* T_Maxdepth  */
-  YYSYMBOL_T_Maxdist = 97,                 /* T_Maxdist  */
-  YYSYMBOL_T_Maxmem = 98,                  /* T_Maxmem  */
-  YYSYMBOL_T_Maxpoll = 99,                 /* T_Maxpoll  */
-  YYSYMBOL_T_Mdnstries = 100,              /* T_Mdnstries  */
-  YYSYMBOL_T_Mem = 101,                    /* T_Mem  */
-  YYSYMBOL_T_Memlock = 102,                /* T_Memlock  */
-  YYSYMBOL_T_Minclock = 103,               /* T_Minclock  */
-  YYSYMBOL_T_Mindepth = 104,               /* T_Mindepth  */
-  YYSYMBOL_T_Mindist = 105,                /* T_Mindist  */
-  YYSYMBOL_T_Minimum = 106,                /* T_Minimum  */
-  YYSYMBOL_T_Minjitter = 107,              /* T_Minjitter  */
-  YYSYMBOL_T_Minpoll = 108,                /* T_Minpoll  */
-  YYSYMBOL_T_Minsane = 109,                /* T_Minsane  */
-  YYSYMBOL_T_Mode = 110,                   /* T_Mode  */
-  YYSYMBOL_T_Mode7 = 111,                  /* T_Mode7  */
-  YYSYMBOL_T_Monitor = 112,                /* T_Monitor  */
-  YYSYMBOL_T_Month = 113,                  /* T_Month  */
-  YYSYMBOL_T_Mru = 114,                    /* T_Mru  */
-  YYSYMBOL_T_Mssntp = 115,                 /* T_Mssntp  */
-  YYSYMBOL_T_Multicastclient = 116,        /* T_Multicastclient  */
-  YYSYMBOL_T_Nic = 117,                    /* T_Nic  */
-  YYSYMBOL_T_Nolink = 118,                 /* T_Nolink  */
-  YYSYMBOL_T_Nomodify = 119,               /* T_Nomodify  */
-  YYSYMBOL_T_Nomrulist = 120,              /* T_Nomrulist  */
-  YYSYMBOL_T_None = 121,                   /* T_None  */
-  YYSYMBOL_T_Nonvolatile = 122,            /* T_Nonvolatile  */
-  YYSYMBOL_T_Noepeer = 123,                /* T_Noepeer  */
-  YYSYMBOL_T_Nopeer = 124,                 /* T_Nopeer  */
-  YYSYMBOL_T_Noquery = 125,                /* T_Noquery  */
-  YYSYMBOL_T_Noselect = 126,               /* T_Noselect  */
-  YYSYMBOL_T_Noserve = 127,                /* T_Noserve  */
-  YYSYMBOL_T_Notrap = 128,                 /* T_Notrap  */
-  YYSYMBOL_T_Notrust = 129,                /* T_Notrust  */
-  YYSYMBOL_T_Ntp = 130,                    /* T_Ntp  */
-  YYSYMBOL_T_Ntpport = 131,                /* T_Ntpport  */
-  YYSYMBOL_T_NtpSignDsocket = 132,         /* T_NtpSignDsocket  */
-  YYSYMBOL_T_Orphan = 133,                 /* T_Orphan  */
-  YYSYMBOL_T_Orphanwait = 134,             /* T_Orphanwait  */
-  YYSYMBOL_T_PCEdigest = 135,              /* T_PCEdigest  */
-  YYSYMBOL_T_Panic = 136,                  /* T_Panic  */
-  YYSYMBOL_T_Peer = 137,                   /* T_Peer  */
-  YYSYMBOL_T_Peerstats = 138,              /* T_Peerstats  */
-  YYSYMBOL_T_Phone = 139,                  /* T_Phone  */
-  YYSYMBOL_T_Pid = 140,                    /* T_Pid  */
-  YYSYMBOL_T_Pidfile = 141,                /* T_Pidfile  */
-  YYSYMBOL_T_Poll = 142,                   /* T_Poll  */
-  YYSYMBOL_T_PollSkewList = 143,           /* T_PollSkewList  */
-  YYSYMBOL_T_Pool = 144,                   /* T_Pool  */
-  YYSYMBOL_T_Port = 145,                   /* T_Port  */
-  YYSYMBOL_T_PpsData = 146,                /* T_PpsData  */
-  YYSYMBOL_T_Preempt = 147,                /* T_Preempt  */
-  YYSYMBOL_T_Prefer = 148,                 /* T_Prefer  */
-  YYSYMBOL_T_Protostats = 149,             /* T_Protostats  */
-  YYSYMBOL_T_Pw = 150,                     /* T_Pw  */
-  YYSYMBOL_T_Randfile = 151,               /* T_Randfile  */
-  YYSYMBOL_T_Rawstats = 152,               /* T_Rawstats  */
-  YYSYMBOL_T_Refid = 153,                  /* T_Refid  */
-  YYSYMBOL_T_Requestkey = 154,             /* T_Requestkey  */
-  YYSYMBOL_T_Reset = 155,                  /* T_Reset  */
-  YYSYMBOL_T_Restrict = 156,               /* T_Restrict  */
-  YYSYMBOL_T_Revoke = 157,                 /* T_Revoke  */
-  YYSYMBOL_T_Rlimit = 158,                 /* T_Rlimit  */
-  YYSYMBOL_T_Saveconfigdir = 159,          /* T_Saveconfigdir  */
-  YYSYMBOL_T_Server = 160,                 /* T_Server  */
-  YYSYMBOL_T_Serverresponse = 161,         /* T_Serverresponse  */
-  YYSYMBOL_T_ServerresponseFuzz = 162,     /* T_ServerresponseFuzz  */
-  YYSYMBOL_T_Setvar = 163,                 /* T_Setvar  */
-  YYSYMBOL_T_Source = 164,                 /* T_Source  */
-  YYSYMBOL_T_Stacksize = 165,              /* T_Stacksize  */
-  YYSYMBOL_T_Statistics = 166,             /* T_Statistics  */
-  YYSYMBOL_T_Stats = 167,                  /* T_Stats  */
-  YYSYMBOL_T_Statsdir = 168,               /* T_Statsdir  */
-  YYSYMBOL_T_Step = 169,                   /* T_Step  */
-  YYSYMBOL_T_Stepback = 170,               /* T_Stepback  */
-  YYSYMBOL_T_Stepfwd = 171,                /* T_Stepfwd  */
-  YYSYMBOL_T_Stepout = 172,                /* T_Stepout  */
-  YYSYMBOL_T_Stratum = 173,                /* T_Stratum  */
-  YYSYMBOL_T_String = 174,                 /* T_String  */
-  YYSYMBOL_T_Sys = 175,                    /* T_Sys  */
-  YYSYMBOL_T_Sysstats = 176,               /* T_Sysstats  */
-  YYSYMBOL_T_Tick = 177,                   /* T_Tick  */
-  YYSYMBOL_T_Time1 = 178,                  /* T_Time1  */
-  YYSYMBOL_T_Time2 = 179,                  /* T_Time2  */
-  YYSYMBOL_T_TimeData = 180,               /* T_TimeData  */
-  YYSYMBOL_T_Timer = 181,                  /* T_Timer  */
-  YYSYMBOL_T_Timingstats = 182,            /* T_Timingstats  */
-  YYSYMBOL_T_Tinker = 183,                 /* T_Tinker  */
-  YYSYMBOL_T_Tos = 184,                    /* T_Tos  */
-  YYSYMBOL_T_Trap = 185,                   /* T_Trap  */
-  YYSYMBOL_T_True = 186,                   /* T_True  */
-  YYSYMBOL_T_Trustedkey = 187,             /* T_Trustedkey  */
-  YYSYMBOL_T_Ttl = 188,                    /* T_Ttl  */
-  YYSYMBOL_T_Type = 189,                   /* T_Type  */
-  YYSYMBOL_T_U_int = 190,                  /* T_U_int  */
-  YYSYMBOL_T_UEcrypto = 191,               /* T_UEcrypto  */
-  YYSYMBOL_T_UEcryptonak = 192,            /* T_UEcryptonak  */
-  YYSYMBOL_T_UEdigest = 193,               /* T_UEdigest  */
-  YYSYMBOL_T_Unconfig = 194,               /* T_Unconfig  */
-  YYSYMBOL_T_Unpeer = 195,                 /* T_Unpeer  */
-  YYSYMBOL_T_Version = 196,                /* T_Version  */
-  YYSYMBOL_T_WanderThreshold = 197,        /* T_WanderThreshold  */
-  YYSYMBOL_T_Week = 198,                   /* T_Week  */
-  YYSYMBOL_T_Wildcard = 199,               /* T_Wildcard  */
-  YYSYMBOL_T_Xleave = 200,                 /* T_Xleave  */
-  YYSYMBOL_T_Xmtnonce = 201,               /* T_Xmtnonce  */
-  YYSYMBOL_T_Year = 202,                   /* T_Year  */
-  YYSYMBOL_T_Flag = 203,                   /* T_Flag  */
-  YYSYMBOL_T_EOC = 204,                    /* T_EOC  */
-  YYSYMBOL_T_Simulate = 205,               /* T_Simulate  */
-  YYSYMBOL_T_Beep_Delay = 206,             /* T_Beep_Delay  */
-  YYSYMBOL_T_Sim_Duration = 207,           /* T_Sim_Duration  */
-  YYSYMBOL_T_Server_Offset = 208,          /* T_Server_Offset  */
-  YYSYMBOL_T_Duration = 209,               /* T_Duration  */
-  YYSYMBOL_T_Freq_Offset = 210,            /* T_Freq_Offset  */
-  YYSYMBOL_T_Wander = 211,                 /* T_Wander  */
-  YYSYMBOL_T_Jitter = 212,                 /* T_Jitter  */
-  YYSYMBOL_T_Prop_Delay = 213,             /* T_Prop_Delay  */
-  YYSYMBOL_T_Proc_Delay = 214,             /* T_Proc_Delay  */
-  YYSYMBOL_215_ = 215,                     /* '|'  */
-  YYSYMBOL_216_ = 216,                     /* '='  */
-  YYSYMBOL_217_ = 217,                     /* '('  */
-  YYSYMBOL_218_ = 218,                     /* ')'  */
-  YYSYMBOL_219_ = 219,                     /* '{'  */
-  YYSYMBOL_220_ = 220,                     /* '}'  */
-  YYSYMBOL_YYACCEPT = 221,                 /* $accept  */
-  YYSYMBOL_configuration = 222,            /* configuration  */
-  YYSYMBOL_command_list = 223,             /* command_list  */
-  YYSYMBOL_command = 224,                  /* command  */
-  YYSYMBOL_server_command = 225,           /* server_command  */
-  YYSYMBOL_client_type = 226,              /* client_type  */
-  YYSYMBOL_address = 227,                  /* address  */
-  YYSYMBOL_ip_address = 228,               /* ip_address  */
-  YYSYMBOL_address_fam = 229,              /* address_fam  */
-  YYSYMBOL_option_list = 230,              /* option_list  */
-  YYSYMBOL_option = 231,                   /* option  */
-  YYSYMBOL_option_flag = 232,              /* option_flag  */
-  YYSYMBOL_option_flag_keyword = 233,      /* option_flag_keyword  */
-  YYSYMBOL_option_int = 234,               /* option_int  */
-  YYSYMBOL_option_int_keyword = 235,       /* option_int_keyword  */
-  YYSYMBOL_option_str = 236,               /* option_str  */
-  YYSYMBOL_option_str_keyword = 237,       /* option_str_keyword  */
-  YYSYMBOL_unpeer_command = 238,           /* unpeer_command  */
-  YYSYMBOL_unpeer_keyword = 239,           /* unpeer_keyword  */
-  YYSYMBOL_other_mode_command = 240,       /* other_mode_command  */
-  YYSYMBOL_authentication_command = 241,   /* authentication_command  */
-  YYSYMBOL_crypto_command_list = 242,      /* crypto_command_list  */
-  YYSYMBOL_crypto_command = 243,           /* crypto_command  */
-  YYSYMBOL_crypto_str_keyword = 244,       /* crypto_str_keyword  */
-  YYSYMBOL_orphan_mode_command = 245,      /* orphan_mode_command  */
-  YYSYMBOL_tos_option_list = 246,          /* tos_option_list  */
-  YYSYMBOL_tos_option = 247,               /* tos_option  */
-  YYSYMBOL_tos_option_int_keyword = 248,   /* tos_option_int_keyword  */
-  YYSYMBOL_tos_option_dbl_keyword = 249,   /* tos_option_dbl_keyword  */
-  YYSYMBOL_monitoring_command = 250,       /* monitoring_command  */
-  YYSYMBOL_stats_list = 251,               /* stats_list  */
-  YYSYMBOL_stat = 252,                     /* stat  */
-  YYSYMBOL_filegen_option_list = 253,      /* filegen_option_list  */
-  YYSYMBOL_filegen_option = 254,           /* filegen_option  */
-  YYSYMBOL_link_nolink = 255,              /* link_nolink  */
-  YYSYMBOL_enable_disable = 256,           /* enable_disable  */
-  YYSYMBOL_filegen_type = 257,             /* filegen_type  */
-  YYSYMBOL_access_control_command = 258,   /* access_control_command  */
-  YYSYMBOL_res_ippeerlimit = 259,          /* res_ippeerlimit  */
-  YYSYMBOL_ac_flag_list = 260,             /* ac_flag_list  */
-  YYSYMBOL_access_control_flag = 261,      /* access_control_flag  */
-  YYSYMBOL_discard_option_list = 262,      /* discard_option_list  */
-  YYSYMBOL_discard_option = 263,           /* discard_option  */
-  YYSYMBOL_discard_option_keyword = 264,   /* discard_option_keyword  */
-  YYSYMBOL_mru_option_list = 265,          /* mru_option_list  */
-  YYSYMBOL_mru_option = 266,               /* mru_option  */
-  YYSYMBOL_mru_option_keyword = 267,       /* mru_option_keyword  */
-  YYSYMBOL_fudge_command = 268,            /* fudge_command  */
-  YYSYMBOL_fudge_factor_list = 269,        /* fudge_factor_list  */
-  YYSYMBOL_fudge_factor = 270,             /* fudge_factor  */
-  YYSYMBOL_fudge_factor_dbl_keyword = 271, /* fudge_factor_dbl_keyword  */
-  YYSYMBOL_fudge_factor_bool_keyword = 272, /* fudge_factor_bool_keyword  */
-  YYSYMBOL_device_command = 273,           /* device_command  */
-  YYSYMBOL_device_item_list = 274,         /* device_item_list  */
-  YYSYMBOL_device_item = 275,              /* device_item  */
-  YYSYMBOL_device_item_path_keyword = 276, /* device_item_path_keyword  */
-  YYSYMBOL_rlimit_command = 277,           /* rlimit_command  */
-  YYSYMBOL_rlimit_option_list = 278,       /* rlimit_option_list  */
-  YYSYMBOL_rlimit_option = 279,            /* rlimit_option  */
-  YYSYMBOL_rlimit_option_keyword = 280,    /* rlimit_option_keyword  */
-  YYSYMBOL_system_option_command = 281,    /* system_option_command  */
-  YYSYMBOL_system_option_list = 282,       /* system_option_list  */
-  YYSYMBOL_system_option = 283,            /* system_option  */
-  YYSYMBOL_system_option_flag_keyword = 284, /* system_option_flag_keyword  */
-  YYSYMBOL_system_option_local_flag_keyword = 285, /* system_option_local_flag_keyword  */
-  YYSYMBOL_tinker_command = 286,           /* tinker_command  */
-  YYSYMBOL_tinker_option_list = 287,       /* tinker_option_list  */
-  YYSYMBOL_tinker_option = 288,            /* tinker_option  */
-  YYSYMBOL_tinker_option_keyword = 289,    /* tinker_option_keyword  */
-  YYSYMBOL_miscellaneous_command = 290,    /* miscellaneous_command  */
-  YYSYMBOL_misc_cmd_dbl_keyword = 291,     /* misc_cmd_dbl_keyword  */
-  YYSYMBOL_misc_cmd_int_keyword = 292,     /* misc_cmd_int_keyword  */
-  YYSYMBOL_opt_hash_check = 293,           /* opt_hash_check  */
-  YYSYMBOL_misc_cmd_str_keyword = 294,     /* misc_cmd_str_keyword  */
-  YYSYMBOL_misc_cmd_str_lcl_keyword = 295, /* misc_cmd_str_lcl_keyword  */
-  YYSYMBOL_drift_parm = 296,               /* drift_parm  */
-  YYSYMBOL_pollskew_list = 297,            /* pollskew_list  */
-  YYSYMBOL_pollskew_spec = 298,            /* pollskew_spec  */
-  YYSYMBOL_pollskew_cycle = 299,           /* pollskew_cycle  */
-  YYSYMBOL_variable_assign = 300,          /* variable_assign  */
-  YYSYMBOL_t_default_or_zero = 301,        /* t_default_or_zero  */
-  YYSYMBOL_trap_option_list = 302,         /* trap_option_list  */
-  YYSYMBOL_trap_option = 303,              /* trap_option  */
-  YYSYMBOL_log_config_list = 304,          /* log_config_list  */
-  YYSYMBOL_log_config_command = 305,       /* log_config_command  */
-  YYSYMBOL_interface_command = 306,        /* interface_command  */
-  YYSYMBOL_interface_nic = 307,            /* interface_nic  */
-  YYSYMBOL_nic_rule_class = 308,           /* nic_rule_class  */
-  YYSYMBOL_nic_rule_action = 309,          /* nic_rule_action  */
-  YYSYMBOL_reset_command = 310,            /* reset_command  */
-  YYSYMBOL_counter_set_list = 311,         /* counter_set_list  */
-  YYSYMBOL_counter_set_keyword = 312,      /* counter_set_keyword  */
-  YYSYMBOL_integer_list = 313,             /* integer_list  */
-  YYSYMBOL_integer_list_range = 314,       /* integer_list_range  */
-  YYSYMBOL_integer_list_range_elt = 315,   /* integer_list_range_elt  */
-  YYSYMBOL_integer_range = 316,            /* integer_range  */
-  YYSYMBOL_string_list = 317,              /* string_list  */
-  YYSYMBOL_address_list = 318,             /* address_list  */
-  YYSYMBOL_boolean = 319,                  /* boolean  */
-  YYSYMBOL_number = 320,                   /* number  */
-  YYSYMBOL_basedate = 321,                 /* basedate  */
-  YYSYMBOL_simulate_command = 322,         /* simulate_command  */
-  YYSYMBOL_sim_conf_start = 323,           /* sim_conf_start  */
-  YYSYMBOL_sim_init_statement_list = 324,  /* sim_init_statement_list  */
-  YYSYMBOL_sim_init_statement = 325,       /* sim_init_statement  */
-  YYSYMBOL_sim_init_keyword = 326,         /* sim_init_keyword  */
-  YYSYMBOL_sim_server_list = 327,          /* sim_server_list  */
-  YYSYMBOL_sim_server = 328,               /* sim_server  */
-  YYSYMBOL_sim_server_offset = 329,        /* sim_server_offset  */
-  YYSYMBOL_sim_server_name = 330,          /* sim_server_name  */
-  YYSYMBOL_sim_act_list = 331,             /* sim_act_list  */
-  YYSYMBOL_sim_act = 332,                  /* sim_act  */
-  YYSYMBOL_sim_act_stmt_list = 333,        /* sim_act_stmt_list  */
-  YYSYMBOL_sim_act_stmt = 334,             /* sim_act_stmt  */
-  YYSYMBOL_sim_act_keyword = 335           /* sim_act_keyword  */
+  YYSYMBOL_T_Delrestrict = 31,             /* T_Delrestrict  */
+  YYSYMBOL_T_Device = 32,                  /* T_Device  */
+  YYSYMBOL_T_Digest = 33,                  /* T_Digest  */
+  YYSYMBOL_T_Disable = 34,                 /* T_Disable  */
+  YYSYMBOL_T_Discard = 35,                 /* T_Discard  */
+  YYSYMBOL_T_Dispersion = 36,              /* T_Dispersion  */
+  YYSYMBOL_T_Double = 37,                  /* T_Double  */
+  YYSYMBOL_T_Driftfile = 38,               /* T_Driftfile  */
+  YYSYMBOL_T_Drop = 39,                    /* T_Drop  */
+  YYSYMBOL_T_Dscp = 40,                    /* T_Dscp  */
+  YYSYMBOL_T_Ellipsis = 41,                /* T_Ellipsis  */
+  YYSYMBOL_T_Enable = 42,                  /* T_Enable  */
+  YYSYMBOL_T_End = 43,                     /* T_End  */
+  YYSYMBOL_T_Epeer = 44,                   /* T_Epeer  */
+  YYSYMBOL_T_False = 45,                   /* T_False  */
+  YYSYMBOL_T_File = 46,                    /* T_File  */
+  YYSYMBOL_T_Filegen = 47,                 /* T_Filegen  */
+  YYSYMBOL_T_Filenum = 48,                 /* T_Filenum  */
+  YYSYMBOL_T_Flag1 = 49,                   /* T_Flag1  */
+  YYSYMBOL_T_Flag2 = 50,                   /* T_Flag2  */
+  YYSYMBOL_T_Flag3 = 51,                   /* T_Flag3  */
+  YYSYMBOL_T_Flag4 = 52,                   /* T_Flag4  */
+  YYSYMBOL_T_Flake = 53,                   /* T_Flake  */
+  YYSYMBOL_T_Floor = 54,                   /* T_Floor  */
+  YYSYMBOL_T_Freq = 55,                    /* T_Freq  */
+  YYSYMBOL_T_Fudge = 56,                   /* T_Fudge  */
+  YYSYMBOL_T_Fuzz = 57,                    /* T_Fuzz  */
+  YYSYMBOL_T_Host = 58,                    /* T_Host  */
+  YYSYMBOL_T_Huffpuff = 59,                /* T_Huffpuff  */
+  YYSYMBOL_T_Iburst = 60,                  /* T_Iburst  */
+  YYSYMBOL_T_Ident = 61,                   /* T_Ident  */
+  YYSYMBOL_T_Ignore = 62,                  /* T_Ignore  */
+  YYSYMBOL_T_Ignorehash = 63,              /* T_Ignorehash  */
+  YYSYMBOL_T_Incalloc = 64,                /* T_Incalloc  */
+  YYSYMBOL_T_Incmem = 65,                  /* T_Incmem  */
+  YYSYMBOL_T_Initalloc = 66,               /* T_Initalloc  */
+  YYSYMBOL_T_Initmem = 67,                 /* T_Initmem  */
+  YYSYMBOL_T_Includefile = 68,             /* T_Includefile  */
+  YYSYMBOL_T_Integer = 69,                 /* T_Integer  */
+  YYSYMBOL_T_Interface = 70,               /* T_Interface  */
+  YYSYMBOL_T_Intrange = 71,                /* T_Intrange  */
+  YYSYMBOL_T_Io = 72,                      /* T_Io  */
+  YYSYMBOL_T_Ippeerlimit = 73,             /* T_Ippeerlimit  */
+  YYSYMBOL_T_Ipv4 = 74,                    /* T_Ipv4  */
+  YYSYMBOL_T_Ipv4_flag = 75,               /* T_Ipv4_flag  */
+  YYSYMBOL_T_Ipv6 = 76,                    /* T_Ipv6  */
+  YYSYMBOL_T_Ipv6_flag = 77,               /* T_Ipv6_flag  */
+  YYSYMBOL_T_Kernel = 78,                  /* T_Kernel  */
+  YYSYMBOL_T_Key = 79,                     /* T_Key  */
+  YYSYMBOL_T_Keys = 80,                    /* T_Keys  */
+  YYSYMBOL_T_Keysdir = 81,                 /* T_Keysdir  */
+  YYSYMBOL_T_Kod = 82,                     /* T_Kod  */
+  YYSYMBOL_T_Leapfile = 83,                /* T_Leapfile  */
+  YYSYMBOL_T_Leapsmearinterval = 84,       /* T_Leapsmearinterval  */
+  YYSYMBOL_T_Limited = 85,                 /* T_Limited  */
+  YYSYMBOL_T_Link = 86,                    /* T_Link  */
+  YYSYMBOL_T_Listen = 87,                  /* T_Listen  */
+  YYSYMBOL_T_Logconfig = 88,               /* T_Logconfig  */
+  YYSYMBOL_T_Logfile = 89,                 /* T_Logfile  */
+  YYSYMBOL_T_Loopstats = 90,               /* T_Loopstats  */
+  YYSYMBOL_T_Lowpriotrap = 91,             /* T_Lowpriotrap  */
+  YYSYMBOL_T_Manycastclient = 92,          /* T_Manycastclient  */
+  YYSYMBOL_T_Manycastserver = 93,          /* T_Manycastserver  */
+  YYSYMBOL_T_Mask = 94,                    /* T_Mask  */
+  YYSYMBOL_T_Maxage = 95,                  /* T_Maxage  */
+  YYSYMBOL_T_Maxclock = 96,                /* T_Maxclock  */
+  YYSYMBOL_T_Maxdepth = 97,                /* T_Maxdepth  */
+  YYSYMBOL_T_Maxdist = 98,                 /* T_Maxdist  */
+  YYSYMBOL_T_Maxmem = 99,                  /* T_Maxmem  */
+  YYSYMBOL_T_Maxpoll = 100,                /* T_Maxpoll  */
+  YYSYMBOL_T_Mdnstries = 101,              /* T_Mdnstries  */
+  YYSYMBOL_T_Mem = 102,                    /* T_Mem  */
+  YYSYMBOL_T_Memlock = 103,                /* T_Memlock  */
+  YYSYMBOL_T_Minclock = 104,               /* T_Minclock  */
+  YYSYMBOL_T_Mindepth = 105,               /* T_Mindepth  */
+  YYSYMBOL_T_Mindist = 106,                /* T_Mindist  */
+  YYSYMBOL_T_Minimum = 107,                /* T_Minimum  */
+  YYSYMBOL_T_Minjitter = 108,              /* T_Minjitter  */
+  YYSYMBOL_T_Minpoll = 109,                /* T_Minpoll  */
+  YYSYMBOL_T_Minsane = 110,                /* T_Minsane  */
+  YYSYMBOL_T_Mode = 111,                   /* T_Mode  */
+  YYSYMBOL_T_Mode7 = 112,                  /* T_Mode7  */
+  YYSYMBOL_T_Monitor = 113,                /* T_Monitor  */
+  YYSYMBOL_T_Month = 114,                  /* T_Month  */
+  YYSYMBOL_T_Mru = 115,                    /* T_Mru  */
+  YYSYMBOL_T_Mssntp = 116,                 /* T_Mssntp  */
+  YYSYMBOL_T_Multicastclient = 117,        /* T_Multicastclient  */
+  YYSYMBOL_T_Nic = 118,                    /* T_Nic  */
+  YYSYMBOL_T_Nolink = 119,                 /* T_Nolink  */
+  YYSYMBOL_T_Nomodify = 120,               /* T_Nomodify  */
+  YYSYMBOL_T_Nomrulist = 121,              /* T_Nomrulist  */
+  YYSYMBOL_T_None = 122,                   /* T_None  */
+  YYSYMBOL_T_Nonvolatile = 123,            /* T_Nonvolatile  */
+  YYSYMBOL_T_Noepeer = 124,                /* T_Noepeer  */
+  YYSYMBOL_T_Nopeer = 125,                 /* T_Nopeer  */
+  YYSYMBOL_T_Noquery = 126,                /* T_Noquery  */
+  YYSYMBOL_T_Noselect = 127,               /* T_Noselect  */
+  YYSYMBOL_T_Noserve = 128,                /* T_Noserve  */
+  YYSYMBOL_T_Notrap = 129,                 /* T_Notrap  */
+  YYSYMBOL_T_Notrust = 130,                /* T_Notrust  */
+  YYSYMBOL_T_Ntp = 131,                    /* T_Ntp  */
+  YYSYMBOL_T_Ntpport = 132,                /* T_Ntpport  */
+  YYSYMBOL_T_NtpSignDsocket = 133,         /* T_NtpSignDsocket  */
+  YYSYMBOL_T_Orphan = 134,                 /* T_Orphan  */
+  YYSYMBOL_T_Orphanwait = 135,             /* T_Orphanwait  */
+  YYSYMBOL_T_PCEdigest = 136,              /* T_PCEdigest  */
+  YYSYMBOL_T_Panic = 137,                  /* T_Panic  */
+  YYSYMBOL_T_Peer = 138,                   /* T_Peer  */
+  YYSYMBOL_T_Peerstats = 139,              /* T_Peerstats  */
+  YYSYMBOL_T_Phone = 140,                  /* T_Phone  */
+  YYSYMBOL_T_Pid = 141,                    /* T_Pid  */
+  YYSYMBOL_T_Pidfile = 142,                /* T_Pidfile  */
+  YYSYMBOL_T_Poll = 143,                   /* T_Poll  */
+  YYSYMBOL_T_PollSkewList = 144,           /* T_PollSkewList  */
+  YYSYMBOL_T_Pool = 145,                   /* T_Pool  */
+  YYSYMBOL_T_Port = 146,                   /* T_Port  */
+  YYSYMBOL_T_PpsData = 147,                /* T_PpsData  */
+  YYSYMBOL_T_Preempt = 148,                /* T_Preempt  */
+  YYSYMBOL_T_Prefer = 149,                 /* T_Prefer  */
+  YYSYMBOL_T_Protostats = 150,             /* T_Protostats  */
+  YYSYMBOL_T_Pw = 151,                     /* T_Pw  */
+  YYSYMBOL_T_Randfile = 152,               /* T_Randfile  */
+  YYSYMBOL_T_Rawstats = 153,               /* T_Rawstats  */
+  YYSYMBOL_T_Refid = 154,                  /* T_Refid  */
+  YYSYMBOL_T_Requestkey = 155,             /* T_Requestkey  */
+  YYSYMBOL_T_Reset = 156,                  /* T_Reset  */
+  YYSYMBOL_T_Restrict = 157,               /* T_Restrict  */
+  YYSYMBOL_T_Revoke = 158,                 /* T_Revoke  */
+  YYSYMBOL_T_Rlimit = 159,                 /* T_Rlimit  */
+  YYSYMBOL_T_Saveconfigdir = 160,          /* T_Saveconfigdir  */
+  YYSYMBOL_T_Server = 161,                 /* T_Server  */
+  YYSYMBOL_T_Serverresponse = 162,         /* T_Serverresponse  */
+  YYSYMBOL_T_ServerresponseFuzz = 163,     /* T_ServerresponseFuzz  */
+  YYSYMBOL_T_Setvar = 164,                 /* T_Setvar  */
+  YYSYMBOL_T_Source = 165,                 /* T_Source  */
+  YYSYMBOL_T_Stacksize = 166,              /* T_Stacksize  */
+  YYSYMBOL_T_Statistics = 167,             /* T_Statistics  */
+  YYSYMBOL_T_Stats = 168,                  /* T_Stats  */
+  YYSYMBOL_T_Statsdir = 169,               /* T_Statsdir  */
+  YYSYMBOL_T_Step = 170,                   /* T_Step  */
+  YYSYMBOL_T_Stepback = 171,               /* T_Stepback  */
+  YYSYMBOL_T_Stepfwd = 172,                /* T_Stepfwd  */
+  YYSYMBOL_T_Stepout = 173,                /* T_Stepout  */
+  YYSYMBOL_T_Stratum = 174,                /* T_Stratum  */
+  YYSYMBOL_T_String = 175,                 /* T_String  */
+  YYSYMBOL_T_Sys = 176,                    /* T_Sys  */
+  YYSYMBOL_T_Sysstats = 177,               /* T_Sysstats  */
+  YYSYMBOL_T_Tick = 178,                   /* T_Tick  */
+  YYSYMBOL_T_Time1 = 179,                  /* T_Time1  */
+  YYSYMBOL_T_Time2 = 180,                  /* T_Time2  */
+  YYSYMBOL_T_TimeData = 181,               /* T_TimeData  */
+  YYSYMBOL_T_Timer = 182,                  /* T_Timer  */
+  YYSYMBOL_T_Timingstats = 183,            /* T_Timingstats  */
+  YYSYMBOL_T_Tinker = 184,                 /* T_Tinker  */
+  YYSYMBOL_T_Tos = 185,                    /* T_Tos  */
+  YYSYMBOL_T_Trap = 186,                   /* T_Trap  */
+  YYSYMBOL_T_True = 187,                   /* T_True  */
+  YYSYMBOL_T_Trustedkey = 188,             /* T_Trustedkey  */
+  YYSYMBOL_T_Ttl = 189,                    /* T_Ttl  */
+  YYSYMBOL_T_Type = 190,                   /* T_Type  */
+  YYSYMBOL_T_U_int = 191,                  /* T_U_int  */
+  YYSYMBOL_T_UEcrypto = 192,               /* T_UEcrypto  */
+  YYSYMBOL_T_UEcryptonak = 193,            /* T_UEcryptonak  */
+  YYSYMBOL_T_UEdigest = 194,               /* T_UEdigest  */
+  YYSYMBOL_T_Unconfig = 195,               /* T_Unconfig  */
+  YYSYMBOL_T_Unpeer = 196,                 /* T_Unpeer  */
+  YYSYMBOL_T_Version = 197,                /* T_Version  */
+  YYSYMBOL_T_WanderThreshold = 198,        /* T_WanderThreshold  */
+  YYSYMBOL_T_Week = 199,                   /* T_Week  */
+  YYSYMBOL_T_Wildcard = 200,               /* T_Wildcard  */
+  YYSYMBOL_T_Xleave = 201,                 /* T_Xleave  */
+  YYSYMBOL_T_Xmtnonce = 202,               /* T_Xmtnonce  */
+  YYSYMBOL_T_Year = 203,                   /* T_Year  */
+  YYSYMBOL_T_Flag = 204,                   /* T_Flag  */
+  YYSYMBOL_T_EOC = 205,                    /* T_EOC  */
+  YYSYMBOL_T_Simulate = 206,               /* T_Simulate  */
+  YYSYMBOL_T_Beep_Delay = 207,             /* T_Beep_Delay  */
+  YYSYMBOL_T_Sim_Duration = 208,           /* T_Sim_Duration  */
+  YYSYMBOL_T_Server_Offset = 209,          /* T_Server_Offset  */
+  YYSYMBOL_T_Duration = 210,               /* T_Duration  */
+  YYSYMBOL_T_Freq_Offset = 211,            /* T_Freq_Offset  */
+  YYSYMBOL_T_Wander = 212,                 /* T_Wander  */
+  YYSYMBOL_T_Jitter = 213,                 /* T_Jitter  */
+  YYSYMBOL_T_Prop_Delay = 214,             /* T_Prop_Delay  */
+  YYSYMBOL_T_Proc_Delay = 215,             /* T_Proc_Delay  */
+  YYSYMBOL_216_ = 216,                     /* '|'  */
+  YYSYMBOL_217_ = 217,                     /* '='  */
+  YYSYMBOL_218_ = 218,                     /* '('  */
+  YYSYMBOL_219_ = 219,                     /* ')'  */
+  YYSYMBOL_220_ = 220,                     /* '{'  */
+  YYSYMBOL_221_ = 221,                     /* '}'  */
+  YYSYMBOL_YYACCEPT = 222,                 /* $accept  */
+  YYSYMBOL_configuration = 223,            /* configuration  */
+  YYSYMBOL_command_list = 224,             /* command_list  */
+  YYSYMBOL_command = 225,                  /* command  */
+  YYSYMBOL_server_command = 226,           /* server_command  */
+  YYSYMBOL_client_type = 227,              /* client_type  */
+  YYSYMBOL_address = 228,                  /* address  */
+  YYSYMBOL_ip_address = 229,               /* ip_address  */
+  YYSYMBOL_address_fam = 230,              /* address_fam  */
+  YYSYMBOL_option_list = 231,              /* option_list  */
+  YYSYMBOL_option = 232,                   /* option  */
+  YYSYMBOL_option_flag = 233,              /* option_flag  */
+  YYSYMBOL_option_flag_keyword = 234,      /* option_flag_keyword  */
+  YYSYMBOL_option_int = 235,               /* option_int  */
+  YYSYMBOL_option_int_keyword = 236,       /* option_int_keyword  */
+  YYSYMBOL_option_str = 237,               /* option_str  */
+  YYSYMBOL_option_str_keyword = 238,       /* option_str_keyword  */
+  YYSYMBOL_unpeer_command = 239,           /* unpeer_command  */
+  YYSYMBOL_unpeer_keyword = 240,           /* unpeer_keyword  */
+  YYSYMBOL_other_mode_command = 241,       /* other_mode_command  */
+  YYSYMBOL_authentication_command = 242,   /* authentication_command  */
+  YYSYMBOL_crypto_command_list = 243,      /* crypto_command_list  */
+  YYSYMBOL_crypto_command = 244,           /* crypto_command  */
+  YYSYMBOL_crypto_str_keyword = 245,       /* crypto_str_keyword  */
+  YYSYMBOL_orphan_mode_command = 246,      /* orphan_mode_command  */
+  YYSYMBOL_tos_option_list = 247,          /* tos_option_list  */
+  YYSYMBOL_tos_option = 248,               /* tos_option  */
+  YYSYMBOL_tos_option_int_keyword = 249,   /* tos_option_int_keyword  */
+  YYSYMBOL_tos_option_dbl_keyword = 250,   /* tos_option_dbl_keyword  */
+  YYSYMBOL_monitoring_command = 251,       /* monitoring_command  */
+  YYSYMBOL_stats_list = 252,               /* stats_list  */
+  YYSYMBOL_stat = 253,                     /* stat  */
+  YYSYMBOL_filegen_option_list = 254,      /* filegen_option_list  */
+  YYSYMBOL_filegen_option = 255,           /* filegen_option  */
+  YYSYMBOL_link_nolink = 256,              /* link_nolink  */
+  YYSYMBOL_enable_disable = 257,           /* enable_disable  */
+  YYSYMBOL_filegen_type = 258,             /* filegen_type  */
+  YYSYMBOL_access_control_command = 259,   /* access_control_command  */
+  YYSYMBOL_restrict_mask = 260,            /* restrict_mask  */
+  YYSYMBOL_res_ippeerlimit = 261,          /* res_ippeerlimit  */
+  YYSYMBOL_ac_flag_list = 262,             /* ac_flag_list  */
+  YYSYMBOL_access_control_flag = 263,      /* access_control_flag  */
+  YYSYMBOL_discard_option_list = 264,      /* discard_option_list  */
+  YYSYMBOL_discard_option = 265,           /* discard_option  */
+  YYSYMBOL_discard_option_keyword = 266,   /* discard_option_keyword  */
+  YYSYMBOL_mru_option_list = 267,          /* mru_option_list  */
+  YYSYMBOL_mru_option = 268,               /* mru_option  */
+  YYSYMBOL_mru_option_keyword = 269,       /* mru_option_keyword  */
+  YYSYMBOL_fudge_command = 270,            /* fudge_command  */
+  YYSYMBOL_fudge_factor_list = 271,        /* fudge_factor_list  */
+  YYSYMBOL_fudge_factor = 272,             /* fudge_factor  */
+  YYSYMBOL_fudge_factor_dbl_keyword = 273, /* fudge_factor_dbl_keyword  */
+  YYSYMBOL_fudge_factor_bool_keyword = 274, /* fudge_factor_bool_keyword  */
+  YYSYMBOL_device_command = 275,           /* device_command  */
+  YYSYMBOL_device_item_list = 276,         /* device_item_list  */
+  YYSYMBOL_device_item = 277,              /* device_item  */
+  YYSYMBOL_device_item_path_keyword = 278, /* device_item_path_keyword  */
+  YYSYMBOL_rlimit_command = 279,           /* rlimit_command  */
+  YYSYMBOL_rlimit_option_list = 280,       /* rlimit_option_list  */
+  YYSYMBOL_rlimit_option = 281,            /* rlimit_option  */
+  YYSYMBOL_rlimit_option_keyword = 282,    /* rlimit_option_keyword  */
+  YYSYMBOL_system_option_command = 283,    /* system_option_command  */
+  YYSYMBOL_system_option_list = 284,       /* system_option_list  */
+  YYSYMBOL_system_option = 285,            /* system_option  */
+  YYSYMBOL_system_option_flag_keyword = 286, /* system_option_flag_keyword  */
+  YYSYMBOL_system_option_local_flag_keyword = 287, /* system_option_local_flag_keyword  */
+  YYSYMBOL_tinker_command = 288,           /* tinker_command  */
+  YYSYMBOL_tinker_option_list = 289,       /* tinker_option_list  */
+  YYSYMBOL_tinker_option = 290,            /* tinker_option  */
+  YYSYMBOL_tinker_option_keyword = 291,    /* tinker_option_keyword  */
+  YYSYMBOL_miscellaneous_command = 292,    /* miscellaneous_command  */
+  YYSYMBOL_misc_cmd_dbl_keyword = 293,     /* misc_cmd_dbl_keyword  */
+  YYSYMBOL_misc_cmd_int_keyword = 294,     /* misc_cmd_int_keyword  */
+  YYSYMBOL_opt_hash_check = 295,           /* opt_hash_check  */
+  YYSYMBOL_misc_cmd_str_keyword = 296,     /* misc_cmd_str_keyword  */
+  YYSYMBOL_misc_cmd_str_lcl_keyword = 297, /* misc_cmd_str_lcl_keyword  */
+  YYSYMBOL_drift_parm = 298,               /* drift_parm  */
+  YYSYMBOL_pollskew_list = 299,            /* pollskew_list  */
+  YYSYMBOL_pollskew_spec = 300,            /* pollskew_spec  */
+  YYSYMBOL_pollskew_cycle = 301,           /* pollskew_cycle  */
+  YYSYMBOL_variable_assign = 302,          /* variable_assign  */
+  YYSYMBOL_t_default_or_zero = 303,        /* t_default_or_zero  */
+  YYSYMBOL_trap_option_list = 304,         /* trap_option_list  */
+  YYSYMBOL_trap_option = 305,              /* trap_option  */
+  YYSYMBOL_log_config_list = 306,          /* log_config_list  */
+  YYSYMBOL_log_config_command = 307,       /* log_config_command  */
+  YYSYMBOL_interface_command = 308,        /* interface_command  */
+  YYSYMBOL_interface_nic = 309,            /* interface_nic  */
+  YYSYMBOL_nic_rule_class = 310,           /* nic_rule_class  */
+  YYSYMBOL_nic_rule_action = 311,          /* nic_rule_action  */
+  YYSYMBOL_reset_command = 312,            /* reset_command  */
+  YYSYMBOL_counter_set_list = 313,         /* counter_set_list  */
+  YYSYMBOL_counter_set_keyword = 314,      /* counter_set_keyword  */
+  YYSYMBOL_integer_list = 315,             /* integer_list  */
+  YYSYMBOL_integer_list_range = 316,       /* integer_list_range  */
+  YYSYMBOL_integer_list_range_elt = 317,   /* integer_list_range_elt  */
+  YYSYMBOL_integer_range = 318,            /* integer_range  */
+  YYSYMBOL_string_list = 319,              /* string_list  */
+  YYSYMBOL_address_list = 320,             /* address_list  */
+  YYSYMBOL_boolean = 321,                  /* boolean  */
+  YYSYMBOL_number = 322,                   /* number  */
+  YYSYMBOL_basedate = 323,                 /* basedate  */
+  YYSYMBOL_simulate_command = 324,         /* simulate_command  */
+  YYSYMBOL_sim_conf_start = 325,           /* sim_conf_start  */
+  YYSYMBOL_sim_init_statement_list = 326,  /* sim_init_statement_list  */
+  YYSYMBOL_sim_init_statement = 327,       /* sim_init_statement  */
+  YYSYMBOL_sim_init_keyword = 328,         /* sim_init_keyword  */
+  YYSYMBOL_sim_server_list = 329,          /* sim_server_list  */
+  YYSYMBOL_sim_server = 330,               /* sim_server  */
+  YYSYMBOL_sim_server_offset = 331,        /* sim_server_offset  */
+  YYSYMBOL_sim_server_name = 332,          /* sim_server_name  */
+  YYSYMBOL_sim_act_list = 333,             /* sim_act_list  */
+  YYSYMBOL_sim_act = 334,                  /* sim_act  */
+  YYSYMBOL_sim_act_stmt_list = 335,        /* sim_act_stmt_list  */
+  YYSYMBOL_sim_act_stmt = 336,             /* sim_act_stmt  */
+  YYSYMBOL_sim_act_keyword = 337           /* sim_act_keyword  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -1283,21 +1287,21 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  222
+#define YYFINAL  225
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   688
+#define YYLAST   717
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  221
+#define YYNTOKENS  222
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  115
+#define YYNNTS  116
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  343
+#define YYNRULES  346
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  463
+#define YYNSTATES  467
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   469
+#define YYMAXUTOK   470
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1315,15 +1319,15 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     217,   218,     2,     2,     2,     2,     2,     2,     2,     2,
+     218,   219,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   216,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   217,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   219,   215,   220,     2,     2,     2,     2,
+       2,     2,     2,   220,   216,   221,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1357,48 +1361,49 @@ static const yytype_uint8 yytranslate[] =
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215
 };
 
 #if YYDEBUG
 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   397,   397,   401,   402,   403,   418,   419,   420,   421,
-     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
-     432,   440,   450,   451,   452,   453,   454,   458,   459,   464,
-     469,   471,   477,   478,   486,   487,   488,   492,   497,   498,
-     499,   500,   501,   502,   503,   504,   505,   509,   511,   516,
-     517,   518,   519,   520,   521,   525,   530,   539,   549,   550,
-     560,   562,   564,   566,   577,   584,   586,   591,   593,   595,
-     597,   599,   609,   615,   616,   624,   626,   638,   639,   640,
-     641,   642,   651,   656,   661,   669,   671,   673,   675,   680,
-     681,   682,   683,   684,   685,   686,   687,   688,   692,   693,
-     702,   704,   713,   723,   728,   736,   737,   738,   739,   740,
-     741,   742,   743,   748,   749,   757,   767,   776,   791,   796,
-     797,   801,   802,   806,   807,   808,   809,   810,   811,   812,
-     821,   825,   829,   837,   845,   853,   868,   883,   896,   897,
-     917,   918,   926,   937,   938,   939,   940,   941,   942,   943,
-     944,   945,   946,   947,   948,   949,   950,   951,   952,   953,
-     957,   962,   970,   975,   976,   977,   981,   986,   994,   999,
-    1000,  1001,  1002,  1003,  1004,  1005,  1006,  1014,  1024,  1029,
-    1037,  1039,  1041,  1050,  1052,  1057,  1058,  1059,  1063,  1064,
-    1065,  1066,  1074,  1084,  1089,  1097,  1102,  1103,  1111,  1116,
-    1121,  1129,  1134,  1135,  1136,  1145,  1147,  1152,  1157,  1165,
-    1167,  1184,  1185,  1186,  1187,  1188,  1189,  1193,  1194,  1195,
-    1196,  1197,  1198,  1206,  1211,  1216,  1224,  1229,  1230,  1231,
-    1232,  1233,  1234,  1235,  1236,  1237,  1238,  1247,  1248,  1249,
-    1256,  1263,  1270,  1286,  1305,  1313,  1315,  1317,  1319,  1321,
-    1323,  1325,  1332,  1337,  1338,  1339,  1343,  1347,  1356,  1358,
-    1361,  1365,  1369,  1370,  1371,  1375,  1386,  1404,  1417,  1418,
-    1423,  1449,  1455,  1460,  1465,  1467,  1472,  1473,  1481,  1483,
-    1491,  1496,  1504,  1529,  1536,  1546,  1547,  1551,  1552,  1553,
-    1554,  1558,  1559,  1560,  1564,  1569,  1574,  1582,  1583,  1584,
-    1585,  1586,  1587,  1588,  1598,  1603,  1611,  1616,  1624,  1626,
-    1630,  1635,  1640,  1648,  1653,  1661,  1670,  1671,  1675,  1676,
-    1680,  1688,  1706,  1710,  1715,  1723,  1728,  1729,  1733,  1738,
-    1746,  1751,  1756,  1761,  1766,  1774,  1779,  1784,  1792,  1797,
-    1798,  1799,  1800,  1801
+       0,   399,   399,   403,   404,   405,   420,   421,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   442,   452,   453,   454,   455,   456,   460,   461,   466,
+     471,   473,   479,   480,   488,   489,   490,   494,   499,   500,
+     501,   502,   503,   504,   505,   506,   507,   511,   513,   518,
+     519,   520,   521,   522,   523,   527,   532,   541,   551,   552,
+     562,   564,   566,   568,   579,   586,   588,   593,   595,   597,
+     599,   601,   611,   617,   618,   626,   628,   640,   641,   642,
+     643,   644,   653,   658,   663,   671,   673,   675,   677,   682,
+     683,   684,   685,   686,   687,   688,   689,   690,   694,   695,
+     704,   706,   715,   725,   730,   738,   739,   740,   741,   742,
+     743,   744,   745,   750,   751,   759,   769,   778,   793,   798,
+     799,   803,   804,   808,   809,   810,   811,   812,   813,   814,
+     823,   827,   831,   840,   849,   865,   881,   891,   900,   916,
+     917,   925,   926,   946,   947,   955,   966,   967,   968,   969,
+     970,   971,   972,   973,   974,   975,   976,   977,   978,   979,
+     980,   981,   982,   986,   991,   999,  1004,  1005,  1006,  1010,
+    1015,  1023,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
+    1043,  1053,  1058,  1066,  1068,  1070,  1079,  1081,  1086,  1087,
+    1088,  1092,  1093,  1094,  1095,  1103,  1113,  1118,  1126,  1131,
+    1132,  1140,  1145,  1150,  1158,  1163,  1164,  1165,  1174,  1176,
+    1181,  1186,  1194,  1196,  1213,  1214,  1215,  1216,  1217,  1218,
+    1222,  1223,  1224,  1225,  1226,  1227,  1235,  1240,  1245,  1253,
+    1258,  1259,  1260,  1261,  1262,  1263,  1264,  1265,  1266,  1267,
+    1276,  1277,  1278,  1285,  1292,  1299,  1315,  1334,  1342,  1344,
+    1346,  1348,  1350,  1352,  1354,  1361,  1366,  1367,  1368,  1372,
+    1376,  1385,  1387,  1390,  1394,  1398,  1399,  1400,  1404,  1415,
+    1433,  1446,  1447,  1452,  1478,  1484,  1489,  1494,  1496,  1501,
+    1502,  1510,  1512,  1520,  1525,  1533,  1558,  1565,  1575,  1576,
+    1580,  1581,  1582,  1583,  1587,  1588,  1589,  1593,  1598,  1603,
+    1611,  1612,  1613,  1614,  1615,  1616,  1617,  1627,  1632,  1640,
+    1645,  1653,  1655,  1659,  1664,  1669,  1677,  1682,  1690,  1699,
+    1700,  1704,  1705,  1709,  1717,  1735,  1739,  1744,  1752,  1757,
+    1758,  1762,  1767,  1775,  1780,  1785,  1790,  1795,  1803,  1808,
+    1813,  1821,  1826,  1827,  1828,  1829,  1830
 };
 #endif
 
@@ -1420,11 +1425,11 @@ static const char *const yytname[] =
   "T_Broadcast", "T_Broadcastclient", "T_Broadcastdelay", "T_Burst",
   "T_Calibrate", "T_Ceiling", "T_Checkhash", "T_Clockstats", "T_Cohort",
   "T_ControlKey", "T_Crypto", "T_Cryptostats", "T_Ctl", "T_Day",
-  "T_Default", "T_Device", "T_Digest", "T_Disable", "T_Discard",
-  "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop", "T_Dscp",
-  "T_Ellipsis", "T_Enable", "T_End", "T_Epeer", "T_False", "T_File",
-  "T_Filegen", "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4",
-  "T_Flake", "T_Floor", "T_Freq", "T_Fudge", "T_Fuzz", "T_Host",
+  "T_Default", "T_Delrestrict", "T_Device", "T_Digest", "T_Disable",
+  "T_Discard", "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop",
+  "T_Dscp", "T_Ellipsis", "T_Enable", "T_End", "T_Epeer", "T_False",
+  "T_File", "T_Filegen", "T_Filenum", "T_Flag1", "T_Flag2", "T_Flag3",
+  "T_Flag4", "T_Flake", "T_Floor", "T_Freq", "T_Fudge", "T_Fuzz", "T_Host",
   "T_Huffpuff", "T_Iburst", "T_Ident", "T_Ignore", "T_Ignorehash",
   "T_Incalloc", "T_Incmem", "T_Initalloc", "T_Initmem", "T_Includefile",
   "T_Integer", "T_Interface", "T_Intrange", "T_Io", "T_Ippeerlimit",
@@ -1466,10 +1471,10 @@ static const char *const yytname[] =
   "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword",
   "monitoring_command", "stats_list", "stat", "filegen_option_list",
   "filegen_option", "link_nolink", "enable_disable", "filegen_type",
-  "access_control_command", "res_ippeerlimit", "ac_flag_list",
-  "access_control_flag", "discard_option_list", "discard_option",
-  "discard_option_keyword", "mru_option_list", "mru_option",
-  "mru_option_keyword", "fudge_command", "fudge_factor_list",
+  "access_control_command", "restrict_mask", "res_ippeerlimit",
+  "ac_flag_list", "access_control_flag", "discard_option_list",
+  "discard_option", "discard_option_keyword", "mru_option_list",
+  "mru_option", "mru_option_keyword", "fudge_command", "fudge_factor_list",
   "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
   "device_command", "device_item_list", "device_item",
   "device_item_path_keyword", "rlimit_command", "rlimit_option_list",
@@ -1500,7 +1505,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
 }
 #endif
 
-#define YYPACT_NINF (-247)
+#define YYPACT_NINF (-280)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -1514,53 +1519,53 @@ yysymbol_name (yysymbol_kind_t yysymbol)
    STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-       5,  -178,   -19,  -247,  -247,  -247,    -2,  -247,   -58,   294,
-      29,   -94,  -247,   294,  -247,   109,   -58,  -247,   -79,  -247,
-     -70,   -68,   -65,  -247,   -63,  -247,  -247,   -58,    42,   205,
-     -58,  -247,  -247,   -56,  -247,   -50,  -247,  -247,  -247,    45,
-      27,    41,    55,   -34,  -247,  -247,   -49,   109,   -41,  -247,
-     271,   554,   -40,   -64,    72,  -247,  -247,  -247,   145,   196,
-     -54,  -247,   -58,  -247,   -58,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,    33,    83,   -22,   -17,
-    -247,   -11,  -247,  -247,   -52,  -247,  -247,  -247,    26,  -247,
-    -247,  -247,  -121,  -247,    -5,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,   294,  -247,  -247,
-    -247,  -247,  -247,  -247,    29,  -247,    86,   119,  -247,   294,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,   319,
-     377,  -247,  -247,   -10,  -247,   -63,  -247,  -247,   -58,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,   205,  -247,
-     104,   -58,  -247,  -247,     7,    23,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,    27,  -247,   103,   154,   156,   103,
-       1,  -247,  -247,  -247,  -247,   -34,  -247,   126,   -29,  -247,
-     109,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,   271,  -247,    33,    30,  -247,  -247,  -247,
-     -20,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,   554,
-    -247,   139,    33,  -247,  -247,  -247,   143,   -64,  -247,  -247,
-    -247,   155,  -247,    20,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,     4,  -104,  -247,  -247,
-    -247,  -247,  -247,   157,  -247,    54,  -247,  -247,  -121,  -247,
-      57,  -247,  -247,  -247,  -247,  -247,    -4,    58,  -247,  -247,
-    -247,  -247,  -247,    67,   175,  -247,  -247,   319,  -247,    33,
-     -20,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,   178,  -247,   184,  -247,   103,   103,  -247,
-     -40,  -247,  -247,  -247,    79,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,   -55,   214,  -247,  -247,
-    -247,    48,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -143,    51,    43,  -247,  -247,  -247,  -247,  -247,  -247,    88,
-    -247,  -247,    -1,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,    49,  -247,   465,  -247,  -247,   465,   103,   465,
-     227,   -40,   192,  -247,   198,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,   -61,  -247,    98,    64,    69,
-    -150,  -247,    62,  -247,    33,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,   206,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,   226,  -247,  -247,   465,   465,  -247,  -247,  -247,  -247,
-    -247,    68,  -247,  -247,  -247,   -58,  -247,  -247,  -247,    81,
-    -247,  -247,  -247,   465,  -247,  -247,    74,    84,    33,    76,
-    -131,  -247,    90,    33,  -247,  -247,  -247,    78,   131,  -247,
-    -247,  -247,  -247,  -247,     6,    91,    82,  -247,   100,  -247,
-      33,  -247,  -247
+      10,  -173,   -31,  -280,  -280,  -280,   -11,  -280,   -89,   -28,
+     301,     3,  -115,  -280,   301,  -280,    82,   -28,  -280,   -98,
+    -280,   -94,   -83,   -75,  -280,   -74,  -280,  -280,   -28,    19,
+     213,   -28,  -280,  -280,   -69,  -280,   -62,  -280,  -280,  -280,
+      35,    15,   101,    45,   -42,  -280,  -280,   -56,    82,   -53,
+    -280,    53,   582,   -49,   -65,    49,  -280,  -280,  -280,   129,
+     202,   -64,  -280,   -28,  -280,   -28,  -280,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,     0,    61,   -29,
+     -24,  -280,   -22,  -280,  -280,   -76,  -280,  -280,  -280,   102,
+     -49,  -280,    62,  -280,  -280,  -113,  -280,   -18,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+     301,  -280,  -280,  -280,  -280,  -280,  -280,     3,  -280,    89,
+     122,  -280,   301,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,   281,   384,  -280,  -280,    -1,  -280,   -74,  -280,
+    -280,   -28,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,   213,  -280,    92,   -28,  -280,  -280,   -13,    -5,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,    15,  -280,    91,
+     143,   145,    91,    62,  -280,  -280,  -280,  -280,   -42,  -280,
+     111,   -35,  -280,    82,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,    53,  -280,     0,     6,
+    -280,  -280,  -280,   -38,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,   582,  -280,   115,     0,  -280,  -280,  -280,   116,
+     -65,  -280,  -280,  -280,   117,  -280,   -16,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,     8,
+    -112,  -280,  -280,  -280,  -280,  -280,   118,  -280,    17,  -280,
+     -49,  -280,  -280,  -280,  -113,  -280,    26,  -280,  -280,  -280,
+    -280,  -280,    21,    27,  -280,  -280,  -280,  -280,  -280,    28,
+     138,  -280,  -280,   281,  -280,     0,   -38,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,   140,
+    -280,   141,  -280,    91,    91,  -280,    91,  -280,  -280,    38,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,   -61,   173,  -280,  -280,  -280,   387,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,   -87,    12,     5,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,    54,  -280,  -280,     1,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,    14,  -280,
+     513,  -280,  -280,   513,  -280,   208,   -49,   170,  -280,   172,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+     -57,  -280,    72,    31,    47,  -151,  -280,    30,  -280,     0,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,   186,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,   199,  -280,  -280,   513,
+     513,   513,  -280,  -280,  -280,  -280,    42,  -280,  -280,  -280,
+     -28,  -280,  -280,  -280,    48,  -280,  -280,  -280,  -280,  -280,
+      50,    52,     0,    56,  -192,  -280,    59,     0,  -280,  -280,
+    -280,    51,   139,  -280,  -280,  -280,  -280,  -280,    85,    64,
+      57,  -280,    70,  -280,     0,  -280,  -280
 };
 
 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1568,87 +1573,87 @@ static const yytype_int16 yypact[] =
    means the default is an error.  */
 static const yytype_int16 yydefact[] =
 {
-       0,     0,     0,    25,    60,   253,     0,    73,     0,     0,
-       0,   267,   256,     0,   245,     0,     0,   261,     0,   285,
-       0,     0,     0,   257,     0,   262,    26,     0,     0,     0,
-       0,   286,   254,     0,    24,     0,   263,   268,    23,     0,
-       0,     0,     0,     0,   264,    22,     0,     0,     0,   255,
-       0,     0,     0,     0,     0,    58,    59,   322,     0,     2,
-       0,     7,     0,     8,     0,     9,    10,    13,    11,    12,
-      14,    20,    15,    16,    17,    18,     0,     0,     0,     0,
-     237,     0,   238,    19,     0,     5,    64,    65,    66,    30,
-      31,    29,     0,    27,     0,   211,   212,   213,   214,   217,
-     215,   216,   218,   219,   220,   221,   222,   206,   208,   209,
-     210,   163,   164,   165,   130,   161,     0,   265,   246,   205,
-     105,   106,   107,   108,   112,   109,   110,   111,   113,     0,
-       6,    67,    68,   260,   282,   247,   281,   314,    61,    63,
-     169,   170,   171,   172,   173,   174,   175,   176,   131,   167,
-       0,    62,    72,   312,   248,   249,    69,   297,   298,   299,
-     300,   301,   302,   303,   294,   296,   138,    30,    31,   138,
-     138,    70,   204,   202,   203,   198,   200,     0,     0,   250,
-     100,   104,   101,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   223,   225,     0,     0,    89,    90,    91,
-       0,    92,    93,    99,    94,    98,    95,    96,    97,    82,
-      84,     0,     0,    88,   276,   308,     0,    71,   307,   309,
-     305,   252,     1,     0,     4,    32,    57,   319,   318,   239,
-     240,   241,   242,   293,   292,   291,     0,     0,    81,    77,
-      78,    79,    80,     0,    74,     0,   197,   196,   192,   194,
-       0,    28,   207,   160,   162,   266,   102,     0,   188,   189,
-     190,   191,   187,     0,     0,   185,   186,   177,   179,     0,
-       0,   243,   259,   258,   244,   280,   313,   166,   168,   311,
-     272,   271,   269,     0,   295,     0,   140,   138,   138,   140,
-       0,   140,   199,   201,     0,   103,   224,   226,   320,   317,
-     315,   316,    87,    83,    85,    86,   251,     0,   306,   304,
-       3,    21,   287,   288,   289,   284,   290,   283,   326,   327,
-       0,     0,     0,    76,    75,   193,   195,   122,   121,     0,
-     119,   120,     0,   114,   117,   118,   183,   184,   182,   178,
-     180,   181,     0,   139,   134,   140,   140,   137,   138,   132,
-     275,     0,     0,   277,     0,    38,    39,    40,    56,    49,
-      51,    50,    53,    41,    42,    43,    44,    52,    54,    45,
-      46,    33,    34,    37,    35,     0,    36,     0,     0,     0,
-       0,   329,     0,   324,     0,   115,   129,   125,   127,   123,
-     124,   126,   128,   116,     0,   143,   144,   145,   146,   147,
-     148,   149,   151,   152,   150,   153,   154,   155,   156,   157,
-     158,     0,   159,   141,   135,   136,   140,   274,   273,   279,
-     278,     0,    47,    48,    55,     0,   323,   321,   328,     0,
-     325,   270,   142,   133,   310,   332,     0,     0,     0,     0,
-       0,   334,     0,     0,   330,   333,   331,     0,     0,   339,
-     340,   341,   342,   343,     0,     0,     0,   335,     0,   337,
-       0,   336,   338
+       0,     0,     0,    25,    60,   256,     0,    73,     0,     0,
+       0,     0,   270,   259,     0,   248,     0,     0,   264,     0,
+     288,     0,     0,     0,   260,     0,   265,    26,     0,     0,
+       0,     0,   289,   257,     0,    24,     0,   266,   271,    23,
+       0,     0,     0,     0,     0,   267,    22,     0,     0,     0,
+     258,     0,     0,     0,     0,     0,    58,    59,   325,     0,
+       2,     0,     7,     0,     8,     0,     9,    10,    13,    11,
+      12,    14,    20,    15,    16,    17,    18,     0,     0,     0,
+       0,   240,     0,   241,    19,     0,     5,    64,    65,    66,
+       0,    29,   139,    30,    31,     0,    27,     0,   214,   215,
+     216,   217,   220,   218,   219,   221,   222,   223,   224,   225,
+     209,   211,   212,   213,   166,   167,   168,   130,   164,     0,
+     268,   249,   208,   105,   106,   107,   108,   112,   109,   110,
+     111,   113,     0,     6,    67,    68,   263,   285,   250,   284,
+     317,    61,    63,   172,   173,   174,   175,   176,   177,   178,
+     179,   131,   170,     0,    62,    72,   315,   251,   252,    69,
+     300,   301,   302,   303,   304,   305,   306,   297,   299,   141,
+      30,    31,   141,   139,    70,   207,   205,   206,   201,   203,
+       0,     0,   253,   100,   104,   101,   230,   231,   232,   233,
+     234,   235,   236,   237,   238,   239,   226,   228,     0,     0,
+      89,    90,    91,     0,    92,    93,    99,    94,    98,    95,
+      96,    97,    82,    84,     0,     0,    88,   279,   311,     0,
+      71,   310,   312,   308,   255,     1,     0,     4,    32,    57,
+     322,   321,   242,   243,   244,   245,   296,   295,   294,     0,
+       0,    81,    77,    78,    79,    80,     0,    74,     0,   138,
+       0,   137,   200,   199,   195,   197,     0,    28,   210,   163,
+     165,   269,   102,     0,   191,   192,   193,   194,   190,     0,
+       0,   188,   189,   180,   182,     0,     0,   246,   262,   261,
+     247,   283,   316,   169,   171,   314,   275,   274,   272,     0,
+     298,     0,   143,   141,   141,   143,   141,   202,   204,     0,
+     103,   227,   229,   323,   320,   318,   319,    87,    83,    85,
+      86,   254,     0,   309,   307,     3,    21,   290,   291,   292,
+     287,   293,   286,   329,   330,     0,     0,     0,    76,    75,
+     140,   196,   198,   122,   121,     0,   119,   120,     0,   114,
+     117,   118,   186,   187,   185,   181,   183,   184,     0,   142,
+     133,   143,   143,   136,   143,   278,     0,     0,   280,     0,
+      38,    39,    40,    56,    49,    51,    50,    53,    41,    42,
+      43,    44,    52,    54,    45,    46,    33,    34,    37,    35,
+       0,    36,     0,     0,     0,     0,   332,     0,   327,     0,
+     115,   129,   125,   127,   123,   124,   126,   128,   116,     0,
+     146,   147,   148,   149,   150,   151,   152,   154,   155,   153,
+     156,   157,   158,   159,   160,   161,     0,   162,   144,   134,
+     135,   132,   277,   276,   282,   281,     0,    47,    48,    55,
+       0,   326,   324,   331,     0,   328,   273,   145,   313,   335,
+       0,     0,     0,     0,     0,   337,     0,     0,   333,   336,
+     334,     0,     0,   342,   343,   344,   345,   346,     0,     0,
+       0,   338,     0,   340,     0,   339,   341
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -247,  -247,  -247,   -48,  -247,  -247,    -8,   -51,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,    96,  -247,  -247,  -247,
-    -247,   -42,  -247,  -247,  -247,  -247,  -247,  -247,  -108,  -246,
-    -247,  -247,   194,  -247,  -247,   163,  -247,  -247,  -247,    50,
-    -247,  -247,  -247,  -247,    71,  -247,  -247,  -247,   140,  -247,
-    -247,   303,   -87,  -247,  -247,  -247,  -247,   127,  -247,  -247,
-    -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,  -247,
-    -247,  -247,  -247,  -247,   186,  -247,  -247,  -247,  -247,  -247,
-    -247,   159,  -247,  -247,   107,  -247,  -247,   296,    60,  -193,
-    -247,  -247,  -247,  -247,    11,  -247,  -247,   -53,  -247,  -247,
-    -247,  -106,  -247,  -122,  -247
+    -280,  -280,  -280,   -36,  -280,  -280,    -9,    -7,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,    69,  -280,  -280,  -280,
+    -280,   -45,  -280,  -280,  -280,  -280,  -280,  -280,   114,  -157,
+    -279,  -280,  -280,   171,  -280,  -280,   142,  -280,  -280,  -280,
+      16,  -280,  -280,  -280,  -280,    68,  -280,  -280,  -280,   123,
+    -280,  -280,   278,   -71,  -280,  -280,  -280,  -280,   106,  -280,
+    -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+    -280,  -280,  -280,  -280,  -280,   166,  -280,  -280,  -280,  -280,
+    -280,  -280,   144,  -280,  -280,    87,  -280,  -280,   274,    37,
+    -196,  -280,  -280,  -280,  -280,   -10,  -280,  -280,   -59,  -280,
+    -280,  -280,  -128,  -280,  -135,  -280
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-       0,    58,    59,    60,    61,    62,   137,    93,    94,   311,
-     371,   372,   373,   374,   375,   376,   377,    63,    64,    65,
-      66,    88,   244,   245,    67,   209,   210,   211,   212,    68,
-     180,   128,   256,   333,   334,   335,   393,    69,   286,   344,
-     413,   114,   115,   116,   148,   149,   150,    70,   267,   268,
-     269,   270,    71,   248,   249,   250,    72,   175,   176,   177,
-      73,   107,   108,   109,   110,    74,   193,   194,   195,    75,
-      76,    77,   274,    78,    79,   118,   155,   282,   283,   179,
-     418,   306,   353,   135,   136,    80,    81,   317,   236,    82,
-     164,   165,   221,   217,   218,   219,   154,   138,   302,   229,
-     213,    83,    84,   320,   321,   322,   380,   381,   437,   382,
-     440,   441,   454,   455,   456
+       0,    59,    60,    61,    62,    63,   140,    96,    97,   316,
+     376,   377,   378,   379,   380,   381,   382,    64,    65,    66,
+      67,    89,   247,   248,    68,   212,   213,   214,   215,    69,
+     183,   131,   262,   339,   340,   341,   398,    70,   251,   292,
+     350,   418,   117,   118,   119,   151,   152,   153,    71,   273,
+     274,   275,   276,    72,   254,   255,   256,    73,   178,   179,
+     180,    74,   110,   111,   112,   113,    75,   196,   197,   198,
+      76,    77,    78,   280,    79,    80,   121,   158,   288,   289,
+     182,   423,   311,   358,   138,   139,    81,    82,   322,   239,
+      83,   167,   168,   224,   220,   221,   222,   157,   141,   307,
+     232,   216,    84,    85,   325,   326,   327,   385,   386,   441,
+     387,   444,   445,   458,   459,   460
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1656,241 +1661,247 @@ static const yytype_int16 yydefgoto[] =
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      92,   214,   297,   386,   215,   181,     1,   422,   129,   312,
-     378,   223,   272,   172,   351,     2,    89,   378,    90,   305,
-     252,     3,     4,     5,   299,   246,    85,   233,   387,   327,
-       6,     7,   252,   170,   157,   158,     8,   328,     9,    10,
-     111,   329,    11,   347,    12,   349,    13,    14,   300,    86,
-     234,    15,   273,   280,   225,   159,   226,   355,   238,   247,
-      16,   289,   291,   318,   319,    17,    87,   356,   173,   227,
-     427,   166,    18,   285,    19,   235,   340,   313,   439,   314,
-     117,   330,   271,   239,    20,    21,   240,    22,    23,   444,
-     352,   281,    24,    25,   290,   130,    26,    27,   160,   414,
-     415,   228,   318,   319,   131,    28,   132,   357,   358,   133,
-     139,   134,   388,   156,   331,   167,    91,   168,   152,    29,
-     389,    30,    31,   171,   153,   178,   359,    32,   161,   423,
-     276,   174,   120,   182,    91,   112,   121,    33,   295,   390,
-     220,   113,    34,   276,    35,   222,    36,   360,    37,    38,
-     224,   230,   231,   216,   254,   255,   361,   232,   362,    39,
-      40,    41,    42,    43,    44,    45,   301,   237,    46,   251,
-     433,    47,   278,    48,   363,   285,   241,   242,   315,   345,
-     346,   279,    49,   243,   287,   332,   288,   294,    50,    51,
-      52,   430,    53,    54,   293,   364,   365,   391,   122,    55,
-      56,   392,   162,   316,   298,   169,     2,   304,   163,    -6,
-      57,   307,     3,     4,     5,    91,   449,   450,   451,   452,
-     453,     6,     7,   309,   310,   323,   457,     8,   324,     9,
-      10,   326,   336,    11,   366,    12,   367,    13,    14,   348,
-     416,   337,    15,   338,   368,   442,   342,   123,   369,   370,
-     447,    16,   343,   350,   354,   383,    17,   417,   124,   384,
-     420,   125,   385,    18,   394,    19,   421,   462,   140,   141,
-     142,   143,   424,   426,   431,    20,    21,   183,    22,    23,
-     425,   429,   432,    24,    25,   126,   434,    26,    27,   436,
-     438,   127,   443,   439,   446,   459,    28,   448,   460,   144,
-     419,   145,    95,   146,   461,   303,   184,    96,   253,   147,
-      29,   277,    30,    31,    97,   292,   119,   339,    32,   325,
-     296,   275,   257,   284,   308,   185,   151,   428,    33,   186,
-     341,   379,   458,    34,   445,    35,     0,    36,     0,    37,
-      38,   449,   450,   451,   452,   453,     0,     0,     0,     0,
-      39,    40,    41,    42,    43,    44,    45,     0,     0,    46,
-       0,     0,    47,     0,    48,     0,     0,   258,   259,   260,
-     261,    98,     0,    49,     0,     0,     0,     0,     0,    50,
-      51,    52,     0,    53,    54,     0,     0,     2,     0,     0,
-      55,    56,     0,     3,     4,     5,     0,     0,     0,     0,
-      -6,    57,     6,     7,     0,    99,   100,   187,     8,     0,
-       9,    10,     0,     0,    11,     0,    12,   435,    13,    14,
-       0,     0,     0,    15,   101,     0,   262,     0,     0,   102,
-       0,     0,    16,     0,     0,     0,     0,    17,     0,     0,
-     188,   189,   190,   191,    18,     0,    19,     0,   192,     0,
-       0,     0,     0,     0,     0,     0,    20,    21,     0,    22,
-      23,   103,     0,     0,    24,    25,     0,     0,    26,    27,
-       0,     0,   263,     0,     0,     0,     0,    28,     0,     0,
-       0,     0,     0,     0,     0,   104,   105,   106,     0,     0,
-       0,    29,   264,    30,    31,     0,     0,   265,   266,    32,
-       0,     0,     0,     0,     0,     0,     0,     0,   395,    33,
-       0,     0,     0,     0,    34,     0,    35,   396,    36,     0,
-      37,    38,     0,     0,     0,     0,   397,     0,     0,     0,
-       0,    39,    40,    41,    42,    43,    44,    45,     0,     0,
-      46,     0,     0,    47,     0,    48,   398,     0,     0,   399,
-       0,     0,     0,     0,    49,   400,     0,     0,     0,     0,
-      50,    51,    52,     0,    53,    54,   196,     0,   197,   198,
-       0,    55,    56,     0,     0,   199,     0,     0,   200,     0,
-     401,     0,    57,     0,   402,   403,     0,     0,   404,   405,
-     406,     0,   407,   408,   409,     0,   410,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   201,     0,     0,
+      95,    92,   302,   184,   218,   391,   175,   304,   132,   356,
+     383,     1,   427,   317,   114,   295,   353,   236,   443,   310,
+       2,   278,   160,   161,   226,   286,     3,     4,     5,   448,
+     392,   305,    86,   173,   252,     6,     7,   230,    87,   258,
+     237,     8,     9,   162,    10,    11,   217,    93,    12,    94,
+      13,   258,    14,    15,   228,   333,   229,    16,    88,   186,
+     120,   176,   279,   334,   287,   238,    17,   335,   253,   231,
+     432,    18,   419,   420,   383,   421,    90,   133,    19,   346,
+      20,   134,   318,   249,   319,   357,    91,   163,   142,   187,
+      21,    22,   135,    23,    24,   323,   324,   277,    25,    26,
+     136,   137,    27,    28,   159,   123,   155,   336,   188,   124,
+     115,    29,   189,   156,   174,   393,   116,   164,   223,   181,
+     323,   324,   185,   394,   177,    30,    91,    31,    32,   225,
+     233,   169,   282,    33,   428,   241,   351,   352,   300,   354,
+     337,   227,   395,    34,   240,   282,   234,    91,    35,   306,
+      36,   235,    37,   219,    38,    39,   250,   257,   260,   261,
+     242,   284,   285,   243,   291,    40,    41,    42,    43,    44,
+      45,    46,   125,   293,    47,   294,   170,    48,   171,    49,
+     298,   303,   299,   320,   309,   312,   314,   328,    50,   315,
+     190,   165,   329,   435,    51,    52,    53,   166,    54,    55,
+     396,   332,   342,   343,   397,    56,    57,   344,   321,   348,
+     349,   338,     2,   355,   359,    -6,    58,   388,     3,     4,
+       5,   126,   389,   191,   192,   193,   194,     6,     7,   390,
+     399,   195,   127,     8,     9,   128,    10,    11,   422,   425,
+      12,   426,    13,   330,    14,    15,   446,   429,   430,    16,
+     434,   451,   431,   244,   245,   436,   437,   440,    17,   129,
+     246,   438,   443,    18,   450,   130,   172,   442,   466,   463,
+      19,   452,    20,   447,   464,   465,    91,   143,   144,   145,
+     146,   308,    21,    22,   263,    23,    24,   296,   259,   345,
+      25,    26,   122,   283,    27,    28,   453,   454,   455,   456,
+     457,   297,   301,    29,   281,   154,   461,   313,   147,    98,
+     148,   290,   149,   347,    99,   384,   449,    30,   150,    31,
+      32,   100,   331,   462,     0,    33,   433,     0,     0,     0,
+     264,   265,   266,   267,     0,    34,     0,     0,     0,     0,
+      35,     0,    36,     0,    37,     0,    38,    39,     0,   424,
+     453,   454,   455,   456,   457,     0,     0,    40,    41,    42,
+      43,    44,    45,    46,     0,     0,    47,     0,     0,    48,
+       0,    49,     0,     0,     0,     0,     0,     0,     0,   101,
+      50,     0,     0,     0,     0,     0,    51,    52,    53,   268,
+      54,    55,     0,     0,     2,     0,   360,    56,    57,     0,
+       3,     4,     5,     0,     0,     0,   361,    -6,    58,     6,
+       7,     0,     0,   102,   103,     8,     9,     0,    10,    11,
+       0,   439,    12,     0,    13,     0,    14,    15,     0,     0,
+       0,    16,   104,     0,     0,   269,     0,   105,     0,     0,
+      17,     0,     0,     0,     0,    18,     0,   362,   363,     0,
+       0,     0,    19,     0,    20,   270,     0,     0,     0,     0,
+     271,   272,     0,     0,    21,    22,   364,    23,    24,   106,
+       0,     0,    25,    26,     0,     0,    27,    28,     0,     0,
+       0,     0,     0,     0,     0,    29,     0,   365,     0,     0,
+       0,     0,     0,   107,   108,   109,   366,     0,   367,    30,
+       0,    31,    32,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,   368,     0,     0,    34,     0,     0,
+       0,     0,    35,     0,    36,     0,    37,     0,    38,    39,
+       0,     0,     0,     0,     0,   369,   370,     0,     0,    40,
+      41,    42,    43,    44,    45,    46,     0,     0,    47,     0,
+       0,    48,     0,    49,     0,     0,     0,   400,     0,     0,
+       0,     0,    50,     0,     0,     0,   401,     0,    51,    52,
+      53,     0,    54,    55,   371,   402,   372,     0,     0,    56,
+      57,     0,     0,     0,   373,     0,     0,     0,   374,   375,
+      58,     0,     0,     0,   199,   403,   200,   201,   404,     0,
+       0,     0,     0,   202,   405,     0,   203,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   411,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   406,
+       0,     0,     0,   407,   408,     0,   204,   409,   410,   411,
+       0,   412,   413,   414,     0,   415,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   202,
-       0,   203,     0,     0,     0,     0,     0,   204,     0,   205,
-       0,   412,     0,   206,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   207,   208
+       0,     0,     0,     0,     0,   416,     0,     0,   205,     0,
+     206,     0,     0,     0,     0,     0,   207,     0,   208,     0,
+       0,     0,   209,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     417,     0,     0,     0,     0,     0,   210,   211
 };
 
 static const yytype_int16 yycheck[] =
 {
-       8,    52,   195,     4,    68,    47,     1,    68,    16,     5,
-     160,    59,    22,    47,    69,    10,    74,   160,    76,   212,
-     107,    16,    17,    18,    44,   146,   204,    38,    29,    33,
-      25,    26,   119,    41,     7,     8,    31,    41,    33,    34,
-      11,    45,    37,   289,    39,   291,    41,    42,    68,    68,
-      61,    46,    62,    30,    62,    28,    64,     9,    32,   180,
-      55,   169,   170,   206,   207,    60,    68,    19,   102,    36,
-     220,    30,    67,    72,    69,    86,   269,    73,   209,    75,
-     174,    85,   130,    57,    79,    80,    60,    82,    83,   220,
-     145,    68,    87,    88,    93,   174,    91,    92,    71,   345,
-     346,    68,   206,   207,   174,   100,   174,    59,    60,   174,
-      68,   174,   113,    68,   118,    74,   174,    76,   174,   114,
-     121,   116,   117,    68,   174,   174,    78,   122,   101,   190,
-     138,   165,    23,   174,   174,   106,    27,   132,   180,   140,
-      68,   112,   137,   151,   139,     0,   141,    99,   143,   144,
-     204,    68,   174,   217,    68,    36,   108,   174,   110,   154,
-     155,   156,   157,   158,   159,   160,   186,   219,   163,   174,
-     416,   166,    68,   168,   126,    72,   150,   151,   174,   287,
-     288,   174,   177,   157,    30,   189,    30,   216,   183,   184,
-     185,   384,   187,   188,    68,   147,   148,   198,    89,   194,
-     195,   202,   175,   199,   174,   164,    10,    68,   181,   204,
-     205,    68,    16,    17,    18,   174,   210,   211,   212,   213,
-     214,    25,    26,    68,   204,    68,   220,    31,   174,    33,
-      34,   174,   174,    37,   186,    39,   188,    41,    42,   290,
-     348,   174,    46,    68,   196,   438,    68,   138,   200,   201,
-     443,    55,    68,   174,    40,   204,    60,    30,   149,   216,
-      68,   152,   174,    67,   215,    69,    68,   460,    63,    64,
-      65,    66,   174,   204,    68,    79,    80,     6,    82,    83,
-     216,   219,    56,    87,    88,   176,   218,    91,    92,   208,
-     216,   182,   216,   209,   204,   204,   100,   219,   216,    94,
-     351,    96,     8,    98,   204,   209,    35,    13,   114,   104,
-     114,   148,   116,   117,    20,   175,    13,   267,   122,   248,
-     193,   135,     3,   164,   217,    54,    30,   380,   132,    58,
-     270,   320,   454,   137,   440,   139,    -1,   141,    -1,   143,
-     144,   210,   211,   212,   213,   214,    -1,    -1,    -1,    -1,
-     154,   155,   156,   157,   158,   159,   160,    -1,    -1,   163,
-      -1,    -1,   166,    -1,   168,    -1,    -1,    48,    49,    50,
-      51,    77,    -1,   177,    -1,    -1,    -1,    -1,    -1,   183,
-     184,   185,    -1,   187,   188,    -1,    -1,    10,    -1,    -1,
-     194,   195,    -1,    16,    17,    18,    -1,    -1,    -1,    -1,
-     204,   205,    25,    26,    -1,   111,   112,   136,    31,    -1,
-      33,    34,    -1,    -1,    37,    -1,    39,   425,    41,    42,
-      -1,    -1,    -1,    46,   130,    -1,   107,    -1,    -1,   135,
-      -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    -1,    -1,
-     169,   170,   171,   172,    67,    -1,    69,    -1,   177,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,    82,
-      83,   167,    -1,    -1,    87,    88,    -1,    -1,    91,    92,
-      -1,    -1,   153,    -1,    -1,    -1,    -1,   100,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   191,   192,   193,    -1,    -1,
-      -1,   114,   173,   116,   117,    -1,    -1,   178,   179,   122,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,   132,
-      -1,    -1,    -1,    -1,   137,    -1,   139,    52,   141,    -1,
-     143,   144,    -1,    -1,    -1,    -1,    61,    -1,    -1,    -1,
-      -1,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-     163,    -1,    -1,   166,    -1,   168,    81,    -1,    -1,    84,
-      -1,    -1,    -1,    -1,   177,    90,    -1,    -1,    -1,    -1,
-     183,   184,   185,    -1,   187,   188,    12,    -1,    14,    15,
-      -1,   194,   195,    -1,    -1,    21,    -1,    -1,    24,    -1,
-     115,    -1,   205,    -1,   119,   120,    -1,    -1,   123,   124,
-     125,    -1,   127,   128,   129,    -1,   131,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,
+       9,     8,   198,    48,    69,     4,    48,    45,    17,    70,
+     161,     1,    69,     5,    11,   172,   295,    39,   210,   215,
+      10,    22,     7,     8,    60,    30,    16,    17,    18,   221,
+      29,    69,   205,    42,   147,    25,    26,    37,    69,   110,
+      62,    31,    32,    28,    34,    35,    53,    75,    38,    77,
+      40,   122,    42,    43,    63,    34,    65,    47,    69,     6,
+     175,   103,    63,    42,    69,    87,    56,    46,   181,    69,
+     221,    61,   351,   352,   161,   354,   165,   175,    68,   275,
+      70,   175,    74,    90,    76,   146,   175,    72,    69,    36,
+      80,    81,   175,    83,    84,   207,   208,   133,    88,    89,
+     175,   175,    92,    93,    69,    23,   175,    86,    55,    27,
+     107,   101,    59,   175,    69,   114,   113,   102,    69,   175,
+     207,   208,   175,   122,   166,   115,   175,   117,   118,     0,
+      69,    30,   141,   123,   191,    33,   293,   294,   183,   296,
+     119,   205,   141,   133,   220,   154,   175,   175,   138,   187,
+     140,   175,   142,   218,   144,   145,    94,   175,    69,    37,
+      58,    69,   175,    61,    73,   155,   156,   157,   158,   159,
+     160,   161,    90,    30,   164,    30,    75,   167,    77,   169,
+      69,   175,   217,   175,    69,    69,    69,    69,   178,   205,
+     137,   176,   175,   389,   184,   185,   186,   182,   188,   189,
+     199,   175,   175,   175,   203,   195,   196,    69,   200,    69,
+      69,   190,    10,   175,    41,   205,   206,   205,    16,    17,
+      18,   139,   217,   170,   171,   172,   173,    25,    26,   175,
+     216,   178,   150,    31,    32,   153,    34,    35,    30,    69,
+      38,    69,    40,   250,    42,    43,   442,   175,   217,    47,
+     220,   447,   205,   151,   152,    69,    57,   209,    56,   177,
+     158,   219,   210,    61,   205,   183,   165,   217,   464,   205,
+      68,   220,    70,   217,   217,   205,   175,    64,    65,    66,
+      67,   212,    80,    81,     3,    83,    84,   173,   117,   273,
+      88,    89,    14,   151,    92,    93,   211,   212,   213,   214,
+     215,   178,   196,   101,   138,    31,   221,   220,    95,     8,
+      97,   167,    99,   276,    13,   325,   444,   115,   105,   117,
+     118,    20,   254,   458,    -1,   123,   385,    -1,    -1,    -1,
+      49,    50,    51,    52,    -1,   133,    -1,    -1,    -1,    -1,
+     138,    -1,   140,    -1,   142,    -1,   144,   145,    -1,   356,
+     211,   212,   213,   214,   215,    -1,    -1,   155,   156,   157,
+     158,   159,   160,   161,    -1,    -1,   164,    -1,    -1,   167,
+      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+     178,    -1,    -1,    -1,    -1,    -1,   184,   185,   186,   108,
+     188,   189,    -1,    -1,    10,    -1,     9,   195,   196,    -1,
+      16,    17,    18,    -1,    -1,    -1,    19,   205,   206,    25,
+      26,    -1,    -1,   112,   113,    31,    32,    -1,    34,    35,
+      -1,   430,    38,    -1,    40,    -1,    42,    43,    -1,    -1,
+      -1,    47,   131,    -1,    -1,   154,    -1,   136,    -1,    -1,
+      56,    -1,    -1,    -1,    -1,    61,    -1,    60,    61,    -1,
+      -1,    -1,    68,    -1,    70,   174,    -1,    -1,    -1,    -1,
+     179,   180,    -1,    -1,    80,    81,    79,    83,    84,   168,
+      -1,    -1,    88,    89,    -1,    -1,    92,    93,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   101,    -1,   100,    -1,    -1,
+      -1,    -1,    -1,   192,   193,   194,   109,    -1,   111,   115,
+      -1,   117,   118,    -1,    -1,    -1,    -1,   123,    -1,    -1,
+      -1,    -1,    -1,    -1,   127,    -1,    -1,   133,    -1,    -1,
+      -1,    -1,   138,    -1,   140,    -1,   142,    -1,   144,   145,
+      -1,    -1,    -1,    -1,    -1,   148,   149,    -1,    -1,   155,
+     156,   157,   158,   159,   160,   161,    -1,    -1,   164,    -1,
+      -1,   167,    -1,   169,    -1,    -1,    -1,    44,    -1,    -1,
+      -1,    -1,   178,    -1,    -1,    -1,    53,    -1,   184,   185,
+     186,    -1,   188,   189,   187,    62,   189,    -1,    -1,   195,
+     196,    -1,    -1,    -1,   197,    -1,    -1,    -1,   201,   202,
+     206,    -1,    -1,    -1,    12,    82,    14,    15,    85,    -1,
+      -1,    -1,    -1,    21,    91,    -1,    24,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
+      -1,    -1,    -1,   120,   121,    -1,    54,   124,   125,   126,
+      -1,   128,   129,   130,    -1,   132,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   161,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,
-      -1,    97,    -1,    -1,    -1,    -1,    -1,   103,    -1,   105,
-      -1,   196,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   162,    -1,    -1,    96,    -1,
+      98,    -1,    -1,    -1,    -1,    -1,   104,    -1,   106,    -1,
+      -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134
+     197,    -1,    -1,    -1,    -1,    -1,   134,   135
 };
 
 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
    state STATE-NUM.  */
 static const yytype_int16 yystos[] =
 {
-       0,     1,    10,    16,    17,    18,    25,    26,    31,    33,
-      34,    37,    39,    41,    42,    46,    55,    60,    67,    69,
-      79,    80,    82,    83,    87,    88,    91,    92,   100,   114,
-     116,   117,   122,   132,   137,   139,   141,   143,   144,   154,
-     155,   156,   157,   158,   159,   160,   163,   166,   168,   177,
-     183,   184,   185,   187,   188,   194,   195,   205,   222,   223,
-     224,   225,   226,   238,   239,   240,   241,   245,   250,   258,
-     268,   273,   277,   281,   286,   290,   291,   292,   294,   295,
-     306,   307,   310,   322,   323,   204,    68,    68,   242,    74,
-      76,   174,   227,   228,   229,     8,    13,    20,    77,   111,
-     112,   130,   135,   167,   191,   192,   193,   282,   283,   284,
-     285,    11,   106,   112,   262,   263,   264,   174,   296,   282,
-      23,    27,    89,   138,   149,   152,   176,   182,   252,   227,
-     174,   174,   174,   174,   174,   304,   305,   227,   318,    68,
-      63,    64,    65,    66,    94,    96,    98,   104,   265,   266,
-     267,   318,   174,   174,   317,   297,    68,     7,     8,    28,
-      71,   101,   175,   181,   311,   312,    30,    74,    76,   164,
-     227,    68,    47,   102,   165,   278,   279,   280,   174,   300,
-     251,   252,   174,     6,    35,    54,    58,   136,   169,   170,
-     171,   172,   177,   287,   288,   289,    12,    14,    15,    21,
-      24,    53,    95,    97,   103,   105,   109,   133,   134,   246,
-     247,   248,   249,   321,   228,    68,   217,   314,   315,   316,
-      68,   313,     0,   224,   204,   227,   227,    36,    68,   320,
-      68,   174,   174,    38,    61,    86,   309,   219,    32,    57,
-      60,   150,   151,   157,   243,   244,   146,   180,   274,   275,
-     276,   174,   283,   263,    68,    36,   253,     3,    48,    49,
-      50,    51,   107,   153,   173,   178,   179,   269,   270,   271,
-     272,   224,    22,    62,   293,   305,   227,   266,    68,   174,
-      30,    68,   298,   299,   312,    72,   259,    30,    30,   259,
-      93,   259,   279,    68,   216,   252,   288,   320,   174,    44,
-      68,   186,   319,   247,    68,   320,   302,    68,   315,    68,
-     204,   230,     5,    73,    75,   174,   199,   308,   206,   207,
-     324,   325,   326,    68,   174,   275,   174,    33,    41,    45,
-      85,   118,   189,   254,   255,   256,   174,   174,    68,   270,
-     320,   319,    68,    68,   260,   259,   259,   260,   228,   260,
-     174,    69,   145,   303,    40,     9,    19,    59,    60,    78,
-      99,   108,   110,   126,   147,   148,   186,   188,   196,   200,
-     201,   231,   232,   233,   234,   235,   236,   237,   160,   325,
-     327,   328,   330,   204,   216,   174,     4,    29,   113,   121,
-     140,   198,   202,   257,   215,    43,    52,    61,    81,    84,
-      90,   115,   119,   120,   123,   124,   125,   127,   128,   129,
-     131,   161,   196,   261,   260,   260,   259,    30,   301,   228,
-      68,    68,    68,   190,   174,   216,   204,   220,   328,   219,
-     320,    68,    56,   260,   218,   227,   208,   329,   216,   209,
-     331,   332,   320,   216,   220,   332,   204,   320,   219,   210,
-     211,   212,   213,   214,   333,   334,   335,   220,   334,   204,
-     216,   204,   320
+       0,     1,    10,    16,    17,    18,    25,    26,    31,    32,
+      34,    35,    38,    40,    42,    43,    47,    56,    61,    68,
+      70,    80,    81,    83,    84,    88,    89,    92,    93,   101,
+     115,   117,   118,   123,   133,   138,   140,   142,   144,   145,
+     155,   156,   157,   158,   159,   160,   161,   164,   167,   169,
+     178,   184,   185,   186,   188,   189,   195,   196,   206,   223,
+     224,   225,   226,   227,   239,   240,   241,   242,   246,   251,
+     259,   270,   275,   279,   283,   288,   292,   293,   294,   296,
+     297,   308,   309,   312,   324,   325,   205,    69,    69,   243,
+     165,   175,   229,    75,    77,   228,   229,   230,     8,    13,
+      20,    78,   112,   113,   131,   136,   168,   192,   193,   194,
+     284,   285,   286,   287,    11,   107,   113,   264,   265,   266,
+     175,   298,   284,    23,    27,    90,   139,   150,   153,   177,
+     183,   253,   228,   175,   175,   175,   175,   175,   306,   307,
+     228,   320,    69,    64,    65,    66,    67,    95,    97,    99,
+     105,   267,   268,   269,   320,   175,   175,   319,   299,    69,
+       7,     8,    28,    72,   102,   176,   182,   313,   314,    30,
+      75,    77,   165,   228,    69,    48,   103,   166,   280,   281,
+     282,   175,   302,   252,   253,   175,     6,    36,    55,    59,
+     137,   170,   171,   172,   173,   178,   289,   290,   291,    12,
+      14,    15,    21,    24,    54,    96,    98,   104,   106,   110,
+     134,   135,   247,   248,   249,   250,   323,   229,    69,   218,
+     316,   317,   318,    69,   315,     0,   225,   205,   228,   228,
+      37,    69,   322,    69,   175,   175,    39,    62,    87,   311,
+     220,    33,    58,    61,   151,   152,   158,   244,   245,   229,
+      94,   260,   147,   181,   276,   277,   278,   175,   285,   265,
+      69,    37,   254,     3,    49,    50,    51,    52,   108,   154,
+     174,   179,   180,   271,   272,   273,   274,   225,    22,    63,
+     295,   307,   228,   268,    69,   175,    30,    69,   300,   301,
+     314,    73,   261,    30,    30,   261,   260,   281,    69,   217,
+     253,   290,   322,   175,    45,    69,   187,   321,   248,    69,
+     322,   304,    69,   317,    69,   205,   231,     5,    74,    76,
+     175,   200,   310,   207,   208,   326,   327,   328,    69,   175,
+     229,   277,   175,    34,    42,    46,    86,   119,   190,   255,
+     256,   257,   175,   175,    69,   272,   322,   321,    69,    69,
+     262,   261,   261,   262,   261,   175,    70,   146,   305,    41,
+       9,    19,    60,    61,    79,   100,   109,   111,   127,   148,
+     149,   187,   189,   197,   201,   202,   232,   233,   234,   235,
+     236,   237,   238,   161,   327,   329,   330,   332,   205,   217,
+     175,     4,    29,   114,   122,   141,   199,   203,   258,   216,
+      44,    53,    62,    82,    85,    91,   116,   120,   121,   124,
+     125,   126,   128,   129,   130,   132,   162,   197,   263,   262,
+     262,   262,    30,   303,   229,    69,    69,    69,   191,   175,
+     217,   205,   221,   330,   220,   322,    69,    57,   219,   228,
+     209,   331,   217,   210,   333,   334,   322,   217,   221,   334,
+     205,   322,   220,   211,   212,   213,   214,   215,   335,   336,
+     337,   221,   336,   205,   217,   205,   322
 };
 
 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_int16 yyr1[] =
 {
-       0,   221,   222,   223,   223,   223,   224,   224,   224,   224,
-     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
-     224,   225,   226,   226,   226,   226,   226,   227,   227,   228,
-     229,   229,   230,   230,   231,   231,   231,   232,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
-     235,   235,   235,   235,   235,   236,   237,   238,   239,   239,
-     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   242,   242,   243,   243,   244,   244,   244,
-     244,   244,   245,   246,   246,   247,   247,   247,   247,   248,
-     248,   248,   248,   248,   248,   248,   248,   248,   249,   249,
-     250,   250,   250,   251,   251,   252,   252,   252,   252,   252,
-     252,   252,   252,   253,   253,   254,   254,   254,   254,   255,
-     255,   256,   256,   257,   257,   257,   257,   257,   257,   257,
-     258,   258,   258,   258,   258,   258,   258,   258,   259,   259,
-     260,   260,   260,   261,   261,   261,   261,   261,   261,   261,
-     261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     262,   262,   263,   264,   264,   264,   265,   265,   266,   267,
-     267,   267,   267,   267,   267,   267,   267,   268,   269,   269,
-     270,   270,   270,   270,   270,   271,   271,   271,   272,   272,
-     272,   272,   273,   274,   274,   275,   276,   276,   277,   278,
-     278,   279,   280,   280,   280,   281,   281,   282,   282,   283,
-     283,   284,   284,   284,   284,   284,   284,   285,   285,   285,
-     285,   285,   285,   286,   287,   287,   288,   289,   289,   289,
-     289,   289,   289,   289,   289,   289,   289,   290,   290,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   291,   291,   291,   292,   292,   293,   293,
-     293,   294,   295,   295,   295,   296,   296,   296,   297,   297,
-     298,   299,   299,   300,   301,   301,   302,   302,   303,   303,
-     304,   304,   305,   306,   306,   307,   307,   308,   308,   308,
-     308,   309,   309,   309,   310,   311,   311,   312,   312,   312,
-     312,   312,   312,   312,   313,   313,   314,   314,   315,   315,
-     316,   317,   317,   318,   318,   319,   319,   319,   320,   320,
-     321,   322,   323,   324,   324,   325,   326,   326,   327,   327,
-     328,   329,   330,   331,   331,   332,   333,   333,   334,   335,
-     335,   335,   335,   335
+       0,   222,   223,   224,   224,   224,   225,   225,   225,   225,
+     225,   225,   225,   225,   225,   225,   225,   225,   225,   225,
+     225,   226,   227,   227,   227,   227,   227,   228,   228,   229,
+     230,   230,   231,   231,   232,   232,   232,   233,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
+     236,   236,   236,   236,   236,   237,   238,   239,   240,   240,
+     241,   241,   241,   241,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   243,   243,   244,   244,   245,   245,   245,
+     245,   245,   246,   247,   247,   248,   248,   248,   248,   249,
+     249,   249,   249,   249,   249,   249,   249,   249,   250,   250,
+     251,   251,   251,   252,   252,   253,   253,   253,   253,   253,
+     253,   253,   253,   254,   254,   255,   255,   255,   255,   256,
+     256,   257,   257,   258,   258,   258,   258,   258,   258,   258,
+     259,   259,   259,   259,   259,   259,   259,   259,   259,   260,
+     260,   261,   261,   262,   262,   262,   263,   263,   263,   263,
+     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
+     263,   263,   263,   264,   264,   265,   266,   266,   266,   267,
+     267,   268,   269,   269,   269,   269,   269,   269,   269,   269,
+     270,   271,   271,   272,   272,   272,   272,   272,   273,   273,
+     273,   274,   274,   274,   274,   275,   276,   276,   277,   278,
+     278,   279,   280,   280,   281,   282,   282,   282,   283,   283,
+     284,   284,   285,   285,   286,   286,   286,   286,   286,   286,
+     287,   287,   287,   287,   287,   287,   288,   289,   289,   290,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     292,   292,   292,   292,   292,   292,   292,   292,   292,   292,
+     292,   292,   292,   292,   292,   292,   293,   293,   293,   294,
+     294,   295,   295,   295,   296,   297,   297,   297,   298,   298,
+     298,   299,   299,   300,   301,   301,   302,   303,   303,   304,
+     304,   305,   305,   306,   306,   307,   308,   308,   309,   309,
+     310,   310,   310,   310,   311,   311,   311,   312,   313,   313,
+     314,   314,   314,   314,   314,   314,   314,   315,   315,   316,
+     316,   317,   317,   318,   319,   319,   320,   320,   321,   321,
+     321,   322,   322,   323,   324,   325,   326,   326,   327,   328,
+     328,   329,   329,   330,   331,   332,   333,   333,   334,   335,
+     335,   336,   337,   337,   337,   337,   337
 };
 
 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
@@ -1909,28 +1920,28 @@ static const yytype_int8 yyr2[] =
        2,     2,     3,     2,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     0,     2,     2,     2,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     2,     4,     6,     4,     5,     5,     4,     0,     2,
-       0,     2,     3,     1,     1,     1,     1,     1,     1,     1,
+       2,     2,     5,     4,     5,     5,     4,     3,     3,     0,
+       2,     0,     2,     0,     2,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     1,     2,     1,     1,     1,     2,     1,     2,     1,
-       1,     1,     1,     1,     1,     1,     1,     3,     2,     1,
-       2,     2,     2,     2,     2,     1,     1,     1,     1,     1,
-       1,     1,     3,     2,     1,     2,     1,     1,     2,     2,
-       1,     2,     1,     1,     1,     2,     2,     2,     1,     1,
+       1,     1,     1,     2,     1,     2,     1,     1,     1,     2,
+       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     2,     1,     2,     2,     2,     2,     2,     1,     1,
+       1,     1,     1,     1,     1,     3,     2,     1,     2,     1,
+       1,     2,     2,     1,     2,     1,     1,     1,     2,     2,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     2,     1,     2,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     1,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     3,     3,     1,     2,     2,     2,     2,
-       2,     3,     2,     1,     1,     1,     1,     1,     1,     1,
-       0,     1,     1,     1,     1,     1,     2,     0,     0,     2,
-       4,     1,     1,     4,     1,     0,     0,     2,     2,     2,
-       2,     1,     1,     3,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     2,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
-       5,     2,     1,     2,     1,     1,     1,     1,     1,     1,
-       2,     5,     1,     3,     2,     3,     1,     1,     2,     1,
-       5,     4,     3,     2,     1,     6,     3,     2,     3,     1,
-       1,     1,     1,     1
+       1,     1,     2,     2,     2,     2,     3,     3,     1,     2,
+       2,     2,     2,     2,     3,     2,     1,     1,     1,     1,
+       1,     1,     1,     0,     1,     1,     1,     1,     1,     2,
+       0,     0,     2,     4,     1,     1,     4,     1,     0,     0,
+       2,     2,     2,     2,     1,     1,     3,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     1,     2,
+       1,     1,     1,     5,     2,     1,     2,     1,     1,     1,
+       1,     1,     1,     2,     5,     1,     3,     2,     3,     1,
+       1,     2,     1,     5,     4,     3,     2,     1,     6,     3,
+       2,     3,     1,     1,     1,     1,     1
 };
 
 
@@ -2394,7 +2405,7 @@ yyreduce:
   switch (yyn)
     {
   case 5: /* command_list: error T_EOC  */
-#line 404 "../../ntpd/ntp_parser.y"
+#line 406 "../../ntpd/ntp_parser.y"
                 {
                        /* I will need to incorporate much more fine grained
                         * error messages. The following should suffice for
@@ -2407,85 +2418,85 @@ yyreduce:
                                ip_ctx->errpos.nline,
                                ip_ctx->errpos.ncol);
                }
-#line 2411 "ntp_parser.c"
+#line 2422 "ntp_parser.c"
     break;
 
   case 21: /* server_command: client_type address option_list  */
-#line 441 "../../ntpd/ntp_parser.y"
+#line 443 "../../ntpd/ntp_parser.y"
                 {
                        peer_node *my_node;
 
                        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 2422 "ntp_parser.c"
+#line 2433 "ntp_parser.c"
     break;
 
   case 28: /* address: address_fam T_String  */
-#line 460 "../../ntpd/ntp_parser.y"
+#line 462 "../../ntpd/ntp_parser.y"
                         { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
-#line 2428 "ntp_parser.c"
+#line 2439 "ntp_parser.c"
     break;
 
   case 29: /* ip_address: T_String  */
-#line 465 "../../ntpd/ntp_parser.y"
+#line 467 "../../ntpd/ntp_parser.y"
                         { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
-#line 2434 "ntp_parser.c"
+#line 2445 "ntp_parser.c"
     break;
 
   case 30: /* address_fam: T_Ipv4_flag  */
-#line 470 "../../ntpd/ntp_parser.y"
+#line 472 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = AF_INET; }
-#line 2440 "ntp_parser.c"
+#line 2451 "ntp_parser.c"
     break;
 
   case 31: /* address_fam: T_Ipv6_flag  */
-#line 472 "../../ntpd/ntp_parser.y"
+#line 474 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = AF_INET6; }
-#line 2446 "ntp_parser.c"
+#line 2457 "ntp_parser.c"
     break;
 
   case 32: /* option_list: %empty  */
-#line 477 "../../ntpd/ntp_parser.y"
+#line 479 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = NULL; }
-#line 2452 "ntp_parser.c"
+#line 2463 "ntp_parser.c"
     break;
 
   case 33: /* option_list: option_list option  */
-#line 479 "../../ntpd/ntp_parser.y"
+#line 481 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2461 "ntp_parser.c"
+#line 2472 "ntp_parser.c"
     break;
 
   case 37: /* option_flag: option_flag_keyword  */
-#line 493 "../../ntpd/ntp_parser.y"
+#line 495 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2467 "ntp_parser.c"
+#line 2478 "ntp_parser.c"
     break;
 
   case 47: /* option_int: option_int_keyword T_Integer  */
-#line 510 "../../ntpd/ntp_parser.y"
+#line 512 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2473 "ntp_parser.c"
+#line 2484 "ntp_parser.c"
     break;
 
   case 48: /* option_int: option_int_keyword T_U_int  */
-#line 512 "../../ntpd/ntp_parser.y"
+#line 514 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2479 "ntp_parser.c"
+#line 2490 "ntp_parser.c"
     break;
 
   case 55: /* option_str: option_str_keyword T_String  */
-#line 526 "../../ntpd/ntp_parser.y"
+#line 528 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2485 "ntp_parser.c"
+#line 2496 "ntp_parser.c"
     break;
 
   case 57: /* unpeer_command: unpeer_keyword address  */
-#line 540 "../../ntpd/ntp_parser.y"
+#line 542 "../../ntpd/ntp_parser.y"
                 {
                        unpeer_node *my_node;
 
@@ -2493,85 +2504,85 @@ yyreduce:
                        if (my_node)
                                APPEND_G_FIFO(cfgt.unpeers, my_node);
                }
-#line 2497 "ntp_parser.c"
+#line 2508 "ntp_parser.c"
     break;
 
   case 60: /* other_mode_command: T_Broadcastclient  */
-#line 561 "../../ntpd/ntp_parser.y"
+#line 563 "../../ntpd/ntp_parser.y"
                         { cfgt.broadcastclient = 1; }
-#line 2503 "ntp_parser.c"
+#line 2514 "ntp_parser.c"
     break;
 
   case 61: /* other_mode_command: T_Manycastserver address_list  */
-#line 563 "../../ntpd/ntp_parser.y"
+#line 565 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
-#line 2509 "ntp_parser.c"
+#line 2520 "ntp_parser.c"
     break;
 
   case 62: /* other_mode_command: T_Multicastclient address_list  */
-#line 565 "../../ntpd/ntp_parser.y"
+#line 567 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
-#line 2515 "ntp_parser.c"
+#line 2526 "ntp_parser.c"
     break;
 
   case 63: /* other_mode_command: T_Mdnstries T_Integer  */
-#line 567 "../../ntpd/ntp_parser.y"
+#line 569 "../../ntpd/ntp_parser.y"
                         { cfgt.mdnstries = (yyvsp[0].Integer); }
-#line 2521 "ntp_parser.c"
+#line 2532 "ntp_parser.c"
     break;
 
   case 64: /* authentication_command: T_Automax T_Integer  */
-#line 578 "../../ntpd/ntp_parser.y"
+#line 580 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *atrv;
 
                        atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
                        APPEND_G_FIFO(cfgt.vars, atrv);
                }
-#line 2532 "ntp_parser.c"
+#line 2543 "ntp_parser.c"
     break;
 
   case 65: /* authentication_command: T_ControlKey T_Integer  */
-#line 585 "../../ntpd/ntp_parser.y"
+#line 587 "../../ntpd/ntp_parser.y"
                         { cfgt.auth.control_key = (yyvsp[0].Integer); }
-#line 2538 "ntp_parser.c"
+#line 2549 "ntp_parser.c"
     break;
 
   case 66: /* authentication_command: T_Crypto crypto_command_list  */
-#line 587 "../../ntpd/ntp_parser.y"
+#line 589 "../../ntpd/ntp_parser.y"
                 {
                        cfgt.auth.cryptosw++;
                        CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
                }
-#line 2547 "ntp_parser.c"
+#line 2558 "ntp_parser.c"
     break;
 
   case 67: /* authentication_command: T_Keys T_String  */
-#line 592 "../../ntpd/ntp_parser.y"
+#line 594 "../../ntpd/ntp_parser.y"
                         { cfgt.auth.keys = (yyvsp[0].String); }
-#line 2553 "ntp_parser.c"
+#line 2564 "ntp_parser.c"
     break;
 
   case 68: /* authentication_command: T_Keysdir T_String  */
-#line 594 "../../ntpd/ntp_parser.y"
+#line 596 "../../ntpd/ntp_parser.y"
                         { cfgt.auth.keysdir = (yyvsp[0].String); }
-#line 2559 "ntp_parser.c"
+#line 2570 "ntp_parser.c"
     break;
 
   case 69: /* authentication_command: T_Requestkey T_Integer  */
-#line 596 "../../ntpd/ntp_parser.y"
+#line 598 "../../ntpd/ntp_parser.y"
                         { cfgt.auth.request_key = (yyvsp[0].Integer); }
-#line 2565 "ntp_parser.c"
+#line 2576 "ntp_parser.c"
     break;
 
   case 70: /* authentication_command: T_Revoke T_Integer  */
-#line 598 "../../ntpd/ntp_parser.y"
+#line 600 "../../ntpd/ntp_parser.y"
                         { cfgt.auth.revoke = (yyvsp[0].Integer); }
-#line 2571 "ntp_parser.c"
+#line 2582 "ntp_parser.c"
     break;
 
   case 71: /* authentication_command: T_Trustedkey integer_list_range  */
-#line 600 "../../ntpd/ntp_parser.y"
+#line 602 "../../ntpd/ntp_parser.y"
                 {
                        /* [Bug 948] leaves it open if appending or
                         * replacing the trusted key list is the right
@@ -2581,38 +2592,38 @@ 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 2585 "ntp_parser.c"
+#line 2596 "ntp_parser.c"
     break;
 
   case 72: /* authentication_command: T_NtpSignDsocket T_String  */
-#line 610 "../../ntpd/ntp_parser.y"
+#line 612 "../../ntpd/ntp_parser.y"
                         { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
-#line 2591 "ntp_parser.c"
+#line 2602 "ntp_parser.c"
     break;
 
   case 73: /* crypto_command_list: %empty  */
-#line 615 "../../ntpd/ntp_parser.y"
+#line 617 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = NULL; }
-#line 2597 "ntp_parser.c"
+#line 2608 "ntp_parser.c"
     break;
 
   case 74: /* crypto_command_list: crypto_command_list crypto_command  */
-#line 617 "../../ntpd/ntp_parser.y"
+#line 619 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2606 "ntp_parser.c"
+#line 2617 "ntp_parser.c"
     break;
 
   case 75: /* crypto_command: crypto_str_keyword T_String  */
-#line 625 "../../ntpd/ntp_parser.y"
+#line 627 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 2612 "ntp_parser.c"
+#line 2623 "ntp_parser.c"
     break;
 
   case 76: /* crypto_command: T_Revoke T_Integer  */
-#line 627 "../../ntpd/ntp_parser.y"
+#line 629 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val) = NULL;
                        cfgt.auth.revoke = (yyvsp[0].Integer);
@@ -2621,65 +2632,65 @@ yyreduce:
                                "please use 'revoke %d' instead.",
                                cfgt.auth.revoke, cfgt.auth.revoke);
                }
-#line 2625 "ntp_parser.c"
+#line 2636 "ntp_parser.c"
     break;
 
   case 82: /* orphan_mode_command: T_Tos tos_option_list  */
-#line 652 "../../ntpd/ntp_parser.y"
+#line 654 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
-#line 2631 "ntp_parser.c"
+#line 2642 "ntp_parser.c"
     break;
 
   case 83: /* tos_option_list: tos_option_list tos_option  */
-#line 657 "../../ntpd/ntp_parser.y"
+#line 659 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2640 "ntp_parser.c"
+#line 2651 "ntp_parser.c"
     break;
 
   case 84: /* tos_option_list: tos_option  */
-#line 662 "../../ntpd/ntp_parser.y"
+#line 664 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2649 "ntp_parser.c"
+#line 2660 "ntp_parser.c"
     break;
 
   case 85: /* tos_option: tos_option_int_keyword T_Integer  */
-#line 670 "../../ntpd/ntp_parser.y"
+#line 672 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
-#line 2655 "ntp_parser.c"
+#line 2666 "ntp_parser.c"
     break;
 
   case 86: /* tos_option: tos_option_dbl_keyword number  */
-#line 672 "../../ntpd/ntp_parser.y"
+#line 674 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 2661 "ntp_parser.c"
+#line 2672 "ntp_parser.c"
     break;
 
   case 87: /* tos_option: T_Cohort boolean  */
-#line 674 "../../ntpd/ntp_parser.y"
+#line 676 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
-#line 2667 "ntp_parser.c"
+#line 2678 "ntp_parser.c"
     break;
 
   case 88: /* tos_option: basedate  */
-#line 676 "../../ntpd/ntp_parser.y"
+#line 678 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival(T_Basedate, (yyvsp[0].Integer)); }
-#line 2673 "ntp_parser.c"
+#line 2684 "ntp_parser.c"
     break;
 
   case 100: /* monitoring_command: T_Statistics stats_list  */
-#line 703 "../../ntpd/ntp_parser.y"
+#line 705 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
-#line 2679 "ntp_parser.c"
+#line 2690 "ntp_parser.c"
     break;
 
   case 101: /* monitoring_command: T_Statsdir T_String  */
-#line 705 "../../ntpd/ntp_parser.y"
+#line 707 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                cfgt.stats_dir = (yyvsp[0].String);
@@ -2688,55 +2699,55 @@ yyreduce:
                                yyerror("statsdir remote configuration ignored");
                        }
                }
-#line 2692 "ntp_parser.c"
+#line 2703 "ntp_parser.c"
     break;
 
   case 102: /* monitoring_command: T_Filegen stat filegen_option_list  */
-#line 714 "../../ntpd/ntp_parser.y"
+#line 716 "../../ntpd/ntp_parser.y"
                 {
                        filegen_node *fgn;
 
                        fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.filegen_opts, fgn);
                }
-#line 2703 "ntp_parser.c"
+#line 2714 "ntp_parser.c"
     break;
 
   case 103: /* stats_list: stats_list stat  */
-#line 724 "../../ntpd/ntp_parser.y"
+#line 726 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 2712 "ntp_parser.c"
+#line 2723 "ntp_parser.c"
     break;
 
   case 104: /* stats_list: stat  */
-#line 729 "../../ntpd/ntp_parser.y"
+#line 731 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 2721 "ntp_parser.c"
+#line 2732 "ntp_parser.c"
     break;
 
   case 113: /* filegen_option_list: %empty  */
-#line 748 "../../ntpd/ntp_parser.y"
+#line 750 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = NULL; }
-#line 2727 "ntp_parser.c"
+#line 2738 "ntp_parser.c"
     break;
 
   case 114: /* filegen_option_list: filegen_option_list filegen_option  */
-#line 750 "../../ntpd/ntp_parser.y"
+#line 752 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2736 "ntp_parser.c"
+#line 2747 "ntp_parser.c"
     break;
 
   case 115: /* filegen_option: T_File T_String  */
-#line 758 "../../ntpd/ntp_parser.y"
+#line 760 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
@@ -2746,11 +2757,11 @@ yyreduce:
                                yyerror("filegen file remote config ignored");
                        }
                }
-#line 2750 "ntp_parser.c"
+#line 2761 "ntp_parser.c"
     break;
 
   case 116: /* filegen_option: T_Type filegen_type  */
-#line 768 "../../ntpd/ntp_parser.y"
+#line 770 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
@@ -2759,11 +2770,11 @@ yyreduce:
                                yyerror("filegen type remote config ignored");
                        }
                }
-#line 2763 "ntp_parser.c"
+#line 2774 "ntp_parser.c"
     break;
 
   case 117: /* filegen_option: link_nolink  */
-#line 777 "../../ntpd/ntp_parser.y"
+#line 779 "../../ntpd/ntp_parser.y"
                 {
                        const char *err;
 
@@ -2778,69 +2789,59 @@ yyreduce:
                                yyerror(err);
                        }
                }
-#line 2782 "ntp_parser.c"
+#line 2793 "ntp_parser.c"
     break;
 
   case 118: /* filegen_option: enable_disable  */
-#line 792 "../../ntpd/ntp_parser.y"
+#line 794 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 2788 "ntp_parser.c"
+#line 2799 "ntp_parser.c"
     break;
 
   case 130: /* access_control_command: T_Discard discard_option_list  */
-#line 822 "../../ntpd/ntp_parser.y"
+#line 824 "../../ntpd/ntp_parser.y"
                 {
                        CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
                }
-#line 2796 "ntp_parser.c"
+#line 2807 "ntp_parser.c"
     break;
 
   case 131: /* access_control_command: T_Mru mru_option_list  */
-#line 826 "../../ntpd/ntp_parser.y"
+#line 828 "../../ntpd/ntp_parser.y"
                 {
                        CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
                }
-#line 2804 "ntp_parser.c"
-    break;
-
-  case 132: /* access_control_command: T_Restrict address res_ippeerlimit ac_flag_list  */
-#line 830 "../../ntpd/ntp_parser.y"
-                {
-                       restrict_node *rn;
-
-                       rn = create_restrict_node((yyvsp[-2].Address_node), NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
-                                                 lex_current()->curpos.nline);
-                       APPEND_G_FIFO(cfgt.restrict_opts, rn);
-               }
-#line 2816 "ntp_parser.c"
+#line 2815 "ntp_parser.c"
     break;
 
-  case 133: /* access_control_command: T_Restrict address T_Mask ip_address res_ippeerlimit ac_flag_list  */
-#line 838 "../../ntpd/ntp_parser.y"
+  case 132: /* access_control_command: T_Restrict address restrict_mask res_ippeerlimit ac_flag_list  */
+#line 832 "../../ntpd/ntp_parser.y"
                 {
                        restrict_node *rn;
 
-                       rn = create_restrict_node((yyvsp[-4].Address_node), (yyvsp[-2].Address_node), (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
-                                                 lex_current()->curpos.nline);
+                       rn = create_restrict_node((yyvsp[-3].Address_node), (yyvsp[-2].Address_node), (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), FALSE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
 #line 2828 "ntp_parser.c"
     break;
 
-  case 134: /* access_control_command: T_Restrict T_Default res_ippeerlimit ac_flag_list  */
-#line 846 "../../ntpd/ntp_parser.y"
+  case 133: /* access_control_command: T_Restrict T_Default res_ippeerlimit ac_flag_list  */
+#line 841 "../../ntpd/ntp_parser.y"
                 {
                        restrict_node *rn;
 
-                       rn = create_restrict_node(NULL, NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
-                                                 lex_current()->curpos.nline);
+                       rn = create_restrict_node(NULL, NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), FALSE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2840 "ntp_parser.c"
+#line 2841 "ntp_parser.c"
     break;
 
-  case 135: /* access_control_command: T_Restrict T_Ipv4_flag T_Default res_ippeerlimit ac_flag_list  */
-#line 854 "../../ntpd/ntp_parser.y"
+  case 134: /* access_control_command: T_Restrict T_Ipv4_flag T_Default res_ippeerlimit ac_flag_list  */
+#line 850 "../../ntpd/ntp_parser.y"
                 {
                        restrict_node *rn;
 
@@ -2851,15 +2852,16 @@ yyreduce:
                                create_address_node(
                                        estrdup("0.0.0.0"),
                                        AF_INET),
-                               (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
-                               lex_current()->curpos.nline);
+                               (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), FALSE,
+                               lex_current()->curpos.nline,
+                               lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2859 "ntp_parser.c"
+#line 2861 "ntp_parser.c"
     break;
 
-  case 136: /* access_control_command: T_Restrict T_Ipv6_flag T_Default res_ippeerlimit ac_flag_list  */
-#line 869 "../../ntpd/ntp_parser.y"
+  case 135: /* access_control_command: T_Restrict T_Ipv6_flag T_Default res_ippeerlimit ac_flag_list  */
+#line 866 "../../ntpd/ntp_parser.y"
                 {
                        restrict_node *rn;
 
@@ -2870,34 +2872,79 @@ yyreduce:
                                create_address_node(
                                        estrdup("::"),
                                        AF_INET6),
-                               (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo),
-                               lex_current()->curpos.nline);
+                               (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), FALSE,
+                               lex_current()->curpos.nline,
+                               lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2878 "ntp_parser.c"
+#line 2881 "ntp_parser.c"
     break;
 
-  case 137: /* access_control_command: T_Restrict T_Source res_ippeerlimit ac_flag_list  */
-#line 884 "../../ntpd/ntp_parser.y"
+  case 136: /* access_control_command: T_Restrict T_Source res_ippeerlimit ac_flag_list  */
+#line 882 "../../ntpd/ntp_parser.y"
                 {
                        restrict_node * rn;
 
                        APPEND_G_FIFO((yyvsp[0].Attr_val_fifo), create_attr_ival((yyvsp[-2].Integer), 1));
-                       rn = create_restrict_node(
-                               NULL, NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), lex_current()->curpos.nline);
+                       rn = create_restrict_node(NULL, NULL, (yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo), FALSE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
-#line 2891 "ntp_parser.c"
+#line 2895 "ntp_parser.c"
     break;
 
-  case 138: /* res_ippeerlimit: %empty  */
-#line 896 "../../ntpd/ntp_parser.y"
+  case 137: /* access_control_command: T_Delrestrict ip_address restrict_mask  */
+#line 892 "../../ntpd/ntp_parser.y"
+                {
+                       restrict_node * rn;
+
+                       rn = create_restrict_node((yyvsp[-1].Address_node), (yyvsp[0].Address_node), -1, NULL, TRUE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
+                       APPEND_G_FIFO(cfgt.restrict_opts, rn);
+               }
+#line 2908 "ntp_parser.c"
+    break;
+
+  case 138: /* access_control_command: T_Delrestrict T_Source ip_address  */
+#line 901 "../../ntpd/ntp_parser.y"
+                {
+                       restrict_node * rn;
+                       attr_val_fifo * avf;
+
+                       avf = NULL;
+                       APPEND_G_FIFO(avf, create_attr_ival((yyvsp[-1].Integer), 1));
+                       rn = create_restrict_node((yyvsp[0].Address_node), NULL, -1, avf, TRUE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
+                       APPEND_G_FIFO(cfgt.restrict_opts, rn);
+               }
+#line 2924 "ntp_parser.c"
+    break;
+
+  case 139: /* restrict_mask: %empty  */
+#line 916 "../../ntpd/ntp_parser.y"
+                        { (yyval.Address_node) = NULL; }
+#line 2930 "ntp_parser.c"
+    break;
+
+  case 140: /* restrict_mask: T_Mask ip_address  */
+#line 918 "../../ntpd/ntp_parser.y"
+                {
+                       (yyval.Address_node) = (yyvsp[0].Address_node);
+               }
+#line 2938 "ntp_parser.c"
+    break;
+
+  case 141: /* res_ippeerlimit: %empty  */
+#line 925 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = -1; }
-#line 2897 "ntp_parser.c"
+#line 2944 "ntp_parser.c"
     break;
 
-  case 139: /* res_ippeerlimit: T_Ippeerlimit T_Integer  */
-#line 898 "../../ntpd/ntp_parser.y"
+  case 142: /* res_ippeerlimit: T_Ippeerlimit T_Integer  */
+#line 927 "../../ntpd/ntp_parser.y"
                 {
                        if (((yyvsp[0].Integer) < -1) || ((yyvsp[0].Integer) > 100)) {
                                struct FILE_INFO * ip_ctx;
@@ -2907,23 +2954,23 @@ yyreduce:
                                        "Unreasonable ippeerlimit value (%d) in %s line %d, column %d.  Using 0.",
                                        (yyvsp[0].Integer),
                                        ip_ctx->fname,
-                                       ip_ctx->errpos.nline,
-                                       ip_ctx->errpos.ncol);
+                                       ip_ctx->curpos.nline,
+                                       ip_ctx->curpos.ncol);
                                (yyvsp[0].Integer) = 0;
                        }
                        (yyval.Integer) = (yyvsp[0].Integer);
                }
-#line 2917 "ntp_parser.c"
+#line 2964 "ntp_parser.c"
     break;
 
-  case 140: /* ac_flag_list: %empty  */
-#line 917 "../../ntpd/ntp_parser.y"
+  case 143: /* ac_flag_list: %empty  */
+#line 946 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = NULL; }
-#line 2923 "ntp_parser.c"
+#line 2970 "ntp_parser.c"
     break;
 
-  case 141: /* ac_flag_list: ac_flag_list access_control_flag  */
-#line 919 "../../ntpd/ntp_parser.y"
+  case 144: /* ac_flag_list: ac_flag_list access_control_flag  */
+#line 948 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *av;
 
@@ -2931,11 +2978,11 @@ yyreduce:
                        av = create_attr_ival((yyvsp[0].Integer), 1);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), av);
                }
-#line 2935 "ntp_parser.c"
+#line 2982 "ntp_parser.c"
     break;
 
-  case 142: /* ac_flag_list: ac_flag_list T_Serverresponse T_Fuzz  */
-#line 927 "../../ntpd/ntp_parser.y"
+  case 145: /* ac_flag_list: ac_flag_list T_Serverresponse T_Fuzz  */
+#line 956 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *av;
 
@@ -2943,100 +2990,100 @@ yyreduce:
                        av = create_attr_ival(T_ServerresponseFuzz, 1);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), av);
                }
-#line 2947 "ntp_parser.c"
+#line 2994 "ntp_parser.c"
     break;
 
-  case 160: /* discard_option_list: discard_option_list discard_option  */
-#line 958 "../../ntpd/ntp_parser.y"
+  case 163: /* discard_option_list: discard_option_list discard_option  */
+#line 987 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2956 "ntp_parser.c"
+#line 3003 "ntp_parser.c"
     break;
 
-  case 161: /* discard_option_list: discard_option  */
-#line 963 "../../ntpd/ntp_parser.y"
+  case 164: /* discard_option_list: discard_option  */
+#line 992 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2965 "ntp_parser.c"
+#line 3012 "ntp_parser.c"
     break;
 
-  case 162: /* discard_option: discard_option_keyword T_Integer  */
-#line 971 "../../ntpd/ntp_parser.y"
+  case 165: /* discard_option: discard_option_keyword T_Integer  */
+#line 1000 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2971 "ntp_parser.c"
+#line 3018 "ntp_parser.c"
     break;
 
-  case 166: /* mru_option_list: mru_option_list mru_option  */
-#line 982 "../../ntpd/ntp_parser.y"
+  case 169: /* mru_option_list: mru_option_list mru_option  */
+#line 1011 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2980 "ntp_parser.c"
+#line 3027 "ntp_parser.c"
     break;
 
-  case 167: /* mru_option_list: mru_option  */
-#line 987 "../../ntpd/ntp_parser.y"
+  case 170: /* mru_option_list: mru_option  */
+#line 1016 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 2989 "ntp_parser.c"
+#line 3036 "ntp_parser.c"
     break;
 
-  case 168: /* mru_option: mru_option_keyword T_Integer  */
-#line 995 "../../ntpd/ntp_parser.y"
+  case 171: /* mru_option: mru_option_keyword T_Integer  */
+#line 1024 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 2995 "ntp_parser.c"
+#line 3042 "ntp_parser.c"
     break;
 
-  case 177: /* fudge_command: T_Fudge address fudge_factor_list  */
-#line 1015 "../../ntpd/ntp_parser.y"
+  case 180: /* fudge_command: T_Fudge address fudge_factor_list  */
+#line 1044 "../../ntpd/ntp_parser.y"
                 {
                        addr_opts_node *aon;
 
                        aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.fudge, aon);
                }
-#line 3006 "ntp_parser.c"
+#line 3053 "ntp_parser.c"
     break;
 
-  case 178: /* fudge_factor_list: fudge_factor_list fudge_factor  */
-#line 1025 "../../ntpd/ntp_parser.y"
+  case 181: /* fudge_factor_list: fudge_factor_list fudge_factor  */
+#line 1054 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3015 "ntp_parser.c"
+#line 3062 "ntp_parser.c"
     break;
 
-  case 179: /* fudge_factor_list: fudge_factor  */
-#line 1030 "../../ntpd/ntp_parser.y"
+  case 182: /* fudge_factor_list: fudge_factor  */
+#line 1059 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3024 "ntp_parser.c"
+#line 3071 "ntp_parser.c"
     break;
 
-  case 180: /* fudge_factor: fudge_factor_dbl_keyword number  */
-#line 1038 "../../ntpd/ntp_parser.y"
+  case 183: /* fudge_factor: fudge_factor_dbl_keyword number  */
+#line 1067 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 3030 "ntp_parser.c"
+#line 3077 "ntp_parser.c"
     break;
 
-  case 181: /* fudge_factor: fudge_factor_bool_keyword boolean  */
-#line 1040 "../../ntpd/ntp_parser.y"
+  case 184: /* fudge_factor: fudge_factor_bool_keyword boolean  */
+#line 1069 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 3036 "ntp_parser.c"
+#line 3083 "ntp_parser.c"
     break;
 
-  case 182: /* fudge_factor: T_Stratum T_Integer  */
-#line 1042 "../../ntpd/ntp_parser.y"
+  case 185: /* fudge_factor: T_Stratum T_Integer  */
+#line 1071 "../../ntpd/ntp_parser.y"
                 {
                        if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) {
                                (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
@@ -3045,124 +3092,124 @@ yyreduce:
                                yyerror("fudge factor: stratum value not in [0..16], ignored");
                        }
                }
-#line 3049 "ntp_parser.c"
+#line 3096 "ntp_parser.c"
     break;
 
-  case 183: /* fudge_factor: T_Abbrev T_String  */
-#line 1051 "../../ntpd/ntp_parser.y"
+  case 186: /* fudge_factor: T_Abbrev T_String  */
+#line 1080 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 3055 "ntp_parser.c"
+#line 3102 "ntp_parser.c"
     break;
 
-  case 184: /* fudge_factor: T_Refid T_String  */
-#line 1053 "../../ntpd/ntp_parser.y"
+  case 187: /* fudge_factor: T_Refid T_String  */
+#line 1082 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 3061 "ntp_parser.c"
+#line 3108 "ntp_parser.c"
     break;
 
-  case 192: /* device_command: T_Device address device_item_list  */
-#line 1075 "../../ntpd/ntp_parser.y"
+  case 195: /* device_command: T_Device address device_item_list  */
+#line 1104 "../../ntpd/ntp_parser.y"
                 {
                        addr_opts_node *aon;
 
                        aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.device, aon);
                }
-#line 3072 "ntp_parser.c"
+#line 3119 "ntp_parser.c"
     break;
 
-  case 193: /* device_item_list: device_item_list device_item  */
-#line 1085 "../../ntpd/ntp_parser.y"
+  case 196: /* device_item_list: device_item_list device_item  */
+#line 1114 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3081 "ntp_parser.c"
+#line 3128 "ntp_parser.c"
     break;
 
-  case 194: /* device_item_list: device_item  */
-#line 1090 "../../ntpd/ntp_parser.y"
+  case 197: /* device_item_list: device_item  */
+#line 1119 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3090 "ntp_parser.c"
+#line 3137 "ntp_parser.c"
     break;
 
-  case 195: /* device_item: device_item_path_keyword T_String  */
-#line 1098 "../../ntpd/ntp_parser.y"
+  case 198: /* device_item: device_item_path_keyword T_String  */
+#line 1127 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
-#line 3096 "ntp_parser.c"
+#line 3143 "ntp_parser.c"
     break;
 
-  case 198: /* rlimit_command: T_Rlimit rlimit_option_list  */
-#line 1112 "../../ntpd/ntp_parser.y"
+  case 201: /* rlimit_command: T_Rlimit rlimit_option_list  */
+#line 1141 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
-#line 3102 "ntp_parser.c"
+#line 3149 "ntp_parser.c"
     break;
 
-  case 199: /* rlimit_option_list: rlimit_option_list rlimit_option  */
-#line 1117 "../../ntpd/ntp_parser.y"
+  case 202: /* rlimit_option_list: rlimit_option_list rlimit_option  */
+#line 1146 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3111 "ntp_parser.c"
+#line 3158 "ntp_parser.c"
     break;
 
-  case 200: /* rlimit_option_list: rlimit_option  */
-#line 1122 "../../ntpd/ntp_parser.y"
+  case 203: /* rlimit_option_list: rlimit_option  */
+#line 1151 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3120 "ntp_parser.c"
+#line 3167 "ntp_parser.c"
     break;
 
-  case 201: /* rlimit_option: rlimit_option_keyword T_Integer  */
-#line 1130 "../../ntpd/ntp_parser.y"
+  case 204: /* rlimit_option: rlimit_option_keyword T_Integer  */
+#line 1159 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 3126 "ntp_parser.c"
+#line 3173 "ntp_parser.c"
     break;
 
-  case 205: /* system_option_command: T_Enable system_option_list  */
-#line 1146 "../../ntpd/ntp_parser.y"
+  case 208: /* system_option_command: T_Enable system_option_list  */
+#line 1175 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
-#line 3132 "ntp_parser.c"
+#line 3179 "ntp_parser.c"
     break;
 
-  case 206: /* system_option_command: T_Disable system_option_list  */
-#line 1148 "../../ntpd/ntp_parser.y"
+  case 209: /* system_option_command: T_Disable system_option_list  */
+#line 1177 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
-#line 3138 "ntp_parser.c"
+#line 3185 "ntp_parser.c"
     break;
 
-  case 207: /* system_option_list: system_option_list system_option  */
-#line 1153 "../../ntpd/ntp_parser.y"
+  case 210: /* system_option_list: system_option_list system_option  */
+#line 1182 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3147 "ntp_parser.c"
+#line 3194 "ntp_parser.c"
     break;
 
-  case 208: /* system_option_list: system_option  */
-#line 1158 "../../ntpd/ntp_parser.y"
+  case 211: /* system_option_list: system_option  */
+#line 1187 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3156 "ntp_parser.c"
+#line 3203 "ntp_parser.c"
     break;
 
-  case 209: /* system_option: system_option_flag_keyword  */
-#line 1166 "../../ntpd/ntp_parser.y"
+  case 212: /* system_option: system_option_flag_keyword  */
+#line 1195 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
-#line 3162 "ntp_parser.c"
+#line 3209 "ntp_parser.c"
     break;
 
-  case 210: /* system_option: system_option_local_flag_keyword  */
-#line 1168 "../../ntpd/ntp_parser.y"
+  case 213: /* system_option: system_option_local_flag_keyword  */
+#line 1197 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
@@ -3176,74 +3223,74 @@ yyreduce:
                                yyerror(err_str);
                        }
                }
-#line 3180 "ntp_parser.c"
+#line 3227 "ntp_parser.c"
     break;
 
-  case 223: /* tinker_command: T_Tinker tinker_option_list  */
-#line 1207 "../../ntpd/ntp_parser.y"
+  case 226: /* tinker_command: T_Tinker tinker_option_list  */
+#line 1236 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
-#line 3186 "ntp_parser.c"
+#line 3233 "ntp_parser.c"
     break;
 
-  case 224: /* tinker_option_list: tinker_option_list tinker_option  */
-#line 1212 "../../ntpd/ntp_parser.y"
+  case 227: /* tinker_option_list: tinker_option_list tinker_option  */
+#line 1241 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3195 "ntp_parser.c"
+#line 3242 "ntp_parser.c"
     break;
 
-  case 225: /* tinker_option_list: tinker_option  */
-#line 1217 "../../ntpd/ntp_parser.y"
+  case 228: /* tinker_option_list: tinker_option  */
+#line 1246 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3204 "ntp_parser.c"
+#line 3251 "ntp_parser.c"
     break;
 
-  case 226: /* tinker_option: tinker_option_keyword number  */
-#line 1225 "../../ntpd/ntp_parser.y"
+  case 229: /* tinker_option: tinker_option_keyword number  */
+#line 1254 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
-#line 3210 "ntp_parser.c"
+#line 3257 "ntp_parser.c"
     break;
 
-  case 239: /* miscellaneous_command: misc_cmd_dbl_keyword number  */
-#line 1250 "../../ntpd/ntp_parser.y"
+  case 242: /* miscellaneous_command: misc_cmd_dbl_keyword number  */
+#line 1279 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *av;
 
                        av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 3221 "ntp_parser.c"
+#line 3268 "ntp_parser.c"
     break;
 
-  case 240: /* miscellaneous_command: misc_cmd_int_keyword T_Integer  */
-#line 1257 "../../ntpd/ntp_parser.y"
+  case 243: /* miscellaneous_command: misc_cmd_int_keyword T_Integer  */
+#line 1286 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *av;
 
                        av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 3232 "ntp_parser.c"
+#line 3279 "ntp_parser.c"
     break;
 
-  case 241: /* miscellaneous_command: misc_cmd_str_keyword T_String  */
-#line 1264 "../../ntpd/ntp_parser.y"
+  case 244: /* miscellaneous_command: misc_cmd_str_keyword T_String  */
+#line 1293 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *av;
 
                        av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 3243 "ntp_parser.c"
+#line 3290 "ntp_parser.c"
     break;
 
-  case 242: /* miscellaneous_command: misc_cmd_str_lcl_keyword T_String  */
-#line 1271 "../../ntpd/ntp_parser.y"
+  case 245: /* miscellaneous_command: misc_cmd_str_lcl_keyword T_String  */
+#line 1300 "../../ntpd/ntp_parser.y"
                 {
                        char error_text[64];
                        attr_val *av;
@@ -3259,11 +3306,11 @@ yyreduce:
                                yyerror(error_text);
                        }
                }
-#line 3263 "ntp_parser.c"
+#line 3310 "ntp_parser.c"
     break;
 
-  case 243: /* miscellaneous_command: T_Includefile T_String command  */
-#line 1287 "../../ntpd/ntp_parser.y"
+  case 246: /* miscellaneous_command: T_Includefile T_String command  */
+#line 1316 "../../ntpd/ntp_parser.y"
                 {
                        if (!lex_from_file()) {
                                YYFREE((yyvsp[-1].String)); /* avoid leak */
@@ -3282,11 +3329,11 @@ yyreduce:
                        }
                        YYFREE((yyvsp[-1].String)); /* avoid leak */
                }
-#line 3286 "ntp_parser.c"
+#line 3333 "ntp_parser.c"
     break;
 
-  case 244: /* miscellaneous_command: T_Leapfile T_String opt_hash_check  */
-#line 1306 "../../ntpd/ntp_parser.y"
+  case 247: /* miscellaneous_command: T_Leapfile T_String opt_hash_check  */
+#line 1335 "../../ntpd/ntp_parser.y"
                 {
                        attr_val *av;
 
@@ -3294,92 +3341,92 @@ yyreduce:
                        av->flag = (yyvsp[0].Integer);
                        APPEND_G_FIFO(cfgt.vars, av);
                }
-#line 3298 "ntp_parser.c"
+#line 3345 "ntp_parser.c"
     break;
 
-  case 245: /* miscellaneous_command: T_End  */
-#line 1314 "../../ntpd/ntp_parser.y"
+  case 248: /* miscellaneous_command: T_End  */
+#line 1343 "../../ntpd/ntp_parser.y"
                         { lex_flush_stack(); }
-#line 3304 "ntp_parser.c"
+#line 3351 "ntp_parser.c"
     break;
 
-  case 246: /* miscellaneous_command: T_Driftfile drift_parm  */
-#line 1316 "../../ntpd/ntp_parser.y"
+  case 249: /* miscellaneous_command: T_Driftfile drift_parm  */
+#line 1345 "../../ntpd/ntp_parser.y"
                         { /* see drift_parm below for actions */ }
-#line 3310 "ntp_parser.c"
+#line 3357 "ntp_parser.c"
     break;
 
-  case 247: /* miscellaneous_command: T_Logconfig log_config_list  */
-#line 1318 "../../ntpd/ntp_parser.y"
+  case 250: /* miscellaneous_command: T_Logconfig log_config_list  */
+#line 1347 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
-#line 3316 "ntp_parser.c"
+#line 3363 "ntp_parser.c"
     break;
 
-  case 248: /* miscellaneous_command: T_Phone string_list  */
-#line 1320 "../../ntpd/ntp_parser.y"
+  case 251: /* miscellaneous_command: T_Phone string_list  */
+#line 1349 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
-#line 3322 "ntp_parser.c"
+#line 3369 "ntp_parser.c"
     break;
 
-  case 249: /* miscellaneous_command: T_PollSkewList pollskew_list  */
-#line 1322 "../../ntpd/ntp_parser.y"
+  case 252: /* miscellaneous_command: T_PollSkewList pollskew_list  */
+#line 1351 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.pollskewlist, (yyvsp[0].Attr_val_fifo)); }
-#line 3328 "ntp_parser.c"
+#line 3375 "ntp_parser.c"
     break;
 
-  case 250: /* miscellaneous_command: T_Setvar variable_assign  */
-#line 1324 "../../ntpd/ntp_parser.y"
+  case 253: /* miscellaneous_command: T_Setvar variable_assign  */
+#line 1353 "../../ntpd/ntp_parser.y"
                         { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
-#line 3334 "ntp_parser.c"
+#line 3381 "ntp_parser.c"
     break;
 
-  case 251: /* miscellaneous_command: T_Trap ip_address trap_option_list  */
-#line 1326 "../../ntpd/ntp_parser.y"
+  case 254: /* miscellaneous_command: T_Trap ip_address trap_option_list  */
+#line 1355 "../../ntpd/ntp_parser.y"
                 {
                        addr_opts_node *aon;
 
                        aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
                        APPEND_G_FIFO(cfgt.trap, aon);
                }
-#line 3345 "ntp_parser.c"
+#line 3392 "ntp_parser.c"
     break;
 
-  case 252: /* miscellaneous_command: T_Ttl integer_list  */
-#line 1333 "../../ntpd/ntp_parser.y"
+  case 255: /* miscellaneous_command: T_Ttl integer_list  */
+#line 1362 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
-#line 3351 "ntp_parser.c"
+#line 3398 "ntp_parser.c"
     break;
 
-  case 257: /* misc_cmd_int_keyword: T_Leapsmearinterval  */
-#line 1348 "../../ntpd/ntp_parser.y"
+  case 260: /* misc_cmd_int_keyword: T_Leapsmearinterval  */
+#line 1377 "../../ntpd/ntp_parser.y"
                 {
 #ifndef LEAP_SMEAR
                        yyerror("Built without LEAP_SMEAR support.");
 #endif
                }
-#line 3361 "ntp_parser.c"
+#line 3408 "ntp_parser.c"
     break;
 
-  case 258: /* opt_hash_check: T_Ignorehash  */
-#line 1357 "../../ntpd/ntp_parser.y"
+  case 261: /* opt_hash_check: T_Ignorehash  */
+#line 1386 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = FALSE; }
-#line 3367 "ntp_parser.c"
+#line 3414 "ntp_parser.c"
     break;
 
-  case 259: /* opt_hash_check: T_Checkhash  */
-#line 1359 "../../ntpd/ntp_parser.y"
+  case 262: /* opt_hash_check: T_Checkhash  */
+#line 1388 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = TRUE; }
-#line 3373 "ntp_parser.c"
+#line 3420 "ntp_parser.c"
     break;
 
-  case 260: /* opt_hash_check: %empty  */
-#line 1361 "../../ntpd/ntp_parser.y"
+  case 263: /* opt_hash_check: %empty  */
+#line 1390 "../../ntpd/ntp_parser.y"
                         {  (yyval.Integer) = TRUE; }
-#line 3379 "ntp_parser.c"
+#line 3426 "ntp_parser.c"
     break;
 
-  case 265: /* drift_parm: T_String  */
-#line 1376 "../../ntpd/ntp_parser.y"
+  case 268: /* drift_parm: T_String  */
+#line 1405 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                attr_val *av;
@@ -3390,11 +3437,11 @@ yyreduce:
                                yyerror("driftfile remote configuration ignored");
                        }
                }
-#line 3394 "ntp_parser.c"
+#line 3441 "ntp_parser.c"
     break;
 
-  case 266: /* drift_parm: T_String T_Double  */
-#line 1387 "../../ntpd/ntp_parser.y"
+  case 269: /* drift_parm: T_String T_Double  */
+#line 1416 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                attr_val *av;
@@ -3411,11 +3458,11 @@ yyreduce:
                                yyerror("driftfile remote configuration ignored");
                        }
                }
-#line 3415 "ntp_parser.c"
+#line 3462 "ntp_parser.c"
     break;
 
-  case 267: /* drift_parm: %empty  */
-#line 1404 "../../ntpd/ntp_parser.y"
+  case 270: /* drift_parm: %empty  */
+#line 1433 "../../ntpd/ntp_parser.y"
                 {
                        if (lex_from_file()) {
                                attr_val *av;
@@ -3425,23 +3472,23 @@ yyreduce:
                                yyerror("driftfile remote configuration ignored");
                        }
                }
-#line 3429 "ntp_parser.c"
+#line 3476 "ntp_parser.c"
     break;
 
-  case 268: /* pollskew_list: %empty  */
-#line 1417 "../../ntpd/ntp_parser.y"
+  case 271: /* pollskew_list: %empty  */
+#line 1446 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = NULL; }
-#line 3435 "ntp_parser.c"
+#line 3482 "ntp_parser.c"
     break;
 
-  case 269: /* pollskew_list: pollskew_list pollskew_spec  */
-#line 1419 "../../ntpd/ntp_parser.y"
+  case 272: /* pollskew_list: pollskew_list pollskew_spec  */
+#line 1448 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = append_gen_fifo((yyvsp[-1].Attr_val_fifo), (yyvsp[0].Attr_val)); }
-#line 3441 "ntp_parser.c"
+#line 3488 "ntp_parser.c"
     break;
 
-  case 270: /* pollskew_spec: pollskew_cycle T_Integer '|' T_Integer  */
-#line 1424 "../../ntpd/ntp_parser.y"
+  case 273: /* pollskew_spec: pollskew_cycle T_Integer '|' T_Integer  */
+#line 1453 "../../ntpd/ntp_parser.y"
                 {
                        if ((yyvsp[-2].Integer) < 0 || (yyvsp[0].Integer) < 0) {
                                /* bad numbers */
@@ -3464,87 +3511,87 @@ yyreduce:
                        }
                        (yyval.Attr_val) = (yyvsp[-3].Attr_val);
                }
-#line 3468 "ntp_parser.c"
+#line 3515 "ntp_parser.c"
     break;
 
-  case 271: /* pollskew_cycle: T_Integer  */
-#line 1450 "../../ntpd/ntp_parser.y"
+  case 274: /* pollskew_cycle: T_Integer  */
+#line 1479 "../../ntpd/ntp_parser.y"
                 { 
                        (yyval.Attr_val) = ((yyvsp[0].Integer) >= NTP_MINPOLL && (yyvsp[0].Integer) <= NTP_MAXPOLL) 
                                ? create_attr_rval((yyvsp[0].Integer), 0, 0) 
                                : NULL;
                }
-#line 3478 "ntp_parser.c"
+#line 3525 "ntp_parser.c"
     break;
 
-  case 272: /* pollskew_cycle: T_Default  */
-#line 1455 "../../ntpd/ntp_parser.y"
+  case 275: /* pollskew_cycle: T_Default  */
+#line 1484 "../../ntpd/ntp_parser.y"
                           { (yyval.Attr_val) = create_attr_rval(-1, 0, 0); }
-#line 3484 "ntp_parser.c"
+#line 3531 "ntp_parser.c"
     break;
 
-  case 273: /* variable_assign: T_String '=' T_String t_default_or_zero  */
-#line 1461 "../../ntpd/ntp_parser.y"
+  case 276: /* variable_assign: T_String '=' T_String t_default_or_zero  */
+#line 1490 "../../ntpd/ntp_parser.y"
                         { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
-#line 3490 "ntp_parser.c"
+#line 3537 "ntp_parser.c"
     break;
 
-  case 275: /* t_default_or_zero: %empty  */
-#line 1467 "../../ntpd/ntp_parser.y"
+  case 278: /* t_default_or_zero: %empty  */
+#line 1496 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = 0; }
-#line 3496 "ntp_parser.c"
+#line 3543 "ntp_parser.c"
     break;
 
-  case 276: /* trap_option_list: %empty  */
-#line 1472 "../../ntpd/ntp_parser.y"
+  case 279: /* trap_option_list: %empty  */
+#line 1501 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val_fifo) = NULL; }
-#line 3502 "ntp_parser.c"
+#line 3549 "ntp_parser.c"
     break;
 
-  case 277: /* trap_option_list: trap_option_list trap_option  */
-#line 1474 "../../ntpd/ntp_parser.y"
+  case 280: /* trap_option_list: trap_option_list trap_option  */
+#line 1503 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3511 "ntp_parser.c"
+#line 3558 "ntp_parser.c"
     break;
 
-  case 278: /* trap_option: T_Port T_Integer  */
-#line 1482 "../../ntpd/ntp_parser.y"
+  case 281: /* trap_option: T_Port T_Integer  */
+#line 1511 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
-#line 3517 "ntp_parser.c"
+#line 3564 "ntp_parser.c"
     break;
 
-  case 279: /* trap_option: T_Interface ip_address  */
-#line 1484 "../../ntpd/ntp_parser.y"
+  case 282: /* trap_option: T_Interface ip_address  */
+#line 1513 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
                        destroy_address_node((yyvsp[0].Address_node));
                }
-#line 3526 "ntp_parser.c"
+#line 3573 "ntp_parser.c"
     break;
 
-  case 280: /* log_config_list: log_config_list log_config_command  */
-#line 1492 "../../ntpd/ntp_parser.y"
+  case 283: /* log_config_list: log_config_list log_config_command  */
+#line 1521 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3535 "ntp_parser.c"
+#line 3582 "ntp_parser.c"
     break;
 
-  case 281: /* log_config_list: log_config_command  */
-#line 1497 "../../ntpd/ntp_parser.y"
+  case 284: /* log_config_list: log_config_command  */
+#line 1526 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3544 "ntp_parser.c"
+#line 3591 "ntp_parser.c"
     break;
 
-  case 282: /* log_config_command: T_String  */
-#line 1505 "../../ntpd/ntp_parser.y"
+  case 285: /* log_config_command: T_String  */
+#line 1534 "../../ntpd/ntp_parser.y"
                 {
                        char    prefix;
                        char *  type;
@@ -3566,141 +3613,141 @@ yyreduce:
                        (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
                        YYFREE((yyvsp[0].String));
                }
-#line 3570 "ntp_parser.c"
+#line 3617 "ntp_parser.c"
     break;
 
-  case 283: /* interface_command: interface_nic nic_rule_action nic_rule_class  */
-#line 1530 "../../ntpd/ntp_parser.y"
+  case 286: /* interface_command: interface_nic nic_rule_action nic_rule_class  */
+#line 1559 "../../ntpd/ntp_parser.y"
                 {
                        nic_rule_node *nrn;
 
                        nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
                        APPEND_G_FIFO(cfgt.nic_rules, nrn);
                }
-#line 3581 "ntp_parser.c"
+#line 3628 "ntp_parser.c"
     break;
 
-  case 284: /* interface_command: interface_nic nic_rule_action T_String  */
-#line 1537 "../../ntpd/ntp_parser.y"
+  case 287: /* interface_command: interface_nic nic_rule_action T_String  */
+#line 1566 "../../ntpd/ntp_parser.y"
                 {
                        nic_rule_node *nrn;
 
                        nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
                        APPEND_G_FIFO(cfgt.nic_rules, nrn);
                }
-#line 3592 "ntp_parser.c"
+#line 3639 "ntp_parser.c"
     break;
 
-  case 294: /* reset_command: T_Reset counter_set_list  */
-#line 1565 "../../ntpd/ntp_parser.y"
+  case 297: /* reset_command: T_Reset counter_set_list  */
+#line 1594 "../../ntpd/ntp_parser.y"
                         { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
-#line 3598 "ntp_parser.c"
+#line 3645 "ntp_parser.c"
     break;
 
-  case 295: /* counter_set_list: counter_set_list counter_set_keyword  */
-#line 1570 "../../ntpd/ntp_parser.y"
+  case 298: /* counter_set_list: counter_set_list counter_set_keyword  */
+#line 1599 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3607 "ntp_parser.c"
+#line 3654 "ntp_parser.c"
     break;
 
-  case 296: /* counter_set_list: counter_set_keyword  */
-#line 1575 "../../ntpd/ntp_parser.y"
+  case 299: /* counter_set_list: counter_set_keyword  */
+#line 1604 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Int_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3616 "ntp_parser.c"
+#line 3663 "ntp_parser.c"
     break;
 
-  case 304: /* integer_list: integer_list T_Integer  */
-#line 1599 "../../ntpd/ntp_parser.y"
+  case 307: /* integer_list: integer_list T_Integer  */
+#line 1628 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3625 "ntp_parser.c"
+#line 3672 "ntp_parser.c"
     break;
 
-  case 305: /* integer_list: T_Integer  */
-#line 1604 "../../ntpd/ntp_parser.y"
+  case 308: /* integer_list: T_Integer  */
+#line 1633 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
                }
-#line 3634 "ntp_parser.c"
+#line 3681 "ntp_parser.c"
     break;
 
-  case 306: /* integer_list_range: integer_list_range integer_list_range_elt  */
-#line 1612 "../../ntpd/ntp_parser.y"
+  case 309: /* integer_list_range: integer_list_range integer_list_range_elt  */
+#line 1641 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3643 "ntp_parser.c"
+#line 3690 "ntp_parser.c"
     break;
 
-  case 307: /* integer_list_range: integer_list_range_elt  */
-#line 1617 "../../ntpd/ntp_parser.y"
+  case 310: /* integer_list_range: integer_list_range_elt  */
+#line 1646 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
                }
-#line 3652 "ntp_parser.c"
+#line 3699 "ntp_parser.c"
     break;
 
-  case 308: /* integer_list_range_elt: T_Integer  */
-#line 1625 "../../ntpd/ntp_parser.y"
+  case 311: /* integer_list_range_elt: T_Integer  */
+#line 1654 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
-#line 3658 "ntp_parser.c"
+#line 3705 "ntp_parser.c"
     break;
 
-  case 310: /* integer_range: '(' T_Integer T_Ellipsis T_Integer ')'  */
-#line 1631 "../../ntpd/ntp_parser.y"
+  case 313: /* integer_range: '(' T_Integer T_Ellipsis T_Integer ')'  */
+#line 1660 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_rval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
-#line 3664 "ntp_parser.c"
+#line 3711 "ntp_parser.c"
     break;
 
-  case 311: /* string_list: string_list T_String  */
-#line 1636 "../../ntpd/ntp_parser.y"
+  case 314: /* string_list: string_list T_String  */
+#line 1665 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.String_fifo) = (yyvsp[-1].String_fifo);
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
                }
-#line 3673 "ntp_parser.c"
+#line 3720 "ntp_parser.c"
     break;
 
-  case 312: /* string_list: T_String  */
-#line 1641 "../../ntpd/ntp_parser.y"
+  case 315: /* string_list: T_String  */
+#line 1670 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.String_fifo) = NULL;
                        APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
                }
-#line 3682 "ntp_parser.c"
+#line 3729 "ntp_parser.c"
     break;
 
-  case 313: /* address_list: address_list address  */
-#line 1649 "../../ntpd/ntp_parser.y"
+  case 316: /* address_list: address_list address  */
+#line 1678 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
                }
-#line 3691 "ntp_parser.c"
+#line 3738 "ntp_parser.c"
     break;
 
-  case 314: /* address_list: address  */
-#line 1654 "../../ntpd/ntp_parser.y"
+  case 317: /* address_list: address  */
+#line 1683 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Address_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
                }
-#line 3700 "ntp_parser.c"
+#line 3747 "ntp_parser.c"
     break;
 
-  case 315: /* boolean: T_Integer  */
-#line 1662 "../../ntpd/ntp_parser.y"
+  case 318: /* boolean: T_Integer  */
+#line 1691 "../../ntpd/ntp_parser.y"
                 {
                        if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
                                yyerror("Integer value is not boolean (0 or 1). Assuming 1");
@@ -3709,35 +3756,35 @@ yyreduce:
                                (yyval.Integer) = (yyvsp[0].Integer);
                        }
                }
-#line 3713 "ntp_parser.c"
+#line 3760 "ntp_parser.c"
     break;
 
-  case 316: /* boolean: T_True  */
-#line 1670 "../../ntpd/ntp_parser.y"
+  case 319: /* boolean: T_True  */
+#line 1699 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = 1; }
-#line 3719 "ntp_parser.c"
+#line 3766 "ntp_parser.c"
     break;
 
-  case 317: /* boolean: T_False  */
-#line 1671 "../../ntpd/ntp_parser.y"
+  case 320: /* boolean: T_False  */
+#line 1700 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = 0; }
-#line 3725 "ntp_parser.c"
+#line 3772 "ntp_parser.c"
     break;
 
-  case 318: /* number: T_Integer  */
-#line 1675 "../../ntpd/ntp_parser.y"
+  case 321: /* number: T_Integer  */
+#line 1704 "../../ntpd/ntp_parser.y"
                                 { (yyval.Double) = (double)(yyvsp[0].Integer); }
-#line 3731 "ntp_parser.c"
+#line 3778 "ntp_parser.c"
     break;
 
-  case 320: /* basedate: T_Basedate T_String  */
-#line 1681 "../../ntpd/ntp_parser.y"
+  case 323: /* basedate: T_Basedate T_String  */
+#line 1710 "../../ntpd/ntp_parser.y"
                         { (yyval.Integer) = basedate_eval_string((yyvsp[0].String)); YYFREE((yyvsp[0].String)); }
-#line 3737 "ntp_parser.c"
+#line 3784 "ntp_parser.c"
     break;
 
-  case 321: /* simulate_command: sim_conf_start '{' sim_init_statement_list sim_server_list '}'  */
-#line 1689 "../../ntpd/ntp_parser.y"
+  case 324: /* simulate_command: sim_conf_start '{' sim_init_statement_list sim_server_list '}'  */
+#line 1718 "../../ntpd/ntp_parser.y"
                 {
                        sim_node *sn;
 
@@ -3747,125 +3794,125 @@ yyreduce:
                        /* Revert from ; to \n for end-of-command */
                        old_config_style = 1;
                }
-#line 3751 "ntp_parser.c"
+#line 3798 "ntp_parser.c"
     break;
 
-  case 322: /* sim_conf_start: T_Simulate  */
-#line 1706 "../../ntpd/ntp_parser.y"
+  case 325: /* sim_conf_start: T_Simulate  */
+#line 1735 "../../ntpd/ntp_parser.y"
                            { old_config_style = 0; }
-#line 3757 "ntp_parser.c"
+#line 3804 "ntp_parser.c"
     break;
 
-  case 323: /* sim_init_statement_list: sim_init_statement_list sim_init_statement T_EOC  */
-#line 1711 "../../ntpd/ntp_parser.y"
+  case 326: /* sim_init_statement_list: sim_init_statement_list sim_init_statement T_EOC  */
+#line 1740 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3766 "ntp_parser.c"
+#line 3813 "ntp_parser.c"
     break;
 
-  case 324: /* sim_init_statement_list: sim_init_statement T_EOC  */
-#line 1716 "../../ntpd/ntp_parser.y"
+  case 327: /* sim_init_statement_list: sim_init_statement T_EOC  */
+#line 1745 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3775 "ntp_parser.c"
+#line 3822 "ntp_parser.c"
     break;
 
-  case 325: /* sim_init_statement: sim_init_keyword '=' number  */
-#line 1724 "../../ntpd/ntp_parser.y"
+  case 328: /* sim_init_statement: sim_init_keyword '=' number  */
+#line 1753 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
-#line 3781 "ntp_parser.c"
+#line 3828 "ntp_parser.c"
     break;
 
-  case 328: /* sim_server_list: sim_server_list sim_server  */
-#line 1734 "../../ntpd/ntp_parser.y"
+  case 331: /* sim_server_list: sim_server_list sim_server  */
+#line 1763 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
                }
-#line 3790 "ntp_parser.c"
+#line 3837 "ntp_parser.c"
     break;
 
-  case 329: /* sim_server_list: sim_server  */
-#line 1739 "../../ntpd/ntp_parser.y"
+  case 332: /* sim_server_list: sim_server  */
+#line 1768 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Sim_server_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
                }
-#line 3799 "ntp_parser.c"
+#line 3846 "ntp_parser.c"
     break;
 
-  case 330: /* sim_server: sim_server_name '{' sim_server_offset sim_act_list '}'  */
-#line 1747 "../../ntpd/ntp_parser.y"
+  case 333: /* sim_server: sim_server_name '{' sim_server_offset sim_act_list '}'  */
+#line 1776 "../../ntpd/ntp_parser.y"
                         { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
-#line 3805 "ntp_parser.c"
+#line 3852 "ntp_parser.c"
     break;
 
-  case 331: /* sim_server_offset: T_Server_Offset '=' number T_EOC  */
-#line 1752 "../../ntpd/ntp_parser.y"
+  case 334: /* sim_server_offset: T_Server_Offset '=' number T_EOC  */
+#line 1781 "../../ntpd/ntp_parser.y"
                         { (yyval.Double) = (yyvsp[-1].Double); }
-#line 3811 "ntp_parser.c"
+#line 3858 "ntp_parser.c"
     break;
 
-  case 332: /* sim_server_name: T_Server '=' address  */
-#line 1757 "../../ntpd/ntp_parser.y"
+  case 335: /* sim_server_name: T_Server '=' address  */
+#line 1786 "../../ntpd/ntp_parser.y"
                         { (yyval.Address_node) = (yyvsp[0].Address_node); }
-#line 3817 "ntp_parser.c"
+#line 3864 "ntp_parser.c"
     break;
 
-  case 333: /* sim_act_list: sim_act_list sim_act  */
-#line 1762 "../../ntpd/ntp_parser.y"
+  case 336: /* sim_act_list: sim_act_list sim_act  */
+#line 1791 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
                }
-#line 3826 "ntp_parser.c"
+#line 3873 "ntp_parser.c"
     break;
 
-  case 334: /* sim_act_list: sim_act  */
-#line 1767 "../../ntpd/ntp_parser.y"
+  case 337: /* sim_act_list: sim_act  */
+#line 1796 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Sim_script_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
                }
-#line 3835 "ntp_parser.c"
+#line 3882 "ntp_parser.c"
     break;
 
-  case 335: /* sim_act: T_Duration '=' number '{' sim_act_stmt_list '}'  */
-#line 1775 "../../ntpd/ntp_parser.y"
+  case 338: /* sim_act: T_Duration '=' number '{' sim_act_stmt_list '}'  */
+#line 1804 "../../ntpd/ntp_parser.y"
                         { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
-#line 3841 "ntp_parser.c"
+#line 3888 "ntp_parser.c"
     break;
 
-  case 336: /* sim_act_stmt_list: sim_act_stmt_list sim_act_stmt T_EOC  */
-#line 1780 "../../ntpd/ntp_parser.y"
+  case 339: /* sim_act_stmt_list: sim_act_stmt_list sim_act_stmt T_EOC  */
+#line 1809 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3850 "ntp_parser.c"
+#line 3897 "ntp_parser.c"
     break;
 
-  case 337: /* sim_act_stmt_list: sim_act_stmt T_EOC  */
-#line 1785 "../../ntpd/ntp_parser.y"
+  case 340: /* sim_act_stmt_list: sim_act_stmt T_EOC  */
+#line 1814 "../../ntpd/ntp_parser.y"
                 {
                        (yyval.Attr_val_fifo) = NULL;
                        APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
                }
-#line 3859 "ntp_parser.c"
+#line 3906 "ntp_parser.c"
     break;
 
-  case 338: /* sim_act_stmt: sim_act_keyword '=' number  */
-#line 1793 "../../ntpd/ntp_parser.y"
+  case 341: /* sim_act_stmt: sim_act_keyword '=' number  */
+#line 1822 "../../ntpd/ntp_parser.y"
                         { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
-#line 3865 "ntp_parser.c"
+#line 3912 "ntp_parser.c"
     break;
 
 
-#line 3869 "ntp_parser.c"
+#line 3916 "ntp_parser.c"
 
       default: break;
     }
@@ -4058,7 +4105,7 @@ yyreturnlab:
   return yyresult;
 }
 
-#line 1804 "../../ntpd/ntp_parser.y"
+#line 1833 "../../ntpd/ntp_parser.y"
 
 
 void
index 407d5499ea36fe91097e0aa29ee66f508df5e4bd..2f8501a4b1dcad06fedbcc8afb3e9567b3c6d19c 100644 (file)
@@ -82,190 +82,191 @@ extern int yydebug;
     T_Ctl = 283,                   /* T_Ctl  */
     T_Day = 284,                   /* T_Day  */
     T_Default = 285,               /* T_Default  */
-    T_Device = 286,                /* T_Device  */
-    T_Digest = 287,                /* T_Digest  */
-    T_Disable = 288,               /* T_Disable  */
-    T_Discard = 289,               /* T_Discard  */
-    T_Dispersion = 290,            /* T_Dispersion  */
-    T_Double = 291,                /* T_Double  */
-    T_Driftfile = 292,             /* T_Driftfile  */
-    T_Drop = 293,                  /* T_Drop  */
-    T_Dscp = 294,                  /* T_Dscp  */
-    T_Ellipsis = 295,              /* T_Ellipsis  */
-    T_Enable = 296,                /* T_Enable  */
-    T_End = 297,                   /* T_End  */
-    T_Epeer = 298,                 /* T_Epeer  */
-    T_False = 299,                 /* T_False  */
-    T_File = 300,                  /* T_File  */
-    T_Filegen = 301,               /* T_Filegen  */
-    T_Filenum = 302,               /* T_Filenum  */
-    T_Flag1 = 303,                 /* T_Flag1  */
-    T_Flag2 = 304,                 /* T_Flag2  */
-    T_Flag3 = 305,                 /* T_Flag3  */
-    T_Flag4 = 306,                 /* T_Flag4  */
-    T_Flake = 307,                 /* T_Flake  */
-    T_Floor = 308,                 /* T_Floor  */
-    T_Freq = 309,                  /* T_Freq  */
-    T_Fudge = 310,                 /* T_Fudge  */
-    T_Fuzz = 311,                  /* T_Fuzz  */
-    T_Host = 312,                  /* T_Host  */
-    T_Huffpuff = 313,              /* T_Huffpuff  */
-    T_Iburst = 314,                /* T_Iburst  */
-    T_Ident = 315,                 /* T_Ident  */
-    T_Ignore = 316,                /* T_Ignore  */
-    T_Ignorehash = 317,            /* T_Ignorehash  */
-    T_Incalloc = 318,              /* T_Incalloc  */
-    T_Incmem = 319,                /* T_Incmem  */
-    T_Initalloc = 320,             /* T_Initalloc  */
-    T_Initmem = 321,               /* T_Initmem  */
-    T_Includefile = 322,           /* T_Includefile  */
-    T_Integer = 323,               /* T_Integer  */
-    T_Interface = 324,             /* T_Interface  */
-    T_Intrange = 325,              /* T_Intrange  */
-    T_Io = 326,                    /* T_Io  */
-    T_Ippeerlimit = 327,           /* T_Ippeerlimit  */
-    T_Ipv4 = 328,                  /* T_Ipv4  */
-    T_Ipv4_flag = 329,             /* T_Ipv4_flag  */
-    T_Ipv6 = 330,                  /* T_Ipv6  */
-    T_Ipv6_flag = 331,             /* T_Ipv6_flag  */
-    T_Kernel = 332,                /* T_Kernel  */
-    T_Key = 333,                   /* T_Key  */
-    T_Keys = 334,                  /* T_Keys  */
-    T_Keysdir = 335,               /* T_Keysdir  */
-    T_Kod = 336,                   /* T_Kod  */
-    T_Leapfile = 337,              /* T_Leapfile  */
-    T_Leapsmearinterval = 338,     /* T_Leapsmearinterval  */
-    T_Limited = 339,               /* T_Limited  */
-    T_Link = 340,                  /* T_Link  */
-    T_Listen = 341,                /* T_Listen  */
-    T_Logconfig = 342,             /* T_Logconfig  */
-    T_Logfile = 343,               /* T_Logfile  */
-    T_Loopstats = 344,             /* T_Loopstats  */
-    T_Lowpriotrap = 345,           /* T_Lowpriotrap  */
-    T_Manycastclient = 346,        /* T_Manycastclient  */
-    T_Manycastserver = 347,        /* T_Manycastserver  */
-    T_Mask = 348,                  /* T_Mask  */
-    T_Maxage = 349,                /* T_Maxage  */
-    T_Maxclock = 350,              /* T_Maxclock  */
-    T_Maxdepth = 351,              /* T_Maxdepth  */
-    T_Maxdist = 352,               /* T_Maxdist  */
-    T_Maxmem = 353,                /* T_Maxmem  */
-    T_Maxpoll = 354,               /* T_Maxpoll  */
-    T_Mdnstries = 355,             /* T_Mdnstries  */
-    T_Mem = 356,                   /* T_Mem  */
-    T_Memlock = 357,               /* T_Memlock  */
-    T_Minclock = 358,              /* T_Minclock  */
-    T_Mindepth = 359,              /* T_Mindepth  */
-    T_Mindist = 360,               /* T_Mindist  */
-    T_Minimum = 361,               /* T_Minimum  */
-    T_Minjitter = 362,             /* T_Minjitter  */
-    T_Minpoll = 363,               /* T_Minpoll  */
-    T_Minsane = 364,               /* T_Minsane  */
-    T_Mode = 365,                  /* T_Mode  */
-    T_Mode7 = 366,                 /* T_Mode7  */
-    T_Monitor = 367,               /* T_Monitor  */
-    T_Month = 368,                 /* T_Month  */
-    T_Mru = 369,                   /* T_Mru  */
-    T_Mssntp = 370,                /* T_Mssntp  */
-    T_Multicastclient = 371,       /* T_Multicastclient  */
-    T_Nic = 372,                   /* T_Nic  */
-    T_Nolink = 373,                /* T_Nolink  */
-    T_Nomodify = 374,              /* T_Nomodify  */
-    T_Nomrulist = 375,             /* T_Nomrulist  */
-    T_None = 376,                  /* T_None  */
-    T_Nonvolatile = 377,           /* T_Nonvolatile  */
-    T_Noepeer = 378,               /* T_Noepeer  */
-    T_Nopeer = 379,                /* T_Nopeer  */
-    T_Noquery = 380,               /* T_Noquery  */
-    T_Noselect = 381,              /* T_Noselect  */
-    T_Noserve = 382,               /* T_Noserve  */
-    T_Notrap = 383,                /* T_Notrap  */
-    T_Notrust = 384,               /* T_Notrust  */
-    T_Ntp = 385,                   /* T_Ntp  */
-    T_Ntpport = 386,               /* T_Ntpport  */
-    T_NtpSignDsocket = 387,        /* T_NtpSignDsocket  */
-    T_Orphan = 388,                /* T_Orphan  */
-    T_Orphanwait = 389,            /* T_Orphanwait  */
-    T_PCEdigest = 390,             /* T_PCEdigest  */
-    T_Panic = 391,                 /* T_Panic  */
-    T_Peer = 392,                  /* T_Peer  */
-    T_Peerstats = 393,             /* T_Peerstats  */
-    T_Phone = 394,                 /* T_Phone  */
-    T_Pid = 395,                   /* T_Pid  */
-    T_Pidfile = 396,               /* T_Pidfile  */
-    T_Poll = 397,                  /* T_Poll  */
-    T_PollSkewList = 398,          /* T_PollSkewList  */
-    T_Pool = 399,                  /* T_Pool  */
-    T_Port = 400,                  /* T_Port  */
-    T_PpsData = 401,               /* T_PpsData  */
-    T_Preempt = 402,               /* T_Preempt  */
-    T_Prefer = 403,                /* T_Prefer  */
-    T_Protostats = 404,            /* T_Protostats  */
-    T_Pw = 405,                    /* T_Pw  */
-    T_Randfile = 406,              /* T_Randfile  */
-    T_Rawstats = 407,              /* T_Rawstats  */
-    T_Refid = 408,                 /* T_Refid  */
-    T_Requestkey = 409,            /* T_Requestkey  */
-    T_Reset = 410,                 /* T_Reset  */
-    T_Restrict = 411,              /* T_Restrict  */
-    T_Revoke = 412,                /* T_Revoke  */
-    T_Rlimit = 413,                /* T_Rlimit  */
-    T_Saveconfigdir = 414,         /* T_Saveconfigdir  */
-    T_Server = 415,                /* T_Server  */
-    T_Serverresponse = 416,        /* T_Serverresponse  */
-    T_ServerresponseFuzz = 417,    /* T_ServerresponseFuzz  */
-    T_Setvar = 418,                /* T_Setvar  */
-    T_Source = 419,                /* T_Source  */
-    T_Stacksize = 420,             /* T_Stacksize  */
-    T_Statistics = 421,            /* T_Statistics  */
-    T_Stats = 422,                 /* T_Stats  */
-    T_Statsdir = 423,              /* T_Statsdir  */
-    T_Step = 424,                  /* T_Step  */
-    T_Stepback = 425,              /* T_Stepback  */
-    T_Stepfwd = 426,               /* T_Stepfwd  */
-    T_Stepout = 427,               /* T_Stepout  */
-    T_Stratum = 428,               /* T_Stratum  */
-    T_String = 429,                /* T_String  */
-    T_Sys = 430,                   /* T_Sys  */
-    T_Sysstats = 431,              /* T_Sysstats  */
-    T_Tick = 432,                  /* T_Tick  */
-    T_Time1 = 433,                 /* T_Time1  */
-    T_Time2 = 434,                 /* T_Time2  */
-    T_TimeData = 435,              /* T_TimeData  */
-    T_Timer = 436,                 /* T_Timer  */
-    T_Timingstats = 437,           /* T_Timingstats  */
-    T_Tinker = 438,                /* T_Tinker  */
-    T_Tos = 439,                   /* T_Tos  */
-    T_Trap = 440,                  /* T_Trap  */
-    T_True = 441,                  /* T_True  */
-    T_Trustedkey = 442,            /* T_Trustedkey  */
-    T_Ttl = 443,                   /* T_Ttl  */
-    T_Type = 444,                  /* T_Type  */
-    T_U_int = 445,                 /* T_U_int  */
-    T_UEcrypto = 446,              /* T_UEcrypto  */
-    T_UEcryptonak = 447,           /* T_UEcryptonak  */
-    T_UEdigest = 448,              /* T_UEdigest  */
-    T_Unconfig = 449,              /* T_Unconfig  */
-    T_Unpeer = 450,                /* T_Unpeer  */
-    T_Version = 451,               /* T_Version  */
-    T_WanderThreshold = 452,       /* T_WanderThreshold  */
-    T_Week = 453,                  /* T_Week  */
-    T_Wildcard = 454,              /* T_Wildcard  */
-    T_Xleave = 455,                /* T_Xleave  */
-    T_Xmtnonce = 456,              /* T_Xmtnonce  */
-    T_Year = 457,                  /* T_Year  */
-    T_Flag = 458,                  /* T_Flag  */
-    T_EOC = 459,                   /* T_EOC  */
-    T_Simulate = 460,              /* T_Simulate  */
-    T_Beep_Delay = 461,            /* T_Beep_Delay  */
-    T_Sim_Duration = 462,          /* T_Sim_Duration  */
-    T_Server_Offset = 463,         /* T_Server_Offset  */
-    T_Duration = 464,              /* T_Duration  */
-    T_Freq_Offset = 465,           /* T_Freq_Offset  */
-    T_Wander = 466,                /* T_Wander  */
-    T_Jitter = 467,                /* T_Jitter  */
-    T_Prop_Delay = 468,            /* T_Prop_Delay  */
-    T_Proc_Delay = 469             /* T_Proc_Delay  */
+    T_Delrestrict = 286,           /* T_Delrestrict  */
+    T_Device = 287,                /* T_Device  */
+    T_Digest = 288,                /* T_Digest  */
+    T_Disable = 289,               /* T_Disable  */
+    T_Discard = 290,               /* T_Discard  */
+    T_Dispersion = 291,            /* T_Dispersion  */
+    T_Double = 292,                /* T_Double  */
+    T_Driftfile = 293,             /* T_Driftfile  */
+    T_Drop = 294,                  /* T_Drop  */
+    T_Dscp = 295,                  /* T_Dscp  */
+    T_Ellipsis = 296,              /* T_Ellipsis  */
+    T_Enable = 297,                /* T_Enable  */
+    T_End = 298,                   /* T_End  */
+    T_Epeer = 299,                 /* T_Epeer  */
+    T_False = 300,                 /* T_False  */
+    T_File = 301,                  /* T_File  */
+    T_Filegen = 302,               /* T_Filegen  */
+    T_Filenum = 303,               /* T_Filenum  */
+    T_Flag1 = 304,                 /* T_Flag1  */
+    T_Flag2 = 305,                 /* T_Flag2  */
+    T_Flag3 = 306,                 /* T_Flag3  */
+    T_Flag4 = 307,                 /* T_Flag4  */
+    T_Flake = 308,                 /* T_Flake  */
+    T_Floor = 309,                 /* T_Floor  */
+    T_Freq = 310,                  /* T_Freq  */
+    T_Fudge = 311,                 /* T_Fudge  */
+    T_Fuzz = 312,                  /* T_Fuzz  */
+    T_Host = 313,                  /* T_Host  */
+    T_Huffpuff = 314,              /* T_Huffpuff  */
+    T_Iburst = 315,                /* T_Iburst  */
+    T_Ident = 316,                 /* T_Ident  */
+    T_Ignore = 317,                /* T_Ignore  */
+    T_Ignorehash = 318,            /* T_Ignorehash  */
+    T_Incalloc = 319,              /* T_Incalloc  */
+    T_Incmem = 320,                /* T_Incmem  */
+    T_Initalloc = 321,             /* T_Initalloc  */
+    T_Initmem = 322,               /* T_Initmem  */
+    T_Includefile = 323,           /* T_Includefile  */
+    T_Integer = 324,               /* T_Integer  */
+    T_Interface = 325,             /* T_Interface  */
+    T_Intrange = 326,              /* T_Intrange  */
+    T_Io = 327,                    /* T_Io  */
+    T_Ippeerlimit = 328,           /* T_Ippeerlimit  */
+    T_Ipv4 = 329,                  /* T_Ipv4  */
+    T_Ipv4_flag = 330,             /* T_Ipv4_flag  */
+    T_Ipv6 = 331,                  /* T_Ipv6  */
+    T_Ipv6_flag = 332,             /* T_Ipv6_flag  */
+    T_Kernel = 333,                /* T_Kernel  */
+    T_Key = 334,                   /* T_Key  */
+    T_Keys = 335,                  /* T_Keys  */
+    T_Keysdir = 336,               /* T_Keysdir  */
+    T_Kod = 337,                   /* T_Kod  */
+    T_Leapfile = 338,              /* T_Leapfile  */
+    T_Leapsmearinterval = 339,     /* T_Leapsmearinterval  */
+    T_Limited = 340,               /* T_Limited  */
+    T_Link = 341,                  /* T_Link  */
+    T_Listen = 342,                /* T_Listen  */
+    T_Logconfig = 343,             /* T_Logconfig  */
+    T_Logfile = 344,               /* T_Logfile  */
+    T_Loopstats = 345,             /* T_Loopstats  */
+    T_Lowpriotrap = 346,           /* T_Lowpriotrap  */
+    T_Manycastclient = 347,        /* T_Manycastclient  */
+    T_Manycastserver = 348,        /* T_Manycastserver  */
+    T_Mask = 349,                  /* T_Mask  */
+    T_Maxage = 350,                /* T_Maxage  */
+    T_Maxclock = 351,              /* T_Maxclock  */
+    T_Maxdepth = 352,              /* T_Maxdepth  */
+    T_Maxdist = 353,               /* T_Maxdist  */
+    T_Maxmem = 354,                /* T_Maxmem  */
+    T_Maxpoll = 355,               /* T_Maxpoll  */
+    T_Mdnstries = 356,             /* T_Mdnstries  */
+    T_Mem = 357,                   /* T_Mem  */
+    T_Memlock = 358,               /* T_Memlock  */
+    T_Minclock = 359,              /* T_Minclock  */
+    T_Mindepth = 360,              /* T_Mindepth  */
+    T_Mindist = 361,               /* T_Mindist  */
+    T_Minimum = 362,               /* T_Minimum  */
+    T_Minjitter = 363,             /* T_Minjitter  */
+    T_Minpoll = 364,               /* T_Minpoll  */
+    T_Minsane = 365,               /* T_Minsane  */
+    T_Mode = 366,                  /* T_Mode  */
+    T_Mode7 = 367,                 /* T_Mode7  */
+    T_Monitor = 368,               /* T_Monitor  */
+    T_Month = 369,                 /* T_Month  */
+    T_Mru = 370,                   /* T_Mru  */
+    T_Mssntp = 371,                /* T_Mssntp  */
+    T_Multicastclient = 372,       /* T_Multicastclient  */
+    T_Nic = 373,                   /* T_Nic  */
+    T_Nolink = 374,                /* T_Nolink  */
+    T_Nomodify = 375,              /* T_Nomodify  */
+    T_Nomrulist = 376,             /* T_Nomrulist  */
+    T_None = 377,                  /* T_None  */
+    T_Nonvolatile = 378,           /* T_Nonvolatile  */
+    T_Noepeer = 379,               /* T_Noepeer  */
+    T_Nopeer = 380,                /* T_Nopeer  */
+    T_Noquery = 381,               /* T_Noquery  */
+    T_Noselect = 382,              /* T_Noselect  */
+    T_Noserve = 383,               /* T_Noserve  */
+    T_Notrap = 384,                /* T_Notrap  */
+    T_Notrust = 385,               /* T_Notrust  */
+    T_Ntp = 386,                   /* T_Ntp  */
+    T_Ntpport = 387,               /* T_Ntpport  */
+    T_NtpSignDsocket = 388,        /* T_NtpSignDsocket  */
+    T_Orphan = 389,                /* T_Orphan  */
+    T_Orphanwait = 390,            /* T_Orphanwait  */
+    T_PCEdigest = 391,             /* T_PCEdigest  */
+    T_Panic = 392,                 /* T_Panic  */
+    T_Peer = 393,                  /* T_Peer  */
+    T_Peerstats = 394,             /* T_Peerstats  */
+    T_Phone = 395,                 /* T_Phone  */
+    T_Pid = 396,                   /* T_Pid  */
+    T_Pidfile = 397,               /* T_Pidfile  */
+    T_Poll = 398,                  /* T_Poll  */
+    T_PollSkewList = 399,          /* T_PollSkewList  */
+    T_Pool = 400,                  /* T_Pool  */
+    T_Port = 401,                  /* T_Port  */
+    T_PpsData = 402,               /* T_PpsData  */
+    T_Preempt = 403,               /* T_Preempt  */
+    T_Prefer = 404,                /* T_Prefer  */
+    T_Protostats = 405,            /* T_Protostats  */
+    T_Pw = 406,                    /* T_Pw  */
+    T_Randfile = 407,              /* T_Randfile  */
+    T_Rawstats = 408,              /* T_Rawstats  */
+    T_Refid = 409,                 /* T_Refid  */
+    T_Requestkey = 410,            /* T_Requestkey  */
+    T_Reset = 411,                 /* T_Reset  */
+    T_Restrict = 412,              /* T_Restrict  */
+    T_Revoke = 413,                /* T_Revoke  */
+    T_Rlimit = 414,                /* T_Rlimit  */
+    T_Saveconfigdir = 415,         /* T_Saveconfigdir  */
+    T_Server = 416,                /* T_Server  */
+    T_Serverresponse = 417,        /* T_Serverresponse  */
+    T_ServerresponseFuzz = 418,    /* T_ServerresponseFuzz  */
+    T_Setvar = 419,                /* T_Setvar  */
+    T_Source = 420,                /* T_Source  */
+    T_Stacksize = 421,             /* T_Stacksize  */
+    T_Statistics = 422,            /* T_Statistics  */
+    T_Stats = 423,                 /* T_Stats  */
+    T_Statsdir = 424,              /* T_Statsdir  */
+    T_Step = 425,                  /* T_Step  */
+    T_Stepback = 426,              /* T_Stepback  */
+    T_Stepfwd = 427,               /* T_Stepfwd  */
+    T_Stepout = 428,               /* T_Stepout  */
+    T_Stratum = 429,               /* T_Stratum  */
+    T_String = 430,                /* T_String  */
+    T_Sys = 431,                   /* T_Sys  */
+    T_Sysstats = 432,              /* T_Sysstats  */
+    T_Tick = 433,                  /* T_Tick  */
+    T_Time1 = 434,                 /* T_Time1  */
+    T_Time2 = 435,                 /* T_Time2  */
+    T_TimeData = 436,              /* T_TimeData  */
+    T_Timer = 437,                 /* T_Timer  */
+    T_Timingstats = 438,           /* T_Timingstats  */
+    T_Tinker = 439,                /* T_Tinker  */
+    T_Tos = 440,                   /* T_Tos  */
+    T_Trap = 441,                  /* T_Trap  */
+    T_True = 442,                  /* T_True  */
+    T_Trustedkey = 443,            /* T_Trustedkey  */
+    T_Ttl = 444,                   /* T_Ttl  */
+    T_Type = 445,                  /* T_Type  */
+    T_U_int = 446,                 /* T_U_int  */
+    T_UEcrypto = 447,              /* T_UEcrypto  */
+    T_UEcryptonak = 448,           /* T_UEcryptonak  */
+    T_UEdigest = 449,              /* T_UEdigest  */
+    T_Unconfig = 450,              /* T_Unconfig  */
+    T_Unpeer = 451,                /* T_Unpeer  */
+    T_Version = 452,               /* T_Version  */
+    T_WanderThreshold = 453,       /* T_WanderThreshold  */
+    T_Week = 454,                  /* T_Week  */
+    T_Wildcard = 455,              /* T_Wildcard  */
+    T_Xleave = 456,                /* T_Xleave  */
+    T_Xmtnonce = 457,              /* T_Xmtnonce  */
+    T_Year = 458,                  /* T_Year  */
+    T_Flag = 459,                  /* T_Flag  */
+    T_EOC = 460,                   /* T_EOC  */
+    T_Simulate = 461,              /* T_Simulate  */
+    T_Beep_Delay = 462,            /* T_Beep_Delay  */
+    T_Sim_Duration = 463,          /* T_Sim_Duration  */
+    T_Server_Offset = 464,         /* T_Server_Offset  */
+    T_Duration = 465,              /* T_Duration  */
+    T_Freq_Offset = 466,           /* T_Freq_Offset  */
+    T_Wander = 467,                /* T_Wander  */
+    T_Jitter = 468,                /* T_Jitter  */
+    T_Prop_Delay = 469,            /* T_Prop_Delay  */
+    T_Proc_Delay = 470             /* T_Proc_Delay  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -302,190 +303,191 @@ extern int yydebug;
 #define T_Ctl 283
 #define T_Day 284
 #define T_Default 285
-#define T_Device 286
-#define T_Digest 287
-#define T_Disable 288
-#define T_Discard 289
-#define T_Dispersion 290
-#define T_Double 291
-#define T_Driftfile 292
-#define T_Drop 293
-#define T_Dscp 294
-#define T_Ellipsis 295
-#define T_Enable 296
-#define T_End 297
-#define T_Epeer 298
-#define T_False 299
-#define T_File 300
-#define T_Filegen 301
-#define T_Filenum 302
-#define T_Flag1 303
-#define T_Flag2 304
-#define T_Flag3 305
-#define T_Flag4 306
-#define T_Flake 307
-#define T_Floor 308
-#define T_Freq 309
-#define T_Fudge 310
-#define T_Fuzz 311
-#define T_Host 312
-#define T_Huffpuff 313
-#define T_Iburst 314
-#define T_Ident 315
-#define T_Ignore 316
-#define T_Ignorehash 317
-#define T_Incalloc 318
-#define T_Incmem 319
-#define T_Initalloc 320
-#define T_Initmem 321
-#define T_Includefile 322
-#define T_Integer 323
-#define T_Interface 324
-#define T_Intrange 325
-#define T_Io 326
-#define T_Ippeerlimit 327
-#define T_Ipv4 328
-#define T_Ipv4_flag 329
-#define T_Ipv6 330
-#define T_Ipv6_flag 331
-#define T_Kernel 332
-#define T_Key 333
-#define T_Keys 334
-#define T_Keysdir 335
-#define T_Kod 336
-#define T_Leapfile 337
-#define T_Leapsmearinterval 338
-#define T_Limited 339
-#define T_Link 340
-#define T_Listen 341
-#define T_Logconfig 342
-#define T_Logfile 343
-#define T_Loopstats 344
-#define T_Lowpriotrap 345
-#define T_Manycastclient 346
-#define T_Manycastserver 347
-#define T_Mask 348
-#define T_Maxage 349
-#define T_Maxclock 350
-#define T_Maxdepth 351
-#define T_Maxdist 352
-#define T_Maxmem 353
-#define T_Maxpoll 354
-#define T_Mdnstries 355
-#define T_Mem 356
-#define T_Memlock 357
-#define T_Minclock 358
-#define T_Mindepth 359
-#define T_Mindist 360
-#define T_Minimum 361
-#define T_Minjitter 362
-#define T_Minpoll 363
-#define T_Minsane 364
-#define T_Mode 365
-#define T_Mode7 366
-#define T_Monitor 367
-#define T_Month 368
-#define T_Mru 369
-#define T_Mssntp 370
-#define T_Multicastclient 371
-#define T_Nic 372
-#define T_Nolink 373
-#define T_Nomodify 374
-#define T_Nomrulist 375
-#define T_None 376
-#define T_Nonvolatile 377
-#define T_Noepeer 378
-#define T_Nopeer 379
-#define T_Noquery 380
-#define T_Noselect 381
-#define T_Noserve 382
-#define T_Notrap 383
-#define T_Notrust 384
-#define T_Ntp 385
-#define T_Ntpport 386
-#define T_NtpSignDsocket 387
-#define T_Orphan 388
-#define T_Orphanwait 389
-#define T_PCEdigest 390
-#define T_Panic 391
-#define T_Peer 392
-#define T_Peerstats 393
-#define T_Phone 394
-#define T_Pid 395
-#define T_Pidfile 396
-#define T_Poll 397
-#define T_PollSkewList 398
-#define T_Pool 399
-#define T_Port 400
-#define T_PpsData 401
-#define T_Preempt 402
-#define T_Prefer 403
-#define T_Protostats 404
-#define T_Pw 405
-#define T_Randfile 406
-#define T_Rawstats 407
-#define T_Refid 408
-#define T_Requestkey 409
-#define T_Reset 410
-#define T_Restrict 411
-#define T_Revoke 412
-#define T_Rlimit 413
-#define T_Saveconfigdir 414
-#define T_Server 415
-#define T_Serverresponse 416
-#define T_ServerresponseFuzz 417
-#define T_Setvar 418
-#define T_Source 419
-#define T_Stacksize 420
-#define T_Statistics 421
-#define T_Stats 422
-#define T_Statsdir 423
-#define T_Step 424
-#define T_Stepback 425
-#define T_Stepfwd 426
-#define T_Stepout 427
-#define T_Stratum 428
-#define T_String 429
-#define T_Sys 430
-#define T_Sysstats 431
-#define T_Tick 432
-#define T_Time1 433
-#define T_Time2 434
-#define T_TimeData 435
-#define T_Timer 436
-#define T_Timingstats 437
-#define T_Tinker 438
-#define T_Tos 439
-#define T_Trap 440
-#define T_True 441
-#define T_Trustedkey 442
-#define T_Ttl 443
-#define T_Type 444
-#define T_U_int 445
-#define T_UEcrypto 446
-#define T_UEcryptonak 447
-#define T_UEdigest 448
-#define T_Unconfig 449
-#define T_Unpeer 450
-#define T_Version 451
-#define T_WanderThreshold 452
-#define T_Week 453
-#define T_Wildcard 454
-#define T_Xleave 455
-#define T_Xmtnonce 456
-#define T_Year 457
-#define T_Flag 458
-#define T_EOC 459
-#define T_Simulate 460
-#define T_Beep_Delay 461
-#define T_Sim_Duration 462
-#define T_Server_Offset 463
-#define T_Duration 464
-#define T_Freq_Offset 465
-#define T_Wander 466
-#define T_Jitter 467
-#define T_Prop_Delay 468
-#define T_Proc_Delay 469
+#define T_Delrestrict 286
+#define T_Device 287
+#define T_Digest 288
+#define T_Disable 289
+#define T_Discard 290
+#define T_Dispersion 291
+#define T_Double 292
+#define T_Driftfile 293
+#define T_Drop 294
+#define T_Dscp 295
+#define T_Ellipsis 296
+#define T_Enable 297
+#define T_End 298
+#define T_Epeer 299
+#define T_False 300
+#define T_File 301
+#define T_Filegen 302
+#define T_Filenum 303
+#define T_Flag1 304
+#define T_Flag2 305
+#define T_Flag3 306
+#define T_Flag4 307
+#define T_Flake 308
+#define T_Floor 309
+#define T_Freq 310
+#define T_Fudge 311
+#define T_Fuzz 312
+#define T_Host 313
+#define T_Huffpuff 314
+#define T_Iburst 315
+#define T_Ident 316
+#define T_Ignore 317
+#define T_Ignorehash 318
+#define T_Incalloc 319
+#define T_Incmem 320
+#define T_Initalloc 321
+#define T_Initmem 322
+#define T_Includefile 323
+#define T_Integer 324
+#define T_Interface 325
+#define T_Intrange 326
+#define T_Io 327
+#define T_Ippeerlimit 328
+#define T_Ipv4 329
+#define T_Ipv4_flag 330
+#define T_Ipv6 331
+#define T_Ipv6_flag 332
+#define T_Kernel 333
+#define T_Key 334
+#define T_Keys 335
+#define T_Keysdir 336
+#define T_Kod 337
+#define T_Leapfile 338
+#define T_Leapsmearinterval 339
+#define T_Limited 340
+#define T_Link 341
+#define T_Listen 342
+#define T_Logconfig 343
+#define T_Logfile 344
+#define T_Loopstats 345
+#define T_Lowpriotrap 346
+#define T_Manycastclient 347
+#define T_Manycastserver 348
+#define T_Mask 349
+#define T_Maxage 350
+#define T_Maxclock 351
+#define T_Maxdepth 352
+#define T_Maxdist 353
+#define T_Maxmem 354
+#define T_Maxpoll 355
+#define T_Mdnstries 356
+#define T_Mem 357
+#define T_Memlock 358
+#define T_Minclock 359
+#define T_Mindepth 360
+#define T_Mindist 361
+#define T_Minimum 362
+#define T_Minjitter 363
+#define T_Minpoll 364
+#define T_Minsane 365
+#define T_Mode 366
+#define T_Mode7 367
+#define T_Monitor 368
+#define T_Month 369
+#define T_Mru 370
+#define T_Mssntp 371
+#define T_Multicastclient 372
+#define T_Nic 373
+#define T_Nolink 374
+#define T_Nomodify 375
+#define T_Nomrulist 376
+#define T_None 377
+#define T_Nonvolatile 378
+#define T_Noepeer 379
+#define T_Nopeer 380
+#define T_Noquery 381
+#define T_Noselect 382
+#define T_Noserve 383
+#define T_Notrap 384
+#define T_Notrust 385
+#define T_Ntp 386
+#define T_Ntpport 387
+#define T_NtpSignDsocket 388
+#define T_Orphan 389
+#define T_Orphanwait 390
+#define T_PCEdigest 391
+#define T_Panic 392
+#define T_Peer 393
+#define T_Peerstats 394
+#define T_Phone 395
+#define T_Pid 396
+#define T_Pidfile 397
+#define T_Poll 398
+#define T_PollSkewList 399
+#define T_Pool 400
+#define T_Port 401
+#define T_PpsData 402
+#define T_Preempt 403
+#define T_Prefer 404
+#define T_Protostats 405
+#define T_Pw 406
+#define T_Randfile 407
+#define T_Rawstats 408
+#define T_Refid 409
+#define T_Requestkey 410
+#define T_Reset 411
+#define T_Restrict 412
+#define T_Revoke 413
+#define T_Rlimit 414
+#define T_Saveconfigdir 415
+#define T_Server 416
+#define T_Serverresponse 417
+#define T_ServerresponseFuzz 418
+#define T_Setvar 419
+#define T_Source 420
+#define T_Stacksize 421
+#define T_Statistics 422
+#define T_Stats 423
+#define T_Statsdir 424
+#define T_Step 425
+#define T_Stepback 426
+#define T_Stepfwd 427
+#define T_Stepout 428
+#define T_Stratum 429
+#define T_String 430
+#define T_Sys 431
+#define T_Sysstats 432
+#define T_Tick 433
+#define T_Time1 434
+#define T_Time2 435
+#define T_TimeData 436
+#define T_Timer 437
+#define T_Timingstats 438
+#define T_Tinker 439
+#define T_Tos 440
+#define T_Trap 441
+#define T_True 442
+#define T_Trustedkey 443
+#define T_Ttl 444
+#define T_Type 445
+#define T_U_int 446
+#define T_UEcrypto 447
+#define T_UEcryptonak 448
+#define T_UEdigest 449
+#define T_Unconfig 450
+#define T_Unpeer 451
+#define T_Version 452
+#define T_WanderThreshold 453
+#define T_Week 454
+#define T_Wildcard 455
+#define T_Xleave 456
+#define T_Xmtnonce 457
+#define T_Year 458
+#define T_Flag 459
+#define T_EOC 460
+#define T_Simulate 461
+#define T_Beep_Delay 462
+#define T_Sim_Duration 463
+#define T_Server_Offset 464
+#define T_Duration 465
+#define T_Freq_Offset 466
+#define T_Wander 467
+#define T_Jitter 468
+#define T_Prop_Delay 469
+#define T_Proc_Delay 470
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -510,7 +512,7 @@ union YYSTYPE
        script_info *           Sim_script;
        script_info_fifo *      Sim_script_fifo;
 
-#line 514 "ntp_parser.h"
+#line 516 "ntp_parser.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
index 093e8d33204544043e5386463c3d35b922173275..49b55588d54d1ff7f6b70875afeb2effad4d35fd 100644 (file)
@@ -97,6 +97,7 @@
 %token <Integer>       T_Ctl
 %token <Integer>       T_Day
 %token <Integer>       T_Default
+%token <Integer>       T_Delrestrict
 %token <Integer>       T_Device
 %token <Integer>       T_Digest
 %token <Integer>       T_Disable
 %type  <Attr_val>      pollskew_cycle
 %type  <Attr_val>      pollskew_spec
 %type  <Integer>       reset_command
+%type  <Address_node>  restrict_mask
 %type  <Integer>       rlimit_option_keyword
 %type  <Attr_val>      rlimit_option
 %type  <Attr_val_fifo> rlimit_option_list
@@ -826,28 +828,22 @@ access_control_command
                {
                        CONCAT_G_FIFOS(cfgt.mru_opts, $2);
                }
-       |       T_Restrict address res_ippeerlimit ac_flag_list
+       |       T_Restrict address restrict_mask res_ippeerlimit ac_flag_list
                {
                        restrict_node *rn;
 
-                       rn = create_restrict_node($2, NULL, $3, $4,
-                                                 lex_current()->curpos.nline);
-                       APPEND_G_FIFO(cfgt.restrict_opts, rn);
-               }
-       |       T_Restrict address T_Mask ip_address res_ippeerlimit ac_flag_list
-               {
-                       restrict_node *rn;
-
-                       rn = create_restrict_node($2, $4, $5, $6,
-                                                 lex_current()->curpos.nline);
+                       rn = create_restrict_node($2, $3, $4, $5, FALSE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
        |       T_Restrict T_Default res_ippeerlimit ac_flag_list
                {
                        restrict_node *rn;
 
-                       rn = create_restrict_node(NULL, NULL, $3, $4,
-                                                 lex_current()->curpos.nline);
+                       rn = create_restrict_node(NULL, NULL, $3, $4, FALSE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
        |       T_Restrict T_Ipv4_flag T_Default res_ippeerlimit ac_flag_list
@@ -861,8 +857,9 @@ access_control_command
                                create_address_node(
                                        estrdup("0.0.0.0"),
                                        AF_INET),
-                               $4, $5,
-                               lex_current()->curpos.nline);
+                               $4, $5, FALSE,
+                               lex_current()->curpos.nline,
+                               lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
        |       T_Restrict T_Ipv6_flag T_Default res_ippeerlimit ac_flag_list
@@ -876,8 +873,9 @@ access_control_command
                                create_address_node(
                                        estrdup("::"),
                                        AF_INET6),
-                               $4, $5,
-                               lex_current()->curpos.nline);
+                               $4, $5, FALSE,
+                               lex_current()->curpos.nline,
+                               lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
        |       T_Restrict T_Source res_ippeerlimit ac_flag_list
@@ -885,10 +883,41 @@ access_control_command
                        restrict_node * rn;
 
                        APPEND_G_FIFO($4, create_attr_ival($2, 1));
-                       rn = create_restrict_node(
-                               NULL, NULL, $3, $4, lex_current()->curpos.nline);
+                       rn = create_restrict_node(NULL, NULL, $3, $4, FALSE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
+                       APPEND_G_FIFO(cfgt.restrict_opts, rn);
+               }
+       |       T_Delrestrict ip_address restrict_mask
+               {
+                       restrict_node * rn;
+
+                       rn = create_restrict_node($2, $3, -1, NULL, TRUE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
                        APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
+       |       T_Delrestrict T_Source ip_address
+               {
+                       restrict_node * rn;
+                       attr_val_fifo * avf;
+
+                       avf = NULL;
+                       APPEND_G_FIFO(avf, create_attr_ival($2, 1));
+                       rn = create_restrict_node($3, NULL, -1, avf, TRUE,
+                                                 lex_current()->curpos.nline,
+                                                 lex_current()->curpos.ncol);
+                       APPEND_G_FIFO(cfgt.restrict_opts, rn);
+               }
+       ;
+
+restrict_mask
+       :       /* no mask is allowed */
+                       { $$ = NULL; }
+       |       T_Mask ip_address
+               {
+                       $$ = $2;
+               }
        ;
 
 res_ippeerlimit
@@ -904,8 +933,8 @@ res_ippeerlimit
                                        "Unreasonable ippeerlimit value (%d) in %s line %d, column %d.  Using 0.",
                                        $2,
                                        ip_ctx->fname,
-                                       ip_ctx->errpos.nline,
-                                       ip_ctx->errpos.ncol);
+                                       ip_ctx->curpos.nline,
+                                       ip_ctx->curpos.ncol);
                                $2 = 0;
                        }
                        $$ = $2;
index 6b4ad7d545803a8eddf0dc4f16d2d103586bade1..435b02aead655f691bd71205193c17c334963356 100644 (file)
@@ -542,7 +542,7 @@ unpeer(
        )
 {
        mprintf_event(PEVNT_DEMOBIL, peer, "assoc %u", peer->associd);
-       restrict_source(&peer->srcadr, 1, 0);
+       restrict_source(&peer->srcadr, TRUE, 0);
        set_peerdstadr(peer, NULL);
        peer_demobilizations++;
        peer_associations--;
@@ -1008,7 +1008,7 @@ DPRINTF(1, ("newpeer(%s) found no existing and %d other associations\n",
        assoc_hash_count[hash]++;
        LINK_SLIST(peer_list, peer, p_link);
 
-       restrict_source(&peer->srcadr, 0, 0);
+       restrict_source(&peer->srcadr, FALSE, 0);
        mprintf_event(PEVNT_MOBIL, peer, "assoc %d", peer->associd);
        DPRINTF(1, ("newpeer: %s->%s mode %u vers %u poll %u %u flags 0x%x 0x%x ttl %u key %08x\n",
            latoa(peer->dstadr), stoa(&peer->srcadr), peer->hmode,
index 21f3397b8de7f63055d3b1741a4a4a54643796ee..2b5b834623160e1e5376bc0d89212d4fbafd7672 100644 (file)
@@ -4803,9 +4803,7 @@ pool_xmit(
        int                     rc;
        struct interface *      lcladr;
        sockaddr_u *            rmtadr;
-       r4addr                  r4a;
        u_short                 af;
-       u_short                 restrict_mask;
        struct peer *           p;
        l_fp                    xmt_tx;
 
@@ -4859,13 +4857,10 @@ pool_xmit(
                }
                p = findexistingpeer(rmtadr, NULL, NULL, MODE_CLIENT, 0, NULL);
        } while (p != NULL && pool->ai != NULL);
-       if (p != NULL)
+       if (p != NULL) {
                return; /* out of addresses, re-query DNS next poll */
-       restrictions(rmtadr, &r4a);
-       restrict_mask = r4a.rflags;
-       if (RES_FLAGS & restrict_mask)
-               restrict_source(rmtadr, 0,
-                               current_time + POOL_SOLICIT_WINDOW + 1);
+       }
+       restrict_source(rmtadr, FALSE, 1 + POOL_SOLICIT_WINDOW);
        lcladr = findinterface(rmtadr);
        memset(&xpkt, 0, sizeof(xpkt));
        xpkt.li_vn_mode = PKT_LI_VN_MODE(sys_leap, pool->version,
@@ -4879,7 +4874,6 @@ pool_xmit(
        /* Bug 3596: What are the pros/cons of using sys_reftime here? */
        HTONL_FP(&sys_reftime, &xpkt.reftime);
 
-       /* HMS: the following is better done after the ntp_random() calls */
        get_systime(&xmt_tx);
        pool->aorg = xmt_tx;
 
@@ -4898,14 +4892,14 @@ pool_xmit(
                L_CLR(&pool->nonce);
                HTONL_FP(&xmt_tx, &xpkt.xmt);
        }
-       sendpkt(rmtadr, lcladr,
-               sys_ttl[(pool->ttl >= sys_ttlmax) ? sys_ttlmax : pool->ttl],
-               &xpkt, LEN_PKT_NOMAC);
        pool->sent++;
        pool->throttle += (1 << pool->minpoll) - 2;
        DPRINTF(1, ("pool_xmit: at %ld %s->%s pool\n",
                    current_time, latoa(lcladr), stoa(rmtadr)));
        msyslog(LOG_INFO, "Soliciting pool server %s", stoa(rmtadr));
+       sendpkt(rmtadr, lcladr,
+               sys_ttl[(pool->ttl >= sys_ttlmax) ? sys_ttlmax : pool->ttl],
+               &xpkt, LEN_PKT_NOMAC);
 #endif /* WORKER */
 }
 
index e61d014808de0af1a639c06a2723738d550ee0be..89c051b64f0b48e4d7553df76289aabdf5f87157 100644 (file)
@@ -1790,6 +1790,7 @@ do_restrict(
        sockaddr_u              matchaddr;
        sockaddr_u              matchmask;
        int                     bad;
+       int/*BOOL*/             success;
 
        switch(op) {
            case RESTRICT_FLAGS:
@@ -1838,7 +1839,7 @@ do_restrict(
        }
 
        if (bad) {
-               msyslog(LOG_ERR, "do_restrict: bad = %#x", bad);
+               msyslog(LOG_ERR, "%s: bad = 0x%x", __func__, bad);
                req_ack(srcadr, inter, inpkt, INFO_ERR_FMT);
                return;
        }
@@ -1868,8 +1869,16 @@ do_restrict(
                        NSRCADR(&matchaddr) = cr.addr;
                        NSRCADR(&matchmask) = cr.mask;
                }
-               hack_restrict(op, &matchaddr, &matchmask, cr.mflags,
-                             cr.ippeerlimit, cr.flags, 0);
+               success =  hack_restrict(op, &matchaddr, &matchmask,
+                                        cr.ippeerlimit, cr.mflags,
+                                        cr.flags, 0);
+               if (!success) {
+                       DPRINTF(1, ("%s: %s %s mask %s ippeerlimit %hd %s %s failed",
+                                   __func__, resop_str(op),
+                                   stoa(&matchaddr), stoa(&matchmask),
+                                   cr.ippeerlimit, mflags_str(cr.mflags),
+                                   rflags_str(cr.flags)));
+               }
                datap += item_sz;
        }
 
index d45bb0ff04c2462e9d95edc3d8e4530e28ea5ea1..f1df8ccf3079b52aff489ec5fb66ca4276c093e8 100644 (file)
@@ -98,18 +98,26 @@ static      restrict_u *    match_restrict4_addr(u_int32, u_short);
 static restrict_u *    match_restrict6_addr(const struct in6_addr *,
                                             u_short);
 static restrict_u *    match_restrict_entry(const restrict_u *, int);
-static int             res_sorts_before4(restrict_u *, restrict_u *);
-static int             res_sorts_before6(restrict_u *, restrict_u *);
-       void            dump_restricts(void);
+static inline int/*BOOL*/      mflags_sorts_before(u_short, u_short);
+static int/*BOOL*/     res_sorts_before4(restrict_u *, restrict_u *);
+static int/*BOOL*/     res_sorts_before6(restrict_u *, restrict_u *);
+
+typedef int (*res_sort_fn)(restrict_u *, restrict_u *);
+
+
+/* dump_restrict() & dump_restricts() are DEBUG-only */
+#ifdef DEBUG   
+static void            dump_restrict(restrict_u *, int);
+
 
 /*
- * dump_restrict - spit out a restrict_u
+ * dump_restrict - spit out a single restriction entry
  */
 static void
 dump_restrict(
        restrict_u *    res,
        int             is_ipv6
-       )
+)
 {
        char as[INET6_ADDRSTRLEN];
        char ms[INET6_ADDRSTRLEN];
@@ -118,57 +126,47 @@ dump_restrict(
                inet_ntop(AF_INET6, &res->u.v6.addr, as, sizeof as);
                inet_ntop(AF_INET6, &res->u.v6.mask, ms, sizeof ms);
        } else {
-               struct in_addr  sia = { htonl(res->u.v4.addr) };
-               struct in_addr  sim = { htonl(res->u.v4.mask) };
+               struct in_addr  sia, sim;
 
+               sia.s_addr = htonl(res->u.v4.addr);
+               sim.s_addr = htonl(res->u.v4.addr);
                inet_ntop(AF_INET, &sia, as, sizeof as);
                inet_ntop(AF_INET, &sim, ms, sizeof ms);
        }
-       mprintf("restrict node at %p: %s/%s count %d, rflags %08x, mflags %04x, ippeerlimit %d, expire %lu, next %p\n",
-               res, as, ms, res->count, res->rflags, res->mflags,
-               res->ippeerlimit, res->expire, res->link);
-       return;
+       printf("%s/%s: hits %u ippeerlimit %hd mflags %s rflags %s",
+               as, ms, res->count, res->ippeerlimit,
+               mflags_str(res->mflags),
+               rflags_str(res->rflags));
+       if (res->expire > 0) {
+               printf(" expire %u\n", res->expire);
+       } else {
+               printf("\n");
+       }
 }
 
 
 /*
- * dump_restricts - spit out the 'restrict' lines
+ * dump_restricts - spit out the 'restrict' entries
  */
 void
 dump_restricts(void)
 {
        restrict_u *    res;
-       restrict_u *    next;
-
-       mprintf("dump_restrict: restrict_def4: %p\n", &restrict_def4);
-       /* Spit out 'restrict {,-4,-6} default ...' lines, if needed */
-       for (res = &restrict_def4; res != NULL; res = next) {
-               dump_restrict(res, 0);
-               next = res->link;
-       }
-
-       mprintf("dump_restrict: restrict_def6: %p\n", &restrict_def6);
-       for (res = &restrict_def6; res != NULL; res = next) {
-               dump_restrict(res, 1);
-               next = res->link;
-       }
 
        /* Spit out the IPv4 list */
-       mprintf("dump_restrict: restrictlist4: %p\n", &restrictlist4);
-       for (res = restrictlist4; res != NULL; res = next) {
+       printf("dump_restricts: restrictlist4: %p\n", restrictlist4);
+       for (res = restrictlist4; res != NULL; res = res->link) {
                dump_restrict(res, 0);
-               next = res->link;
        }
 
        /* Spit out the IPv6 list */
-       mprintf("dump_restrict: restrictlist6: %p\n", &restrictlist6);
-       for (res = restrictlist6; res != NULL; res = next) {
+       printf("dump_restricts: restrictlist6: %p\n", restrictlist6);
+       for (res = restrictlist6; res != NULL; res = res->link) {
                dump_restrict(res, 1);
-               next = res->link;
        }
-
-       return;
 }
+#endif /* DEBUG - dump_restrict() / dump_restricts() */
+
 
 /*
  * init_restrict - initialize the restriction data structures
@@ -198,11 +196,20 @@ init_restrict(void)
         *
         * An additional wrinkle is we may have multiple entries with
         * the same address and mask but differing match flags (mflags).
-        * At present there is only one, RESM_NTPONLY.  Entries with
-        * RESM_NTPONLY are sorted earlier so they take precedence over
-        * any otherwise similar entry without.  Again, this is the same
-        * behavior as but reversed implementation compared to the docs.
-        * 
+        * We want to never talk to ourself, so RES_IGNORE entries for
+        * each local address are added by ntp_io.c with a host mask and
+        * both RESM_INTERFACE and RESM_NTPONLY set.  We sort those
+        * entries before entries without those flags to achieve this.
+        * The remaining match flag is RESM_SOURCE, used to dynamically
+        * set restrictions for each peer based on the prototype set by
+        * "restrict source" in the configuration.  We want those entries
+        * to be considered only when there is not a static host
+        * restriction for the address in the configuration, to allow
+        * operators to blacklist pool and manycast servers at runtime as
+        * desired using ntpq runtime configuration.  Such static entries
+        * have no RESM_ bits set, so the sort order for mflags is first
+        * RESM_INTERFACE, then entries without RESM_SOURCE, finally the
+        * remaining.
         */
 
        restrict_def4.ippeerlimit = -1;         /* Cleaner if we have C99 */
@@ -398,22 +405,47 @@ match_restrict_entry(
                cb = sizeof(pmatch->u.v4);
        }
 
-       for (res = rlist; res != NULL; res = res->link)
+       for (res = rlist; res != NULL; res = res->link) {
                if (res->mflags == pmatch->mflags &&
-                   !memcmp(&res->u, &pmatch->u, cb))
+                   !memcmp(&res->u, &pmatch->u, cb)) {
                        break;
+               }
+       }
        return res;
 }
 
 
 /*
- * res_sorts_before4 - compare two restrict4 entries
+ * mflags_sorts_before - common mflags sorting code
+ * 
+ * See block comment in init_restrict() above for rationale.
+ */
+static inline int/*BOOL*/
+mflags_sorts_before(
+       u_short m1,
+       u_short m2
+       )
+{
+       if (    (RESM_INTERFACE & m1)
+           && !(RESM_INTERFACE & m2)) {
+               return TRUE;
+       } else if (   !(RESM_SOURCE & m1)
+                  &&  (RESM_SOURCE & m2)) {
+               return TRUE;
+       } else {
+               return FALSE;
+       }
+}
+
+
+/*
+ * res_sorts_before4 - compare IPv4 restriction entries
  *
  * Returns nonzero if r1 sorts before r2.  We sort by descending
- * address, then descending mask, then descending mflags, so sorting
- * before means having a higher value.
+ * address, then descending mask, then an intricate mflags sort
+ * order explained in a block comment near the top of this file.
  */
-static int
+static int/*BOOL*/
 res_sorts_before4(
        restrict_u *r1,
        restrict_u *r2
@@ -421,54 +453,53 @@ res_sorts_before4(
 {
        int r1_before_r2;
 
-       if (r1->u.v4.addr > r2->u.v4.addr)
-               r1_before_r2 = 1;
-       else if (r1->u.v4.addr < r2->u.v4.addr)
-               r1_before_r2 = 0;
-       else if (r1->u.v4.mask > r2->u.v4.mask)
-               r1_before_r2 = 1;
-       else if (r1->u.v4.mask < r2->u.v4.mask)
-               r1_before_r2 = 0;
-       else if (r1->mflags > r2->mflags)
-               r1_before_r2 = 1;
-       else
-               r1_before_r2 = 0;
+       if (r1->u.v4.addr > r2->u.v4.addr) {
+               r1_before_r2 = TRUE;
+       } else if (r1->u.v4.addr < r2->u.v4.addr) {
+               r1_before_r2 = FALSE;
+       } else if (r1->u.v4.mask > r2->u.v4.mask) {
+               r1_before_r2 = TRUE;
+       } else if (r1->u.v4.mask < r2->u.v4.mask) {
+               r1_before_r2 = FALSE;
+       } else {
+               r1_before_r2 = mflags_sorts_before(r1->mflags, r2->mflags);
+       }
 
        return r1_before_r2;
 }
 
 
 /*
- * res_sorts_before6 - compare two restrict6 entries
+ * res_sorts_before6 - compare IPv6 restriction entries
  *
  * Returns nonzero if r1 sorts before r2.  We sort by descending
- * address, then descending mask, then descending mflags, so sorting
- * before means having a higher value.
+ * address, then descending mask, then an intricate mflags sort
+ * order explained in a block comment near the top of this file.
  */
-static int
+static int/*BOOL*/
 res_sorts_before6(
-       restrict_u *r1,
-       restrict_u *r2
-       )
+       restrict_ur1,
+       restrict_ur2
+)
 {
        int r1_before_r2;
        int cmp;
 
        cmp = ADDR6_CMP(&r1->u.v6.addr, &r2->u.v6.addr);
-       if (cmp > 0)            /* r1->addr > r2->addr */
-               r1_before_r2 = 1;
-       else if (cmp < 0)       /* r2->addr > r1->addr */
-               r1_before_r2 = 0;
-       else {
+       if (cmp > 0) {          /* r1->addr > r2->addr */
+               r1_before_r2 = TRUE;
+       } else if (cmp < 0) {   /* r2->addr > r1->addr */
+               r1_before_r2 = FALSE;
+       else {
                cmp = ADDR6_CMP(&r1->u.v6.mask, &r2->u.v6.mask);
-               if (cmp > 0)            /* r1->mask > r2->mask*/
-                       r1_before_r2 = 1;
-               else if (cmp < 0)       /* r2->mask > r1->mask */
-                       r1_before_r2 = 0;
-               else if (r1->mflags > r2->mflags)
-                       r1_before_r2 = 1;
-               else
-                       r1_before_r2 = 0;
+               if (cmp > 0) {          /* r1->mask > r2->mask*/
+                       r1_before_r2 = TRUE;
+               } else if (cmp < 0) {   /* r2->mask > r1->mask */
+                       r1_before_r2 = FALSE;
+               } else {
+                       r1_before_r2 = mflags_sorts_before(r1->mflags,
+                                                          r2->mflags);
+               }
        }
 
        return r1_before_r2;
@@ -555,7 +586,7 @@ resop_str(restrict_op op)
 {
        switch (op) {
            case RESTRICT_FLAGS:        return "RESTRICT_FLAGS";
-           case RESTRICT_UNFLAG:       return "RESTRICT_UNFLAGS";
+           case RESTRICT_UNFLAG:       return "RESTRICT_UNFLAG";
            case RESTRICT_REMOVE:       return "RESTRICT_REMOVE";
            case RESTRICT_REMOVEIF:     return "RESTRICT_REMOVEIF";
        }
@@ -568,7 +599,7 @@ resop_str(restrict_op op)
 /*
  * hack_restrict - add/subtract/manipulate entries on the restrict list
  */
-void
+int/*BOOL*/
 hack_restrict(
        restrict_op     op,
        sockaddr_u *    resaddr,
@@ -576,7 +607,7 @@ hack_restrict(
        short           ippeerlimit,
        u_short         mflags,
        u_short         rflags,
-       u_long          expire
+       u_int32         expire
        )
 {
        int             v6;
@@ -584,25 +615,42 @@ hack_restrict(
        restrict_u      match;
        restrict_u *    res;
        restrict_u **   plisthead;
+       res_sort_fn     pfn_sort;
 
-       DPRINTF(1, ("hack_restrict: op %s addr %s mask %s ippeerlimit %d "
-                   "mflags %s rflags %s\n", resop_str(op), stoa(resaddr),
-                   stoa(resmask), ippeerlimit, mflags_str(mflags),
-                   rflags_str(rflags)));
+#ifdef DEBUG
+       if (debug > 0) {
+               printf("hack_restrict: op %s addr %s mask %s",
+                       resop_str(op), stoa(resaddr), stoa(resmask));
+               if (ippeerlimit >= 0) {
+                       printf(" ippeerlimit %d", ippeerlimit);
+               }
+               printf(" mflags %s rflags %s", mflags_str(mflags),
+                      rflags_str(rflags));
+               if (expire) {
+                       printf("lifetime %u\n",
+                              expire - (u_int32)current_time);
+               } else {
+                       printf("\n");
+               }
+       }
+#endif
 
        if (NULL == resaddr) {
                DEBUG_REQUIRE(NULL == resmask);
                DEBUG_REQUIRE(RESTRICT_FLAGS == op);
+               DEBUG_REQUIRE(RESM_SOURCE & mflags);
                restrict_source_rflags = rflags;
                restrict_source_mflags = mflags;
                restrict_source_ippeerlimit = ippeerlimit;
                restrict_source_enabled = TRUE;
-               return;
+               DPRINTF(1, ("restrict source template saved\n"));
+               return TRUE;
        }
 
        ZERO(match);
 
        if (IS_IPV4(resaddr)) {
+               DEBUG_INVARIANT(IS_IPV4(resmask));
                v6 = FALSE;
                /*
                 * Get address and mask in host byte order for easy
@@ -613,6 +661,7 @@ hack_restrict(
                match.u.v4.addr &= match.u.v4.mask;
        } else {
                DEBUG_INVARIANT(IS_IPV6(resaddr));
+               DEBUG_INVARIANT(IS_IPV6(resmask));
                v6 = TRUE;
                /*
                 * Get address and mask in network byte order for easy
@@ -634,12 +683,13 @@ hack_restrict(
                 * this restriction modify it.
                 */
                if (NULL != res) {
-                       if ((RES_LIMITED & rflags)
-                               && !(RES_LIMITED & res->rflags)) {
+                       if (    (RES_LIMITED & rflags)
+                           && !(RES_LIMITED & res->rflags)) {
 
                                bump_res_limited = TRUE;
                        }
                        res->rflags |= rflags;
+                       res->expire = expire;
                } else {
                        match.rflags = rflags;
                        match.expire = expire;
@@ -648,16 +698,16 @@ hack_restrict(
                                res = alloc_res6();
                                memcpy(res, &match, V6_SIZEOF_RESTRICT_U);
                                plisthead = &restrictlist6;
+                               pfn_sort = &res_sorts_before6;
                        } else {
                                res = alloc_res4();
                                memcpy(res, &match, V4_SIZEOF_RESTRICT_U);
                                plisthead = &restrictlist4;
+                               pfn_sort = &res_sorts_before4;
                        }
                        LINK_SORT_SLIST(
                                *plisthead, res,
-                               (v6)
-                                 ? res_sorts_before6(res, L_S_S_CUR())
-                                 : res_sorts_before4(res, L_S_S_CUR()),
+                               (*pfn_sort)(res, L_S_S_CUR()),
                                link, restrict_u);
                        restrictcount++;
                        if (RES_LIMITED & rflags) {
@@ -667,20 +717,25 @@ hack_restrict(
                if (bump_res_limited) {
                        inc_res_limited();
                }
-               break;
+               return TRUE;
 
        case RESTRICT_UNFLAG:
                /*
                 * Remove some bits from the rflags. If we didn't
                 * find this one, just return.
                 */
-               if (res != NULL) {
-                       if (   (RES_LIMITED & res->rflags)
-                           && (RES_LIMITED & rflags))
-                               dec_res_limited();
-                       res->rflags &= ~rflags;
+               if (NULL == res) {
+                       DPRINTF(1, ("No match for %s %s removing rflags %s\n",
+                                   stoa(resaddr), stoa(resmask),
+                                   rflags_str(rflags)));
+                       return FALSE;
                }
-               break;
+               if (   (RES_LIMITED & res->rflags)
+                   && (RES_LIMITED & rflags)) {
+                       dec_res_limited();
+               }
+               res->rflags &= ~rflags;
+               return TRUE;
 
        case RESTRICT_REMOVE:
        case RESTRICT_REMOVEIF:
@@ -690,20 +745,20 @@ hack_restrict(
                 * don't remove an interface entry unless asked.
                 */
                if (   res != NULL
-                   && (RESTRICT_REMOVEIF == op
+                   && (   RESTRICT_REMOVEIF == op
                        || !(RESM_INTERFACE & res->mflags))
                    && res != &restrict_def4
                    && res != &restrict_def6) {
 
                        free_res(res, v6);
+                       return TRUE;
                }
-               break;
-
-       default:        /* unknown op */
-               INSIST(0);
-               break;
+               DPRINTF(1, ("No match removing %s %s restriction\n",
+                           stoa(resaddr), stoa(resmask)));
+               return FALSE;
        }
-
+       /* notreached */
+       return FALSE;
 }
 
 
@@ -714,60 +769,47 @@ hack_restrict(
 void
 restrict_source(
        sockaddr_u *    addr,
-       int             farewell,       /* 0 to add, 1 to remove */
-       u_long          expire          /* 0 is infinite, valid until */
+       int             farewell,       /* TRUE to remove */
+       u_int32         lifetime        /* seconds, 0 forever */
        )
 {
        sockaddr_u      onesmask;
-       restrict_u *    res;
-       int             found_specific;
+       int/*BOOL*/     success;
 
-       if (!restrict_source_enabled || SOCK_UNSPEC(addr) ||
-           IS_MCAST(addr) || ISREFCLOCKADR(addr))
+       if (   !restrict_source_enabled || SOCK_UNSPEC(addr)
+           || IS_MCAST(addr) || ISREFCLOCKADR(addr)) {
                return;
+       }
 
        REQUIRE(AF_INET == AF(addr) || AF_INET6 == AF(addr));
 
        SET_HOSTMASK(&onesmask, AF(addr));
        if (farewell) {
-               hack_restrict(RESTRICT_REMOVE, addr, &onesmask,
-                             -2, 0, 0, 0);
-               DPRINTF(1, ("restrict_source: %s removed", stoa(addr)));
+               success = hack_restrict(RESTRICT_REMOVE, addr, &onesmask,
+                                       0, RESM_SOURCE, 0, 0);
+               if (success) {
+                       DPRINTF(1, ("%s %s removed", __func__,
+                                   stoa(addr)));
+               } else {
+                       msyslog(LOG_ERR, "%s remove %s failed",
+                                        __func__, stoa(addr));
+               }
                return;
        }
 
-       /*
-        * If there is a specific entry for this address, hands
-        * off, as it is condidered more specific than "restrict
-        * server ...".
-        * However, if the specific entry found is a fleeting one
-        * added by pool_xmit() before soliciting, replace it
-        * immediately regardless of the expire value to make way
-        * for the more persistent entry.
-        */
-       if (IS_IPV4(addr)) {
-               res = match_restrict4_addr(SRCADR(addr), SRCPORT(addr));
-               INSIST(res != NULL);
-               found_specific = (SRCADR(&onesmask) == res->u.v4.mask);
+       success = hack_restrict(RESTRICT_FLAGS, addr, &onesmask,
+                               restrict_source_ippeerlimit,
+                               restrict_source_mflags,
+                               restrict_source_rflags, 
+                               lifetime > 0
+                                   ? lifetime + current_time
+                                   : 0);
+       if (success) {
+               DPRINTF(1, ("%s %s add/upd\n", __func__,
+                           stoa(addr)));
        } else {
-               res = match_restrict6_addr(&SOCK_ADDR6(addr),
-                                          SRCPORT(addr));
-               INSIST(res != NULL);
-               found_specific = ADDR6_EQ(&res->u.v6.mask,
-                                         &SOCK_ADDR6(&onesmask));
-       }
-       if (!expire && found_specific && res->expire) {
-               found_specific = 0;
-               free_res(res, IS_IPV6(addr));
+               msyslog(LOG_ERR, "%s %s failed", __func__, stoa(addr));
        }
-       if (found_specific)
-               return;
-
-       hack_restrict(RESTRICT_FLAGS, addr, &onesmask,
-                     restrict_source_ippeerlimit, 
-                     restrict_source_mflags, restrict_source_rflags, expire);
-       DPRINTF(1, ("restrict_source: %s host restriction added\n", 
-                   stoa(addr)));
 }
 
 
index d6ff7a2501a4f365c10f1cf1980513abea5f5a96..c55f3068b9b77b5437227c3709c5fe2fb6cd2f2e 100644 (file)
@@ -363,7 +363,7 @@ stats_config(
        int optflag
        )
 {
-       FILE    *fp;
+       FILE    *fp = NULL;
        const char *value;
        size_t  len;
        double  old_drift;
@@ -450,20 +450,21 @@ stats_config(
                 * missing or contains errors, tell the loop to reset.
                 */
                if (NULL == stats_drift_file) {
-                       prev_drift_comp = 0.0;
-                       loop_config(LOOP_NOFREQ, prev_drift_comp);
-               }
-               else if ((fp = fopen(stats_drift_file, "r")) == NULL) {
+                       goto nofreq;
+               } else if ((fp = fopen(stats_drift_file, "r")) == NULL) {
                        if (errno != ENOENT) {
                                msyslog(LOG_WARNING,
                                        "cannot read frequency file %s: %m",
                                        stats_drift_file);
                        }
-               }
-               else if (fscanf(fp, "%lf", &old_drift) != 1) {
+                       goto nofreq;
+               else if (fscanf(fp, "%lf", &old_drift) != 1) {
                        msyslog(LOG_ERR,
                                "format error frequency file %s",
                                stats_drift_file);
+       nofreq:
+                       prev_drift_comp = 0.0;
+                       loop_config(LOOP_NOFREQ, prev_drift_comp);
                } else {
                        loop_config(LOOP_FREQ, old_drift);
                        prev_drift_comp = drift_comp;
@@ -487,7 +488,7 @@ stats_config(
                len = strlen(value);
                if (len > sizeof(statsdir) - 2) {
                        msyslog(LOG_ERR,
-                               "statsdir %s too long (>%u)",
+                               "statsdir %s too long (>%u)", value,
                                (u_int)sizeof(statsdir) - 2);
                        break;
                }
index 8631c88fc61623f70404853562f33b413613e6a3..e436e10a41c5f0d01727d762dd6addbab31d1a7e 100644 (file)
@@ -1296,8 +1296,8 @@ ntpdmain(
                        char *captext;
                        
                        captext = (scan_addrs_once)
-                                   ? "cap_sys_time=pe";
-                                   : "cap_sys_time,cap_net_bind_service=pe"
+                                   ? "cap_sys_time=pe"
+                                   : "cap_sys_time,cap_net_bind_service=pe";
                        caps = cap_from_text(captext);
                        if (!caps) {
                                msyslog(LOG_ERR,
index 0891299e52fdc5b8842f969f1a7aab1871049f73..10e04629d6cb52e8c9521789296cab42c12e5351 100644 (file)
@@ -38,8 +38,8 @@ IsEqual(const vint64 expected, const vint64 actual) {
 void
 test_ParseVUI64_pos(void) {
        vint64 act, exp;
-       const char *sp;
-       char const *ep;
+       char *sp;
+       char *ep;
 
        sp         = "1234x";
        exp.D_s.hi = 0;
@@ -54,8 +54,8 @@ test_ParseVUI64_pos(void) {
 void
 test_ParseVUI64_neg(void) {
        vint64 act, exp;
-       const char *sp;
-       char const *ep;
+       char *sp;
+       char *ep;
 
        sp         = "-1234x";
        exp.D_s.hi = ~0;
@@ -68,8 +68,8 @@ test_ParseVUI64_neg(void) {
 void
 test_ParseVUI64_case(void) {
        vint64 act, exp;
-       const char *sp;
-       char const *ep;
+       char *sp;
+       char *ep;
 
        sp         = "0123456789AbCdEf";
        exp.D_s.hi = 0x01234567;