]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Merge shiny.ad.hartbrothers.com:C:/ntp/ntp-stable-1675
authorDave Hart <hart@ntp.org>
Sun, 24 Oct 2010 03:48:00 +0000 (03:48 +0000)
committerDave Hart <hart@ntp.org>
Sun, 24 Oct 2010 03:48:00 +0000 (03:48 +0000)
into  shiny.ad.hartbrothers.com:C:/ntp/ntp-dev-1675

bk: 4cc3ac70-c_ICAwqbfj_LcpRr29SXA

1  2 
ChangeLog
ntpd/ntp_parser.c
ntpd/ntp_parser.y
ntpd/ntp_scanner.c

diff --cc ChangeLog
index bd7f71b9ae79537ef069dac4978022aa377f6bd2,5b0fe5ecfb8898985bf3c14e1417b557a4b1549d..eb20656749d379c73b4f78140f2522bf6a215e37
+++ b/ChangeLog
- * [Bug 1671] Audoomatic delay calibration is sometimes inaccurate.
++* [Bug 1675] from 4.2.6p3-RC6: Prohibit includefile remote config.
 +(4.2.7p69) 2010/10/23 Released by Harlan Stenn <stenn@ntp.org>
++* [Bug 1671] Automatic delay calibration is sometimes inaccurate.
 +(4.2.7p68) 2010/10/22 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1669] from 4.2.6p3-RC5: NTP fails to compile on IBM AIX 5.3.
 +* [Bug 1670] Fix peer->bias and broadcastdelay.
 +* Documentation updates from Dave Mills.
 +* Documentation EOL cleanup.
 +(4.2.7p67) 2010/10/21 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1649] from 4.2.6p3-RC5: Require NMEA checksum if $GPRMC or
 +  previously seen.
 +(4.2.7p66) 2010/10/19 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1277] Provide and use O(1) FIFOs, esp. in the config tree code.
 +* Remove unused 'bias' configuration keyword.
 +(4.2.7p65) 2010/10/16 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1584] from 4.2.6p3-RC4: wrong SNMP type for precision,
 +  resolution.
 +* Remove 'calldelay' and 'sign' remnants from parser, ntp_config.c.
 +(4.2.7p64) 2010/10/15 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1584] from 4.2.6p3-RC3: ntpsnmpd OID must be mib-2.197.
 +* [Bug 1659] from 4.2.6p3-RC4: Need CLOCK_TRUETIME not CLOCK_TRUE.
 +* [Bug 1663] ntpdsim should not open net sockets.
 +* [Bug 1665] from 4.2.6p3-RC4: is_anycast() u_int32_t should be u_int32.
 +* from 4.2.6p3: ntpsnmpd, libntpq warning cleanup.
 +* Remove 'calldelay' and 'sign' keywords (Dave Mills).
 +* Documentation updates from Dave Mills.
 +(4.2.7p63) 2010/10/13 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1080] from 4.2.6p3-RC3: ntpd on ipv6 routers very chatty.
 +* Documentation nit cleanup.
 +* Documentation updates from Dave Mills.
 +(4.2.7p62) 2010/10/12 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 750] from 4.2.6p3-RC3: Non-existing device causes coredump with 
 +  RIPE-NCC driver.
 +* [Bug 1567] from 4.2.6p3-RC3: Support Arbiter 1093C Satellite Clock on
 +  Windows.
 +* [Bug 1581] from 4.2.6p3-RC3: printf format string mismatch leftover.
 +* [Bug 1659] from 4.2.6p3-RC3: Support Truetime Satellite Clocks on
 +  Windows. 
 +* [Bug 1660] from 4.2.6p3-RC3: On some systems, test is in /usr/bin, not
 +  /bin. 
 +* [Bug 1661] from 4.2.6p3-RC3: Re-indent refclock_ripencc.c.
 +* Lose peer_count from ntp_peer.c and ntp_proto.c (Dave Mills).
 +* Documentation updates from Dave Mills.
 +(4.2.7p61) 2010/10/06 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation and code cleanup from Dave Mills. No more NTP_MAXASSOC.
 +(4.2.7p60) 2010/10/04 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +(4.2.7p59) 2010/10/02 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +* Variable name cleanup from Dave Mills.
 +* [Bug 1657] darwin needs res_9_init, not res_init.
 +(4.2.7p58) 2010/09/30 Released by Harlan Stenn <stenn@ntp.org>
 +* Clock select bugfix from Dave Mills.
 +* [Bug 1554] peer may stay selected as system peer after becoming
 +  unreachable.
 +* [Bug 1644] from 4.2.6p3-RC3: cvo.sh should use lsb_release to identify
 +  linux distros.
 +* [Bug 1646] ntpd crashes with relative path to logfile.
 +(4.2.7p57) 2010/09/27 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +(4.2.7p56) 2010/09/25 Released by Harlan Stenn <stenn@ntp.org>
 +* Clock combining algorithm improvements from Dave Mills.
 +* Documentation updates from Dave Mills.
 +* [Bug 1642] ntpdsim can't find simulate block in config file.
 +* [Bug 1643] from 4.2.6p3-RC3: Range-check the decoding of the RIPE-NCC
 +  status codes.
 +(4.2.7p55) 2010/09/22 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +* [Bug 1636] from 4.2.6p3-RC2: segfault after denied remote config.
 +(4.2.7p54) 2010/09/21 Released by Harlan Stenn <stenn@ntp.org>
 +* More Initial convergence improvements from Dave Mills.
 +* Documentation updates from Dave Mills.
 +* [Bug 1635] from 4.2.6p3-RC2: "filegen ... enable" is not default.
 +(4.2.7p53) 2010/09/20 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +* More Initial convergence improvements from Dave Mills.
 +(4.2.7p52) 2010/09/19 Released by Harlan Stenn <stenn@ntp.org>
 +* Initial convergence improvements from Dave Mills.
 +(4.2.7p51) 2010/09/18 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1344] from 4.2.6p3-RC1: ntpd on Windows exits without logging
 +  cause.
 +* [Bug 1629] 4.2.7p50 configure.ac changes invalidate config.cache.
 +* [Bug 1630] 4.2.7p50 cannot bootstrap on Autoconf 2.61.
 +(4.2.7p50) 2010/09/16 Released by Harlan Stenn <stenn@ntp.org>
 +* Cleanup NTP_LIB_M.
 +* [Bug 1628] Clean up -lxnet/-lsocket usage for (open)solaris.
 +(4.2.7p49) 2010/09/13 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +(4.2.7p48) 2010/09/12 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +(4.2.7p47) 2010/09/11 Released by Harlan Stenn <stenn@ntp.org>
 +* Documentation updates from Dave Mills.
 +* [Bug 1588] finish configure --disable-autokey implementation.
 +* [Bug 1616] refclock_acts.c: if (pp->leap == 2) is always false.
 +* [Bug 1620] [Backward Incompatible] "discard minimum" value should be in
 +  seconds, not log2 seconds.
 +(4.2.7p46) 2010/09/10 Released by Harlan Stenn <stenn@ntp.org>
 +* Use AC_SEARCH_LIBS instead of AC_CHECK_LIB for NTP_LIB_M.
 +(4.2.7p45) 2010/09/05 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1578] Consistently use -lm when needed.
 +(4.2.7p44) 2010/08/27 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1573] from 4.2.6p3-beta1: Miscalculation of offset in sntp.
 +(4.2.7p43) 2010/08/26 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1602] Refactor some of the sntp/ directory to facililtate testing.
 +(4.2.7p42) 2010/08/18 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1593] ntpd abort in free() with logconfig syntax error.
 +* [Bug 1595] from 4.2.6p3-beta1: empty last line in key file causes
 +  duplicate key to be added
 +* [Bug 1597] from 4.2.6p3-beta1: packet processing ignores RATE KoD packets,
 +  Because of a bug in string comparison.
 +(4.2.7p41) 2010/07/28 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1581] from 4.2.6p3-beta1: ntp_intres.c size_t printf format
 +  string mismatch.
 +* [Bug 1586] ntpd 4.2.7p40 doesn't write to syslog after fork on QNX.
 +* Avoid race with parallel builds using same source directory in
 +  scripts/genver by using build directory for temporary files.
 +* orphanwait documentation updates.
 +(4.2.7p40) 2010/07/12 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1395] ease ntpdate elimination with ntpd -w/--wait-sync
 +* [Bug 1396] allow servers on ntpd command line like ntpdate
 +(4.2.7p39) 2010/07/09 Released by Harlan Stenn <stenn@ntp.org>
 +* Fix typo in driver28.html.
 +* [Bug 1581] from 4.2.6p2: size_t printf format string mismatches, IRIG
 +  string buffers undersized.  Mostly backported from earlier ntp-dev
 +  fixes by Juergen Perlinger.
 +(4.2.7p38) 2010/06/20 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1570] backported to 4.2.6p2-RC7.
 +* [Bug 1575] from 4.2.6p2-RC7: use 'snprintf' with LIB_BUFLENGTH in
 +  inttoa.c, tvtoa.c and utvtoa.c
 +* [Bug 1576] backported to 4.2.6p2-RC7.
 +* Typo fix in a comment in ntp_proto.c.
 +(4.2.7p37) 2010/06/19 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1576] sys/sysctl.h depends on sys/param.h on OpenBSD.
 +(4.2.7p36) 2010/06/15 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1560] Initial support for orphanwait, from Dave Mills.
 +* clock_filter()/reachability fixes from Dave Mills.
 +(4.2.7p35) 2010/06/12 Released by Harlan Stenn <stenn@ntp.org>
 +* Rewrite of multiprecision macros in 'ntp_fp.h' from J. Perlinger
 +  <perlinger@ntp.org>
 +* [Bug 715] from 4.2.6p2-RC6: libisc Linux IPv6 interface iteration
 +  drops multicast flags.
 +(4.2.7p34) 2010/06/05 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1570] serial clock drivers get outdated input from kernel tty
 +  line buffer after startup
 +(4.2.7p33) 2010/06/04 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1561] from 4.2.6p2-RC5: ntpq, ntpdc "passwd" prompts for MD5
 +  password w/SHA1.
 +* [Bug 1565] from 4.2.6p2-RC5: sntp/crypto.c compile fails on MacOS over
 +  vsnprintf().
 +* from 4.2.6p2-RC5: Windows port: do not exit in
 +  ntp_timestamp_from_counter() without first logging the reason.
 +(4.2.7p32) 2010/05/19 Released by Harlan Stenn <stenn@ntp.org>
 +* Copyright file cleanup from Dave Mills.
 +* [Bug 1555] from 4.2.6p2-RC4: sntp illegal C (mixed code and
 +  declarations).
 +* [Bug 1558] pool prototype associations have 0.0.0.0 for remote addr.
 +* configure.ac: add --disable-autokey, #define AUTOKEY to enable future
 +  support for building without Autokey, but with OpenSSL for its digest
 +  algorithms (hash functions).  Code must be modified to use #ifdef
 +  AUTOKEY instead of #ifdef OPENSSL where appropriate to complete this.
 +* include/ntp_crypto.h: make assumption AUTOKEY implies OPENSSL explicit.
 +(4.2.7p31) 2010/05/11 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1325] from 4.2.6p2-RC3: unreachable code sntp recv_bcst_data().
 +* [Bug 1459] from 4.2.6p2-RC3: sntp MD5 authentication does not work
 +  with ntpd.
 +* [Bug 1552] from 4.2.6p2-RC3: update and complete broadcast and crypto
 +  features in sntp.
 +* [Bug 1553] from 4.2.6p2-RC3: sntp/configure.ac OpenSSL support.
 +* from 4.2.6p2-RC3: Escape unprintable characters in a refid in ntpq -p
 +  billboard.
 +* from 4.2.6p2-RC3: Simplify hash client code by providing OpenSSL
 +  EVP_*() API when built without OpenSSL.  (already in 4.2.7)
 +* from 4.2.6p2-RC3: Do not depend on ASCII in sntp.
 +(4.2.7p30) 2010/05/06 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1526] ntpd DNS pipe read EINTR with no network at startup.
 +* Update the ChangeLog entries when merging items from -stable.
 +(4.2.7p29) 2010/05/04 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1542] ntpd mrulist response may have incorrect last.older.
 +* [Bug 1543] ntpq mrulist must refresh nonce when retrying.
 +* [Bug 1544] ntpq mrulist sscanf timestamp format mismatch on 64-bit.
 +* Windows compiling hints/winnt.html update from G. Sunil Tej.
 +(4.2.7p28) 2010/05/03 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1512] from 4.2.6p2-RC3: ntpsnmpd should connect to net-snmpd
 +  via a unix-domain socket by default.
 +  Provide a command-line 'socket name' option.
 +* [Bug 1538] from 4.2.6p2-RC3: update refclock_nmea.c's call to
 +  getprotobyname().
 +* [Bug 1541] from 4.2.6p2-RC3: Fix wrong keyword for "maxclock".
 +(4.2.7p27) 2010/04/27 Released by Harlan Stenn <stenn@ntp.org>
 +(4.2.7p26) 2010/04/24 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1465] from 4.2.6p2-RC2: Make sure time from TS2100 is not
 +  invalid (backport from -dev).
 +* [Bug 1528] from 4.2.6p2-RC2: Fix EDITLINE_LIBS link order for ntpq
 +  and ntpdc.
 +* [Bug 1531] Require nonce with mrulist requests.
 +* [Bug 1532] Remove ntpd support for ntpdc's monlist in favor of ntpq's
 +  mrulist.
 +* [Bug 1534] from 4.2.6p2-RC2: conflicts with VC++ 2010 errno.h.
 +* [Bug 1535] from 4.2.6p2-RC2: "restrict -4 default" and "restrict
 +  -6 default" ignored.
 +(4.2.7p25) 2010/04/20 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1528] from 4.2.6p2-RC2: Remove --with-arlib from br-flock.
 +* [Bug 1503] [Bug 1504] [Bug 1518] [Bug 1522] from 4.2.6p2-RC2:
 +  all of which were fixed in 4.2.7 previously. 
 +(4.2.7p24) 2010/04/13 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1390] Control PPS on the Oncore M12.
 +* [Bug 1518] Windows ntpd should lock to one processor more
 +  conservatively.
 +* [Bug 1520] '%u' formats for size_t gives warnings with 64-bit builds.
 +* [Bug 1522] Enable range syntax "trustedkey (301 ... 399)".
 +* Documentation updates for 4.2.7p22 changes and additions, updating
 +  ntpdc.html, ntpq.html, accopt.html, confopt.html, manyopt.html,
 +  miscopt.html, and miscopt.txt.
 +* accopt.html: non-ntpport doc changes from Dave Mills.
 +* Modify full MRU list preemption when full to match "discard monitor"
 +  documentation, by removing exception for count == 1.
 +(4.2.7p23) 2010/04/04 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1516] unpeer by IP address fails, DNS name works.
 +* [Bug 1517] ntpq and ntpdc should verify reverse DNS before use.
 +  ntpq and ntpdc now use the following format for showing purported
 +  DNS names from IP address "reverse" DNS lookups when the DNS name
 +  does not exist or does not include the original IP address among
 +  the results: "192.168.1.2 (fake.dns.local)".
 +(4.2.7p22) 2010/04/02 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1432] Don't set inheritable flag for linux capabilities.
 +* [Bug 1465] Make sure time from TS2100 is not invalid.
 +* [Bug 1483] AI_NUMERICSERV undefined in 4.2.7p20.
 +* [Bug 1497] fudge is broken by getnetnum() change.
 +* [Bug 1503] Auto-enabling of monitor for "restrict ... limited" wrong.
 +* [Bug 1504] ntpdate tickles ntpd "discard minimum 1" rate limit if
 +  "restrict ... limited" is used.
 +* ntpdate: stop querying source after KoD packet response, log it.
 +* ntpdate: rate limit each server to 2s between packets.
 +* From J. N. Perlinger: avoid pointer wraparound warnings in dolfptoa(),
 +  printf format mismatches with 64-bit size_t.
 +* Broadcast client (ephemeral) associations should be demobilized only
 +  if they are not heard from for 10 consecutive polls, regardless of
 +  surviving the clock selection.  Fix from David Mills.
 +* Add "ntpq -c ifstats" similar to "ntpdc -c ifstats".
 +* Add "ntpq -c sysstats" similar to "ntpdc -c sysstats".
 +* Add "ntpq -c monstats" to show monlist knobs and stats.
 +* Add "ntpq -c mrulist" similar to "ntpdc -c monlist" but not
 +  limited to 600 rows, and with filtering and sorting options:
 +  ntpq -c "mrulist mincount=2 laddr=192.168.1.2 sort=-avgint"
 +  ntpq -c "mrulist sort=addr"
 +  ntpq -c "mrulist mincount=2 sort=count"
 +  ntpq -c "mrulist sort=-lstint"
 +* Modify internal representation of MRU list to use l_fp fixed-point
 +  NTP timestamps instead of seconds since startup.  This increases the
 +  resolution and substantially improves accuracy of sorts involving
 +  timestamps, at the cost of flushing all MRU entries when the clock is
 +  stepped, to ensure the timestamps can be compared with the current
 +  get_systime() results.
 +* Add ntp.conf "mru" directive to configure MRU parameters, such as
 +  "mru mindepth 600 maxage 64 maxdepth 5000 maxmem 1024" or
 +  "mru initalloc 0 initmem 16 incalloc 99 incmem 4".  Several pairs are
 +  equivalent with one in units of MRU entries and its twin in units of
 +  kilobytes of memory, so the last one used in ntp.conf controls:
 +  maxdepth/maxmem, initalloc/initmem, incalloc/incmem.  With the above
 +  values, ntpd will preallocate 16kB worth of MRU entries, allocating
 +  4kB worth each time more are needed, with a hard limit of 1MB of MRU
 +  entries.  Until there are more than 600 entries none would be reused.
 +  Then only entries for addresses last seen 64 seconds or longer ago are
 +  reused.
 +* Limit "ntpdc -c monlist" response in ntpd to 600 entries, the previous
 +  overall limit on the MRU list depth which was driven by the monlist
 +  implementation limit of one request with a single multipacket
 +  response.
 +* New "pool" directive implementation modeled on manycastclient.
 +* Do not abort on non-ASCII characters in ntp.conf, ignore them.
 +* ntpq: increase response reassembly limit from 24 to 32 packets, add
 +  discussion in comment regarding results with even larger MAXFRAGS.
 +* ntpq: handle "passwd MYPASSWORD" (without prompting) as with ntpdc.
 +* ntpdc: do not examine argument to "passwd" if not supplied.
 +* configure: remove check for pointer type used with qsort(), we
 +  require ANSI C which mandates void *.
 +* Reset sys_kodsent to 0 in proto_clr_stats().
 +* Add sptoa()/sockporttoa() similar to stoa()/socktoa() adding :port.
 +* Use memcpy() instead of memmove() when buffers can not overlap.
 +* Remove sockaddr_storage from our sockaddr_u union of sockaddr,
 +  sockaddr_in, and sockaddr_in6, shaving about 100 bytes from its size
 +  and substantially decreasing MRU entry memory consumption.
 +* Extend ntpq readvar (alias rv) to allow fetching up to three named
 +  variables in one operation:  ntpq -c "rv 0 version offset frequency".
 +* ntpq: use srchost variable to show .POOL. prototype associations'
 +  hostname instead of address 0.0.0.0.
 +* "restrict source ..." configures override restrictions for time
 +  sources, allows tight default restrictions to be used with the pool
 +  directive (where server addresses are not known in advance).
 +* Ignore "preempt" modifier on manycastclient and pool prototype
 +  associations.  The resulting associations are preemptible, but the
 +  prototype must not be.
 +* Maintain and use linked list of associations (struct peer) in ntpd,
 +  avoiding walking 128 hash table entries to iterate over peers.
 +* Remove more workarounds unneeded since we require ISO C90 AKA ANSI C:
 +  - remove fallback implementations for memmove(), memset, strstr().
 +  - do not test for atexit() or memcpy().
 +* Collapse a bunch of code duplication in ntpd/ntp_restrict.c added with
 +  support for IPv6.
 +* Correct some corner case failures in automatically enabling the MRU
 +  list if any "restrict ... limited" is in effect, and in disabling MRU
 +  maintenance. (ntp_monitor.c, ntp_restrict.c)
 +* Reverse the internal sort order of the address restriction lists, but
 +  preserve the same behavior.  This allows removal of special-case code
 +  related to the default restrictions and more straightforward lookups
 +  of restrictions for a given address (now, stop on first match).
 +* Move ntp_restrict.c MRU doubly-linked list maintenance code into
 +  ntp_lists.h macros, allowing more duplicated source excision.
 +* Repair ntpdate.c to no longer test HAVE_TIMER_SETTIME.
 +* Do not reference peer_node/unpeer_node after freeing when built with
 +  --disable-saveconfig and using DNS.
 +(4.2.7p21) 2010/03/31 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1514] from 4.2.6p1-RC6: Typo in ntp_proto.c: fabs(foo < .4)
 +  should be fabs(foo) < .4.
 +* [Bug 1464] from 4.2.6p1-RC6: synchronization source wrong for
 +  refclocks ARCRON_MSF (27) and SHM (28).
 +* From 4.2.6p1-RC6: Correct Windows port's refclock_open() to
 +  return 0 on failure not -1.
 +* From 4.2.6p1-RC6: Correct CHU, dumbclock, and WWVB drivers to
 +  check for 0 returned from refclock_open() on failure.
 +* From 4.2.6p1-RC6: Correct "SIMUL=4 ./flock-build -1" to
 +  prioritize -1/--one.
 +* [Bug 1306] constant conditionals in audio_gain().
 +(4.2.7p20) 2010/02/13 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1483] hostname in ntp.conf "restrict" parameter rejected.
 +* Use all addresses for each restrict by hostname.
 +* Use async DNS to resolve trap directive hostnames.
 +(4.2.7p19) 2010/02/09 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1338] Update the association type codes in ntpq.html.
 +* [Bug 1478] from 4.2.6p1-RC5: linking fails: EVP_MD_pkey_type.
 +* [Bug 1479] from 4.2.6p1-RC5: not finding readline headers.
 +* [Bug 1484] from 4.2.6p1-RC5: ushort is not defined in QNX6.
 +(4.2.7p18) 2010/02/07 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1480] from 4.2.6p1-RC5: snprintf() cleanup caused 
 +  unterminated refclock IDs.
 +* Stop using getaddrinfo() to convert numeric address strings to on-wire
 +  addresses in favor of is_ip_address() alone.
 +(4.2.7p17) 2010/02/05 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1477] from 4.2.6p1-RC5: First non-gmake make in clone
 +  w/VPATH can't make COPYRIGHT.
 +* Attempts to cure CID 108 CID 118 CID 119 TAINTED_SCALAR warnings.
 +* Broaden ylwrap workaround VPATH_HACK to all non-GNU make.
 +(4.2.7p16) 2010/02/04 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1474] from 4.2.6p1-RC4: ntp_keygen LCRYPTO after libntp.a.
 +* Include 4.2.6p1-RC4: Remove arlib.
 +(4.2.7p15) 2010/02/03 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1455] from 4.2.6p1: ntpd does not try /etc/ntp.audio.
 +* Include 4.2.6p1: Convert many sprintf() calls to snprintf(), also
 +  strcpy(), strcat().
 +* Include 4.2.6p1: Fix widely cut-n-pasted bug in refclock shutdown
 +  after failed start.
 +* Include 4.2.6p1: Remove some dead code checking for emalloc()
 +  returning NULL.
 +(4.2.7p14) 2010/02/02 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1338] ntpq displays incorrect association type codes.
 +* [Bug 1469] u_int32, int32 changes broke HP-UX 10.20 build.
 +* [Bug 1470] from 4.2.6p1: "make distdir" compiles keyword-gen.
 +* [Bug 1471] CID 120 CID 121 CID 122 is_ip_address() uninit family.
 +* [Bug 1472] CID 116 CID 117 minor warnings in new DNS code.
 +* [Bug 1473] from 4.2.6p1: "make distcheck" version.m4 error.
 +(4.2.7p13) 2010/01/31 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1467] from 4.2.6p1: Fix bogus rebuild of sntp/sntp.html.
 +(4.2.7p12) 2010/01/30 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1468] 'make install' broken for root on default NFS mount.
 +(4.2.7p11) 2010/01/28 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 47] Debugging and logging do not work after a fork.
 +* [Bug 1010] getaddrinfo() could block and thus should not be called by
 +  the main thread/process.
 +* New async DNS resolver in ntpd allows nonblocking queries anytime,
 +  instead of only once at startup.
 +(4.2.7p10) 2010/01/24 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1140] from 4.2.6p1-RC5: Clean up debug.html, decode.html,
 +  and ntpq.html.
 +* Include 4.2.6p1-RC3: Use TZ=UTC instead of TZ= when calling date in
 +  scripts/mkver.in .
 +* [Bug 1448] from 4.2.6p1-RC3: Some macros not correctly conditionally
 +  or absolutely defined on Windows.
 +* [Bug 1449] from 4.2.6p1-RC3: ntpsim.h in ntp_config.c should be used
 +  conditionally.
 +* [Bug 1450] from 4.2.6p1-RC3: Option to exclude warnings not
 +  unconditionally defined on Windows.
 +(4.2.7p9) 2010/01/13 Released by Harlan Stenn <stenn@ntp.org>
 +(4.2.7p8) 2010/01/12 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 702] ntpd service logic should use libopts to examine cmdline.
 +* [Bug 1451] from 4.2.6p1-RC3: sntp leaks KoD entry updating.
 +* [Bug 1453] from 4.2.6p1-RC3: Use $CC in config.cache filename.
 +(4.2.7p7) 2009/12/30 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 620] ntpdc getresponse() esize != *rsize s/b size != *rsize.
 +* [Bug 1446] 4.2.7p6 requires autogen, missing ntpd.1, *.texi, *.menu.
 +(4.2.7p6) 2009/12/28 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1443] Remove unnecessary dependencies on ntp_io.h
 +* [Bug 1442] Move Windows functions into libntp files
 +* [Bug 1127] from 4.2.6p1-RC3: Check the return of X590_verify().
 +* [Bug 1439] from 4.2.6p1-RC3: .texi gen after binary is linked.
 +* [Bug 1440] from 4.2.6p1-RC3: Update configure.ac to support kfreebsd.
 +* [Bug 1445] from 4.2.6p1-RC3: IRIX does not have -lcap or support
 +  linux capabilities.
 +(4.2.7p5) 2009/12/25 Released by Harlan Stenn <stenn@ntp.org>
 +* Include 4.2.6p1-RC2
 +(4.2.7p4) 2009/12/24 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1429] ntpd -4 option does not reliably force IPv4 resolution.
 +* [Bug 1431] System headers must come before ntp headers in ntp_intres.c .
 +(4.2.7p3) 2009/12/22 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1426] scripts/VersionName needs . on the search path.
 +* [Bug 1427] quote missing in ./build - shows up on NetBSD.
 +* [Bug 1428] Use AC_HEADER_RESOLV to fix breaks from resolv.h
 +(4.2.7p2) 2009/12/20 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1419] ntpdate, ntpdc, sntp, ntpd ignore configure --bindir.
 +* [Bug 1421] add util/tg2, a clone of tg that works on Linux, NetBSD, and
 +  FreeBSD
 +(4.2.7p1) 2009/12/15 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1348] ntpd Windows port should wait for sendto() completion.
 +* [Bug 1413] test OpenSSL headers regarding -Wno-strict-prototypes.
 +* [Bug 1418] building ntpd/ntpdc/ntpq statically with ssl fails.
 +(4.2.7p0) 2009/12/13 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1412] m4/os_cflags.m4 caches results that depend on $CC.
 +* [Bug 1414] Enable "make distcheck" success with BSD make.
 +(4.2.7) 2009/12/09 Released by Harlan Stenn <stenn@ntp.org>
 +* [Bug 1407] configure.ac: recent GNU Make -v does not include "version".
