From: Dave Hart Date: Sat, 30 Sep 2023 03:53:06 +0000 (+0000) Subject: [Bug 3872] Ignore restrict mask for hostname. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46a217c494f0c66a6b232e60c399299b98553f7e;p=thirdparty%2Fntp.git [Bug 3872] Ignore restrict mask for hostname. [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 --- diff --git a/ChangeLog b/ChangeLog index a27b72b5a..552ca4f00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,14 @@ --- +* [Bug 3872] Ignore restrict mask for hostname. * [Bug 3869] Remove long-gone "calldelay" & "crypto sign" from docs. Reported by PoolMUC@web.de. +* [Bug 3868] Cannot restrict a pool peer. Thanks to + Edward McGuire for tracking down the deficiency. * [Bug 3859] Use NotifyIpInterfaceChange on Windows ntpd. * [Bug 3856] Enable Edit & Continue debugging with Visual Studio. +* [Bug 3855] ntpq lacks an equivalent to ntpdc's delrestrict. * [Bug 3854] ntpd 4.2.8p17 corrupts rawstats file with space in refid. * [Bug 3853] Clean up warnings with modern compilers. @@ -34,6 +38,8 @@ is disabled. * [Bug 3825] Don't touch HTML files unless building inside a BK repo. Fix the script checkHtmlFileDates. +* Update ntp.conf documentation to add "delrestrict" and correct information + about KoD rate limiting. * html/clockopt.html cleanup. * Add DSA, DSA-SHA, and SHA to tests/libntp/digests.c. * Provide ntpd thread names to debugger on Windows. diff --git a/include/ntp.h b/include/ntp.h index 402085b21..9ff5a408f 100644 --- a/include/ntp.h +++ b/include/ntp.h @@ -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 | \ diff --git a/include/ntp_config.h b/include/ntp_config.h index dbb64e3a2..2fce70945 100644 --- a/include/ntp_config.h +++ b/include/ntp_config.h @@ -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); diff --git a/include/ntpd.h b/include/ntpd.h index c3ed6684e..28e2d05cd 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -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_u* resmask, 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); diff --git a/include/vint64ops.h b/include/vint64ops.h index 888d34278..50a8c4016 100644 --- a/include/vint64ops.h +++ b/include/vint64ops.h @@ -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)*/ diff --git a/libntp/vint64ops.c b/libntp/vint64ops.c index 1d5087d95..23c9f26dc 100644 --- a/libntp/vint64ops.c +++ b/libntp/vint64ops.c @@ -15,24 +15,25 @@ #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; diff --git a/ntpd/complete.conf.in b/ntpd/complete.conf.in index 77b619773..117e84b6f 100644 --- a/ntpd/complete.conf.in +++ b/ntpd/complete.conf.in @@ -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 diff --git a/ntpd/invoke-ntp.conf.texi b/ntpd/invoke-ntp.conf.texi index 6279bb2fa..89f85287c 100644 --- a/ntpd/invoke-ntp.conf.texi +++ b/ntpd/invoke-ntp.conf.texi @@ -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 diff --git a/ntpd/keyword-gen-utd b/ntpd/keyword-gen-utd index 0eb94005b..60bc132ce 100644 --- a/ntpd/keyword-gen-utd +++ b/ntpd/keyword-gen-utd @@ -1 +1 @@ - * Generated 2022-03-27 14:17:11 UTC diff_ignore_line + * Generated 2023-09-25 05:34:02 UTC diff_ignore_line diff --git a/ntpd/keyword-gen.c b/ntpd/keyword-gen.c index 7c498b2f5..014227a2b 100644 --- a/ntpd/keyword-gen.c +++ b/ntpd/keyword-gen.c @@ -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 }, diff --git a/ntpd/ntp.conf.5man b/ntpd/ntp.conf.5man index 8b436000f..edbbc4230 100644 --- a/ntpd/ntp.conf.5man +++ b/ntpd/ntp.conf.5man @@ -10,11 +10,11 @@ .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 diff --git a/ntpd/ntp.conf.5mdoc b/ntpd/ntp.conf.5mdoc index fec5218b4..a92096496 100644 --- a/ntpd/ntp.conf.5mdoc +++ b/ntpd/ntp.conf.5mdoc @@ -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 diff --git a/ntpd/ntp.conf.def b/ntpd/ntp.conf.def index 73a6993fe..444e3b35e 100644 --- a/ntpd/ntp.conf.def +++ b/ntpd/ntp.conf.def @@ -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 diff --git a/ntpd/ntp.conf.html b/ntpd/ntp.conf.html index 3785a5c25..e084fcf90 100644 --- a/ntpd/ntp.conf.html +++ b/ntpd/ntp.conf.html @@ -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%.

-
restrict address [mask mask] [ippeerlimit int] [flag ...]
+
restrict address [mask mask] [ippeerlimit int] [flag ...]

