]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- infra-cache-min-rtt patch from Florian Riehm, for expected long
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 2 Feb 2015 08:46:22 +0000 (08:46 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 2 Feb 2015 08:46:22 +0000 (08:46 +0000)
  uplink roundtrip times.

git-svn-id: file:///svn/unbound/trunk@3328 be551aaa-1e26-0410-a405-d3ace91eadb9

13 files changed:
Makefile.in
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/rtt.c
util/rtt.h

index f89ceb39750d4e266ca8bdeefa747487825bd7e6..e35db2dc84e9d16232b641a9d960a687816c1b01 100644 (file)
@@ -689,13 +689,14 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/i
  $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/ldns/sbuffer.h
 listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/services/outside_network.h \
- $(srcdir)/util/rbtree.h $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \
- $(srcdir)/ldns/sbuffer.h
+ $(srcdir)/util/rbtree.h $(srcdir)/dnstap/dnstap_config.h $(srcdir)/util/log.h $(srcdir)/util/config_file.h \
+ $(srcdir)/util/net_help.h $(srcdir)/ldns/sbuffer.h
 localzone.lo localzone.o: $(srcdir)/services/localzone.c config.h $(srcdir)/services/localzone.h \
  $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/ldns/str2wire.h $(srcdir)/ldns/rrdef.h \
  $(srcdir)/ldns/sbuffer.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \
- $(srcdir)/util/net_help.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h
+ $(srcdir)/util/net_help.h $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h
 mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
  $(srcdir)/util/log.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
@@ -711,15 +712,16 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service
  $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h
 outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \
  $(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/netevent.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnstap/dnstap_config.h
 outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c config.h \
  $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \
- $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h \
- $(srcdir)/ldns/rrdef.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
- $(srcdir)/services/modstack.h $(srcdir)/ldns/sbuffer.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rtt.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \
+ $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \
+ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/ldns/sbuffer.h \
+ $(srcdir)/dnstap/dnstap.h \
  
 alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
@@ -732,8 +734,8 @@ config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/ut
  $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h $(srcdir)/util/fptr_wlist.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/ldns/wire2str.h $(srcdir)/ldns/parseutil.h \
- $(srcdir)/util/iana_ports.inc
+ $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/util/rtt.h $(srcdir)/ldns/wire2str.h \
+ $(srcdir)/ldns/parseutil.h $(srcdir)/util/iana_ports.inc
 configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \
  $(srcdir)/util/config_file.h util/configparser.h
 configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \
@@ -743,15 +745,16 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/
  $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
  $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/tube.h \
  $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \
- $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h $(srcdir)/services/localzone.h \
- $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \
- $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/validator/validator.h \
- $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \
- $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \
- $(srcdir)/validator/autotrust.h $(srcdir)/util/storage/dnstree.h $(srcdir)/libunbound/libworker.h \
- $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h \
- $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h $(srcdir)/util/config_file.h
+ $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h $(srcdir)/dnstap/dnstap_config.h \
+ $(srcdir)/services/localzone.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \
+ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \
+ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \
+ $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \
+ $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \
+ $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/util/storage/dnstree.h \
+ $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h \
+ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h \
+ $(srcdir)/util/config_file.h
 locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h
 log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/ldns/sbuffer.h
 mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \
@@ -767,6 +770,7 @@ netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/neteve
  $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
  $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/tube.h \
  $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/ldns/sbuffer.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/dnstap/dnstap_config.h \
  $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h
 net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \
  $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \
@@ -854,8 +858,8 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h $(srcdir)/valida
  $(srcdir)/validator/val_utils.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/net_help.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h \
  $(srcdir)/ldns/rrdef.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h
-val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/validator/val_secalgo.h \
- $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
+val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \
  $(srcdir)/ldns/rrdef.h $(srcdir)/ldns/keyraw.h \
  $(srcdir)/ldns/sbuffer.h \
  
@@ -884,6 +888,11 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src
  $(srcdir)/util/regional.h
 checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/testcode/checklocks.h
+dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c $(srcdir)/dnstap/dnstap_config.h config.h $(srcdir)/ldns/sbuffer.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \
+ $(srcdir)/dnstap/dnstap.h \
+ $(srcdir)/dnstap/dnstap.pb-c.h
+dnstap.pb-c.lo dnstap.pb-c.o: $(srcdir)/dnstap/dnstap.pb-c.c $(srcdir)/dnstap/dnstap.pb-c.h
 unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \
  $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/ldns/sbuffer.h $(srcdir)/ldns/rrdef.h
@@ -894,7 +903,8 @@ unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir
  $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h
 unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \
  $(srcdir)/ldns/rrdef.h $(srcdir)/ldns/keyraw.h \
- $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \
+ $(srcdir)/util/log.h \
+ $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/random.h
 unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h $(srcdir)/util/log.h \
@@ -935,19 +945,21 @@ cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \
  $(srcdir)/ldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h \
  $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h \
- $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \
- $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h \
- $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h \
- $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/ldns/wire2str.h $(srcdir)/ldns/str2wire.h
+ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h \
+ $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \
+ $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \
+ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h $(srcdir)/ldns/wire2str.h \
+ $(srcdir)/ldns/str2wire.h
 daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
- $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h \
- $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h \
- $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
+ $(srcdir)/ldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
+ $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h \
+ $(srcdir)/ldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \
@@ -959,11 +971,12 @@ remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
  $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
- $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h \
- $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/localzone.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/daemon.h \
+ $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \
+ $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \
+ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/localzone.h $(srcdir)/util/fptr_wlist.h \
+ $(srcdir)/util/tube.h $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h \
  $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \
  $(srcdir)/validator/val_anchor.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \
  $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \
@@ -973,14 +986,15 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s
  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/daemon/daemon.h \
- $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/services/outside_network.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h \
- $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h
+ $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h \
+ $(srcdir)/validator/val_utils.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h
 unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \
- $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h $(srcdir)/dnstap/dnstap_config.h \
+ $(srcdir)/daemon/remote.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \
@@ -993,7 +1007,8 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
  $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
- $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/daemon.h \
+ $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \
@@ -1008,9 +1023,10 @@ testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/test
  $(srcdir)/daemon/remote.h \
  $(srcdir)/util/config_file.h $(srcdir)/ldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/util/log.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \
+ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/tube.h \
  $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h
 testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcode/testpkts.h \
@@ -1021,7 +1037,8 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
  $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
- $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/daemon.h \
+ $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \
@@ -1036,10 +1053,11 @@ acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/ac
  $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h
 daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
- $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h \
- $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h \
- $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
+ $(srcdir)/ldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
+ $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h \
+ $(srcdir)/ldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \
@@ -1049,12 +1067,12 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s
  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/daemon/daemon.h \
- $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/services/outside_network.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h \
- $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h
+ $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h \
+ $(srcdir)/validator/val_utils.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h
 replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \
  $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/testcode/testpkts.h \
  $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/ldns/str2wire.h $(srcdir)/ldns/rrdef.h
@@ -1063,10 +1081,10 @@ fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/t
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h \
  $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \
  $(srcdir)/util/data/dname.h $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h \
- $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \
- $(srcdir)/ldns/sbuffer.h $(srcdir)/ldns/wire2str.h $(srcdir)/ldns/str2wire.h
+ $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/dnstap/dnstap_config.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h \
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
+ $(srcdir)/services/modstack.h $(srcdir)/ldns/sbuffer.h $(srcdir)/ldns/wire2str.h $(srcdir)/ldns/str2wire.h
 lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
@@ -1118,13 +1136,14 @@ libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \
  $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h \
  $(srcdir)/ldns/sbuffer.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/services/outside_network.h \
- $(srcdir)/util/netevent.h $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h \
- $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/services/localzone.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \
- $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h \
- $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h $(srcdir)/ldns/str2wire.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnstap/dnstap_config.h $(srcdir)/services/mesh.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/services/localzone.h $(srcdir)/services/cache/rrset.h \
+ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h \
+ $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/util/config_file.h \
+ $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \
+ $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \
+ $(srcdir)/util/storage/dnstree.h $(srcdir)/ldns/str2wire.h
 unbound-host.lo unbound-host.o: $(srcdir)/smallapp/unbound-host.c config.h $(srcdir)/libunbound/unbound.h \
  $(srcdir)/ldns/rrdef.h $(srcdir)/ldns/wire2str.h
 asynclook.lo asynclook.o: $(srcdir)/testcode/asynclook.c config.h $(srcdir)/libunbound/unbound.h \
@@ -1144,7 +1163,8 @@ perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir
 delayer.lo delayer.o: $(srcdir)/testcode/delayer.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \
  $(srcdir)/util/config_file.h $(srcdir)/ldns/sbuffer.h
 unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h \
- $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h
+ $(srcdir)/util/log.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h
 unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \
  $(srcdir)/ldns/rrdef.h \
  
@@ -1155,13 +1175,14 @@ pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c conf
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \
  $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \
- $(srcdir)/ldns/sbuffer.h
+ $(srcdir)/iterator/iter_delegpt.h $(srcdir)/ldns/sbuffer.h
 win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
- $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/ldns/sbuffer.h \
- $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h \
- $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/dnstap/dnstap_config.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
+ $(srcdir)/ldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
+ $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/ldns/pkthdr.h \
+ $(srcdir)/ldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
+ $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/winsock_event.h
 w_inst.lo w_inst.o: $(srcdir)/winrc/w_inst.c config.h $(srcdir)/winrc/w_inst.h $(srcdir)/winrc/win_svc.h
 unbound-service-install.lo unbound-service-install.o: $(srcdir)/winrc/unbound-service-install.c config.h \
index a2ab097b69c7bc92f45083b9c11f890db4aee177..72a83a5b233c5b942cabbe15ccb612dc6f402c6e 100644 (file)
@@ -1,3 +1,7 @@
+2 February 2015: Wouter
+       - infra-cache-min-rtt patch from Florian Riehm, for expected long
+         uplink roundtrip times.
+
 30 January 2015: Wouter
        - Fix 0x20 capsforid fallback to omit gratuitous NS and additional
          section changes.
index c6e47a27950971256e9576e1cb9c93b7fe038b64..7c10d833441311f2218bae4196157c640d77ebad 100644 (file)
@@ -138,6 +138,9 @@ server:
        # the time to live (TTL) value for cached roundtrip times, lameness and
        # EDNS version information for hosts. In seconds.
        # infra-host-ttl: 900
+       
+       # minimum wait time for responses, increase if uplink is long. In msec.
+       # infra-cache-min-rtt: 50
 
        # the number of slabs to use for the Infrastructure cache.
        # the number of slabs must be a power of 2.
index b096a760fca38b04d65eb32b9e54f87b53e9d0e6..80d18844fa0907d29e705b93843deff0fef0703f 100644 (file)
@@ -301,6 +301,11 @@ by threads. Must be set to a power of 2.
 .B infra\-cache\-numhosts: \fI<number>
 Number of hosts for which information is cached. Default is 10000.
 .TP
+.B infra\-cache\-min\-rtt: \fI<msec>
+Lower limit for dynamic retransmit timeout calculation in infrastructure
+cache. Default is 50 milliseconds. Increase this value if using forwarders
+needing more time to do recursive name resolution.
+.TP
 .B do\-ip4: \fI<yes or no>
 Enable or disable whether ip4 queries are answered or issued. Default is yes.
 .TP
index f8f80306724b7ec4a49f1c1cb13caa8fb6040f43..f4eaccf1b3dbdad0dccc9c399e15643eecb3de18 100644 (file)
@@ -55,6 +55,7 @@
 #include "util/regional.h"
 #include "util/fptr_wlist.h"
 #include "util/data/dname.h"
+#include "util/rtt.h"
 #include "ldns/wire2str.h"
 #include "ldns/parseutil.h"
 #ifdef HAVE_GLOB_H
@@ -129,6 +130,7 @@ config_create(void)
        cfg->prefetch_key = 0;
        cfg->infra_cache_slabs = 4;
        cfg->infra_cache_numhosts = 10000;
+       cfg->infra_cache_min_rtt = 50;
        cfg->delay_close = 0;
        if(!(cfg->outgoing_avail_ports = (int*)calloc(65536, sizeof(int))))
                goto error_exit;
@@ -375,6 +377,10 @@ int config_set_option(struct config_file* cfg, const char* opt,
        { IS_NUMBER_OR_ZERO; cfg->max_ttl = atoi(val); MAX_TTL=(time_t)cfg->max_ttl;}
        else if(strcmp(opt, "cache-min-ttl:") == 0)
        { IS_NUMBER_OR_ZERO; cfg->min_ttl = atoi(val); MIN_TTL=(time_t)cfg->min_ttl;}
+       else if(strcmp(opt, "infra-cache-min-rtt:") == 0) {
+           IS_NUMBER_OR_ZERO; cfg->infra_cache_min_rtt = atoi(val);
+           RTT_MIN_TIMEOUT=cfg->infra_cache_min_rtt;
+       }
        else S_NUMBER_OR_ZERO("infra-host-ttl:", host_ttl)
        else S_POW2("infra-cache-slabs:", infra_cache_slabs)
        else S_SIZET_NONZERO("infra-cache-numhosts:", infra_cache_numhosts)
@@ -623,6 +629,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_DEC(opt, "cache-min-ttl", min_ttl)
        else O_DEC(opt, "infra-host-ttl", host_ttl)
        else O_DEC(opt, "infra-cache-slabs", infra_cache_slabs)
+       else O_DEC(opt, "infra-cache-min-rtt", infra_cache_min_rtt)
        else O_MEM(opt, "infra-cache-numhosts", infra_cache_numhosts)
        else O_UNS(opt, "delay-close", delay_close)
        else O_YNO(opt, "do-ip4", do_ip4)
@@ -1188,6 +1195,7 @@ config_apply(struct config_file* config)
 {
        MAX_TTL = (time_t)config->max_ttl;
        MIN_TTL = (time_t)config->min_ttl;
+       RTT_MIN_TIMEOUT = config->infra_cache_min_rtt;
        EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size;
        MINIMAL_RESPONSES = config->minimal_responses;
        RRSET_ROUNDROBIN = config->rrset_roundrobin;
index 327eadc76f7b7c1a36f2932482f6d4f3903b07ba..7ffc00a02d2e064798fd27ef230b2eaf6f4239ab 100644 (file)
@@ -119,6 +119,8 @@ struct config_file {
        size_t infra_cache_slabs;
        /** max number of hosts in the infra cache */
        size_t infra_cache_numhosts;
+       /** min value for infra cache rtt */
+       int infra_cache_min_rtt;
        /** delay close of udp-timeouted ports, if 0 no delayclose. in msec */
        int delay_close;
 
index b3df28154e7ce58dc86cc6906b4776e2f4412b40..a288aacc1fd5364efd0d97540760d7bb16037a19 100644 (file)
@@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 163
-#define YY_END_OF_BUFFER 164
+#define YY_NUM_RULES 164
+#define YY_END_OF_BUFFER 165
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -372,186 +372,187 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1620] =
+static yyconst flex_int16_t yy_accept[1628] =
     {   0,
-        1,    1,  145,  145,  149,  149,  153,  153,  157,  157,
-        1,    1,  164,  161,    1,  143,  143,  162,    2,  162,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  145,
-      146,  146,  147,  162,  149,  150,  150,  151,  162,  156,
-      153,  154,  154,  155,  162,  157,  158,  158,  159,  162,
-      160,  144,    2,  148,  162,  160,  161,    0,    1,    2,
-        2,    2,    2,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  145,    0,  149,    0,  156,    0,  153,  157,
-        0,  160,    0,    2,    2,  160,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  160,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  160,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,   65,  161,  161,  161,  161,
-      161,    6,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  160,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  160,  161,  161,  161,  161,   29,  161,  161,  161,
-      161,  161,  161,  161,  161,  130,  161,   12,   13,  161,
-       15,   14,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  123,
-      161,  161,  161,  161,  161,    3,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  160,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      152,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   32,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   33,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,   80,  152,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,   79,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-       63,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,   20,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-       30,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,   31,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,   22,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,   26,  161,   27,  161,
-      161,  161,   66,  161,   67,  161,   64,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,    5,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,   82,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,   23,
-      161,  161,  161,  161,  107,  106,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,   34,  161,  161,  161,  161,
-      161,  161,  161,  161,   69,   68,  161,  161,  161,  161,
-      161,  161,  161,  103,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,   50,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,   54,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  105,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,    4,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  100,  161,  161,
-      161,  161,  161,  161,  161,  116,  161,  101,  161,  128,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-       21,  161,  161,  161,  161,   71,  161,   72,   70,  161,
-      161,  161,  161,  161,  161,   78,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  102,  161,  161,  161,  161,
-      127,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,   62,  161,  161,  161,  161,  161,  161,  161,
-
-      161,   28,  161,  161,   17,  161,  161,  161,   16,  161,
-       87,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   41,   42,  161,  161,  161,  161,
-      161,  161,  161,  131,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,   73,  161,  161,
-      161,  161,  161,   77,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,   81,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      122,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,   91,  161,   95,
-
-      161,  161,  161,  161,   76,  161,  161,  114,  161,  161,
-      161,  161,  129,  161,  161,  161,  161,  161,  161,  161,
-      136,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,   94,  161,  161,  161,  161,   43,   44,  161,   49,
-       96,  161,  108,  104,  161,  161,   37,  161,   98,  161,
-      161,  161,  161,  161,    7,  161,   61,  113,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   83,  135,  161,  161,  161,  161,
-      161,  161,  161,  161,  124,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,   97,  161,   36,
-       38,  161,  161,  161,  161,  161,   60,  161,  161,  161,
-      161,  118,   18,   19,  161,  161,  161,  161,  161,  161,
-      161,   58,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  120,  117,  161,  161,  161,  161,  161,  161,  161,
-      161,   35,  161,  161,  161,  161,  161,  161,   11,  161,
-      161,  161,  161,  161,  161,  161,   10,  161,  161,   39,
-      161,  126,  119,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   90,   89,  161,  121,  115,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,   45,  161,  125,  161,  161,
-      161,  161,   40,  161,  161,  161,   84,   86,  109,  161,
-      161,  161,   88,  161,  161,  161,  161,  161,  161,  161,
-      161,  132,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   24,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      134,  161,  161,  112,  161,  161,  161,  161,  161,  161,
-      161,   25,  161,    9,  161,  161,  110,   51,  161,  161,
-      161,   93,  161,  161,  161,  161,  161,  161,  133,   74,
-      161,  161,  161,   53,   57,   52,  161,   46,  161,    8,
-
-      161,  161,   92,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,   56,  161,   47,  161,  111,  161,  161,   85,
-      161,  161,  161,  161,  161,  161,   75,   55,   48,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,   59,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,   99,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  139,  161,  161,  161,  161,  161,  161,
-
-      161,  161,  161,  161,  161,  161,  161,  137,  161,  140,
-      141,  161,  161,  161,  161,  161,  138,  142,    0
+        1,    1,  146,  146,  150,  150,  154,  154,  158,  158,
+        1,    1,  165,  162,    1,  144,  144,  163,    2,  163,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  146,
+      147,  147,  148,  163,  150,  151,  151,  152,  163,  157,
+      154,  155,  155,  156,  163,  158,  159,  159,  160,  163,
+      161,  145,    2,  149,  163,  161,  162,    0,    1,    2,
+        2,    2,    2,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  146,    0,  150,    0,  157,    0,  154,  158,
+        0,  161,    0,    2,    2,  161,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  161,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  161,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,   66,  162,  162,  162,  162,
+      162,    6,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  161,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  161,  162,  162,  162,  162,   29,  162,  162,  162,
+      162,  162,  162,  162,  162,  131,  162,   12,   13,  162,
+       15,   14,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  124,
+      162,  162,  162,  162,  162,    3,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  161,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      153,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,   32,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,   33,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,   81,  153,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,   80,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+       64,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,   20,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+       30,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,   31,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,   22,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,   26,  162,   27,  162,
+      162,  162,   67,  162,   68,  162,   65,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,    5,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,   83,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,   23,
+      162,  162,  162,  162,  108,  107,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,   34,  162,  162,  162,  162,
+      162,  162,  162,  162,   70,   69,  162,  162,  162,  162,
+      162,  162,  162,  104,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,   51,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,   55,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  106,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,    4,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  101,  162,  162,
+      162,  162,  162,  162,  162,  117,  162,  102,  162,  129,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+       21,  162,  162,  162,  162,   72,  162,   73,   71,  162,
+      162,  162,  162,  162,  162,   79,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  103,  162,  162,  162,
+      162,  128,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,   63,  162,  162,  162,  162,  162,  162,
+
+      162,  162,   28,  162,  162,   17,  162,  162,  162,   16,
+      162,   88,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,   41,   42,  162,  162,  162,
+      162,  162,  162,  162,  132,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,   74,  162,
+      162,  162,  162,  162,   78,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+       82,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  123,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,   92,
+
+      162,   96,  162,  162,  162,  162,   77,  162,  162,  115,
+      162,  162,  162,  162,  130,  162,  162,  162,  162,  162,
+      162,  162,  137,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,   95,  162,  162,  162,  162,  162,   43,
+       44,  162,   50,   97,  162,  109,  105,  162,  162,   37,
+      162,   99,  162,  162,  162,  162,  162,    7,  162,   62,
+      114,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,   84,  136,  162,
+      162,  162,  162,  162,  162,  162,  162,  125,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,   98,  162,   36,   38,  162,  162,  162,  162,  162,
+       61,  162,  162,  162,  162,  119,   18,   19,  162,  162,
+      162,  162,  162,  162,  162,   59,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  121,  118,  162,  162,  162,
+      162,  162,  162,  162,  162,   35,  162,  162,  162,  162,
+      162,  162,   11,  162,  162,  162,  162,  162,  162,  162,
+      162,   10,  162,  162,   39,  162,  127,  120,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,   91,
+       90,  162,  122,  116,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,   45,  162,  126,  162,  162,  162,  162,   40,  162,
+      162,  162,   85,   87,  110,  162,  162,  162,   89,  162,
+      162,  162,  162,  162,  162,  162,  162,  133,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,   24,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  135,  162,  162,
+      113,  162,  162,  162,  162,  162,  162,   48,  162,   25,
+      162,    9,  162,  162,  111,   52,  162,  162,  162,   94,
+      162,  162,  162,  162,  162,  162,  134,   75,  162,  162,
+
+      162,   54,   58,   53,  162,   46,  162,    8,  162,  162,
+       93,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+       57,  162,   47,  162,  112,  162,  162,   86,  162,  162,
+      162,  162,  162,  162,   76,   56,   49,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,   60,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  100,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  140,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  138,  162,  141,  142,  162,
+      162,  162,  162,  162,  139,  143,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -594,15 +595,15 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1634] =
+static yyconst flex_int16_t yy_base[1642] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2238, 2151,   50, 3220, 3220, 3220,  129,   94,
+       87,  108, 2422, 2151,   50, 3237, 3237, 3237,  129,   94,
        70,  104,  130,   90,   92,  115,  127,   95,   84,  111,
       137,  148,   50,  150,  155,  157,  163,  171,  178, 1935,
-     3220, 3220, 3220,   70, 1925, 3220, 3220, 3220,   42, 1776,
-     1709, 3220, 3220, 3220,  195, 1559, 3220, 3220, 3220,  141,
-     1156, 3220,  202, 3220,  206,  122, 1017,  212,  120,    0,
+     3237, 3237, 3237,   70, 1925, 3237, 3237, 3237,   42, 1776,
+     1709, 3237, 3237, 3237,  195, 1559, 3237, 3237, 3237,  141,
+     1156, 3237,  202, 3237,  206,  122, 1017,  212,  120,    0,
       223,    0,    0,  103,  147,  154,  158,  192,  199,  207,
       208,  205,  209,  221,  218,  220,  224,  225,  229,  230,
       231,  238,  251,  236,  247,  250,  237,  248,  256,  259,
@@ -629,8 +630,8 @@ static yyconst flex_int16_t yy_base[1634] =
       635,  637,  638,  640,  641,  644,  645,  656,  659,  648,
       665,  662,  667,  664,  670,  593,  677,  673,  675,  674,
 
-      676,  646,  682,  678,  688, 3220,  690,  679,  685,  692,
-      695, 3220,  696,  697,  698,  703,  702,  709,  705,  706,
+      676,  646,  682,  678,  688, 3237,  690,  679,  685,  692,
+      695, 3237,  696,  697,  698,  703,  702,  709,  705,  706,
       711,  714,  715,  719,  713,  720,  740,  722,  721,  731,
       735,  725,  733,  727,  743,  747,  749,  750,  751,  753,
       754,  755,  757,  758,  763,  774,  760,  768,  771,  778,
@@ -643,13 +644,13 @@ static yyconst flex_int16_t yy_base[1634] =
       892,  893,  888,  894,  897,  898,  899,  900,  901,  902,
       906,  908,  909,  917,  903,  913,  919,  925,  927,  928,
       910,  930,  931,  934,  933,  937,  941,  935,  945,  947,
-      948,  949,  955,  957,  950,  959, 3220,  969,  963,  965,
-      966,  970,  972,  951,  991, 3220,  973, 3220, 3220,  975,
-     3220, 3220,  974,  979,  982,  994, 1014,  993,  981,  980,
+      948,  949,  955,  957,  950,  959, 3237,  969,  963,  965,
+      966,  970,  972,  951,  991, 3237,  973, 3237, 3237,  975,
+     3237, 3237,  974,  979,  982,  994, 1014,  993,  981,  980,
      1001, 1007,  995, 1008,  997, 1019, 1022, 1023, 1011, 1015,
      1027, 1029, 1024, 1036, 1037, 1041, 1043, 1049, 1045, 1046,
-     1047, 1050, 1051, 1056, 1053, 1063, 1057, 1064, 1066, 3220,
-     1067, 1068, 1071, 1073, 1075, 3220, 1074, 1076, 1077, 1079,
+     1047, 1050, 1051, 1056, 1053, 1063, 1057, 1064, 1066, 3237,
+     1067, 1068, 1071, 1073, 1075, 3237, 1074, 1076, 1077, 1079,
 
      1080, 1083, 1084, 1087, 1089, 1090, 1092, 1094, 1100, 1096,
      1097, 1110, 1117, 1114, 1104, 1113, 1115, 1119, 1121, 1129,
@@ -657,312 +658,314 @@ static yyconst flex_int16_t yy_base[1634] =
      1145, 1146, 1170, 1147, 1148, 1149, 1153, 1154, 1157, 1158,
      1162, 1165, 1177, 1178, 1176, 1164, 1184, 1187, 1194, 1195,
      1197, 1199, 1155, 1204, 1206, 1200, 1209, 1188, 1215, 1212,
-     3220, 1222, 1224, 1210, 1218, 1220, 1219, 1226, 1228, 1232,
-     1230, 1234, 1233, 1241, 3220, 1239, 1243, 1240, 1244, 1246,
-     1252, 1245, 1259, 1267, 3220, 1269, 1270, 1253, 1263, 1265,
+     3237, 1222, 1224, 1210, 1218, 1220, 1219, 1226, 1228, 1232,
+     1230, 1234, 1233, 1241, 3237, 1239, 1243, 1240, 1244, 1246,
+     1252, 1245, 1259, 1267, 3237, 1269, 1270, 1253, 1263, 1265,
      1272, 1266, 1276, 1277, 1273, 1280, 1283, 1291, 1284, 1286,
 
      1292, 1288, 1294, 1297, 1298, 1300, 1302, 1301, 1309, 1299,
      1303, 1321, 1323, 1314, 1325, 1308, 1320, 1326, 1332, 1322,
-     1330, 1331, 1333, 3220,  239, 1335, 1336, 1337, 1346, 1347,
+     1330, 1331, 1333, 3237,  239, 1335, 1336, 1337, 1346, 1347,
      1343, 1345, 1352, 1355, 1353, 1344, 1354, 1356, 1362, 1364,
      1365, 1367, 1372, 1374, 1370, 1376, 1378, 1380, 1383, 1384,
      1385, 1386, 1388, 1393, 1394, 1395, 1396, 1400, 1399, 1401,
-     1402, 1408, 1406, 1405, 1415, 3220, 1428, 1413, 1409, 1416,
+     1402, 1408, 1406, 1405, 1415, 3237, 1428, 1413, 1409, 1416,
      1426, 1434, 1419, 1430, 1432, 1440, 1444, 1437, 1446, 1447,
      1449, 1450, 1439, 1452, 1459, 1461, 1457, 1460, 1463, 1465,
-     3220, 1467, 1468, 1466, 1473, 1469, 1474, 1475, 1478, 1480,
+     3237, 1467, 1468, 1466, 1473, 1469, 1474, 1475, 1478, 1480,
 
-     1486, 1491, 1493, 3220, 1494, 1490, 1498, 1500, 1501, 1503,
+     1486, 1491, 1493, 3237, 1494, 1490, 1498, 1500, 1501, 1503,
      1504, 1508, 1510, 1511, 1512, 1513, 1514, 1519, 1522, 1524,
-     3220, 1532, 1534, 1533, 1540, 1536, 1523, 1539, 1526, 1541,
+     3237, 1532, 1534, 1533, 1540, 1536, 1523, 1539, 1526, 1541,
      1543, 1549, 1547, 1548, 1546, 1551, 1553, 1554, 1556, 1555,
-     1557, 1558, 3220, 1570, 1562, 1575, 1576, 1572, 1582, 1581,
+     1557, 1558, 3237, 1570, 1562, 1575, 1576, 1572, 1582, 1581,
      1584, 1587, 1588, 1589, 1591, 1590, 1592, 1593, 1598, 1594,
      1601, 1602, 1599, 1600, 1603, 1604, 1611, 1619, 1620, 1621,
-     1622, 1625, 1631, 1637, 1623, 3220, 1634, 1636, 1638, 1639,
+     1622, 1625, 1631, 1637, 1623, 3237, 1634, 1636, 1638, 1639,
      1645, 1647, 1642, 1648, 1649, 1650, 1651, 1659, 1653, 1655,
      1660, 1662, 1656, 1663, 1665, 1676, 1666, 1664, 1673, 1678,
 
-     1682, 1689, 1685, 1691, 1683, 1697, 3220, 1693, 3220, 1694,
-     1700, 1709, 3220, 1706, 3220, 1708, 3220, 1710, 1714, 1712,
+     1682, 1689, 1685, 1691, 1683, 1697, 3237, 1693, 3237, 1694,
+     1700, 1709, 3237, 1706, 3237, 1708, 3237, 1710, 1714, 1712,
      1696, 1716, 1717, 1718, 1720, 1723, 1724, 1726, 1728, 1731,
-     1732, 1729, 3220, 1736, 1738, 1740, 1737, 1742, 1744, 1745,
-     1750, 1758, 1746, 1761, 1749, 1760, 1765, 3220, 1767, 1768,
+     1732, 1729, 3237, 1736, 1738, 1740, 1737, 1742, 1744, 1745,
+     1750, 1758, 1746, 1761, 1749, 1760, 1765, 3237, 1767, 1768,
      1770, 1772, 1775, 1779, 1780, 1777, 1783, 1773, 1784, 1794,
      1795, 1790, 1797, 1799, 1800, 1801, 1802, 1804, 1806, 1809,
-     1810, 1812, 1814, 1813, 1818, 1820, 1817, 1821, 1822, 3220,
-     1823, 1826, 1835, 1829, 3220, 3220, 1840, 1846, 1848, 1834,
+     1810, 1812, 1814, 1813, 1818, 1820, 1817, 1821, 1822, 3237,
+     1823, 1826, 1835, 1829, 3237, 3237, 1840, 1846, 1848, 1834,
      1842, 1836, 1852, 1854, 1862, 1859, 1856, 1860, 1865, 1866,
 
-     1867, 1868, 1869, 1871, 1872, 3220, 1879, 1875, 1882, 1878,
-     1881, 1894, 1885, 1888, 3220, 3220, 1895, 1896, 1899, 1900,
-     1907, 1904, 1905, 3220, 1906, 1908, 1910, 1911, 1913, 1921,
+     1867, 1868, 1869, 1871, 1872, 3237, 1879, 1875, 1882, 1878,
+     1881, 1894, 1885, 1888, 3237, 3237, 1895, 1896, 1899, 1900,
+     1907, 1904, 1905, 3237, 1906, 1908, 1910, 1911, 1913, 1921,
      1914, 1924, 1928, 1922, 1929, 1931, 1938, 1932, 1934, 1940,
-     1948, 1942, 1950, 3220, 1951, 1954, 1955, 1956, 1957, 1958,
+     1948, 1942, 1950, 3237, 1951, 1954, 1955, 1956, 1957, 1958,
      1959, 1963, 1962, 1965, 1964, 1973, 1980, 1969, 1976, 1977,
-     1982, 1978, 1987, 1989, 1996, 1999, 3220, 2005, 1983, 2008,
+     1982, 1978, 1987, 1989, 1996, 1999, 3237, 2005, 1983, 2008,
      1992, 1994, 2006, 2009, 2010, 2011, 2012, 2013, 2014, 2016,
-     2018, 2019, 2021, 3220, 2025, 2027, 2023, 2030, 2036, 2028,
-     2039, 2042, 2043, 3220, 2046, 2052, 2049, 2048, 2057, 2053,
-
-     2061, 2060, 2050, 2062, 2063, 2066, 2064, 2075, 2071, 2077,
-     2067, 2079, 2089, 2086, 2095, 2096, 2083, 2092, 2102, 2098,
-     2099, 2100, 2101, 2111, 2105, 2113, 2107, 3220, 2114, 2116,
-     2121, 2118, 2123, 2125, 2129, 3220, 2130, 3220, 2122, 3220,
-     2132, 2137, 2133, 2139, 2140, 2141, 2142, 2145, 2152, 2143,
-     3220, 2154, 2149, 2156, 2159, 3220, 2162, 3220, 3220, 2163,
-     2169, 2170, 2171, 2173, 2179, 3220, 2174, 2176, 2182, 2180,
-     2185, 2186, 2188, 2184, 2189, 3220, 2190, 2191, 2192, 2194,
-     3220, 2202, 2205, 2206, 2207, 2211, 2214, 2215, 2208, 2217,
-     2223, 2222, 3220, 2221, 2224, 2229, 2230, 2234, 2231, 2235,
-
-     2236, 3220, 2245, 2247, 3220, 2241, 2239, 2249, 3220, 2251,
-     3220, 2255, 2253, 2256, 2258, 2263, 2260, 2271, 2264, 2272,
-     2273, 2266, 2275, 2277, 3220, 3220, 2280, 2287, 2290, 2282,
-     2284, 2288, 2296, 3220, 2292, 2298, 2297, 2299, 2300, 2301,
-     2306, 2308, 2309, 2310, 2311, 2304, 2312, 3220, 2315, 2318,
-     2321, 2323, 2324, 3220, 2327, 2329, 2328, 2333, 2343, 2348,
-     2350, 2338, 2353, 2355, 2340, 2357, 2361, 2358, 3220, 2362,
-     2364, 2365, 2369, 2370, 2366, 2371, 2375, 2379, 2373, 2381,
-     3220, 2383, 2385, 2386, 2389, 2390, 2394, 2393, 2395, 2396,
-     2400, 2397, 2401, 2404, 2406, 2414, 2403, 3220, 2415, 3220,
-
-     2416, 2421, 2424, 2427, 3220, 2423, 2429, 3220, 2430, 2426,
-     2432, 2440, 3220, 2443, 2434, 2444, 2437, 2446, 2447, 2450,
-     3220, 2453, 2455, 2462, 2454, 2456, 2463, 2464, 2465, 2473,
-     2469, 3220, 2471, 2472, 2474, 2334, 3220, 3220, 2478, 3220,
-     3220, 2481, 3220, 3220, 2483, 2486, 3220, 2490, 3220, 2496,
-     2492, 2494, 2495, 2497, 3220, 2499, 3220, 3220, 2500, 2501,
-     2504, 2506, 2508, 2513, 2515, 2509, 2516, 2519, 2520, 2523,
-     2522, 2524, 2526, 2528, 2529, 2530, 2533, 2536, 2538, 2539,
-     2540, 2542, 2549, 2554, 3220, 3220, 2541, 2551, 2543, 2556,
-     2558, 2559, 2562, 2563, 3220, 2571, 2566, 2568, 2572, 2573,
-
-     2577, 2578, 2582, 2589, 2585, 2586, 2574, 3220, 2587, 3220,
-     3220, 2588, 2592, 2599, 2596, 2601, 3220, 2603, 2604, 2610,
-     2613, 3220, 3220, 3220, 2614, 2607, 2616, 2617, 2621, 2618,
-     2620, 3220, 2624, 2627, 2630, 2631, 2634, 2641, 2643, 2645,
-     2648, 3220, 3220, 2654, 2651, 2652, 2650, 2653, 2656, 2658,
-     2660, 3220, 2662, 2661, 2666, 2667, 2669, 2671, 3220, 2673,
-     2677, 2679, 2681, 2683, 2685, 2684, 3220, 2686, 2687, 3220,
-     2698, 3220, 3220, 2688, 2701, 2691, 2704, 2706, 2710, 2699,
-     2707, 2716, 2713, 2714, 3220, 3220, 2636, 3220, 3220, 2715,
-     2719, 2720, 2722, 2723, 2726, 2727, 2728, 2729, 2730, 2734,
-
-     2735, 2739, 2741, 2743, 2744, 3220, 2751, 3220, 2745, 2756,
-     2749, 2757, 3220, 2760, 2758, 2747, 3220, 3220, 3220, 2768,
-     2761, 2765, 3220, 2771, 2775, 2777, 2778, 2779, 2785, 2781,
-     2787, 3220, 2782, 2788, 2790, 2791, 2792, 2793, 2794, 2799,
-     2795, 2796, 2810, 2811, 3220, 2814, 2805, 2807, 2818, 2820,
-     2822, 2823, 2824, 2827, 2828, 2831, 2830, 2837, 2833, 2839,
-     3220, 2843, 2834, 3220, 2845, 2847, 2855, 2857, 2861, 2858,
-     2865, 3220, 2866, 3220, 2869, 2870, 3220, 3220, 2871, 2873,
-     2876, 3220, 2877, 2862, 2874, 2878, 2883, 2884, 3220, 3220,
-     2885, 2887, 2888, 3220, 3220, 3220, 2894, 3220, 2897, 3220,
-
-     2899, 2891, 3220, 2900, 2903, 2907, 2908, 2909, 2910, 2911,
-     2912, 2914, 3220, 2920, 3220, 2922, 3220, 2917, 2924, 3220,
-     2933, 2926, 2934, 2927, 2935, 2936, 3220, 3220, 3220, 2937,
-     2938, 2942, 2943, 2945, 2944, 2947, 2949, 2951, 2948, 2954,
-     2956, 2965, 2966, 2973, 2969, 3220, 2967, 2970, 2976, 2979,
-     2977, 2975, 2978, 2980, 2984, 2985, 2986, 2987, 2995, 2996,
-     2992, 3004, 3002, 3008, 3009, 2993, 3015, 3017, 3018, 3019,
-     3020, 3026, 3022, 3023, 3220, 3024, 3027, 3028, 3030, 3031,
-     3035, 3033, 3044, 3048, 3037, 3050, 3034, 3055, 3051, 3056,
-     3059, 3060, 3061, 3220, 3062, 3064, 3066, 3068, 3070, 3072,
-
-     3073, 3074, 3077, 3079, 3082, 3084, 3088, 3220, 3089, 3220,
-     3220, 3093, 3090, 3096, 3100, 3102, 3220, 3220, 3220, 3128,
-     3135, 3142, 3149, 3156,   94, 3163, 3170, 3177, 3184, 3191,
-     3198, 3205, 3212
+     2018, 2019, 2021, 3237, 2025, 2027, 2028, 2030, 2036, 2038,
+     2039, 2042, 2046, 3237, 2047, 2053, 2049, 2050, 2055, 2051,
+
+     2058, 2059, 2060, 2061, 2063, 2065, 2072, 2074, 2066, 2084,
+     2070, 2076, 2092, 2086, 2094, 2100, 2088, 2096, 2102, 2098,
+     2099, 2101, 2104, 2111, 2105, 2112, 2109, 3237, 2115, 2117,
+     2120, 2122, 2125, 2126, 2124, 3237, 2131, 3237, 2123, 3237,
+     2134, 2138, 2139, 2140, 2142, 2143, 2141, 2147, 2153, 2144,
+     3237, 2154, 2150, 2156, 2161, 3237, 2164, 3237, 3237, 2157,
+     2172, 2169, 2173, 2175, 2179, 3237, 2176, 2180, 2181, 2184,
+     2185, 2187, 2189, 2190, 2188, 2191, 3237, 2192, 2194, 2195,
+     2198, 3237, 2204, 2209, 2205, 2210, 2212, 2216, 2217, 2219,
+     2220, 2228, 2224, 3237, 2225, 2227, 2233, 2226, 2230, 2234,
+
+     2243, 2235, 3237, 2245, 2246, 3237, 2248, 2249, 2254, 3237,
+     2253, 3237, 2256, 2257, 2255, 2258, 2264, 2265, 2276, 2260,
+     2273, 2266, 2268, 2283, 2278, 3237, 3237, 2284, 2288, 2289,
+     2285, 2291, 2294, 2296, 3237, 2292, 2298, 2300, 2301, 2302,
+     2304, 2305, 2311, 2308, 2313, 2314, 2306, 2315, 3237, 2318,
+     2320, 2324, 2325, 2326, 3237, 2330, 2333, 2327, 2335, 2331,
+     2350, 2353, 2355, 2343, 2358, 2360, 2346, 2362, 2364, 2348,
+     3237, 2366, 2369, 2370, 2373, 2374, 2375, 2338, 2377, 2380,
+     2376, 2383, 3237, 2385, 2386, 2387, 2390, 2391, 2396, 2394,
+     2397, 2400, 2402, 2398, 2405, 2406, 2404, 2416, 2420, 3237,
+
+     2408, 3237, 2417, 2422, 2430, 2431, 3237, 2427, 2429, 3237,
+     2433, 2434, 2435, 2438, 3237, 2444, 2445, 2446, 2448, 2449,
+     2450, 2451, 3237, 2453, 2458, 2465, 2462, 2454, 2466, 2456,
+     2468, 2477, 2475, 3237, 2471, 2478, 2484, 2480, 2489, 3237,
+     3237, 2485, 3237, 3237, 2493, 3237, 3237, 2490, 2497, 3237,
+     2499, 3237, 2505, 2501, 2494, 2482, 2503, 3237, 2507, 3237,
+     3237, 2509, 2511, 2512, 2515, 2517, 2519, 2522, 2523, 2524,
+     2525, 2527, 2528, 2529, 2530, 2532, 2536, 2533, 2538, 2541,
+     2543, 2546, 2544, 2547, 2548, 2556, 2564, 3237, 3237, 2549,
+     2557, 2551, 2561, 2565, 2566, 2570, 2571, 3237, 2577, 2578,
+
+     2568, 2579, 2580, 2584, 2582, 2590, 2596, 2585, 2592, 2593,
+     2594, 3237, 2599, 3237, 3237, 2595, 2602, 2609, 2604, 2606,
+     3237, 2611, 2613, 2617, 2621, 3237, 3237, 3237, 2622, 2625,
+     2626, 2628, 2629, 2627, 2630, 3237, 2636, 2637, 2639, 2640,
+     2649, 2653, 2650, 2657, 2659, 3237, 3237, 2665, 2662, 2663,
+     2661, 2654, 2664, 2671, 2631, 3237, 2674, 2667, 2673, 2675,
+     2678, 2681, 3237, 2683, 2685, 2687, 2689, 2686, 2692, 2693,
+     2694, 3237, 2698, 2696, 3237, 2704, 3237, 3237, 2697, 2710,
+     2712, 2714, 2719, 2721, 2708, 2716, 2727, 2724, 2725, 3237,
+     3237, 2728, 3237, 3237, 2731, 2732, 2733, 2735, 2736, 2739,
+
+     2740, 2744, 2741, 2742, 2745, 2753, 2746, 2747, 2754, 2756,
+     2757, 3237, 2762, 3237, 2764, 2768, 2770, 2769, 3237, 2771,
+     2772, 2775, 3237, 3237, 3237, 2781, 2787, 2783, 3237, 2785,
+     2789, 2791, 2794, 2779, 2801, 2793, 2803, 3237, 2795, 2804,
+     2806, 2807, 2808, 2809, 2813, 2810, 2811, 2823, 2817, 2826,
+     2827, 3237, 2830, 2820, 2831, 2834, 2839, 2835, 2843, 2841,
+     2845, 2846, 2842, 2848, 2856, 2852, 2850, 3237, 2860, 2857,
+     3237, 2863, 2866, 2865, 2873, 2875, 2878, 3237, 2880, 3237,
+     2881, 3237, 2885, 2886, 3237, 3237, 2887, 2889, 2892, 3237,
+     2893, 2890, 2894, 2896, 2899, 2900, 3237, 3237, 2901, 2903,
+
+     2907, 3237, 3237, 3237, 2916, 3237, 2918, 3237, 2924, 2904,
+     3237, 2909, 2926, 2906, 2917, 2912, 2929, 2930, 2928, 2937,
+     3237, 2939, 3237, 2941, 3237, 2942, 2943, 3237, 2950, 2946,
+     2948, 2949, 2951, 2955, 3237, 3237, 3237, 2952, 2957, 2959,
+     2961, 2958, 2962, 2963, 2964, 2966, 2973, 2970, 2981, 2967,
+     2974, 2990, 2983, 3237, 2984, 2987, 2996, 2998, 2994, 3000,
+     2995, 3001, 3002, 3003, 3004, 3005, 3007, 3018, 3009, 3010,
+     3020, 3022, 3026, 3019, 3034, 3033, 3030, 3035, 3036, 3044,
+     3040, 3043, 3237, 3041, 3042, 3045, 3047, 3048, 3052, 3050,
+     3062, 3065, 3053, 3067, 3051, 3072, 3068, 3073, 3076, 3077,
+
+     3078, 3237, 3079, 3081, 3083, 3085, 3087, 3089, 3090, 3091,
+     3094, 3096, 3099, 3101, 3105, 3237, 3106, 3237, 3237, 3110,
+     3107, 3113, 3117, 3119, 3237, 3237, 3237, 3145, 3152, 3159,
+     3166, 3173,   94, 3180, 3187, 3194, 3201, 3208, 3215, 3222,
+     3229
     } ;
 
-static yyconst flex_int16_t yy_def[1634] =
+static yyconst flex_int16_t yy_def[1642] =
     {   0,
-     1619,    1, 1620, 1620, 1621, 1621, 1622, 1622, 1623, 1623,
-     1624, 1624, 1619, 1625, 1619, 1619, 1619, 1619, 1626, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1627,
-     1619, 1619, 1619, 1627, 1628, 1619, 1619, 1619, 1628, 1629,
-     1619, 1619, 1619, 1619, 1629, 1630, 1619, 1619, 1619, 1630,
-     1631, 1619, 1632, 1619, 1631, 1631, 1625, 1625, 1619, 1633,
-     1626, 1633, 1626, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1627, 1627, 1628, 1628, 1629, 1629, 1619, 1630,
-     1630, 1631, 1631, 1632, 1632, 1631, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1631, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1631, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1631, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1631, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1619, 1625,
-     1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1631, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1631, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1625,
-     1625, 1625, 1619, 1625, 1619, 1625, 1619, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619,
-     1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1625, 1619,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1619, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1619, 1625, 1625, 1619, 1625, 1625, 1625, 1619, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619,
-
-     1625, 1625, 1625, 1625, 1619, 1625, 1625, 1619, 1625, 1625,
-     1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1619, 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1619,
-     1619, 1625, 1619, 1619, 1625, 1625, 1619, 1625, 1619, 1625,
-     1625, 1625, 1625, 1625, 1619, 1625, 1619, 1619, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619,
-     1619, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625,
-     1625, 1619, 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1619,
-     1625, 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1619, 1625, 1619, 1619, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1625, 1625,
-     1625, 1625, 1619, 1625, 1625, 1625, 1619, 1619, 1619, 1625,
-     1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1619, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1619, 1625, 1619, 1625, 1625, 1619, 1619, 1625, 1625,
-     1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1619,
-     1625, 1625, 1625, 1619, 1619, 1619, 1625, 1619, 1625, 1619,
-
-     1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1619, 1625, 1619, 1625, 1619, 1625, 1625, 1619,
-     1625, 1625, 1625, 1625, 1625, 1625, 1619, 1619, 1619, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625,
-     1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625,
-
-     1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619,
-     1619, 1625, 1625, 1625, 1625, 1625, 1619, 1619,    0, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619
+     1627,    1, 1628, 1628, 1629, 1629, 1630, 1630, 1631, 1631,
+     1632, 1632, 1627, 1633, 1627, 1627, 1627, 1627, 1634, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1635,
+     1627, 1627, 1627, 1635, 1636, 1627, 1627, 1627, 1636, 1637,
+     1627, 1627, 1627, 1627, 1637, 1638, 1627, 1627, 1627, 1638,
+     1639, 1627, 1640, 1627, 1639, 1639, 1633, 1633, 1627, 1641,
+     1634, 1641, 1634, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1635, 1635, 1636, 1636, 1637, 1637, 1627, 1638,
+     1638, 1639, 1639, 1640, 1640, 1639, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1639, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1639, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1639, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1639, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1627, 1633,
+     1627, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1639, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1639, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1633,
+     1633, 1633, 1627, 1633, 1627, 1633, 1627, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627,
+     1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1633, 1627,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1627, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633,
+     1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1627, 1633, 1633, 1627, 1633, 1633, 1633, 1627,
+     1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633,
+     1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627,
+
+     1633, 1627, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1627,
+     1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1627,
+     1627, 1633, 1627, 1627, 1633, 1627, 1627, 1633, 1633, 1627,
+     1633, 1627, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1627, 1633, 1627, 1627, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1627, 1627, 1627, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633,
+     1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1627, 1633, 1633, 1627, 1633, 1627, 1627, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627,
+     1627, 1633, 1627, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1627, 1633, 1627, 1633, 1633, 1633, 1633, 1627, 1633,
+     1633, 1633, 1627, 1627, 1627, 1633, 1633, 1633, 1627, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627,
+     1633, 1627, 1633, 1633, 1627, 1627, 1633, 1633, 1633, 1627,
+     1633, 1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633,
+
+     1633, 1627, 1627, 1627, 1633, 1627, 1633, 1627, 1633, 1633,
+     1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1627, 1633, 1627, 1633, 1627, 1633, 1633, 1627, 1633, 1633,
+     1633, 1633, 1633, 1633, 1627, 1627, 1627, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+
+     1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633,
+     1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1627, 1633,
+     1633, 1633, 1633, 1633, 1627, 1627,    0, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627
     } ;
 
-static yyconst flex_int16_t yy_nxt[3260] =
+static yyconst flex_int16_t yy_nxt[3277] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -1186,145 +1189,147 @@ static yyconst flex_int16_t yy_nxt[3260] =
 
      1059,   68, 1053, 1060,   68, 1066,   68, 1054,   68, 1055,
      1057,   68, 1062, 1063, 1061, 1064, 1068,   68,   68, 1067,
-       68,   68,   68,   68,   68,   68,   68, 1076,   68, 1065,
-       68,   68, 1078,   68, 1069,   68, 1070,   68, 1081,   68,
-       68, 1071,   68, 1072, 1073, 1074, 1080, 1075,   68, 1083,
-     1082,   68, 1086, 1079,   68,   68, 1077, 1084,   68, 1090,
-       68,   68,   68, 1089,   68,   68, 1085, 1092, 1093,   68,
-     1094, 1088,   68,   68,   68,   68,   68, 1097,   68,   68,
-     1087, 1091, 1095,   68, 1100, 1101, 1102,   68, 1105,   68,
-     1099,   68, 1096, 1098, 1103,   68, 1108, 1109,   68, 1104,
-
-     1106,   68, 1110, 1112,   68, 1107, 1111,   68,   68, 1115,
-       68,   68,   68,   68,   68, 1117, 1114,   68, 1120,   68,
-     1122, 1113, 1116,   68, 1118,   68,   68, 1125,   68, 1124,
-       68, 1123, 1126,   68,   68,   68, 1127,   68, 1119, 1121,
-     1128,   68,   68, 1129,   68,   68, 1132, 1131, 1134,   68,
-     1130,   68,   68,   68,   68,   68, 1133,   68, 1139, 1141,
-     1136,   68, 1140,   68,   68, 1135,   68, 1143,   68, 1142,
-     1137,   68, 1138, 1148,   68,   68, 1150, 1146, 1144, 1145,
-     1147,   68,   68,   68, 1152,   68,   68, 1153,   68, 1149,
-     1154,   68,   68, 1155,   68, 1157,   68,   68,   68, 1151,
-
-       68,   68,   68,   68,   68, 1165,   68, 1164, 1156, 1159,
-     1160, 1162, 1161, 1158,   68, 1167, 1169,   68,   68,   68,
-       68, 1163, 1166,   68, 1171, 1172,   68,   68, 1168,   68,
-     1177, 1173, 1174,   68,   68,   68,   68, 1619, 1175, 1178,
-     1181,   68,   68,   68, 1170, 1185,   68,   68,   68, 1176,
-     1180,   68, 1179,   68, 1182, 1183, 1186,   68, 1184,   68,
-     1187,   68, 1188,   68, 1189,   68, 1190,   68,   68, 1193,
-       68, 1191,   68, 1194, 1198,   68,   68, 1192,   68, 1197,
-     1195, 1199, 1200,   68,   68,   68, 1205,   68, 1202,   68,
-     1203, 1204,   68, 1196,   68, 1201,   68, 1206, 1208,   68,
-
-       68, 1207,   68, 1209,   68, 1212, 1210, 1213,   68,   68,
-       68,   68,   68,   68, 1211, 1215,   68, 1218,   68, 1221,
-       68,   68,   68,   68,   68, 1222, 1217,   68, 1224, 1214,
-       68, 1219, 1216,   68, 1220,   68,   68, 1223, 1232,   68,
-       68,   68, 1225, 1226, 1233,   68,   68, 1230, 1306, 1228,
-       68, 1227,   68, 1234, 1229,   68, 1236, 1231, 1235, 1237,
-       68, 1238,   68, 1239, 1240,   68, 1241,   68, 1243,   68,
-       68, 1242, 1244,   68,   68, 1247,   68,   68,   68, 1246,
-     1249,   68,   68,   68, 1251,   68, 1252,   68, 1253, 1245,
-     1255,   68, 1257,   68, 1258,   68, 1248,   68,   68, 1260,
-
-     1250,   68,   68, 1254, 1256,   68,   68,   68,   68,   68,
-     1261, 1263,   68,   68, 1262,   68,   68, 1267,   68, 1273,
-     1265, 1272, 1269, 1259, 1268, 1270,   68,   68,   68, 1266,
-     1264, 1277, 1271,   68, 1276,   68,   68, 1275,   68,   68,
-     1278,   68,   68, 1283,   68, 1282,   68, 1274, 1279,   68,
-     1280, 1285,   68, 1281, 1286,   68,   68, 1288,   68,   68,
-     1287, 1289,   68, 1292, 1284,   68,   68,   68,   68, 1293,
-     1294, 1296, 1290, 1295,   68,   68,   68,   68, 1291, 1298,
-     1301,   68, 1300,   68,   68,   68,   68, 1302, 1297, 1304,
-       68, 1307, 1308,   68, 1305,   68, 1299, 1310,   68, 1303,
-
-     1309, 1311,   68, 1312,   68, 1313,   68,   68,   68,   68,
-     1317,   68,   68,   68, 1316, 1319,   68, 1318,   68, 1322,
-       68,   68, 1314, 1321, 1323,   68, 1324,   68,   68, 1315,
-     1320,   68,   68, 1325,   68,   68,   68, 1332,   68, 1330,
-       68,   68,   68, 1327, 1328,   68, 1326, 1329,   68, 1333,
-       68,   68,   68,   68,   68,   68, 1331, 1340, 1336, 1341,
-     1342,   68, 1335,   68, 1338, 1343,   68, 1334,   68, 1339,
-       68,   68, 1337, 1344,   68,   68, 1351, 1346,   68, 1348,
-       68, 1345, 1352,   68,   68,   68,   68, 1353, 1347,   68,
-       68, 1349, 1350, 1359,   68, 1354, 1360,   68,   68,   68,
-
-       68,   68, 1355, 1356,   68, 1357, 1363, 1366,   68, 1358,
-     1367,   68, 1361,   68, 1370,   68,   68, 1362, 1364,   68,
-     1365, 1372,   68, 1368, 1373,   68,   68, 1374,   68,   68,
-       68, 1369,   68,   68, 1377, 1371,   68, 1376, 1378,   68,
-     1380, 1375,   68,   68, 1382, 1385,   68, 1383,   68, 1379,
-     1387, 1381, 1386,   68, 1425,   68, 1388,   68, 1384, 1389,
-       68, 1390,   68,   68,   68,   68,   68, 1391,   68, 1392,
-       68, 1393,   68,   68,   68, 1396, 1395, 1398,   68,   68,
-     1394,   68, 1402,   68, 1397,   68, 1399, 1400, 1401,   68,
-     1406,   68, 1403,   68, 1408,   68,   68,   68,   68,   68,
-
-       68, 1410, 1407,   68, 1404, 1409, 1416, 1411, 1405, 1413,
-       68,   68, 1412,   68, 1415, 1417,   68, 1418,   68,   68,
-     1414, 1419,   68, 1422, 1423,   68,   68,   68,   68, 1420,
-     1424,   68,   68, 1421,   68,   68, 1428, 1432,   68,   68,
-       68,   68,   68, 1436, 1426, 1427,   68,   68, 1434, 1431,
-     1429,   68, 1438,   68, 1430,   68,   68,   68, 1433,   68,
-     1435,   68, 1437,   68, 1441, 1446, 1443, 1445,   68,   68,
-       68, 1439,   68,   68, 1452, 1444, 1442,   68, 1447, 1440,
-       68, 1448, 1449,   68, 1450, 1451, 1453,   68, 1454,   68,
-       68,   68, 1459,   68,   68, 1457, 1455,   68, 1461,   68,
-
-       68, 1464,   68,   68,   68,   68,   68,   68,   68, 1458,
-     1456,   68, 1465, 1462, 1468, 1463, 1469,   68, 1460,   68,
-     1466, 1472,   68,   68, 1467, 1474,   68, 1471, 1473, 1477,
-       68, 1478,   68, 1470,   68,   68,   68, 1475, 1482,   68,
-       68, 1476,   68,   68, 1486,   68,   68, 1480, 1484,   68,
-     1489,   68, 1483, 1479, 1490,   68, 1481,   68, 1619,   68,
-     1619, 1485, 1487, 1488, 1493, 1491, 1494,   68, 1495,   68,
-       68, 1492, 1496,   68,   68, 1497, 1498,   68,   68, 1499,
-     1500,   68,   68,   68, 1503,   68,   68, 1501,   68,   68,
-       68, 1502, 1506, 1504, 1505,   68,   68,   68, 1513,   68,
-
-       68, 1511, 1507,   68, 1514, 1515,   68, 1508, 1509,   68,
-     1517,   68,   68, 1516, 1520,   68, 1510, 1512, 1518,   68,
-       68,   68,   68,   68,   68, 1527,   68, 1524, 1525,   68,
-     1519, 1528,   68, 1529,   68, 1522,   68, 1531,   68,   68,
-     1532, 1530, 1523, 1526, 1521,   68,   68,   68,   68,   68,
-       68, 1534, 1533, 1538,   68,   68,   68,   68, 1535,   68,
-       68,   68, 1546,   68, 1537, 1536,   68, 1540,   68, 1547,
-     1539, 1548, 1543, 1549, 1541, 1542, 1545,   68,   68,   68,
-     1552,   68,   68, 1556, 1544,   68, 1557,   68,   68,   68,
-       68,   68,   68, 1551, 1554, 1553,   68,   68,   68,   68,
-
-     1559, 1555, 1550, 1558,   68,   68, 1561,   68,   68, 1560,
-     1563, 1564, 1566, 1567,   68, 1562,   68, 1569, 1565, 1570,
-       68,   68, 1574, 1568, 1573, 1571, 1572,   68, 1575,   68,
-       68,   68,   68, 1579,   68,   68,   68, 1576,   68,   68,
-       68, 1582,   68,   68, 1586,   68,   68,   68, 1581,   68,
-     1577, 1578, 1587, 1580, 1591, 1585,   68, 1589, 1583, 1584,
-       68, 1590,   68,   68, 1588, 1593, 1594,   68,   68, 1592,
-     1595,   68,   68,   68,   68, 1596,   68, 1598,   68, 1600,
-       68, 1601,   68, 1604,   68,   68,   68, 1607, 1608,   68,
-     1597,   68, 1599, 1610,   68, 1611,   68, 1602, 1609, 1603,
-
-       68,   68,   68, 1605, 1606,   68, 1613, 1612,   68, 1619,
-     1614, 1617,   68, 1618,   68, 1619, 1619, 1619, 1619, 1619,
-     1619, 1615, 1619, 1619, 1619, 1619, 1619, 1616,   40,   40,
-       40,   40,   40,   40,   40,   45,   45,   45,   45,   45,
-       45,   45,   50,   50,   50,   50,   50,   50,   50,   56,
-       56,   56,   56,   56,   56,   56,   61,   61,   61,   61,
-       61,   61,   61,   71,   71, 1619,   71,   71,   71,   71,
-      123,  123, 1619, 1619, 1619,  123,  123,  125,  125, 1619,
-     1619,  125, 1619,  125,  127, 1619, 1619, 1619, 1619, 1619,
-      127,  130,  130, 1619, 1619, 1619,  130,  130,  132, 1619,
-
-     1619, 1619, 1619, 1619,  132,  134,  134, 1619,  134,  134,
-      134,  134,   72,   72, 1619,   72,   72,   72,   72,   13,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619
+       68,   68,   68,   68,   68,   68,   68, 1077,   68, 1065,
+       68,   68, 1079,   68, 1069, 1070, 1071,   68, 1082,   68,
+       68, 1072,   68, 1073, 1074, 1075, 1081, 1076,   68, 1084,
+       68,   68, 1087, 1080,   68, 1083, 1078, 1085,   68,   68,
+     1091,   68,   68,   68, 1090,   68, 1094,   68, 1095, 1093,
+       68,   68,   68,   68, 1089,   68, 1086,   68,   68, 1096,
+     1088, 1092,   68, 1101,   68, 1103,   68, 1098,   68, 1104,
+     1100, 1097, 1099, 1102, 1105, 1106,   68, 1110,   68, 1109,
+
+       68, 1111, 1108, 1107,   68, 1112,   68, 1113,   68, 1116,
+       68,   68,   68,   68,   68, 1118,   68,   68, 1121, 1123,
+     1115,   68, 1117,   68,   68, 1119, 1114,   68, 1126,   68,
+     1125, 1127,   68, 1124,   68,   68,   68,   68,   68, 1122,
+     1128, 1120, 1129,   68, 1130, 1131,   68, 1133, 1132, 1135,
+       68,   68,   68,   68,   68,   68,   68, 1140, 1134,   68,
+     1142, 1137,   68,   68, 1141,   68,   68, 1144,   68,   68,
+     1143, 1136, 1138,   68, 1139, 1149,   68, 1147, 1145, 1151,
+     1146,   68, 1148, 1150,   68,   68, 1153,   68,   68, 1154,
+     1155,   68,   68,   68, 1158, 1156,   68,   68, 1152,   68,
+
+       68,   68,   68,   68,   68, 1159,   68,   68, 1167, 1166,
+       68, 1161, 1157, 1162, 1163, 1164,   68,   68, 1160, 1169,
+     1171,   68,   68, 1165,   68, 1168, 1174, 1173,   68,   68,
+     1170,   68,   68, 1175, 1176, 1179,   68,   68,   68,   68,
+       68, 1180,   68, 1172, 1183,   68,   68,   68, 1187, 1177,
+     1184, 1185, 1178, 1182, 1186,   68, 1181,   68,   68, 1189,
+       68,   68, 1190, 1191, 1188,   68,   68,   68,   68,   68,
+       68, 1195,   68, 1192, 1196, 1200,   68,   68,   68, 1199,
+       68, 1193, 1194, 1205, 1197,   68, 1201, 1202,   68, 1204,
+       68, 1203, 1198, 1206, 1207,   68,   68,   68, 1208, 1210,
+
+       68,   68, 1211,   68,   68, 1209,   68, 1215,   68, 1212,
+       68, 1214,   68,   68,   68, 1217,   68,   68,   68, 1220,
+       68, 1213, 1223,   68, 1224,   68,   68,   68, 1219, 1216,
+       68, 1226,   68, 1222, 1221, 1218,   68,   68,   68,   68,
+     1225, 1234,   68,   68, 1227,   68, 1228,   68, 1235, 1232,
+       68, 1230, 1236, 1255, 1229,   68, 1238, 1231,   68, 1233,
+       68, 1237,   68, 1239, 1240,   68, 1241,   68, 1242, 1243,
+       68, 1244,   68, 1246,   68, 1247,   68, 1245,   68, 1248,
+     1250,   68,   68, 1249, 1252,   68,   68,   68,   68,   68,
+     1256, 1258,   68, 1254, 1260,   68, 1261,   68,   68,   68,
+
+     1263, 1251,   68,   68, 1253, 1257,   68, 1259,   68,   68,
+       68, 1264,   68, 1266,   68, 1265,   68,   68,   68, 1270,
+       68, 1627, 1268, 1275, 1262, 1271, 1272, 1273,   68,   68,
+     1274, 1267,   68, 1269,   68, 1279, 1276, 1280, 1278,   68,
+     1277,   68,   68,   68, 1281,   68,   68,   68, 1285, 1288,
+       68, 1286, 1282, 1284, 1283, 1289,   68,   68,   68, 1291,
+       68,   68,   68,   68, 1295,   68,   68, 1287,   68, 1296,
+       68, 1290, 1292, 1297,   68, 1293, 1298,   68,   68, 1299,
+       68, 1294, 1301,   68, 1304, 1303, 1300,   68, 1302,   68,
+       68, 1308,   68, 1305,   68, 1307,   68,   68, 1311, 1306,
+
+     1309,   68,   68, 1310, 1312,   68,   68, 1313, 1314,   68,
+     1315,   68, 1316,   68, 1317,   68, 1319,   68, 1321,   68,
+     1320,   68, 1318,   68,   68, 1323, 1322,   68, 1326,   68,
+     1327,   68, 1325, 1328,   68,   68,   68,   68, 1324,   68,
+       68,   68,   68, 1336,   68,   68, 1334, 1329,   68, 1331,
+       68, 1332, 1333,   68, 1330,   68,   68, 1337,   68,   68,
+       68,   68, 1335,   68, 1344, 1345, 1340, 1346,   68,   68,
+     1339, 1338, 1342,   68, 1343, 1347,   68,   68,   68, 1341,
+       68, 1348,   68,   68, 1355, 1350, 1352, 1349, 1356,   68,
+       68,   68,   68, 1351,   68, 1358,   68,   68, 1353, 1357,
+
+     1354, 1363,   68, 1364,   68,   68,   68,   68,   68, 1359,
+     1360,   68, 1361, 1362,   68, 1365,   68, 1371,   68, 1366,
+     1372,   68, 1375,   68, 1367,   68, 1368, 1370, 1377,   68,
+     1369, 1373, 1378,   68,   68, 1379, 1374,   68,   68,   68,
+       68,   68,   68,   68, 1376, 1382, 1383, 1381,   68,   68,
+     1385,   68,   68, 1627, 1387, 1402, 1388, 1392, 1384, 1380,
+     1390,   68,   68, 1386, 1391,   68,   68, 1389, 1393,   68,
+     1394,   68, 1395,   68,   68,   68,   68,   68, 1396,   68,
+     1397, 1399, 1398,   68, 1400,   68,   68,   68, 1401, 1403,
+       68, 1407, 1404,   68, 1405,   68, 1406,   68,   68,   68,
+
+     1412,   68, 1408, 1414,   68,   68,   68, 1413,   68,   68,
+       68, 1416, 1627, 1415, 1409, 1419,   68, 1410, 1411, 1417,
+       68, 1418,   68, 1421,   68, 1423,   68, 1422,   68, 1420,
+     1424,   68, 1425,   68, 1428, 1429,   68,   68, 1426,   68,
+       68, 1430, 1427,   68,   68,   68, 1431,   68,   68, 1434,
+     1438,   68,   68,   68,   68, 1442,   68,   68,   68,   68,
+     1432, 1433, 1437, 1435, 1440,   68,   68, 1436,   68,   68,
+     1444, 1439, 1441, 1443,   68, 1447,   68, 1450, 1445, 1452,
+       68,   68,   68,   68,   68, 1446, 1453,   68, 1448, 1449,
+     1454,   68, 1455,   68, 1451,   68, 1456,   68, 1458,   68,
+
+     1459,   68, 1461,   68, 1460,   68,   68,   68, 1466, 1465,
+     1462, 1464, 1457,   68, 1468,   68,   68, 1471,   68,   68,
+       68,   68,   68,   68, 1463,   68, 1469, 1476, 1472,   68,
+     1467, 1470,   68, 1475, 1478,   68, 1473, 1480,   68,   68,
+     1474, 1482,   68,   68, 1481, 1485,   68,   68, 1479, 1477,
+     1486,   68, 1483,   68,   68,   68, 1490,   68,   68, 1492,
+       68, 1497,   68, 1494,   68, 1484, 1487, 1488,   68,   68,
+     1491, 1498,   68, 1489, 1627,   68, 1502,   68,   68, 1493,
+     1627, 1495, 1496, 1501, 1503,   68, 1504,   68, 1499, 1500,
+       68, 1506,   68,   68, 1507, 1505, 1508,   68,   68,   68,
+
+     1511,   68,   68, 1509,   68,   68,   68, 1510,   68, 1512,
+     1513,   68,   68,   68, 1521,   68,   68, 1519,   68,   68,
+     1514,   68, 1515, 1522,   68, 1516, 1517, 1523,   68,   68,
+       68, 1526, 1518, 1520, 1524, 1525,   68, 1528,   68, 1527,
+       68,   68,   68, 1529, 1530, 1531, 1532, 1533, 1535,   68,
+     1536,   68, 1537,   68,   68,   68, 1539, 1540,   68, 1534,
+       68,   68,   68,   68,   68, 1542, 1538,   68, 1546,   68,
+       68,   68, 1541,   68,   68,   68,   68, 1554,   68,   68,
+     1543, 1544,   68, 1545, 1548,   68,   68, 1556, 1550, 1547,
+     1551, 1553, 1549,   68, 1555,   68,   68, 1560, 1557,   68,
+
+     1552, 1559,   68, 1564, 1558, 1565,   68,   68,   68, 1561,
+       68, 1562,   68,   68,   68,   68,   68,   68, 1563,   68,
+     1566,   68,   68, 1577, 1574, 1567, 1568, 1569, 1571, 1572,
+       68,   68,   68, 1570,   68, 1575, 1573, 1578,   68, 1579,
+     1576, 1582,   68, 1580, 1583,   68,   68,   68,   68, 1584,
+     1581, 1587,   68,   68,   68,   68,   68,   68, 1590,   68,
+       68, 1594,   68,   68,   68,   68, 1585, 1586, 1589, 1595,
+     1599, 1588, 1593, 1591,   68, 1597, 1592,   68, 1598,   68,
+       68, 1596, 1601, 1602,   68,   68, 1600, 1603,   68,   68,
+       68,   68, 1604,   68, 1606,   68, 1608,   68, 1609,   68,
+
+     1612,   68,   68,   68, 1615, 1616,   68, 1605,   68, 1607,
+     1618,   68, 1619,   68, 1610, 1617, 1611,   68,   68,   68,
+     1613, 1614,   68, 1621, 1620,   68, 1627, 1622, 1625,   68,
+     1626,   68, 1627, 1627, 1627, 1627, 1627, 1627, 1623, 1627,
+     1627, 1627, 1627, 1627, 1624,   40,   40,   40,   40,   40,
+       40,   40,   45,   45,   45,   45,   45,   45,   45,   50,
+       50,   50,   50,   50,   50,   50,   56,   56,   56,   56,
+       56,   56,   56,   61,   61,   61,   61,   61,   61,   61,
+       71,   71, 1627,   71,   71,   71,   71,  123,  123, 1627,
+     1627, 1627,  123,  123,  125,  125, 1627, 1627,  125, 1627,
+
+      125,  127, 1627, 1627, 1627, 1627, 1627,  127,  130,  130,
+     1627, 1627, 1627,  130,  130,  132, 1627, 1627, 1627, 1627,
+     1627,  132,  134,  134, 1627,  134,  134,  134,  134,   72,
+       72, 1627,   72,   72,   72,   72,   13, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627
     } ;
 
-static yyconst flex_int16_t yy_chk[3260] =
+static yyconst flex_int16_t yy_chk[3277] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1335,7 +1340,7 @@ static yyconst flex_int16_t yy_chk[3260] =
         9,  151,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  151,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1625,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1633,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   74,   22,   22,   74,   25,
@@ -1549,141 +1554,143 @@ static yyconst flex_int16_t yy_chk[3260] =
       964,  964,  958,  965,  971,  972,  972,  959,  965,  960,
       962,  966,  968,  969,  966,  970,  974,  968,  973,  973,
       970,  974,  975,  976,  977,  978,  979,  980,  980,  971,
-      981,  982,  982,  983,  975,  987,  975,  985,  986,  986,
-      990,  975,  988,  976,  977,  978,  985,  979,  989,  988,
-      987,  991,  991,  983,  992,  993,  981,  989,  995,  996,
-      998,  997, 1003,  995,  996, 1000,  990,  998,  999,  999,
-     1000,  993, 1002, 1001, 1004, 1005, 1007, 1003, 1006, 1011,
-      992,  997, 1001, 1009, 1006, 1007, 1008, 1008, 1010, 1010,
-     1005, 1012, 1002, 1004, 1009, 1017, 1013, 1014, 1014, 1009,
-
-     1011, 1013, 1015, 1016, 1018, 1012, 1015, 1015, 1016, 1019,
-     1020, 1021, 1022, 1023, 1019, 1021, 1018, 1025, 1024, 1027,
-     1026, 1017, 1020, 1024, 1022, 1026, 1029, 1030, 1030, 1029,
-     1032, 1027, 1031, 1031, 1039, 1033, 1032, 1034, 1023, 1025,
-     1033, 1035, 1037, 1034, 1041, 1043, 1039, 1037, 1042, 1042,
-     1035, 1044, 1045, 1046, 1047, 1050, 1041, 1048, 1047, 1049,
-     1044, 1053, 1048,   14, 1049, 1043, 1052, 1052, 1054, 1050,
-     1045, 1055, 1046, 1057, 1057, 1060, 1061, 1054, 1052, 1053,
-     1055, 1061, 1062, 1063, 1063, 1064, 1067, 1064, 1068, 1060,
-     1065, 1065, 1070, 1067, 1069, 1069, 1074, 1071, 1072, 1062,
-
-     1073, 1075, 1077, 1078, 1079, 1078, 1080, 1077, 1068, 1071,
-     1072, 1074, 1073, 1070, 1082, 1080, 1083, 1083, 1084, 1085,
-     1089, 1075, 1079, 1086, 1085, 1086, 1087, 1088, 1082, 1090,
-     1091, 1087, 1088, 1094, 1092, 1091, 1095,   13, 1089, 1092,
-     1096, 1096, 1097, 1099, 1084, 1099, 1098, 1100, 1101, 1090,
-     1095, 1107, 1094, 1106, 1097, 1098, 1100, 1103, 1098, 1104,
-     1101, 1108, 1103, 1110, 1104, 1113, 1106, 1112, 1114, 1110,
-     1115, 1107, 1117, 1112, 1116, 1116, 1119, 1108, 1122, 1115,
-     1113, 1117, 1118, 1118, 1120, 1121, 1123, 1123, 1120, 1124,
-     1121, 1122, 1127, 1114, 1130, 1119, 1131, 1124, 1128, 1128,
-
-     1132, 1127, 1129, 1129, 1135, 1132, 1130, 1133, 1133, 1137,
-     1136, 1138, 1139, 1140, 1131, 1136, 1146, 1139, 1141, 1142,
-     1142, 1143, 1144, 1145, 1147, 1143, 1138, 1149, 1145, 1135,
-     1150, 1140, 1137, 1151, 1141, 1152, 1153, 1144, 1155, 1155,
-     1157, 1156, 1146, 1147, 1156, 1158, 1236, 1152, 1236, 1150,
-     1162, 1149, 1165, 1157, 1151, 1159, 1159, 1153, 1158, 1160,
-     1160, 1161, 1161, 1162, 1163, 1163, 1164, 1164, 1166, 1166,
-     1168, 1165, 1167, 1167, 1170, 1171, 1171, 1172, 1175, 1170,
-     1173, 1173, 1174, 1176, 1175, 1179, 1176, 1177, 1177, 1168,
-     1178, 1178, 1180, 1180, 1182, 1182, 1172, 1183, 1184, 1184,
-
-     1174, 1185, 1186, 1177, 1179, 1188, 1187, 1189, 1190, 1192,
-     1185, 1187, 1191, 1193, 1186, 1197, 1194, 1191, 1195, 1197,
-     1189, 1196, 1193, 1183, 1192, 1194, 1196, 1199, 1201, 1190,
-     1188, 1203, 1195, 1202, 1202, 1206, 1203, 1201, 1210, 1204,
-     1204, 1207, 1209, 1210, 1211, 1209, 1215, 1199, 1204, 1217,
-     1206, 1212, 1212, 1207, 1214, 1214, 1216, 1216, 1218, 1219,
-     1215, 1217, 1220, 1220, 1211, 1222, 1225, 1223, 1226, 1222,
-     1223, 1225, 1218, 1224, 1224, 1227, 1228, 1229, 1219, 1227,
-     1230, 1231, 1229, 1233, 1234, 1230, 1235, 1231, 1226, 1234,
-     1239, 1239, 1242, 1242, 1235, 1245, 1228, 1246, 1246, 1233,
-
-     1245, 1248, 1248, 1250, 1251, 1251, 1252, 1253, 1250, 1254,
-     1256, 1256, 1259, 1260, 1254, 1260, 1261, 1259, 1262, 1263,
-     1263, 1266, 1252, 1262, 1264, 1264, 1265, 1265, 1267, 1253,
-     1261, 1268, 1269, 1266, 1271, 1270, 1272, 1273, 1273, 1271,
-     1274, 1275, 1276, 1268, 1269, 1277, 1267, 1270, 1278, 1274,
-     1279, 1280, 1281, 1287, 1282, 1289, 1272, 1281, 1277, 1282,
-     1283, 1283, 1276, 1288, 1279, 1284, 1284, 1275, 1290, 1280,
-     1291, 1292, 1278, 1287, 1293, 1294, 1294, 1289, 1297, 1291,
-     1298, 1288, 1296, 1296, 1299, 1300, 1307, 1297, 1290, 1301,
-     1302, 1292, 1293, 1303, 1303, 1298, 1304, 1305, 1306, 1309,
-
-     1312, 1304, 1299, 1300, 1313, 1301, 1307, 1313, 1315, 1302,
-     1314, 1314, 1305, 1316, 1318, 1318, 1319, 1306, 1309, 1326,
-     1312, 1320, 1320, 1315, 1321, 1321, 1325, 1325, 1327, 1328,
-     1330, 1316, 1331, 1329, 1328, 1319, 1333, 1327, 1329, 1334,
-     1331, 1326, 1335, 1336, 1334, 1337, 1337, 1335, 1387, 1330,
-     1339, 1333, 1338, 1338, 1387, 1339, 1340, 1340, 1336, 1341,
-     1341, 1344, 1347, 1345, 1346, 1348, 1344, 1345, 1349, 1346,
-     1350, 1347, 1351, 1354, 1353, 1350, 1349, 1353, 1355, 1356,
-     1348, 1357, 1357, 1358, 1351, 1360, 1354, 1355, 1356, 1361,
-     1362, 1362, 1358, 1363, 1364, 1364, 1366, 1365, 1368, 1369,
-
-     1374, 1366, 1363, 1376, 1360, 1365, 1376, 1368, 1361, 1371,
-     1371, 1380, 1369, 1375, 1375, 1377, 1377, 1378, 1378, 1381,
-     1374, 1379, 1379, 1382, 1383, 1383, 1384, 1390, 1382, 1380,
-     1384, 1391, 1392, 1381, 1393, 1394, 1391, 1395, 1395, 1396,
-     1397, 1398, 1399, 1399, 1390, 1390, 1400, 1401, 1397, 1394,
-     1392, 1402, 1401, 1403, 1393, 1404, 1405, 1409, 1396, 1416,
-     1398, 1411, 1400, 1407, 1404, 1411, 1407, 1410, 1410, 1412,
-     1415, 1402, 1414, 1421, 1421, 1409, 1405, 1422, 1412, 1403,
-     1420, 1414, 1415, 1424, 1416, 1420, 1422, 1425, 1424, 1426,
-     1427, 1428, 1429, 1430, 1433, 1427, 1425, 1429, 1431, 1431,
-
-     1434, 1435, 1435, 1436, 1437, 1438, 1439, 1441, 1442, 1428,
-     1426, 1440, 1436, 1433, 1439, 1434, 1440, 1447, 1430, 1448,
-     1437, 1443, 1443, 1444, 1438, 1446, 1446, 1442, 1444, 1449,
-     1449, 1450, 1450, 1441, 1451, 1452, 1453, 1447, 1454, 1454,
-     1455, 1448, 1457, 1456, 1458, 1459, 1463, 1452, 1456, 1458,
-     1460, 1460, 1455, 1451, 1462, 1462, 1453, 1465,    0, 1466,
-        0, 1457, 1459, 1459, 1466, 1463, 1467, 1467, 1468, 1468,
-     1470, 1465, 1469, 1469, 1484, 1470, 1471, 1471, 1473, 1473,
-     1475, 1475, 1476, 1479, 1480, 1480, 1485, 1476, 1481, 1483,
-     1486, 1479, 1484, 1481, 1483, 1487, 1488, 1491, 1492, 1492,
-
-     1493, 1488, 1485, 1502, 1493, 1497, 1497, 1486, 1486, 1499,
-     1501, 1501, 1504, 1499, 1505, 1505, 1487, 1491, 1502, 1506,
-     1507, 1508, 1509, 1510, 1511, 1512, 1512, 1509, 1510, 1518,
-     1504, 1514, 1514, 1516, 1516, 1507, 1519, 1519, 1522, 1524,
-     1521, 1518, 1508, 1511, 1506, 1521, 1523, 1525, 1526, 1530,
-     1531, 1523, 1522, 1530, 1532, 1533, 1535, 1534, 1524, 1536,
-     1539, 1537, 1538, 1538, 1526, 1525, 1540, 1532, 1541, 1539,
-     1531, 1540, 1535, 1541, 1533, 1534, 1537, 1542, 1543, 1547,
-     1544, 1545, 1548, 1549, 1536, 1544, 1550, 1552, 1549, 1551,
-     1553, 1550, 1554, 1543, 1547, 1545, 1555, 1556, 1557, 1558,
-
-     1552, 1548, 1542, 1551, 1561, 1566, 1554, 1559, 1560, 1553,
-     1556, 1557, 1559, 1560, 1563, 1555, 1562, 1562, 1558, 1563,
-     1564, 1565, 1567, 1561, 1566, 1564, 1565, 1567, 1568, 1568,
-     1569, 1570, 1571, 1572, 1573, 1574, 1576, 1569, 1572, 1577,
-     1578, 1576, 1579, 1580, 1580, 1582, 1587, 1581, 1574, 1585,
-     1570, 1571, 1581, 1573, 1585, 1579, 1583, 1583, 1577, 1578,
-     1584, 1584, 1586, 1589, 1582, 1587, 1588, 1588, 1590, 1586,
-     1589, 1591, 1592, 1593, 1595, 1590, 1596, 1592, 1597, 1595,
-     1598, 1596, 1599, 1599, 1600, 1601, 1602, 1602, 1603, 1603,
-     1591, 1604, 1593, 1605, 1605, 1606, 1606, 1597, 1604, 1598,
-
-     1607, 1609, 1613, 1600, 1601, 1612, 1609, 1607, 1614,    0,
-     1612, 1615, 1615, 1616, 1616,    0,    0,    0,    0,    0,
-        0, 1613,    0,    0,    0,    0,    0, 1614, 1620, 1620,
-     1620, 1620, 1620, 1620, 1620, 1621, 1621, 1621, 1621, 1621,
-     1621, 1621, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1623,
-     1623, 1623, 1623, 1623, 1623, 1623, 1624, 1624, 1624, 1624,
-     1624, 1624, 1624, 1626, 1626,    0, 1626, 1626, 1626, 1626,
-     1627, 1627,    0,    0,    0, 1627, 1627, 1628, 1628,    0,
-        0, 1628,    0, 1628, 1629,    0,    0,    0,    0,    0,
-     1629, 1630, 1630,    0,    0,    0, 1630, 1630, 1631,    0,
-
-        0,    0,    0,    0, 1631, 1632, 1632,    0, 1632, 1632,
-     1632, 1632, 1633, 1633,    0, 1633, 1633, 1633, 1633, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619,
-     1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619
+      981,  982,  982,  983,  975,  975,  975,  985,  986,  986,
+      987,  975,  988,  976,  977,  978,  985,  979,  989,  988,
+      990,  991,  991,  983,  992,  987,  981,  989,  993,  995,
+      996,  997,  998, 1000,  995,  996,  999,  999, 1000,  998,
+     1001, 1002, 1003, 1004,  993, 1005,  990, 1006, 1009, 1001,
+      992,  997, 1011, 1006, 1007, 1008, 1008, 1003, 1012, 1009,
+     1005, 1002, 1004, 1007, 1009, 1010, 1010, 1014, 1014, 1013,
+
+     1017, 1015, 1012, 1011, 1013, 1015, 1015, 1016, 1018, 1019,
+     1020, 1021, 1016, 1022, 1019, 1021, 1023, 1025, 1024, 1026,
+     1018, 1027, 1020, 1024, 1026, 1022, 1017, 1029, 1030, 1030,
+     1029, 1031, 1031, 1027, 1032, 1039, 1035, 1033, 1034, 1025,
+     1032, 1023, 1033, 1037, 1034, 1035, 1041, 1039, 1037, 1042,
+     1042, 1043, 1044, 1047, 1045, 1046, 1050, 1047, 1041, 1048,
+     1049, 1044, 1053,   14, 1048, 1049, 1052, 1052, 1054, 1060,
+     1050, 1043, 1045, 1055, 1046, 1057, 1057, 1054, 1052, 1061,
+     1053, 1062, 1055, 1060, 1061, 1063, 1063, 1064, 1067, 1064,
+     1065, 1065, 1068, 1069, 1069, 1067, 1070, 1071, 1062, 1072,
+
+     1075, 1073, 1074, 1076, 1078, 1070, 1079, 1080, 1079, 1078,
+     1081, 1072, 1068, 1073, 1074, 1075, 1083, 1085, 1071, 1081,
+     1084, 1084, 1086, 1076, 1087, 1080, 1087, 1086, 1088, 1089,
+     1083, 1090, 1091, 1088, 1089, 1092, 1093, 1095, 1098, 1096,
+     1092, 1093, 1099, 1085, 1097, 1097, 1100, 1102, 1100, 1090,
+     1098, 1099, 1091, 1096, 1099, 1101, 1095, 1104, 1105, 1102,
+     1107, 1108, 1104, 1105, 1101, 1111, 1109, 1115, 1113, 1114,
+     1116, 1111, 1120, 1107, 1113, 1117, 1117, 1118, 1122, 1116,
+     1123, 1108, 1109, 1122, 1114, 1121, 1118, 1119, 1119, 1121,
+     1125, 1120, 1115, 1123, 1124, 1124, 1128, 1131, 1125, 1129,
+
+     1129, 1130, 1130, 1132, 1136, 1128, 1133, 1134, 1134, 1131,
+     1137, 1133, 1138, 1139, 1140, 1137, 1141, 1142, 1147, 1140,
+     1144, 1132, 1143, 1143, 1144, 1145, 1146, 1148, 1139, 1136,
+     1150, 1146, 1151, 1142, 1141, 1138, 1152, 1153, 1154, 1158,
+     1145, 1156, 1156, 1160, 1147, 1157, 1148, 1159, 1157, 1153,
+     1178, 1151, 1158, 1178, 1150, 1164, 1160, 1152, 1167, 1154,
+     1170, 1159, 1161, 1161, 1162, 1162, 1163, 1163, 1164, 1165,
+     1165, 1166, 1166, 1168, 1168, 1169, 1169, 1167, 1172, 1170,
+     1173, 1173, 1174, 1172, 1175, 1175, 1176, 1177, 1181, 1179,
+     1179, 1180, 1180, 1177, 1182, 1182, 1184, 1184, 1185, 1186,
+
+     1186, 1174, 1187, 1188, 1176, 1179, 1190, 1181, 1189, 1191,
+     1194, 1187, 1192, 1189, 1193, 1188, 1197, 1195, 1196, 1193,
+     1201,   13, 1191, 1198, 1185, 1194, 1195, 1196, 1198, 1203,
+     1197, 1190, 1199, 1192, 1204, 1204, 1199, 1205, 1203, 1208,
+     1201, 1209, 1205, 1206, 1206, 1211, 1212, 1213, 1211, 1214,
+     1214, 1212, 1206, 1209, 1208, 1216, 1216, 1217, 1218, 1218,
+     1219, 1220, 1221, 1222, 1222, 1224, 1228, 1213, 1230, 1224,
+     1225, 1217, 1219, 1225, 1227, 1220, 1226, 1226, 1229, 1227,
+     1231, 1221, 1229, 1235, 1232, 1231, 1228, 1233, 1230, 1232,
+     1236, 1237, 1238, 1233, 1256, 1236, 1237, 1242, 1242, 1235,
+
+     1238, 1239, 1248, 1239, 1245, 1245, 1255, 1248, 1249, 1249,
+     1251, 1251, 1253, 1254, 1254, 1257, 1256, 1253, 1259, 1259,
+     1257, 1262, 1255, 1263, 1264, 1263, 1262, 1265, 1266, 1266,
+     1267, 1267, 1265, 1268, 1268, 1269, 1270, 1271, 1264, 1272,
+     1273, 1274, 1275, 1276, 1276, 1278, 1274, 1269, 1277, 1271,
+     1279, 1272, 1273, 1280, 1270, 1281, 1283, 1277, 1282, 1284,
+     1285, 1290, 1275, 1292, 1284, 1285, 1280, 1286, 1286, 1291,
+     1279, 1278, 1282, 1293, 1283, 1287, 1287, 1294, 1295, 1281,
+     1301, 1290, 1296, 1297, 1297, 1292, 1294, 1291, 1299, 1299,
+     1300, 1302, 1303, 1293, 1305, 1301, 1304, 1308, 1295, 1300,
+
+     1296, 1306, 1306, 1307, 1309, 1310, 1311, 1316, 1307, 1302,
+     1303, 1313, 1304, 1305, 1317, 1308, 1319, 1317, 1320, 1309,
+     1318, 1318, 1322, 1322, 1310, 1323, 1311, 1316, 1324, 1324,
+     1313, 1319, 1325, 1325, 1329, 1329, 1320, 1330, 1331, 1334,
+     1332, 1333, 1335, 1355, 1323, 1332, 1333, 1331, 1337, 1338,
+     1335, 1339, 1340,    0, 1338, 1355, 1339, 1343, 1334, 1330,
+     1341, 1341, 1343, 1337, 1342, 1342, 1352, 1340, 1344, 1344,
+     1345, 1345, 1348, 1351, 1349, 1350, 1353, 1348, 1349, 1358,
+     1350, 1352, 1351, 1354, 1353, 1359, 1357, 1360, 1354, 1357,
+     1361, 1361, 1358, 1362, 1359, 1364, 1360, 1365, 1368, 1366,
+
+     1367, 1367, 1362, 1369, 1369, 1370, 1371, 1368, 1374, 1379,
+     1373, 1371,    0, 1370, 1364, 1376, 1376, 1365, 1366, 1373,
+     1385, 1374, 1380, 1380, 1381, 1382, 1382, 1381, 1386, 1379,
+     1383, 1383, 1384, 1384, 1387, 1388, 1388, 1389, 1385, 1387,
+     1392, 1389, 1386, 1395, 1396, 1397, 1392, 1398, 1399, 1396,
+     1400, 1400, 1401, 1403, 1404, 1404, 1402, 1405, 1407, 1408,
+     1395, 1395, 1399, 1397, 1402, 1406, 1409, 1398, 1410, 1411,
+     1406, 1401, 1403, 1405, 1413, 1409, 1415, 1413, 1407, 1416,
+     1416, 1418, 1417, 1420, 1421, 1408, 1417, 1422, 1410, 1411,
+     1418, 1434, 1420, 1426, 1415, 1428, 1421, 1430, 1426, 1427,
+
+     1427, 1431, 1430, 1432, 1428, 1436, 1433, 1439, 1435, 1434,
+     1431, 1433, 1422, 1435, 1437, 1437, 1440, 1441, 1441, 1442,
+     1443, 1444, 1446, 1447, 1432, 1445, 1439, 1446, 1442, 1449,
+     1436, 1440, 1454, 1445, 1448, 1448, 1443, 1450, 1450, 1451,
+     1444, 1453, 1453, 1455, 1451, 1456, 1456, 1458, 1449, 1447,
+     1457, 1457, 1454, 1460, 1463, 1459, 1461, 1461, 1462, 1463,
+     1464, 1467, 1467, 1465, 1466, 1455, 1458, 1459, 1465, 1470,
+     1462, 1469, 1469, 1460,    0, 1472, 1474, 1474, 1473, 1464,
+        0, 1466, 1466, 1473, 1475, 1475, 1476, 1476, 1470, 1472,
+     1477, 1479, 1479, 1481, 1481, 1477, 1483, 1483, 1484, 1487,
+
+     1488, 1488, 1492, 1484, 1489, 1491, 1493, 1487, 1494, 1489,
+     1491, 1495, 1496, 1499, 1500, 1500, 1510, 1496, 1514, 1501,
+     1492, 1512, 1493, 1501, 1516, 1494, 1494, 1505, 1505, 1515,
+     1507, 1510, 1495, 1499, 1507, 1509, 1509, 1513, 1513, 1512,
+     1519, 1517, 1518, 1514, 1515, 1516, 1517, 1518, 1520, 1520,
+     1522, 1522, 1524, 1524, 1526, 1527, 1527, 1529, 1530, 1519,
+     1531, 1532, 1529, 1533, 1538, 1531, 1526, 1534, 1538, 1539,
+     1542, 1540, 1530, 1541, 1543, 1544, 1545, 1546, 1546, 1550,
+     1532, 1533, 1548, 1534, 1540, 1547, 1551, 1548, 1542, 1539,
+     1543, 1545, 1541, 1549, 1547, 1553, 1555, 1552, 1549, 1556,
+
+     1544, 1551, 1552, 1557, 1550, 1558, 1559, 1561, 1557, 1553,
+     1558, 1555, 1560, 1562, 1563, 1564, 1565, 1566, 1556, 1567,
+     1559, 1569, 1570, 1570, 1567, 1560, 1561, 1562, 1564, 1565,
+     1568, 1574, 1571, 1563, 1572, 1568, 1566, 1571, 1573, 1572,
+     1569, 1575, 1577, 1573, 1576, 1576, 1575, 1578, 1579, 1577,
+     1574, 1580, 1581, 1584, 1585, 1582, 1580, 1586, 1584, 1587,
+     1588, 1588, 1590, 1595, 1589, 1593, 1578, 1579, 1582, 1589,
+     1593, 1581, 1587, 1585, 1591, 1591, 1586, 1592, 1592, 1594,
+     1597, 1590, 1595, 1596, 1596, 1598, 1594, 1597, 1599, 1600,
+     1601, 1603, 1598, 1604, 1600, 1605, 1603, 1606, 1604, 1607,
+
+     1607, 1608, 1609, 1610, 1610, 1611, 1611, 1599, 1612, 1601,
+     1613, 1613, 1614, 1614, 1605, 1612, 1606, 1615, 1617, 1621,
+     1608, 1609, 1620, 1617, 1615, 1622,    0, 1620, 1623, 1623,
+     1624, 1624,    0,    0,    0,    0,    0,    0, 1621,    0,
+        0,    0,    0,    0, 1622, 1628, 1628, 1628, 1628, 1628,
+     1628, 1628, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1630,
+     1630, 1630, 1630, 1630, 1630, 1630, 1631, 1631, 1631, 1631,
+     1631, 1631, 1631, 1632, 1632, 1632, 1632, 1632, 1632, 1632,
+     1634, 1634,    0, 1634, 1634, 1634, 1634, 1635, 1635,    0,
+        0,    0, 1635, 1635, 1636, 1636,    0,    0, 1636,    0,
+
+     1636, 1637,    0,    0,    0,    0,    0, 1637, 1638, 1638,
+        0,    0,    0, 1638, 1638, 1639,    0,    0,    0,    0,
+        0, 1639, 1640, 1640,    0, 1640, 1640, 1640, 1640, 1641,
+     1641,    0, 1641, 1641, 1641, 1641, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
+     1627, 1627, 1627, 1627, 1627, 1627
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1884,7 +1891,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1886 "<stdout>"
+#line 1893 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2071,7 +2078,7 @@ YY_DECL
     
 #line 197 "./util/configlexer.lex"
 
-#line 2073 "<stdout>"
+#line 2080 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -2130,13 +2137,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 1620 )
+                               if ( yy_current_state >= 1628 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 3220 );
+               while ( yy_base[yy_current_state] != 3237 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2401,520 +2408,525 @@ YY_RULE_SETUP
 case 48:
 YY_RULE_SETUP
 #line 248 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 249 "./util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 250 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 251 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 252 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 253 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 254 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 255 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 256 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 257 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 258 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 259 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 260 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 261 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 262 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 263 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 264 "./util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 265 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 266 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 267 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 268 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 269 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 270 "./util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 271 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 272 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 273 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 274 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 275 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 276 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 277 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 278 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 279 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 280 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 281 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 282 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 283 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 284 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 285 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 286 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 287 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 288 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 289 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 290 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 291 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 292 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 293 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 294 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 295 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 296 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 297 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 298 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 299 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 301 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 300 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 302 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 303 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 312 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 318 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 320 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 333 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 336 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
+       YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 339 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 340 "./util/configlexer.lex"
+#line 341 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 342 "./util/configlexer.lex"
+#line 343 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 344 "./util/configlexer.lex"
+#line 345 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 346 "./util/configlexer.lex"
+#line 347 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 348 "./util/configlexer.lex"
+#line 349 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
-case 143:
-/* rule 143 can match eol */
+case 144:
+/* rule 144 can match eol */
 YY_RULE_SETUP
-#line 350 "./util/configlexer.lex"
+#line 351 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 353 "./util/configlexer.lex"
+#line 354 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 354 "./util/configlexer.lex"
+#line 355 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 359 "./util/configlexer.lex"
+#line 360 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 146:
-/* rule 146 can match eol */
+case 147:
+/* rule 147 can match eol */
 YY_RULE_SETUP
-#line 360 "./util/configlexer.lex"
+#line 361 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 362 "./util/configlexer.lex"
+#line 363 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2927,34 +2939,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 374 "./util/configlexer.lex"
+#line 375 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 375 "./util/configlexer.lex"
+#line 376 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 380 "./util/configlexer.lex"
+#line 381 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 150:
-/* rule 150 can match eol */
+case 151:
+/* rule 151 can match eol */
 YY_RULE_SETUP
-#line 381 "./util/configlexer.lex"
+#line 382 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 383 "./util/configlexer.lex"
+#line 384 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2967,38 +2979,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 152:
+case 153:
 YY_RULE_SETUP
-#line 395 "./util/configlexer.lex"
+#line 396 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 397 "./util/configlexer.lex"
+#line 398 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 153:
-YY_RULE_SETUP
-#line 401 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 154:
-/* rule 154 can match eol */
 YY_RULE_SETUP
 #line 402 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 155:
+/* rule 155 can match eol */
 YY_RULE_SETUP
 #line 403 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 404 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 405 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3006,27 +3018,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 409 "./util/configlexer.lex"
+#line 410 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 413 "./util/configlexer.lex"
+#line 414 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 158:
-/* rule 158 can match eol */
+case 159:
+/* rule 159 can match eol */
 YY_RULE_SETUP
-#line 414 "./util/configlexer.lex"
+#line 415 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 416 "./util/configlexer.lex"
+#line 417 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3036,7 +3048,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 422 "./util/configlexer.lex"
+#line 423 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3048,33 +3060,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 433 "./util/configlexer.lex"
+#line 434 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 437 "./util/configlexer.lex"
+#line 438 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 441 "./util/configlexer.lex"
+#line 442 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 445 "./util/configlexer.lex"
+#line 446 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3076 "<stdout>"
+#line 3088 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3364,7 +3376,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 1620 )
+                       if ( yy_current_state >= 1628 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3392,11 +3404,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 1620 )
+               if ( yy_current_state >= 1628 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1619);
+       yy_is_jam = (yy_current_state == 1627);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4029,7 +4041,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 445 "./util/configlexer.lex"
+#line 446 "./util/configlexer.lex"
 
 
 
index eea1b858400c040a3acab8cde7d03f8de0b36162..dbde8113c491ef5cc68c940684cee1a7679a121f 100644 (file)
@@ -245,6 +245,7 @@ infra-lame-ttl{COLON}               { YDVAR(1, VAR_INFRA_LAME_TTL) }
 infra-cache-slabs{COLON}       { YDVAR(1, VAR_INFRA_CACHE_SLABS) }
 infra-cache-numhosts{COLON}    { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
 infra-cache-lame-size{COLON}   { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+infra-cache-min-rtt{COLON}     { YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
 num-queries-per-thread{COLON}  { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
 jostle-timeout{COLON}          { YDVAR(1, VAR_JOSTLE_TIMEOUT) }
 delay-close{COLON}             { YDVAR(1, VAR_DELAY_CLOSE) }
index c411b40cb78e27bd25f4bf38187d7a93179bb84f..09df3f34531d18d1282816d425fcb44fbe74a1bd 100644 (file)
@@ -259,21 +259,22 @@ extern int yydebug;
      VAR_MAX_UDP_SIZE = 387,
      VAR_DELAY_CLOSE = 388,
      VAR_UNBLOCK_LAN_ZONES = 389,
-     VAR_DNS64_PREFIX = 390,
-     VAR_DNS64_SYNTHALL = 391,
-     VAR_DNSTAP = 392,
-     VAR_DNSTAP_ENABLE = 393,
-     VAR_DNSTAP_SOCKET_PATH = 394,
-     VAR_DNSTAP_SEND_IDENTITY = 395,
-     VAR_DNSTAP_SEND_VERSION = 396,
-     VAR_DNSTAP_IDENTITY = 397,
-     VAR_DNSTAP_VERSION = 398,
-     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 399,
-     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 400,
-     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 401,
-     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 402,
-     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 403,
-     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 404
+     VAR_INFRA_CACHE_MIN_RTT = 390,
+     VAR_DNS64_PREFIX = 391,
+     VAR_DNS64_SYNTHALL = 392,
+     VAR_DNSTAP = 393,
+     VAR_DNSTAP_ENABLE = 394,
+     VAR_DNSTAP_SOCKET_PATH = 395,
+     VAR_DNSTAP_SEND_IDENTITY = 396,
+     VAR_DNSTAP_SEND_VERSION = 397,
+     VAR_DNSTAP_IDENTITY = 398,
+     VAR_DNSTAP_VERSION = 399,
+     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400,
+     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401,
+     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402,
+     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403,
+     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404,
+     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405
    };
 #endif
 /* Tokens.  */
@@ -409,21 +410,22 @@ extern int yydebug;
 #define VAR_MAX_UDP_SIZE 387
 #define VAR_DELAY_CLOSE 388
 #define VAR_UNBLOCK_LAN_ZONES 389
-#define VAR_DNS64_PREFIX 390
-#define VAR_DNS64_SYNTHALL 391
-#define VAR_DNSTAP 392
-#define VAR_DNSTAP_ENABLE 393
-#define VAR_DNSTAP_SOCKET_PATH 394
-#define VAR_DNSTAP_SEND_IDENTITY 395
-#define VAR_DNSTAP_SEND_VERSION 396
-#define VAR_DNSTAP_IDENTITY 397
-#define VAR_DNSTAP_VERSION 398
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 399
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 400
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 401
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 402
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 403
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 404
+#define VAR_INFRA_CACHE_MIN_RTT 390
+#define VAR_DNS64_PREFIX 391
+#define VAR_DNS64_SYNTHALL 392
+#define VAR_DNSTAP 393
+#define VAR_DNSTAP_ENABLE 394
+#define VAR_DNSTAP_SOCKET_PATH 395
+#define VAR_DNSTAP_SEND_IDENTITY 396
+#define VAR_DNSTAP_SEND_VERSION 397
+#define VAR_DNSTAP_IDENTITY 398
+#define VAR_DNSTAP_VERSION 399
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 400
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 401
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 402
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 403
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405
 
 
 
@@ -437,7 +439,7 @@ typedef union YYSTYPE
 
 
 /* Line 387 of yacc.c  */
-#line 441 "util/configparser.c"
+#line 443 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -465,7 +467,7 @@ int yyparse ();
 /* Copy the second part of user declarations.  */
 
 /* Line 390 of yacc.c  */
-#line 469 "util/configparser.c"
+#line 471 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -685,20 +687,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   278
+#define YYLAST   280
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  150
+#define YYNTOKENS  151
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  155
+#define YYNNTS  156
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  295
+#define YYNRULES  297
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  432
+#define YYNSTATES  435
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   404
+#define YYMAXUTOK   405
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -746,7 +748,7 @@ static const yytype_uint8 yytranslate[] =
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149
+     145,   146,   147,   148,   149,   150
 };
 
 #if YYDEBUG
@@ -765,139 +767,139 @@ static const yytype_uint16 yyprhs[] =
      165,   167,   169,   171,   173,   175,   177,   179,   181,   183,
      185,   187,   189,   191,   193,   195,   197,   199,   201,   203,
      205,   207,   209,   211,   213,   215,   217,   219,   221,   223,
-     225,   227,   229,   231,   233,   235,   237,   239,   241,   244,
-     245,   247,   249,   251,   253,   255,   257,   260,   261,   263,
-     265,   267,   269,   272,   275,   278,   281,   284,   287,   290,
-     293,   296,   299,   302,   305,   308,   311,   314,   317,   320,
-     323,   326,   329,   332,   335,   338,   341,   344,   347,   350,
-     353,   356,   359,   362,   365,   368,   371,   374,   377,   380,
-     383,   386,   389,   392,   395,   398,   401,   404,   407,   410,
-     413,   416,   419,   422,   425,   428,   431,   434,   437,   440,
-     443,   446,   449,   452,   455,   458,   461,   464,   467,   470,
-     473,   476,   479,   482,   485,   488,   491,   494,   497,   500,
-     504,   507,   510,   513,   516,   519,   522,   525,   528,   531,
-     534,   537,   540,   543,   546,   549,   552,   555,   558,   562,
-     565,   568,   571,   574,   577,   580,   583,   586,   589,   592,
-     595,   598,   601,   604,   607,   610,   612,   615,   616,   618,
-     620,   622,   624,   626,   628,   630,   632,   635,   638,   641,
-     644,   647,   650,   653,   656,   658,   661,   662,   664,   666,
-     668,   670,   672,   674,   676,   678,   680,   682,   684,   686,
-     689,   692,   695,   698,   701,   704,   707,   710,   713,   716,
-     719,   722,   724,   727,   728,   730
+     225,   227,   229,   231,   233,   235,   237,   239,   241,   243,
+     246,   247,   249,   251,   253,   255,   257,   259,   262,   263,
+     265,   267,   269,   271,   274,   277,   280,   283,   286,   289,
+     292,   295,   298,   301,   304,   307,   310,   313,   316,   319,
+     322,   325,   328,   331,   334,   337,   340,   343,   346,   349,
+     352,   355,   358,   361,   364,   367,   370,   373,   376,   379,
+     382,   385,   388,   391,   394,   397,   400,   403,   406,   409,
+     412,   415,   418,   421,   424,   427,   430,   433,   436,   439,
+     442,   445,   448,   451,   454,   457,   460,   463,   466,   469,
+     472,   475,   478,   481,   484,   487,   490,   493,   496,   499,
+     502,   505,   509,   512,   515,   518,   521,   524,   527,   530,
+     533,   536,   539,   542,   545,   548,   551,   554,   557,   560,
+     563,   567,   570,   573,   576,   579,   582,   585,   588,   591,
+     594,   597,   600,   603,   606,   609,   612,   615,   617,   620,
+     621,   623,   625,   627,   629,   631,   633,   635,   637,   640,
+     643,   646,   649,   652,   655,   658,   661,   663,   666,   667,
+     669,   671,   673,   675,   677,   679,   681,   683,   685,   687,
+     689,   691,   694,   697,   700,   703,   706,   709,   712,   715,
+     718,   721,   724,   727,   729,   732,   733,   735
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     151,     0,    -1,    -1,   151,   152,    -1,   153,   154,    -1,
-     156,   157,    -1,   159,   160,    -1,   301,   302,    -1,   275,
-     276,    -1,   286,   287,    -1,    11,    -1,   154,   155,    -1,
-      -1,   162,    -1,   163,    -1,   167,    -1,   170,    -1,   176,
-      -1,   177,    -1,   178,    -1,   179,    -1,   168,    -1,   189,
-      -1,   190,    -1,   191,    -1,   192,    -1,   193,    -1,   211,
-      -1,   212,    -1,   213,    -1,   217,    -1,   218,    -1,   173,
-      -1,   219,    -1,   220,    -1,   223,    -1,   221,    -1,   222,
-      -1,   224,    -1,   225,    -1,   226,    -1,   237,    -1,   202,
-      -1,   203,    -1,   204,    -1,   205,    -1,   227,    -1,   240,
-      -1,   198,    -1,   200,    -1,   241,    -1,   246,    -1,   247,
-      -1,   248,    -1,   174,    -1,   210,    -1,   255,    -1,   256,
-      -1,   199,    -1,   251,    -1,   186,    -1,   169,    -1,   194,
-      -1,   238,    -1,   244,    -1,   228,    -1,   239,    -1,   258,
-      -1,   259,    -1,   175,    -1,   164,    -1,   185,    -1,   231,
-      -1,   165,    -1,   171,    -1,   172,    -1,   195,    -1,   196,
-      -1,   257,    -1,   230,    -1,   232,    -1,   233,    -1,   166,
-      -1,   260,    -1,   214,    -1,   236,    -1,   187,    -1,   201,
-      -1,   242,    -1,   243,    -1,   245,    -1,   250,    -1,   197,
-      -1,   252,    -1,   253,    -1,   254,    -1,   206,    -1,   209,
-      -1,   234,    -1,   235,    -1,   207,    -1,   229,    -1,   249,
-      -1,   188,    -1,   180,    -1,   181,    -1,   182,    -1,   183,
-      -1,   184,    -1,   261,    -1,   262,    -1,   263,    -1,   208,
-      -1,   215,    -1,   216,    -1,   264,    -1,   265,    -1,    38,
-      -1,   157,   158,    -1,    -1,   266,    -1,   267,    -1,   268,
-      -1,   270,    -1,   269,    -1,    44,    -1,   160,   161,    -1,
-      -1,   271,    -1,   272,    -1,   273,    -1,   274,    -1,    13,
-      10,    -1,    12,    10,    -1,    76,    10,    -1,    79,    10,
-      -1,    97,    10,    -1,    14,    10,    -1,    16,    10,    -1,
-      67,    10,    -1,    15,    10,    -1,    80,    10,    -1,    81,
-      10,    -1,    31,    10,    -1,    60,    10,    -1,    75,    10,
-      -1,    17,    10,    -1,    18,    10,    -1,    19,    10,    -1,
-      20,    10,    -1,   123,    10,    -1,   124,    10,    -1,   125,
-      10,    -1,   126,    10,    -1,   127,    10,    -1,    77,    10,
-      -1,    66,    10,    -1,   102,    10,    -1,   122,    10,    -1,
-      21,    10,    -1,    22,    10,    -1,    23,    10,    -1,    24,
-      10,    -1,    25,    10,    -1,    68,    10,    -1,    82,    10,
-      -1,    83,    10,    -1,   110,    10,    -1,    54,    10,    -1,
-      64,    10,    -1,    55,    10,    -1,   103,    10,    -1,    48,
-      10,    -1,    49,    10,    -1,    50,    10,    -1,    51,    10,
-      -1,   114,    10,    -1,   118,    10,    -1,   119,    10,    -1,
-     115,    10,    -1,    61,    10,    -1,    26,    10,    -1,    27,
-      10,    -1,    28,    10,    -1,    99,    10,    -1,   133,    10,
-      -1,   134,    10,    -1,    29,    10,    -1,    30,    10,    -1,
-      32,    10,    -1,    33,    10,    -1,    35,    10,    -1,    36,
-      10,    -1,    34,    10,    -1,    41,    10,    -1,    42,    10,
-      -1,    43,    10,    -1,    52,    10,    -1,    71,    10,    -1,
-     120,    10,    -1,    85,    10,    -1,    78,    10,    -1,    86,
-      10,    -1,    87,    10,    -1,   116,    10,    -1,   117,    10,
-      -1,   101,    10,    -1,    47,    10,    -1,    69,    10,    -1,
-      72,    10,    10,    -1,    53,    10,    -1,    56,    10,    -1,
-     106,    10,    -1,   107,    10,    -1,    70,    10,    -1,   108,
-      10,    -1,    57,    10,    -1,    58,    10,    -1,    59,    10,
-      -1,   121,    10,    -1,   109,    10,    -1,    65,    10,    -1,
-     112,    10,    -1,   113,    10,    -1,   111,    10,    -1,    62,
-      10,    -1,    63,    10,    -1,    84,    10,    -1,    73,    10,
-      10,    -1,    74,    10,    -1,    98,    10,    -1,   130,    10,
-      -1,   131,    10,    -1,   132,    10,    -1,   135,    10,    -1,
-     136,    10,    -1,    37,    10,    -1,    39,    10,    -1,    40,
-      10,    -1,   129,    10,    -1,   100,    10,    -1,    37,    10,
-      -1,    45,    10,    -1,    46,    10,    -1,   128,    10,    -1,
-      88,    -1,   276,   277,    -1,    -1,   278,    -1,   280,    -1,
-     279,    -1,   282,    -1,   283,    -1,   284,    -1,   285,    -1,
-     281,    -1,    89,    10,    -1,    91,    10,    -1,    90,    10,
-      -1,    96,    10,    -1,    92,    10,    -1,    93,    10,    -1,
-      94,    10,    -1,    95,    10,    -1,   137,    -1,   287,   288,
-      -1,    -1,   289,    -1,   290,    -1,   291,    -1,   292,    -1,
-     293,    -1,   294,    -1,   295,    -1,   296,    -1,   297,    -1,
-     298,    -1,   299,    -1,   300,    -1,   138,    10,    -1,   139,
-      10,    -1,   140,    10,    -1,   141,    10,    -1,   142,    10,
-      -1,   143,    10,    -1,   144,    10,    -1,   145,    10,    -1,
-     146,    10,    -1,   147,    10,    -1,   148,    10,    -1,   149,
-      10,    -1,   104,    -1,   302,   303,    -1,    -1,   304,    -1,
-     105,    10,    -1
+     152,     0,    -1,    -1,   152,   153,    -1,   154,   155,    -1,
+     157,   158,    -1,   160,   161,    -1,   303,   304,    -1,   277,
+     278,    -1,   288,   289,    -1,    11,    -1,   155,   156,    -1,
+      -1,   163,    -1,   164,    -1,   168,    -1,   171,    -1,   177,
+      -1,   178,    -1,   179,    -1,   180,    -1,   169,    -1,   190,
+      -1,   191,    -1,   192,    -1,   193,    -1,   194,    -1,   212,
+      -1,   213,    -1,   214,    -1,   218,    -1,   219,    -1,   174,
+      -1,   220,    -1,   221,    -1,   224,    -1,   222,    -1,   223,
+      -1,   226,    -1,   227,    -1,   228,    -1,   239,    -1,   203,
+      -1,   204,    -1,   205,    -1,   206,    -1,   229,    -1,   242,
+      -1,   199,    -1,   201,    -1,   243,    -1,   248,    -1,   249,
+      -1,   250,    -1,   175,    -1,   211,    -1,   257,    -1,   258,
+      -1,   200,    -1,   253,    -1,   187,    -1,   170,    -1,   195,
+      -1,   240,    -1,   246,    -1,   230,    -1,   241,    -1,   260,
+      -1,   261,    -1,   176,    -1,   165,    -1,   186,    -1,   233,
+      -1,   166,    -1,   172,    -1,   173,    -1,   196,    -1,   197,
+      -1,   259,    -1,   232,    -1,   234,    -1,   235,    -1,   167,
+      -1,   262,    -1,   215,    -1,   238,    -1,   188,    -1,   202,
+      -1,   244,    -1,   245,    -1,   247,    -1,   252,    -1,   198,
+      -1,   254,    -1,   255,    -1,   256,    -1,   207,    -1,   210,
+      -1,   236,    -1,   237,    -1,   208,    -1,   231,    -1,   251,
+      -1,   189,    -1,   181,    -1,   182,    -1,   183,    -1,   184,
+      -1,   185,    -1,   263,    -1,   264,    -1,   265,    -1,   209,
+      -1,   216,    -1,   217,    -1,   266,    -1,   267,    -1,   225,
+      -1,    38,    -1,   158,   159,    -1,    -1,   268,    -1,   269,
+      -1,   270,    -1,   272,    -1,   271,    -1,    44,    -1,   161,
+     162,    -1,    -1,   273,    -1,   274,    -1,   275,    -1,   276,
+      -1,    13,    10,    -1,    12,    10,    -1,    76,    10,    -1,
+      79,    10,    -1,    97,    10,    -1,    14,    10,    -1,    16,
+      10,    -1,    67,    10,    -1,    15,    10,    -1,    80,    10,
+      -1,    81,    10,    -1,    31,    10,    -1,    60,    10,    -1,
+      75,    10,    -1,    17,    10,    -1,    18,    10,    -1,    19,
+      10,    -1,    20,    10,    -1,   123,    10,    -1,   124,    10,
+      -1,   125,    10,    -1,   126,    10,    -1,   127,    10,    -1,
+      77,    10,    -1,    66,    10,    -1,   102,    10,    -1,   122,
+      10,    -1,    21,    10,    -1,    22,    10,    -1,    23,    10,
+      -1,    24,    10,    -1,    25,    10,    -1,    68,    10,    -1,
+      82,    10,    -1,    83,    10,    -1,   110,    10,    -1,    54,
+      10,    -1,    64,    10,    -1,    55,    10,    -1,   103,    10,
+      -1,    48,    10,    -1,    49,    10,    -1,    50,    10,    -1,
+      51,    10,    -1,   114,    10,    -1,   118,    10,    -1,   119,
+      10,    -1,   115,    10,    -1,    61,    10,    -1,    26,    10,
+      -1,    27,    10,    -1,    28,    10,    -1,    99,    10,    -1,
+     133,    10,    -1,   134,    10,    -1,    29,    10,    -1,    30,
+      10,    -1,    32,    10,    -1,    33,    10,    -1,    35,    10,
+      -1,    36,    10,    -1,    34,    10,    -1,   135,    10,    -1,
+      41,    10,    -1,    42,    10,    -1,    43,    10,    -1,    52,
+      10,    -1,    71,    10,    -1,   120,    10,    -1,    85,    10,
+      -1,    78,    10,    -1,    86,    10,    -1,    87,    10,    -1,
+     116,    10,    -1,   117,    10,    -1,   101,    10,    -1,    47,
+      10,    -1,    69,    10,    -1,    72,    10,    10,    -1,    53,
+      10,    -1,    56,    10,    -1,   106,    10,    -1,   107,    10,
+      -1,    70,    10,    -1,   108,    10,    -1,    57,    10,    -1,
+      58,    10,    -1,    59,    10,    -1,   121,    10,    -1,   109,
+      10,    -1,    65,    10,    -1,   112,    10,    -1,   113,    10,
+      -1,   111,    10,    -1,    62,    10,    -1,    63,    10,    -1,
+      84,    10,    -1,    73,    10,    10,    -1,    74,    10,    -1,
+      98,    10,    -1,   130,    10,    -1,   131,    10,    -1,   132,
+      10,    -1,   136,    10,    -1,   137,    10,    -1,    37,    10,
+      -1,    39,    10,    -1,    40,    10,    -1,   129,    10,    -1,
+     100,    10,    -1,    37,    10,    -1,    45,    10,    -1,    46,
+      10,    -1,   128,    10,    -1,    88,    -1,   278,   279,    -1,
+      -1,   280,    -1,   282,    -1,   281,    -1,   284,    -1,   285,
+      -1,   286,    -1,   287,    -1,   283,    -1,    89,    10,    -1,
+      91,    10,    -1,    90,    10,    -1,    96,    10,    -1,    92,
+      10,    -1,    93,    10,    -1,    94,    10,    -1,    95,    10,
+      -1,   138,    -1,   289,   290,    -1,    -1,   291,    -1,   292,
+      -1,   293,    -1,   294,    -1,   295,    -1,   296,    -1,   297,
+      -1,   298,    -1,   299,    -1,   300,    -1,   301,    -1,   302,
+      -1,   139,    10,    -1,   140,    10,    -1,   141,    10,    -1,
+     142,    10,    -1,   143,    10,    -1,   144,    10,    -1,   145,
+      10,    -1,   146,    10,    -1,   147,    10,    -1,   148,    10,
+      -1,   149,    10,    -1,   150,    10,    -1,   104,    -1,   304,
+     305,    -1,    -1,   306,    -1,   105,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   122,   122,   122,   123,   123,   124,   124,   125,   125,
-     129,   134,   135,   136,   136,   136,   137,   137,   138,   138,
-     138,   139,   139,   139,   140,   140,   140,   141,   141,   142,
-     142,   143,   143,   144,   144,   145,   145,   146,   146,   147,
-     147,   148,   148,   149,   149,   149,   150,   150,   150,   151,
-     151,   151,   152,   152,   153,   153,   154,   154,   155,   155,
-     156,   156,   156,   157,   157,   158,   158,   159,   159,   159,
-     160,   160,   161,   161,   162,   162,   163,   163,   163,   164,
-     164,   165,   165,   166,   166,   167,   167,   168,   168,   169,
-     169,   169,   170,   170,   171,   171,   171,   172,   172,   172,
-     173,   173,   173,   174,   174,   174,   175,   175,   175,   176,
-     176,   176,   177,   177,   177,   178,   178,   180,   192,   193,
-     194,   194,   194,   194,   194,   196,   208,   209,   210,   210,
-     210,   210,   212,   221,   230,   241,   250,   259,   268,   281,
-     296,   305,   314,   323,   332,   341,   350,   359,   368,   377,
-     386,   395,   404,   411,   418,   427,   436,   450,   459,   468,
-     475,   482,   489,   497,   504,   511,   518,   525,   533,   541,
-     549,   556,   563,   572,   581,   588,   595,   603,   611,   621,
-     634,   645,   653,   666,   675,   684,   693,   703,   711,   724,
-     733,   741,   750,   758,   771,   778,   788,   798,   808,   818,
-     828,   838,   848,   855,   862,   871,   880,   889,   896,   906,
-     923,   930,   948,   961,   974,   983,   992,  1001,  1011,  1021,
-    1030,  1039,  1046,  1055,  1064,  1073,  1081,  1094,  1102,  1125,
-    1132,  1147,  1157,  1167,  1174,  1181,  1190,  1200,  1207,  1214,
-    1223,  1233,  1243,  1250,  1257,  1266,  1271,  1272,  1273,  1273,
-    1273,  1274,  1274,  1274,  1275,  1275,  1277,  1287,  1296,  1303,
-    1313,  1320,  1327,  1334,  1341,  1346,  1347,  1348,  1348,  1349,
-    1349,  1350,  1350,  1351,  1352,  1353,  1354,  1355,  1356,  1358,
-    1366,  1373,  1381,  1389,  1396,  1403,  1412,  1421,  1430,  1439,
-    1448,  1457,  1462,  1463,  1464,  1466
+       0,   123,   123,   123,   124,   124,   125,   125,   126,   126,
+     130,   135,   136,   137,   137,   137,   138,   138,   139,   139,
+     139,   140,   140,   140,   141,   141,   141,   142,   142,   143,
+     143,   144,   144,   145,   145,   146,   146,   147,   147,   148,
+     148,   149,   149,   150,   150,   150,   151,   151,   151,   152,
+     152,   152,   153,   153,   154,   154,   155,   155,   156,   156,
+     157,   157,   157,   158,   158,   159,   159,   160,   160,   160,
+     161,   161,   162,   162,   163,   163,   164,   164,   164,   165,
+     165,   166,   166,   167,   167,   168,   168,   169,   169,   170,
+     170,   170,   171,   171,   172,   172,   172,   173,   173,   173,
+     174,   174,   174,   175,   175,   175,   176,   176,   176,   177,
+     177,   177,   178,   178,   178,   179,   179,   180,   182,   194,
+     195,   196,   196,   196,   196,   196,   198,   210,   211,   212,
+     212,   212,   212,   214,   223,   232,   243,   252,   261,   270,
+     283,   298,   307,   316,   325,   334,   343,   352,   361,   370,
+     379,   388,   397,   406,   413,   420,   429,   438,   452,   461,
+     470,   477,   484,   491,   499,   506,   513,   520,   527,   535,
+     543,   551,   558,   565,   574,   583,   590,   597,   605,   613,
+     623,   636,   647,   655,   668,   677,   686,   695,   705,   713,
+     726,   735,   743,   752,   760,   773,   782,   789,   799,   809,
+     819,   829,   839,   849,   859,   866,   873,   882,   891,   900,
+     907,   917,   934,   941,   959,   972,   985,   994,  1003,  1012,
+    1022,  1032,  1041,  1050,  1057,  1066,  1075,  1084,  1092,  1105,
+    1113,  1136,  1143,  1158,  1168,  1178,  1185,  1192,  1201,  1211,
+    1218,  1225,  1234,  1244,  1254,  1261,  1268,  1277,  1282,  1283,
+    1284,  1284,  1284,  1285,  1285,  1285,  1286,  1286,  1288,  1298,
+    1307,  1314,  1324,  1331,  1338,  1345,  1352,  1357,  1358,  1359,
+    1359,  1360,  1360,  1361,  1361,  1362,  1363,  1364,  1365,  1366,
+    1367,  1369,  1377,  1384,  1392,  1400,  1407,  1414,  1423,  1432,
+    1441,  1450,  1459,  1468,  1473,  1474,  1475,  1477
 };
 #endif
 
@@ -949,8 +951,8 @@ static const char *const yytname[] =
   "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
   "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN",
   "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES",
-  "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", "VAR_DNSTAP",
-  "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH",
+  "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
+  "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH",
   "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION",
   "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
   "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
@@ -986,17 +988,18 @@ static const char *const yytname[] =
   "server_rrset_cache_size", "server_rrset_cache_slabs",
   "server_infra_host_ttl", "server_infra_lame_ttl",
   "server_infra_cache_numhosts", "server_infra_cache_lame_size",
-  "server_infra_cache_slabs", "server_target_fetch_policy",
-  "server_harden_short_bufsize", "server_harden_large_queries",
-  "server_harden_glue", "server_harden_dnssec_stripped",
-  "server_harden_below_nxdomain", "server_harden_referral_path",
-  "server_use_caps_for_id", "server_private_address",
-  "server_private_domain", "server_prefetch", "server_prefetch_key",
-  "server_unwanted_reply_threshold", "server_do_not_query_address",
-  "server_do_not_query_localhost", "server_access_control",
-  "server_module_conf", "server_val_override_date",
-  "server_val_sig_skew_min", "server_val_sig_skew_max",
-  "server_cache_max_ttl", "server_cache_min_ttl", "server_bogus_ttl",
+  "server_infra_cache_slabs", "server_infra_cache_min_rtt",
+  "server_target_fetch_policy", "server_harden_short_bufsize",
+  "server_harden_large_queries", "server_harden_glue",
+  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
+  "server_harden_referral_path", "server_use_caps_for_id",
+  "server_private_address", "server_private_domain", "server_prefetch",
+  "server_prefetch_key", "server_unwanted_reply_threshold",
+  "server_do_not_query_address", "server_do_not_query_localhost",
+  "server_access_control", "server_module_conf",
+  "server_val_override_date", "server_val_sig_skew_min",
+  "server_val_sig_skew_max", "server_cache_max_ttl",
+  "server_cache_min_ttl", "server_bogus_ttl",
   "server_val_clean_additional", "server_val_permissive_mode",
   "server_ignore_cd_flag", "server_val_log_level",
   "server_val_nsec3_keysize_iterations", "server_add_holddown",
@@ -1042,27 +1045,28 @@ static const yytype_uint16 yytoknum[] =
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   150,   151,   151,   152,   152,   152,   152,   152,   152,
-     153,   154,   154,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   156,   157,   157,
-     158,   158,   158,   158,   158,   159,   160,   160,   161,   161,
-     161,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+       0,   151,   152,   152,   153,   153,   153,   153,   153,   153,
+     154,   155,   155,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
+     156,   156,   156,   156,   156,   156,   156,   156,   157,   158,
+     158,   159,   159,   159,   159,   159,   160,   161,   161,   162,
+     162,   162,   162,   163,   164,   165,   166,   167,   168,   169,
      170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
@@ -1073,12 +1077,12 @@ static const yytype_uint16 yyr1[] =
      240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
      250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   276,   277,   277,
-     277,   277,   277,   277,   277,   277,   278,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   287,   288,   288,   288,
-     288,   288,   288,   288,   288,   288,   288,   288,   288,   289,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   278,
+     279,   279,   279,   279,   279,   279,   279,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   289,   290,
+     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   302,   303,   304
+     300,   301,   302,   303,   304,   304,   305,   306
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1095,25 +1099,25 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       0,     1,     1,     1,     1,     1,     1,     2,     0,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     3,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     1,     2,     0,     1,     2
+       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     1,     2,     0,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -1121,8 +1125,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    10,   117,   125,   245,   291,   264,     3,
-      12,   119,   127,   247,   266,   293,     4,     5,     6,     8,
+       2,     0,     1,    10,   118,   126,   247,   293,   266,     3,
+      12,   120,   128,   249,   268,   295,     4,     5,     6,     8,
        9,     7,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1133,131 +1137,131 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    11,    13,    14,    70,
-      73,    82,    15,    21,    61,    16,    74,    75,    32,    54,
-      69,    17,    18,    19,    20,   104,   105,   106,   107,   108,
-      71,    60,    86,   103,    22,    23,    24,    25,    26,    62,
-      76,    77,    92,    48,    58,    49,    87,    42,    43,    44,
-      45,    96,   100,   112,    97,    55,    27,    28,    29,    84,
-     113,   114,    30,    31,    33,    34,    36,    37,    35,    38,
-      39,    40,    46,    65,   101,    79,    72,    80,    81,    98,
-      99,    85,    41,    63,    66,    47,    50,    88,    89,    64,
-      90,    51,    52,    53,   102,    91,    59,    93,    94,    95,
-      56,    57,    78,    67,    68,    83,   109,   110,   111,   115,
-     116,     0,     0,     0,     0,     0,   118,   120,   121,   122,
-     124,   123,     0,     0,     0,     0,   126,   128,   129,   130,
-     131,     0,     0,     0,     0,     0,     0,     0,     0,   246,
-     248,   250,   249,   255,   251,   252,   253,   254,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    11,    13,    14,
+      70,    73,    82,    15,    21,    61,    16,    74,    75,    32,
+      54,    69,    17,    18,    19,    20,   104,   105,   106,   107,
+     108,    71,    60,    86,   103,    22,    23,    24,    25,    26,
+      62,    76,    77,    92,    48,    58,    49,    87,    42,    43,
+      44,    45,    96,   100,   112,    97,    55,    27,    28,    29,
+      84,   113,   114,    30,    31,    33,    34,    36,    37,    35,
+     117,    38,    39,    40,    46,    65,   101,    79,    72,    80,
+      81,    98,    99,    85,    41,    63,    66,    47,    50,    88,
+      89,    64,    90,    51,    52,    53,   102,    91,    59,    93,
+      94,    95,    56,    57,    78,    67,    68,    83,   109,   110,
+     111,   115,   116,     0,     0,     0,     0,     0,   119,   121,
+     122,   123,   125,   124,     0,     0,     0,     0,   127,   129,
+     130,   131,   132,     0,     0,     0,     0,     0,     0,     0,
+       0,   248,   250,   252,   251,   257,   253,   254,   255,   256,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     265,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     276,   277,   278,     0,   292,   294,   133,   132,   137,   140,
-     138,   146,   147,   148,   149,   159,   160,   161,   162,   163,
-     181,   182,   183,   187,   188,   143,   189,   190,   193,   191,
-     192,   194,   195,   196,   207,   172,   173,   174,   175,   197,
-     210,   168,   170,   211,   216,   217,   218,   144,   180,   225,
-     226,   169,   221,   156,   139,   164,   208,   214,   198,     0,
-       0,   229,   145,   134,   155,   201,   135,   141,   142,   165,
-     166,   227,   200,   202,   203,   136,   230,   184,   206,   157,
-     171,   212,   213,   215,   220,   167,   224,   222,   223,   176,
-     179,   204,   205,   177,   178,   199,   219,   158,   150,   151,
-     152,   153,   154,   231,   232,   233,   185,   186,   234,   235,
-     236,   237,   238,   240,   239,   241,   242,   243,   244,   256,
-     258,   257,   260,   261,   262,   263,   259,   279,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   295,
-     209,   228
+       0,     0,   267,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,   279,   280,     0,   294,   296,   134,   133,
+     138,   141,   139,   147,   148,   149,   150,   160,   161,   162,
+     163,   164,   182,   183,   184,   188,   189,   144,   190,   191,
+     194,   192,   193,   196,   197,   198,   209,   173,   174,   175,
+     176,   199,   212,   169,   171,   213,   218,   219,   220,   145,
+     181,   227,   228,   170,   223,   157,   140,   165,   210,   216,
+     200,     0,     0,   231,   146,   135,   156,   203,   136,   142,
+     143,   166,   167,   229,   202,   204,   205,   137,   232,   185,
+     208,   158,   172,   214,   215,   217,   222,   168,   226,   224,
+     225,   177,   180,   206,   207,   178,   179,   201,   221,   159,
+     151,   152,   153,   154,   155,   233,   234,   235,   186,   187,
+     195,   236,   237,   238,   239,   240,   242,   241,   243,   244,
+     245,   246,   258,   260,   259,   262,   263,   264,   265,   261,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   297,   211,   230
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     9,    10,    16,   126,    11,    17,   236,    12,
-      18,   246,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   237,   238,   239,   240,
-     241,   247,   248,   249,   250,    13,    19,   259,   260,   261,
-     262,   263,   264,   265,   266,   267,    14,    20,   280,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     292,    15,    21,   294,   295
+      -1,     1,     9,    10,    16,   127,    11,    17,   238,    12,
+      18,   248,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,   230,   231,   232,   239,   240,   241,
+     242,   243,   249,   250,   251,   252,    13,    19,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,    14,    20,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,    15,    21,   296,   297
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -124
+#define YYPACT_NINF -125
 static const yytype_int16 yypact[] =
 {
-    -124,     0,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,    93,   -36,   -32,   -62,
-    -123,  -103,    -4,    -3,    -2,    -1,     2,    25,    26,    27,
+    -125,     0,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,    93,   -36,   -32,   -62,
+    -124,  -103,    -4,    -3,    -2,    -1,     2,    25,    26,    27,
       29,    30,    31,    32,    33,    35,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    55,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
       71,    72,    73,    74,    75,    76,    77,    79,    80,    81,
       82,    84,    85,    87,    88,    89,    90,    91,    92,   120,
-     121,   122,   123,   128,   129,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   183,   187,   188,   211,   212,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,   237,   238,   239,   240,   241,  -124,  -124,  -124,  -124,
-    -124,  -124,   242,   243,   244,   245,  -124,  -124,  -124,  -124,
-    -124,   246,   247,   248,   249,   250,   251,   252,   253,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,   254,   255,
+     121,   122,   123,   127,   129,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   183,   187,   188,   211,   212,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,   239,   240,   241,   242,   243,  -125,  -125,
+    -125,  -125,  -125,  -125,   244,   245,   246,   247,  -125,  -125,
+    -125,  -125,  -125,   248,   249,   250,   251,   252,   253,   254,
+     255,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
      256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,   266,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,   267,
-     268,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124
+     266,   267,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,   268,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   269,   270,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-    -124,  -124,  -124,  -124,  -124
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1266,38 +1270,39 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint16 yytable[] =
 {
-       2,   231,   293,   232,   233,   242,   296,   297,   298,   299,
-       0,     3,   300,   243,   244,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   251,   252,   253,
-     254,   255,   256,   257,   258,   301,   302,   303,     4,   304,
-     305,   306,   307,   308,     5,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   327,   234,   328,   329,   330,   331,   332,
-     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
-     343,   344,   345,   346,   347,   348,   349,   350,     6,   351,
-     352,   353,   354,   235,   355,   356,   245,   357,   358,   359,
-     360,   361,   362,     0,     7,    22,    23,    24,    25,    26,
+       2,   233,   295,   234,   235,   244,   298,   299,   300,   301,
+       0,     3,   302,   245,   246,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   253,   254,   255,
+     256,   257,   258,   259,   260,   303,   304,   305,     4,   306,
+     307,   308,   309,   310,     5,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
+     326,   327,   328,   329,   236,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,     6,   353,
+     354,   355,   356,   237,   357,   358,   247,   359,   360,   361,
+     362,   363,   364,     0,     7,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-     363,   364,   365,   366,    47,    48,    49,     8,   367,   368,
+     365,   366,   367,   368,    47,    48,    49,   369,     8,   370,
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,   369,   370,   371,   372,   373,   374,   375,   376,   377,
-      91,    92,    93,   378,    94,    95,    96,   379,   380,    97,
+      90,   371,   372,   373,   374,   375,   376,   377,   378,   379,
+      91,    92,    93,   380,    94,    95,    96,   381,   382,    97,
       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   381,   382,   119,   120,   121,   122,   123,   124,   125,
-     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
-     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
-     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
-     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
-     423,   424,   425,   426,   427,   428,   429,   430,   431
+     118,   383,   384,   119,   120,   121,   122,   123,   124,   125,
+     126,   385,   386,   387,   388,   389,   390,   391,   392,   393,
+     394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
+     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
+     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434
 };
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-124)))
+  (!!((Yystate) == (-125)))
 
 #define yytable_value_is_error(Yytable_value) \
   YYID (0)
@@ -1305,8 +1310,8 @@ static const yytype_uint16 yytable[] =
 static const yytype_int16 yycheck[] =
 {
        0,    37,   105,    39,    40,    37,    10,    10,    10,    10,
-      -1,    11,    10,    45,    46,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,    89,    90,    91,
+      -1,    11,    10,    45,    46,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,    89,    90,    91,
       92,    93,    94,    95,    96,    10,    10,    10,    38,    10,
       10,    10,    10,    10,    44,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1317,7 +1322,7 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    -1,   104,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      10,    10,    10,    10,    41,    42,    43,   137,    10,    10,
+      10,    10,    10,    10,    41,    42,    43,    10,   138,    10,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
@@ -1327,20 +1332,21 @@ static const yytype_int16 yycheck[] =
      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
      127,    10,    10,   130,   131,   132,   133,   134,   135,   136,
+     137,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10
+      10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   151,     0,    11,    38,    44,    88,   104,   137,   152,
-     153,   156,   159,   275,   286,   301,   154,   157,   160,   276,
-     287,   302,    12,    13,    14,    15,    16,    17,    18,    19,
+       0,   152,     0,    11,    38,    44,    88,   104,   138,   153,
+     154,   157,   160,   277,   288,   303,   155,   158,   161,   278,
+     289,   304,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    41,    42,    43,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
@@ -1350,7 +1356,7 @@ static const yytype_uint16 yystos[] =
       87,    97,    98,    99,   101,   102,   103,   106,   107,   108,
      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
      119,   120,   121,   122,   123,   124,   125,   126,   127,   130,
-     131,   132,   133,   134,   135,   136,   155,   162,   163,   164,
+     131,   132,   133,   134,   135,   136,   137,   156,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
@@ -1361,13 +1367,13 @@ static const yytype_uint16 yystos[] =
      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,    37,    39,    40,   100,   129,   158,   266,   267,   268,
-     269,   270,    37,    45,    46,   128,   161,   271,   272,   273,
-     274,    89,    90,    91,    92,    93,    94,    95,    96,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   105,   303,   304,    10,    10,    10,    10,
+     265,   266,   267,    37,    39,    40,   100,   129,   159,   268,
+     269,   270,   271,   272,    37,    45,    46,   128,   162,   273,
+     274,   275,   276,    89,    90,    91,    92,    93,    94,    95,
+      96,   279,   280,   281,   282,   283,   284,   285,   286,   287,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   290,   291,   292,   293,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   105,   305,   306,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1381,7 +1387,7 @@ static const yytype_uint16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10
+      10,    10,    10,    10,    10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2183,15 +2189,15 @@ yyreduce:
     {
         case 10:
 /* Line 1792 of yacc.c  */
-#line 130 "./util/configparser.y"
+#line 131 "./util/configparser.y"
     { 
                OUTYY(("\nP(server:)\n")); 
        }
     break;
 
-  case 117:
+  case 118:
 /* Line 1792 of yacc.c  */
-#line 181 "./util/configparser.y"
+#line 183 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2204,9 +2210,9 @@ yyreduce:
        }
     break;
 
-  case 125:
+  case 126:
 /* Line 1792 of yacc.c  */
-#line 197 "./util/configparser.y"
+#line 199 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2219,9 +2225,9 @@ yyreduce:
        }
     break;
 
-  case 132:
+  case 133:
 /* Line 1792 of yacc.c  */
-#line 213 "./util/configparser.y"
+#line 215 "./util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2231,9 +2237,9 @@ yyreduce:
        }
     break;
 
-  case 133:
+  case 134:
 /* Line 1792 of yacc.c  */
-#line 222 "./util/configparser.y"
+#line 224 "./util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2243,9 +2249,9 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 135:
 /* Line 1792 of yacc.c  */
-#line 231 "./util/configparser.y"
+#line 233 "./util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
@@ -2257,9 +2263,9 @@ yyreduce:
        }
     break;
 