+ ---
+ * [Bug 1675] Prohibit includefile remote config.
  ---
  (4.2.6p3-RC5) 2010/10/22 Released by Harlan Stenn <stenn@ntp.org>
  
index 29c9b08d3864ff9a1ff95daf17d1d3310ca7fb26,590e1c3c4bcae12c3e436821a0601dec7b667c9d..5df6c4cfcc8035766394275e59085ecad5d943fb
@@@ -728,18 -710,18 +728,18 @@@ union yyallo
  #endif
  
  /* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  186
 -#define YYFINAL  168
++#define YYFINAL  188
  /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   610
 -#define YYLAST   630
++#define YYLAST   604
  
  /* YYNTOKENS -- Number of terminals.  */
 -#define YYNTOKENS  171
 +#define YYNTOKENS  179
  /* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  74
 -#define YYNNTS  89
++#define YYNNTS  94
  /* YYNRULES -- Number of rules.  */
- #define YYNRULES  261
 -#define YYNRULES  267
++#define YYNRULES  280
  /* YYNRULES -- Number of states.  */
- #define YYNSTATES  401
 -#define YYNSTATES  375
++#define YYNSTATES  379
  
  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
  #define YYUNDEFTOK  2
@@@ -803,138 -785,136 +803,141 @@@ static const yytype_uint16 yyprhs[] 
  {
         0,     0,     3,     5,     9,    12,    15,    16,    18,    20,
        22,    24,    26,    28,    30,    32,    34,    36,    38,    40,
-       44,    47,    49,    51,    53,    55,    57,    59,    62,    65,
-       67,    70,    72,    74,    76,    78,    81,    84,    87,    89,
-       91,    93,    95,    97,   100,   103,   106,   109,   111,   113,
-      115,   118,   121,   124,   127,   130,   133,   136,   139,   142,
-      145,   148,   151,   153,   154,   157,   160,   163,   166,   169,
-      172,   175,   178,   180,   183,   186,   189,   192,   195,   198,
-      201,   204,   207,   210,   213,   216,   219,   223,   226,   228,
-      230,   232,   234,   236,   238,   240,   242,   244,   245,   248,
-      251,   254,   256,   258,   260,   262,   264,   266,   268,   270,
-      272,   274,   276,   279,   282,   286,   292,   296,   301,   306,
-      310,   311,   314,   316,   318,   320,   322,   324,   326,   328,
-      330,   332,   334,   336,   338,   340,   342,   345,   347,   350,
-      353,   356,   359,   361,   364,   367,   370,   373,   376,   379,
-      382,   385,   389,   392,   394,   397,   400,   403,   406,   409,
-      412,   415,   418,   421,   424,   427,   429,   431,   433,   435,
-      437,   439,   441,   443,   446,   449,   451,   454,   457,   460,
-      463,   466,   469,   472,   474,   478,   480,   483,   486,   489,
-      492,   495,   498,   501,   504,   507,   510,   513,   517,   520,
-      523,   525,   528,   529,   534,   538,   541,   543,   546,   549,
-      552,   554,   556,   560,   564,   566,   568,   570,   572,   574,
-      576,   578,   580,   582,   585,   587,   590,   592,   594,   596,
-      602,   605,   607,   610,   612,   614,   616,   618,   620,   622,
-      628,   630,   634,   637,   641,   643,   645,   648,   650,   656,
-      661,   665,   668,   670,   677,   681,   684,   688,   690,   692,
-      694,   696
+       44,    47,    49,    51,    53,    55,    57,    59,    62,    64,
 -      66,    68,    71,    73,    75,    77,    80,    82,    84,    86,
 -      88,    90,    92,    94,    96,    98,   101,   103,   105,   107,
 -     109,   111,   113,   116,   118,   120,   122,   125,   128,   131,
 -     134,   137,   140,   143,   146,   149,   152,   155,   156,   159,
 -     162,   165,   167,   169,   171,   173,   175,   177,   180,   183,
 -     185,   188,   191,   194,   196,   198,   200,   202,   204,   206,
 -     208,   210,   212,   215,   218,   222,   225,   227,   229,   231,
 -     233,   235,   237,   239,   241,   243,   244,   247,   250,   253,
 -     255,   257,   259,   261,   263,   265,   267,   269,   271,   273,
 -     275,   277,   279,   282,   286,   290,   295,   300,   306,   307,
 -     310,   312,   314,   316,   318,   320,   322,   324,   326,   328,
 -     330,   332,   334,   336,   338,   341,   343,   346,   348,   350,
 -     352,   356,   359,   361,   364,   367,   370,   373,   375,   377,
 -     379,   381,   383,   385,   388,   391,   394,   396,   398,   400,
 -     402,   404,   406,   408,   410,   412,   415,   418,   420,   423,
 -     425,   427,   429,   431,   433,   435,   437,   439,   442,   445,
 -     448,   452,   454,   457,   460,   463,   466,   469,   472,   476,
 -     479,   481,   483,   485,   487,   489,   491,   493,   495,   498,
 -     499,   504,   506,   507,   510,   512,   515,   518,   521,   523,
 -     525,   529,   533,   535,   537,   539,   541,   543,   545,   547,
 -     549,   551,   554,   556,   559,   561,   563,   565,   571,   574,
 -     576,   579,   581,   583,   585,   587,   589,   591,   597,   599,
 -     603,   606,   610,   614,   617,   619,   625,   630,   634,   637,
 -     639,   646,   650,   653,   657,   661,   665,   669
++      66,    68,    71,    73,    75,    77,    79,    81,    83,    85,
++      87,    89,    91,    93,    95,    98,   100,   102,   104,   106,
++     108,   110,   113,   115,   117,   119,   122,   125,   128,   131,
++     134,   137,   140,   143,   146,   149,   152,   155,   157,   158,
++     161,   164,   166,   168,   170,   172,   174,   177,   180,   182,
++     185,   188,   191,   193,   195,   197,   199,   201,   203,   205,
++     207,   209,   211,   214,   217,   221,   224,   226,   228,   230,
++     232,   234,   236,   238,   240,   242,   243,   246,   249,   252,
++     254,   256,   258,   260,   262,   264,   266,   268,   270,   272,
++     274,   276,   278,   281,   284,   288,   294,   298,   303,   308,
++     312,   313,   316,   318,   320,   322,   324,   326,   328,   330,
++     332,   334,   336,   338,   340,   342,   344,   347,   349,   352,
++     354,   356,   358,   361,   363,   366,   368,   370,   372,   374,
++     376,   378,   380,   382,   386,   389,   391,   394,   397,   400,
++     403,   405,   407,   409,   411,   413,   415,   418,   421,   424,
++     426,   428,   430,   432,   434,   436,   438,   440,   442,   445,
++     448,   450,   453,   455,   457,   459,   461,   463,   465,   467,
++     469,   472,   475,   478,   482,   484,   487,   490,   493,   496,
++     500,   503,   505,   507,   509,   511,   513,   515,   517,   519,
++     522,   523,   528,   530,   531,   532,   535,   538,   541,   544,
++     546,   548,   552,   556,   558,   560,   562,   564,   566,   568,
++     570,   572,   574,   577,   579,   582,   584,   586,   588,   594,
++     597,   599,   602,   604,   606,   608,   610,   612,   614,   620,
++     622,   626,   629,   633,   635,   637,   640,   642,   648,   653,
++     657,   660,   662,   669,   673,   676,   680,   682,   684,   686,
++     688
  };
  
  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
  static const yytype_int16 yyrhs[] =
  {
 -     172,     0,    -1,   173,    -1,   173,   174,   155,    -1,   174,
 -     155,    -1,     1,   155,    -1,    -1,   175,    -1,   186,    -1,
 -     188,    -1,   189,    -1,   198,    -1,   206,    -1,   193,    -1,
 -     212,    -1,   217,    -1,   221,    -1,   225,    -1,   248,    -1,
 -     176,   177,   180,    -1,   176,   177,    -1,   123,    -1,   109,
 -      -1,   104,    -1,    13,    -1,    74,    -1,   178,    -1,   179,
 -     132,    -1,   132,    -1,    57,    -1,    59,    -1,   180,   181,
 -      -1,   181,    -1,   182,    -1,   184,    -1,    12,   247,    -1,
 -     183,    -1,     7,    -1,    16,    -1,    50,    -1,    95,    -1,
 -     111,    -1,   112,    -1,   141,    -1,   151,    -1,   185,    54,
 -      -1,    61,    -1,    83,    -1,    79,    -1,   143,    -1,    85,
 -      -1,   147,    -1,   187,   177,    -1,   145,    -1,   146,    -1,
 -      14,    -1,    75,   245,    -1,    88,   245,    -1,     8,    54,
 -      -1,    22,    54,    -1,    23,   190,    -1,    62,   132,    -1,
 -      63,   132,    -1,   119,    54,    -1,   121,    54,    -1,   142,
 -     241,    -1,   101,   132,    -1,    -1,   190,   191,    -1,   192,
 -     132,    -1,   121,    54,    -1,    48,    -1,    51,    -1,   114,
 -      -1,   116,    -1,   125,    -1,    27,    -1,   139,   194,    -1,
 -     194,   195,    -1,   195,    -1,   196,    54,    -1,   197,   247,
 -      -1,    21,   246,    -1,    19,    -1,    45,    -1,   102,    -1,
 -      84,    -1,    11,    -1,    81,    -1,    78,    -1,    80,    -1,
 -      77,    -1,   126,   199,    -1,   128,   132,    -1,    39,   200,
 -     201,    -1,   199,   200,    -1,   200,    -1,    20,    -1,    24,
 -      -1,    72,    -1,   105,    -1,   117,    -1,   133,    -1,   137,
 -      -1,   113,    -1,    -1,   201,   202,    -1,    38,   132,    -1,
 -     144,   205,    -1,   203,    -1,   204,    -1,    68,    -1,    90,
 -      -1,    35,    -1,    28,    -1,    92,    -1,   107,    -1,    25,
 -      -1,   149,    -1,    87,    -1,   152,    -1,     3,    -1,    29,
 -     209,    -1,   120,   177,   207,    -1,   120,    26,   207,    -1,
 -     120,    57,    26,   207,    -1,   120,    59,    26,   207,    -1,
 -     120,   178,    76,   178,   207,    -1,    -1,   207,   208,    -1,
 -      44,    -1,    52,    -1,    64,    -1,    65,    -1,    67,    -1,
 -      73,    -1,    91,    -1,    93,    -1,    94,    -1,    96,    -1,
 -      97,    -1,    98,    -1,   100,    -1,   147,    -1,   209,   210,
 -      -1,   210,    -1,   211,    54,    -1,     9,    -1,    82,    -1,
 -      86,    -1,    47,   177,   213,    -1,   213,   214,    -1,   214,
 -      -1,   215,   247,    -1,   216,   246,    -1,   131,    54,    -1,
 -     118,   132,    -1,   135,    -1,   136,    -1,    40,    -1,    41,
 -      -1,    42,    -1,    43,    -1,    35,   218,    -1,    28,   218,
 -      -1,   218,   219,    -1,   219,    -1,   220,    -1,   127,    -1,
 -       6,    -1,    10,    -1,    17,    -1,    60,    -1,    86,    -1,
 -      99,    -1,   138,   222,    -1,   222,   223,    -1,   223,    -1,
 -     224,   247,    -1,     5,    -1,    30,    -1,    46,    -1,    49,
 -      -1,   103,    -1,   129,    -1,   130,    -1,   236,    -1,   226,
 -     247,    -1,   227,   132,    -1,   228,   132,    -1,    53,   132,
 -     174,    -1,    36,    -1,    18,    54,    -1,    32,   229,    -1,
 -      70,   234,    -1,   106,   244,    -1,   124,   230,    -1,   140,
 -     178,    -1,   140,   178,   232,    -1,   143,   240,    -1,    15,
 -      -1,   134,    -1,    66,    -1,   108,    -1,   115,    -1,    71,
 -      -1,   122,    -1,   132,    -1,   132,    31,    -1,    -1,   132,
 -     166,   132,   231,    -1,    26,    -1,    -1,   232,   233,    -1,
 -     233,    -1,   110,    54,    -1,    55,   178,    -1,   234,   235,
 -      -1,   235,    -1,   132,    -1,   237,   239,   238,    -1,   237,
 -     239,   132,    -1,    55,    -1,    89,    -1,     4,    -1,    56,
 -      -1,    58,    -1,   150,    -1,    69,    -1,    52,    -1,    33,
 -      -1,   240,    54,    -1,    54,    -1,   241,   242,    -1,   242,
 -      -1,    54,    -1,   243,    -1,   167,    54,    34,    54,   168,
 -      -1,   244,   132,    -1,   132,    -1,   245,   177,    -1,   177,
 -      -1,    54,    -1,   141,    -1,    37,    -1,    54,    -1,    31,
 -      -1,   249,   169,   250,   252,   170,    -1,   156,    -1,   250,
 -     251,   155,    -1,   251,   155,    -1,   157,   166,   247,    -1,
 -     158,   166,   247,    -1,   252,   253,    -1,   253,    -1,   255,
 -     169,   254,   256,   170,    -1,   159,   166,   247,   155,    -1,
 -     123,   166,   177,    -1,   256,   257,    -1,   257,    -1,   160,
 -     166,   247,   169,   258,   170,    -1,   258,   259,   155,    -1,
 -     259,   155,    -1,   161,   166,   247,    -1,   162,   166,   247,
 -      -1,   163,   166,   247,    -1,   164,   166,   247,    -1,   165,
 -     166,   247,    -1
 +     180,     0,    -1,   181,    -1,   181,   182,   163,    -1,   182,
-      163,    -1,     1,   163,    -1,    -1,   183,    -1,   189,    -1,
-      191,    -1,   192,    -1,   198,    -1,   204,    -1,   195,    -1,
-      211,    -1,   214,    -1,   217,    -1,   220,    -1,   239,    -1,
-      184,   185,   187,    -1,   184,   185,    -1,   132,    -1,   118,
-       -1,   113,    -1,    12,    -1,    77,    -1,   186,    -1,    60,
-      141,    -1,    62,   141,    -1,   141,    -1,   187,   188,    -1,
-      188,    -1,     7,    -1,    15,    -1,    48,    -1,    64,    56,
-       -1,    90,    56,    -1,    85,    56,    -1,   103,    -1,   120,
-       -1,   121,    -1,   150,    -1,   160,    -1,   152,    56,    -1,
-       92,    56,    -1,   156,    56,    -1,   190,   185,    -1,   154,
-       -1,   155,    -1,    13,    -1,    78,   236,    -1,    96,   236,
-       -1,     8,    56,    -1,    20,    56,    -1,    21,   193,    -1,
-       65,   141,    -1,    66,   141,    -1,   128,    56,    -1,   130,
-       56,    -1,   151,   232,    -1,   109,   141,    -1,   193,   194,
-       -1,   194,    -1,    -1,    46,   141,    -1,    49,   141,    -1,
-      123,   141,    -1,   125,   141,    -1,    25,   141,    -1,   130,
-       56,    -1,   148,   196,    -1,   196,   197,    -1,   197,    -1,
-       17,    56,    -1,    43,    56,    -1,    19,   237,    -1,   110,
-       56,    -1,   111,    56,    -1,    88,   238,    -1,    83,   238,
-       -1,    86,   238,    -1,    81,   238,    -1,    91,    56,    -1,
-       11,    56,    -1,   135,   199,    -1,   137,   141,    -1,    37,
-      200,   201,    -1,   199,   200,    -1,   200,    -1,    18,    -1,
-       22,    -1,    75,    -1,   114,    -1,   126,    -1,   142,    -1,
-      146,    -1,   122,    -1,    -1,   201,   202,    -1,    36,   141,
-       -1,   153,   203,    -1,    71,    -1,    98,    -1,    33,    -1,
-       26,    -1,   100,    -1,   116,    -1,    23,    -1,   158,    -1,
-       94,    -1,   161,    -1,     3,    -1,    27,   207,    -1,    95,
-      209,    -1,   129,   185,   205,    -1,   129,   186,    79,   186,
-      205,    -1,   129,    24,   205,    -1,   129,    60,    24,   205,
-       -1,   129,    62,    24,   205,    -1,   129,   134,   205,    -1,
-       -1,   205,   206,    -1,    42,    -1,    50,    -1,    67,    -1,
-       68,    -1,    70,    -1,    76,    -1,    99,    -1,   101,    -1,
-      102,    -1,   104,    -1,   105,    -1,   106,    -1,   108,    -1,
-      156,    -1,   207,   208,    -1,   208,    -1,     9,    56,    -1,
-       89,    56,    -1,    93,    56,    -1,   209,   210,    -1,   210,
-       -1,    51,    56,    -1,    52,    56,    -1,    53,    56,    -1,
-       54,    56,    -1,    80,    56,    -1,    82,    56,    -1,    84,
-       56,    -1,    87,    56,    -1,    45,   185,   212,    -1,   212,
-      213,    -1,   213,    -1,   144,   238,    -1,   145,   238,    -1,
-      140,    56,    -1,   127,   141,    -1,    38,   237,    -1,    39,
-      237,    -1,    40,   237,    -1,    41,   237,    -1,    33,   215,
-       -1,    26,   215,    -1,   215,   216,    -1,   216,    -1,     6,
-       -1,    10,    -1,    16,    -1,    63,    -1,    93,    -1,   107,
-       -1,   136,    -1,   147,   218,    -1,   218,   219,    -1,   219,
-       -1,     5,   238,    -1,    28,   238,    -1,    44,   238,    -1,
-       47,   238,    -1,   112,   238,    -1,   138,   238,    -1,   139,
-      238,    -1,   227,    -1,    55,   141,   182,    -1,    34,    -1,
-       14,   238,    -1,   143,   238,    -1,    30,   221,    -1,    69,
-      141,    -1,   117,   141,    -1,    74,   141,    -1,    73,   225,
-       -1,   115,   235,    -1,   131,   141,    -1,   133,   222,    -1,
-      149,   186,    -1,   149,   186,   223,    -1,   152,   231,    -1,
-      124,   141,    -1,   141,    -1,   141,    29,    -1,    -1,   141,
-      174,   141,    24,    -1,   141,   174,   141,    -1,   223,   224,
-       -1,   224,    -1,   119,    56,    -1,    57,   186,    -1,   225,
-      226,    -1,   226,    -1,   141,    -1,   228,   230,   229,    -1,
-      228,   230,   141,    -1,    57,    -1,    97,    -1,     4,    -1,
-       59,    -1,    61,    -1,   159,    -1,    72,    -1,    50,    -1,
-       31,    -1,   231,    56,    -1,    56,    -1,   232,   233,    -1,
-      233,    -1,    56,    -1,   234,    -1,   175,    56,    32,    56,
-      176,    -1,   235,   141,    -1,   141,    -1,   236,   185,    -1,
-      185,    -1,    56,    -1,   150,    -1,    35,    -1,    56,    -1,
-       29,    -1,   240,   177,   241,   244,   178,    -1,   164,    -1,
-      241,   242,   163,    -1,   242,   163,    -1,   243,   174,   238,
-       -1,   165,    -1,   166,    -1,   244,   245,    -1,   245,    -1,
-      247,   177,   246,   248,   178,    -1,   167,   174,   238,   163,
-       -1,   132,   174,   185,    -1,   248,   249,    -1,   249,    -1,
-      168,   174,   238,   177,   250,   178,    -1,   250,   251,   163,
-       -1,   251,   163,    -1,   252,   174,   238,    -1,   169,    -1,
-      170,    -1,   171,    -1,   172,    -1,   173,    -1
++     163,    -1,     1,   163,    -1,    -1,   183,    -1,   194,    -1,
++     196,    -1,   197,    -1,   206,    -1,   214,    -1,   201,    -1,
++     223,    -1,   228,    -1,   232,    -1,   236,    -1,   259,    -1,
++     184,   185,   188,    -1,   184,   185,    -1,   132,    -1,   118,
++      -1,   113,    -1,    12,    -1,    77,    -1,   186,    -1,   187,
++     141,    -1,   141,    -1,    60,    -1,    62,    -1,   188,   189,
++      -1,   189,    -1,   190,    -1,   192,    -1,   191,    -1,     7,
++      -1,    15,    -1,    48,    -1,   103,    -1,   120,    -1,   121,
++      -1,   150,    -1,   160,    -1,   193,    56,    -1,    64,    -1,
++      90,    -1,    85,    -1,   152,    -1,    92,    -1,   156,    -1,
++     195,   185,    -1,   154,    -1,   155,    -1,    13,    -1,    78,
++     256,    -1,    96,   256,    -1,     8,    56,    -1,    20,    56,
++      -1,    21,   198,    -1,    65,   141,    -1,    66,   141,    -1,
++     128,    56,    -1,   130,    56,    -1,   151,   252,    -1,   109,
++     141,    -1,   198,   199,    -1,   199,    -1,    -1,   200,   141,
++      -1,   130,    56,    -1,    46,    -1,    49,    -1,   123,    -1,
++     125,    -1,    25,    -1,   148,   202,    -1,   202,   203,    -1,
++     203,    -1,   204,    56,    -1,   205,   258,    -1,    19,   257,
++      -1,    17,    -1,    43,    -1,   110,    -1,   111,    -1,    91,
++      -1,    11,    -1,    88,    -1,    83,    -1,    86,    -1,    81,
++      -1,   135,   207,    -1,   137,   141,    -1,    37,   208,   209,
++      -1,   207,   208,    -1,   208,    -1,    18,    -1,    22,    -1,
++      75,    -1,   114,    -1,   126,    -1,   142,    -1,   146,    -1,
++     122,    -1,    -1,   209,   210,    -1,    36,   141,    -1,   153,
++     213,    -1,   211,    -1,   212,    -1,    71,    -1,    98,    -1,
++      33,    -1,    26,    -1,   100,    -1,   116,    -1,    23,    -1,
++     158,    -1,    94,    -1,   161,    -1,     3,    -1,    27,   217,
++      -1,    95,   220,    -1,   129,   185,   215,    -1,   129,   186,
++      79,   186,   215,    -1,   129,    24,   215,    -1,   129,    60,
++      24,   215,    -1,   129,    62,    24,   215,    -1,   129,   134,
++     215,    -1,    -1,   215,   216,    -1,    42,    -1,    50,    -1,
++      67,    -1,    68,    -1,    70,    -1,    76,    -1,    99,    -1,
++     101,    -1,   102,    -1,   104,    -1,   105,    -1,   106,    -1,
++     108,    -1,   156,    -1,   217,   218,    -1,   218,    -1,   219,
++      56,    -1,     9,    -1,    89,    -1,    93,    -1,   220,   221,
++      -1,   221,    -1,   222,    56,    -1,    51,    -1,    52,    -1,
++      53,    -1,    54,    -1,    80,    -1,    82,    -1,    84,    -1,
++      87,    -1,    45,   185,   224,    -1,   224,   225,    -1,   225,
++      -1,   226,   258,    -1,   227,   257,    -1,   140,    56,    -1,
++     127,   141,    -1,   144,    -1,   145,    -1,    38,    -1,    39,
++      -1,    40,    -1,    41,    -1,    33,   229,    -1,    26,   229,
++      -1,   229,   230,    -1,   230,    -1,   231,    -1,   136,    -1,
++       6,    -1,    10,    -1,    16,    -1,    63,    -1,    93,    -1,
++     107,    -1,   147,   233,    -1,   233,   234,    -1,   234,    -1,
++     235,   258,    -1,     5,    -1,    28,    -1,    44,    -1,    47,
++      -1,   112,    -1,   138,    -1,   139,    -1,   247,    -1,   237,
++     258,    -1,   238,   141,    -1,   239,   141,    -1,    55,   141,
++     182,    -1,    34,    -1,    30,   240,    -1,    73,   245,    -1,
++     115,   255,    -1,   133,   241,    -1,   149,   186,   243,    -1,
++     152,   251,    -1,    14,    -1,   143,    -1,    69,    -1,   117,
++      -1,   124,    -1,    74,    -1,   131,    -1,   141,    -1,   141,
++      29,    -1,    -1,   141,   174,   141,   242,    -1,    24,    -1,
++      -1,    -1,   243,   244,    -1,   119,    56,    -1,    57,   186,
++      -1,   245,   246,    -1,   246,    -1,   141,    -1,   248,   250,
++     249,    -1,   248,   250,   141,    -1,    57,    -1,    97,    -1,
++       4,    -1,    59,    -1,    61,    -1,   159,    -1,    72,    -1,
++      50,    -1,    31,    -1,   251,    56,    -1,    56,    -1,   252,
++     253,    -1,   253,    -1,    56,    -1,   254,    -1,   175,    56,
++      32,    56,   176,    -1,   255,   141,    -1,   141,    -1,   256,
++     185,    -1,   185,    -1,    56,    -1,   150,    -1,    35,    -1,
++      56,    -1,    29,    -1,   260,   177,   261,   264,   178,    -1,
++     164,    -1,   261,   262,   163,    -1,   262,   163,    -1,   263,
++     174,   258,    -1,   165,    -1,   166,    -1,   264,   265,    -1,
++     265,    -1,   267,   177,   266,   268,   178,    -1,   167,   174,
++     258,   163,    -1,   132,   174,   185,    -1,   268,   269,    -1,
++     269,    -1,   168,   174,   258,   177,   270,   178,    -1,   270,
++     271,   163,    -1,   271,   163,    -1,   272,   174,   258,    -1,
++     169,    -1,   170,    -1,   171,    -1,   172,    -1,   173,    -1
  };
  
  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
  static const yytype_uint16 yyrline[] =
  {
-        0,   313,   313,   317,   318,   319,   333,   334,   335,   336,
-      337,   338,   339,   340,   341,   342,   343,   344,   345,   353,
-      361,   372,   373,   374,   375,   376,   380,   381,   383,   388,
-      393,   395,   400,   401,   402,   403,   404,   405,   406,   407,
-      408,   409,   410,   411,   412,   413,   422,   432,   433,   443,
-      445,   447,   458,   465,   467,   472,   474,   476,   478,   480,
-      482,   487,   492,   498,   505,   507,   509,   511,   513,   515,
-      532,   537,   542,   550,   552,   554,   556,   558,   560,   562,
-      564,   566,   568,   570,   580,   582,   591,   601,   606,   614,
-      615,   616,   617,   618,   619,   620,   621,   626,   629,   637,
-      647,   656,   665,   674,   675,   679,   680,   681,   682,   683,
-      684,   685,   694,   698,   702,   710,   718,   726,   741,   756,
-      769,   772,   780,   781,   782,   783,   784,   785,   786,   787,
-      788,   789,   790,   791,   792,   793,   797,   802,   810,   811,
-      812,   816,   821,   829,   830,   831,   832,   833,   834,   835,
-      836,   844,   854,   859,   867,   868,   869,   870,   871,   872,
-      873,   874,   882,   884,   889,   894,   902,   903,   904,   905,
-      906,   907,   908,   924,   929,   934,   942,   943,   944,   945,
-      946,   947,   948,   957,   958,   973,   979,   986,   993,   995,
-     1002,  1009,  1021,  1023,  1025,  1037,  1039,  1046,  1053,  1055,
-     1065,  1072,  1082,  1091,  1093,  1098,  1103,  1111,  1113,  1121,
-     1126,  1134,  1159,  1166,  1176,  1177,  1181,  1182,  1183,  1184,
-     1188,  1189,  1190,  1200,  1205,  1213,  1218,  1226,  1228,  1232,
-     1237,  1242,  1250,  1255,  1263,  1272,  1273,  1277,  1278,  1287,
-     1305,  1309,  1314,  1322,  1327,  1328,  1332,  1337,  1345,  1350,
-     1355,  1360,  1365,  1373,  1378,  1383,  1391,  1396,  1397,  1398,
-     1399,  1400
 -       0,   318,   318,   322,   323,   324,   338,   339,   340,   341,
 -     342,   343,   344,   345,   346,   347,   348,   349,   350,   358,
 -     364,   373,   374,   375,   376,   377,   381,   382,   387,   392,
 -     394,   399,   400,   404,   405,   406,   411,   416,   417,   418,
 -     419,   420,   421,   422,   423,   427,   432,   433,   434,   435,
 -     436,   437,   447,   455,   456,   466,   468,   470,   481,   483,
 -     485,   490,   492,   494,   496,   498,   500,   506,   507,   517,
 -     519,   531,   532,   533,   534,   535,   536,   545,   550,   551,
 -     555,   557,   559,   564,   565,   566,   567,   568,   572,   573,
 -     574,   575,   584,   586,   595,   603,   604,   608,   609,   610,
 -     611,   612,   613,   614,   615,   620,   621,   631,   641,   650,
 -     665,   670,   671,   675,   676,   680,   681,   682,   683,   684,
 -     685,   686,   695,   699,   704,   709,   722,   735,   744,   745,
 -     750,   751,   752,   753,   754,   755,   756,   757,   758,   759,
 -     760,   761,   762,   763,   767,   769,   774,   779,   780,   781,
 -     790,   795,   797,   802,   804,   806,   808,   813,   814,   818,
 -     819,   820,   821,   830,   832,   837,   844,   854,   856,   868,
 -     869,   870,   871,   872,   873,   882,   886,   887,   891,   896,
 -     897,   898,   899,   900,   901,   902,   911,   912,   919,   926,
 -     942,   961,   966,   968,   970,   972,   974,   976,   978,   980,
 -     985,   986,   990,   991,   992,   996,   997,  1001,  1003,  1007,
 -    1011,  1016,  1018,  1022,  1024,  1028,  1029,  1033,  1034,  1038,
 -    1053,  1058,  1066,  1067,  1071,  1072,  1073,  1074,  1078,  1079,
 -    1080,  1090,  1091,  1095,  1097,  1102,  1104,  1108,  1113,  1114,
 -    1118,  1119,  1123,  1132,  1133,  1137,  1138,  1147,  1162,  1166,
 -    1167,  1171,  1172,  1176,  1177,  1181,  1186,  1190,  1194,  1195,
 -    1199,  1204,  1205,  1209,  1211,  1213,  1215,  1217
++       0,   333,   333,   337,   338,   339,   353,   354,   355,   356,
++     357,   358,   359,   360,   361,   362,   363,   364,   365,   373,
++     380,   390,   391,   392,   393,   394,   398,   399,   404,   409,
++     411,   416,   418,   423,   424,   428,   433,   434,   435,   436,
++     437,   438,   439,   440,   444,   449,   450,   451,   452,   453,
++     454,   462,   472,   473,   483,   485,   487,   498,   505,   507,
++     512,   514,   516,   518,   520,   522,   527,   532,   538,   545,
++     547,   559,   560,   561,   562,   563,   572,   577,   582,   590,
++     592,   594,   600,   601,   602,   603,   604,   605,   609,   610,
++     611,   612,   621,   623,   632,   642,   647,   655,   656,   657,
++     658,   659,   660,   661,   662,   667,   670,   678,   688,   697,
++     712,   717,   718,   722,   723,   728,   729,   730,   731,   732,
++     733,   734,   743,   747,   751,   759,   767,   775,   790,   805,
++     818,   821,   829,   830,   831,   832,   833,   834,   835,   836,
++     837,   838,   839,   840,   841,   842,   846,   851,   859,   864,
++     865,   866,   870,   875,   883,   888,   889,   890,   891,   892,
++     893,   894,   895,   903,   913,   918,   926,   928,   930,   932,
++     937,   938,   942,   943,   944,   945,   953,   955,   960,   965,
++     973,   975,   987,   988,   989,   990,   991,   992,  1000,  1005,
++    1010,  1018,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1038,
++    1039,  1046,  1053,  1069,  1088,  1093,  1095,  1097,  1099,  1101,
++    1108,  1113,  1114,  1118,  1119,  1120,  1124,  1125,  1129,  1136,
++    1146,  1155,  1160,  1162,  1167,  1170,  1178,  1180,  1188,  1193,
++    1201,  1226,  1233,  1243,  1244,  1248,  1249,  1250,  1251,  1255,
++    1256,  1257,  1267,  1272,  1280,  1285,  1293,  1295,  1299,  1304,
++    1309,  1317,  1322,  1330,  1339,  1340,  1344,  1345,  1354,  1372,
++    1376,  1381,  1389,  1394,  1395,  1399,  1404,  1412,  1417,  1422,
++    1427,  1432,  1440,  1445,  1450,  1458,  1463,  1464,  1465,  1466,
++    1467
  };
  #endif
  
