]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Changes from DNS64:
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 31 Jul 2014 08:00:38 +0000 (08:00 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 31 Jul 2014 08:00:38 +0000 (08:00 +0000)
  strcpy changed to memmove.
  arraybound check fixed from prefix_net/8/4 to prefix_net/8+4.
  allocation of result consistently in the correct region.
  time_t is now used for ttl in unbound (since the patch's version).

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

Makefile.in
dns64/dns64.c
doc/CREDITS
doc/Changelog
doc/README
doc/README.DNS64
doc/example.conf.in
util/configlexer.c
util/configlexer.lex
util/data/msgreply.h
util/data/packed_rrset.h

index 6971bc3d7d053bae1b9a645bed8b04bde0c61a85..7bd899723ccec67d8cf6f3be20f4ac5da1693636 100644 (file)
@@ -692,7 +692,7 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service
  $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.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/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iterator.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \
  $(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 \
@@ -730,13 +730,13 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/
  $(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)/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/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 \
@@ -759,8 +759,7 @@ net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_he
  $(srcdir)/ldns/pkthdr.h $(srcdir)/ldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/ldns/parseutil.h \
  $(srcdir)/ldns/wire2str.h \
  
-random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h \
+random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h
 rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \
  $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
@@ -861,6 +860,13 @@ val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/val
  $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_neg.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/net_help.h $(srcdir)/util/regional.h
+dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(srcdir)/util/module.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.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)/services/cache/dns.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/util/config_file.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/net_help.h \
+ $(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
 unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \
@@ -1171,13 +1177,13 @@ snprintf.lo snprintf.o: $(srcdir)/compat/snprintf.c config.h
 strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h
 strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h
 strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h
-getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c
-getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c
-getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c
+getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h \
+getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c config.h
+getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h
 getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c
-explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c
-arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c $(srcdir)/compat/chacha_private.h
-arc4random_uniform.lo arc4random_uniform.o: $(srcdir)/compat/arc4random_uniform.c $(srcdir)/compat/chacha_private.h
-arc4_lock.lo arc4_lock.o: $(srcdir)/compat/arc4_lock.c
-sha512.lo sha512.o: $(srcdir)/compat/sha512.c
-dns64.lo: $(srcdir)/dns64/dns64.c config.h $(srcdir)/util/module.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/config_file.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h
+explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c config.h
+arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c config.h $(srcdir)/compat/chacha_private.h
+arc4random_uniform.lo arc4random_uniform.o: $(srcdir)/compat/arc4random_uniform.c config.h
+arc4_lock.lo arc4_lock.o: $(srcdir)/compat/arc4_lock.c config.h $(srcdir)/util/locks.h
+sha512.lo sha512.o: $(srcdir)/compat/sha512.c config.h
index 3fe177add963157343161a54ae04960c486f3100..2e5b41945ae8aca9970862a3ff4da1b48a385875 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * iterator/iterator.h - DNS64 module
+ * dns64/dns64.c - DNS64 module
  *
  * Copyright (c) 2009, ViagĂ©nie. All rights reserved.
  *
@@ -39,7 +39,7 @@
  * This file contains a module that performs DNS64 query processing.
  */
 
-#include <config.h>
+#include "config.h"
 #include "dns64/dns64.h"
 #include "services/cache/dns.h"
 #include "services/cache/rrset.h"
@@ -212,7 +212,7 @@ ipv4_to_ptr(uint32_t ipv4, char ptr[MAX_PTR_QNAME_IPV4])
         ipv4 /= 256;
     }
 
-    strcpy(c, IPV4_PTR_SUFFIX);
+    memmove(c, IPV4_PTR_SUFFIX, sizeof(IPV4_PTR_SUFFIX));
 
     return c + sizeof(IPV4_PTR_SUFFIX) - ptr;
 }
@@ -273,7 +273,7 @@ synthesize_aaaa(const uint8_t prefix_addr[16], int prefix_net,
     aaaa[prefix_net/8+2] |= a[2] >> (0+prefix_net%8);
     aaaa[prefix_net/8+3] |= a[2] << (8-prefix_net%8);
     aaaa[prefix_net/8+3] |= a[3] >> (0+prefix_net%8);
-    if (prefix_net/8/4 < 16)  /* <-- my beautiful symmetry is destroyed! */
+    if (prefix_net/8+4 < 16)  /* <-- my beautiful symmetry is destroyed! */
     aaaa[prefix_net/8+4] |= a[3] << (8-prefix_net%8);
 }
 
@@ -334,7 +334,7 @@ dns64_init(struct module_env* env, int id)
         log_err("dns64: could not apply configuration settings.");
         return 0;
     }