-  case 135:
+  case 136:
 /* Line 1792 of yacc.c  */
-#line 242 "./util/configparser.y"
+#line 244 "./util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2269,9 +2275,9 @@ yyreduce:
        }
     break;
 
-  case 136:
+  case 137:
 /* Line 1792 of yacc.c  */
-#line 251 "./util/configparser.y"
+#line 253 "./util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2281,9 +2287,9 @@ yyreduce:
        }
     break;
 
-  case 137:
+  case 138:
 /* Line 1792 of yacc.c  */
-#line 260 "./util/configparser.y"
+#line 262 "./util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2293,9 +2299,9 @@ yyreduce:
        }
     break;
 
-  case 138:
+  case 139:
 /* Line 1792 of yacc.c  */
-#line 269 "./util/configparser.y"
+#line 271 "./util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2309,9 +2315,9 @@ yyreduce:
        }
     break;
 
-  case 139:
+  case 140:
 /* Line 1792 of yacc.c  */
-#line 282 "./util/configparser.y"
+#line 284 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2327,9 +2333,9 @@ yyreduce:
        }
     break;
 
-  case 140:
+  case 141:
 /* Line 1792 of yacc.c  */
-#line 297 "./util/configparser.y"
+#line 299 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2339,9 +2345,9 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 142:
 /* Line 1792 of yacc.c  */