@@@ -977,18 -956,24 +980,25 @@@ static const char *const yytname[] 
    "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter",
    "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'",
    "$accept", "configuration", "command_list", "command", "server_command",
-   "client_type", "address", "ip_address", "option_list", "option",
-   "unpeer_command", "unpeer_keyword", "other_mode_command",
-   "authentication_command", "crypto_command_list", "crypto_command",
-   "orphan_mode_command", "tos_option_list", "tos_option",
-   "monitoring_command", "stats_list", "stat", "filegen_option_list",
-   "filegen_option", "filegen_type", "access_control_command",
-   "ac_flag_list", "access_control_flag", "discard_option_list",
-   "discard_option", "mru_option_list", "mru_option", "fudge_command",
-   "fudge_factor_list", "fudge_factor", "system_option_command",
-   "system_option_list", "system_option", "tinker_command",
-   "tinker_option_list", "tinker_option", "miscellaneous_command",
-   "drift_parm", "variable_assign", "trap_option_list", "trap_option",
+   "client_type", "address", "ip_address", "address_fam", "option_list",
+   "option", "option_flag", "option_flag_keyword", "option_int",
+   "option_int_keyword", "unpeer_command", "unpeer_keyword",
+   "other_mode_command", "authentication_command", "crypto_command_list",
+   "crypto_command", "crypto_str_keyword", "orphan_mode_command",
+   "tos_option_list", "tos_option", "tos_option_int_keyword",
+   "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
+   "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
+   "filegen_type", "access_control_command", "ac_flag_list",
+   "access_control_flag", "discard_option_list", "discard_option",
 -  "discard_option_keyword", "fudge_command", "fudge_factor_list",
++  "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",
+   "system_option_command", "system_option_list", "system_option",
+   "system_option_flag_keyword", "tinker_command", "tinker_option_list",
+   "tinker_option", "tinker_option_keyword", "miscellaneous_command",
+   "misc_cmd_dbl_keyword", "misc_cmd_str_keyword",
+   "misc_cmd_str_lcl_keyword", "drift_parm", "variable_assign",
+   "t_default_or_zero", "trap_option_list", "trap_option",
    "log_config_list", "log_config_command", "interface_command",
    "interface_nic", "nic_rule_class", "nic_rule_action", "integer_list",
    "integer_list_range", "integer_list_range_elt", "integer_range",
@@@ -1027,35 -1011,35 +1037,37 @@@ static const yytype_uint16 yytoknum[] 
  # endif
  
  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
- static const yytype_uint8 yyr1[] =
+ static const yytype_uint16 yyr1[] =
  {
 -       0,   171,   172,   173,   173,   173,   174,   174,   174,   174,
 -     174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
 -     175,   176,   176,   176,   176,   176,   177,   177,   178,   179,
 -     179,   180,   180,   181,   181,   181,   182,   183,   183,   183,
 -     183,   183,   183,   183,   183,   184,   185,   185,   185,   185,
 -     185,   185,   186,   187,   187,   188,   188,   188,   189,   189,
 -     189,   189,   189,   189,   189,   189,   189,   190,   190,   191,
 -     191,   192,   192,   192,   192,   192,   192,   193,   194,   194,
 -     195,   195,   195,   196,   196,   196,   196,   196,   197,   197,
 -     197,   197,   198,   198,   198,   199,   199,   200,   200,   200,
 -     200,   200,   200,   200,   200,   201,   201,   202,   202,   202,
 -     202,   203,   203,   204,   204,   205,   205,   205,   205,   205,
 -     205,   205,   206,   206,   206,   206,   206,   206,   207,   207,
 -     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
 -     208,   208,   208,   208,   209,   209,   210,   211,   211,   211,
 -     212,   213,   213,   214,   214,   214,   214,   215,   215,   216,
 -     216,   216,   216,   217,   217,   218,   218,   219,   219,   220,
 -     220,   220,   220,   220,   220,   221,   222,   222,   223,   224,
 -     224,   224,   224,   224,   224,   224,   225,   225,   225,   225,
 -     225,   225,   225,   225,   225,   225,   225,   225,   225,   225,
 -     226,   226,   227,   227,   227,   228,   228,   229,   229,   229,
 -     230,   231,   231,   232,   232,   233,   233,   234,   234,   235,
 -     236,   236,   237,   237,   238,   238,   238,   238,   239,   239,
 -     239,   240,   240,   241,   241,   242,   242,   243,   244,   244,
 -     245,   245,   246,   246,   246,   247,   247,   248,   249,   250,
 -     250,   251,   251,   252,   252,   253,   254,   255,   256,   256,
 -     257,   258,   258,   259,   259,   259,   259,   259
 +       0,   179,   180,   181,   181,   181,   182,   182,   182,   182,
 +     182,   182,   182,   182,   182,   182,   182,   182,   182,   183,
-      183,   184,   184,   184,   184,   184,   185,   185,   185,   186,
-      187,   187,   188,   188,   188,   188,   188,   188,   188,   188,
-      188,   188,   188,   188,   188,   188,   189,   190,   190,   191,
-      191,   191,   192,   192,   192,   192,   192,   192,   192,   192,
-      192,   193,   193,   193,   194,   194,   194,   194,   194,   194,
-      195,   196,   196,   197,   197,   197,   197,   197,   197,   197,
-      197,   197,   197,   197,   198,   198,   198,   199,   199,   200,
-      200,   200,   200,   200,   200,   200,   200,   201,   201,   202,
-      202,   202,   202,   202,   202,   203,   203,   203,   203,   203,
-      203,   203,   204,   204,   204,   204,   204,   204,   204,   204,
-      205,   205,   206,   206,   206,   206,   206,   206,   206,   206,
-      206,   206,   206,   206,   206,   206,   207,   207,   208,   208,
-      208,   209,   209,   210,   210,   210,   210,   210,   210,   210,
-      210,   211,   212,   212,   213,   213,   213,   213,   213,   213,
-      213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
-      216,   216,   216,   217,   218,   218,   219,   219,   219,   219,
-      219,   219,   219,   220,   220,   220,   220,   220,   220,   220,
-      220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
-      221,   221,   221,   222,   222,   223,   223,   224,   224,   225,
-      225,   226,   227,   227,   228,   228,   229,   229,   229,   229,
-      230,   230,   230,   231,   231,   232,   232,   233,   233,   234,
-      235,   235,   236,   236,   237,   237,   237,   238,   238,   239,
-      240,   241,   241,   242,   243,   243,   244,   244,   245,   246,
-      247,   248,   248,   249,   250,   250,   251,   252,   252,   252,
-      252,   252
++     183,   184,   184,   184,   184,   184,   185,   185,   186,   187,
++     187,   188,   188,   189,   189,   190,   191,   191,   191,   191,
++     191,   191,   191,   191,   192,   193,   193,   193,   193,   193,
++     193,   194,   195,   195,   196,   196,   196,   197,   197,   197,
++     197,   197,   197,   197,   197,   197,   198,   198,   198,   199,
++     199,   200,   200,   200,   200,   200,   201,   202,   202,   203,
++     203,   203,   204,   204,   204,   204,   204,   204,   205,   205,
++     205,   205,   206,   206,   206,   207,   207,   208,   208,   208,
++     208,   208,   208,   208,   208,   209,   209,   210,   210,   210,
++     210,   211,   211,   212,   212,   213,   213,   213,   213,   213,
++     213,   213,   214,   214,   214,   214,   214,   214,   214,   214,
++     215,   215,   216,   216,   216,   216,   216,   216,   216,   216,
++     216,   216,   216,   216,   216,   216,   217,   217,   218,   219,
++     219,   219,   220,   220,   221,   222,   222,   222,   222,   222,
++     222,   222,   222,   223,   224,   224,   225,   225,   225,   225,
++     226,   226,   227,   227,   227,   227,   228,   228,   229,   229,
++     230,   230,   231,   231,   231,   231,   231,   231,   232,   233,
++     233,   234,   235,   235,   235,   235,   235,   235,   235,   236,
++     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
++     236,   237,   237,   238,   238,   238,   239,   239,   240,   240,
++     240,   241,   242,   242,   243,   243,   244,   244,   245,   245,
++     246,   247,   247,   248,   248,   249,   249,   249,   249,   250,
++     250,   250,   251,   251,   252,   252,   253,   253,   254,   255,
++     255,   256,   256,   257,   257,   257,   258,   258,   259,   260,
++     261,   261,   262,   263,   263,   264,   264,   265,   266,   267,
++     268,   268,   269,   270,   270,   271,   272,   272,   272,   272,
++     272
  };
  
  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@@ -1063,31 -1047,31 +1075,33 @@@ static const yytype_uint8 yyr2[] 
  {
         0,     2,     1,     3,     2,     2,     0,     1,     1,     1,
         1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
-        2,     1,     1,     1,     1,     1,     1,     2,     2,     1,
-        2,     1,     1,     1,     1,     2,     2,     2,     1,     1,
-        1,     1,     1,     2,     2,     2,     2,     1,     1,     1,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     1,     0,     2,     2,     2,     2,     2,     2,
-        2,     2,     1,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     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,
+        2,     1,     1,     1,     1,     1,     1,     2,     1,     1,
 -       1,     2,     1,     1,     1,     2,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     2,     1,     1,     1,     1,
 -       1,     1,     2,     1,     1,     1,     2,     2,     2,     2,
 -       2,     2,     2,     2,     2,     2,     2,     0,     2,     2,
 -       2,     1,     1,     1,     1,     1,     1,     2,     2,     1,
 -       2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
++       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     2,     1,     1,     1,     1,     1,
++       1,     2,     1,     1,     1,     2,     2,     2,     2,     2,
++       2,     2,     2,     2,     2,     2,     2,     1,     0,     2,
++       2,     1,     1,     1,     1,     1,     2,     2,     1,     2,
++       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+        1,     1,     2,     2,     3,     2,     1,     1,     1,     1,
+        1,     1,     1,     1,     1,     0,     2,     2,     2,     1,
+        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     2,     3,     3,     4,     4,     5,     0,     2,
 -       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
 -       3,     2,     1,     2,     2,     2,     2,     1,     1,     1,
 -       1,     1,     1,     2,     2,     2,     1,     1,     1,     1,
 -       1,     1,     1,     1,     1,     2,     2,     1,     2,     1,
 -       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
 -       3,     1,     2,     2,     2,     2,     2,     2,     3,     2,
 -       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
 -       4,     1,     0,     2,     1,     2,     2,     2,     1,     1,
 -       3,     3,     1,     1,     1,     1,     1,     1,     1,     1,
 -       1,     2,     1,     2,     1,     1,     1,     5,     2,     1,
 -       2,     1,     1,     1,     1,     1,     1,     5,     1,     3,
 -       2,     3,     3,     2,     1,     5,     4,     3,     2,     1,
 -       6,     3,     2,     3,     3,     3,     3,     3
 +       1,     1,     2,     2,     3,     5,     3,     4,     4,     3,
 +       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     1,     1,     1,     2,     1,     2,     2,
-        2,     2,     1,     2,     2,     2,     2,     2,     2,     2,
-        2,     3,     2,     1,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     1,     1,     1,     1,     1,
-        1,     1,     1,     2,     2,     1,     2,     2,     2,     2,
-        2,     2,     2,     1,     3,     1,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     3,     2,     2,
-        1,     2,     0,     4,     3,     2,     1,     2,     2,     2,
-        1,     1,     3,     3,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     2,     1,     2,     1,     1,     1,     5,
-        2,     1,     2,     1,     1,     1,     1,     1,     1,     5,
-        1,     3,     2,     3,     1,     1,     2,     1,     5,     4,
-        3,     2,     1,     6,     3,     2,     3,     1,     1,     1,
-        1,     1
++       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,
++       1,     1,     1,     1,     1,     1,     2,     2,     2,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
++       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
++       2,     2,     2,     3,     1,     2,     2,     2,     2,     3,
++       2,     1,     1,     1,     1,     1,     1,     1,     1,     2,
++       0,     4,     1,     0,     0,     2,     2,     2,     2,     1,
++       1,     3,     3,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     2,     1,     2,     1,     1,     1,     5,     2,
++       1,     2,     1,     1,     1,     1,     1,     1,     5,     1,
++       3,     2,     3,     1,     1,     2,     1,     5,     4,     3,
++       2,     1,     6,     3,     2,     3,     1,     1,     1,     1,
++       1
  };
  
  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
     means the default is an error.  */
  static const yytype_uint16 yydefact[] =
  {
-        0,     0,     0,    24,    49,     0,     0,    63,     0,     0,
-      202,     0,   185,     0,     0,     0,   214,     0,     0,     0,
-        0,     0,    25,     0,     0,     0,   215,     0,    23,     0,
-        0,    22,     0,     0,     0,     0,     0,    21,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,    47,    48,   240,
 -       0,     0,     0,    24,    55,   200,     0,     0,    67,     0,
 -       0,   209,     0,   191,     0,     0,     0,   222,     0,     0,
 -     202,     0,   205,    25,     0,     0,   223,     0,    23,     0,
 -     203,    22,   204,     0,     0,     0,   206,    21,     0,     0,
 -       0,   201,     0,     0,     0,     0,     0,    53,    54,   248,
++       0,     0,     0,    24,    54,   211,     0,    68,     0,     0,
++     220,     0,   204,     0,     0,     0,   233,     0,     0,   213,
++       0,   216,    25,     0,     0,     0,   234,     0,    23,     0,
++     214,    22,   215,     0,     0,     0,   217,    21,     0,     0,
++       0,   212,     0,     0,     0,     0,     0,    52,    53,   259,
         0,     2,     0,     7,     0,     8,     0,     9,    10,    13,
-       11,    12,    14,    15,    16,    17,   183,     0,    18,     0,
-        5,    52,   238,   237,   186,    53,     0,     0,     0,     0,
-        0,     0,    54,    62,   166,   167,   168,   169,   170,   171,
-      172,   163,   165,     0,     0,     0,   112,   137,   200,   188,
-      162,    89,    90,    91,    92,    96,    93,    94,    95,    97,
-        0,     0,    29,     0,    26,     6,    55,    56,   189,   211,
-      192,   210,   191,   233,    50,     0,     0,     0,     0,     0,
-        0,     0,     0,   113,   142,    51,    60,   231,   193,   190,
-      199,    57,   120,     0,     0,   120,   120,    26,    58,   194,
-        0,   195,    84,    88,    85,   187,     0,     0,     0,     0,
-        0,     0,     0,   173,   175,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,    70,    72,   196,   227,
-        0,    59,   226,   228,   224,   198,     1,     0,     4,    20,
-       46,   222,   221,   220,     0,     0,    68,    64,    65,    66,
-       67,    69,    61,   164,   138,   139,   140,   136,   201,    86,
-       27,    28,     0,     0,     0,     0,     0,     0,     0,     0,
-      151,   153,   184,   209,   232,   143,   144,   145,   146,   147,
-      148,   149,   150,   141,   230,   116,   120,   120,   119,   114,
-        0,     0,    87,   176,   177,   178,   179,   180,   181,   182,
-      174,    83,    73,   236,   234,   235,    75,    74,    81,    79,
-       80,    78,    82,    76,    77,    71,     0,     0,   197,   206,
-        0,   225,   223,     3,    32,    33,    34,     0,     0,     0,
-        0,    38,    39,    40,    41,     0,     0,    42,    19,    31,
-      216,   217,   218,   213,   219,   212,   244,   245,     0,     0,
-        0,   104,   103,     0,   101,   102,     0,    98,   158,   159,
-      160,   161,   157,   156,   154,   155,   152,   122,   123,   124,
-      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-      135,   121,   117,   118,   120,   204,   208,   207,   205,     0,
-       35,    37,    36,    44,    43,    45,    30,     0,     0,     0,
-      247,     0,   242,     0,    99,   111,   107,   109,   105,   106,
-      108,   110,   100,   115,   203,     0,     0,   241,   239,   246,
-        0,   243,   229,   250,     0,     0,     0,     0,     0,   252,
-        0,     0,   248,   251,   249,     0,     0,   257,   258,   259,
-      260,   261,     0,     0,     0,   253,     0,   255,     0,   254,
-      256
 -      11,    12,    14,    15,    16,    17,     0,     0,     0,   186,
 -       0,    18,     0,     5,    58,   192,    59,    60,   169,   170,
 -     171,   172,   173,   174,   168,   164,   166,   167,   147,   148,
 -     149,   122,   145,     0,   207,   193,   163,    97,    98,    99,
 -     100,   104,   101,   102,   103,   105,    29,    30,    28,     0,
 -      26,     0,     6,    61,    62,   219,   194,   218,   241,    56,
 -      57,    66,   239,   195,    63,   128,    29,    30,   128,    26,
 -      64,     0,   196,    92,    96,    93,   179,   180,   181,   182,
 -     183,   184,   185,   175,   177,     0,    87,    83,     0,    84,
 -      91,    89,    90,    88,    86,    85,    77,    79,     0,     0,
 -     197,   235,     0,    65,   234,   236,   232,   199,     1,     0,
 -       4,    20,    52,   246,   245,   187,   188,   189,   230,   229,
 -     228,     0,     0,    76,    71,    72,    73,    74,     0,    75,
 -      68,     0,   165,   144,   146,   208,    94,   159,   160,   161,
 -     162,     0,     0,   157,   158,   150,   152,     0,     0,    27,
 -     190,   217,   240,   238,   124,   128,   128,   123,     0,     0,
 -      95,   176,   178,   244,   242,   243,    82,    78,    80,    81,
 -       0,     0,   198,   214,     0,   233,   231,     3,    37,     0,
 -      38,    39,    46,    48,    47,    50,    40,    41,    42,    43,
 -      49,    51,    44,    19,    32,    33,    36,    34,     0,   224,
 -     225,   226,   221,   227,   220,     0,     0,     0,     0,    70,
 -      69,   114,   113,     0,   111,   112,     0,   106,   109,   110,
 -     156,   155,   151,   153,   154,   130,   131,   132,   133,   134,
 -     135,   136,   137,   138,   139,   140,   141,   142,   143,   129,
 -     125,   126,   128,   212,   216,   215,   213,     0,    35,    31,
 -      45,     0,     0,     0,     0,     0,   254,     0,   250,   107,
 -     121,   117,   119,   115,   116,   118,   120,   108,   127,   211,
 -     210,     0,   251,   252,     0,   249,   247,   253,     0,   237,
 -     257,     0,     0,     0,     0,     0,   259,     0,     0,   255,
 -     258,   256,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,   260,     0,   262,   263,
 -     264,   265,   266,   267,   261
++      11,    12,    14,    15,    16,    17,     0,     0,     0,   199,
++       0,    18,     0,     5,    57,    58,    75,    71,    72,    73,
++      74,     0,    59,    67,     0,   182,   183,   184,   185,   186,
++     187,   181,   177,   179,   180,   149,   150,   151,   122,   147,
++       0,   218,   205,   176,    97,    98,    99,   100,   104,   101,
++     102,   103,   105,    29,    30,    28,     0,    26,     0,     6,
++      60,    61,   230,   206,   229,   252,    55,   155,   156,   157,
++     158,   159,   160,   161,   162,   123,   153,     0,    56,    65,
++     250,   207,    62,   130,    29,    30,   130,   130,    26,    63,
++       0,   208,    92,    96,    93,   192,   193,   194,   195,   196,
++     197,   198,   188,   190,     0,    87,    82,     0,    83,    91,
++      89,    90,    88,    86,    84,    85,    76,    78,     0,     0,
++     224,   246,     0,    64,   245,   247,   243,   210,     1,     0,
++       4,    20,    51,   257,   256,   200,   201,   202,   241,   240,
++     239,     0,     0,    70,    66,    69,   178,   146,   148,   219,
++      94,   172,   173,   174,   175,     0,     0,   170,   171,   163,
++     165,     0,     0,    27,   203,   228,   251,   152,   154,   249,
++     126,   130,   130,   129,   124,     0,     0,    95,   189,   191,
++     255,   253,   254,    81,    77,    79,    80,   209,     0,   244,
++     242,     3,    36,    37,    38,    45,    47,    46,    49,    39,
++      40,    41,    42,    48,    50,    43,    19,    32,    33,    35,
++      34,     0,   235,   236,   237,   232,   238,   231,   263,   264,
++       0,     0,     0,   114,   113,     0,   111,   112,     0,   106,
++     109,   110,   169,   168,   164,   166,   167,   132,   133,   134,
++     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
++     145,   131,   127,   128,   130,   223,     0,     0,   225,     0,
++      31,    44,     0,     0,     0,   266,     0,   261,     0,   107,
++     121,   117,   119,   115,   116,   118,   120,   108,   125,   222,
++     221,   227,   226,     0,     0,   260,   258,   265,     0,   262,
++     248,   269,     0,     0,     0,     0,     0,   271,     0,     0,
++     267,   270,   268,     0,     0,   276,   277,   278,   279,   280,
++       0,     0,     0,   272,     0,   274,     0,   273,   275
  };
  
  /* YYDEFGOTO[NTERM-NUM].  */
  static const yytype_int16 yydefgoto[] =
  {
-       -1,    50,    51,    52,    53,    54,   123,   114,   288,   289,
-       55,    56,    57,    58,    82,    83,    59,   176,   177,    60,
-      152,   109,   209,   307,   362,    61,   235,   331,    96,    97,
-      133,   134,    62,   220,   221,    63,    91,    92,    64,   163,
-      164,    65,    99,   151,   268,   269,   120,   121,    66,    67,
-      295,   194,   185,   181,   182,   183,   138,   124,   256,    74,
-       68,    69,   298,   299,   300,   349,   350,   375,   351,   378,
-      379,   392,   393,   394
 -      -1,    50,    51,    52,    53,    54,   118,   110,   111,   253,
 -     254,   255,   256,   257,   258,    55,    56,    57,    58,    77,
 -     190,   191,    59,   156,   157,   158,   159,    60,   133,   105,
 -     196,   277,   278,   279,   327,    61,   214,   299,    91,    92,
 -      93,    62,   205,   206,   207,   208,    63,    85,    86,    87,
 -      64,   143,   144,   145,    65,    66,    67,    68,    95,   132,
 -     330,   232,   233,   116,   117,    69,    70,   264,   181,   167,
 -     163,   164,   165,   123,   119,   226,   175,    71,    72,   267,
 -     268,   315,   316,   342,   317,   345,   346,   359,   360
++      -1,    50,    51,    52,    53,    54,   125,   117,   118,   266,
++     267,   268,   269,   270,   271,    55,    56,    57,    58,    82,
++      83,    84,    59,   176,   177,   178,   179,    60,   152,   112,
++     210,   289,   290,   291,   337,    61,   230,   311,    98,    99,
++     100,   135,   136,   137,    62,   219,   220,   221,   222,    63,
++      92,    93,    94,    64,   162,   163,   164,    65,    66,    67,
++      68,   102,   151,   340,   247,   318,   123,   124,    69,    70,
++     277,   201,   187,   183,   184,   185,   141,   126,   243,   195,
++      71,    72,   280,   281,   282,   324,   325,   353,   326,   356,
++     357,   370,   371,   372
  };
  
  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     STATE-NUM.  */