The 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 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 +mask +is ignored and an individual host mask is +used for each entry. The mask -argument expressed in dotted-quad form defaults to -255.255.255.255, -meaning that the +argument expressed in numeric form defaults to +all bits lit, meaning that the address is treated as the address of an individual host. -A default entry (address -0.0.0.0, -mask -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 default, @@ -1705,12 +1706,12 @@ and queries.

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 +discard average +defaulting to 8s. Otherwise, no response is sent.

limited

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 ntpport -and -non-ntpport -may -be specified. +and the other does not. The ntpport -is considered more specific and +entry is considered more specific and is sorted later in the list.

serverresponse fuzz
@@ -1833,13 +1832,30 @@ fuzz the low order bits of the

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 +manycastclient +when +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).

+
delrestrict [source] address
+

Remove a previously-set restriction. This is useful for +runtime configuration via +ntpq(1ntpqmdoc) +. If +source +is specified, a dynamic restriction created from the +restrict source +template at the time +an association was added is removed. Without +source +a static restriction is removed. +


diff --git a/ntpd/ntp.conf.man.in b/ntpd/ntp.conf.man.in index 06e8f68e5..7d85e612e 100644 --- a/ntpd/ntp.conf.man.in +++ b/ntpd/ntp.conf.man.in @@ -10,11 +10,11 @@ .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 diff --git a/ntpd/ntp.conf.mdoc.in b/ntpd/ntp.conf.mdoc.in index 317206065..6b8b5e607 100644 --- a/ntpd/ntp.conf.mdoc.in +++ b/ntpd/ntp.conf.mdoc.in @@ -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 diff --git a/ntpd/ntp_config.c b/ntpd/ntp_config.c index ad456b42b..37c9c4820 100644 --- a/ntpd/ntp_config.c +++ b/ntpd/ntp_config.c @@ -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_tree* ptree +) { 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 diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index 4a332ed18..87a8b0fd7 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -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 diff --git a/ntpd/ntp_keyword.h b/ntpd/ntp_keyword.h index 7b3efc2cd..7fa610bb3 100644 --- a/ntpd/ntp_keyword.h +++ b/ntpd/ntp_keyword.h @@ -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 */ }; diff --git a/ntpd/ntp_leapsec.c b/ntpd/ntp_leapsec.c index fcd3bd29b..2618862c5 100644 --- a/ntpd/ntp_leapsec.c +++ b/ntpd/ntp_leapsec.c @@ -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) diff --git a/ntpd/ntp_monitor.c b/ntpd/ntp_monitor.c index b3db452a2..8af8dff30 100644 --- a/ntpd/ntp_monitor.c +++ b/ntpd/ntp_monitor.c @@ -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; diff --git a/ntpd/ntp_parser.c b/ntpd/ntp_parser.c index edf87f609..e5ee5e10a 100644 --- a/ntpd/ntp_parser.c +++ b/ntpd/ntp_parser.c @@ -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 diff --git a/ntpd/ntp_parser.h b/ntpd/ntp_parser.h index 407d5499e..2f8501a4b 100644 --- a/ntpd/ntp_parser.h +++ b/ntpd/ntp_parser.h @@ -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; diff --git a/ntpd/ntp_parser.y b/ntpd/ntp_parser.y index 093e8d332..49b55588d 100644 --- a/ntpd/ntp_parser.y +++ b/ntpd/ntp_parser.y @@ -97,6 +97,7 @@ %token T_Ctl %token T_Day %token T_Default +%token T_Delrestrict %token T_Device %token T_Digest %token T_Disable @@ -349,6 +350,7 @@ %type pollskew_cycle %type pollskew_spec %type reset_command +%type restrict_mask %type rlimit_option_keyword %type rlimit_option %type 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; diff --git a/ntpd/ntp_peer.c b/ntpd/ntp_peer.c index 6b4ad7d54..435b02aea 100644 --- a/ntpd/ntp_peer.c +++ b/ntpd/ntp_peer.c @@ -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, diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c index 21f3397b8..2b5b83462 100644 --- a/ntpd/ntp_proto.c +++ b/ntpd/ntp_proto.c @@ -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 */ } diff --git a/ntpd/ntp_request.c b/ntpd/ntp_request.c index e61d01480..89c051b64 100644 --- a/ntpd/ntp_request.c +++ b/ntpd/ntp_request.c @@ -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; } diff --git a/ntpd/ntp_restrict.c b/ntpd/ntp_restrict.c index d45bb0ff0..f1df8ccf3 100644 --- a/ntpd/ntp_restrict.c +++ b/ntpd/ntp_restrict.c @@ -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_u* r1, + restrict_u* r2 +) { 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))); } diff --git a/ntpd/ntp_util.c b/ntpd/ntp_util.c index d6ff7a250..c55f3068b 100644 --- a/ntpd/ntp_util.c +++ b/ntpd/ntp_util.c @@ -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; } diff --git a/ntpd/ntpd.c b/ntpd/ntpd.c index 8631c88fc..e436e10a4 100644 --- a/ntpd/ntpd.c +++ b/ntpd/ntpd.c @@ -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, diff --git a/tests/libntp/vi64ops.c b/tests/libntp/vi64ops.c index 0891299e5..10e04629d 100644 --- a/tests/libntp/vi64ops.c +++ b/tests/libntp/vi64ops.c @@ -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;