-#line 306 "./util/configparser.y"
+#line 308 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2351,9 +2357,9 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 143:
 /* Line 1792 of yacc.c  */
-#line 315 "./util/configparser.y"
+#line 317 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2363,9 +2369,9 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 144:
 /* Line 1792 of yacc.c  */
-#line 324 "./util/configparser.y"
+#line 326 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2375,9 +2381,9 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 145:
 /* Line 1792 of yacc.c  */
-#line 333 "./util/configparser.y"
+#line 335 "./util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2387,9 +2393,9 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 146:
 /* Line 1792 of yacc.c  */
-#line 342 "./util/configparser.y"
+#line 344 "./util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2399,9 +2405,9 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 147:
 /* Line 1792 of yacc.c  */
-#line 351 "./util/configparser.y"
+#line 353 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2411,9 +2417,9 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 148:
 /* Line 1792 of yacc.c  */
-#line 360 "./util/configparser.y"
+#line 362 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2423,9 +2429,9 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 149:
 /* Line 1792 of yacc.c  */
-#line 369 "./util/configparser.y"
+#line 371 "./util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2435,9 +2441,9 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 150:
 /* Line 1792 of yacc.c  */
-#line 378 "./util/configparser.y"
+#line 380 "./util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2447,9 +2453,9 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 151:
 /* Line 1792 of yacc.c  */