- #define YYPACT_NINF -159
 -#define YYPACT_NINF -145
++#define YYPACT_NINF -163
  static const yytype_int16 yypact[] =
  {
-      124,  -139,   -28,  -159,  -159,    -3,   -25,   -17,    34,    -2,
-     -106,    34,  -159,    49,   -51,  -103,  -159,   -94,   -82,   -76,
-      -75,   -73,  -159,   -51,   178,   -51,  -159,   -71,  -159,   -69,
-      -68,  -159,   -57,    29,    15,    33,   -49,  -159,   -48,    49,
-      -45,    -3,    14,   499,   -42,   -36,    42,  -159,  -159,  -159,
-      100,   272,   -61,  -159,   -51,  -159,   -51,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,     2,  -159,   -74,
-     -159,  -159,  -159,  -159,  -159,  -159,   -37,   -31,   -27,     5,
-       18,    53,   -17,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,    34,  -159,    56,    87,    92,    -2,  -159,    76,  -159,
-       34,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-       21,    23,  -159,   174,  -159,   417,  -159,  -159,  -159,  -159,
-      -75,  -159,  -159,  -159,   -51,    99,   110,   111,   116,   117,
-      118,   120,   131,   178,  -159,   -51,  -159,  -159,    39,  -159,
-     -159,  -159,  -159,    -7,    -6,  -159,  -159,   109,  -159,  -159,
-       20,  -159,    49,  -159,  -159,  -159,    -3,    -3,    -3,    -3,
-       -3,    -3,    -3,    14,  -159,   140,   143,   -10,   144,    -3,
-       -3,    -3,    -3,   147,   148,   149,   499,  -159,   -43,  -159,
-      150,   -36,  -159,  -159,  -159,   151,  -159,    46,  -159,   262,
-     -159,  -159,  -159,  -159,     1,  -102,  -159,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,   -20,
-     -159,  -159,   -10,   -10,   -10,   -10,    69,   155,    -3,    -3,
-      174,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,   399,  -159,  -159,   399,   399,
-      -42,    75,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,   -42,   161,   -43,  -159,
-      186,  -159,  -159,  -159,  -159,  -159,  -159,   166,   167,   168,
-      169,  -159,  -159,  -159,  -159,   170,   171,  -159,   262,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -117,    65,
-       61,  -159,  -159,    95,  -159,  -159,     7,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,  -159,   399,   399,  -159,   214,  -159,  -159,  -159,   184,
-     -159,  -159,  -159,  -159,  -159,  -159,  -159,    70,    80,  -109,
-     -159,    68,  -159,    -3,  -159,  -159,  -159,  -159,  -159,  -159,
-     -159,  -159,  -159,   399,  -159,    71,   -51,  -159,  -159,  -159,
-       79,  -159,  -159,  -159,    77,    81,    -3,    89,  -141,  -159,
-      101,    -3,  -159,  -159,  -159,    73,    13,  -159,  -159,  -159,
-     -159,  -159,   -90,   103,    94,  -159,   107,  -159,    -3,  -159,
-     -159
 -     126,  -121,   -19,  -145,  -145,  -145,    -2,    -1,  -145,     8,
 -      20,   -95,     8,  -145,    47,   -46,   -78,  -145,   -76,   -73,
 -    -145,   -72,  -145,  -145,   -46,   -46,  -145,   -71,  -145,   -67,
 -    -145,  -145,  -145,    12,   -17,    19,  -145,  -145,   -58,    47,
 -     -56,  -145,     0,   295,   -55,   -47,    24,  -145,  -145,  -145,
 -      80,   262,   -70,  -145,   -46,  -145,   -46,  -145,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145,  -145,   -10,   -50,   -49,  -145,
 -       3,  -145,   -85,  -145,  -145,  -145,  -145,   142,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145,     8,  -145,  -145,  -145,  -145,
 -    -145,    20,  -145,    33,    58,  -145,     8,  -145,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   168,
 -    -145,   -36,   398,  -145,  -145,  -145,   -72,  -145,  -145,   -46,
 -     -46,  -145,  -145,   -34,  -145,  -145,    71,    73,  -145,    25,
 -    -145,   -57,  -145,    47,  -145,  -145,  -145,  -145,  -145,  -145,
 -    -145,  -145,  -145,     0,  -145,   -10,  -145,  -145,    -9,  -145,
 -    -145,  -145,  -145,  -145,  -145,  -145,   295,  -145,    57,   -10,
 -     -35,  -145,    59,   -47,  -145,  -145,  -145,    63,  -145,   -37,
 -    -145,    31,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -    -145,     6,  -126,  -145,  -145,  -145,  -145,  -145,    74,  -145,
 -    -145,   -20,  -145,  -145,  -145,  -145,   -11,  -145,  -145,  -145,
 -    -145,     4,    77,  -145,  -145,   168,  -145,   -10,    -9,  -145,
 -    -145,  -145,  -145,  -145,   483,  -145,  -145,   483,   -55,     5,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -     -55,    91,   -35,  -145,   112,  -145,  -145,  -145,  -145,   -10,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -    -145,  -145,  -145,    31,  -145,  -145,  -145,  -145,    93,  -145,
 -    -145,  -145,  -145,  -145,  -145,    -7,    -3,  -107,    -4,  -145,
 -    -145,  -145,  -145,    34,  -145,  -145,     1,  -145,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -     483,   483,  -145,   131,  -145,  -145,  -145,   116,  -145,  -145,
 -    -145,   -10,   -10,     9,    16,  -100,  -145,     7,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,   483,  -145,
 -    -145,    15,  -145,  -145,   -46,  -145,  -145,  -145,    26,  -145,
 -    -145,    21,    35,   -10,    28,  -112,  -145,    36,   -10,  -145,
 -    -145,  -145,    37,   -40,    39,    41,    46,    50,    62,    61,
 -      48,   -10,   -10,   -10,   -10,   -10,  -145,    78,  -145,  -145,
 -    -145,  -145,  -145,  -145,  -145
++     108,  -138,   -21,  -163,  -163,  -163,   -19,    90,    18,     9,
++    -102,    18,  -163,    26,   -46,   -98,  -163,   -96,   -95,  -163,
++     -94,  -163,  -163,   -46,   399,   -46,  -163,   -88,  -163,   -84,
++    -163,  -163,  -163,     4,    17,     6,  -163,  -163,   -78,    26,
++     -77,  -163,     5,   493,   -75,   -49,    12,  -163,  -163,  -163,
++      70,   266,   -91,  -163,   -46,  -163,   -46,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,    -6,   -68,   -67,  -163,
++     -18,  -163,   -99,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,    19,    90,  -163,   -61,  -163,  -163,  -163,  -163,  -163,
++    -163,  -163,    18,  -163,  -163,  -163,  -163,  -163,     9,  -163,
++      31,    61,  -163,    18,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,   168,  -163,   -47,   411,
++    -163,  -163,  -163,   -94,  -163,  -163,   -46,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,   399,  -163,    36,   -46,  -163,
++    -163,   -42,  -163,  -163,    69,    76,  -163,  -163,    27,  -163,
++     -70,  -163,    26,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,  -163,     5,  -163,    -6,  -163,  -163,   -20,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,   493,  -163,    51,    -6,
++    -163,  -163,    52,   -49,  -163,  -163,  -163,    54,  -163,   -36,
++    -163,    98,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,     8,  -136,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++      25,  -163,  -163,  -163,  -163,   -27,    75,  -163,  -163,   168,
++    -163,    -6,   -20,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++     248,  -163,  -163,   248,   248,   -75,    -9,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,  -163,   -48,   101,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,    98,  -163,  -163,  -163,
++    -163,    81,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -110,   -16,   -24,  -163,  -163,    14,  -163,  -163,     3,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++    -163,  -163,   248,   248,  -163,   132,   -75,   103,  -163,   104,
++    -163,  -163,   -17,     7,  -113,  -163,    -8,  -163,    -6,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,   248,  -163,
++    -163,  -163,  -163,    -1,   -46,  -163,  -163,  -163,    13,  -163,
++    -163,  -163,     2,    11,    -6,    10,  -147,  -163,    24,    -6,
++    -163,  -163,  -163,    16,    58,  -163,  -163,  -163,  -163,  -163,
++     -87,    28,    15,  -163,    32,  -163,    -6,  -163,  -163
  };
  
  /* YYPGOTO[NTERM-NUM].  */
  static const yytype_int16 yypgoto[] =
  {
-     -159,  -159,  -159,   -29,  -159,  -159,   -13,   -32,  -159,   -14,
-     -159,  -159,  -159,  -159,  -159,   199,  -159,  -159,   106,  -159,
-     -159,    -5,  -159,  -159,  -159,  -159,  -142,  -159,  -159,   187,
-     -159,   156,  -159,  -159,    74,  -159,   279,   -55,  -159,  -159,
-      128,  -159,  -159,  -159,  -159,    27,  -159,   176,  -159,  -159,
-     -159,  -159,  -159,  -159,   119,  -159,  -159,   278,  -158,   -41,
-     -159,  -159,  -159,    -1,  -159,  -159,   -38,  -159,  -159,  -159,
-      -70,  -159,   -88,  -159
 -    -145,  -145,  -145,   -43,  -145,  -145,   -15,   -32,  -145,  -145,
 -     -51,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -    -145,  -145,  -145,  -145,    81,  -145,  -145,  -145,  -145,   -33,
 -    -145,  -145,  -145,  -145,  -145,  -145,  -125,  -145,  -145,   122,
 -    -145,  -145,  -145,    38,  -145,  -145,  -145,   217,   -63,  -145,
 -    -145,  -145,    95,  -145,  -145,  -145,  -145,  -145,  -145,  -145,
 -    -145,  -145,    10,  -145,   120,  -145,  -145,  -145,  -145,  -145,
 -    -145,    76,  -145,  -145,   215,    43,  -144,  -145,  -145,  -145,
 -     -23,  -145,   -62,  -145,  -145,  -145,   -90,  -145,  -102
++    -163,  -163,  -163,   -43,  -163,  -163,   -14,   -33,  -163,  -163,
++     -72,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,  -163,
++     114,  -163,  -163,  -163,    22,  -163,  -163,  -163,  -163,   -34,
++    -163,  -163,  -163,  -163,  -163,  -163,  -143,  -163,  -163,   102,
++    -163,  -163,    64,  -163,  -163,  -163,    -7,  -163,  -163,  -163,
++     199,   -65,  -163,  -163,  -163,    49,  -163,  -163,  -163,  -163,
++    -163,  -163,  -163,  -163,  -163,  -163,  -163,    93,  -163,  -163,
++    -163,  -163,  -163,  -163,    39,  -163,  -163,   208,    20,  -162,
++    -163,  -163,  -163,   -56,  -163,  -163,   -90,  -163,  -163,  -163,
++    -121,  -163,  -126,  -163
  };
  
  /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
  #define YYTABLE_NINF -7
  static const yytype_int16 yytable[] =
  {
-      155,   113,   147,   238,   239,   290,   301,    93,    76,   110,
-      355,   111,   178,   302,   266,   347,   303,   236,   237,   156,
-      179,   146,   187,   347,    70,   253,    72,   377,    71,    77,
-      356,    75,    78,   191,   153,    98,   203,   382,   115,   142,
-       84,   189,   157,   190,    85,   203,   254,   116,   296,   297,
-       86,   304,   192,    73,   308,   309,   310,   311,   158,   117,
-      291,   159,   292,   296,   297,   118,   119,   101,   122,   368,
-      136,   102,   137,   139,   193,   143,   267,   144,   305,   387,
-      388,   389,   390,   391,   140,   141,   222,    94,   395,   148,
-      112,    95,   149,   150,   332,   333,   154,    87,   184,   112,
-      186,   357,   188,   195,   196,   208,    79,   358,    80,   201,
-      197,   224,   204,    81,   198,   243,   244,   245,   246,   247,
-      248,   249,   224,   359,   103,     1,   160,    88,   258,   259,
-      260,   261,     2,   306,   210,   211,     3,     4,     5,   180,
-      255,    89,   293,   205,     6,     7,   199,   242,   206,   145,
-        8,     9,   161,   162,    10,   225,   112,    11,    12,   200,
-      294,    13,   210,   104,   211,   360,   226,   227,   361,    14,
-       90,   105,   228,   229,   230,   106,   231,   314,   315,    15,
-      234,    16,   387,   388,   389,   390,   391,   232,   240,    17,
-       18,   107,   363,    19,   241,   108,   251,    20,    21,   252,
-      257,    22,    23,   262,   263,   264,   270,   272,   334,   273,
-      312,   313,   212,   213,   214,   215,   335,   337,   339,    24,
-       25,    26,   340,   341,   342,   343,   344,   345,   352,   125,
-      126,   127,   128,    27,   336,   353,   354,    28,   364,    29,
-      365,    30,    31,   367,   366,   370,   374,   372,    32,   377,
-      386,   376,    33,    34,    35,    36,    37,    38,   129,    39,
-      130,    40,   131,   381,   384,   132,   397,    41,   398,   274,
-      399,    42,    43,    44,   346,    45,    46,   275,    47,    48,
-        2,   202,   265,   207,     3,     4,     5,    -6,    49,   233,
-      100,   250,     6,     7,   316,   338,   223,   348,     8,     9,
-      271,   216,    10,   135,   396,    11,    12,     0,   383,    13,
-      276,   369,   371,     0,   217,     0,     0,    14,   218,   219,
-        0,     0,     0,     0,     0,     0,   277,    15,     0,    16,
-        0,     0,     0,     0,     0,   380,     0,    17,    18,     0,
-      385,    19,     0,     0,     0,    20,    21,   278,     0,    22,
-       23,     0,   279,   373,   280,     0,     0,   400,     0,     0,
-        0,     0,     0,     0,     0,   281,     0,    24,    25,    26,
 -     109,   222,   129,   217,   320,   136,   134,   161,   169,   125,
 -     259,   106,   160,   107,    78,   229,   313,   271,    79,   128,
 -     230,   173,   192,   313,   272,    80,   321,   273,   223,    88,
 -     137,   265,   266,   192,    73,    74,   178,    94,   238,   171,
 -     126,   172,   127,   239,   174,   224,   138,   240,   344,   139,
 -     265,   266,    75,    76,   112,   179,   113,   274,   349,   114,
 -     115,   121,   260,   283,   261,   122,   124,    97,    81,   210,
 -     336,    98,   180,   130,   131,   231,   135,   108,   166,   275,
 -     168,   241,   176,   177,   182,   170,   108,   194,   322,   195,
 -     300,   301,   242,   323,    82,   308,   209,   215,   213,   216,
 -     220,   218,    89,   140,   212,   212,    90,    83,   324,   219,
 -     243,   228,   270,   234,   244,   108,   245,   236,   237,    99,
 -     162,   354,   355,   356,   357,   358,   246,     1,   269,   141,
 -     142,   281,   225,   276,     2,    84,   280,   303,   262,     3,
 -       4,     5,   247,   248,     6,   305,   307,   310,     7,     8,
 -     325,   318,   100,   326,     9,    10,   263,   329,    11,   311,
 -     101,    12,    13,   312,   102,    14,   319,   332,   333,   183,
 -     331,   335,   249,    15,   250,   334,   338,   328,   251,    16,
 -     103,    17,   252,   339,   104,   341,   302,   343,    18,    19,
 -     184,   351,    20,   185,   348,   344,    21,    22,   304,   347,
 -      23,    24,   309,   368,   352,   361,   353,   362,   197,   198,
 -     199,   200,   363,   193,    25,    26,   364,   369,   370,   371,
 -     372,   373,   354,   355,   356,   357,   358,    27,   365,    96,
 -      28,   366,    29,   374,    30,    31,   211,   227,   221,   235,
 -     120,    32,   306,   282,   314,    33,    34,    35,    36,    37,
 -      38,   284,    39,   337,    40,   350,   186,   367,   187,     0,
 -      41,     0,     0,   188,    42,    43,    44,   189,    45,    46,
 -       2,    47,    48,     0,     0,     3,     4,     5,     0,     0,
 -       6,    -6,    49,     0,     7,     8,   201,     0,     0,     0,
 -       9,    10,     0,     0,    11,     0,     0,    12,    13,   202,
 -       0,    14,     0,   203,   204,     0,   146,     0,     0,    15,
 -       0,     0,     0,     0,   147,    16,   148,    17,     0,   340,
 -       0,     0,     0,     0,    18,    19,     0,     0,    20,     0,
 -       0,     0,    21,    22,     0,     0,    23,    24,     0,     0,
 -     149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -      25,    26,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,    27,     0,     0,    28,     0,    29,     0,
 -      30,    31,   150,   151,     0,   152,   153,    32,     0,   154,
 -       0,    33,    34,    35,    36,    37,    38,     0,    39,     0,
 -      40,     0,     0,     0,     0,     0,    41,   155,     0,     0,
 -      42,    43,    44,     0,    45,    46,     2,    47,    48,     0,
 -       0,     3,     4,     5,     0,     0,     6,    -6,    49,     0,
 -       7,     8,     0,     0,     0,     0,     9,    10,     0,     0,
 -      11,     0,     0,    12,    13,     0,     0,    14,     0,     0,
 -       0,     0,     0,     0,     0,    15,     0,     0,     0,     0,
 -       0,    16,     0,    17,     0,     0,     0,     0,     0,     0,
 -      18,    19,     0,     0,    20,     0,     0,     0,    21,    22,
 -       0,     0,    23,    24,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,    25,    26,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
 -       0,     0,    28,     0,    29,     0,    30,    31,     0,     0,
 -       0,     0,     0,    32,     0,     0,     0,    33,    34,    35,
 -      36,    37,    38,     0,    39,     0,    40,   285,     0,     0,
 -       0,     0,    41,     0,     0,   286,    42,    43,    44,     0,
 -      45,    46,     0,    47,    48,     0,     0,   287,   288,     0,
 -     289,     0,     0,     0,    49,     0,   290,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,   291,     0,   292,   293,     0,   294,
 -     295,   296,     0,   297,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++     116,   148,   239,   233,   234,   153,   330,   181,   189,   316,
++     155,   180,   272,   198,   113,   240,   114,   246,    95,   322,
++     147,   355,   322,   193,    85,    73,   331,   206,    86,   278,
++     279,   360,   199,   156,    87,    74,   241,    75,   206,   101,
++     191,   143,   192,   119,   104,   120,   121,   122,   105,   157,
++     194,   283,   158,   139,   200,   278,   279,   140,   284,   295,
++     142,   285,   149,   150,   154,   346,   115,   273,   186,   274,
++     188,   317,   190,   196,   197,   203,   224,   144,   202,   145,
++     205,    88,   365,   366,   367,   368,   369,   208,   312,   313,
++     209,   373,   228,   231,   223,   115,   286,   332,    96,   229,
++     232,   106,    97,   333,   236,   252,   235,   245,   248,     1,
++     250,    89,   226,   253,   292,    76,     2,   159,   237,   334,
++       3,     4,     5,   287,   226,    90,   182,   251,     6,     7,
++     242,   293,   315,   319,     8,     9,    77,   321,    10,    78,
++     107,    11,    12,   160,   161,    13,   254,   327,   108,   275,
++     328,   146,   109,    14,    91,   329,   339,   344,   115,   342,
++     343,   335,   255,    15,   336,    16,   349,   276,   110,   348,
++     345,   338,   111,    17,    18,   350,   354,    19,   288,   355,
++     352,    20,    21,   256,   359,    22,    23,   362,   257,   376,
++     258,   375,   358,   364,   320,   377,   204,   363,   244,   227,
++     207,   259,   314,    24,    25,    26,   211,   212,   213,   214,
++     103,   238,   294,    79,   378,    80,   225,    27,   260,   261,
++      81,    28,   249,    29,   323,    30,    31,   365,   366,   367,
++     368,   369,    32,   138,   347,   361,    33,    34,    35,    36,
++      37,    38,   296,    39,   374,    40,     0,     0,   262,     0,
++     263,    41,     0,     0,   264,    42,    43,    44,   265,    45,
++      46,     0,    47,    48,     0,     0,     0,     0,     0,     0,
++       0,    -6,    49,     0,     2,     0,     0,     0,     3,     4,
++       5,     0,     0,   341,     0,     0,     6,     7,     0,     0,
++     297,     0,     8,     9,     0,   215,    10,     0,   298,    11,
++      12,     0,     0,    13,     0,     0,     0,     0,   216,     0,
++       0,    14,   217,   218,     0,   299,   300,     0,   301,     0,
++       0,    15,     0,    16,   302,     0,     0,     0,     0,     0,
++     351,    17,    18,     0,     0,    19,     0,     0,     0,    20,
++      21,     0,     0,    22,    23,     0,     0,   303,     0,   304,
++     305,     0,   306,   307,   308,     0,   309,     0,     0,     0,
++       0,    24,    25,    26,     0,     0,     0,     0,     0,     0,
++       0,     0,     0,     0,     0,    27,     0,     0,     0,    28,
++       0,    29,     0,    30,    31,     0,     0,     0,     0,     0,
++      32,     0,     0,     0,    33,    34,    35,    36,    37,    38,
++       0,    39,     0,    40,   310,     0,     0,     0,     0,    41,
++       0,     0,     0,    42,    43,    44,     0,    45,    46,     2,
++      47,    48,     0,     3,     4,     5,     0,     0,     0,    -6,
++      49,     6,     7,     0,     0,     0,     0,     8,     9,     0,
++       0,    10,     0,     0,    11,    12,     0,     0,    13,     0,
++     127,   128,   129,   130,     0,     0,    14,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,    15,     0,    16,     0,
++       0,     0,     0,     0,     0,     0,    17,    18,     0,   131,
++      19,   132,     0,   133,    20,    21,   134,     0,    22,    23,
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++       0,     0,     0,     0,   165,     0,    24,    25,    26,     0,
++     166,     0,   167,     0,     0,     0,     0,     0,     0,     0,
++      27,     0,     0,     0,    28,     0,    29,     0,    30,    31,
++       0,     0,     0,     0,     0,    32,   168,     0,     0,    33,
++      34,    35,    36,    37,    38,     0,    39,     0,    40,     0,
++       0,     0,     0,     0,    41,     0,     0,     0,    42,    43,
++      44,     0,    45,    46,     0,    47,    48,     0,     0,     0,
++       0,     0,     0,     0,   169,    49,   170,     0,     0,   171,
++       0,   172,     0,     0,   173,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,    27,   282,   283,     0,    28,     0,    29,     0,    30,
-       31,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-       33,    34,    35,    36,    37,    38,     0,    39,     0,    40,
-        0,     0,   284,     0,   285,    41,     0,     0,   286,    42,
-       43,    44,   287,    45,    46,     2,    47,    48,     0,     3,
-        4,     5,     0,     0,     0,    -6,    49,     6,     7,     0,
-        0,   317,     0,     8,     9,     0,     0,    10,     0,   318,
-       11,    12,     0,     0,    13,     0,     0,     0,     0,     0,
-        0,     0,    14,     0,     0,     0,   319,   320,     0,   321,
-        0,     0,    15,     0,    16,   322,     0,     0,     0,     0,
-        0,     0,    17,    18,     0,     0,    19,     0,     0,     0,
-       20,    21,     0,     0,    22,    23,     0,     0,   323,     0,
-      324,   325,     0,   326,   327,   328,     0,   329,     0,     0,
-      165,     0,    24,    25,    26,     0,   166,     0,   167,     0,
-        0,     0,     0,     0,     0,     0,    27,     0,     0,     0,
-       28,     0,    29,     0,    30,    31,     0,     0,     0,     0,
-        0,    32,   168,     0,     0,    33,    34,    35,    36,    37,
-       38,     0,    39,     0,    40,   330,     0,     0,     0,     0,
-       41,     0,     0,     0,    42,    43,    44,     0,    45,    46,
-        0,    47,    48,     0,     0,     0,     0,     0,     0,     0,
-      169,    49,   170,     0,     0,   171,     0,   172,     0,     0,
-      173,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
-      175
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -     298
++       0,     0,     0,   174,   175
  };
  
  static const yytype_int16 yycheck[] =
  {
-       41,    14,    34,   145,   146,     4,    26,     9,    25,    60,
-        3,    62,    44,    33,    57,   132,    36,    24,    24,     5,
-       56,    34,    51,   132,   163,    35,    29,   168,    56,    46,
-       23,    56,    49,    31,    39,   141,    91,   178,   141,    24,
-        6,    54,    28,    56,    10,   100,    56,   141,   165,   166,
-       16,    71,    50,    56,   212,   213,   214,   215,    44,   141,
-       59,    47,    61,   165,   166,   141,   141,    18,   141,   178,
-      141,    22,   141,   141,    72,    60,   119,    62,    98,   169,
-      170,   171,   172,   173,   141,    56,   115,    89,   178,    56,
-      141,    93,   141,   141,   236,   237,   141,    63,    56,   141,
-        0,    94,   163,   177,   141,    29,   123,   100,   125,    56,
-      141,   124,    56,   130,   141,   156,   157,   158,   159,   160,
-      161,   162,   135,   116,    75,     1,   112,    93,   169,   170,
-      171,   172,     8,   153,   141,   141,    12,    13,    14,   175,
-      150,   107,   141,    56,    20,    21,   141,   152,    56,   134,
-       26,    27,   138,   139,    30,    56,   141,    33,    34,   141,
-      159,    37,   141,   114,   141,   158,    56,    56,   161,    45,
-      136,   122,    56,    56,    56,   126,    56,   218,   219,    55,
-      141,    57,   169,   170,   171,   172,   173,    56,    79,    65,
-       66,   142,   334,    69,   174,   146,    56,    73,    74,    56,
-       56,    77,    78,    56,    56,    56,    56,    56,   240,   163,
-      141,    56,    38,    39,    40,    41,   141,    56,    32,    95,
-       96,    97,    56,    56,    56,    56,    56,    56,   163,    51,
-       52,    53,    54,   109,   266,   174,   141,   113,    24,   115,
-       56,   117,   118,   163,   174,   177,   167,   176,   124,   168,
-      177,   174,   128,   129,   130,   131,   132,   133,    80,   135,
-       82,   137,    84,   174,   163,    87,   163,   143,   174,     7,
-      163,   147,   148,   149,   288,   151,   152,    15,   154,   155,
-        8,    82,   176,    96,    12,    13,    14,   163,   164,   133,
-       11,   163,    20,    21,   220,   268,   120,   298,    26,    27,
-      181,   127,    30,    25,   392,    33,    34,    -1,   378,    37,
-       48,   349,   353,    -1,   140,    -1,    -1,    45,   144,   145,
-       -1,    -1,    -1,    -1,    -1,    -1,    64,    55,    -1,    57,
-       -1,    -1,    -1,    -1,    -1,   376,    -1,    65,    66,    -1,
-      381,    69,    -1,    -1,    -1,    73,    74,    85,    -1,    77,
-       78,    -1,    90,   366,    92,    -1,    -1,   398,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,   103,    -1,    95,    96,    97,
 -      15,   145,    34,   128,     3,     5,    39,    54,    51,    26,
 -       4,    57,    44,    59,     6,   159,   123,    28,    10,    34,
 -      55,    31,    85,   123,    35,    17,    25,    38,    37,     9,
 -      30,   157,   158,    96,   155,    54,    33,   132,     7,    54,
 -      57,    56,    59,    12,    54,    54,    46,    16,   160,    49,
 -     157,   158,    54,    54,   132,    52,   132,    68,   170,   132,
 -     132,   132,    56,   207,    58,   132,    54,    20,    60,   112,
 -     170,    24,    69,    54,   132,   110,   132,   132,    54,    90,
 -       0,    50,   132,   132,   169,   155,   132,    54,    87,    31,
 -     215,   216,    61,    92,    86,   239,   132,    26,   132,    26,
 -     133,    76,    82,   103,   119,   120,    86,    99,   107,   166,
 -      79,    54,   132,    54,    83,   132,    85,    54,   155,    72,
 -     167,   161,   162,   163,   164,   165,    95,     1,    54,   129,
 -     130,    54,   141,   144,     8,   127,   132,   132,   132,    13,
 -      14,    15,   111,   112,    18,    54,    34,    54,    22,    23,
 -     149,   155,   105,   152,    28,    29,   150,    26,    32,   166,
 -     113,    35,    36,   166,   117,    39,   132,   311,   312,    27,
 -      54,   155,   141,    47,   143,   166,   169,   302,   147,    53,
 -     133,    55,   151,   168,   137,   159,   218,   166,    62,    63,
 -      48,   155,    66,    51,   166,   160,    70,    71,   230,   343,
 -      74,    75,   253,   155,   348,   166,   169,   166,    40,    41,
 -      42,    43,   166,    91,    88,    89,   166,   361,   362,   363,
 -     364,   365,   161,   162,   163,   164,   165,   101,   166,    12,
 -     104,   170,   106,   155,   108,   109,   116,   156,   143,   163,
 -      25,   115,   232,   205,   267,   119,   120,   121,   122,   123,
 -     124,   208,   126,   315,   128,   345,   114,   359,   116,    -1,
 -     134,    -1,    -1,   121,   138,   139,   140,   125,   142,   143,
 -       8,   145,   146,    -1,    -1,    13,    14,    15,    -1,    -1,
 -      18,   155,   156,    -1,    22,    23,   118,    -1,    -1,    -1,
 -      28,    29,    -1,    -1,    32,    -1,    -1,    35,    36,   131,
 -      -1,    39,    -1,   135,   136,    -1,    11,    -1,    -1,    47,
 -      -1,    -1,    -1,    -1,    19,    53,    21,    55,    -1,   334,
 -      -1,    -1,    -1,    -1,    62,    63,    -1,    -1,    66,    -1,
 -      -1,    -1,    70,    71,    -1,    -1,    74,    75,    -1,    -1,
 -      45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,   101,    -1,    -1,   104,    -1,   106,    -1,
 -     108,   109,    77,    78,    -1,    80,    81,   115,    -1,    84,
 -      -1,   119,   120,   121,   122,   123,   124,    -1,   126,    -1,
 -     128,    -1,    -1,    -1,    -1,    -1,   134,   102,    -1,    -1,
 -     138,   139,   140,    -1,   142,   143,     8,   145,   146,    -1,
 -      -1,    13,    14,    15,    -1,    -1,    18,   155,   156,    -1,
 -      22,    23,    -1,    -1,    -1,    -1,    28,    29,    -1,    -1,
 -      32,    -1,    -1,    35,    36,    -1,    -1,    39,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
 -      -1,    53,    -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,
 -      62,    63,    -1,    -1,    66,    -1,    -1,    -1,    70,    71,
 -      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
 -      -1,    -1,   104,    -1,   106,    -1,   108,   109,    -1,    -1,
 -      -1,    -1,    -1,   115,    -1,    -1,    -1,   119,   120,   121,
 -     122,   123,   124,    -1,   126,    -1,   128,    44,    -1,    -1,
 -      -1,    -1,   134,    -1,    -1,    52,   138,   139,   140,    -1,
 -     142,   143,    -1,   145,   146,    -1,    -1,    64,    65,    -1,
 -      67,    -1,    -1,    -1,   156,    -1,    73,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    91,    -1,    93,    94,    -1,    96,
 -      97,    98,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++      14,    34,   164,   146,   147,    39,     3,    56,    51,    57,
++       5,    44,     4,    31,    60,    35,    62,   179,     9,   132,
++      34,   168,   132,    29,     6,   163,    23,    92,    10,   165,
++     166,   178,    50,    28,    16,    56,    56,    56,   103,   141,
++      54,    24,    56,   141,    18,   141,   141,   141,    22,    44,
++      56,    26,    47,   141,    72,   165,   166,   141,    33,   221,
++      56,    36,    56,   141,   141,   178,   141,    59,    56,    61,
++       0,   119,   163,   141,   141,    56,   119,    60,   177,    62,
++     141,    63,   169,   170,   171,   172,   173,    56,   231,   232,
++      29,   178,    56,    24,   141,   141,    71,    94,    89,   141,
++      24,    75,    93,   100,   174,     7,    79,    56,    56,     1,
++      56,    93,   126,    15,   141,    25,     8,   112,   152,   116,
++      12,    13,    14,    98,   138,   107,   175,   163,    20,    21,
++     150,    56,   141,    32,    26,    27,    46,    56,    30,    49,
++     114,    33,    34,   138,   139,    37,    48,   163,   122,   141,
++     174,   134,   126,    45,   136,   141,    24,   174,   141,    56,
++      56,   158,    64,    55,   161,    57,   328,   159,   142,   177,
++     163,   314,   146,    65,    66,   176,   174,    69,   153,   168,
++     167,    73,    74,    85,   174,    77,    78,   163,    90,   174,
++      92,   163,   354,   177,   266,   163,    82,   359,   176,   135,
++      98,   103,   235,    95,    96,    97,    38,    39,    40,    41,
++      11,   162,   219,   123,   376,   125,   123,   109,   120,   121,
++     130,   113,   183,   115,   280,   117,   118,   169,   170,   171,
++     172,   173,   124,    25,   324,   356,   128,   129,   130,   131,
++     132,   133,   222,   135,   370,   137,    -1,    -1,   150,    -1,
++     152,   143,    -1,    -1,   156,   147,   148,   149,   160,   151,
++     152,    -1,   154,   155,    -1,    -1,    -1,    -1,    -1,    -1,
++      -1,   163,   164,    -1,     8,    -1,    -1,    -1,    12,    13,
++      14,    -1,    -1,   316,    -1,    -1,    20,    21,    -1,    -1,
++      42,    -1,    26,    27,    -1,   127,    30,    -1,    50,    33,
++      34,    -1,    -1,    37,    -1,    -1,    -1,    -1,   140,    -1,
++      -1,    45,   144,   145,    -1,    67,    68,    -1,    70,    -1,
++      -1,    55,    -1,    57,    76,    -1,    -1,    -1,    -1,    -1,
++     344,    65,    66,    -1,    -1,    69,    -1,    -1,    -1,    73,
++      74,    -1,    -1,    77,    78,    -1,    -1,    99,    -1,   101,
++     102,    -1,   104,   105,   106,    -1,   108,    -1,    -1,    -1,
++      -1,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,   113,
++      -1,   115,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
++     124,    -1,    -1,    -1,   128,   129,   130,   131,   132,   133,
++      -1,   135,    -1,   137,   156,    -1,    -1,    -1,    -1,   143,
++      -1,    -1,    -1,   147,   148,   149,    -1,   151,   152,     8,
++     154,   155,    -1,    12,    13,    14,    -1,    -1,    -1,   163,
++     164,    20,    21,    -1,    -1,    -1,    -1,    26,    27,    -1,
++      -1,    30,    -1,    -1,    33,    34,    -1,    -1,    37,    -1,
++      51,    52,    53,    54,    -1,    -1,    45,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    65,    66,    -1,    80,
++      69,    82,    -1,    84,    73,    74,    87,    -1,    77,    78,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,   109,   120,   121,    -1,   113,    -1,   115,    -1,   117,
-      118,    -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,
-      128,   129,   130,   131,   132,   133,    -1,   135,    -1,   137,
-       -1,    -1,   150,    -1,   152,   143,    -1,    -1,   156,   147,
-      148,   149,   160,   151,   152,     8,   154,   155,    -1,    12,
-       13,    14,    -1,    -1,    -1,   163,   164,    20,    21,    -1,
-       -1,    42,    -1,    26,    27,    -1,    -1,    30,    -1,    50,
-       33,    34,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    45,    -1,    -1,    -1,    67,    68,    -1,    70,
-       -1,    -1,    55,    -1,    57,    76,    -1,    -1,    -1,    -1,
-       -1,    -1,    65,    66,    -1,    -1,    69,    -1,    -1,    -1,
-       73,    74,    -1,    -1,    77,    78,    -1,    -1,    99,    -1,
-      101,   102,    -1,   104,   105,   106,    -1,   108,    -1,    -1,
-       11,    -1,    95,    96,    97,    -1,    17,    -1,    19,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
-      113,    -1,   115,    -1,   117,   118,    -1,    -1,    -1,    -1,
-       -1,   124,    43,    -1,    -1,   128,   129,   130,   131,   132,
-      133,    -1,   135,    -1,   137,   156,    -1,    -1,    -1,    -1,
-      143,    -1,    -1,    -1,   147,   148,   149,    -1,   151,   152,
-       -1,   154,   155,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       81,   164,    83,    -1,    -1,    86,    -1,    88,    -1,    -1,
-       91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
-      111
++      -1,    -1,    -1,    -1,    11,    -1,    95,    96,    97,    -1,
++      17,    -1,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++     109,    -1,    -1,    -1,   113,    -1,   115,    -1,   117,   118,
++      -1,    -1,    -1,    -1,    -1,   124,    43,    -1,    -1,   128,
++     129,   130,   131,   132,   133,    -1,   135,    -1,   137,    -1,
++      -1,    -1,    -1,    -1,   143,    -1,    -1,    -1,   147,   148,
++     149,    -1,   151,   152,    -1,   154,   155,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    81,   164,    83,    -1,    -1,    86,
++      -1,    88,    -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -     147
++      -1,    -1,    -1,   110,   111
  };
  
  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     symbol of state STATE-NUM.  */