-       return 1;
+    return 1;
 }
 
 /**
@@ -493,13 +493,13 @@ handle_event_pass(struct module_qstate* qstate, int id)
            && qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA)
                return generate_type_A_query(qstate, id);
 
-    /* We are finished when our sub-query is finished. */
+       /* We are finished when our sub-query is finished. */
        if ((uintptr_t)qstate->minfo[id] == DNS64_SUBQUERY_FINISHED)
                return module_finished;
 
-    /* Otherwise, pass request to next module. */
-    verbose(VERB_ALGO, "dns64: pass to next module");
-    return module_wait_module;
+       /* Otherwise, pass request to next module. */
+       verbose(VERB_ALGO, "dns64: pass to next module");
+       return module_wait_module;
 }
 
 /**
@@ -532,6 +532,7 @@ handle_event_moddone(struct module_qstate* qstate, int id)
                            qstate->return_msg->rep)))
                return module_finished;
 
+    /* So, this is a AAAA noerror/nodata answer */
        return generate_type_A_query(qstate, id);
 }
 
@@ -588,7 +589,7 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk,
         */
        if (!(dd = *dd_out = regional_alloc(region,
                  sizeof(struct packed_rrset_data)
-                 + fd->count * (sizeof(size_t) + sizeof(uint32_t) +
+                 + fd->count * (sizeof(size_t) + sizeof(time_t) +
                             sizeof(uint8_t*) + 2 + 16)))) {
                log_err("out of memory");
                return;
@@ -607,7 +608,7 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk,
        dd->rr_len =
            (size_t*)((uint8_t*)dd + sizeof(struct packed_rrset_data));
        dd->rr_data = (uint8_t**)&dd->rr_len[dd->count];
-       dd->rr_ttl = (uint32_t*)&dd->rr_data[dd->count];
+       dd->rr_ttl = (time_t*)&dd->rr_data[dd->count];
        for(i = 0; i < fd->count; ++i) {
                if (fd->rr_len[i] != 6 || fd->rr_data[i][0] != 0
                    || fd->rr_data[i][1] != 4)
@@ -654,7 +655,6 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk,
  * original empty response.
  *
  * \param id     This module's instance ID.
- * \param answer The answer RR set located in the sub-query's response.
  * \param super  Original AAAA query.
  * \param qstate A query.
  */
@@ -672,7 +672,6 @@ dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate
        log_assert(super->region);
        log_assert(qstate->return_msg);
        log_assert(qstate->return_msg->rep);
-       log_assert(qstate->region);
 
        /* If dns64-synthall is enabled, return_msg is not initialized */
        if(!super->return_msg) {
@@ -689,14 +688,14 @@ dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate
        /*
         * Build the actual reply.
         */
-       cp = construct_reply_info_base(qstate->region, rep->flags, rep->qdcount,
+       cp = construct_reply_info_base(super->region, rep->flags, rep->qdcount,
                rep->ttl, rep->prefetch_ttl, rep->an_numrrsets, rep->ns_numrrsets,
                rep->ar_numrrsets, rep->rrset_count, rep->security);
        if(!cp)
                return;
 
        /* allocate ub_key structures special or not */
-       if(!repinfo_alloc_rrset_keys(cp, qstate->region)) {
+       if(!repinfo_alloc_rrset_keys(cp, super->region)) {
                return;
        }
 
@@ -705,11 +704,11 @@ dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate
                fk = rep->rrsets[i];
                dk = cp->rrsets[i];
                fd = (struct packed_rrset_data*)fk->entry.data;
-               dk->entry.hash = fk->entry.hash;
                dk->rk = fk->rk;
                dk->id = fk->id;
 
                if(i<rep->an_numrrsets && fk->rk.type == htons(LDNS_RR_TYPE_A)) {
+                       /* also sets dk->entry.hash */
                        dns64_synth_aaaa_data(fk, fd, dk, &dd, super->region, dns64_env);
                        /* Delete negative AAAA record from cache stored by
                         * the iterator module */
@@ -717,7 +716,8 @@ dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate
                                           dk->rk.dname_len, LDNS_RR_TYPE_AAAA, 
                                           LDNS_RR_CLASS_IN, 0);
                } else {
-                       dk->rk.dname = (uint8_t*)regional_alloc_init(qstate->region,
+                       dk->entry.hash = fk->entry.hash;
+                       dk->rk.dname = (uint8_t*)regional_alloc_init(super->region,
                                fk->rk.dname, fk->rk.dname_len);
 
                        if(!dk->rk.dname)
@@ -725,7 +725,7 @@ dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate
 
                        s = packed_rrset_sizeof(fd);
                        dd = (struct packed_rrset_data*)regional_alloc_init(
-                               qstate->region, fd, s);
+                               super->region, fd, s);
 
                        if(!dd)
                                return;
index 429a799d6b0a58d10d7e16307377d040b9e4d35b..e47332169308acda96029630678c4aa00c8bbbf3 100644 (file)
@@ -19,3 +19,4 @@ Brett Carr - windows beta testing.
 Luca Bruno - patch for windows support in libunbound hosts and resolvconf().
 Tom Hendrikx - contributed split-itar.sh a useful script to 5011-track ITAR.
 Daisuke HIGASHI - patch for rrset-roundrobin and minimal-responses.
+Simon Perrault - DNS64 module.
index 5ad423529793459d4d71c62e3371a88d4a00e732..9d5e517f544b1f470893da7d948c65616a261cfb 100644 (file)
@@ -3,6 +3,11 @@
          Initial commit of the patch from the FreeBSD base (with its fixes).
          This adds a module (for module-config in unbound.conf) dns64 that
          performs DNS64 processing, see README.DNS64.
+       - Changes from DNS64:
+         strcpy changed to memmove.
+         arraybound check fixed from prefix_net/8/4 to prefix_net/8+4.
+         allocation of result consistently in the correct region.
+         time_t is now used for ttl in unbound (since the patch's version).
 
 29 July 2014: Wouter
        - Patch from Dag-Erling Smorgrav that implements feature, unbound -dd
index 078b101c3a20b555e6f15370094b835752c0c005..80366e549caa983ac17a3cf865a57e5b7740756e 100644 (file)
@@ -3,6 +3,7 @@ Copyright 2007 NLnet Labs
 http://unbound.net
 
 This software is under BSD license, see LICENSE for details.
+The DNS64 module has BSD license in dns64/dns64.c.
 
 * Download the latest release version of this software from 
        http://unbound.net 
index 23ee188b964712224d24ada66153d997c22b1e28..49446ac575d104fe8e73e46f669652696d674472 100644 (file)
@@ -1,3 +1,7 @@
+The DNS64 code was written by Viagenie, 2009, by Simon Perrault as part
+of the Ecdysis project.  The code is copyright by them, and has the BSD
+license (see the dns64/dns64.c file).
+
 To enable DNS64 functionality in Unbound, two directives in unbound.conf must
 be edited:
 
index 154f8ff893624701b8252e919766c0a24e074492..03f6184a475b5e938f1b9203c600a4f3619208ca 100644 (file)
@@ -331,8 +331,8 @@ server:
        # minimal-responses: no
 
        # module configuration of the server. A string with identifiers
-       # separated by spaces. Syntax: [dns64] [validator] iterator
-       # module-config: "dns64 iterator"
+       # separated by spaces. Syntax: "[dns64] [validator] iterator"
+       # module-config: "validator iterator"
 
        # File with trusted keys, kept uptodate using RFC5011 probes,
        # initial file like trust-anchor-file, then it stores metadata.
@@ -534,7 +534,8 @@ server:
        # Default is no.  Can be turned on and off with unbound-control.
        # ssl-upstream: no
 
-       # DNS64 prefix. Must be specified when DNS64 is in use.
+       # DNS64 prefix. Must be specified when DNS64 is use.
+       # Enable dns64 in module-config.  Used to synthesize IPv6 from IPv4.
        # dns64-prefix: 64:ff9b::0/96
 
 # Python config section. To enable:
index b4c36bd02d34ecab2eaaa83d8285553fb2607b8b..fcf3a1f7db62b746564c896640bf318578acd46a 100644 (file)
@@ -1562,9 +1562,6 @@ char *yytext;
  * See LICENSE for the license.
  *
  */
-
-#include "config.h"
-
 #include <ctype.h>
 #include <string.h>
 #include <strings.h>
@@ -1729,7 +1726,7 @@ static void config_end_include(void)
 #endif
 
 #define YY_NO_INPUT 1
-#line 180 "./util/configlexer.lex"
+#line 177 "./util/configlexer.lex"
 #ifndef YY_NO_UNPUT
 #define YY_NO_UNPUT 1
 #endif
@@ -1737,7 +1734,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1739 "<stdout>"
+#line 1736 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1922,9 +1919,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
     
-#line 200 "./util/configlexer.lex"
+#line 197 "./util/configlexer.lex"
 
-#line 1926 "<stdout>"
+#line 1923 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -2015,662 +2012,662 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 201 "./util/configlexer.lex"
+#line 198 "./util/configlexer.lex"
 { 
        LEXOUT(("SP ")); /* ignore */ }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 203 "./util/configlexer.lex"
+#line 200 "./util/configlexer.lex"
 { 
        /* note that flex makes the longest match and '.' is any but not nl */
        LEXOUT(("comment(%s) ", yytext)); /* ignore */ }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 206 "./util/configlexer.lex"
+#line 203 "./util/configlexer.lex"
 { YDVAR(0, VAR_SERVER) }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 207 "./util/configlexer.lex"
+#line 204 "./util/configlexer.lex"
 { YDVAR(1, VAR_NUM_THREADS) }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 208 "./util/configlexer.lex"
+#line 205 "./util/configlexer.lex"
 { YDVAR(1, VAR_VERBOSITY) }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 209 "./util/configlexer.lex"
+#line 206 "./util/configlexer.lex"
 { YDVAR(1, VAR_PORT) }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 210 "./util/configlexer.lex"
+#line 207 "./util/configlexer.lex"
 { YDVAR(1, VAR_OUTGOING_RANGE) }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 211 "./util/configlexer.lex"
+#line 208 "./util/configlexer.lex"
 { YDVAR(1, VAR_OUTGOING_PORT_PERMIT) }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 212 "./util/configlexer.lex"
+#line 209 "./util/configlexer.lex"
 { YDVAR(1, VAR_OUTGOING_PORT_AVOID) }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 213 "./util/configlexer.lex"
+#line 210 "./util/configlexer.lex"
 { YDVAR(1, VAR_OUTGOING_NUM_TCP) }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 214 "./util/configlexer.lex"
+#line 211 "./util/configlexer.lex"
 { YDVAR(1, VAR_INCOMING_NUM_TCP) }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 215 "./util/configlexer.lex"
+#line 212 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_IP4) }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 216 "./util/configlexer.lex"
+#line 213 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_IP6) }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 217 "./util/configlexer.lex"
+#line 214 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_UDP) }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 218 "./util/configlexer.lex"
+#line 215 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_TCP) }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 219 "./util/configlexer.lex"
+#line 216 "./util/configlexer.lex"
 { YDVAR(1, VAR_TCP_UPSTREAM) }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 220 "./util/configlexer.lex"
+#line 217 "./util/configlexer.lex"
 { YDVAR(1, VAR_SSL_UPSTREAM) }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 221 "./util/configlexer.lex"
+#line 218 "./util/configlexer.lex"
 { YDVAR(1, VAR_SSL_SERVICE_KEY) }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 222 "./util/configlexer.lex"
+#line 219 "./util/configlexer.lex"
 { YDVAR(1, VAR_SSL_SERVICE_PEM) }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 223 "./util/configlexer.lex"
+#line 220 "./util/configlexer.lex"
 { YDVAR(1, VAR_SSL_PORT) }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 224 "./util/configlexer.lex"
+#line 221 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_DAEMONIZE) }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 225 "./util/configlexer.lex"
+#line 222 "./util/configlexer.lex"
 { YDVAR(1, VAR_INTERFACE) }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 226 "./util/configlexer.lex"
+#line 223 "./util/configlexer.lex"
 { YDVAR(1, VAR_INTERFACE) }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 227 "./util/configlexer.lex"
+#line 224 "./util/configlexer.lex"
 { YDVAR(1, VAR_OUTGOING_INTERFACE) }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 228 "./util/configlexer.lex"
+#line 225 "./util/configlexer.lex"
 { YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 229 "./util/configlexer.lex"
+#line 226 "./util/configlexer.lex"
 { YDVAR(1, VAR_SO_RCVBUF) }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 230 "./util/configlexer.lex"
+#line 227 "./util/configlexer.lex"
 { YDVAR(1, VAR_SO_SNDBUF) }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 231 "./util/configlexer.lex"
+#line 228 "./util/configlexer.lex"
 { YDVAR(1, VAR_SO_REUSEPORT) }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 232 "./util/configlexer.lex"
+#line 229 "./util/configlexer.lex"
 { YDVAR(1, VAR_CHROOT) }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 233 "./util/configlexer.lex"
+#line 230 "./util/configlexer.lex"
 { YDVAR(1, VAR_USERNAME) }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 234 "./util/configlexer.lex"
+#line 231 "./util/configlexer.lex"
 { YDVAR(1, VAR_DIRECTORY) }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 235 "./util/configlexer.lex"
+#line 232 "./util/configlexer.lex"
 { YDVAR(1, VAR_LOGFILE) }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 236 "./util/configlexer.lex"
+#line 233 "./util/configlexer.lex"
 { YDVAR(1, VAR_PIDFILE) }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 237 "./util/configlexer.lex"
+#line 234 "./util/configlexer.lex"
 { YDVAR(1, VAR_ROOT_HINTS) }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 238 "./util/configlexer.lex"
+#line 235 "./util/configlexer.lex"
 { YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 239 "./util/configlexer.lex"
+#line 236 "./util/configlexer.lex"
 { YDVAR(1, VAR_MSG_BUFFER_SIZE) }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 240 "./util/configlexer.lex"
+#line 237 "./util/configlexer.lex"
 { YDVAR(1, VAR_MSG_CACHE_SIZE) }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 241 "./util/configlexer.lex"
+#line 238 "./util/configlexer.lex"
 { YDVAR(1, VAR_MSG_CACHE_SLABS) }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 242 "./util/configlexer.lex"
+#line 239 "./util/configlexer.lex"
 { YDVAR(1, VAR_RRSET_CACHE_SIZE) }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 243 "./util/configlexer.lex"
+#line 240 "./util/configlexer.lex"
 { YDVAR(1, VAR_RRSET_CACHE_SLABS) }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 244 "./util/configlexer.lex"
+#line 241 "./util/configlexer.lex"
 { YDVAR(1, VAR_CACHE_MAX_TTL) }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 245 "./util/configlexer.lex"
+#line 242 "./util/configlexer.lex"
 { YDVAR(1, VAR_CACHE_MIN_TTL) }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 246 "./util/configlexer.lex"
+#line 243 "./util/configlexer.lex"
 { YDVAR(1, VAR_INFRA_HOST_TTL) }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 247 "./util/configlexer.lex"
+#line 244 "./util/configlexer.lex"
 { YDVAR(1, VAR_INFRA_LAME_TTL) }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 248 "./util/configlexer.lex"
+#line 245 "./util/configlexer.lex"
 { YDVAR(1, VAR_INFRA_CACHE_SLABS) }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 249 "./util/configlexer.lex"
+#line 246 "./util/configlexer.lex"
 { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 250 "./util/configlexer.lex"
+#line 247 "./util/configlexer.lex"
 { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 251 "./util/configlexer.lex"
+#line 248 "./util/configlexer.lex"
 { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 252 "./util/configlexer.lex"
+#line 249 "./util/configlexer.lex"
 { YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 253 "./util/configlexer.lex"
+#line 250 "./util/configlexer.lex"
 { YDVAR(1, VAR_DELAY_CLOSE) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 254 "./util/configlexer.lex"
+#line 251 "./util/configlexer.lex"
 { YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 255 "./util/configlexer.lex"
+#line 252 "./util/configlexer.lex"
 { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 256 "./util/configlexer.lex"
+#line 253 "./util/configlexer.lex"
 { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 257 "./util/configlexer.lex"
+#line 254 "./util/configlexer.lex"
 { YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 258 "./util/configlexer.lex"
+#line 255 "./util/configlexer.lex"
 { YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 259 "./util/configlexer.lex"
+#line 256 "./util/configlexer.lex"
 { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 260 "./util/configlexer.lex"
+#line 257 "./util/configlexer.lex"
 { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 261 "./util/configlexer.lex"
+#line 258 "./util/configlexer.lex"
 { YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 262 "./util/configlexer.lex"
+#line 259 "./util/configlexer.lex"
 { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 263 "./util/configlexer.lex"
+#line 260 "./util/configlexer.lex"
 { YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 264 "./util/configlexer.lex"
+#line 261 "./util/configlexer.lex"
 { YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 265 "./util/configlexer.lex"
+#line 262 "./util/configlexer.lex"
 { YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 266 "./util/configlexer.lex"
+#line 263 "./util/configlexer.lex"
 { YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 267 "./util/configlexer.lex"
+#line 264 "./util/configlexer.lex"
 { YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 268 "./util/configlexer.lex"
+#line 265 "./util/configlexer.lex"
 { YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 269 "./util/configlexer.lex"
+#line 266 "./util/configlexer.lex"
 { YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 270 "./util/configlexer.lex"
+#line 267 "./util/configlexer.lex"
 { YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 271 "./util/configlexer.lex"
+#line 268 "./util/configlexer.lex"
 { YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 272 "./util/configlexer.lex"
+#line 269 "./util/configlexer.lex"
 { YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 273 "./util/configlexer.lex"
+#line 270 "./util/configlexer.lex"
 { YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 274 "./util/configlexer.lex"
+#line 271 "./util/configlexer.lex"
 { YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 275 "./util/configlexer.lex"
+#line 272 "./util/configlexer.lex"
 { YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 276 "./util/configlexer.lex"
+#line 273 "./util/configlexer.lex"
 { YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 277 "./util/configlexer.lex"
+#line 274 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 278 "./util/configlexer.lex"
+#line 275 "./util/configlexer.lex"
 { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 279 "./util/configlexer.lex"
+#line 276 "./util/configlexer.lex"
 { YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 280 "./util/configlexer.lex"
+#line 277 "./util/configlexer.lex"
 { YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 281 "./util/configlexer.lex"
+#line 278 "./util/configlexer.lex"
 { YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 282 "./util/configlexer.lex"
+#line 279 "./util/configlexer.lex"
 { YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 283 "./util/configlexer.lex"
+#line 280 "./util/configlexer.lex"
 { YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 284 "./util/configlexer.lex"
+#line 281 "./util/configlexer.lex"
 { YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 285 "./util/configlexer.lex"
+#line 282 "./util/configlexer.lex"
 { YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 286 "./util/configlexer.lex"
+#line 283 "./util/configlexer.lex"
 { YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 287 "./util/configlexer.lex"
+#line 284 "./util/configlexer.lex"
 { YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 288 "./util/configlexer.lex"
+#line 285 "./util/configlexer.lex"
 { YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 289 "./util/configlexer.lex"
+#line 286 "./util/configlexer.lex"
 { YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 290 "./util/configlexer.lex"
+#line 287 "./util/configlexer.lex"
 { YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 291 "./util/configlexer.lex"
+#line 288 "./util/configlexer.lex"
 { YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 292 "./util/configlexer.lex"
+#line 289 "./util/configlexer.lex"
 { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 293 "./util/configlexer.lex"
+#line 290 "./util/configlexer.lex"
 { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 294 "./util/configlexer.lex"
+#line 291 "./util/configlexer.lex"
 { YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 295 "./util/configlexer.lex"
+#line 292 "./util/configlexer.lex"
 { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 296 "./util/configlexer.lex"
+#line 293 "./util/configlexer.lex"
 { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 297 "./util/configlexer.lex"
+#line 294 "./util/configlexer.lex"
 { YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 298 "./util/configlexer.lex"
+#line 295 "./util/configlexer.lex"
 { YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 299 "./util/configlexer.lex"
+#line 296 "./util/configlexer.lex"
 { YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 300 "./util/configlexer.lex"
+#line 297 "./util/configlexer.lex"
 { YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 301 "./util/configlexer.lex"
+#line 298 "./util/configlexer.lex"
 { YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 302 "./util/configlexer.lex"
+#line 299 "./util/configlexer.lex"
 { 
                                  YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 304 "./util/configlexer.lex"
+#line 301 "./util/configlexer.lex"
 { YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 305 "./util/configlexer.lex"
+#line 302 "./util/configlexer.lex"
 { YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 306 "./util/configlexer.lex"
+#line 303 "./util/configlexer.lex"
 { YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 307 "./util/configlexer.lex"
+#line 304 "./util/configlexer.lex"
 { YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 308 "./util/configlexer.lex"
+#line 305 "./util/configlexer.lex"
 { YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 309 "./util/configlexer.lex"
+#line 306 "./util/configlexer.lex"
 { YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 310 "./util/configlexer.lex"
+#line 307 "./util/configlexer.lex"
 { YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 311 "./util/configlexer.lex"
+#line 308 "./util/configlexer.lex"
 { YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 312 "./util/configlexer.lex"
+#line 309 "./util/configlexer.lex"
 { YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 313 "./util/configlexer.lex"
+#line 310 "./util/configlexer.lex"
 { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 314 "./util/configlexer.lex"
+#line 311 "./util/configlexer.lex"
 { YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 315 "./util/configlexer.lex"
+#line 312 "./util/configlexer.lex"
 { YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 316 "./util/configlexer.lex"
+#line 313 "./util/configlexer.lex"
 { YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 317 "./util/configlexer.lex"
+#line 314 "./util/configlexer.lex"
 { YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 318 "./util/configlexer.lex"
+#line 315 "./util/configlexer.lex"
 { YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 319 "./util/configlexer.lex"
+#line 316 "./util/configlexer.lex"
 { YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 320 "./util/configlexer.lex"
+#line 317 "./util/configlexer.lex"
 { YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 321 "./util/configlexer.lex"
+#line 318 "./util/configlexer.lex"
 { YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 322 "./util/configlexer.lex"
+#line 319 "./util/configlexer.lex"
 { YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 323 "./util/configlexer.lex"
+#line 320 "./util/configlexer.lex"
 { YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 324 "./util/configlexer.lex"
+#line 321 "./util/configlexer.lex"
 { YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 325 "./util/configlexer.lex"
+#line 322 "./util/configlexer.lex"
 { YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 326 "./util/configlexer.lex"
+#line 323 "./util/configlexer.lex"
 { YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 327 "./util/configlexer.lex"
+#line 324 "./util/configlexer.lex"
 { YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 328 "./util/configlexer.lex"
+#line 325 "./util/configlexer.lex"
 { YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 329 "./util/configlexer.lex"
+#line 326 "./util/configlexer.lex"
 { YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 330 "./util/configlexer.lex"
+#line 327 "./util/configlexer.lex"
 { YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 331 "./util/configlexer.lex"
+#line 328 "./util/configlexer.lex"
 { YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 332 "./util/configlexer.lex"
+#line 329 "./util/configlexer.lex"
 { YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 129:
 /* rule 129 can match eol */
 YY_RULE_SETUP
-#line 333 "./util/configlexer.lex"
+#line 330 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
 case 130:
 YY_RULE_SETUP
-#line 336 "./util/configlexer.lex"
+#line 333 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 337 "./util/configlexer.lex"
+#line 334 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2679,19 +2676,19 @@ case YY_STATE_EOF(quotedstring):
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 342 "./util/configlexer.lex"
+#line 339 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
 case 132:
 /* rule 132 can match eol */
 YY_RULE_SETUP
-#line 343 "./util/configlexer.lex"
+#line 340 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 345 "./util/configlexer.lex"
+#line 342 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2706,11 +2703,11 @@ YY_RULE_SETUP
 /* Single Quoted strings. Strip leading and ending quotes */
 case 134:
 YY_RULE_SETUP
-#line 357 "./util/configlexer.lex"
+#line 354 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 358 "./util/configlexer.lex"
+#line 355 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2719,19 +2716,19 @@ case YY_STATE_EOF(singlequotedstr):
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 363 "./util/configlexer.lex"
+#line 360 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
 case 136:
 /* rule 136 can match eol */
 YY_RULE_SETUP
-#line 364 "./util/configlexer.lex"
+#line 361 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 366 "./util/configlexer.lex"
+#line 363 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2746,12 +2743,12 @@ YY_RULE_SETUP
 /* include: directive */
 case 138:
 YY_RULE_SETUP
-#line 378 "./util/configlexer.lex"
+#line 375 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 380 "./util/configlexer.lex"
+#line 377 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
@@ -2759,23 +2756,23 @@ case YY_STATE_EOF(include):
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 384 "./util/configlexer.lex"
+#line 381 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 140:
 /* rule 140 can match eol */
 YY_RULE_SETUP
-#line 385 "./util/configlexer.lex"
+#line 382 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 386 "./util/configlexer.lex"
+#line 383 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 387 "./util/configlexer.lex"
+#line 384 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -2783,7 +2780,7 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 392 "./util/configlexer.lex"
+#line 389 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
@@ -2791,19 +2788,19 @@ case YY_STATE_EOF(include_quoted):
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 396 "./util/configlexer.lex"
+#line 393 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
 case 144:
 /* rule 144 can match eol */
 YY_RULE_SETUP
-#line 397 "./util/configlexer.lex"
+#line 394 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 399 "./util/configlexer.lex"
+#line 396 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2813,7 +2810,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 405 "./util/configlexer.lex"
+#line 402 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -2827,31 +2824,31 @@ case YY_STATE_EOF(val):
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 416 "./util/configlexer.lex"
+#line 413 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 420 "./util/configlexer.lex"
+#line 417 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 424 "./util/configlexer.lex"
+#line 421 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 428 "./util/configlexer.lex"
+#line 425 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2853 "<stdout>"
+#line 2850 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3806,7 +3803,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 428 "./util/configlexer.lex"
+#line 425 "./util/configlexer.lex"
 
 
 
index e33086879f7bd312eb36cd11040246f6b72122ec..39dade0d23981e1c1563a308aabaeceab4b70165 100644 (file)
@@ -7,9 +7,6 @@
  * See LICENSE for the license.
  *
  */
-
-#include "config.h"
-
 #include <ctype.h>
 #include <string.h>
 #include <strings.h>
index 8f72e145e8cdb8683f23a33d0d8224405daf34a1..ccbd0d7483819e1c6d5a9e672aa2022592f93249 100644 (file)
@@ -192,6 +192,21 @@ struct msgreply_entry {
        struct lruhash_entry entry;
 };
 
+/**
+ * Constructor for replyinfo.
+ * @param region: where to allocate the results, pass NULL to use malloc.
+ * @param flags: flags for the replyinfo.
+ * @param qd: qd count
+ * @param ttl: TTL of replyinfo
+ * @param prettl: prefetch ttl
+ * @param an: an count
+ * @param ns: ns count
+ * @param ar: ar count
+ * @param total: total rrset count (presumably an+ns+ar).
+ * @param sec: security status of the reply info.
+ * @return the reply_info base struct with the array for putting the rrsets
+ * in.  The array has been zeroed.  Returns NULL on malloc failure.
+ */
 struct reply_info*
 construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd,
                time_t ttl, time_t prettl, size_t an, size_t ns, size_t ar,
index 4b0ef80cd74710eafa97641ecb584d1a54aae897..5d7990a2b0b1bac8dfeaa59581b2afb904224a87 100644 (file)
@@ -189,7 +189,7 @@ enum sec_status {
  *     o base struct
  *     o rr_len size_t array
  *     o rr_data uint8_t* array
- *     o rr_ttl uint32_t array (after size_t and ptrs because those may be
+ *     o rr_ttl time_t array (after size_t and ptrs because those may be
  *             64bit and this array before those would make them unaligned).
  *             Since the stuff before is 32/64bit, rr_ttl is 32 bit aligned.
  *     o rr_data rdata wireformats