-#line 387 "./util/configparser.y"
+#line 389 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2459,9 +2465,9 @@ yyreduce:
        }
     break;
 
-  case 151:
+  case 152:
 /* Line 1792 of yacc.c  */
-#line 396 "./util/configparser.y"
+#line 398 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2471,9 +2477,9 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 153:
 /* Line 1792 of yacc.c  */
-#line 405 "./util/configparser.y"
+#line 407 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_key);
@@ -2481,9 +2487,9 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 154:
 /* Line 1792 of yacc.c  */
-#line 412 "./util/configparser.y"
+#line 414 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_pem);
@@ -2491,9 +2497,9 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 155:
 /* Line 1792 of yacc.c  */
-#line 419 "./util/configparser.y"
+#line 421 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2503,9 +2509,9 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 156:
 /* Line 1792 of yacc.c  */
-#line 428 "./util/configparser.y"
+#line 430 "./util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2515,9 +2521,9 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 157:
 /* Line 1792 of yacc.c  */
-#line 437 "./util/configparser.y"
+#line 439 "./util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2532,9 +2538,9 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 158:
 /* Line 1792 of yacc.c  */
-#line 451 "./util/configparser.y"
+#line 453 "./util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2544,9 +2550,9 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 159:
 /* Line 1792 of yacc.c  */