- static const yytype_uint8 yystos[] =
+ static const yytype_uint16 yystos[] =
  {
 -       0,     1,     8,    13,    14,    15,    18,    22,    23,    28,
 -      29,    32,    35,    36,    39,    47,    53,    55,    62,    63,
 -      66,    70,    71,    74,    75,    88,    89,   101,   104,   106,
 -     108,   109,   115,   119,   120,   121,   122,   123,   124,   126,
 -     128,   134,   138,   139,   140,   142,   143,   145,   146,   156,
 -     172,   173,   174,   175,   176,   186,   187,   188,   189,   193,
 -     198,   206,   212,   217,   221,   225,   226,   227,   228,   236,
 -     237,   248,   249,   155,    54,    54,    54,   190,     6,    10,
 -      17,    60,    86,    99,   127,   218,   219,   220,     9,    82,
 -      86,   209,   210,   211,   132,   229,   218,    20,    24,    72,
 -     105,   113,   117,   133,   137,   200,    57,    59,   132,   177,
 -     178,   179,   132,   132,   132,   132,   234,   235,   177,   245,
 -     245,   132,   132,   244,    54,    26,    57,    59,   177,   178,
 -      54,   132,   230,   199,   200,   132,     5,    30,    46,    49,
 -     103,   129,   130,   222,   223,   224,    11,    19,    21,    45,
 -      77,    78,    80,    81,    84,   102,   194,   195,   196,   197,
 -     178,    54,   167,   241,   242,   243,    54,   240,     0,   174,
 -     155,   177,   177,    31,    54,   247,   132,   132,    33,    52,
 -      69,   239,   169,    27,    48,    51,   114,   116,   121,   125,
 -     191,   192,   219,   210,    54,    31,   201,    40,    41,    42,
 -      43,   118,   131,   135,   136,   213,   214,   215,   216,   132,
 -     174,   235,   177,   132,   207,    26,    26,   207,    76,   166,
 -     200,   223,   247,    37,    54,   141,   246,   195,    54,   247,
 -      55,   110,   232,   233,    54,   242,    54,   155,     7,    12,
 -      16,    50,    61,    79,    83,    85,    95,   111,   112,   141,
 -     143,   147,   151,   180,   181,   182,   183,   184,   185,     4,
 -      56,    58,   132,   150,   238,   157,   158,   250,   251,    54,
 -     132,    28,    35,    38,    68,    90,   144,   202,   203,   204,
 -     132,    54,   214,   247,   246,    44,    52,    64,    65,    67,
 -      73,    91,    93,    94,    96,    97,    98,   100,   147,   208,
 -     207,   207,   178,   132,   178,    54,   233,    34,   247,   181,
 -      54,   166,   166,   123,   251,   252,   253,   255,   155,   132,
 -       3,    25,    87,    92,   107,   149,   152,   205,   207,    26,
 -     231,    54,   247,   247,   166,   155,   170,   253,   169,   168,
 -     177,   159,   254,   166,   160,   256,   257,   247,   166,   170,
 -     257,   155,   247,   169,   161,   162,   163,   164,   165,   258,
 -     259,   166,   166,   166,   166,   166,   170,   259,   155,   247,
 -     247,   247,   247,   247,   155
 +       0,     1,     8,    12,    13,    14,    20,    21,    26,    27,
 +      30,    33,    34,    37,    45,    55,    57,    65,    66,    69,
 +      73,    74,    77,    78,    95,    96,    97,   109,   113,   115,
 +     117,   118,   124,   128,   129,   130,   131,   132,   133,   135,
 +     137,   143,   147,   148,   149,   151,   152,   154,   155,   164,
-      180,   181,   182,   183,   184,   189,   190,   191,   192,   195,
-      198,   204,   211,   214,   217,   220,   227,   228,   239,   240,
-      163,    56,    29,    56,   238,    56,    25,    46,    49,   123,
-      125,   130,   193,   194,     6,    10,    16,    63,    93,   107,
-      136,   215,   216,     9,    89,    93,   207,   208,   141,   221,
-      215,    18,    22,    75,   114,   122,   126,   142,   146,   200,
-       60,    62,   141,   185,   186,   141,   141,   141,   141,   141,
-      225,   226,   141,   185,   236,    51,    52,    53,    54,    80,
-       82,    84,    87,   209,   210,   236,   141,   141,   235,   141,
-      141,    56,    24,    60,    62,   134,   185,   186,    56,   141,
-      141,   222,   199,   200,   141,   238,     5,    28,    44,    47,
-      112,   138,   139,   218,   219,    11,    17,    19,    43,    81,
-       83,    86,    88,    91,   110,   111,   196,   197,   186,    56,
-      175,   232,   233,   234,    56,   231,     0,   182,   163,   185,
-      185,    31,    50,    72,   230,   177,   141,   141,   141,   141,
-      141,    56,   194,   216,    56,    56,    56,   208,    29,   201,
-      141,   141,    38,    39,    40,    41,   127,   140,   144,   145,
-      212,   213,   182,   226,   185,    56,    56,    56,    56,    56,
-       56,    56,    56,   210,   141,   205,    24,    24,   205,   205,
-       79,   174,   200,   238,   238,   238,   238,   238,   238,   238,
-      219,    56,    56,    35,    56,   150,   237,    56,   238,   238,
-      238,   238,    56,    56,    56,   197,    57,   119,   223,   224,
-       56,   233,    56,   163,     7,    15,    48,    64,    85,    90,
-       92,   103,   120,   121,   150,   152,   156,   160,   187,   188,
-        4,    59,    61,   141,   159,   229,   165,   166,   241,   242,
-      243,    26,    33,    36,    71,    98,   153,   202,   237,   237,
-      237,   237,   141,    56,   238,   238,   213,    42,    50,    67,
++     180,   181,   182,   183,   184,   194,   195,   196,   197,   201,
++     206,   214,   223,   228,   232,   236,   237,   238,   239,   247,
++     248,   259,   260,   163,    56,    56,    25,    46,    49,   123,
++     125,   130,   198,   199,   200,     6,    10,    16,    63,    93,
++     107,   136,   229,   230,   231,     9,    89,    93,   217,   218,
++     219,   141,   240,   229,    18,    22,    75,   114,   122,   126,
++     142,   146,   208,    60,    62,   141,   185,   186,   187,   141,
++     141,   141,   141,   245,   246,   185,   256,    51,    52,    53,
++      54,    80,    82,    84,    87,   220,   221,   222,   256,   141,
++     141,   255,    56,    24,    60,    62,   134,   185,   186,    56,
++     141,   241,   207,   208,   141,     5,    28,    44,    47,   112,
++     138,   139,   233,   234,   235,    11,    17,    19,    43,    81,
++      83,    86,    88,    91,   110,   111,   202,   203,   204,   205,
++     186,    56,   175,   252,   253,   254,    56,   251,     0,   182,
++     163,   185,   185,    29,    56,   258,   141,   141,    31,    50,
++      72,   250,   177,    56,   199,   141,   230,   218,    56,    29,
++     209,    38,    39,    40,    41,   127,   140,   144,   145,   224,
++     225,   226,   227,   141,   182,   246,   185,   221,    56,   141,
++     215,    24,    24,   215,   215,    79,   174,   208,   234,   258,
++      35,    56,   150,   257,   203,    56,   258,   243,    56,   253,
++      56,   163,     7,    15,    48,    64,    85,    90,    92,   103,
++     120,   121,   150,   152,   156,   160,   188,   189,   190,   191,
++     192,   193,     4,    59,    61,   141,   159,   249,   165,   166,
++     261,   262,   263,    26,    33,    36,    71,    98,   153,   210,
++     211,   212,   141,    56,   225,   258,   257,    42,    50,    67,
 +      68,    70,    76,    99,   101,   102,   104,   105,   106,   108,
-      156,   206,   205,   205,   186,   141,   186,    56,   224,    32,
-       56,    56,    56,    56,    56,    56,   188,   132,   242,   244,
-      245,   247,   163,   174,   141,     3,    23,    94,   100,   116,
-      158,   161,   203,   205,    24,    56,   174,   163,   178,   245,
-      177,   238,   176,   185,   167,   246,   174,   168,   248,   249,
-      238,   174,   178,   249,   163,   238,   177,   169,   170,   171,
-      172,   173,   250,   251,   252,   178,   251,   163,   174,   163,
-      238
++     156,   216,   215,   215,   186,   141,    57,   119,   244,    32,
++     189,    56,   132,   262,   264,   265,   267,   163,   174,   141,
++       3,    23,    94,   100,   116,   158,   161,   213,   215,    24,
++     242,   186,    56,    56,   174,   163,   178,   265,   177,   258,
++     176,   185,   167,   266,   174,   168,   268,   269,   258,   174,
++     178,   269,   163,   258,   177,   169,   170,   171,   172,   173,
++     270,   271,   272,   178,   271,   163,   174,   163,   258
  };
  
  #define yyerrok               (yyerrstatus = 0)
@@@ -2216,7 -2197,7 +2223,7 @@@ yyreduce
          case 5:
  
  /* Line 1464 of yacc.c  */