-#line 460 "./util/configparser.y"
+#line 462 "./util/configparser.y"
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2556,9 +2562,9 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 160:
 /* Line 1792 of yacc.c  */
-#line 469 "./util/configparser.y"
+#line 471 "./util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2566,9 +2572,9 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 161:
 /* Line 1792 of yacc.c  */
-#line 476 "./util/configparser.y"
+#line 478 "./util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2576,9 +2582,9 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 162:
 /* Line 1792 of yacc.c  */
-#line 483 "./util/configparser.y"
+#line 485 "./util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2586,9 +2592,9 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 163:
 /* Line 1792 of yacc.c  */
-#line 490 "./util/configparser.y"
+#line 492 "./util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2597,9 +2603,9 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 164:
 /* Line 1792 of yacc.c  */
-#line 498 "./util/configparser.y"
+#line 500 "./util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2607,9 +2613,9 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 165:
 /* Line 1792 of yacc.c  */
-#line 505 "./util/configparser.y"
+#line 507 "./util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2617,9 +2623,9 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 166:
 /* Line 1792 of yacc.c  */
-#line 512 "./util/configparser.y"
+#line 514 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2627,9 +2633,9 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 167:
 /* Line 1792 of yacc.c  */
-#line 519 "./util/configparser.y"
+#line 521 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2637,9 +2643,9 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 168:
 /* Line 1792 of yacc.c  */
-#line 526 "./util/configparser.y"
+#line 528 "./util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2648,9 +2654,9 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 169:
 /* Line 1792 of yacc.c  */
-#line 534 "./util/configparser.y"
+#line 536 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2659,9 +2665,9 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 170:
 /* Line 1792 of yacc.c  */
-#line 542 "./util/configparser.y"
+#line 544 "./util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2670,9 +2676,9 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 171:
 /* Line 1792 of yacc.c  */
-#line 550 "./util/configparser.y"
+#line 552 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2680,9 +2686,9 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 172:
 /* Line 1792 of yacc.c  */
-#line 557 "./util/configparser.y"
+#line 559 "./util/configparser.y"
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
@@ -2690,9 +2696,9 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 173:
 /* Line 1792 of yacc.c  */
-#line 564 "./util/configparser.y"
+#line 566 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2702,9 +2708,9 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 174:
 /* Line 1792 of yacc.c  */
-#line 573 "./util/configparser.y"
+#line 575 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2714,9 +2720,9 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 175:
 /* Line 1792 of yacc.c  */
-#line 582 "./util/configparser.y"
+#line 584 "./util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2724,9 +2730,9 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 176:
 /* Line 1792 of yacc.c  */
-#line 589 "./util/configparser.y"
+#line 591 "./util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2734,9 +2740,9 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 177:
 /* Line 1792 of yacc.c  */