- #line 320 "ntp_parser.y"
 -#line 325 "ntp_parser.y"
++#line 340 "ntp_parser.y"
      {
                        /* I will need to incorporate much more fine grained
                         * error messages. The following should suffice for
    case 19:
  
  /* Line 1464 of yacc.c  */
- #line 354 "ntp_parser.y"
 -#line 359 "ntp_parser.y"
++#line 374 "ntp_parser.y"
      {
 -                      struct peer_node *my_node =  create_peer_node((yyvsp[(1) - (3)].Integer), (yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue));
 -                      if (my_node)
 -                              enqueue(cfgt.peers, my_node);
 +                      peer_node *my_node;
 +
 +                      my_node = create_peer_node((yyvsp[(1) - (3)].Integer), (yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
-                       if (my_node)
-                               APPEND_G_FIFO(cfgt.peers, my_node);
++                      APPEND_G_FIFO(cfgt.peers, my_node);
                }
      break;
  
    case 20:
  
  /* Line 1464 of yacc.c  */
- #line 362 "ntp_parser.y"
 -#line 365 "ntp_parser.y"
++#line 381 "ntp_parser.y"
      {
 -                      struct peer_node *my_node = create_peer_node((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node), NULL);
 -                      if (my_node)
 -                              enqueue(cfgt.peers, my_node);
 +                      peer_node *my_node;
 +
 +                      my_node = create_peer_node((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node), NULL);
-                       if (my_node)
-                               APPEND_G_FIFO(cfgt.peers, my_node);
++                      APPEND_G_FIFO(cfgt.peers, my_node);
                }
      break;
  
    case 27:
  
  /* Line 1464 of yacc.c  */
- #line 382 "ntp_parser.y"
-     { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), AF_INET); }
 -#line 383 "ntp_parser.y"
++#line 400 "ntp_parser.y"
+     { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), (yyvsp[(1) - (2)].Integer)); }
      break;
  
    case 28:
  
  /* Line 1464 of yacc.c  */
- #line 384 "ntp_parser.y"
-     { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), AF_INET6); }
 -#line 388 "ntp_parser.y"
 -    { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), 0); }
++#line 405 "ntp_parser.y"
++    { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); }
      break;
  
    case 29:
  
  /* Line 1464 of yacc.c  */
- #line 389 "ntp_parser.y"
-     { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); }
 -#line 393 "ntp_parser.y"
++#line 410 "ntp_parser.y"
+     { (yyval.Integer) = AF_INET; }
      break;
  
    case 30:
  
  /* Line 1464 of yacc.c  */
- #line 394 "ntp_parser.y"
-     { (yyval.Attr_val_fifo) = append_gen_fifo((yyvsp[(1) - (2)].Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); }
 -#line 395 "ntp_parser.y"
++#line 412 "ntp_parser.y"
+     { (yyval.Integer) = AF_INET6; }
      break;
  
    case 31:
  
  /* Line 1464 of yacc.c  */
- #line 396 "ntp_parser.y"
-     { (yyval.Attr_val_fifo) = append_gen_fifo(NULL, (yyvsp[(1) - (1)].Attr_val)); }
 -#line 399 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 417 "ntp_parser.y"
++    { (yyval.Attr_val_fifo) = append_gen_fifo((yyvsp[(1) - (2)].Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val)); }
      break;
  
    case 32:
  
  /* Line 1464 of yacc.c  */
--#line 400 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 33:
- /* Line 1464 of yacc.c  */
- #line 401 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 34:
- /* Line 1464 of yacc.c  */
- #line 402 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 419 "ntp_parser.y"
++    { (yyval.Attr_val_fifo) = append_gen_fifo(NULL, (yyvsp[(1) - (1)].Attr_val)); }
      break;
  
    case 35:
  
  /* Line 1464 of yacc.c  */
- #line 403 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 36:
- /* Line 1464 of yacc.c  */
- #line 404 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 37:
- /* Line 1464 of yacc.c  */
- #line 405 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 38:
- /* Line 1464 of yacc.c  */
- #line 406 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 39:
- /* Line 1464 of yacc.c  */
--#line 407 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 40:
- /* Line 1464 of yacc.c  */
- #line 408 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 41:
- /* Line 1464 of yacc.c  */
- #line 409 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
--    break;
--
-   case 42:
 -  case 36:
--
--/* Line 1464 of yacc.c  */
- #line 410 "ntp_parser.y"
 -#line 412 "ntp_parser.y"
++#line 429 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
      break;
  
-   case 43:
- /* Line 1464 of yacc.c  */
- #line 411 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
 -  case 45:
 +  case 44:
  
  /* Line 1464 of yacc.c  */
- #line 412 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 45:
- /* Line 1464 of yacc.c  */
- #line 413 "ntp_parser.y"
 -#line 428 "ntp_parser.y"
++#line 445 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
-   case 46:
 -  case 52:
++  case 51:
  
  /* Line 1464 of yacc.c  */
- #line 423 "ntp_parser.y"
 -#line 448 "ntp_parser.y"
++#line 463 "ntp_parser.y"
      {
 -                      struct unpeer_node *my_node = create_unpeer_node((yyvsp[(2) - (2)].Address_node));
 +                      unpeer_node *my_node;
 +                      
 +                      my_node = create_unpeer_node((yyvsp[(2) - (2)].Address_node));
                        if (my_node)
 -                              enqueue(cfgt.unpeers, my_node);
 +                              APPEND_G_FIFO(cfgt.unpeers, my_node);
                }
      break;
  
-   case 49:
 -  case 55:
++  case 54:
  
  /* Line 1464 of yacc.c  */
- #line 444 "ntp_parser.y"
 -#line 467 "ntp_parser.y"
++#line 484 "ntp_parser.y"
      { cfgt.broadcastclient = 1; }
      break;
  
-   case 50:
++  case 55:
 +
 +/* Line 1464 of yacc.c  */
- #line 446 "ntp_parser.y"
++#line 486 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[(2) - (2)].Address_fifo)); }
 +    break;
 +
-   case 51:
+   case 56:
  
  /* Line 1464 of yacc.c  */
- #line 448 "ntp_parser.y"
 -#line 469 "ntp_parser.y"
 -    { append_queue(cfgt.manycastserver, (yyvsp[(2) - (2)].Queue)); }
++#line 488 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[(2) - (2)].Address_fifo)); }
      break;
  
-   case 52:
+   case 57:
  
  /* Line 1464 of yacc.c  */
- #line 459 "ntp_parser.y"
 -#line 471 "ntp_parser.y"
 -    { append_queue(cfgt.multicastclient, (yyvsp[(2) - (2)].Queue)); }
++#line 499 "ntp_parser.y"
 +    {
 +                      attr_val *atrv;
 +                      
 +                      atrv = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
 +                      APPEND_G_FIFO(cfgt.vars, atrv);
 +              }
      break;
  
-   case 53:
+   case 58:
  
  /* Line 1464 of yacc.c  */
- #line 466 "ntp_parser.y"
 -#line 482 "ntp_parser.y"
 -    { enqueue(cfgt.vars, create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer))); }
++#line 506 "ntp_parser.y"
 +    { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
      break;
  
-   case 54:
+   case 59:
  
  /* Line 1464 of yacc.c  */
- #line 468 "ntp_parser.y"
 -#line 484 "ntp_parser.y"
 -    { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
++#line 508 "ntp_parser.y"
 +    { 
 +                      cfgt.auth.cryptosw++;
 +                      CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Attr_val_fifo));
 +              }
      break;
  
-   case 55:
+   case 60:
  
  /* Line 1464 of yacc.c  */
- #line 473 "ntp_parser.y"
 -#line 486 "ntp_parser.y"
 -    { 
 -                      cfgt.auth.cryptosw++;
 -                      append_queue(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Queue));
 -              }
++#line 513 "ntp_parser.y"
 +    { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
      break;
  
-   case 56:
+   case 61:
  
  /* Line 1464 of yacc.c  */
- #line 475 "ntp_parser.y"
 -#line 491 "ntp_parser.y"
 -    { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
++#line 515 "ntp_parser.y"
 +    { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
      break;
  
-   case 57:
+   case 62:
  
  /* Line 1464 of yacc.c  */
- #line 477 "ntp_parser.y"
 -#line 493 "ntp_parser.y"
 -    { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
++#line 517 "ntp_parser.y"
 +    { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
      break;
  
-   case 58:
+   case 63:
  
  /* Line 1464 of yacc.c  */
- #line 479 "ntp_parser.y"
 -#line 495 "ntp_parser.y"
 -    { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
++#line 519 "ntp_parser.y"
 +    { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
      break;
  
-   case 59:
+   case 64:
  
  /* Line 1464 of yacc.c  */
- #line 481 "ntp_parser.y"
 -#line 497 "ntp_parser.y"
 -    { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
++#line 521 "ntp_parser.y"
 +    { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Attr_val_fifo); }
      break;
  
-   case 60:
+   case 65:
  
  /* Line 1464 of yacc.c  */
- #line 483 "ntp_parser.y"
 -#line 499 "ntp_parser.y"
 -    { cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Queue); }
++#line 523 "ntp_parser.y"
 +    { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
      break;
  
-   case 61:
+   case 66:
  
  /* Line 1464 of yacc.c  */
- #line 488 "ntp_parser.y"
 -#line 501 "ntp_parser.y"
 -    { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
++#line 528 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 62:
+   case 67:
  
  /* Line 1464 of yacc.c  */
- #line 493 "ntp_parser.y"
 -#line 506 "ntp_parser.y"
 -    { (yyval.Queue) = create_queue(); }
++#line 533 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 63:
+   case 68:
  
  /* Line 1464 of yacc.c  */
- #line 498 "ntp_parser.y"
 -#line 508 "ntp_parser.y"
 -    { 
 -                      if ((yyvsp[(2) - (2)].Attr_val) != NULL)
 -                              (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
 -                      else
 -                              (yyval.Queue) = (yyvsp[(1) - (2)].Queue);
++#line 538 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), NULL);
                }
      break;
  
-   case 64:
- /* Line 1464 of yacc.c  */
- #line 506 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-     break;
-   case 65:
- /* Line 1464 of yacc.c  */
- #line 508 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-     break;
-   case 66:
- /* Line 1464 of yacc.c  */
- #line 510 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-     break;
-   case 67:
- /* Line 1464 of yacc.c  */
- #line 512 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-     break;
-   case 68:
+   case 69:
  
  /* Line 1464 of yacc.c  */
- #line 514 "ntp_parser.y"
 -#line 518 "ntp_parser.y"
++#line 546 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
      break;
  
-   case 69:
+   case 70:
  
  /* Line 1464 of yacc.c  */
- #line 516 "ntp_parser.y"
 -#line 520 "ntp_parser.y"
++#line 548 "ntp_parser.y"
      {
                        (yyval.Attr_val) = NULL;
                        cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer);
                }
      break;
  
-   case 70:
 -  case 77:
++  case 76:
  
  /* Line 1464 of yacc.c  */
- #line 533 "ntp_parser.y"
 -#line 546 "ntp_parser.y"
 -    { append_queue(cfgt.orphan_cmds,(yyvsp[(2) - (2)].Queue)); }
++#line 573 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[(2) - (2)].Attr_val_fifo)); }
      break;
  
-   case 71:
 -  case 78:
++  case 77:
  
  /* Line 1464 of yacc.c  */
- #line 538 "ntp_parser.y"
 -#line 550 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 578 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 72:
 -  case 79:
++  case 78:
  
  /* Line 1464 of yacc.c  */
- #line 543 "ntp_parser.y"
 -#line 551 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 583 "ntp_parser.y"
 +    { 
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 73:
- /* Line 1464 of yacc.c  */
- #line 551 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 74:
- /* Line 1464 of yacc.c  */
- #line 553 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 75:
- /* Line 1464 of yacc.c  */
- #line 555 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 76:
- /* Line 1464 of yacc.c  */
- #line 557 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 77:
- /* Line 1464 of yacc.c  */
- #line 559 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 78:
- /* Line 1464 of yacc.c  */
- #line 561 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-     break;
 -  case 80:
 +  case 79:
  
  /* Line 1464 of yacc.c  */
- #line 563 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
 -#line 556 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
++#line 591 "ntp_parser.y"
++    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
 -  case 81:
 +  case 80:
  
  /* Line 1464 of yacc.c  */
- #line 565 "ntp_parser.y"
 -#line 558 "ntp_parser.y"
++#line 593 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
      break;
  
 -  case 82:
 +  case 81:
  
  /* Line 1464 of yacc.c  */
- #line 567 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-     break;
-   case 82:
- /* Line 1464 of yacc.c  */
- #line 569 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 83:
- /* Line 1464 of yacc.c  */
- #line 571 "ntp_parser.y"
 -#line 560 "ntp_parser.y"
++#line 595 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
-   case 84:
+   case 92:
  
  /* Line 1464 of yacc.c  */
- #line 581 "ntp_parser.y"
 -#line 585 "ntp_parser.y"
 -    { append_queue(cfgt.stats_list, (yyvsp[(2) - (2)].Queue)); }
++#line 622 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[(2) - (2)].Int_fifo)); }
      break;
  
-   case 85:
+   case 93:
  
  /* Line 1464 of yacc.c  */
- #line 583 "ntp_parser.y"
 -#line 587 "ntp_parser.y"
++#line 624 "ntp_parser.y"
      {
                        if (input_from_file) {
                                cfgt.stats_dir = (yyvsp[(2) - (2)].String);
                }
      break;
  
-   case 86:
+   case 94:
  
  /* Line 1464 of yacc.c  */
- #line 592 "ntp_parser.y"
 -#line 596 "ntp_parser.y"
++#line 633 "ntp_parser.y"
      {
 -                      enqueue(cfgt.filegen_opts,
 -                              create_filegen_node((yyvsp[(2) - (3)].Integer), (yyvsp[(3) - (3)].Queue)));
 +                      filegen_node *fgn;
 +                      
 +                      fgn = create_filegen_node((yyvsp[(2) - (3)].Integer), (yyvsp[(3) - (3)].Attr_val_fifo));
 +                      APPEND_G_FIFO(cfgt.filegen_opts, fgn);
                }
      break;
  
-   case 87:
+   case 95:
  
  /* Line 1464 of yacc.c  */
- #line 602 "ntp_parser.y"
 -#line 603 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
++#line 643 "ntp_parser.y"
 +    {
 +                      (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
 +                      APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
 +              }
      break;
  
-   case 88:
+   case 96:
  
  /* Line 1464 of yacc.c  */
- #line 607 "ntp_parser.y"
 -#line 604 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue(create_ival((yyvsp[(1) - (1)].Integer))); }
++#line 648 "ntp_parser.y"
 +    {
 +                      (yyval.Int_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
 +              }
      break;
  
-   case 97:
+   case 105:
  
  /* Line 1464 of yacc.c  */
- #line 626 "ntp_parser.y"
 -#line 620 "ntp_parser.y"
 -    { (yyval.Queue) = create_queue(); }
++#line 667 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +              }
      break;
  
-   case 98:
+   case 106:
  
  /* Line 1464 of yacc.c  */
- #line 630 "ntp_parser.y"
 -#line 622 "ntp_parser.y"
++#line 671 "ntp_parser.y"
      {
 -                      if ((yyvsp[(2) - (2)].Attr_val) != NULL)
 -                              (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
 -                      else
 -                              (yyval.Queue) = (yyvsp[(1) - (2)].Queue);
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
      break;
  
-   case 99:
+   case 107:
  
  /* Line 1464 of yacc.c  */
- #line 638 "ntp_parser.y"
 -#line 632 "ntp_parser.y"
++#line 679 "ntp_parser.y"
      {
-                       if (input_from_file)
+                       if (input_from_file) {
                                (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-                       else {
+                       else {
                                (yyval.Attr_val) = NULL;
                                YYFREE((yyvsp[(2) - (2)].String));
-                               yyerror("filegen file remote configuration ignored");
+                               yyerror("filegen file remote config ignored");
                        }
                }
      break;
  
-   case 100:
+   case 108:
  
  /* Line 1464 of yacc.c  */
- #line 648 "ntp_parser.y"
 -#line 642 "ntp_parser.y"
++#line 689 "ntp_parser.y"
      {
-                       if (input_from_file)
+                       if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
-                       else {
-                               (yyval.Attr_val) = NULL;
-                               yyerror("filegen type remote configuration ignored");
-                       }
-               }
-     break;
-   case 101:
- /* Line 1464 of yacc.c  */
- #line 657 "ntp_parser.y"
-     {
-                       if (input_from_file)
-                               (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
-                       else {
+                       } else {
                                (yyval.Attr_val) = NULL;
-                               yyerror("filegen link remote configuration ignored");
+                               yyerror("filegen type remote config ignored");
                        }
                }
      break;
  
-   case 102:
+   case 109:
  
  /* Line 1464 of yacc.c  */
- #line 666 "ntp_parser.y"
 -#line 651 "ntp_parser.y"
++#line 698 "ntp_parser.y"
      {
-                       if (input_from_file)
+                       const char *err;
+                       
+                       if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
-                       else {
+                       else {
                                (yyval.Attr_val) = NULL;
-                               yyerror("filegen nolink remote configuration ignored");
+                               if (T_Link == (yyvsp[(1) - (1)].Integer))
+                                       err = "filegen link remote config ignored";
+                               else
+                                       err = "filegen nolink remote config ignored";
+                               yyerror(err);
                        }
                }
      break;
  
-   case 103:
- /* Line 1464 of yacc.c  */
- #line 674 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 104:
+   case 110:
  
  /* Line 1464 of yacc.c  */
- #line 675 "ntp_parser.y"
 -#line 666 "ntp_parser.y"
++#line 713 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
      break;
  
-   case 112:
+   case 122:
  
  /* Line 1464 of yacc.c  */
- #line 695 "ntp_parser.y"
 -#line 696 "ntp_parser.y"
++#line 744 "ntp_parser.y"
      {
 -                      append_queue(cfgt.discard_opts, (yyvsp[(2) - (2)].Queue));
 +                      CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
      break;
  
-   case 113:
+   case 123:
  
  /* Line 1464 of yacc.c  */
- #line 699 "ntp_parser.y"
 -#line 700 "ntp_parser.y"
++#line 748 "ntp_parser.y"
      {
 -                      enqueue(cfgt.restrict_opts,
 -                              create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no));
 +                      CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
                }
      break;
  
-   case 114:
+   case 124:
  
  /* Line 1464 of yacc.c  */
- #line 703 "ntp_parser.y"
 -#line 705 "ntp_parser.y"
++#line 752 "ntp_parser.y"
      {
 -                      enqueue(cfgt.restrict_opts,
 -                              create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Queue), ip_file->line_no));
 +                      restrict_node *rn;
 +
 +                      rn = create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Int_fifo),
 +                                                ip_file->line_no);
 +                      APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
      break;
  
-   case 115:
+   case 125:
  
  /* Line 1464 of yacc.c  */
- #line 711 "ntp_parser.y"
 -#line 710 "ntp_parser.y"
++#line 760 "ntp_parser.y"
      {
 -                      enqueue(cfgt.restrict_opts,
 -                              create_restrict_node(
 -                                      create_address_node(
 -                                              estrdup("0.0.0.0"), 
 -                                              AF_INET),
 -                                      create_address_node(
 -                                              estrdup("0.0.0.0"), 
 -                                              AF_INET),
 -                                      (yyvsp[(4) - (4)].Queue), 
 -                                      ip_file->line_no));
 +                      restrict_node *rn;
 +
 +                      rn = create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Int_fifo),
 +                                                ip_file->line_no);
 +                      APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
      break;
  
-   case 116:
+   case 126:
  
  /* Line 1464 of yacc.c  */
- #line 719 "ntp_parser.y"
 -#line 723 "ntp_parser.y"
++#line 768 "ntp_parser.y"
      {
 -                      enqueue(cfgt.restrict_opts,
 -                              create_restrict_node(
 -                                      create_address_node(
 -                                              estrdup("::"), 
 -                                              AF_INET6),
 -                                      create_address_node(
 -                                              estrdup("::"), 
 -                                              AF_INET6),
 -                                      (yyvsp[(4) - (4)].Queue), 
 -                                      ip_file->line_no));
 +                      restrict_node *rn;
 +
 +                      rn = create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Int_fifo),
 +                                                ip_file->line_no);
 +                      APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
      break;
  
-   case 117:
+   case 127:
  
  /* Line 1464 of yacc.c  */
- #line 727 "ntp_parser.y"
 -#line 736 "ntp_parser.y"
++#line 776 "ntp_parser.y"
      {
 -                      enqueue(cfgt.restrict_opts,
 -                              create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Queue), ip_file->line_no));
 +                      restrict_node *rn;
 +
 +                      rn = create_restrict_node(
 +                              create_address_node(
 +                                      estrdup("0.0.0.0"), 
 +                                      AF_INET),
 +                              create_address_node(
 +                                      estrdup("0.0.0.0"), 
 +                                      AF_INET),
 +                              (yyvsp[(4) - (4)].Int_fifo), 
 +                              ip_file->line_no);
 +                      APPEND_G_FIFO(cfgt.restrict_opts, rn);
                }
      break;
  
-   case 118:
+   case 128:
  
  /* Line 1464 of yacc.c  */
- #line 742 "ntp_parser.y"
 -#line 744 "ntp_parser.y"
 -    { (yyval.Queue) = create_queue(); }
++#line 791 "ntp_parser.y"
 +    {
 +                      restrict_node *rn;
 +                      
 +                      rn = create_restrict_node(
 +                              create_address_node(
 +                                      estrdup("::"), 
 +                                      AF_INET6),
 +                              create_address_node(
 +                                      estrdup("::"), 
 +                                      AF_INET6),
 +                              (yyvsp[(4) - (4)].Int_fifo), 
 +                              ip_file->line_no);
 +                      APPEND_G_FIFO(cfgt.restrict_opts, rn);
 +              }
      break;
  
-   case 119:
+   case 129:
  
  /* Line 1464 of yacc.c  */
- #line 757 "ntp_parser.y"
 -#line 746 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
++#line 806 "ntp_parser.y"
 +    {
 +                      restrict_node * rn;
 +
 +                      append_gen_fifo((yyvsp[(3) - (3)].Int_fifo), create_int_node((yyvsp[(2) - (3)].Integer)));
 +                      rn = create_restrict_node(
 +                              NULL, NULL, (yyvsp[(3) - (3)].Int_fifo), ip_file->line_no);
 +                      APPEND_G_FIFO(cfgt.restrict_opts, rn);
 +              }
      break;
  
-   case 120:
 -  case 144:
++  case 130:
  
  /* Line 1464 of yacc.c  */
- #line 769 "ntp_parser.y"
 -#line 768 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 818 "ntp_parser.y"
 +    {
 +                      (yyval.Int_fifo) = NULL;
 +              }
      break;
  
-   case 121:
 -  case 145:
++  case 131:
  
  /* Line 1464 of yacc.c  */
- #line 773 "ntp_parser.y"
 -#line 770 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 822 "ntp_parser.y"
 +    {
 +                      (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
 +                      APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
 +              }
      break;
  
-   case 136:
+   case 146:
  
  /* Line 1464 of yacc.c  */
- #line 798 "ntp_parser.y"
 -#line 775 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
++#line 847 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 137:
 -  case 150:
++  case 147:
  
  /* Line 1464 of yacc.c  */
- #line 803 "ntp_parser.y"
 -#line 791 "ntp_parser.y"
 -    { enqueue(cfgt.fudge, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
++#line 852 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 138:
- /* Line 1464 of yacc.c  */
- #line 810 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 139:
- /* Line 1464 of yacc.c  */
- #line 811 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 140:
 -  case 151:
++  case 148:
  
  /* Line 1464 of yacc.c  */
- #line 812 "ntp_parser.y"
 -#line 796 "ntp_parser.y"
 -    { enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 860 "ntp_parser.y"
 +    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
-   case 141:
+   case 152:
  
  /* Line 1464 of yacc.c  */
- #line 817 "ntp_parser.y"
 -#line 798 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 871 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 142:
+   case 153:
  
  /* Line 1464 of yacc.c  */
- #line 822 "ntp_parser.y"
 -#line 803 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
++#line 876 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 143:
+   case 154:
  
  /* Line 1464 of yacc.c  */
- #line 829 "ntp_parser.y"
 -#line 805 "ntp_parser.y"
++#line 884 "ntp_parser.y"
 +    { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
 +    break;
 +
-   case 144:
++  case 163:
 +
 +/* Line 1464 of yacc.c  */
- #line 830 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
++#line 904 "ntp_parser.y"
++    {
++                      addr_opts_node *aon;
++                      
++                      aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
++                      APPEND_G_FIFO(cfgt.fudge, aon);
++              }
 +    break;
 +
-   case 145:
++  case 164:
 +
 +/* Line 1464 of yacc.c  */
- #line 831 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
++#line 914 "ntp_parser.y"
++    {
++                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
++              }
 +    break;
 +
-   case 146:
++  case 165:
 +
 +/* Line 1464 of yacc.c  */
- #line 832 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 147:
- /* Line 1464 of yacc.c  */
- #line 833 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 148:
- /* Line 1464 of yacc.c  */
- #line 834 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 149:
- /* Line 1464 of yacc.c  */
- #line 835 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 150:
- /* Line 1464 of yacc.c  */
- #line 836 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 151:
- /* Line 1464 of yacc.c  */
- #line 845 "ntp_parser.y"
-     {
-                       addr_opts_node *aon;
-                       
-                       aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
-                       APPEND_G_FIFO(cfgt.fudge, aon);
-               }
-     break;
-   case 152:
- /* Line 1464 of yacc.c  */
- #line 855 "ntp_parser.y"
-     {
-                       (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
-                       APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
-               }
-     break;
-   case 153:
- /* Line 1464 of yacc.c  */
- #line 860 "ntp_parser.y"
++#line 919 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
 +    break;
 +
-   case 154:
- /* Line 1464 of yacc.c  */
- #line 867 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-     break;
-   case 155:
++  case 166:
 +
 +/* Line 1464 of yacc.c  */
- #line 868 "ntp_parser.y"
++#line 927 "ntp_parser.y"
 +    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
 +    break;
 +
-   case 156:
- /* Line 1464 of yacc.c  */
- #line 869 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 157:
- /* Line 1464 of yacc.c  */
- #line 870 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
-     break;
-   case 158:
- /* Line 1464 of yacc.c  */
- #line 871 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
-     break;
-   case 159:
++  case 167:
 +
 +/* Line 1464 of yacc.c  */
- #line 872 "ntp_parser.y"
++#line 929 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
-   case 160:
 -  case 155:
++  case 168:
  
  /* Line 1464 of yacc.c  */
- #line 873 "ntp_parser.y"
 -#line 807 "ntp_parser.y"
++#line 931 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
-   case 161:
 -  case 156:
++  case 169:
  
  /* Line 1464 of yacc.c  */
- #line 874 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
 -#line 809 "ntp_parser.y"
++#line 933 "ntp_parser.y"
+     { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
      break;
  
-   case 162:
 -  case 163:
++  case 176:
  
  /* Line 1464 of yacc.c  */
- #line 883 "ntp_parser.y"
 -#line 831 "ntp_parser.y"
 -    { append_queue(cfgt.enable_opts, (yyvsp[(2) - (2)].Queue));  }
++#line 954 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
      break;
  
-   case 163:
 -  case 164:
++  case 177:
  
  /* Line 1464 of yacc.c  */
- #line 885 "ntp_parser.y"
 -#line 833 "ntp_parser.y"
 -    { append_queue(cfgt.disable_opts, (yyvsp[(2) - (2)].Queue));  }
++#line 956 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
      break;
  
-   case 164:
 -  case 165:
++  case 178:
  
  /* Line 1464 of yacc.c  */
- #line 890 "ntp_parser.y"
 -#line 838 "ntp_parser.y"
++#line 961 "ntp_parser.y"
      {
 -                      if ((yyvsp[(2) - (2)].Attr_val) != NULL)
 -                              (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val));
 -                      else
 -                              (yyval.Queue) = (yyvsp[(1) - (2)].Queue);
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
                }
      break;
  
-   case 165:
 -  case 166:
++  case 179:
  
  /* Line 1464 of yacc.c  */
- #line 895 "ntp_parser.y"
 -#line 845 "ntp_parser.y"
++#line 966 "ntp_parser.y"
      {
 -                      if ((yyvsp[(1) - (1)].Attr_val) != NULL)
 -                              (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val));
 -                      else
 -                              (yyval.Queue) = create_queue();
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
                }
      break;
  
-   case 166:
- /* Line 1464 of yacc.c  */
- #line 902 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
--  case 167:
- /* Line 1464 of yacc.c  */
- #line 903 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 168:
- /* Line 1464 of yacc.c  */
- #line 904 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 169:
- /* Line 1464 of yacc.c  */
- #line 905 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 170:
- /* Line 1464 of yacc.c  */
- #line 906 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
-     break;
-   case 171:
++  case 180:
  
  /* Line 1464 of yacc.c  */
- #line 907 "ntp_parser.y"
 -#line 855 "ntp_parser.y"
++#line 974 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
      break;
  
-   case 172:
 -  case 168:
++  case 181:
  
  /* Line 1464 of yacc.c  */
- #line 909 "ntp_parser.y"
 -#line 857 "ntp_parser.y"
++#line 976 "ntp_parser.y"
      { 
                        if (input_from_file) {
                                (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
                }
      break;
  
-   case 173:
 -  case 175:
++  case 188:
  
  /* Line 1464 of yacc.c  */
- #line 925 "ntp_parser.y"
 -#line 882 "ntp_parser.y"
 -    { append_queue(cfgt.tinker, (yyvsp[(2) - (2)].Queue)); }
++#line 1001 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[(2) - (2)].Attr_val_fifo)); }
      break;
  
-   case 174:
 -  case 176:
++  case 189:
  
  /* Line 1464 of yacc.c  */
- #line 930 "ntp_parser.y"
 -#line 886 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 1006 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 175:
 -  case 177:
++  case 190:
  
  /* Line 1464 of yacc.c  */
- #line 935 "ntp_parser.y"
 -#line 887 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 1011 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 176:
- /* Line 1464 of yacc.c  */
- #line 942 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-     break;
-   case 177:
- /* Line 1464 of yacc.c  */
- #line 943 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-     break;
--  case 178:
++  case 191:
  
  /* Line 1464 of yacc.c  */
- #line 944 "ntp_parser.y"
 -#line 892 "ntp_parser.y"
++#line 1019 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
      break;
  
-   case 179:
 -  case 187:
++  case 200:
  
  /* Line 1464 of yacc.c  */
- #line 945 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
 -#line 913 "ntp_parser.y"
++#line 1040 "ntp_parser.y"
+     {
 -                      struct attr_val *av;
++                      attr_val *av;
+                       
+                       av = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double));
 -                      enqueue(cfgt.vars, av);
++                      APPEND_G_FIFO(cfgt.vars, av);
+               }
      break;
  
-   case 180:
 -  case 188:
++  case 201:
  
  /* Line 1464 of yacc.c  */
- #line 946 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
 -#line 920 "ntp_parser.y"
++#line 1047 "ntp_parser.y"
+     {
 -                      struct attr_val *av;
++                      attr_val *av;
+                       
+                       av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
 -                      enqueue(cfgt.vars, av);
++                      APPEND_G_FIFO(cfgt.vars, av);
+               }
      break;
  
-   case 181:
 -  case 189:
++  case 202:
  
  /* Line 1464 of yacc.c  */
- #line 947 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
-     break;
-   case 182:
 -#line 927 "ntp_parser.y"
++#line 1054 "ntp_parser.y"
+     {
+                       char error_text[64];
 -                      struct attr_val *av;
++                      attr_val *av;
  
- /* Line 1464 of yacc.c  */
- #line 948 "ntp_parser.y"
-     { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+                       if (input_from_file) {
+                               av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
 -                              enqueue(cfgt.vars, av);
++                              APPEND_G_FIFO(cfgt.vars, av);
+                       } else {
+                               YYFREE((yyvsp[(2) - (2)].String));
+                               snprintf(error_text, sizeof(error_text),
+                                        "%s remote config ignored",
+                                        keyword((yyvsp[(1) - (2)].Integer)));
+                               yyerror(error_text);
+                       }
+               }
      break;
  
-   case 184:
 -  case 190:
++  case 203:
  
  /* Line 1464 of yacc.c  */
- #line 959 "ntp_parser.y"
 -#line 943 "ntp_parser.y"
++#line 1070 "ntp_parser.y"
      {
+                       if (!input_from_file) {
+                               yyerror("remote includefile ignored");
+                               break;
+                       }
                        if (curr_include_level >= MAXINCLUDELEVEL) {
                                fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
                                msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.\n");
                }
      break;
  
-   case 185:
 -  case 191:
++  case 204:
  
  /* Line 1464 of yacc.c  */
- #line 974 "ntp_parser.y"
 -#line 962 "ntp_parser.y"
++#line 1089 "ntp_parser.y"
      {
                        while (curr_include_level != -1)
                                FCLOSE(fp[curr_include_level--]);
                }
      break;
  
-   case 186:
 -  case 192:
--
--/* Line 1464 of yacc.c  */
- #line 980 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       
-                       av = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double));
-                       APPEND_G_FIFO(cfgt.vars, av);
-               }
 -#line 967 "ntp_parser.y"
 -    { enqueue(cfgt.vars, create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer))); }
--    break;
--
-   case 187:
 -  case 193:
--
--/* Line 1464 of yacc.c  */
- #line 987 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       
-                       av = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double));
-                       APPEND_G_FIFO(cfgt.vars, av);
-               }
 -#line 969 "ntp_parser.y"
 -    { /* Null action, possibly all null parms */ }
--    break;
--
-   case 188:
 -  case 194:
++  case 205:
  
  /* Line 1464 of yacc.c  */
- #line 994 "ntp_parser.y"
 -#line 971 "ntp_parser.y"
 -    { append_queue(cfgt.logconfig, (yyvsp[(2) - (2)].Queue)); }
++#line 1094 "ntp_parser.y"
 +    { /* see drift_parm below for actions */ }
      break;
  
-   case 189:
- /* Line 1464 of yacc.c  */
- #line 996 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       
-                       av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-                       APPEND_G_FIFO(cfgt.vars, av);
-               }
-     break;
-   case 190:
- /* Line 1464 of yacc.c  */
- #line 1003 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       
-                       av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-                       APPEND_G_FIFO(cfgt.vars, av);
-               }
-     break;
-   case 191:
- /* Line 1464 of yacc.c  */
- #line 1010 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       if (input_from_file) {
-                               av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-                               APPEND_G_FIFO(cfgt.vars, av);
-                       } else {
-                               YYFREE((yyvsp[(2) - (2)].String));
-                               yyerror("logfile remote configuration ignored");
-                       }
-               }
-     break;
-   case 192:
 -  case 195:
++  case 206:
  
  /* Line 1464 of yacc.c  */
- #line 1022 "ntp_parser.y"
 -#line 973 "ntp_parser.y"
 -    { append_queue(cfgt.phone, (yyvsp[(2) - (2)].Queue)); }
++#line 1096 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[(2) - (2)].Attr_val_fifo)); }
      break;
  
-   case 193:
 -  case 196:
++  case 207:
  
  /* Line 1464 of yacc.c  */
- #line 1024 "ntp_parser.y"
 -#line 975 "ntp_parser.y"
 -    { enqueue(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
++#line 1098 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[(2) - (2)].String_fifo)); }
      break;
  
-   case 194:
- /* Line 1464 of yacc.c  */
- #line 1026 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       if (input_from_file) {
-                               av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-                               APPEND_G_FIFO(cfgt.vars, av);
-                       } else {
-                               YYFREE((yyvsp[(2) - (2)].String));
-                               yyerror("saveconfigdir remote configuration ignored");
-                       }
-               }
-     break;
-   case 195:
 -  case 197:
++  case 208:
  
  /* Line 1464 of yacc.c  */
- #line 1038 "ntp_parser.y"
 -#line 977 "ntp_parser.y"
 -    { enqueue(cfgt.trap, create_addr_opts_node((yyvsp[(2) - (2)].Address_node), NULL)); }
++#line 1100 "ntp_parser.y"
 +    { APPEND_G_FIFO(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
      break;
  
-   case 196:
 -  case 198:
++  case 209:
  
  /* Line 1464 of yacc.c  */
- #line 1040 "ntp_parser.y"
-     {
-                       addr_opts_node *aon;
-                       
-                       aon = create_addr_opts_node((yyvsp[(2) - (2)].Address_node), NULL);
-                       APPEND_G_FIFO(cfgt.trap, aon);
-               }
-     break;
-   case 197:
- /* Line 1464 of yacc.c  */
- #line 1047 "ntp_parser.y"
 -#line 979 "ntp_parser.y"
 -    { enqueue(cfgt.trap, create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Queue))); }
++#line 1102 "ntp_parser.y"
 +    {
 +                      addr_opts_node *aon;
 +                      
 +                      aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
 +                      APPEND_G_FIFO(cfgt.trap, aon);
 +              }
      break;
  
-   case 198:
 -  case 199:
++  case 210:
  
  /* Line 1464 of yacc.c  */
- #line 1054 "ntp_parser.y"
 -#line 981 "ntp_parser.y"
 -    { append_queue(cfgt.ttl, (yyvsp[(2) - (2)].Queue)); }
++#line 1109 "ntp_parser.y"
 +    { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[(2) - (2)].Attr_val_fifo)); }
      break;
  
-   case 199:
- /* Line 1464 of yacc.c  */
- #line 1056 "ntp_parser.y"
-     {
-                       attr_val *av;
-                       
-                       av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
-                       APPEND_G_FIFO(cfgt.qos, av);
-               }
-     break;
-   case 200:
 -  case 207:
++  case 218:
  
  /* Line 1464 of yacc.c  */
- #line 1066 "ntp_parser.y"
 -#line 1002 "ntp_parser.y"
 -    { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String))); }
++#line 1130 "ntp_parser.y"
 +    {
 +                      attr_val *av;
 +                      
 +                      av = create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String));
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +              }
      break;
  