-#line 596 "./util/configparser.y"
+#line 598 "./util/configparser.y"
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf))
@@ -2745,9 +2751,9 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 178:
 /* Line 1792 of yacc.c  */
-#line 604 "./util/configparser.y"
+#line 606 "./util/configparser.y"
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf))
@@ -2756,9 +2762,9 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 179:
 /* Line 1792 of yacc.c  */
-#line 612 "./util/configparser.y"
+#line 614 "./util/configparser.y"
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str)));
         if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2769,9 +2775,9 @@ yyreduce:
     }
     break;
 
-  case 179:
+  case 180:
 /* Line 1792 of yacc.c  */
-#line 622 "./util/configparser.y"
+#line 624 "./util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2785,9 +2791,9 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 181:
 /* Line 1792 of yacc.c  */
-#line 635 "./util/configparser.y"
+#line 637 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2799,9 +2805,9 @@ yyreduce:
        }
     break;
 
-  case 181:
+  case 182:
 /* Line 1792 of yacc.c  */
-#line 646 "./util/configparser.y"
+#line 648 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2810,9 +2816,9 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 183:
 /* Line 1792 of yacc.c  */
-#line 654 "./util/configparser.y"
+#line 656 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2826,9 +2832,9 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 184:
 /* Line 1792 of yacc.c  */
-#line 667 "./util/configparser.y"
+#line 669 "./util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2838,9 +2844,9 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 185:
 /* Line 1792 of yacc.c  */
-#line 676 "./util/configparser.y"
+#line 678 "./util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2850,9 +2856,9 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 186:
 /* Line 1792 of yacc.c  */
-#line 685 "./util/configparser.y"
+#line 687 "./util/configparser.y"
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2862,9 +2868,9 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 187:
 /* Line 1792 of yacc.c  */
-#line 694 "./util/configparser.y"
+#line 696 "./util/configparser.y"
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2875,9 +2881,9 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 188:
 /* Line 1792 of yacc.c  */
-#line 704 "./util/configparser.y"
+#line 706 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2886,9 +2892,9 @@ yyreduce:
        }
     break;
 
-  case 188:
+  case 189:
 /* Line 1792 of yacc.c  */
-#line 712 "./util/configparser.y"
+#line 714 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2902,9 +2908,9 @@ yyreduce:
        }
     break;
 
-  case 189:
+  case 190:
 /* Line 1792 of yacc.c  */
-#line 725 "./util/configparser.y"
+#line 727 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2914,9 +2920,9 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 191:
 /* Line 1792 of yacc.c  */
-#line 734 "./util/configparser.y"
+#line 736 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
@@ -2925,9 +2931,9 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 192:
 /* Line 1792 of yacc.c  */
-#line 742 "./util/configparser.y"
+#line 744 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2937,9 +2943,9 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 193:
 /* Line 1792 of yacc.c  */
-#line 751 "./util/configparser.y"
+#line 753 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
@@ -2948,9 +2954,9 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 194:
 /* Line 1792 of yacc.c  */
-#line 759 "./util/configparser.y"
+#line 761 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2964,9 +2970,21 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 195:
+/* Line 1792 of yacc.c  */
+#line 774 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 196:
 /* Line 1792 of yacc.c  */
-#line 772 "./util/configparser.y"
+#line 783 "./util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2974,9 +2992,9 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 197:
 /* Line 1792 of yacc.c  */
-#line 779 "./util/configparser.y"
+#line 790 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2987,9 +3005,9 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 198:
 /* Line 1792 of yacc.c  */
-#line 789 "./util/configparser.y"
+#line 800 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3000,9 +3018,9 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 199:
 /* Line 1792 of yacc.c  */
-#line 799 "./util/configparser.y"
+#line 810 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3013,9 +3031,9 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 200:
 /* Line 1792 of yacc.c  */
-#line 809 "./util/configparser.y"
+#line 820 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3026,9 +3044,9 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 201:
 /* Line 1792 of yacc.c  */
-#line 819 "./util/configparser.y"
+#line 830 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3039,9 +3057,9 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 202:
 /* Line 1792 of yacc.c  */
-#line 829 "./util/configparser.y"
+#line 840 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3052,9 +3070,9 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 203:
 /* Line 1792 of yacc.c  */
-#line 839 "./util/configparser.y"
+#line 850 "./util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3065,9 +3083,9 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 204:
 /* Line 1792 of yacc.c  */
-#line 849 "./util/configparser.y"
+#line 860 "./util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -3075,9 +3093,9 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 205:
 /* Line 1792 of yacc.c  */
-#line 856 "./util/configparser.y"
+#line 867 "./util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -3085,9 +3103,9 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 206:
 /* Line 1792 of yacc.c  */
-#line 863 "./util/configparser.y"
+#line 874 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3097,9 +3115,9 @@ yyreduce:
        }
     break;
 
-  case 205:
+  case 207:
 /* Line 1792 of yacc.c  */
-#line 872 "./util/configparser.y"
+#line 883 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3109,9 +3127,9 @@ yyreduce:
        }
     break;
 
-  case 206:
+  case 208:
 /* Line 1792 of yacc.c  */
-#line 881 "./util/configparser.y"
+#line 892 "./util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3121,9 +3139,9 @@ yyreduce:
        }
     break;
 
-  case 207:
+  case 209:
 /* Line 1792 of yacc.c  */
-#line 890 "./util/configparser.y"
+#line 901 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -3131,9 +3149,9 @@ yyreduce:
        }
     break;
 
-  case 208:
+  case 210:
 /* Line 1792 of yacc.c  */
-#line 897 "./util/configparser.y"
+#line 908 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3144,9 +3162,9 @@ yyreduce:
        }
     break;
 
-  case 209:
+  case 211:
 /* Line 1792 of yacc.c  */
-#line 907 "./util/configparser.y"
+#line 918 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -3164,9 +3182,9 @@ yyreduce:
        }
     break;
 
-  case 210:
+  case 212:
 /* Line 1792 of yacc.c  */
-#line 924 "./util/configparser.y"
+#line 935 "./util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -3174,9 +3192,9 @@ yyreduce:
        }
     break;
 
-  case 211:
+  case 213:
 /* Line 1792 of yacc.c  */
-#line 931 "./util/configparser.y"
+#line 942 "./util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3195,9 +3213,9 @@ yyreduce:
        }
     break;
 
-  case 212:
+  case 214:
 /* Line 1792 of yacc.c  */
-#line 949 "./util/configparser.y"
+#line 960 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3211,9 +3229,9 @@ yyreduce:
        }
     break;
 
-  case 213:
+  case 215:
 /* Line 1792 of yacc.c  */
-#line 962 "./util/configparser.y"
+#line 973 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3227,9 +3245,9 @@ yyreduce:
        }
     break;
 
-  case 214:
+  case 216:
 /* Line 1792 of yacc.c  */
-#line 975 "./util/configparser.y"
+#line 986 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3239,9 +3257,9 @@ yyreduce:
        }
     break;
 
-  case 215:
+  case 217:
 /* Line 1792 of yacc.c  */
-#line 984 "./util/configparser.y"
+#line 995 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3251,9 +3269,9 @@ yyreduce:
        }
     break;
 
-  case 216:
+  case 218:
 /* Line 1792 of yacc.c  */
-#line 993 "./util/configparser.y"
+#line 1004 "./util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3263,9 +3281,9 @@ yyreduce:
        }
     break;
 
-  case 217:
+  case 219:
 /* Line 1792 of yacc.c  */
-#line 1002 "./util/configparser.y"
+#line 1013 "./util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3276,9 +3294,9 @@ yyreduce:
        }
     break;
 
-  case 218:
+  case 220:
 /* Line 1792 of yacc.c  */
-#line 1012 "./util/configparser.y"
+#line 1023 "./util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3289,9 +3307,9 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 /* Line 1792 of yacc.c  */
-#line 1022 "./util/configparser.y"
+#line 1033 "./util/configparser.y"
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3301,9 +3319,9 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 222:
 /* Line 1792 of yacc.c  */
-#line 1031 "./util/configparser.y"
+#line 1042 "./util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3313,9 +3331,9 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 223:
 /* Line 1792 of yacc.c  */
-#line 1040 "./util/configparser.y"
+#line 1051 "./util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3323,9 +3341,9 @@ yyreduce:
        }
     break;
 
-  case 222:
+  case 224:
 /* Line 1792 of yacc.c  */
-#line 1047 "./util/configparser.y"
+#line 1058 "./util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3335,9 +3353,9 @@ yyreduce:
        }
     break;
 
-  case 223:
+  case 225:
 /* Line 1792 of yacc.c  */
-#line 1056 "./util/configparser.y"
+#line 1067 "./util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3347,9 +3365,9 @@ yyreduce:
        }
     break;
 
-  case 224:
+  case 226:
 /* Line 1792 of yacc.c  */
-#line 1065 "./util/configparser.y"
+#line 1076 "./util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3359,9 +3377,9 @@ yyreduce:
        }
     break;
 
-  case 225:
+  case 227:
 /* Line 1792 of yacc.c  */
-#line 1074 "./util/configparser.y"
+#line 1085 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -3370,9 +3388,9 @@ yyreduce:
        }
     break;
 
-  case 226:
+  case 228:
 /* Line 1792 of yacc.c  */
-#line 1082 "./util/configparser.y"
+#line 1093 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3386,9 +3404,9 @@ yyreduce:
        }
     break;
 
-  case 227:
+  case 229:
 /* Line 1792 of yacc.c  */
-#line 1095 "./util/configparser.y"
+#line 1106 "./util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -3397,9 +3415,9 @@ yyreduce:
        }
     break;
 
-  case 228:
+  case 230:
 /* Line 1792 of yacc.c  */
-#line 1103 "./util/configparser.y"
+#line 1114 "./util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -3423,9 +3441,9 @@ yyreduce:
        }
     break;
 
-  case 229:
+  case 231:
 /* Line 1792 of yacc.c  */
-#line 1126 "./util/configparser.y"
+#line 1137 "./util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -3433,9 +3451,9 @@ yyreduce:
        }
     break;
 
-  case 230:
+  case 232:
 /* Line 1792 of yacc.c  */
-#line 1133 "./util/configparser.y"
+#line 1144 "./util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3451,9 +3469,9 @@ yyreduce:
        }
     break;
 
-  case 231:
+  case 233:
 /* Line 1792 of yacc.c  */
-#line 1148 "./util/configparser.y"
+#line 1159 "./util/configparser.y"
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3464,9 +3482,9 @@ yyreduce:
        }
     break;
 
-  case 232:
+  case 234:
 /* Line 1792 of yacc.c  */
-#line 1158 "./util/configparser.y"
+#line 1169 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3477,9 +3495,9 @@ yyreduce:
        }
     break;
 
-  case 233:
+  case 235:
 /* Line 1792 of yacc.c  */
-#line 1168 "./util/configparser.y"
+#line 1179 "./util/configparser.y"
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str));
@@ -3487,9 +3505,9 @@ yyreduce:
        }
     break;
 
-  case 234:
+  case 236:
 /* Line 1792 of yacc.c  */
-#line 1175 "./util/configparser.y"
+#line 1186 "./util/configparser.y"
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dns64_prefix);
@@ -3497,9 +3515,9 @@ yyreduce:
        }
     break;
 
-  case 235:
+  case 237:
 /* Line 1792 of yacc.c  */
-#line 1182 "./util/configparser.y"
+#line 1193 "./util/configparser.y"
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3509,9 +3527,9 @@ yyreduce:
        }
     break;
 
-  case 236:
+  case 238:
 /* Line 1792 of yacc.c  */
-#line 1191 "./util/configparser.y"
+#line 1202 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3522,9 +3540,9 @@ yyreduce:
        }
     break;
 
-  case 237:
+  case 239:
 /* Line 1792 of yacc.c  */
-#line 1201 "./util/configparser.y"
+#line 1212 "./util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -3532,9 +3550,9 @@ yyreduce:
        }
     break;
 
-  case 238:
+  case 240:
 /* Line 1792 of yacc.c  */
-#line 1208 "./util/configparser.y"
+#line 1219 "./util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -3542,9 +3560,9 @@ yyreduce:
        }
     break;
 
-  case 239:
+  case 241:
 /* Line 1792 of yacc.c  */
-#line 1215 "./util/configparser.y"
+#line 1226 "./util/configparser.y"
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3554,9 +3572,9 @@ yyreduce:
        }
     break;
 
-  case 240:
+  case 242:
 /* Line 1792 of yacc.c  */
-#line 1224 "./util/configparser.y"
+#line 1235 "./util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3567,9 +3585,9 @@ yyreduce:
        }
     break;
 
-  case 241:
+  case 243:
 /* Line 1792 of yacc.c  */
-#line 1234 "./util/configparser.y"
+#line 1245 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3580,9 +3598,9 @@ yyreduce:
        }
     break;
 
-  case 242:
+  case 244:
 /* Line 1792 of yacc.c  */
-#line 1244 "./util/configparser.y"
+#line 1255 "./util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -3590,9 +3608,9 @@ yyreduce:
        }
     break;
 
-  case 243:
+  case 245:
 /* Line 1792 of yacc.c  */
-#line 1251 "./util/configparser.y"
+#line 1262 "./util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -3600,9 +3618,9 @@ yyreduce:
        }
     break;
 
-  case 244:
+  case 246:
 /* Line 1792 of yacc.c  */
-#line 1258 "./util/configparser.y"
+#line 1269 "./util/configparser.y"
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3612,17 +3630,17 @@ yyreduce:
        }
     break;
 
-  case 245:
+  case 247:
 /* Line 1792 of yacc.c  */
-#line 1267 "./util/configparser.y"
+#line 1278 "./util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 256:
+  case 258:
 /* Line 1792 of yacc.c  */
-#line 1278 "./util/configparser.y"
+#line 1289 "./util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3633,9 +3651,9 @@ yyreduce:
        }
     break;
 
-  case 257:
+  case 259:
 /* Line 1792 of yacc.c  */
-#line 1288 "./util/configparser.y"
+#line 1299 "./util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3645,9 +3663,9 @@ yyreduce:
        }
     break;
 
-  case 258:
+  case 260:
 /* Line 1792 of yacc.c  */
-#line 1297 "./util/configparser.y"
+#line 1308 "./util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -3655,9 +3673,9 @@ yyreduce:
        }
     break;
 
-  case 259:
+  case 261:
 /* Line 1792 of yacc.c  */
-#line 1304 "./util/configparser.y"
+#line 1315 "./util/configparser.y"
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3668,9 +3686,9 @@ yyreduce:
        }
     break;
 
-  case 260:
+  case 262:
 /* Line 1792 of yacc.c  */
-#line 1314 "./util/configparser.y"
+#line 1325 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3678,9 +3696,9 @@ yyreduce:
        }
     break;
 
-  case 261:
+  case 263:
 /* Line 1792 of yacc.c  */
-#line 1321 "./util/configparser.y"
+#line 1332 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3688,9 +3706,9 @@ yyreduce:
        }
     break;
 
-  case 262:
+  case 264:
 /* Line 1792 of yacc.c  */
-#line 1328 "./util/configparser.y"
+#line 1339 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3698,9 +3716,9 @@ yyreduce:
        }
     break;
 
-  case 263:
+  case 265:
 /* Line 1792 of yacc.c  */
-#line 1335 "./util/configparser.y"
+#line 1346 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3708,17 +3726,17 @@ yyreduce:
        }
     break;
 
-  case 264:
+  case 266:
 /* Line 1792 of yacc.c  */
-#line 1342 "./util/configparser.y"
+#line 1353 "./util/configparser.y"
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
     break;
 
-  case 279:
+  case 281:
 /* Line 1792 of yacc.c  */
-#line 1359 "./util/configparser.y"
+#line 1370 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3727,9 +3745,9 @@ yyreduce:
        }
     break;
 
-  case 280:
+  case 282:
 /* Line 1792 of yacc.c  */
-#line 1367 "./util/configparser.y"
+#line 1378 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
@@ -3737,9 +3755,9 @@ yyreduce:
        }
     break;
 
-  case 281:
+  case 283:
 /* Line 1792 of yacc.c  */
-#line 1374 "./util/configparser.y"
+#line 1385 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3748,9 +3766,9 @@ yyreduce:
        }
     break;
 
-  case 282:
+  case 284:
 /* Line 1792 of yacc.c  */
-#line 1382 "./util/configparser.y"
+#line 1393 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3759,9 +3777,9 @@ yyreduce:
        }
     break;
 
-  case 283:
+  case 285:
 /* Line 1792 of yacc.c  */
-#line 1390 "./util/configparser.y"
+#line 1401 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_identity);
@@ -3769,9 +3787,9 @@ yyreduce:
        }
     break;
 
-  case 284:
+  case 286:
 /* Line 1792 of yacc.c  */
-#line 1397 "./util/configparser.y"
+#line 1408 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_version);
@@ -3779,9 +3797,9 @@ yyreduce:
        }
     break;
 
-  case 285:
+  case 287:
 /* Line 1792 of yacc.c  */
-#line 1404 "./util/configparser.y"
+#line 1415 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3791,9 +3809,9 @@ yyreduce:
        }
     break;
 
-  case 286:
+  case 288:
 /* Line 1792 of yacc.c  */
-#line 1413 "./util/configparser.y"
+#line 1424 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3803,9 +3821,9 @@ yyreduce:
        }
     break;
 
-  case 287:
+  case 289:
 /* Line 1792 of yacc.c  */
-#line 1422 "./util/configparser.y"
+#line 1433 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3815,9 +3833,9 @@ yyreduce:
        }
     break;
 
-  case 288:
+  case 290:
 /* Line 1792 of yacc.c  */
-#line 1431 "./util/configparser.y"
+#line 1442 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3827,9 +3845,9 @@ yyreduce:
        }
     break;
 
-  case 289:
+  case 291:
 /* Line 1792 of yacc.c  */
-#line 1440 "./util/configparser.y"
+#line 1451 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3839,9 +3857,9 @@ yyreduce:
        }
     break;
 
-  case 290:
+  case 292:
 /* Line 1792 of yacc.c  */
-#line 1449 "./util/configparser.y"
+#line 1460 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3851,17 +3869,17 @@ yyreduce:
        }
     break;
 
-  case 291:
+  case 293:
 /* Line 1792 of yacc.c  */
-#line 1458 "./util/configparser.y"
+#line 1469 "./util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 295:
+  case 297:
 /* Line 1792 of yacc.c  */
-#line 1467 "./util/configparser.y"
+#line 1478 "./util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -3871,7 +3889,7 @@ yyreduce:
 
 
 /* Line 1792 of yacc.c  */
-#line 3875 "util/configparser.c"
+#line 3893 "util/configparser.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4103,7 +4121,7 @@ yyreturn:
 
 
 /* Line 2055 of yacc.c  */
-#line 1472 "./util/configparser.y"
+#line 1483 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index dfb668d8ebdc39ba5c9f6735448174faa6dc1713..ec321093a1472f2e2a3275d6e4f28e7209e84707 100644 (file)
@@ -178,21 +178,22 @@ extern int yydebug;
      VAR_MAX_UDP_SIZE = 387,
      VAR_DELAY_CLOSE = 388,
      VAR_UNBLOCK_LAN_ZONES = 389,
-     VAR_DNS64_PREFIX = 390,
-     VAR_DNS64_SYNTHALL = 391,
-     VAR_DNSTAP = 392,
-     VAR_DNSTAP_ENABLE = 393,
-     VAR_DNSTAP_SOCKET_PATH = 394,
-     VAR_DNSTAP_SEND_IDENTITY = 395,
-     VAR_DNSTAP_SEND_VERSION = 396,
-     VAR_DNSTAP_IDENTITY = 397,
-     VAR_DNSTAP_VERSION = 398,
-     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 399,
-     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 400,
-     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 401,
-     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 402,
-     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 403,
-     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 404
+     VAR_INFRA_CACHE_MIN_RTT = 390,
+     VAR_DNS64_PREFIX = 391,
+     VAR_DNS64_SYNTHALL = 392,
+     VAR_DNSTAP = 393,
+     VAR_DNSTAP_ENABLE = 394,
+     VAR_DNSTAP_SOCKET_PATH = 395,
+     VAR_DNSTAP_SEND_IDENTITY = 396,
+     VAR_DNSTAP_SEND_VERSION = 397,
+     VAR_DNSTAP_IDENTITY = 398,
+     VAR_DNSTAP_VERSION = 399,
+     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400,
+     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401,
+     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402,
+     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403,
+     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404,
+     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405
    };
 #endif
 /* Tokens.  */
@@ -328,21 +329,22 @@ extern int yydebug;
 #define VAR_MAX_UDP_SIZE 387
 #define VAR_DELAY_CLOSE 388
 #define VAR_UNBLOCK_LAN_ZONES 389
-#define VAR_DNS64_PREFIX 390
-#define VAR_DNS64_SYNTHALL 391
-#define VAR_DNSTAP 392
-#define VAR_DNSTAP_ENABLE 393
-#define VAR_DNSTAP_SOCKET_PATH 394
-#define VAR_DNSTAP_SEND_IDENTITY 395
-#define VAR_DNSTAP_SEND_VERSION 396
-#define VAR_DNSTAP_IDENTITY 397
-#define VAR_DNSTAP_VERSION 398
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 399
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 400
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 401
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 402
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 403
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 404
+#define VAR_INFRA_CACHE_MIN_RTT 390
+#define VAR_DNS64_PREFIX 391
+#define VAR_DNS64_SYNTHALL 392
+#define VAR_DNSTAP 393
+#define VAR_DNSTAP_ENABLE 394
+#define VAR_DNSTAP_SOCKET_PATH 395
+#define VAR_DNSTAP_SEND_IDENTITY 396
+#define VAR_DNSTAP_SEND_VERSION 397
+#define VAR_DNSTAP_IDENTITY 398
+#define VAR_DNSTAP_VERSION 399
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 400
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 401
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 402
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 403
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405
 
 
 
@@ -356,7 +358,7 @@ typedef union YYSTYPE
 
 
 /* Line 2058 of yacc.c  */
-#line 360 "util/configparser.h"
+#line 362 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index a2657bc07e0157ffaeade76dbd90e68d34c36022..396ea3c64d64ab9b20978e7e4dba4624e6d10256 100644 (file)
@@ -107,6 +107,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST
 %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN
 %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE VAR_UNBLOCK_LAN_ZONES
+%token VAR_INFRA_CACHE_MIN_RTT
 %token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL
 %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH
 %token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION
@@ -175,7 +176,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_ssl_service_key | server_ssl_service_pem | server_ssl_port |
        server_minimal_responses | server_rrset_roundrobin | server_max_udp_size |
        server_so_reuseport | server_delay_close | server_unblock_lan_zones |
-       server_dns64_prefix | server_dns64_synthall
+       server_dns64_prefix | server_dns64_synthall |
+       server_infra_cache_min_rtt
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -768,6 +770,15 @@ server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG
                free($2);
        }
        ;
+server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG
+       {
+               OUTYY(("P(server_infra_cache_min_rtt:%s)\n", $2));
+               if(atoi($2) == 0 && strcmp($2, "0") != 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->infra_cache_min_rtt = atoi($2);
+               free($2);
+       }
+       ;
 server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG
        {
                OUTYY(("P(server_target_fetch_policy:%s)\n", $2));
index 4b44fca5060ed2a7b659a0de2fe582058a52655b..5d86f13378e569e37faa3e203b05efe75d095e3a 100644 (file)
@@ -42,6 +42,8 @@
 #include "config.h"
 #include "util/rtt.h"
 
+/* overwritten by config: infra_cache_min_rtt: */
+int RTT_MIN_TIMEOUT = 50;
 /** calculate RTO from rtt information */
 static int
 calc_rto(const struct rtt_info* rtt)
index 57e904d1407fae423174ede799609d74aafc430e..d6da98606502f9a7e48679887d5f3e8edffed80b 100644 (file)
@@ -56,7 +56,7 @@ struct rtt_info {
 };
 
 /** min retransmit timeout value, in milliseconds */
-#define RTT_MIN_TIMEOUT        50
+extern int RTT_MIN_TIMEOUT;
 /** max retransmit timeout value, in milliseconds */
 #define RTT_MAX_TIMEOUT 120000