-   case 201:
 -  case 208:
++  case 219:
  
  /* Line 1464 of yacc.c  */
- #line 1073 "ntp_parser.y"
 -#line 1004 "ntp_parser.y"
 -    { enqueue(cfgt.vars, create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double)));
 -                        enqueue(cfgt.vars, create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String))); }
++#line 1137 "ntp_parser.y"
 +    {
 +                      attr_val *av;
 +                      
 +                      av = create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String));
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +                      av = create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double));
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +              }
      break;
  
-   case 202:
 -  case 209:
++  case 220:
  
  /* Line 1464 of yacc.c  */
- #line 1082 "ntp_parser.y"
 -#line 1007 "ntp_parser.y"
 -    { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, "\0")); }
++#line 1146 "ntp_parser.y"
 +    {
 +                      attr_val *av;
 +                      
 +                      av = create_attr_sval(T_Driftfile, "");
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +              }
      break;
  
-   case 203:
 -  case 210:
++  case 221:
  
  /* Line 1464 of yacc.c  */
- #line 1092 "ntp_parser.y"
 -#line 1012 "ntp_parser.y"
++#line 1156 "ntp_parser.y"
      { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); }
      break;
  
-   case 204:
 -  case 212:
++  case 223:
  
  /* Line 1464 of yacc.c  */
- #line 1094 "ntp_parser.y"
-     { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (3)].String), (yyvsp[(3) - (3)].String), 0); }
 -#line 1018 "ntp_parser.y"
++#line 1162 "ntp_parser.y"
+     { (yyval.Integer) = 0; }
      break;
  
-   case 205:
 -  case 213:
++  case 224:
  
  /* Line 1464 of yacc.c  */
- #line 1099 "ntp_parser.y"
 -#line 1023 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 1167 "ntp_parser.y"
 +    {
-                       (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
-                       APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
++                      (yyval.Attr_val_fifo) = NULL;
 +              }
      break;
  
-   case 206:
 -  case 214:
++  case 225:
  
  /* Line 1464 of yacc.c  */
- #line 1104 "ntp_parser.y"
 -#line 1024 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 1171 "ntp_parser.y"
 +    {
-                       (yyval.Attr_val_fifo) = NULL;
-                       APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
++                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 207:
 -  case 215:
++  case 226:
  
  /* Line 1464 of yacc.c  */
- #line 1112 "ntp_parser.y"
 -#line 1028 "ntp_parser.y"
++#line 1179 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
      break;
  
-   case 208:
 -  case 216:
++  case 227:
  
  /* Line 1464 of yacc.c  */
- #line 1114 "ntp_parser.y"
 -#line 1029 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_pval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Address_node)); }
++#line 1181 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), estrdup((yyvsp[(2) - (2)].Address_node)->address));
 +                      destroy_address_node((yyvsp[(2) - (2)].Address_node));
 +              }
      break;
  
-   case 209:
 -  case 217:
++  case 228:
  
  /* Line 1464 of yacc.c  */
- #line 1122 "ntp_parser.y"
 -#line 1033 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 1189 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 210:
 -  case 218:
++  case 229:
  
  /* Line 1464 of yacc.c  */
- #line 1127 "ntp_parser.y"
 -#line 1034 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 1194 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 211:
 -  case 219:
++  case 230:
  
  /* Line 1464 of yacc.c  */
- #line 1135 "ntp_parser.y"
 -#line 1039 "ntp_parser.y"
++#line 1202 "ntp_parser.y"
      {
 -                      char prefix = (yyvsp[(1) - (1)].String)[0];
 -                      char *type = (yyvsp[(1) - (1)].String) + 1;
 +                      char    prefix;
 +                      char *  type;
                        
 -                      if (prefix != '+' && prefix != '-' && prefix != '=') {
 -                              yyerror("Logconfig prefix is not '+', '-' or '='\n");
 -                      }
 -                      else
 -                              (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
 +                      switch ((yyvsp[(1) - (1)].String)[0]) {
 +                      
 +                      case '+':
 +                      case '-':
 +                      case '=':
 +                              prefix = (yyvsp[(1) - (1)].String)[0];
 +                              type = (yyvsp[(1) - (1)].String) + 1;
 +                              break;
 +                              
 +                      default:
 +                              prefix = '=';
 +                              type = (yyvsp[(1) - (1)].String);
 +                      }       
 +                      
 +                      (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
                        YYFREE((yyvsp[(1) - (1)].String));
                }
      break;
  
-   case 212:
 -  case 220:
++  case 231:
  
  /* Line 1464 of yacc.c  */
- #line 1160 "ntp_parser.y"
 -#line 1054 "ntp_parser.y"
++#line 1227 "ntp_parser.y"
      {
 -                      enqueue(cfgt.nic_rules,
 -                              create_nic_rule_node((yyvsp[(3) - (3)].Integer), NULL, (yyvsp[(2) - (3)].Integer)));
 +                      nic_rule_node *nrn;
 +                      
 +                      nrn = create_nic_rule_node((yyvsp[(3) - (3)].Integer), NULL, (yyvsp[(2) - (3)].Integer));
 +                      APPEND_G_FIFO(cfgt.nic_rules, nrn);
                }
      break;
  
-   case 213:
 -  case 221:
++  case 232:
  
  /* Line 1464 of yacc.c  */
- #line 1167 "ntp_parser.y"
 -#line 1059 "ntp_parser.y"
++#line 1234 "ntp_parser.y"
      {
 -                      enqueue(cfgt.nic_rules,
 -                              create_nic_rule_node(0, (yyvsp[(3) - (3)].String), (yyvsp[(2) - (3)].Integer)));
 +                      nic_rule_node *nrn;
 +                      
 +                      nrn = create_nic_rule_node(0, (yyvsp[(3) - (3)].String), (yyvsp[(2) - (3)].Integer));
 +                      APPEND_G_FIFO(cfgt.nic_rules, nrn);
                }
      break;
  
-   case 223:
 -  case 231:
++  case 242:
  
  /* Line 1464 of yacc.c  */
- #line 1201 "ntp_parser.y"
 -#line 1090 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_ival((yyvsp[(2) - (2)].Integer))); }
++#line 1268 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
 +              }
      break;
  
-   case 224:
 -  case 232:
++  case 243:
  
  /* Line 1464 of yacc.c  */
- #line 1206 "ntp_parser.y"
 -#line 1091 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue(create_ival((yyvsp[(1) - (1)].Integer))); }
++#line 1273 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
 +              }
      break;
  
-   case 225:
 -  case 233:
++  case 244:
  
  /* Line 1464 of yacc.c  */
- #line 1214 "ntp_parser.y"
 -#line 1096 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Attr_val)); }
++#line 1281 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
 +              }
      break;
  
-   case 226:
 -  case 234:
++  case 245:
  
  /* Line 1464 of yacc.c  */
- #line 1219 "ntp_parser.y"
 -#line 1098 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Attr_val)); }
++#line 1286 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
 +              }
      break;
  
-   case 227:
 -  case 235:
++  case 246:
  
  /* Line 1464 of yacc.c  */
- #line 1227 "ntp_parser.y"
 -#line 1103 "ntp_parser.y"
++#line 1294 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); }
      break;
  
-   case 229:
 -  case 237:
++  case 248:
  
  /* Line 1464 of yacc.c  */
- #line 1233 "ntp_parser.y"
 -#line 1109 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_shorts('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
++#line 1300 "ntp_parser.y"
 +    { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
      break;
  
-   case 230:
 -  case 238:
++  case 249:
  
  /* Line 1464 of yacc.c  */
- #line 1238 "ntp_parser.y"
 -#line 1113 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), create_pval((yyvsp[(2) - (2)].String))); }
++#line 1305 "ntp_parser.y"
 +    {
 +                      (yyval.String_fifo) = (yyvsp[(1) - (2)].String_fifo);
 +                      APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(2) - (2)].String)));
 +              }
      break;
  
-   case 231:
 -  case 239:
++  case 250:
  
  /* Line 1464 of yacc.c  */
- #line 1243 "ntp_parser.y"
 -#line 1114 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue(create_pval((yyvsp[(1) - (1)].String))); }
++#line 1310 "ntp_parser.y"
 +    {
 +                      (yyval.String_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(1) - (1)].String)));
 +              }
      break;
  
-   case 232:
 -  case 240:
++  case 251:
  
  /* Line 1464 of yacc.c  */
- #line 1251 "ntp_parser.y"
 -#line 1118 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Address_node)); }
++#line 1318 "ntp_parser.y"
 +    {
 +                      (yyval.Address_fifo) = (yyvsp[(1) - (2)].Address_fifo);
 +                      APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(2) - (2)].Address_node));
 +              }
      break;
  
-   case 233:
 -  case 241:
++  case 252:
  
  /* Line 1464 of yacc.c  */
- #line 1256 "ntp_parser.y"
 -#line 1119 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Address_node)); }
++#line 1323 "ntp_parser.y"
 +    {
 +                      (yyval.Address_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(1) - (1)].Address_node));
 +              }
      break;
  
-   case 234:
 -  case 242:
++  case 253:
  
  /* Line 1464 of yacc.c  */
- #line 1264 "ntp_parser.y"
 -#line 1124 "ntp_parser.y"
++#line 1331 "ntp_parser.y"
      {
                        if ((yyvsp[(1) - (1)].Integer) != 0 && (yyvsp[(1) - (1)].Integer) != 1) {
                                yyerror("Integer value is not boolean (0 or 1). Assuming 1");
                }
      break;
  
-   case 235:
 -  case 243:
++  case 254:
  
  /* Line 1464 of yacc.c  */
- #line 1272 "ntp_parser.y"
 -#line 1132 "ntp_parser.y"
++#line 1339 "ntp_parser.y"
      { (yyval.Integer) = 1; }
      break;
  
-   case 236:
 -  case 244:
++  case 255:
  
  /* Line 1464 of yacc.c  */
- #line 1273 "ntp_parser.y"
 -#line 1133 "ntp_parser.y"
++#line 1340 "ntp_parser.y"
      { (yyval.Integer) = 0; }
      break;
  
-   case 237:
 -  case 245:
++  case 256:
  
  /* Line 1464 of yacc.c  */
- #line 1277 "ntp_parser.y"
 -#line 1137 "ntp_parser.y"
++#line 1344 "ntp_parser.y"
      { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
      break;
  
-   case 239:
 -  case 247:
++  case 258:
  
  /* Line 1464 of yacc.c  */
- #line 1288 "ntp_parser.y"
 -#line 1148 "ntp_parser.y"
++#line 1355 "ntp_parser.y"
      {
 -                      cfgt.sim_details = create_sim_node((yyvsp[(3) - (5)].Queue), (yyvsp[(4) - (5)].Queue));
 +                      sim_node *sn;
 +                      
 +                      sn =  create_sim_node((yyvsp[(3) - (5)].Attr_val_fifo), (yyvsp[(4) - (5)].Sim_server_fifo));
 +                      APPEND_G_FIFO(cfgt.sim_details, sn);
  
 -                      /* Reset the old_config_style variable */
 +                      /* Revert from ; to \n for end-of-command */
                        old_config_style = 1;
                }
      break;
  
-   case 240:
 -  case 248:
++  case 259:
  
  /* Line 1464 of yacc.c  */
- #line 1305 "ntp_parser.y"
 -#line 1162 "ntp_parser.y"
++#line 1372 "ntp_parser.y"
      { old_config_style = 0; }
      break;
  
-   case 241:
 -  case 249:
 -
 -/* Line 1464 of yacc.c  */
 -#line 1166 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
 -    break;
 -
 -  case 250:
++  case 260:
  
  /* Line 1464 of yacc.c  */
- #line 1310 "ntp_parser.y"
 -#line 1167 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
++#line 1377 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val));
 +              }
      break;
  
-   case 242:
 -  case 251:
++  case 261:
  
  /* Line 1464 of yacc.c  */
- #line 1315 "ntp_parser.y"
 -#line 1171 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
++#line 1382 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
 +              }
      break;
  
-   case 243:
 -  case 252:
++  case 262:
  
  /* Line 1464 of yacc.c  */
- #line 1323 "ntp_parser.y"
 -#line 1172 "ntp_parser.y"
++#line 1390 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
      break;
  
-   case 246:
 -  case 253:
++  case 265:
  
  /* Line 1464 of yacc.c  */
- #line 1333 "ntp_parser.y"
 -#line 1176 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_server)); }
++#line 1400 "ntp_parser.y"
 +    {
 +                      (yyval.Sim_server_fifo) = (yyvsp[(1) - (2)].Sim_server_fifo);
 +                      APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(2) - (2)].Sim_server));
 +              }
      break;
  
-   case 247:
 -  case 254:
++  case 266:
  
  /* Line 1464 of yacc.c  */
- #line 1338 "ntp_parser.y"
 -#line 1177 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_server)); }
++#line 1405 "ntp_parser.y"
 +    {
 +                      (yyval.Sim_server_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(1) - (1)].Sim_server));
 +              }
      break;
  
-   case 248:
 -  case 255:
++  case 267:
  
  /* Line 1464 of yacc.c  */
- #line 1346 "ntp_parser.y"
 -#line 1182 "ntp_parser.y"
 -    { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Queue)); }
++#line 1413 "ntp_parser.y"
 +    { (yyval.Sim_server) = create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Sim_script_fifo)); }
      break;
  
-   case 249:
 -  case 256:
++  case 268:
  
  /* Line 1464 of yacc.c  */
- #line 1351 "ntp_parser.y"
 -#line 1186 "ntp_parser.y"
++#line 1418 "ntp_parser.y"
      { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
      break;
  
-   case 250:
 -  case 257:
++  case 269:
  
  /* Line 1464 of yacc.c  */
- #line 1356 "ntp_parser.y"
 -#line 1190 "ntp_parser.y"
++#line 1423 "ntp_parser.y"
      { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
      break;
  
-   case 251:
 -  case 258:
 -
 -/* Line 1464 of yacc.c  */
 -#line 1194 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (2)].Queue), (yyvsp[(2) - (2)].Sim_script)); }
 -    break;
 -
 -  case 259:
 -
 -/* Line 1464 of yacc.c  */
 -#line 1195 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (1)].Sim_script)); }
 -    break;
 -
 -  case 260:
 -
 -/* Line 1464 of yacc.c  */
 -#line 1200 "ntp_parser.y"
 -    { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Queue)); }
 -    break;
 -
 -  case 261:
 -
 -/* Line 1464 of yacc.c  */
 -#line 1204 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue((yyvsp[(1) - (3)].Queue), (yyvsp[(2) - (3)].Attr_val)); }
 -    break;
 -
 -  case 262:
++  case 270:
  
  /* Line 1464 of yacc.c  */
- #line 1361 "ntp_parser.y"
 -#line 1205 "ntp_parser.y"
 -    { (yyval.Queue) = enqueue_in_new_queue((yyvsp[(1) - (2)].Attr_val)); }
++#line 1428 "ntp_parser.y"
 +    {
 +                      (yyval.Sim_script_fifo) = (yyvsp[(1) - (2)].Sim_script_fifo);
 +                      APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(2) - (2)].Sim_script));
 +              }
      break;
  
-   case 252:
 -  case 263:
++  case 271:
  
  /* Line 1464 of yacc.c  */
- #line 1366 "ntp_parser.y"
 -#line 1210 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
++#line 1433 "ntp_parser.y"
 +    {
 +                      (yyval.Sim_script_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(1) - (1)].Sim_script));
 +              }
      break;
  
-   case 253:
 -  case 264:
++  case 272:
  
  /* Line 1464 of yacc.c  */
- #line 1374 "ntp_parser.y"
 -#line 1212 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
++#line 1441 "ntp_parser.y"
 +    { (yyval.Sim_script) = create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Attr_val_fifo)); }
      break;
  
-   case 254:
 -  case 265:
++  case 273:
  
  /* Line 1464 of yacc.c  */
- #line 1379 "ntp_parser.y"
 -#line 1214 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
++#line 1446 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo);
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val));
 +              }
      break;
  
-   case 255:
 -  case 266:
++  case 274:
  
  /* Line 1464 of yacc.c  */
- #line 1384 "ntp_parser.y"
 -#line 1216 "ntp_parser.y"
 -    { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
++#line 1451 "ntp_parser.y"
 +    {
 +                      (yyval.Attr_val_fifo) = NULL;
 +                      APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
 +              }
      break;
  
-   case 256:
 -  case 267:
++  case 275:
  
  /* Line 1464 of yacc.c  */
- #line 1392 "ntp_parser.y"
 -#line 1218 "ntp_parser.y"
++#line 1459 "ntp_parser.y"
      { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
      break;
  
  
  
  /* Line 1464 of yacc.c  */
- #line 3944 "ntp_parser.c"
 -#line 3356 "ntp_parser.c"
++#line 3547 "ntp_parser.c"
        default: break;
      }
    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@@ -4152,10 -3564,13 +3755,13 @@@ yyreturn
  
  
  /* Line 1684 of yacc.c  */
- #line 1403 "ntp_parser.y"
 -#line 1222 "ntp_parser.y"
++#line 1470 "ntp_parser.y"
  
  
- void yyerror (char *msg)
 -void
++void 
+ yyerror(
+       const char *msg
+       )
  {
        int retval;
  
index 69f70c796bac664252e14fe9e9fb436e9879b8f0,377443a9413dd17227ec3d2a5425439a32f364f6..057e96a35a1ededa00629685aa00e0de4b4af892
  
  /*** NON-TERMINALS ***/
  %type <Integer>       access_control_flag
 -%type <Queue>         ac_flag_list
 +%type <Int_fifo>      ac_flag_list
  %type <Address_node>  address
 -%type <Queue>         address_list
+ %type <Integer>       address_fam
 +%type <Address_fifo>  address_list
  %type <Integer>       boolean
  %type <Integer>       client_type
  %type <Attr_val>      crypto_command
 -%type <Queue>         crypto_command_list
 +%type <Attr_val_fifo> crypto_command_list
+ %type <Integer>       crypto_str_keyword
  %type <Attr_val>      discard_option
 -%type <Queue>         discard_option_list
+ %type <Integer>       discard_option_keyword
 +%type <Attr_val_fifo> discard_option_list
+ %type <Integer>       enable_disable
  %type <Attr_val>      filegen_option
 -%type <Queue>         filegen_option_list
 +%type <Attr_val_fifo> filegen_option_list
  %type <Integer>       filegen_type
  %type <Attr_val>      fudge_factor
 -%type <Queue>         fudge_factor_list
 -%type <Queue>         integer_list
 -%type <Queue>         integer_list_range
+ %type <Integer>       fudge_factor_bool_keyword
+ %type <Integer>       fudge_factor_dbl_keyword
 +%type <Attr_val_fifo> fudge_factor_list
 +%type <Attr_val_fifo> integer_list
 +%type <Attr_val_fifo> integer_list_range
  %type <Attr_val>      integer_list_range_elt
  %type <Attr_val>      integer_range
  %type <Integer>       nic_rule_action
  %type <Integer>       interface_command
  %type <Integer>       interface_nic
  %type <Address_node>  ip_address
+ %type <Integer>       link_nolink
  %type <Attr_val>      log_config_command
 -%type <Queue>         log_config_list
 +%type <Attr_val_fifo> log_config_list
+ %type <Integer>       misc_cmd_dbl_keyword
+ %type <Integer>       misc_cmd_str_keyword
+ %type <Integer>       misc_cmd_str_lcl_keyword
 +%type <Attr_val>      mru_option
++%type <Integer>       mru_option_keyword
 +%type <Attr_val_fifo> mru_option_list
  %type <Integer>       nic_rule_class
  %type <Double>        number
  %type <Attr_val>      option
 -%type <Queue>         option_list
+ %type <Attr_val>      option_flag
+ %type <Integer>       option_flag_keyword
 +%type <Attr_val_fifo> option_list
+ %type <Attr_val>      option_int
+ %type <Integer>       option_int_keyword
  %type <Integer>       stat
 -%type <Queue>         stats_list
 -%type <Queue>         string_list
 +%type <Int_fifo>      stats_list
 +%type <String_fifo>   string_list
  %type <Attr_val>      system_option
 -%type <Queue>         system_option_list
+ %type <Integer>       system_option_flag_keyword
 +%type <Attr_val_fifo> system_option_list
+ %type <Integer>       t_default_or_zero
+ %type <Integer>       tinker_option_keyword
  %type <Attr_val>      tinker_option
 -%type <Queue>         tinker_option_list
 +%type <Attr_val_fifo> tinker_option_list
  %type <Attr_val>      tos_option
 -%type <Queue>         tos_option_list
+ %type <Integer>       tos_option_dbl_keyword
+ %type <Integer>       tos_option_int_keyword
 +%type <Attr_val_fifo> tos_option_list
  %type <Attr_val>      trap_option
 -%type <Queue>         trap_option_list
 +%type <Attr_val_fifo> trap_option_list
  %type <Integer>       unpeer_keyword
  %type <Set_var>       variable_assign
  
@@@ -352,19 -357,15 +372,17 @@@ command :       /* NULL STATEMENT *
  server_command
        :       client_type address option_list
                {
 -                      struct peer_node *my_node =  create_peer_node($1, $2, $3);
 -                      if (my_node)
 -                              enqueue(cfgt.peers, my_node);
 +                      peer_node *my_node;
 +
 +                      my_node = create_peer_node($1, $2, $3);
-                       if (my_node)
-                               APPEND_G_FIFO(cfgt.peers, my_node);
++                      APPEND_G_FIFO(cfgt.peers, my_node);
                }
        |       client_type address
                {
 -                      struct peer_node *my_node = create_peer_node($1, $2, NULL);
 -                      if (my_node)
 -                              enqueue(cfgt.peers, my_node);
 +                      peer_node *my_node;
 +
 +                      my_node = create_peer_node($1, $2, NULL);
-                       if (my_node)
-                               APPEND_G_FIFO(cfgt.peers, my_node);
++                      APPEND_G_FIFO(cfgt.peers, my_node);
                }
        ;
  
@@@ -385,35 -384,61 +401,59 @@@ addres
        ;
  
  ip_address
 -      :       T_String
 -                      { $$ = create_address_node($1, 0); }
 +      :       T_String 
 +                      { $$ = create_address_node($1, AF_UNSPEC); }
        ;
  
+ address_fam
+       :       T_Ipv4_flag
+                       { $$ = AF_INET; }
+       |       T_Ipv6_flag
+                       { $$ = AF_INET6; }
+       ;
  option_list
 -      :       option_list option { $$ = enqueue($1, $2); }
 -      |       option { $$ = enqueue_in_new_queue($1); }
 +      :       option_list option 
 +                      { $$ = append_gen_fifo($1, $2); }
 +      |       option
 +                      { $$ = append_gen_fifo(NULL, $1); }
        ;
  
  option
-       :       T_Autokey               { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Burst                 { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Iburst                { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Key T_Integer         { $$ = create_attr_ival($1, $2); }
-       |       T_Minpoll T_Integer     { $$ = create_attr_ival($1, $2); }
-       |       T_Maxpoll T_Integer     { $$ = create_attr_ival($1, $2); }
-       |       T_Noselect              { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Preempt               { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Prefer                { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_True                  { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Xleave                { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Ttl T_Integer         { $$ = create_attr_ival($1, $2); }
-       |       T_Mode T_Integer        { $$ = create_attr_ival($1, $2); }
-       |       T_Version T_Integer     { $$ = create_attr_ival($1, $2); }
+       :       option_flag
+       |       option_int
 -      |       T_Bias number
 -                      { $$ = create_attr_dval($1, $2); }
        ;
  
+ option_flag
+       :       option_flag_keyword
+                       { $$ = create_attr_ival(T_Flag, $1); }
+       ;
+ option_flag_keyword
+       :       T_Autokey
+       |       T_Burst
+       |       T_Iburst
+       |       T_Noselect
+       |       T_Preempt
+       |       T_Prefer
+       |       T_True
+       |       T_Xleave
+       ;
+ option_int
+       :       option_int_keyword T_Integer
+                       { $$ = create_attr_ival($1, $2); }
+       ;
+ option_int_keyword
+       :       T_Key
+       |       T_Minpoll
+       |       T_Maxpoll
+       |       T_Ttl
+       |       T_Mode
+       |       T_Version
+       ;
  
 -
 -
  /* unpeer commands
   * ---------------
   */
@@@ -523,6 -527,15 +555,14 @@@ crypto_comman
                }
        ;
  
 -      |       T_Sign
+ crypto_str_keyword
+       :       T_Host
+       |       T_Ident
+       |       T_Pw
+       |       T_Randfile
+       |       T_Digest
+       ;
  
  /* Orphan Mode Commands
   * --------------------
@@@ -547,31 -552,30 +587,32 @@@ tos_option_lis
        ;
  
  tos_option
-       :       T_Ceiling T_Integer
-                       { $$ = create_attr_ival($1, $2); }
-       |       T_Floor T_Integer
-                       { $$ = create_attr_ival($1, $2); }
-       |       T_Cohort boolean
-                       { $$ = create_attr_ival($1, $2); }
-       |       T_Orphan T_Integer
-                       { $$ = create_attr_ival($1, $2); }
-       |       T_Orphanwait T_Integer
+       :       tos_option_int_keyword T_Integer
 -                      { $$ = create_attr_dval($1, (double)$2); }
 +                      { $$ = create_attr_ival($1, $2); }
-       |       T_Mindist number
-                       { $$ = create_attr_dval($1, $2); }
-       |       T_Maxdist number
-                       { $$ = create_attr_dval($1, $2); }
-       |       T_Minclock number
-                       { $$ = create_attr_dval($1, $2); }
-       |       T_Maxclock number
+       |       tos_option_dbl_keyword number
                        { $$ = create_attr_dval($1, $2); }
-       |       T_Minsane T_Integer
-                       { $$ = create_attr_ival($1, $2); }
-       |       T_Beacon T_Integer
+       |       T_Cohort boolean
                        { $$ = create_attr_ival($1, $2); }
        ;
  
 +
+ tos_option_int_keyword
+       :       T_Ceiling
+       |       T_Floor
+       |       T_Orphan
++      |       T_Orphanwait
+       |       T_Minsane
+       |       T_Beacon
+       ;
+ tos_option_dbl_keyword
+       :       T_Mindist
+       |       T_Maxdist
+       |       T_Minclock
+       |       T_Maxclock
+       ;
  /* Monitoring Commands
   * -------------------
   */
@@@ -646,35 -640,42 +687,43 @@@ filegen_optio
                }
        |       T_Type filegen_type
                {
-                       if (input_from_file)
+                       if (input_from_file) {
                                $$ = create_attr_ival($1, $2);
-                       else {
+                       else {
                                $$ = NULL;
-                               yyerror("filegen type remote configuration ignored");
+                               yyerror("filegen type remote config ignored");
                        }
                }
-       |       T_Link
+       |       link_nolink
                {
-                       if (input_from_file)
+                       const char *err;
+                       
+                       if (input_from_file) {
                                $$ = create_attr_ival(T_Flag, $1);
-                       else {
+                       else {
                                $$ = NULL;
-                               yyerror("filegen link remote configuration ignored");
+                               if (T_Link == $1)
+                                       err = "filegen link remote config ignored";
+                               else
+                                       err = "filegen nolink remote config ignored";
+                               yyerror(err);
                        }
                }
+       |       enable_disable
+                       { $$ = create_attr_ival(T_Flag, $1); }
+       ;
+ link_nolink
+       :       T_Link
        |       T_Nolink
-               {
-                       if (input_from_file)
-                               $$ = create_attr_ival(T_Flag, $1);
-                       else {
-                               $$ = NULL;
-                               yyerror("filegen nolink remote configuration ignored");
-                       }
-               }
-       |       T_Enable        { $$ = create_attr_ival(T_Flag, $1); }
-       |       T_Disable       { $$ = create_attr_ival(T_Flag, $1); }
        ;
  
+ enable_disable
+       :       T_Enable
+       |       T_Disable
+       ;
++
  filegen_type
        :       T_None
        |       T_Pid
@@@ -807,34 -771,16 +856,44 @@@ discard_option_lis
        ;
  
  discard_option
-       :       T_Average T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Minimum T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Monitor T_Integer { $$ = create_attr_ival($1, $2); }
+       :       discard_option_keyword T_Integer
+                       { $$ = create_attr_ival($1, $2); }
+       ;
+ discard_option_keyword
+       :       T_Average
+       |       T_Minimum
+       |       T_Monitor
        ;
  
-       :       T_Incalloc  T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Incmem    T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Initalloc T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Initmem   T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Maxage    T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Maxdepth  T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Maxmem    T_Integer { $$ = create_attr_ival($1, $2); }
-       |       T_Mindepth  T_Integer { $$ = create_attr_ival($1, $2); }
 +mru_option_list
 +      :       mru_option_list mru_option
 +              {
 +                      $$ = $1;
 +                      APPEND_G_FIFO($$, $2);
 +              }
 +      |       mru_option 
 +              {
 +                      $$ = NULL;
 +                      APPEND_G_FIFO($$, $1);
 +              }
 +      ;
 +
 +mru_option
++      :       mru_option_keyword T_Integer
++                      { $$ = create_attr_ival($1, $2); }
++      ;
++
++mru_option_keyword
++      :       T_Incalloc
++      |       T_Incmem
++      |       T_Initalloc
++      |       T_Initmem
++      |       T_Maxage
++      |       T_Maxdepth
++      |       T_Maxmem
++      |       T_Mindepth
 +      ;
  
  /* Fudge Commands
   * --------------
@@@ -864,16 -799,29 +923,28 @@@ fudge_factor_lis
        ;
        
  fudge_factor
-       :       T_Time1 number          { $$ = create_attr_dval($1, $2); }
-       |       T_Time2 number          { $$ = create_attr_dval($1, $2); }
-       |       T_Stratum T_Integer     { $$ = create_attr_ival($1, $2); }
-       |       T_Refid T_String        { $$ = create_attr_sval($1, $2); }
-       |       T_Flag1 boolean         { $$ = create_attr_ival($1, $2); }
-       |       T_Flag2 boolean         { $$ = create_attr_ival($1, $2); }
-       |       T_Flag3 boolean         { $$ = create_attr_ival($1, $2); }
-       |       T_Flag4 boolean         { $$ = create_attr_ival($1, $2); }
+       :       fudge_factor_dbl_keyword number
+                       { $$ = create_attr_dval($1, $2); }
+       |       fudge_factor_bool_keyword boolean
+                       { $$ = create_attr_ival($1, $2); }
+       |       T_Stratum T_Integer
+                       { $$ = create_attr_ival($1, $2); }
+       |       T_Refid T_String
+                       { $$ = create_attr_sval($1, $2); }
+       ;
+ fudge_factor_dbl_keyword
+       :       T_Time1
+       |       T_Time2
+       ;
+ fudge_factor_bool_keyword
+       :       T_Flag1
+       |       T_Flag2
+       |       T_Flag3
+       |       T_Flag4
        ;
  
 -
  /* Command for System Options
   * --------------------------
   */
@@@ -916,6 -864,16 +983,15 @@@ system_optio
                }
        ;
  
 -
+ system_option_flag_keyword
+       :       T_Auth
+       |       T_Bclient
+       |       T_Calibrate
+       |       T_Kernel
+       |       T_Monitor
+       |       T_Ntp
+       ;
  /* Tinker Commands
   * ---------------
   */
@@@ -955,136 -909,102 +1036,119 @@@ tinker_option_keywor
  
  miscellaneous_command
        :       interface_command
-       |       T_Includefile T_String command
-               {
-                       if (curr_include_level >= MAXINCLUDELEVEL) {
-                               fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
-                               msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.\n");
-                       } else {
-                               fp[curr_include_level + 1] = F_OPEN(FindConfig($2), "r");
-                               if (fp[curr_include_level + 1] == NULL) {
-                                       fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig($2));
-                                       msyslog(LOG_ERR, "getconfig: Couldn't open <%s>\n", FindConfig($2));
-                               } else {
-                                       ip_file = fp[++curr_include_level];
-                               }
-                       }
-               }
-       |       T_End
-               {
-                       while (curr_include_level != -1)
-                               FCLOSE(fp[curr_include_level--]);
-               }
-       |       T_Broadcastdelay number
+       |       misc_cmd_dbl_keyword number
                {
 -                      struct attr_val *av;
 +                      attr_val *av;
                        
                        av = create_attr_dval($1, $2);
 -                      enqueue(cfgt.vars, av);
 +                      APPEND_G_FIFO(cfgt.vars, av);
                }
-       |       T_Tick number
-               {
-                       attr_val *av;
-                       
-                       av = create_attr_dval($1, $2);
-                       APPEND_G_FIFO(cfgt.vars, av);
-               }
-       |       T_Driftfile drift_parm
-                       { /* see drift_parm below for actions */ }
-       |       T_Leapfile T_String
-               {
-                       attr_val *av;
-                       
-                       av = create_attr_sval($1, $2);
-                       APPEND_G_FIFO(cfgt.vars, av);
-               }
-       |       T_Pidfile T_String
+       |       misc_cmd_str_keyword T_String
                {
 -                      struct attr_val *av;
 +                      attr_val *av;
                        
                        av = create_attr_sval($1, $2);
 -                      enqueue(cfgt.vars, av);
 +                      APPEND_G_FIFO(cfgt.vars, av);
                }
-       |       T_Logfile T_String
+       |       misc_cmd_str_lcl_keyword T_String
                {
 -                      struct attr_val *av;
+                       char error_text[64];
 +                      attr_val *av;
  
                        if (input_from_file) {
                                av = create_attr_sval($1, $2);
 -                              enqueue(cfgt.vars, av);
 +                              APPEND_G_FIFO(cfgt.vars, av);
                        } else {
                                YYFREE($2);
-                               yyerror("logfile remote configuration ignored");
+                               snprintf(error_text, sizeof(error_text),
+                                        "%s remote config ignored",
+                                        keyword($1));
+                               yyerror(error_text);
                        }
                }
-       |       T_Logconfig log_config_list
-                       { CONCAT_G_FIFOS(cfgt.logconfig, $2); }
-       |       T_Phone string_list
-                       { CONCAT_G_FIFOS(cfgt.phone, $2); }
-       |       T_Saveconfigdir T_String
+       |       T_Includefile T_String command
                {
-                       attr_val *av;
-                       if (input_from_file) {
-                               av = create_attr_sval($1, $2);
-                               APPEND_G_FIFO(cfgt.vars, av);
+                       if (!input_from_file) {
+                               yyerror("remote includefile ignored");
+                               break;
+                       }
+                       if (curr_include_level >= MAXINCLUDELEVEL) {
+                               fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
+                               msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.\n");
                        } else {
-                               YYFREE($2);
-                               yyerror("saveconfigdir remote configuration ignored");
+                               fp[curr_include_level + 1] = F_OPEN(FindConfig($2), "r");
+                               if (fp[curr_include_level + 1] == NULL) {
+                                       fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig($2));
+                                       msyslog(LOG_ERR, "getconfig: Couldn't open <%s>\n", FindConfig($2));
+                               } else {
+                                       ip_file = fp[++curr_include_level];
+                               }
                        }
                }
-       |       T_Setvar variable_assign
-                       { APPEND_G_FIFO(cfgt.setvar, $2); }
-       |       T_Trap ip_address
+       |       T_End
                {
-                       addr_opts_node *aon;
-                       
-                       aon = create_addr_opts_node($2, NULL);
-                       APPEND_G_FIFO(cfgt.trap, aon);
+                       while (curr_include_level != -1)
+                               FCLOSE(fp[curr_include_level--]);
                }
 -      |       T_Calldelay T_Integer
 -                      { enqueue(cfgt.vars, create_attr_ival($1, $2)); }
+       |       T_Driftfile drift_parm
 -                      { /* Null action, possibly all null parms */ }
++                      { /* see drift_parm below for actions */ }
+       |       T_Logconfig log_config_list
 -                      { append_queue(cfgt.logconfig, $2); }
++                      { CONCAT_G_FIFOS(cfgt.logconfig, $2); }
+       |       T_Phone string_list
 -                      { append_queue(cfgt.phone, $2); }
++                      { CONCAT_G_FIFOS(cfgt.phone, $2); }
+       |       T_Setvar variable_assign
 -                      { enqueue(cfgt.setvar, $2); }
 -      |       T_Trap ip_address
 -                      { enqueue(cfgt.trap, create_addr_opts_node($2, NULL)); }
++                      { APPEND_G_FIFO(cfgt.setvar, $2); }
        |       T_Trap ip_address trap_option_list
 -                      { enqueue(cfgt.trap, create_addr_opts_node($2, $3)); }
 +              {
 +                      addr_opts_node *aon;
 +                      
 +                      aon = create_addr_opts_node($2, $3);
 +                      APPEND_G_FIFO(cfgt.trap, aon);
 +              }
        |       T_Ttl integer_list
 -                      { append_queue(cfgt.ttl, $2); }
 +                      { CONCAT_G_FIFOS(cfgt.ttl, $2); }
-       |       T_Qos T_String
-               {
-                       attr_val *av;
-                       
-                       av = create_attr_sval($1, $2);
-                       APPEND_G_FIFO(cfgt.qos, av);
-               }
        ;
-       
+ misc_cmd_dbl_keyword
+       :       T_Broadcastdelay
+       |       T_Tick
+       ;
+ misc_cmd_str_keyword
+       :       T_Leapfile
+       |       T_Pidfile
+       |       T_Qos
+       ;
+ misc_cmd_str_lcl_keyword
+       :       T_Logfile
+       |       T_Saveconfigdir
+       ;
  drift_parm
        :       T_String
 -                      { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, $1)); }
 +              {
 +                      attr_val *av;
 +                      
 +                      av = create_attr_sval(T_Driftfile, $1);
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +              }
        |       T_String T_Double
 -                      { enqueue(cfgt.vars, create_attr_dval(T_WanderThreshold, $2));
 -                        enqueue(cfgt.vars, create_attr_sval(T_Driftfile, $1)); }
 -      |       /* Null driftfile,  indicated by null string "\0" */
 -                      { enqueue(cfgt.vars, create_attr_sval(T_Driftfile, "\0")); }
 +              {
 +                      attr_val *av;
 +                      
 +                      av = create_attr_sval(T_Driftfile, $1);
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +                      av = create_attr_dval(T_WanderThreshold, $2);
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +              }
 +      |       /* Null driftfile,  indicated by empty string "" */
 +              {
 +                      attr_val *av;
 +                      
 +                      av = create_attr_sval(T_Driftfile, "");
 +                      APPEND_G_FIFO(cfgt.vars, av);
 +              }
        ;
  
  variable_assign
@@@ -1095,16 -1019,9 +1163,15 @@@ t_default_or_zer
        ;
  
  trap_option_list
--      :       trap_option_list trap_option
 -                              { $$ = enqueue($1, $2); }
 -      |       trap_option     { $$ = enqueue_in_new_queue($1); }
++      :       /* empty list */
 +              {
-                       $$ = $1;
-                       APPEND_G_FIFO($$, $2);
++                      $$ = NULL;
 +              }
-       |       trap_option
++      |       trap_option_list trap_option
 +              {
-                       $$ = NULL;
-                       APPEND_G_FIFO($$, $1);
++                      $$ = $1;
++                      APPEND_G_FIFO($$, $2);
 +              }
        ;
  
  trap_option
@@@ -1402,7 -1221,10 +1469,10 @@@ sim_act_keywor
  
  %%
  
- void yyerror (char *msg)
 -void
++void 
+ yyerror(
+       const char *msg
+       )
  {
        int retval;
  
Simple merge