]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- removed base_port.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 Apr 2008 14:10:16 +0000 (14:10 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 Apr 2008 14:10:16 +0000 (14:10 +0000)
      - created 256-port ephemeral space for the OS, 59802 available.

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

17 files changed:
daemon/daemon.c
daemon/unbound.c
daemon/worker.c
doc/Changelog
doc/example.conf
doc/unbound.conf.5
libunbound/libworker.c
services/outside_network.c
services/outside_network.h
testcode/fake_event.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index 0a0fd37e5541b796f248d06a6a16b4f890289dd7..7c0c6c71ca3c8cabfea0a90d8f22d8f4332cedf2 100644 (file)
@@ -228,6 +228,7 @@ daemon_create_workers(struct daemon* daemon)
        if(!shufport)
                fatal_exit("out of memory during daemon init");
        numport = daemon_get_shufport(daemon, shufport);
+       verbose(VERB_ALGO, "total of %d outgoing ports available", numport);
        
        daemon->num = daemon->cfg->num_threads;
        daemon->workers = (struct worker**)calloc((size_t)daemon->num, 
index 17b837c96612291e83e5aee1e3b8faed6590a880..7f352696ffeefeae0f136955fe7f0baf60728060 100644 (file)
@@ -91,9 +91,7 @@ checkrlimits(struct config_file* cfg)
                        (int)cfg->incoming_num_tcp:0));
        size_t ifs = (size_t)(cfg->num_ifs==0?1:cfg->num_ifs);
        size_t listen_num = list*ifs;
-       size_t out_ifs = (size_t)(cfg->num_out_ifs==0?
-               ( (cfg->do_ip4?1:0) + (cfg->do_ip6?1:0) ) :cfg->num_out_ifs);
-       size_t outudpnum = cfg->outgoing_num_ports*out_ifs;
+       size_t outudpnum = (size_t)cfg->outgoing_num_ports;
        size_t outtcpnum = cfg->outgoing_num_tcp;
        size_t misc = 4; /* logfile, pidfile, stdout... */
        size_t perthread_noudp = listen_num + outtcpnum + 
@@ -109,8 +107,6 @@ checkrlimits(struct config_file* cfg)
        size_t avail;
        struct rlimit rlim;
 
-       verbose(VERB_ALGO, "%d ports available in config",
-               cfg_scan_ports(cfg->outgoing_avail_ports, 65536));
        if(getrlimit(RLIMIT_NOFILE, &rlim) < 0) {
                log_warn("getrlimit: %s", strerror(errno));
                return;
@@ -127,8 +123,7 @@ checkrlimits(struct config_file* cfg)
                                (unsigned)avail, (unsigned)total+10);
                        cfg->outgoing_num_ports = (int)((avail 
                                - numthread*perthread_noudp 
-                               - 10 /* safety margin */)
-                               /(numthread*out_ifs));
+                               - 10 /* safety margin */) /numthread);
                        log_warn("continuing with less udp ports: %u",
                                cfg->outgoing_num_ports);
                        log_warn("increase ulimit or decrease threads, ports in config to remove this warning");
index 578c5355c6370c5a1dac6273212fbaf7714049d0..23ad6533873f3ed56b1bd6c5a5de0356c97e179a 100644 (file)
@@ -933,7 +933,6 @@ worker_init(struct worker* worker, struct config_file *cfg,
        struct listen_port* ports, int do_sigs)
 {
        unsigned int seed;
-       int startport;
        worker->need_to_exit = 0;
        worker->base = comm_base_create();
        if(!worker->base) {
@@ -979,12 +978,10 @@ worker_init(struct worker* worker, struct config_file *cfg,
                worker_delete(worker);
                return 0;
        }
-       startport  = cfg->outgoing_base_port + 
-               cfg->outgoing_num_ports * worker->thread_num;
        worker->back = outside_network_create(worker->base,
                cfg->msg_buffer_size, (size_t)cfg->outgoing_num_ports, 
                cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, 
-               startport, cfg->do_tcp?cfg->outgoing_num_tcp:0, 
+               cfg->do_tcp?cfg->outgoing_num_tcp:0, 
                worker->daemon->env->infra_cache, worker->rndstate,
                cfg->use_caps_bits_for_id, worker->ports, worker->numports);
        if(!worker->back) {
index 192fd492cef6fec20302c29df3511abc3bcb80be..45bbbcce93a38c2e67ce0b0170267de5ddc3a676 100644 (file)
@@ -1,6 +1,8 @@
 11 April 2008: Wouter
        - random port selection out of the configged ports.
        - fixup threadsafety for libevent-1.4.3+ (event_base_get_method).
+       - removed base_port.
+       - created 256-port ephemeral space for the OS, 59802 available.
 
 10 April 2008: Wouter
        - --with-libevent works with latest libevent 1.4.99-trunk.
index c68a2dc55285c0d91ad1b9069f2309bbb266a702..2d6e42af9477fe3e52c5b827a25734609ecfaadb 100644 (file)
@@ -48,15 +48,8 @@ server:
        # outgoing-interface: 2001:DB8::5
        # outgoing-interface: 2001:DB8::6
 
-       # unbound needs to send packets to authoritative nameservers.
-       # it uses a range of ports for that.
-       # the start number of the port range
-       # outgoing-port: 1053
-
-       # number of port to allocate per thread, determines the size of the
-       # port range. A larger port range gives more resistance to certain
-       # spoof attacks, as it gets harder to guess which port is used. 
-       # But also takes more system resources (for open sockets).
+       # number of ports to allocate per thread, determines the size of the
+       # port range that can be open simultaneously. 
        # outgoing-range: 256
        
        # permit unbound to use this port number or port range for
index 8cd7594e8e78987053cefb95a5ff3ae822f1a402..5d43de9ce3b32ac41a2a994d93e546ee627ef193 100644 (file)
@@ -122,20 +122,16 @@ and
 lines, the interfaces are then used for both purposes. Outgoing queries are 
 sent via a random outgoing interface to counter spoofing.
 .TP
-.B outgoing\-port: \fI<port number>
-The starting port number where the outgoing query port range is allocated.
-Default is 1053.
-.TP
 .B outgoing\-range: \fI<number>
-Number of ports to open. This number is opened per thread for every outgoing
-query interface. Must be at least 1. Default is 256.
-Larger numbers give more protection against spoofing attempts, but need
-extra resources from the operating system.
+Number of ports to open. This number of file descriptors can be opened per 
+thread. Must be at least 1. Default is 256. Larger numbers need extra 
+resources from the operating system.
 .TP
 .B outgoing\-port\-permit: \fI<port number or range>
 Permit unbound to open this port or range of ports for use to send queries.
-Make sure these ports are not needed by other daemons. By default only
-ports above 1024 that have not been assigned by IANA are used.
+A larger number of permitted outgoing ports increases resilience against
+spoofing attempts. Make sure these ports are not needed by other daemons. 
+By default only ports above 1024 that have not been assigned by IANA are used.
 Give a port number or a range of the form "low-high", without spaces.
 .TP
 .B outgoing\-port\-avoid: \fI<port number or range>
index 01c4067b201ee11f4d5440bc4ec6d1e4cc14a4c8..151b15c92da213934461f73a53c5bcfbb2b31666 100644 (file)
@@ -158,7 +158,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg)
        }
        w->back = outside_network_create(w->base, cfg->msg_buffer_size,
                (size_t)cfg->outgoing_num_ports, cfg->out_ifs,
-               cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, -1, 
+               cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, 
                cfg->do_tcp?cfg->outgoing_num_tcp:0,
                w->env->infra_cache, w->env->rnd, cfg->use_caps_bits_for_id,
                ports, numports);
index 6756b57743c1146d4ad2444728ae74145fe568ca..586400e1c123658ec05c71c7886e5433fc7c11fd 100644 (file)
@@ -62,7 +62,7 @@
 /** number of times to retry making a random ID that is unique. */
 #define MAX_ID_RETRY 1000
 /** number of times to retry finding interface, port that can be opened. */
-#define MAX_PORT_RETRY 1000
+#define MAX_PORT_RETRY 10000
 /** number of retries on outgoing UDP queries */
 #define OUTBOUND_UDP_RETRY 1
 
@@ -422,7 +422,7 @@ static int setup_if(struct port_if* pif, const char* addrstr,
 struct outside_network* 
 outside_network_create(struct comm_base *base, size_t bufsize, 
        size_t num_ports, char** ifs, int num_ifs, int do_ip4, 
-       int do_ip6, int port_base, size_t num_tcp, struct infra_cache* infra,
+       int do_ip6, size_t num_tcp, struct infra_cache* infra,
        struct ub_randstate* rnd, int use_caps_for_id, int* availports, 
        int numavailports)
 {
index 9c304efc68997122106382a80dd2d32afcb47b67..bb3aa8840f329b63b387e294b675b3c09542b067 100644 (file)
@@ -320,8 +320,6 @@ struct serviced_query {
  * @param num_ifs: number of names in array ifs.
  * @param do_ip4: service IP4.
  * @param do_ip6: service IP6.
- * @param port_base: if -1 system assigns ports, otherwise try to get
- *    the ports numbered from this starting number.
  * @param num_tcp: number of outgoing tcp buffers to preallocate.
  * @param infra: pointer to infra cached used for serviced queries.
  * @param rnd: stored to create random numbers for serviced queries.
@@ -332,9 +330,9 @@ struct serviced_query {
  */
 struct outside_network* outside_network_create(struct comm_base* base,
        size_t bufsize, size_t num_ports, char** ifs, int num_ifs,
-       int do_ip4, int do_ip6, int port_base, size_t num_tcp
-       struct infra_cache* infra, struct ub_randstate* rnd,
-       int use_caps_for_id, int* availports, int numavailports);
+       int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache* infra
+       struct ub_randstate* rnd, int use_caps_for_id, int* availports, 
+       int numavailports);
 
 /**
  * Delete outside_network structure.
index ed1105a5fd3dd989b34514d56b20663a80902ea7..f68772918625b79208576a621a708989678de047 100644 (file)
@@ -684,8 +684,8 @@ struct outside_network*
 outside_network_create(struct comm_base* base, size_t bufsize, 
        size_t ATTR_UNUSED(num_ports), char** ATTR_UNUSED(ifs), 
        int ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4), 
-       int ATTR_UNUSED(do_ip6), int ATTR_UNUSED(port_base),
-       size_t ATTR_UNUSED(num_tcp), struct infra_cache* ATTR_UNUSED(infra),
+       int ATTR_UNUSED(do_ip6), size_t ATTR_UNUSED(num_tcp), 
+       struct infra_cache* ATTR_UNUSED(infra),
        struct ub_randstate* ATTR_UNUSED(rnd), 
        int ATTR_UNUSED(use_caps_for_id), int* ATTR_UNUSED(availports),
        int ATTR_UNUSED(numavailports))
index 1e231612f2952fdbd320ec8c46ccb91571c4f0cc..36e0b8b8e27809f347dc15631f540beee6d54f4d 100644 (file)
@@ -82,7 +82,6 @@ config_create()
        cfg->do_udp = 1;
        cfg->do_tcp = 1;
        cfg->use_syslog = 1;
-       cfg->outgoing_base_port = cfg->port + 2000;
        cfg->outgoing_num_ports = 256;
        cfg->outgoing_num_tcp = 10;
        cfg->incoming_num_tcp = 10;
@@ -213,12 +212,15 @@ int config_set_option(struct config_file* cfg, const char* opt,
        } else if(strcmp(opt, "do-tcp:") == 0) {
                IS_YES_OR_NO;
                cfg->do_tcp = (strcmp(val, "yes") == 0);
-       } else if(strcmp(opt, "outgoing-port:") == 0) {
-               IS_NUMBER_OR_ZERO;
-               cfg->outgoing_base_port = atoi(val);
        } else if(strcmp(opt, "outgoing-range:") == 0) {
                IS_NONZERO_NUMBER;
                cfg->outgoing_num_ports = atoi(val);
+       } else if(strcmp(opt, "outgoing-port-permit:") == 0) {
+               return cfg_mark_ports(val, 1, 
+                       cfg->outgoing_avail_ports, 65536);
+       } else if(strcmp(opt, "outgoing-port-avoid:") == 0) {
+               return cfg_mark_ports(val, 0, 
+                       cfg->outgoing_avail_ports, 65536);
        } else if(strcmp(opt, "outgoing-num-tcp:") == 0) {
                IS_NUMBER_OR_ZERO;
                cfg->outgoing_num_tcp = (size_t)atoi(val);
@@ -465,6 +467,10 @@ init_outgoing_availports(int* a, int num)
        for(i=1024; i<num; i++) {
                a[i] = i;
        }
+       /* create empty spot at 49152 to keep ephemeral ports available 
+        * to other programs */
+       for(i=49152; i<49152+256; i++)
+               a[i] = 0;
        /* pick out all the IANA assigned ports */
        for(i=0; iana_assigned[i]!=-1; i++) {
                if(iana_assigned[i] < num)
index 5818350950d71d5cbee38805489297ccbb6ea95f..06dbe31c5bb7e0c485f1b1a9658567760bf6026a 100644 (file)
@@ -72,9 +72,7 @@ struct config_file {
        /** do tcp query support. */
        int do_tcp;
 
-       /** outgoing port range base number */
-       int outgoing_base_port;
-       /** outgoing port range number of ports (per thread, per if) */
+       /** outgoing port range number of ports (per thread) */
        int outgoing_num_ports;
        /** number of outgoing tcp buffers per (per thread) */
        size_t outgoing_num_tcp;
index 72dde41efbf5c1763f49614c486e7219e285c1cd..819212a2818fedd177bba4652d17dc8294a3832a 100644 (file)
@@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 93
-#define YY_END_OF_BUFFER 94
+#define YY_NUM_RULES 92
+#define YY_END_OF_BUFFER 93
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -374,97 +374,97 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[808] =
+static yyconst flex_int16_t yy_accept[807] =
     {   0,
-        1,    1,   77,   77,   81,   81,   85,   85,   89,   89,
-       94,   92,    1,   75,   76,    2,   80,   93,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   77,   78,   93,   79,   93,
-       81,   82,   83,   93,   88,   85,   86,   87,   93,   89,
-       90,   91,   93,   92,    0,    1,    2,    2,    2,    2,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   77,    0,
-       81,    0,   88,    0,   85,   89,    0,   92,   92,   92,
-
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   46,   92,   92,   92,   92,    6,   92,   92,   92,
-
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   21,   92,   92,   13,   14,
-       92,   16,   15,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,    3,   92,   92,
-
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   84,   92,
-       92,   92,   92,   92,   92,   92,   92,   24,   92,   92,
-       92,   92,   92,   92,   25,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   58,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   57,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-
-       92,   92,   92,   92,   22,   92,   92,   92,   92,   92,
-       92,   92,   92,   23,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       18,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   47,   48,   45,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,    5,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   72,
-       71,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       26,   92,   92,   92,   92,   92,   92,   70,   92,   92,
-
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   42,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,    4,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   17,   92,   50,
-       51,   49,   92,   92,   92,   92,   56,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       62,   92,   92,   92,   92,   92,   92,   92,   92,   32,
-       92,   92,   92,   92,   92,   55,   92,   92,   92,   92,
-
-       92,   92,   92,   92,   92,   59,   92,   92,   92,   92,
-       92,   92,   92,    7,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   64,   92,   92,   92,   92,   54,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   33,   34,
-       92,   67,   92,   92,   28,   92,   92,   92,   92,   92,
-       92,    8,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   68,   27,   29,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   44,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   12,
-
-       92,   92,   92,   92,   92,   92,   11,   92,   92,   30,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   35,   92,   92,
-       92,   92,   92,   31,   92,   92,   92,   60,   61,   92,
-       92,   63,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   19,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92,   92,   92,   20,   92,
-       10,   92,   92,   73,   39,   92,   92,   66,   52,   92,
-       92,   41,   40,   92,   36,   92,    9,   92,   65,   92,
-       92,   92,   37,   92,   74,   92,   53,   43,   38,   92,
-
-       92,   92,   92,   92,   92,   69,    0
+        1,    1,   76,   76,   80,   80,   84,   84,   88,   88,
+       93,   91,    1,   74,   75,    2,   79,   92,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   76,   77,   92,   78,   92,
+       80,   81,   82,   92,   87,   84,   85,   86,   92,   88,
+       89,   90,   92,   91,    0,    1,    2,    2,    2,    2,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   76,    0,
+       80,    0,   87,    0,   84,   88,    0,   91,   91,   91,
+
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   45,   91,   91,   91,   91,    6,   91,   91,   91,
+
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   20,   91,   91,   12,   13,
+       91,   15,   14,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,    3,   91,   91,
+
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   83,   91,
+       91,   91,   91,   91,   91,   91,   91,   23,   91,   91,
+       91,   91,   91,   91,   24,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   57,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   56,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+
+       91,   91,   91,   91,   21,   91,   91,   91,   91,   91,
+       91,   91,   91,   22,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       17,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   46,   47,   44,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,    5,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   71,
+       70,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       25,   91,   91,   91,   91,   91,   91,   69,   91,   91,
+
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   41,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,    4,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   16,   91,   49,
+       50,   48,   91,   91,   91,   91,   55,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       61,   91,   91,   91,   91,   91,   91,   91,   91,   31,
+       91,   91,   91,   91,   91,   54,   91,   91,   91,   91,
+
+       91,   91,   91,   91,   91,   58,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   63,   91,   91,   91,   91,   53,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   32,   33,   91,
+       66,   91,   91,   27,   91,   91,   91,   91,   91,   91,
+        7,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   67,   26,   28,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   43,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   11,   91,
+
+       91,   91,   91,   91,   91,   10,   91,   91,   29,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   34,   91,   91,   91,
+       91,   91,   30,   91,   91,   91,   59,   60,   91,   91,
+       62,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   18,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   19,   91,    9,
+       91,   91,   72,   38,   91,   91,   65,   51,   91,   91,
+       40,   39,   91,   35,   91,    8,   91,   64,   91,   91,
+       91,   36,   91,   73,   91,   52,   42,   37,   91,   91,
+
+       91,   91,   91,   91,   68,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -507,18 +507,18 @@ static yyconst flex_int32_t yy_meta[39] =
         1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[819] =
+static yyconst flex_int16_t yy_base[818] =
     {   0,
         0,    0,   36,   39,   43,   50,   62,   74,   55,   67,
-     1665, 1651,   49, 1666, 1666,   81, 1666,   88,   32,   83,
+     1663, 1649,   49, 1664, 1664,   81, 1664,   88,   32,   83,
        76,   78,   60,   89,   94,   86,   87,   95,   88,   97,
-      103,  104,  112,   98,  121, 1650, 1666, 1666, 1666,   57,
-     1649, 1666, 1666,  116, 1648, 1658, 1666, 1666,  136, 1646,
-     1666, 1666,  127, 1645,  142,  146,    0,  149,    0,    0,
+      103,  104,  112,   98,  121, 1648, 1664, 1664, 1664,   57,
+     1647, 1664, 1664,  116, 1646, 1656, 1664, 1664,  136, 1644,
+     1664, 1664,  127, 1643,  142,  146,    0,  149,    0,    0,
       142,  144,  137,  146,  153,  150,  151,  152,  155,  158,
       157,  159,  165,  171,  170,  172,  173,  175,  174,  176,
-      114,  180,  185,  183,  187,  188,  195,  194, 1644,  207,
-     1643,  210, 1642,  221, 1652, 1640,  211,  209,  208,  217,
+      114,  180,  185,  183,  187,  188,  195,  194, 1642,  207,
+     1641,  210, 1640,  221, 1650, 1638,  211,  209,  208,  217,
 
       218,  232,  220,  221,  219,  222,  226,  227,  228,  234,
       238,  243,  230,  253,  254,  260,  189,  256,  246,  247,
@@ -529,7 +529,7 @@ static yyconst flex_int16_t yy_base[819] =
       348,  346,  344,  350,  352,  369,  356,  355,  357,  359,
       360,  361,  362,  376,  366,  377,  378,  381,  386,  387,
       388,  390,  391,  406,  389,  402,  409,  405,  407,  410,
-      413, 1639,  411,  415,  417,  418, 1638,  419,  425,  421,
+      413, 1637,  411,  415,  417,  418, 1636,  419,  425,  421,
 
       422,  433,  424,  437,  435,  428,  444,  439,  446,  447,
       448,  449,  450,  456,  460,  451,  462,  459,  464,  467,
@@ -537,165 +537,165 @@ static yyconst flex_int16_t yy_base[819] =
       484,  493,  498,  500,  502,  505,  512,  508,  513,  515,
       509,  511,  517,  519,  518,  530,  523,  531,  525,  532,
       538,  536,  540,  534,  541,  543,  545,  548,  551,  557,
-      547,  554,  558,  565,  560, 1637,  550,  566, 1636, 1635,
-      569, 1634, 1633,  575,  572,  573,  574,  577,  582,  586,
+      547,  554,  558,  565,  560, 1635,  550,  566, 1634, 1633,
+      569, 1632, 1631,  575,  572,  573,  574,  577,  582,  586,
       587,  584,  594,  589,  596,  599,  597,  603,  605,  606,
-      607,  609,  613,  610,  620,  614,  621, 1632,  616,  624,
+      607,  609,  613,  610,  620,  614,  621, 1630,  616,  624,
 
       623,  629,  630,  631,  637,  633,  634,  635,  638,  646,
       649,  639,  643,  648,  654,  650,  657,  659,  660,  661,
-      662,  665,  666,  668,  671,  672,  674,  676, 1631,  689,
-      688,  682,  686,  690,  694,  693,  696, 1630,  697,  701,
-      702,  704,  714,  708, 1629,  705,  716,  717,  710,  718,
+      662,  665,  666,  668,  671,  672,  674,  676, 1629,  689,
+      688,  682,  686,  690,  694,  693,  696, 1628,  697,  701,
+      702,  704,  714,  708, 1627,  705,  716,  717,  710,  718,
       721,  723,  722,  729,  735,  731,  733,  734,  736,  742,
-      740,  741,  743, 1628,  746,  753,  755,  747,  758,  760,
-      751,  761,  744,  766,  768,  769,  770,  771, 1627,  774,
+      740,  741,  743, 1626,  746,  753,  755,  747,  758,  760,
+      751,  761,  744,  766,  768,  769,  770,  771, 1625,  774,
       773,  772,  777,  793,  784,  794,  796,  790,  797,  804,
       800,  798,  806,  807,  808,  809,  811,  813,  818,  820,
 
-      822,  824,  826,  828, 1626,  836,  838,  842,  834,  840,
-      845,  841,  846, 1625,  847,  849,  848,  850,  851,  853,
+      822,  824,  826,  828, 1624,  836,  838,  842,  834,  840,
+      845,  841,  846, 1623,  847,  849,  848,  850,  851,  853,
       854,  855,  856,  861,  863,  867,  869,  880,  881,  878,
-     1624,  882,  884,  886,  888,  895,  889,  891,  892,  893,
-      896,  897,  898,  902,  903,  917, 1623, 1622, 1621,  915,
-      905,  904,  913,  921,  914,  922,  924,  925,  926, 1620,
+     1622,  882,  884,  886,  888,  895,  889,  891,  892,  893,
+      896,  897,  898,  902,  903,  917, 1621, 1620, 1619,  915,
+      905,  904,  913,  921,  914,  922,  924,  925,  926, 1618,
       930,  931,  932,  935,  936,  938,  940,  941,  943,  949,
-      939,  948,  951,  956,  960,  952,  961,  962,  963, 1619,
-     1618,  966,  965,  970,  978,  977,  969,  984,  985,  986,
-     1617,  992,  991,  989,  990,  993,  995, 1616,  998, 1001,
+      939,  948,  951,  956,  960,  952,  961,  962,  963, 1617,
+     1616,  966,  965,  970,  978,  977,  969,  984,  985,  986,
+     1615,  992,  991,  989,  990,  993,  995, 1614,  998, 1001,
 
      1003, 1004, 1006, 1010, 1014, 1019, 1021, 1023, 1027, 1029,
-     1030, 1615, 1036, 1037, 1020, 1035, 1043, 1039, 1040, 1041,
-     1042, 1045, 1046, 1048, 1049, 1051, 1053, 1056, 1614, 1062,
+     1030, 1613, 1036, 1037, 1020, 1035, 1043, 1039, 1040, 1041,
+     1042, 1045, 1046, 1048, 1049, 1051, 1053, 1056, 1612, 1062,
      1068, 1064, 1065, 1066, 1069, 1073, 1079, 1082, 1080, 1090,
-     1087, 1088, 1078, 1096, 1093, 1094, 1100, 1613, 1106, 1612,
-     1611, 1610, 1108, 1095,  776, 1110, 1609, 1097, 1112, 1101,
+     1087, 1088, 1078, 1096, 1093, 1094, 1100, 1611, 1106, 1610,
+     1609, 1608, 1108, 1095,  776, 1110, 1607, 1097, 1112, 1101,
      1104, 1118, 1119, 1120, 1122, 1123, 1132, 1124, 1128, 1135,
-     1136, 1126, 1138, 1145, 1142, 1139, 1146, 1151, 1152, 1153,
-     1608, 1154, 1155, 1162, 1156, 1163, 1168, 1166, 1174, 1607,
-     1175, 1169, 1176, 1177, 1178, 1606, 1182, 1180, 1184, 1186,
-
-     1189, 1191, 1193, 1200, 1195, 1605, 1201, 1203, 1204, 1207,
-     1208, 1209, 1210, 1604, 1216, 1217, 1218, 1220, 1221, 1223,
-     1227, 1229, 1228, 1603, 1230, 1234, 1244, 1246, 1602, 1231,
-     1247, 1233, 1248, 1251, 1239, 1255, 1256, 1259, 1601, 1600,
-     1262, 1599, 1266, 1268, 1598, 1270, 1276, 1272, 1274, 1258,
-     1275, 1597, 1277, 1281, 1284, 1285, 1286, 1287, 1288, 1291,
-     1292, 1278, 1293, 1294, 1296, 1304, 1300, 1307, 1308, 1310,
-     1316, 1314, 1315, 1318, 1593, 1589, 1588, 1319, 1320, 1322,
-     1325, 1327, 1330, 1331, 1334, 1332, 1336, 1341, 1342, 1587,
-     1340, 1343, 1350, 1351, 1352, 1356, 1359, 1360, 1361, 1583,
-
-     1358, 1362, 1364, 1366, 1371, 1372, 1582, 1373, 1374, 1578,
-     1384, 1378, 1387, 1389, 1391, 1394, 1385, 1400, 1402, 1399,
-     1396, 1404, 1405, 1406, 1407, 1408, 1409, 1577, 1410, 1416,
-     1419, 1421, 1415, 1576, 1422, 1423, 1426, 1570, 1542, 1429,
-     1427, 1541, 1435, 1437, 1438, 1439, 1441, 1442, 1443, 1444,
-     1446, 1448, 1540, 1457, 1451, 1458, 1461, 1464, 1465, 1466,
-     1472, 1474, 1449, 1475, 1478, 1482, 1483, 1487, 1539, 1489,
-     1538, 1492, 1493, 1537, 1535, 1495, 1496, 1534, 1533, 1484,
-     1500, 1532, 1530, 1506, 1529, 1507, 1528, 1509, 1499, 1497,
-     1513, 1516, 1469, 1518, 1381, 1519, 1013,  857,  491, 1502,
-
-     1522, 1510, 1523, 1525, 1527,  276, 1666, 1556, 1562, 1568,
-     1574,  136, 1580, 1586, 1592,   83, 1597, 1603
+     1136, 1126, 1138, 1144, 1140, 1142, 1146, 1147, 1148, 1150,
+     1606, 1154, 1152, 1165, 1159, 1155, 1167, 1169, 1176, 1605,
+     1177, 1170, 1162, 1172, 1178, 1604, 1179, 1183, 1185, 1186,
+
+     1189, 1191, 1193, 1200, 1194, 1603, 1196, 1203, 1204, 1206,
+     1207, 1208, 1209, 1215, 1216, 1217, 1219, 1220, 1221, 1227,
+     1228, 1226, 1602, 1229, 1231, 1232, 1243, 1601, 1242, 1244,
+     1234, 1245, 1249, 1251, 1252, 1254, 1256, 1600, 1599, 1259,
+     1598, 1264, 1268, 1597, 1270, 1276, 1272, 1265, 1261, 1274,
+     1596, 1278, 1275, 1281, 1284, 1285, 1286, 1287, 1289, 1290,
+     1291, 1293, 1294, 1300, 1302, 1304, 1305, 1295, 1308, 1314,
+     1310, 1311, 1315, 1592, 1588, 1587, 1318, 1320, 1326, 1319,
+     1327, 1331, 1328, 1335, 1332, 1338, 1340, 1343, 1586, 1341,
+     1349, 1351, 1350, 1352, 1358, 1359, 1361, 1362, 1582, 1342,
+
+     1363, 1366, 1367, 1372, 1373, 1581, 1374, 1375, 1577, 1385,
+     1377, 1388, 1379, 1391, 1393, 1386, 1400, 1398, 1401, 1394,
+     1402, 1403, 1404, 1406, 1407, 1408, 1576, 1411, 1413, 1420,
+     1417, 1415, 1575, 1423, 1422, 1425, 1569, 1541, 1428, 1426,
+     1540, 1434, 1436, 1437, 1438, 1440, 1441, 1442, 1443, 1445,
+     1447, 1539, 1456, 1450, 1457, 1460, 1463, 1464, 1465, 1471,
+     1473, 1448, 1474, 1477, 1481, 1482, 1486, 1538, 1488, 1537,
+     1491, 1492, 1536, 1534, 1494, 1495, 1533, 1532, 1483, 1499,
+     1531, 1529, 1505, 1528, 1506, 1527, 1508, 1498, 1496, 1512,
+     1515, 1468, 1517, 1339, 1518, 1013,  857,  491, 1501, 1521,
+
+     1509, 1522, 1524, 1526,  276, 1664, 1555, 1561, 1567, 1573,
+      136, 1579, 1585, 1591,   83, 1596, 1602
     } ;
 
-static yyconst flex_int16_t yy_def[819] =
+static yyconst flex_int16_t yy_def[818] =
     {   0,
-      807,    1,  808,  808,  809,  809,  810,  810,  811,  811,
-      807,  812,  807,  807,  807,  813,  807,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  814,  807,  807,  807,  814,
-      815,  807,  807,  815,  816,  807,  807,  807,  816,  817,
-      807,  807,  817,  812,  812,  807,  818,  813,  818,  813,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  814,  814,
-      815,  815,  816,  816,  807,  817,  817,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-
-      812,  812,  812,  812,  812,  812,    0,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807
+      806,    1,  807,  807,  808,  808,  809,  809,  810,  810,
+      806,  811,  806,  806,  806,  812,  806,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  813,  806,  806,  806,  813,
+      814,  806,  806,  814,  815,  806,  806,  806,  815,  816,
+      806,  806,  816,  811,  811,  806,  817,  812,  817,  812,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  813,  813,
+      814,  814,  815,  815,  806,  816,  816,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,    0,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806
     } ;
 
-static yyconst flex_int16_t yy_nxt[1705] =
+static yyconst flex_int16_t yy_nxt[1703] =
     {   0,
        12,   13,   14,   14,   15,   16,   17,   12,   12,   12,
        12,   12,   18,   19,   12,   20,   21,   12,   22,   12,
@@ -823,71 +823,71 @@ static yyconst flex_int16_t yy_nxt[1705] =
        55,  596,   55,  594,   55,  598,  588,  600,  597,  592,
        55,   55,   55,  599,   55,   55,   55,  605,   55,  604,
        55,  601,  602,  606,   55,  608,  603,   55,   55,  609,
-       55,   55,  613,  610,   55,  611,  614,   55,   55,  615,
-      616,  607,  617,   55,   55,   55,   55,   55,   55,  612,
-      618,  621,  622,  624,   55,   55,  623,  625,   55,  620,
-       55,   55,  619,  628,  627,  629,   55,   55,   55,   55,
-       55,  630,   55,  626,   55,  631,   55,  635,   55,  638,
-
-      639,   55,  640,   55,  636,   55,  632,   55,  637,  633,
-      634,  642,   55,   55,  645,   55,   55,  641,  644,   55,
-       55,   55,   55,  650,  649,  643,  648,  652,   55,   55,
-       55,  654,   55,   55,  646,   55,  647,  651,  656,   55,
-       55,   55,   55,   55,  660,   55,   55,  665,  658,  657,
-      659,   55,  655,  664,  653,  662,   55,  663,   55,   55,
-       55,  661,  666,   55,  667,  668,  670,   55,   55,  669,
-       55,   55,  671,  673,   55,  674,  672,  675,   55,  676,
-       55,  677,   55,  678,   55,  679,   55,   55,   55,   55,
-       55,  681,  682,   55,  683,  684,   55,   55,   55,   55,
-
-       55,  680,  690,   55,   55,   55,   55,  685,   55,  687,
-      688,  689,   55,  691,  686,  692,   55,  696,  694,   55,
-       55,  700,   55,  701,  693,  695,   55,   55,   55,  697,
-       55,   55,   55,  707,   55,  706,  698,   55,  699,   55,
-      702,  710,   55,   55,   55,  703,   55,  712,   55,  704,
-      705,  708,   55,   55,   55,   55,  709,  714,  715,  716,
-      718,  711,   55,   55,   55,  713,  717,  719,   55,  721,
-       55,   55,   55,   55,   55,  728,   55,  720,   55,  722,
-      723,  724,  725,   55,   55,   55,   55,  729,  726,  731,
-       55,  730,  727,   55,  732,  734,   55,   55,  733,   55,
-
-      736,   55,  738,   55,  737,  739,   55,  741,   55,  735,
-      740,   55,   55,  742,   55,  743,   55,   55,   55,   55,
-       55,   55,   55,  747,  745,  751,  744,   55,   55,  749,
-      753,   55,  746,   55,   55,   55,  755,  754,   55,   55,
-      750,   55,  759,  756,  748,  752,  757,   55,  760,   55,
-       55,   55,  761,   55,   55,   55,   55,  769,   55,  766,
-       55,   55,  758,   55,  763,  770,  764,  762,  771,   55,
-       55,  765,  774,   55,  768,  775,   55,   55,   55,  780,
-      767,   55,  772,  778,   55,  779,   55,   55,  776,  782,
-       55,  773,  781,  783,   55,   55,   55,  777,  785,   55,
-
-      784,   55,  786,  787,   55,   55,  789,   55,   55,   55,
-      788,   55,   55,  790,   55,  791,  792,  793,   55,   55,
-      795,   55,   55,  794,  797,   55,  796,  798,   55,  799,
-       55,   55,  800,  801,   55,   55,  803,   55,  806,   55,
-       55,   55,   55,  802,   55,   55,   55,   55,  804,   55,
-       55,   55,   55,   55,   55,  805,   36,   36,   36,   36,
-       36,   36,   41,   41,   41,   41,   41,   41,   45,   45,
-       45,   45,   45,   45,   50,   50,   50,   50,   50,   50,
-       58,   58,   55,   58,   58,   58,   89,   89,   55,   55,
-       55,   89,   91,   91,   55,   55,   91,   96,   96,   55,
-
-       55,   55,   96,   59,   59,   55,   59,   59,   59,   55,
+       55,  613,   55,  610,   55,  611,   55,  614,   55,   55,
+       55,  607,   55,  615,   55,  616,   55,   55,  620,  612,
+      617,   55,  621,  622,   55,  619,  623,   55,  618,   55,
+      624,   55,   55,  626,   55,  625,  627,  628,   55,   55,
+       55,   55,  631,  629,  634,   55,  630,   55,   55,  637,
+
+      638,   55,  639,   55,  632,   55,   55,  635,   55,  636,
+      633,  641,   55,  643,  644,   55,   55,  640,   55,   55,
+       55,   55,  649,  648,  642,  647,  651,   55,   55,   55,
+      653,   55,   55,   55,  645,  646,  650,  655,   55,   55,
+       55,   55,  659,   55,   55,  662,   55,  656,  657,  658,
+      663,  654,  661,  652,   55,   55,   55,   55,  664,  665,
+      660,   55,  667,   55,   55,  666,   55,  668,   55,  670,
+      672,   55,  673,   55,  671,  674,   55,   55,  669,  675,
+       55,  676,   55,  677,   55,  678,   55,   55,   55,  683,
+       55,  681,  679,   55,  680,  682,   55,   55,   55,   55,
+
+      689,   55,   55,   55,  684,   55,   55,   55,  686,  687,
+      688,  690,   55,  685,   55,  695,   55,   55,  693,  699,
+       55,  700,   55,   55,  692,  698,   55,   55,  691,  694,
+       55,   55,   55,  696,  697,  705,  701,  706,   55,   55,
+       55,  702,  709,   55,   55,  707,  703,   55,  711,  704,
+       55,   55,   55,   55,   55,   55,  708,  714,  710,  713,
+      715,   55,   55,   55,   55,  712,  717,  716,  718,  720,
+       55,   55,  725,   55,   55,   55,  719,  727,   55,   55,
+      722,  721,  723,  724,   55,   55,   55,   55,  728,   55,
+      730,   55,  729,  726,  736,  731,  733,   55,   55,  732,
+
+       55,  735,  737,   55,  738,   55,   55,  740,  734,  741,
+       55,  739,   55,   55,   55,   55,   55,  742,   55,   55,
+       55,  746,  744,   55,  743,   55,  750,   55,  748,   55,
+      745,  752,   55,  753,   55,   55,  754,   55,   55,  749,
+       55,  758,  751,  747,  755,  756,   55,  759,   55,   55,
+       55,  760,   55,   55,   55,   55,  768,   55,  765,   55,
+       55,  757,   55,  762,  769,  763,  761,  770,   55,   55,
+      764,  773,   55,  767,  774,   55,   55,   55,  779,  766,
+       55,  771,  777,   55,  778,   55,   55,  775,  781,   55,
+      772,  780,  782,   55,   55,   55,  776,  784,   55,  783,
+
+       55,  785,  786,   55,   55,  788,   55,   55,   55,  787,
+       55,   55,  789,   55,  790,  791,  792,   55,   55,  794,
+       55,   55,  793,  796,   55,  795,  797,   55,  798,   55,
+       55,  799,  800,   55,   55,  802,   55,  805,   55,   55,
+       55,   55,  801,   55,   55,   55,   55,  803,   55,   55,
+       55,   55,   55,   55,  804,   36,   36,   36,   36,   36,
+       36,   41,   41,   41,   41,   41,   41,   45,   45,   45,
+       45,   45,   45,   50,   50,   50,   50,   50,   50,   58,
+       58,   55,   58,   58,   58,   89,   89,   55,   55,   55,
+       89,   91,   91,   55,   55,   91,   96,   96,   55,   55,
+
+       55,   96,   59,   59,   55,   59,   59,   59,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   97,   95,   94,   92,   90,   55,   97,   95,
-       94,   92,   90,   55,  807,   11,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
+       97,   95,   94,   92,   90,   55,   97,   95,   94,   92,
+       90,   55,  806,   11,  806,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
 
-      807,  807,  807,  807
+      806,  806
     } ;
 
-static yyconst flex_int16_t yy_chk[1705] =
+static yyconst flex_int16_t yy_chk[1703] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -897,13 +897,13 @@ static yyconst flex_int16_t yy_chk[1705] =
        13,    4,    6,    6,   13,    5,    6,    9,    9,    9,
        40,   40,    6,    7,    7,    7,    7,    9,    7,   10,
        10,   10,   23,   23,    7,    8,    8,    8,    8,   10,
-        8,   23,   16,  816,   16,   16,    8,   16,   21,   18,
+        8,   23,   16,  815,   16,   16,    8,   16,   21,   18,
        22,   18,   18,   16,   18,   20,   20,   21,   26,   27,
 
        29,   24,   21,   20,   22,   24,   25,   28,   28,   30,
        34,   25,   26,   27,   24,   31,   32,   27,   30,   44,
        29,   32,   44,   30,   33,   33,   81,   28,   34,   31,
-       53,   53,   31,   35,   35,   32,  812,   49,   35,   49,
+       53,   53,   31,   35,   35,   32,  811,   49,   35,   49,
        49,   33,   49,   55,   81,   55,   55,   56,   55,   63,
        58,   56,   58,   58,   61,   58,   62,   61,   64,   62,
        65,   58,   66,   67,   68,   65,   63,   69,   68,   71,
@@ -919,7 +919,7 @@ static yyconst flex_int16_t yy_chk[1705] =
       111,  111,  107,  102,  103,  112,  108,  102,  119,  120,
       114,  112,  113,  102,  102,  114,  115,  116,  118,  122,
       121,  115,  116,  123,  118,  121,  125,  119,  120,  124,
-      126,  124,  127,  125,  128,  130,  132,  127,  806,  128,
+      126,  124,  127,  125,  128,  130,  132,  127,  805,  128,
       122,  129,  123,  129,  131,  134,  134,  135,  126,  131,
 
       132,  136,  133,  130,  127,  133,  140,  137,  142,  129,
@@ -944,7 +944,7 @@ static yyconst flex_int16_t yy_chk[1705] =
       213,  211,  214,  221,  221,  218,  222,  229,  219,  223,
       223,  222,  224,  224,  225,  226,  231,  227,  225,  228,
 
-      226,  227,  230,  799,  228,  232,  229,  230,  232,  231,
+      226,  227,  230,  798,  228,  232,  229,  230,  232,  231,
       233,  233,  234,  232,  235,  234,  232,  236,  235,  237,
       238,  241,  236,  242,  237,  239,  238,  240,  239,  243,
       245,  244,  240,  245,  243,  247,  242,  249,  241,  235,
@@ -983,7 +983,7 @@ static yyconst flex_int16_t yy_chk[1705] =
       399,  393,  400,  393,  401,  393,  402,  394,  403,  396,
       404,  402,  401,  406,  403,  407,  409,  404,  406,  408,
       407,  400,  410,  412,  408,  409,  411,  411,  413,  415,
-      417,  416,  418,  419,  417,  420,  421,  422,  423,  798,
+      417,  416,  418,  419,  417,  420,  421,  422,  423,  797,
       410,  421,  412,  424,  422,  425,  419,  413,  416,  426,
       418,  427,  424,  420,  415,  423,  427,  428,  429,  425,
       430,  430,  428,  429,  432,  433,  433,  434,  434,  426,
@@ -1001,7 +1001,7 @@ static yyconst flex_int16_t yy_chk[1705] =
 
       487,  494,  495,  493,  492,  496,  493,  497,  488,  494,
       499,  490,  493,  500,  489,  501,  502,  500,  503,  495,
-      501,  502,  504,  496,  497,  797,  505,  503,  507,  499,
+      501,  502,  504,  496,  497,  796,  505,  503,  507,  499,
       506,  506,  515,  507,  508,  508,  504,  505,  509,  509,
       510,  510,  511,  513,  514,  511,  516,  516,  513,  514,
       517,  518,  519,  520,  521,  517,  515,  522,  523,  523,
@@ -1015,68 +1015,68 @@ static yyconst flex_int16_t yy_chk[1705] =
       553,  556,  556,  554,  559,  559,  545,  561,  558,  549,
       562,  563,  564,  560,  565,  566,  568,  566,  572,  565,
       569,  562,  563,  567,  567,  569,  564,  570,  571,  570,
-      573,  576,  574,  571,  575,  572,  574,  574,  577,  575,
-      576,  568,  576,  578,  579,  580,  582,  583,  585,  573,
-      577,  580,  582,  584,  584,  586,  583,  585,  588,  579,
-      587,  592,  578,  588,  587,  589,  589,  591,  593,  594,
-      595,  591,  598,  586,  597,  592,  599,  597,  600,  600,
-
-      601,  601,  602,  602,  598,  603,  593,  605,  599,  594,
-      595,  604,  604,  607,  608,  608,  609,  603,  607,  610,
-      611,  612,  613,  613,  612,  605,  611,  615,  615,  616,
-      617,  617,  618,  619,  609,  620,  610,  613,  619,  621,
-      623,  622,  625,  630,  623,  632,  626,  630,  621,  620,
-      622,  635,  618,  628,  616,  626,  627,  627,  628,  631,
-      633,  625,  631,  634,  632,  633,  635,  636,  637,  634,
-      650,  638,  636,  638,  641,  641,  637,  643,  643,  644,
-      644,  646,  646,  647,  648,  648,  649,  651,  647,  653,
-      662,  650,  651,  654,  653,  654,  655,  656,  657,  658,
-
-      659,  649,  660,  660,  661,  663,  664,  655,  665,  657,
-      658,  659,  667,  661,  656,  662,  666,  666,  664,  668,
-      669,  670,  670,  671,  663,  665,  672,  673,  671,  667,
-      674,  678,  679,  680,  680,  679,  668,  681,  669,  682,
-      672,  683,  683,  684,  686,  673,  685,  685,  687,  674,
-      678,  681,  691,  688,  689,  692,  682,  687,  688,  689,
-      692,  684,  693,  694,  695,  686,  691,  693,  696,  695,
-      701,  697,  698,  699,  702,  703,  703,  694,  704,  696,
-      697,  698,  699,  705,  706,  708,  709,  704,  701,  706,
-      712,  705,  702,  795,  708,  711,  711,  717,  709,  713,
-
-      713,  714,  715,  715,  714,  716,  716,  718,  721,  712,
-      717,  720,  718,  719,  719,  720,  722,  723,  724,  725,
-      726,  727,  729,  724,  722,  729,  721,  733,  730,  726,
-      731,  731,  723,  732,  735,  736,  733,  732,  737,  741,
-      727,  740,  740,  735,  725,  730,  736,  743,  741,  744,
-      745,  746,  743,  747,  748,  749,  750,  751,  751,  748,
-      752,  763,  737,  755,  745,  752,  746,  744,  754,  754,
-      756,  747,  757,  757,  750,  758,  758,  759,  760,  763,
-      749,  793,  755,  761,  761,  762,  762,  764,  759,  765,
-      765,  756,  764,  766,  766,  767,  780,  760,  768,  768,
-
-      767,  770,  770,  772,  772,  773,  776,  776,  777,  790,
-      773,  789,  781,  777,  800,  780,  781,  784,  784,  786,
-      788,  788,  802,  786,  791,  791,  790,  792,  792,  794,
-      794,  796,  796,  800,  801,  803,  802,  804,  805,  805,
-      787,  785,  783,  801,  782,  779,  778,  775,  803,  774,
-      771,  769,  753,  742,  739,  804,  808,  808,  808,  808,
-      808,  808,  809,  809,  809,  809,  809,  809,  810,  810,
-      810,  810,  810,  810,  811,  811,  811,  811,  811,  811,
-      813,  813,  738,  813,  813,  813,  814,  814,  734,  728,
-      710,  814,  815,  815,  707,  700,  815,  817,  817,  690,
-
-      677,  676,  817,  818,  818,  675,  818,  818,  818,  652,
-      645,  642,  640,  639,  629,  624,  614,  606,  596,  590,
-      581,  557,  552,  551,  550,  548,  529,  512,  498,  491,
-      481,  480,  460,  449,  448,  447,  431,  414,  405,  379,
-      364,  345,  338,  329,  298,  273,  272,  270,  269,  266,
-      197,  192,   96,   95,   93,   91,   89,   54,   50,   46,
-       45,   41,   36,   12,   11,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,  807,
-
-      807,  807,  807,  807
+      573,  574,  575,  571,  576,  572,  574,  575,  577,  578,
+      579,  568,  580,  576,  583,  576,  582,  586,  580,  573,
+      577,  585,  582,  583,  593,  579,  584,  584,  578,  587,
+      585,  588,  592,  587,  594,  586,  588,  589,  589,  591,
+      595,  597,  593,  591,  597,  598,  592,  599,  600,  600,
+
+      601,  601,  602,  602,  594,  603,  605,  598,  607,  599,
+      595,  604,  604,  607,  608,  608,  609,  603,  610,  611,
+      612,  613,  613,  612,  605,  611,  614,  614,  615,  616,
+      616,  617,  618,  619,  609,  610,  613,  618,  622,  620,
+      621,  624,  622,  625,  626,  626,  631,  619,  620,  621,
+      627,  617,  625,  615,  629,  627,  630,  632,  629,  630,
+      624,  633,  632,  634,  635,  631,  636,  633,  637,  635,
+      637,  640,  640,  649,  636,  642,  642,  648,  634,  643,
+      643,  645,  645,  646,  647,  647,  650,  653,  646,  653,
+      652,  650,  648,  654,  649,  652,  655,  656,  657,  658,
+
+      659,  659,  660,  661,  654,  662,  663,  668,  656,  657,
+      658,  660,  664,  655,  665,  665,  666,  667,  663,  669,
+      669,  670,  671,  672,  662,  668,  670,  673,  661,  664,
+      677,  680,  678,  666,  667,  678,  671,  679,  679,  681,
+      683,  672,  682,  682,  685,  680,  673,  684,  684,  677,
+      686,  794,  687,  690,  700,  688,  681,  687,  683,  686,
+      688,  691,  693,  692,  694,  685,  691,  690,  692,  694,
+      695,  696,  700,  697,  698,  701,  693,  702,  702,  703,
+      696,  695,  697,  698,  704,  705,  707,  708,  703,  711,
+      705,  713,  704,  701,  713,  707,  710,  710,  716,  708,
+
+      712,  712,  714,  714,  715,  715,  720,  717,  711,  718,
+      718,  716,  717,  719,  721,  722,  723,  719,  724,  725,
+      726,  723,  721,  728,  720,  729,  728,  732,  725,  731,
+      722,  730,  730,  731,  735,  734,  732,  736,  740,  726,
+      739,  739,  729,  724,  734,  735,  742,  740,  743,  744,
+      745,  742,  746,  747,  748,  749,  750,  750,  747,  751,
+      762,  736,  754,  744,  751,  745,  743,  753,  753,  755,
+      746,  756,  756,  749,  757,  757,  758,  759,  762,  748,
+      792,  754,  760,  760,  761,  761,  763,  758,  764,  764,
+      755,  763,  765,  765,  766,  779,  759,  767,  767,  766,
+
+      769,  769,  771,  771,  772,  775,  775,  776,  789,  772,
+      788,  780,  776,  799,  779,  780,  783,  783,  785,  787,
+      787,  801,  785,  790,  790,  789,  791,  791,  793,  793,
+      795,  795,  799,  800,  802,  801,  803,  804,  804,  786,
+      784,  782,  800,  781,  778,  777,  774,  802,  773,  770,
+      768,  752,  741,  738,  803,  807,  807,  807,  807,  807,
+      807,  808,  808,  808,  808,  808,  808,  809,  809,  809,
+      809,  809,  809,  810,  810,  810,  810,  810,  810,  812,
+      812,  737,  812,  812,  812,  813,  813,  733,  727,  709,
+      813,  814,  814,  706,  699,  814,  816,  816,  689,  676,
+
+      675,  816,  817,  817,  674,  817,  817,  817,  651,  644,
+      641,  639,  638,  628,  623,  606,  596,  590,  581,  557,
+      552,  551,  550,  548,  529,  512,  498,  491,  481,  480,
+      460,  449,  448,  447,  431,  414,  405,  379,  364,  345,
+      338,  329,  298,  273,  272,  270,  269,  266,  197,  192,
+       96,   95,   93,   91,   89,   54,   50,   46,   45,   41,
+       36,   12,   11,  806,  806,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
+
+      806,  806
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1398,13 +1398,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 >= 808 )
+                               if ( yy_current_state >= 807 )
                                        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] != 1666 );
+               while ( yy_base[yy_current_state] != 1664 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1461,376 +1461,371 @@ YY_RULE_SETUP
 case 7:
 YY_RULE_SETUP
 #line 106 "util/configlexer.lex"
-{ YDOUT; return VAR_OUTGOING_PORT;}
+{ YDOUT; return VAR_OUTGOING_RANGE;}
        YY_BREAK
 case 8:
 YY_RULE_SETUP
 #line 107 "util/configlexer.lex"
-{ YDOUT; return VAR_OUTGOING_RANGE;}
+{ YDOUT; return VAR_OUTGOING_PORT_PERMIT;}
        YY_BREAK
 case 9:
 YY_RULE_SETUP
 #line 108 "util/configlexer.lex"
-{ YDOUT; return VAR_OUTGOING_PORT_PERMIT;}
+{ YDOUT; return VAR_OUTGOING_PORT_AVOID;}
        YY_BREAK
 case 10:
 YY_RULE_SETUP
 #line 109 "util/configlexer.lex"
-{ YDOUT; return VAR_OUTGOING_PORT_AVOID;}
+{ YDOUT; return VAR_OUTGOING_NUM_TCP;}
        YY_BREAK
 case 11:
 YY_RULE_SETUP
 #line 110 "util/configlexer.lex"
-{ YDOUT; return VAR_OUTGOING_NUM_TCP;}
+{ YDOUT; return VAR_INCOMING_NUM_TCP;}
        YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 111 "util/configlexer.lex"
-{ YDOUT; return VAR_INCOMING_NUM_TCP;}
+{ YDOUT; return VAR_DO_IP4;}
        YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 112 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_IP4;}
+{ YDOUT; return VAR_DO_IP6;}
        YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 113 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_IP6;}
+{ YDOUT; return VAR_DO_UDP;}
        YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 114 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_UDP;}
+{ YDOUT; return VAR_DO_TCP;}
        YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 115 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_TCP;}
+{ YDOUT; return VAR_DO_DAEMONIZE;}
        YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 116 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_DAEMONIZE;}
+{ YDOUT; return VAR_INTERFACE;}
        YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 117 "util/configlexer.lex"
-{ YDOUT; return VAR_INTERFACE;}
+{ YDOUT; return VAR_OUTGOING_INTERFACE;}
        YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 118 "util/configlexer.lex"
-{ YDOUT; return VAR_OUTGOING_INTERFACE;}
+{ YDOUT; return VAR_INTERFACE_AUTOMATIC;}
        YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 119 "util/configlexer.lex"
-{ YDOUT; return VAR_INTERFACE_AUTOMATIC;}
+{ YDOUT; return VAR_CHROOT;}
        YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 120 "util/configlexer.lex"
-{ YDOUT; return VAR_CHROOT;}
+{ YDOUT; return VAR_USERNAME;}
        YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 121 "util/configlexer.lex"
-{ YDOUT; return VAR_USERNAME;}
+{ YDOUT; return VAR_DIRECTORY;}
        YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 122 "util/configlexer.lex"
-{ YDOUT; return VAR_DIRECTORY;}
+{ YDOUT; return VAR_LOGFILE;}
        YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 123 "util/configlexer.lex"
-{ YDOUT; return VAR_LOGFILE;}
+{ YDOUT; return VAR_PIDFILE;}
        YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 124 "util/configlexer.lex"
-{ YDOUT; return VAR_PIDFILE;}
+{ YDOUT; return VAR_ROOT_HINTS;}
        YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 125 "util/configlexer.lex"
-{ YDOUT; return VAR_ROOT_HINTS;}
+{ YDOUT; return VAR_MSG_BUFFER_SIZE;}
        YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 126 "util/configlexer.lex"
-{ YDOUT; return VAR_MSG_BUFFER_SIZE;}
+{ YDOUT; return VAR_MSG_CACHE_SIZE;}
        YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 127 "util/configlexer.lex"
-{ YDOUT; return VAR_MSG_CACHE_SIZE;}
+{ YDOUT; return VAR_MSG_CACHE_SLABS;}
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 128 "util/configlexer.lex"
-{ YDOUT; return VAR_MSG_CACHE_SLABS;}
+{ YDOUT; return VAR_RRSET_CACHE_SIZE;}
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 129 "util/configlexer.lex"
-{ YDOUT; return VAR_RRSET_CACHE_SIZE;}
+{ YDOUT; return VAR_RRSET_CACHE_SLABS;}
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 130 "util/configlexer.lex"
-{ YDOUT; return VAR_RRSET_CACHE_SLABS;}
+{ YDOUT; return VAR_CACHE_MAX_TTL;}
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 131 "util/configlexer.lex"
-{ YDOUT; return VAR_CACHE_MAX_TTL;}
+{ YDOUT; return VAR_INFRA_HOST_TTL;}
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 132 "util/configlexer.lex"
-{ YDOUT; return VAR_INFRA_HOST_TTL;}
+{ YDOUT; return VAR_INFRA_LAME_TTL;}
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 133 "util/configlexer.lex"
-{ YDOUT; return VAR_INFRA_LAME_TTL;}
+{ YDOUT; return VAR_INFRA_CACHE_SLABS;}
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 134 "util/configlexer.lex"
-{ YDOUT; return VAR_INFRA_CACHE_SLABS;}
+{ YDOUT; return VAR_INFRA_CACHE_NUMHOSTS;}
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 135 "util/configlexer.lex"
-{ YDOUT; return VAR_INFRA_CACHE_NUMHOSTS;}
+{ YDOUT; return VAR_INFRA_CACHE_LAME_SIZE;}
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 136 "util/configlexer.lex"
-{ YDOUT; return VAR_INFRA_CACHE_LAME_SIZE;}
+{ YDOUT; return VAR_NUM_QUERIES_PER_THREAD;}
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 137 "util/configlexer.lex"
-{ YDOUT; return VAR_NUM_QUERIES_PER_THREAD;}
+{ YDOUT; return VAR_TARGET_FETCH_POLICY;}
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 138 "util/configlexer.lex"
-{ YDOUT; return VAR_TARGET_FETCH_POLICY;}
+{ YDOUT; return VAR_HARDEN_SHORT_BUFSIZE;}
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 139 "util/configlexer.lex"
-{ YDOUT; return VAR_HARDEN_SHORT_BUFSIZE;}
+{ YDOUT; return VAR_HARDEN_LARGE_QUERIES;}
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 140 "util/configlexer.lex"
-{ YDOUT; return VAR_HARDEN_LARGE_QUERIES;}
+{ YDOUT; return VAR_HARDEN_GLUE;}
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 141 "util/configlexer.lex"
-{ YDOUT; return VAR_HARDEN_GLUE;}
+{ YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;}
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 142 "util/configlexer.lex"
-{ YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;}
+{ YDOUT; return VAR_USE_CAPS_FOR_ID;}
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 143 "util/configlexer.lex"
-{ YDOUT; return VAR_USE_CAPS_FOR_ID;}
+{ YDOUT; return VAR_STUB_ZONE;}
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 144 "util/configlexer.lex"
-{ YDOUT; return VAR_STUB_ZONE;}
+{ YDOUT; return VAR_NAME;}
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 145 "util/configlexer.lex"
-{ YDOUT; return VAR_NAME;}
+{ YDOUT; return VAR_STUB_ADDR;}
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 146 "util/configlexer.lex"
-{ YDOUT; return VAR_STUB_ADDR;}
+{ YDOUT; return VAR_STUB_HOST;}
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 147 "util/configlexer.lex"
-{ YDOUT; return VAR_STUB_HOST;}
+{ YDOUT; return VAR_FORWARD_ZONE;}
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 148 "util/configlexer.lex"
-{ YDOUT; return VAR_FORWARD_ZONE;}
+{ YDOUT; return VAR_FORWARD_ADDR;}
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 149 "util/configlexer.lex"
-{ YDOUT; return VAR_FORWARD_ADDR;}
+{ YDOUT; return VAR_FORWARD_HOST;}
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 150 "util/configlexer.lex"
-{ YDOUT; return VAR_FORWARD_HOST;}
+{ YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;}
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 151 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;}
+{ YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 152 "util/configlexer.lex"
-{ YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
+{ YDOUT; return VAR_ACCESS_CONTROL;}
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 153 "util/configlexer.lex"
-{ YDOUT; return VAR_ACCESS_CONTROL;}
+{ YDOUT; return VAR_HIDE_IDENTITY;}
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 154 "util/configlexer.lex"
-{ YDOUT; return VAR_HIDE_IDENTITY;}
+{ YDOUT; return VAR_HIDE_VERSION;}
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 155 "util/configlexer.lex"
-{ YDOUT; return VAR_HIDE_VERSION;}
+{ YDOUT; return VAR_IDENTITY;}
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 156 "util/configlexer.lex"
-{ YDOUT; return VAR_IDENTITY;}
+{ YDOUT; return VAR_VERSION;}
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 157 "util/configlexer.lex"
-{ YDOUT; return VAR_VERSION;}
+{ YDOUT; return VAR_MODULE_CONF;}
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 158 "util/configlexer.lex"
-{ YDOUT; return VAR_MODULE_CONF;}
+{ YDOUT; return VAR_TRUST_ANCHOR_FILE;}
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 159 "util/configlexer.lex"
-{ YDOUT; return VAR_TRUST_ANCHOR_FILE;}
+{ YDOUT; return VAR_TRUSTED_KEYS_FILE;}
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 160 "util/configlexer.lex"
-{ YDOUT; return VAR_TRUSTED_KEYS_FILE;}
+{ YDOUT; return VAR_TRUST_ANCHOR;}
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 161 "util/configlexer.lex"
-{ YDOUT; return VAR_TRUST_ANCHOR;}
+{ YDOUT; return VAR_VAL_OVERRIDE_DATE;}
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 162 "util/configlexer.lex"
-{ YDOUT; return VAR_VAL_OVERRIDE_DATE;}
+{ YDOUT; return VAR_BOGUS_TTL;}
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 163 "util/configlexer.lex"
-{ YDOUT; return VAR_BOGUS_TTL;}
+{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;}
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 164 "util/configlexer.lex"
-{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;}
+{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;}
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 165 "util/configlexer.lex"
-{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;}
+{ YDOUT; return VAR_KEY_CACHE_SIZE;}
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 166 "util/configlexer.lex"
-{ YDOUT; return VAR_KEY_CACHE_SIZE;}
+{ YDOUT; return VAR_KEY_CACHE_SLABS;}
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 167 "util/configlexer.lex"
-{ YDOUT; return VAR_KEY_CACHE_SLABS;}
+{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;}
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 168 "util/configlexer.lex"
-{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;}
+{ YDOUT; return VAR_USE_SYSLOG;}
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 169 "util/configlexer.lex"
-{ YDOUT; return VAR_USE_SYSLOG;}
+{ YDOUT; return VAR_LOCAL_ZONE;}
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 170 "util/configlexer.lex"
-{ YDOUT; return VAR_LOCAL_ZONE;}
+{ YDOUT; return VAR_LOCAL_DATA;}
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 171 "util/configlexer.lex"
-{ YDOUT; return VAR_LOCAL_DATA;}
+{ YDOUT; return VAR_STATISTICS_INTERVAL;}
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 172 "util/configlexer.lex"
-{ YDOUT; return VAR_STATISTICS_INTERVAL;}
+{ YDOUT; return VAR_STATISTICS_CUMULATIVE;}
        YY_BREAK
 case 74:
+/* rule 74 can match eol */
 YY_RULE_SETUP
 #line 173 "util/configlexer.lex"
-{ YDOUT; return VAR_STATISTICS_CUMULATIVE;}
-       YY_BREAK
-case 75:
-/* rule 75 can match eol */
-YY_RULE_SETUP
-#line 174 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 76:
+case 75:
 YY_RULE_SETUP
-#line 177 "util/configlexer.lex"
+#line 176 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 178 "util/configlexer.lex"
+#line 177 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
 }
        YY_BREAK
-case 77:
+case 76:
 YY_RULE_SETUP
-#line 182 "util/configlexer.lex"
+#line 181 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 78:
-/* rule 78 can match eol */
+case 77:
+/* rule 77 can match eol */
 YY_RULE_SETUP
-#line 183 "util/configlexer.lex"
+#line 182 "util/configlexer.lex"
 { cfg_parser->line++; yymore(); }
        YY_BREAK
-case 79:
+case 78:
 YY_RULE_SETUP
-#line 184 "util/configlexer.lex"
+#line 183 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
         BEGIN(INITIAL);
@@ -1842,32 +1837,32 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 80:
+case 79:
 YY_RULE_SETUP
-#line 195 "util/configlexer.lex"
+#line 194 "util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 196 "util/configlexer.lex"
+#line 195 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
 }
        YY_BREAK
-case 81:
+case 80:
 YY_RULE_SETUP
-#line 200 "util/configlexer.lex"
+#line 199 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 82:
-/* rule 82 can match eol */
+case 81:
+/* rule 81 can match eol */
 YY_RULE_SETUP
-#line 201 "util/configlexer.lex"
+#line 200 "util/configlexer.lex"
 { cfg_parser->line++; yymore(); }
        YY_BREAK
-case 83:
+case 82:
 YY_RULE_SETUP
-#line 202 "util/configlexer.lex"
+#line 201 "util/configlexer.lex"
 {
         LEXOUT(("SQE "));
         BEGIN(INITIAL);
@@ -1879,37 +1874,37 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 84:
+case 83:
 YY_RULE_SETUP
-#line 213 "util/configlexer.lex"
+#line 212 "util/configlexer.lex"
 { LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 214 "util/configlexer.lex"
+#line 213 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(INITIAL);
 }
        YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 217 "util/configlexer.lex"
+{ LEXOUT(("ISP ")); /* ignore */ }
+       YY_BREAK
 case 85:
+/* rule 85 can match eol */
 YY_RULE_SETUP
 #line 218 "util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 86:
-/* rule 86 can match eol */
 YY_RULE_SETUP
 #line 219 "util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 220 "util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
-       YY_BREAK
-case 88:
-YY_RULE_SETUP
-#line 221 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -1917,26 +1912,26 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 226 "util/configlexer.lex"
+#line 225 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
 }
        YY_BREAK
-case 89:
+case 88:
 YY_RULE_SETUP
-#line 230 "util/configlexer.lex"
+#line 229 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 90:
-/* rule 90 can match eol */
+case 89:
+/* rule 89 can match eol */
 YY_RULE_SETUP
-#line 231 "util/configlexer.lex"
+#line 230 "util/configlexer.lex"
 { cfg_parser->line++; yymore(); }
        YY_BREAK
-case 91:
+case 90:
 YY_RULE_SETUP
-#line 232 "util/configlexer.lex"
+#line 231 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -1945,7 +1940,7 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 238 "util/configlexer.lex"
+#line 237 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -1956,18 +1951,18 @@ case YY_STATE_EOF(INITIAL):
        }
 }
        YY_BREAK
-case 92:
+case 91:
 YY_RULE_SETUP
-#line 248 "util/configlexer.lex"
+#line 247 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        yylval.str = strdup(yytext); return STRING; }
        YY_BREAK
-case 93:
+case 92:
 YY_RULE_SETUP
-#line 251 "util/configlexer.lex"
+#line 250 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 1970 "<stdout>"
+#line 1965 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2249,7 +2244,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 >= 808 )
+                       if ( yy_current_state >= 807 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2277,11 +2272,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 >= 808 )
+               if ( yy_current_state >= 807 )
                        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 == 807);
+       yy_is_jam = (yy_current_state == 806);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2914,7 +2909,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 251 "util/configlexer.lex"
+#line 250 "util/configlexer.lex"
 
 
 
index b4d55d95574b876639b0fb65f8391068a4ee05a2..7b4823eed2ac93e862cf6ae4f69eb02f3983f4c3 100644 (file)
@@ -103,7 +103,6 @@ server{COLON}               { YDOUT; return VAR_SERVER;}
 num-threads{COLON}     { YDOUT; return VAR_NUM_THREADS;}
 verbosity{COLON}       { YDOUT; return VAR_VERBOSITY;}
 port{COLON}            { YDOUT; return VAR_PORT;}
-outgoing-port{COLON}   { YDOUT; return VAR_OUTGOING_PORT;}
 outgoing-range{COLON}  { YDOUT; return VAR_OUTGOING_RANGE;}
 outgoing-port-permit{COLON}    { YDOUT; return VAR_OUTGOING_PORT_PERMIT;}
 outgoing-port-avoid{COLON}     { YDOUT; return VAR_OUTGOING_PORT_AVOID;}
index f2681c7f306e433b0787eb8829623391a23365c9..93e2d72dd594dd5d4a0cd8781553c6114ac91f3c 100644 (file)
      VAR_VERBOSITY = 267,
      VAR_NUM_THREADS = 268,
      VAR_PORT = 269,
-     VAR_OUTGOING_PORT = 270,
-     VAR_OUTGOING_RANGE = 271,
-     VAR_INTERFACE = 272,
-     VAR_DO_IP4 = 273,
-     VAR_DO_IP6 = 274,
-     VAR_DO_UDP = 275,
-     VAR_DO_TCP = 276,
-     VAR_CHROOT = 277,
-     VAR_USERNAME = 278,
-     VAR_DIRECTORY = 279,
-     VAR_LOGFILE = 280,
-     VAR_PIDFILE = 281,
-     VAR_MSG_CACHE_SIZE = 282,
-     VAR_MSG_CACHE_SLABS = 283,
-     VAR_NUM_QUERIES_PER_THREAD = 284,
-     VAR_RRSET_CACHE_SIZE = 285,
-     VAR_RRSET_CACHE_SLABS = 286,
-     VAR_OUTGOING_NUM_TCP = 287,
-     VAR_INFRA_HOST_TTL = 288,
-     VAR_INFRA_LAME_TTL = 289,
-     VAR_INFRA_CACHE_SLABS = 290,
-     VAR_INFRA_CACHE_NUMHOSTS = 291,
-     VAR_INFRA_CACHE_LAME_SIZE = 292,
-     VAR_NAME = 293,
-     VAR_STUB_ZONE = 294,
-     VAR_STUB_HOST = 295,
-     VAR_STUB_ADDR = 296,
-     VAR_TARGET_FETCH_POLICY = 297,
-     VAR_HARDEN_SHORT_BUFSIZE = 298,
-     VAR_HARDEN_LARGE_QUERIES = 299,
-     VAR_FORWARD_ZONE = 300,
-     VAR_FORWARD_HOST = 301,
-     VAR_FORWARD_ADDR = 302,
-     VAR_DO_NOT_QUERY_ADDRESS = 303,
-     VAR_HIDE_IDENTITY = 304,
-     VAR_HIDE_VERSION = 305,
-     VAR_IDENTITY = 306,
-     VAR_VERSION = 307,
-     VAR_HARDEN_GLUE = 308,
-     VAR_MODULE_CONF = 309,
-     VAR_TRUST_ANCHOR_FILE = 310,
-     VAR_TRUST_ANCHOR = 311,
-     VAR_VAL_OVERRIDE_DATE = 312,
-     VAR_BOGUS_TTL = 313,
-     VAR_VAL_CLEAN_ADDITIONAL = 314,
-     VAR_VAL_PERMISSIVE_MODE = 315,
-     VAR_INCOMING_NUM_TCP = 316,
-     VAR_MSG_BUFFER_SIZE = 317,
-     VAR_KEY_CACHE_SIZE = 318,
-     VAR_KEY_CACHE_SLABS = 319,
-     VAR_TRUSTED_KEYS_FILE = 320,
-     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 321,
-     VAR_USE_SYSLOG = 322,
-     VAR_OUTGOING_INTERFACE = 323,
-     VAR_ROOT_HINTS = 324,
-     VAR_DO_NOT_QUERY_LOCALHOST = 325,
-     VAR_CACHE_MAX_TTL = 326,
-     VAR_HARDEN_DNNSEC_STRIPPED = 327,
-     VAR_ACCESS_CONTROL = 328,
-     VAR_LOCAL_ZONE = 329,
-     VAR_LOCAL_DATA = 330,
-     VAR_INTERFACE_AUTOMATIC = 331,
-     VAR_STATISTICS_INTERVAL = 332,
-     VAR_DO_DAEMONIZE = 333,
-     VAR_USE_CAPS_FOR_ID = 334,
-     VAR_STATISTICS_CUMULATIVE = 335,
-     VAR_OUTGOING_PORT_PERMIT = 336,
-     VAR_OUTGOING_PORT_AVOID = 337
+     VAR_OUTGOING_RANGE = 270,
+     VAR_INTERFACE = 271,
+     VAR_DO_IP4 = 272,
+     VAR_DO_IP6 = 273,
+     VAR_DO_UDP = 274,
+     VAR_DO_TCP = 275,
+     VAR_CHROOT = 276,
+     VAR_USERNAME = 277,
+     VAR_DIRECTORY = 278,
+     VAR_LOGFILE = 279,
+     VAR_PIDFILE = 280,
+     VAR_MSG_CACHE_SIZE = 281,
+     VAR_MSG_CACHE_SLABS = 282,
+     VAR_NUM_QUERIES_PER_THREAD = 283,
+     VAR_RRSET_CACHE_SIZE = 284,
+     VAR_RRSET_CACHE_SLABS = 285,
+     VAR_OUTGOING_NUM_TCP = 286,
+     VAR_INFRA_HOST_TTL = 287,
+     VAR_INFRA_LAME_TTL = 288,
+     VAR_INFRA_CACHE_SLABS = 289,
+     VAR_INFRA_CACHE_NUMHOSTS = 290,
+     VAR_INFRA_CACHE_LAME_SIZE = 291,
+     VAR_NAME = 292,
+     VAR_STUB_ZONE = 293,
+     VAR_STUB_HOST = 294,
+     VAR_STUB_ADDR = 295,
+     VAR_TARGET_FETCH_POLICY = 296,
+     VAR_HARDEN_SHORT_BUFSIZE = 297,
+     VAR_HARDEN_LARGE_QUERIES = 298,
+     VAR_FORWARD_ZONE = 299,
+     VAR_FORWARD_HOST = 300,
+     VAR_FORWARD_ADDR = 301,
+     VAR_DO_NOT_QUERY_ADDRESS = 302,
+     VAR_HIDE_IDENTITY = 303,
+     VAR_HIDE_VERSION = 304,
+     VAR_IDENTITY = 305,
+     VAR_VERSION = 306,
+     VAR_HARDEN_GLUE = 307,
+     VAR_MODULE_CONF = 308,
+     VAR_TRUST_ANCHOR_FILE = 309,
+     VAR_TRUST_ANCHOR = 310,
+     VAR_VAL_OVERRIDE_DATE = 311,
+     VAR_BOGUS_TTL = 312,
+     VAR_VAL_CLEAN_ADDITIONAL = 313,
+     VAR_VAL_PERMISSIVE_MODE = 314,
+     VAR_INCOMING_NUM_TCP = 315,
+     VAR_MSG_BUFFER_SIZE = 316,
+     VAR_KEY_CACHE_SIZE = 317,
+     VAR_KEY_CACHE_SLABS = 318,
+     VAR_TRUSTED_KEYS_FILE = 319,
+     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320,
+     VAR_USE_SYSLOG = 321,
+     VAR_OUTGOING_INTERFACE = 322,
+     VAR_ROOT_HINTS = 323,
+     VAR_DO_NOT_QUERY_LOCALHOST = 324,
+     VAR_CACHE_MAX_TTL = 325,
+     VAR_HARDEN_DNNSEC_STRIPPED = 326,
+     VAR_ACCESS_CONTROL = 327,
+     VAR_LOCAL_ZONE = 328,
+     VAR_LOCAL_DATA = 329,
+     VAR_INTERFACE_AUTOMATIC = 330,
+     VAR_STATISTICS_INTERVAL = 331,
+     VAR_DO_DAEMONIZE = 332,
+     VAR_USE_CAPS_FOR_ID = 333,
+     VAR_STATISTICS_CUMULATIVE = 334,
+     VAR_OUTGOING_PORT_PERMIT = 335,
+     VAR_OUTGOING_PORT_AVOID = 336
    };
 #endif
 /* Tokens.  */
 #define VAR_VERBOSITY 267
 #define VAR_NUM_THREADS 268
 #define VAR_PORT 269
-#define VAR_OUTGOING_PORT 270
-#define VAR_OUTGOING_RANGE 271
-#define VAR_INTERFACE 272
-#define VAR_DO_IP4 273
-#define VAR_DO_IP6 274
-#define VAR_DO_UDP 275
-#define VAR_DO_TCP 276
-#define VAR_CHROOT 277
-#define VAR_USERNAME 278
-#define VAR_DIRECTORY 279
-#define VAR_LOGFILE 280
-#define VAR_PIDFILE 281
-#define VAR_MSG_CACHE_SIZE 282
-#define VAR_MSG_CACHE_SLABS 283
-#define VAR_NUM_QUERIES_PER_THREAD 284
-#define VAR_RRSET_CACHE_SIZE 285
-#define VAR_RRSET_CACHE_SLABS 286
-#define VAR_OUTGOING_NUM_TCP 287
-#define VAR_INFRA_HOST_TTL 288
-#define VAR_INFRA_LAME_TTL 289
-#define VAR_INFRA_CACHE_SLABS 290
-#define VAR_INFRA_CACHE_NUMHOSTS 291
-#define VAR_INFRA_CACHE_LAME_SIZE 292
-#define VAR_NAME 293
-#define VAR_STUB_ZONE 294
-#define VAR_STUB_HOST 295
-#define VAR_STUB_ADDR 296
-#define VAR_TARGET_FETCH_POLICY 297
-#define VAR_HARDEN_SHORT_BUFSIZE 298
-#define VAR_HARDEN_LARGE_QUERIES 299
-#define VAR_FORWARD_ZONE 300
-#define VAR_FORWARD_HOST 301
-#define VAR_FORWARD_ADDR 302
-#define VAR_DO_NOT_QUERY_ADDRESS 303
-#define VAR_HIDE_IDENTITY 304
-#define VAR_HIDE_VERSION 305
-#define VAR_IDENTITY 306
-#define VAR_VERSION 307
-#define VAR_HARDEN_GLUE 308
-#define VAR_MODULE_CONF 309
-#define VAR_TRUST_ANCHOR_FILE 310
-#define VAR_TRUST_ANCHOR 311
-#define VAR_VAL_OVERRIDE_DATE 312
-#define VAR_BOGUS_TTL 313
-#define VAR_VAL_CLEAN_ADDITIONAL 314
-#define VAR_VAL_PERMISSIVE_MODE 315
-#define VAR_INCOMING_NUM_TCP 316
-#define VAR_MSG_BUFFER_SIZE 317
-#define VAR_KEY_CACHE_SIZE 318
-#define VAR_KEY_CACHE_SLABS 319
-#define VAR_TRUSTED_KEYS_FILE 320
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 321
-#define VAR_USE_SYSLOG 322
-#define VAR_OUTGOING_INTERFACE 323
-#define VAR_ROOT_HINTS 324
-#define VAR_DO_NOT_QUERY_LOCALHOST 325
-#define VAR_CACHE_MAX_TTL 326
-#define VAR_HARDEN_DNNSEC_STRIPPED 327
-#define VAR_ACCESS_CONTROL 328
-#define VAR_LOCAL_ZONE 329
-#define VAR_LOCAL_DATA 330
-#define VAR_INTERFACE_AUTOMATIC 331
-#define VAR_STATISTICS_INTERVAL 332
-#define VAR_DO_DAEMONIZE 333
-#define VAR_USE_CAPS_FOR_ID 334
-#define VAR_STATISTICS_CUMULATIVE 335
-#define VAR_OUTGOING_PORT_PERMIT 336
-#define VAR_OUTGOING_PORT_AVOID 337
+#define VAR_OUTGOING_RANGE 270
+#define VAR_INTERFACE 271
+#define VAR_DO_IP4 272
+#define VAR_DO_IP6 273
+#define VAR_DO_UDP 274
+#define VAR_DO_TCP 275
+#define VAR_CHROOT 276
+#define VAR_USERNAME 277
+#define VAR_DIRECTORY 278
+#define VAR_LOGFILE 279
+#define VAR_PIDFILE 280
+#define VAR_MSG_CACHE_SIZE 281
+#define VAR_MSG_CACHE_SLABS 282
+#define VAR_NUM_QUERIES_PER_THREAD 283
+#define VAR_RRSET_CACHE_SIZE 284
+#define VAR_RRSET_CACHE_SLABS 285
+#define VAR_OUTGOING_NUM_TCP 286
+#define VAR_INFRA_HOST_TTL 287
+#define VAR_INFRA_LAME_TTL 288
+#define VAR_INFRA_CACHE_SLABS 289
+#define VAR_INFRA_CACHE_NUMHOSTS 290
+#define VAR_INFRA_CACHE_LAME_SIZE 291
+#define VAR_NAME 292
+#define VAR_STUB_ZONE 293
+#define VAR_STUB_HOST 294
+#define VAR_STUB_ADDR 295
+#define VAR_TARGET_FETCH_POLICY 296
+#define VAR_HARDEN_SHORT_BUFSIZE 297
+#define VAR_HARDEN_LARGE_QUERIES 298
+#define VAR_FORWARD_ZONE 299
+#define VAR_FORWARD_HOST 300
+#define VAR_FORWARD_ADDR 301
+#define VAR_DO_NOT_QUERY_ADDRESS 302
+#define VAR_HIDE_IDENTITY 303
+#define VAR_HIDE_VERSION 304
+#define VAR_IDENTITY 305
+#define VAR_VERSION 306
+#define VAR_HARDEN_GLUE 307
+#define VAR_MODULE_CONF 308
+#define VAR_TRUST_ANCHOR_FILE 309
+#define VAR_TRUST_ANCHOR 310
+#define VAR_VAL_OVERRIDE_DATE 311
+#define VAR_BOGUS_TTL 312
+#define VAR_VAL_CLEAN_ADDITIONAL 313
+#define VAR_VAL_PERMISSIVE_MODE 314
+#define VAR_INCOMING_NUM_TCP 315
+#define VAR_MSG_BUFFER_SIZE 316
+#define VAR_KEY_CACHE_SIZE 317
+#define VAR_KEY_CACHE_SLABS 318
+#define VAR_TRUSTED_KEYS_FILE 319
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 320
+#define VAR_USE_SYSLOG 321
+#define VAR_OUTGOING_INTERFACE 322
+#define VAR_ROOT_HINTS 323
+#define VAR_DO_NOT_QUERY_LOCALHOST 324
+#define VAR_CACHE_MAX_TTL 325
+#define VAR_HARDEN_DNNSEC_STRIPPED 326
+#define VAR_ACCESS_CONTROL 327
+#define VAR_LOCAL_ZONE 328
+#define VAR_LOCAL_DATA 329
+#define VAR_INTERFACE_AUTOMATIC 330
+#define VAR_STATISTICS_INTERVAL 331
+#define VAR_DO_DAEMONIZE 332
+#define VAR_USE_CAPS_FOR_ID 333
+#define VAR_STATISTICS_CUMULATIVE 334
+#define VAR_OUTGOING_PORT_PERMIT 335
+#define VAR_OUTGOING_PORT_AVOID 336
 
 
 
@@ -287,7 +285,7 @@ typedef union YYSTYPE
        char*   str;
 }
 /* Line 187 of yacc.c.  */
-#line 291 "util/configparser.c"
+#line 289 "util/configparser.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -300,7 +298,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 304 "util/configparser.c"
+#line 302 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -515,20 +513,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   145
+#define YYLAST   143
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  83
+#define YYNTOKENS  82
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  82
+#define YYNNTS  81
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  155
+#define YYNRULES  153
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  228
+#define YYNSTATES  225
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   337
+#define YYMAXUTOK   336
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -569,7 +567,7 @@ static const yytype_uint8 yytranslate[] =
       45,    46,    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,    77,    78,    79,    80,    81,    82
+      75,    76,    77,    78,    79,    80,    81
 };
 
 #if YYDEBUG
@@ -584,80 +582,80 @@ static const yytype_uint16 yyprhs[] =
       82,    84,    86,    88,    90,    92,    94,    96,    98,   100,
      102,   104,   106,   108,   110,   112,   114,   116,   118,   120,
      122,   124,   126,   128,   130,   132,   134,   136,   138,   140,
-     142,   144,   146,   148,   150,   152,   155,   156,   158,   160,
-     162,   164,   167,   168,   170,   172,   174,   177,   180,   183,
-     186,   189,   192,   195,   198,   201,   204,   207,   210,   213,
-     216,   219,   222,   225,   228,   231,   234,   237,   240,   243,
-     246,   249,   252,   255,   258,   261,   264,   267,   270,   273,
-     276,   279,   282,   285,   288,   291,   294,   297,   300,   303,
-     306,   309,   312,   315,   318,   321,   324,   327,   330,   334,
-     337,   340,   343,   346,   349,   352,   355,   358,   361,   365,
-     368,   371,   374,   377,   380,   383
+     142,   144,   146,   148,   150,   153,   154,   156,   158,   160,
+     162,   165,   166,   168,   170,   172,   175,   178,   181,   184,
+     187,   190,   193,   196,   199,   202,   205,   208,   211,   214,
+     217,   220,   223,   226,   229,   232,   235,   238,   241,   244,
+     247,   250,   253,   256,   259,   262,   265,   268,   271,   274,
+     277,   280,   283,   286,   289,   292,   295,   298,   301,   304,
+     307,   310,   313,   316,   319,   322,   325,   329,   332,   335,
+     338,   341,   344,   347,   350,   353,   356,   360,   363,   366,
+     369,   372,   375,   378
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-      84,     0,    -1,    -1,    84,    85,    -1,    86,    87,    -1,
-      89,    90,    -1,    92,    93,    -1,    11,    -1,    87,    88,
-      -1,    -1,    95,    -1,    96,    -1,    99,    -1,   102,    -1,
-     103,    -1,   109,    -1,   110,    -1,   111,    -1,   112,    -1,
-     100,    -1,   115,    -1,   116,    -1,   117,    -1,   118,    -1,
-     119,    -1,   129,    -1,   130,    -1,   131,    -1,   132,    -1,
-     133,    -1,   106,    -1,   134,    -1,   135,    -1,   138,    -1,
-     136,    -1,   137,    -1,   139,    -1,   140,    -1,   141,    -1,
-     145,    -1,   124,    -1,   125,    -1,   126,    -1,   127,    -1,
-     142,    -1,   148,    -1,   121,    -1,   123,    -1,   149,    -1,
-     151,    -1,   152,    -1,   153,    -1,   107,    -1,   128,    -1,
-     155,    -1,   156,    -1,   122,    -1,   154,    -1,   114,    -1,
-     101,    -1,   120,    -1,   146,    -1,   150,    -1,   143,    -1,
-     147,    -1,   157,    -1,   158,    -1,   108,    -1,    97,    -1,
-     113,    -1,   144,    -1,    98,    -1,   104,    -1,   105,    -1,
-      39,    -1,    90,    91,    -1,    -1,   159,    -1,   160,    -1,
-     161,    -1,    45,    -1,    93,    94,    -1,    -1,   162,    -1,
-     163,    -1,   164,    -1,    13,    10,    -1,    12,    10,    -1,
-      77,    10,    -1,    80,    10,    -1,    14,    10,    -1,    17,
-      10,    -1,    68,    10,    -1,    15,    10,    -1,    16,    10,
-      -1,    81,    10,    -1,    82,    10,    -1,    32,    10,    -1,
-      61,    10,    -1,    76,    10,    -1,    18,    10,    -1,    19,
-      10,    -1,    20,    10,    -1,    21,    10,    -1,    78,    10,
-      -1,    67,    10,    -1,    22,    10,    -1,    23,    10,    -1,
-      24,    10,    -1,    25,    10,    -1,    26,    10,    -1,    69,
-      10,    -1,    55,    10,    -1,    65,    10,    -1,    56,    10,
-      -1,    49,    10,    -1,    50,    10,    -1,    51,    10,    -1,
-      52,    10,    -1,    62,    10,    -1,    27,    10,    -1,    28,
-      10,    -1,    29,    10,    -1,    30,    10,    -1,    31,    10,
-      -1,    33,    10,    -1,    34,    10,    -1,    36,    10,    -1,
-      37,    10,    -1,    35,    10,    -1,    42,    10,    -1,    43,
-      10,    -1,    44,    10,    -1,    53,    10,    -1,    72,    10,
-      -1,    79,    10,    -1,    48,    10,    -1,    70,    10,    -1,
-      73,    10,    10,    -1,    54,    10,    -1,    57,    10,    -1,
-      71,    10,    -1,    58,    10,    -1,    59,    10,    -1,    60,
-      10,    -1,    66,    10,    -1,    63,    10,    -1,    64,    10,
-      -1,    74,    10,    10,    -1,    75,    10,    -1,    38,    10,
-      -1,    40,    10,    -1,    41,    10,    -1,    38,    10,    -1,
-      46,    10,    -1,    47,    10,    -1
+      83,     0,    -1,    -1,    83,    84,    -1,    85,    86,    -1,
+      88,    89,    -1,    91,    92,    -1,    11,    -1,    86,    87,
+      -1,    -1,    94,    -1,    95,    -1,    98,    -1,   101,    -1,
+     107,    -1,   108,    -1,   109,    -1,   110,    -1,    99,    -1,
+     113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,
+     127,    -1,   128,    -1,   129,    -1,   130,    -1,   131,    -1,
+     104,    -1,   132,    -1,   133,    -1,   136,    -1,   134,    -1,
+     135,    -1,   137,    -1,   138,    -1,   139,    -1,   143,    -1,
+     122,    -1,   123,    -1,   124,    -1,   125,    -1,   140,    -1,
+     146,    -1,   119,    -1,   121,    -1,   147,    -1,   149,    -1,
+     150,    -1,   151,    -1,   105,    -1,   126,    -1,   153,    -1,
+     154,    -1,   120,    -1,   152,    -1,   112,    -1,   100,    -1,
+     118,    -1,   144,    -1,   148,    -1,   141,    -1,   145,    -1,
+     155,    -1,   156,    -1,   106,    -1,    96,    -1,   111,    -1,
+     142,    -1,    97,    -1,   102,    -1,   103,    -1,    38,    -1,
+      89,    90,    -1,    -1,   157,    -1,   158,    -1,   159,    -1,
+      44,    -1,    92,    93,    -1,    -1,   160,    -1,   161,    -1,
+     162,    -1,    13,    10,    -1,    12,    10,    -1,    76,    10,
+      -1,    79,    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,    77,    10,    -1,    66,    10,    -1,    21,
+      10,    -1,    22,    10,    -1,    23,    10,    -1,    24,    10,
+      -1,    25,    10,    -1,    68,    10,    -1,    54,    10,    -1,
+      64,    10,    -1,    55,    10,    -1,    48,    10,    -1,    49,
+      10,    -1,    50,    10,    -1,    51,    10,    -1,    61,    10,
+      -1,    26,    10,    -1,    27,    10,    -1,    28,    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,    78,    10,    -1,    47,
+      10,    -1,    69,    10,    -1,    72,    10,    10,    -1,    53,
+      10,    -1,    56,    10,    -1,    70,    10,    -1,    57,    10,
+      -1,    58,    10,    -1,    59,    10,    -1,    65,    10,    -1,
+      62,    10,    -1,    63,    10,    -1,    73,    10,    10,    -1,
+      74,    10,    -1,    37,    10,    -1,    39,    10,    -1,    40,
+      10,    -1,    37,    10,    -1,    45,    10,    -1,    46,    10,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,    96,    96,    96,    97,    97,    98,   102,   107,   108,
-     109,   109,   109,   110,   110,   110,   111,   111,   111,   112,
-     112,   112,   113,   113,   113,   114,   114,   115,   115,   116,
-     116,   117,   117,   118,   118,   119,   119,   120,   120,   121,
-     121,   122,   122,   122,   123,   123,   123,   124,   124,   124,
-     125,   125,   126,   126,   127,   127,   128,   128,   129,   129,
-     129,   130,   130,   131,   131,   132,   132,   132,   133,   133,
-     134,   134,   135,   135,   137,   149,   150,   151,   151,   151,
-     153,   165,   166,   167,   167,   167,   169,   178,   187,   198,
-     207,   216,   229,   244,   253,   262,   271,   280,   289,   298,
-     307,   316,   325,   334,   343,   352,   366,   373,   380,   387,
-     395,   402,   409,   417,   425,   432,   441,   450,   457,   464,
-     475,   483,   496,   505,   513,   526,   535,   544,   553,   562,
-     575,   582,   592,   602,   612,   622,   632,   639,   649,   662,
-     669,   687,   696,   705,   715,   725,   732,   740,   753,   772,
-     779,   786,   793,   800,   807,   814
+     109,   109,   109,   110,   110,   111,   111,   111,   112,   112,
+     112,   113,   113,   113,   114,   114,   115,   115,   116,   116,
+     117,   117,   118,   118,   119,   119,   120,   120,   121,   121,
+     122,   122,   122,   123,   123,   123,   124,   124,   124,   125,
+     125,   126,   126,   127,   127,   128,   128,   129,   129,   129,
+     130,   130,   131,   131,   132,   132,   132,   133,   133,   134,
+     134,   135,   135,   137,   149,   150,   151,   151,   151,   153,
+     165,   166,   167,   167,   167,   169,   178,   187,   198,   207,
+     216,   229,   244,   253,   262,   271,   280,   289,   298,   307,
+     316,   325,   334,   343,   357,   364,   371,   378,   386,   393,
+     400,   408,   416,   423,   432,   441,   448,   455,   466,   474,
+     487,   496,   504,   517,   526,   535,   544,   553,   566,   573,
+     583,   593,   603,   613,   623,   630,   640,   653,   660,   678,
+     687,   696,   706,   716,   723,   731,   744,   763,   770,   777,
+     784,   791,   798,   805
 };
 #endif
 
@@ -668,10 +666,10 @@ static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
   "COLON", "ANY", "ZONESTR", "STRING", "VAR_SERVER", "VAR_VERBOSITY",
-  "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_PORT", "VAR_OUTGOING_RANGE",
-  "VAR_INTERFACE", "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_UDP", "VAR_DO_TCP",
-  "VAR_CHROOT", "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE",
-  "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
+  "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE",
+  "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_CHROOT",
+  "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
+  "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
   "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
   "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
   "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
@@ -697,11 +695,10 @@ static const char *const yytname[] =
   "content_forward", "server_num_threads", "server_verbosity",
   "server_statistics_interval", "server_statistics_cumulative",
   "server_port", "server_interface", "server_outgoing_interface",
-  "server_outgoing_port", "server_outgoing_range",
-  "server_outgoing_port_permit", "server_outgoing_port_avoid",
-  "server_outgoing_num_tcp", "server_incoming_num_tcp",
-  "server_interface_automatic", "server_do_ip4", "server_do_ip6",
-  "server_do_udp", "server_do_tcp", "server_do_daemonize",
+  "server_outgoing_range", "server_outgoing_port_permit",
+  "server_outgoing_port_avoid", "server_outgoing_num_tcp",
+  "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4",
+  "server_do_ip6", "server_do_udp", "server_do_tcp", "server_do_daemonize",
   "server_use_syslog", "server_chroot", "server_username",
   "server_directory", "server_logfile", "server_pidfile",
   "server_root_hints", "server_trust_anchor_file",
@@ -739,29 +736,29 @@ static const yytype_uint16 yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337
+     335,   336
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    83,    84,    84,    85,    85,    85,    86,    87,    87,
-      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    88,    88,    88,    89,    90,    90,    91,    91,    91,
-      92,    93,    93,    94,    94,    94,    95,    96,    97,    98,
+       0,    82,    83,    83,    84,    84,    84,    85,    86,    86,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    88,    89,    89,    90,    90,    90,    91,
+      92,    92,    93,    93,    93,    94,    95,    96,    97,    98,
       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
      109,   110,   111,   112,   113,   114,   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,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164
+     159,   160,   161,   162
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -774,15 +771,15 @@ 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,     2,     0,     1,     1,     1,
-       1,     2,     0,     1,     1,     1,     2,     2,     2,     2,
+       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
+       2,     0,     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,     3,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
-       2,     2,     2,     2,     2,     2
+       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
+       2,     2,     2,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -790,43 +787,43 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     7,    74,    80,     3,     9,    76,    82,
+       2,     0,     1,     7,    73,    79,     3,     9,    75,    81,
        4,     5,     6,     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,     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,     8,    10,    11,
-      68,    71,    12,    19,    59,    13,    14,    72,    73,    30,
-      52,    67,    15,    16,    17,    18,    69,    58,    20,    21,
-      22,    23,    24,    60,    46,    56,    47,    40,    41,    42,
-      43,    53,    25,    26,    27,    28,    29,    31,    32,    34,
-      35,    33,    36,    37,    38,    44,    63,    70,    39,    61,
-      64,    45,    48,    62,    49,    50,    51,    57,    54,    55,
-      65,    66,     0,     0,     0,    75,    77,    78,    79,     0,
-       0,     0,    81,    83,    84,    85,    87,    86,    90,    93,
-      94,    91,   100,   101,   102,   103,   106,   107,   108,   109,
-     110,   120,   121,   122,   123,   124,    97,   125,   126,   129,
-     127,   128,   130,   131,   132,   136,   115,   116,   117,   118,
-     133,   139,   112,   114,   140,   142,   143,   144,    98,   119,
-     146,   147,   113,   145,   105,    92,   111,   137,   141,   134,
-       0,     0,   149,    99,    88,   104,   135,    89,    95,    96,
-     150,   151,   152,   153,   154,   155,   138,   148
+       0,     0,     0,     0,     0,     0,     8,    10,    11,    67,
+      70,    12,    18,    58,    13,    71,    72,    29,    51,    66,
+      14,    15,    16,    17,    68,    57,    19,    20,    21,    22,
+      23,    59,    45,    55,    46,    39,    40,    41,    42,    52,
+      24,    25,    26,    27,    28,    30,    31,    33,    34,    32,
+      35,    36,    37,    43,    62,    69,    38,    60,    63,    44,
+      47,    61,    48,    49,    50,    56,    53,    54,    64,    65,
+       0,     0,     0,    74,    76,    77,    78,     0,     0,     0,
+      80,    82,    83,    84,    86,    85,    89,    92,    90,    98,
+      99,   100,   101,   104,   105,   106,   107,   108,   118,   119,
+     120,   121,   122,    95,   123,   124,   127,   125,   126,   128,
+     129,   130,   134,   113,   114,   115,   116,   131,   137,   110,
+     112,   138,   140,   141,   142,    96,   117,   144,   145,   111,
+     143,   103,    91,   109,   135,   139,   132,     0,     0,   147,
+      97,    87,   102,   133,    88,    93,    94,   148,   149,   150,
+     151,   152,   153,   136,   146
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     6,     7,    10,    77,     8,    11,   145,     9,
-      12,   152,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   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,   146,   147,   148,   153,
-     154,   155
+      -1,     1,     6,     7,    10,    76,     8,    11,   143,     9,
+      12,   150,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     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,   144,   145,   146,   151,   152,
+     153
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -834,29 +831,29 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -13
 static const yytype_int16 yypact[] =
 {
-     -13,    71,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -12,    35,    34,    16,    17,    18,    19,    23,    24,    25,
-      64,    67,    68,    69,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   101,   102,   103,   104,   105,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   -13,   -13,   -13,
+     -13,    70,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -12,    35,    34,    15,    16,    17,    18,    22,    23,    24,
+      63,    66,    67,    68,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      99,   100,   101,   102,   103,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   128,   129,   130,   -13,   -13,   -13,   -13,   131,
-     132,   133,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     126,   127,   128,   -13,   -13,   -13,   -13,   129,   130,   131,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     134,   135,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13
+     -13,   -13,   -13,   -13,   -13,   -13,   -13,   132,   133,   -13,
+     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -13,   -13,   -13,   -13,   -13
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -870,7 +867,7 @@ static const yytype_int8 yypgoto[] =
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13
+     -13
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -882,67 +879,67 @@ static const yytype_uint8 yytable[] =
 {
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,   156,   157,   158,   159,
-      39,    40,    41,   160,   161,   162,    42,    43,    44,    45,
+      33,    34,    35,    36,    37,   154,   155,   156,   157,    38,
+      39,    40,   158,   159,   160,    41,    42,    43,    44,    45,
       46,    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,     2,   149,   142,   163,   143,   144,   164,   165,   166,
-     150,   151,     3,   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,
-       4,   194,   195,   196,   197,   198,     5,   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
+       2,   147,   140,   161,   141,   142,   162,   163,   164,   148,
+     149,     3,   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,     4,   191,
+     192,   193,   194,   195,     5,   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
 };
 
 static const yytype_uint8 yycheck[] =
 {
       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,    37,    10,    10,    10,    10,
-      42,    43,    44,    10,    10,    10,    48,    49,    50,    51,
+      32,    33,    34,    35,    36,    10,    10,    10,    10,    41,
+      42,    43,    10,    10,    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,    77,    78,    79,    80,    81,
-      82,     0,    38,    38,    10,    40,    41,    10,    10,    10,
-      46,    47,    11,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+       0,    37,    37,    10,    39,    40,    10,    10,    10,    45,
+      46,    11,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      39,    10,    10,    10,    10,    10,    45,    10,    10,    10,
+      10,    10,    10,    10,    10,    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,
       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_uint8 yystos[] =
 {
-       0,    84,     0,    11,    39,    45,    85,    86,    89,    92,
-      87,    90,    93,    12,    13,    14,    15,    16,    17,    18,
+       0,    83,     0,    11,    38,    44,    84,    85,    88,    91,
+      86,    89,    92,    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,    37,    42,
-      43,    44,    48,    49,    50,    51,    52,    53,    54,    55,
+      29,    30,    31,    32,    33,    34,    35,    36,    41,    42,
+      43,    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,    77,    78,    79,    80,    81,    82,    88,    95,    96,
+      76,    77,    78,    79,    80,    81,    87,    94,    95,    96,
       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
      107,   108,   109,   110,   111,   112,   113,   114,   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,   150,   151,   152,   153,   154,   155,   156,
-     157,   158,    38,    40,    41,    91,   159,   160,   161,    38,
-      46,    47,    94,   162,   163,   164,    10,    10,    10,    10,
+      37,    39,    40,    90,   157,   158,   159,    37,    45,    46,
+      93,   160,   161,   162,    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,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10
+      10,    10,    10,    10,    10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1763,7 +1760,7 @@ yyreduce:
        }
     break;
 
-  case 74:
+  case 73:
 #line 138 "util/configparser.y"
     {
                struct config_stub* s;
@@ -1777,7 +1774,7 @@ yyreduce:
        }
     break;
 
-  case 80:
+  case 79:
 #line 154 "util/configparser.y"
     {
                struct config_stub* s;
@@ -1791,7 +1788,7 @@ yyreduce:
        }
     break;
 
-  case 86:
+  case 85:
 #line 170 "util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
@@ -1802,7 +1799,7 @@ yyreduce:
        }
     break;
 
-  case 87:
+  case 86:
 #line 179 "util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
@@ -1813,7 +1810,7 @@ yyreduce:
        }
     break;
 
-  case 88:
+  case 87:
 #line 188 "util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
@@ -1826,7 +1823,7 @@ yyreduce:
        }
     break;
 
-  case 89:
+  case 88:
 #line 199 "util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1837,7 +1834,7 @@ yyreduce:
        }
     break;
 
-  case 90:
+  case 89:
 #line 208 "util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1848,7 +1845,7 @@ yyreduce:
        }
     break;
 
-  case 91:
+  case 90:
 #line 217 "util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1863,7 +1860,7 @@ yyreduce:
        }
     break;
 
-  case 92:
+  case 91:
 #line 230 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1880,19 +1877,8 @@ yyreduce:
        }
     break;
 
-  case 93:
+  case 92:
 #line 245 "util/configparser.y"
-    {
-               OUTYY(("P(server_outgoing_port:%s)\n", (yyvsp[(2) - (2)].str)));
-               if(atoi((yyvsp[(2) - (2)].str)) == 0)
-                       yyerror("port number expected");
-               else cfg_parser->cfg->outgoing_base_port = atoi((yyvsp[(2) - (2)].str));
-               free((yyvsp[(2) - (2)].str));
-       }
-    break;
-
-  case 94:
-#line 254 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -1902,8 +1888,8 @@ yyreduce:
        }
     break;
 
-  case 95:
-#line 263 "util/configparser.y"
+  case 93:
+#line 254 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -1913,8 +1899,8 @@ yyreduce:
        }
     break;
 
-  case 96:
-#line 272 "util/configparser.y"
+  case 94:
+#line 263 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -1924,8 +1910,8 @@ yyreduce:
        }
     break;
 
-  case 97:
-#line 281 "util/configparser.y"
+  case 95:
+#line 272 "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)
@@ -1935,8 +1921,8 @@ yyreduce:
        }
     break;
 
-  case 98:
-#line 290 "util/configparser.y"
+  case 96:
+#line 281 "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)
@@ -1946,8 +1932,8 @@ yyreduce:
        }
     break;
 
-  case 99:
-#line 299 "util/configparser.y"
+  case 97:
+#line 290 "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)
@@ -1957,8 +1943,8 @@ yyreduce:
        }
     break;
 
-  case 100:
-#line 308 "util/configparser.y"
+  case 98:
+#line 299 "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)
@@ -1968,8 +1954,8 @@ yyreduce:
        }
     break;
 
-  case 101:
-#line 317 "util/configparser.y"
+  case 99:
+#line 308 "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)
@@ -1979,8 +1965,8 @@ yyreduce:
        }
     break;
 
-  case 102:
-#line 326 "util/configparser.y"
+  case 100:
+#line 317 "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)
@@ -1990,8 +1976,8 @@ yyreduce:
        }
     break;
 
-  case 103:
-#line 335 "util/configparser.y"
+  case 101:
+#line 326 "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)
@@ -2001,8 +1987,8 @@ yyreduce:
        }
     break;
 
-  case 104:
-#line 344 "util/configparser.y"
+  case 102:
+#line 335 "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)
@@ -2012,8 +1998,8 @@ yyreduce:
        }
     break;
 
-  case 105:
-#line 353 "util/configparser.y"
+  case 103:
+#line 344 "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)
@@ -2028,8 +2014,8 @@ yyreduce:
        }
     break;
 
-  case 106:
-#line 367 "util/configparser.y"
+  case 104:
+#line 358 "util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2037,8 +2023,8 @@ yyreduce:
        }
     break;
 
-  case 107:
-#line 374 "util/configparser.y"
+  case 105:
+#line 365 "util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2046,8 +2032,8 @@ yyreduce:
        }
     break;
 
-  case 108:
-#line 381 "util/configparser.y"
+  case 106:
+#line 372 "util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2055,8 +2041,8 @@ yyreduce:
        }
     break;
 
-  case 109:
-#line 388 "util/configparser.y"
+  case 107:
+#line 379 "util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2065,8 +2051,8 @@ yyreduce:
        }
     break;
 
-  case 110:
-#line 396 "util/configparser.y"
+  case 108:
+#line 387 "util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2074,8 +2060,8 @@ yyreduce:
        }
     break;
 
-  case 111:
-#line 403 "util/configparser.y"
+  case 109:
+#line 394 "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)))
@@ -2083,8 +2069,8 @@ yyreduce:
        }
     break;
 
-  case 112:
-#line 410 "util/configparser.y"
+  case 110:
+#line 401 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2093,8 +2079,8 @@ yyreduce:
        }
     break;
 
-  case 113:
-#line 418 "util/configparser.y"
+  case 111:
+#line 409 "util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2103,8 +2089,8 @@ yyreduce:
        }
     break;
 
-  case 114:
-#line 426 "util/configparser.y"
+  case 112:
+#line 417 "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)))
@@ -2112,8 +2098,8 @@ yyreduce:
        }
     break;
 
-  case 115:
-#line 433 "util/configparser.y"
+  case 113:
+#line 424 "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)
@@ -2123,8 +2109,8 @@ yyreduce:
        }
     break;
 
-  case 116:
-#line 442 "util/configparser.y"
+  case 114:
+#line 433 "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)
@@ -2134,8 +2120,8 @@ yyreduce:
        }
     break;
 
-  case 117:
-#line 451 "util/configparser.y"
+  case 115:
+#line 442 "util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2143,8 +2129,8 @@ yyreduce:
        }
     break;
 
-  case 118:
-#line 458 "util/configparser.y"
+  case 116:
+#line 449 "util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2152,8 +2138,8 @@ yyreduce:
        }
     break;
 
-  case 119:
-#line 465 "util/configparser.y"
+  case 117:
+#line 456 "util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2165,8 +2151,8 @@ yyreduce:
        }
     break;
 
-  case 120:
-#line 476 "util/configparser.y"
+  case 118:
+#line 467 "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))
@@ -2175,8 +2161,8 @@ yyreduce:
        }
     break;
 
-  case 121:
-#line 484 "util/configparser.y"
+  case 119:
+#line 475 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2190,8 +2176,8 @@ yyreduce:
        }
     break;
 
-  case 122:
-#line 497 "util/configparser.y"
+  case 120:
+#line 488 "util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2201,8 +2187,8 @@ yyreduce:
        }
     break;
 
-  case 123:
-#line 506 "util/configparser.y"
+  case 121:
+#line 497 "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))
@@ -2211,8 +2197,8 @@ yyreduce:
        }
     break;
 
-  case 124:
-#line 514 "util/configparser.y"
+  case 122:
+#line 505 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2226,8 +2212,8 @@ yyreduce:
        }
     break;
 
-  case 125:
-#line 527 "util/configparser.y"
+  case 123:
+#line 518 "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)
@@ -2237,8 +2223,8 @@ yyreduce:
        }
     break;
 
-  case 126:
-#line 536 "util/configparser.y"
+  case 124:
+#line 527 "util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2248,8 +2234,8 @@ yyreduce:
        }
     break;
 
-  case 127:
-#line 545 "util/configparser.y"
+  case 125:
+#line 536 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2259,8 +2245,8 @@ yyreduce:
        }
     break;
 
-  case 128:
-#line 554 "util/configparser.y"
+  case 126:
+#line 545 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->
@@ -2270,8 +2256,8 @@ yyreduce:
        }
     break;
 
-  case 129:
-#line 563 "util/configparser.y"
+  case 127:
+#line 554 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2285,8 +2271,8 @@ yyreduce:
        }
     break;
 
-  case 130:
-#line 576 "util/configparser.y"
+  case 128:
+#line 567 "util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2294,8 +2280,8 @@ yyreduce:
        }
     break;
 
-  case 131:
-#line 583 "util/configparser.y"
+  case 129:
+#line 574 "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)
@@ -2306,8 +2292,8 @@ yyreduce:
        }
     break;
 
-  case 132:
-#line 593 "util/configparser.y"
+  case 130:
+#line 584 "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)
@@ -2318,8 +2304,8 @@ yyreduce:
        }
     break;
 
-  case 133:
-#line 603 "util/configparser.y"
+  case 131:
+#line 594 "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)
@@ -2330,8 +2316,8 @@ yyreduce:
        }
     break;
 
-  case 134:
-#line 613 "util/configparser.y"
+  case 132:
+#line 604 "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)
@@ -2342,8 +2328,8 @@ yyreduce:
        }
     break;
 
-  case 135:
-#line 623 "util/configparser.y"
+  case 133:
+#line 614 "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)
@@ -2354,8 +2340,8 @@ yyreduce:
        }
     break;
 
-  case 136:
-#line 633 "util/configparser.y"
+  case 134:
+#line 624 "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)))
@@ -2363,8 +2349,8 @@ yyreduce:
        }
     break;
 
-  case 137:
-#line 640 "util/configparser.y"
+  case 135:
+#line 631 "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)
@@ -2375,8 +2361,8 @@ yyreduce:
        }
     break;
 
-  case 138:
-#line 650 "util/configparser.y"
+  case 136:
+#line 641 "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 &&
@@ -2390,8 +2376,8 @@ yyreduce:
        }
     break;
 
-  case 139:
-#line 663 "util/configparser.y"
+  case 137:
+#line 654 "util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -2399,8 +2385,8 @@ yyreduce:
        }
     break;
 
-  case 140:
-#line 670 "util/configparser.y"
+  case 138:
+#line 661 "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) {
@@ -2419,8 +2405,8 @@ yyreduce:
        }
     break;
 
-  case 141:
-#line 688 "util/configparser.y"
+  case 139:
+#line 679 "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)
@@ -2430,8 +2416,8 @@ yyreduce:
        }
     break;
 
-  case 142:
-#line 697 "util/configparser.y"
+  case 140:
+#line 688 "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)
@@ -2441,8 +2427,8 @@ yyreduce:
        }
     break;
 
-  case 143:
-#line 706 "util/configparser.y"
+  case 141:
+#line 697 "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)
@@ -2453,8 +2439,8 @@ yyreduce:
        }
     break;
 
-  case 144:
-#line 716 "util/configparser.y"
+  case 142:
+#line 707 "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)
@@ -2465,8 +2451,8 @@ yyreduce:
        }
     break;
 
-  case 145:
-#line 726 "util/configparser.y"
+  case 143:
+#line 717 "util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -2474,8 +2460,8 @@ yyreduce:
        }
     break;
 
-  case 146:
-#line 733 "util/configparser.y"
+  case 144:
+#line 724 "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))
@@ -2484,8 +2470,8 @@ yyreduce:
        }
     break;
 
-  case 147:
-#line 741 "util/configparser.y"
+  case 145:
+#line 732 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2499,8 +2485,8 @@ yyreduce:
        }
     break;
 
-  case 148:
-#line 754 "util/configparser.y"
+  case 146:
+#line 745 "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 &&
@@ -2520,8 +2506,8 @@ yyreduce:
        }
     break;
 
-  case 149:
-#line 773 "util/configparser.y"
+  case 147:
+#line 764 "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)))
@@ -2529,8 +2515,8 @@ yyreduce:
        }
     break;
 
-  case 150:
-#line 780 "util/configparser.y"
+  case 148:
+#line 771 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->stubs->name);
@@ -2538,8 +2524,8 @@ yyreduce:
        }
     break;
 
-  case 151:
-#line 787 "util/configparser.y"
+  case 149:
+#line 778 "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)))
@@ -2547,8 +2533,8 @@ yyreduce:
        }
     break;
 
-  case 152:
-#line 794 "util/configparser.y"
+  case 150:
+#line 785 "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)))
@@ -2556,8 +2542,8 @@ yyreduce:
        }
     break;
 
-  case 153:
-#line 801 "util/configparser.y"
+  case 151:
+#line 792 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->forwards->name);
@@ -2565,8 +2551,8 @@ yyreduce:
        }
     break;
 
-  case 154:
-#line 808 "util/configparser.y"
+  case 152:
+#line 799 "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)))
@@ -2574,8 +2560,8 @@ yyreduce:
        }
     break;
 
-  case 155:
-#line 815 "util/configparser.y"
+  case 153:
+#line 806 "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)))
@@ -2585,7 +2571,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2589 "util/configparser.c"
+#line 2575 "util/configparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2799,7 +2785,7 @@ yyreturn:
 }
 
 
-#line 821 "util/configparser.y"
+#line 812 "util/configparser.y"
 
 
 /* parse helper routines could be here */
index 9ddff4f6a78eed2e3b3e7f3b31d9820386fa1962..682a315b1f30352a664dd4488453f66e9b362ca1 100644 (file)
      VAR_VERBOSITY = 267,
      VAR_NUM_THREADS = 268,
      VAR_PORT = 269,
-     VAR_OUTGOING_PORT = 270,
-     VAR_OUTGOING_RANGE = 271,
-     VAR_INTERFACE = 272,
-     VAR_DO_IP4 = 273,
-     VAR_DO_IP6 = 274,
-     VAR_DO_UDP = 275,
-     VAR_DO_TCP = 276,
-     VAR_CHROOT = 277,
-     VAR_USERNAME = 278,
-     VAR_DIRECTORY = 279,
-     VAR_LOGFILE = 280,
-     VAR_PIDFILE = 281,
-     VAR_MSG_CACHE_SIZE = 282,
-     VAR_MSG_CACHE_SLABS = 283,
-     VAR_NUM_QUERIES_PER_THREAD = 284,
-     VAR_RRSET_CACHE_SIZE = 285,
-     VAR_RRSET_CACHE_SLABS = 286,
-     VAR_OUTGOING_NUM_TCP = 287,
-     VAR_INFRA_HOST_TTL = 288,
-     VAR_INFRA_LAME_TTL = 289,
-     VAR_INFRA_CACHE_SLABS = 290,
-     VAR_INFRA_CACHE_NUMHOSTS = 291,
-     VAR_INFRA_CACHE_LAME_SIZE = 292,
-     VAR_NAME = 293,
-     VAR_STUB_ZONE = 294,
-     VAR_STUB_HOST = 295,
-     VAR_STUB_ADDR = 296,
-     VAR_TARGET_FETCH_POLICY = 297,
-     VAR_HARDEN_SHORT_BUFSIZE = 298,
-     VAR_HARDEN_LARGE_QUERIES = 299,
-     VAR_FORWARD_ZONE = 300,
-     VAR_FORWARD_HOST = 301,
-     VAR_FORWARD_ADDR = 302,
-     VAR_DO_NOT_QUERY_ADDRESS = 303,
-     VAR_HIDE_IDENTITY = 304,
-     VAR_HIDE_VERSION = 305,
-     VAR_IDENTITY = 306,
-     VAR_VERSION = 307,
-     VAR_HARDEN_GLUE = 308,
-     VAR_MODULE_CONF = 309,
-     VAR_TRUST_ANCHOR_FILE = 310,
-     VAR_TRUST_ANCHOR = 311,
-     VAR_VAL_OVERRIDE_DATE = 312,
-     VAR_BOGUS_TTL = 313,
-     VAR_VAL_CLEAN_ADDITIONAL = 314,
-     VAR_VAL_PERMISSIVE_MODE = 315,
-     VAR_INCOMING_NUM_TCP = 316,
-     VAR_MSG_BUFFER_SIZE = 317,
-     VAR_KEY_CACHE_SIZE = 318,
-     VAR_KEY_CACHE_SLABS = 319,
-     VAR_TRUSTED_KEYS_FILE = 320,
-     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 321,
-     VAR_USE_SYSLOG = 322,
-     VAR_OUTGOING_INTERFACE = 323,
-     VAR_ROOT_HINTS = 324,
-     VAR_DO_NOT_QUERY_LOCALHOST = 325,
-     VAR_CACHE_MAX_TTL = 326,
-     VAR_HARDEN_DNNSEC_STRIPPED = 327,
-     VAR_ACCESS_CONTROL = 328,
-     VAR_LOCAL_ZONE = 329,
-     VAR_LOCAL_DATA = 330,
-     VAR_INTERFACE_AUTOMATIC = 331,
-     VAR_STATISTICS_INTERVAL = 332,
-     VAR_DO_DAEMONIZE = 333,
-     VAR_USE_CAPS_FOR_ID = 334,
-     VAR_STATISTICS_CUMULATIVE = 335,
-     VAR_OUTGOING_PORT_PERMIT = 336,
-     VAR_OUTGOING_PORT_AVOID = 337
+     VAR_OUTGOING_RANGE = 270,
+     VAR_INTERFACE = 271,
+     VAR_DO_IP4 = 272,
+     VAR_DO_IP6 = 273,
+     VAR_DO_UDP = 274,
+     VAR_DO_TCP = 275,
+     VAR_CHROOT = 276,
+     VAR_USERNAME = 277,
+     VAR_DIRECTORY = 278,
+     VAR_LOGFILE = 279,
+     VAR_PIDFILE = 280,
+     VAR_MSG_CACHE_SIZE = 281,
+     VAR_MSG_CACHE_SLABS = 282,
+     VAR_NUM_QUERIES_PER_THREAD = 283,
+     VAR_RRSET_CACHE_SIZE = 284,
+     VAR_RRSET_CACHE_SLABS = 285,
+     VAR_OUTGOING_NUM_TCP = 286,
+     VAR_INFRA_HOST_TTL = 287,
+     VAR_INFRA_LAME_TTL = 288,
+     VAR_INFRA_CACHE_SLABS = 289,
+     VAR_INFRA_CACHE_NUMHOSTS = 290,
+     VAR_INFRA_CACHE_LAME_SIZE = 291,
+     VAR_NAME = 292,
+     VAR_STUB_ZONE = 293,
+     VAR_STUB_HOST = 294,
+     VAR_STUB_ADDR = 295,
+     VAR_TARGET_FETCH_POLICY = 296,
+     VAR_HARDEN_SHORT_BUFSIZE = 297,
+     VAR_HARDEN_LARGE_QUERIES = 298,
+     VAR_FORWARD_ZONE = 299,
+     VAR_FORWARD_HOST = 300,
+     VAR_FORWARD_ADDR = 301,
+     VAR_DO_NOT_QUERY_ADDRESS = 302,
+     VAR_HIDE_IDENTITY = 303,
+     VAR_HIDE_VERSION = 304,
+     VAR_IDENTITY = 305,
+     VAR_VERSION = 306,
+     VAR_HARDEN_GLUE = 307,
+     VAR_MODULE_CONF = 308,
+     VAR_TRUST_ANCHOR_FILE = 309,
+     VAR_TRUST_ANCHOR = 310,
+     VAR_VAL_OVERRIDE_DATE = 311,
+     VAR_BOGUS_TTL = 312,
+     VAR_VAL_CLEAN_ADDITIONAL = 313,
+     VAR_VAL_PERMISSIVE_MODE = 314,
+     VAR_INCOMING_NUM_TCP = 315,
+     VAR_MSG_BUFFER_SIZE = 316,
+     VAR_KEY_CACHE_SIZE = 317,
+     VAR_KEY_CACHE_SLABS = 318,
+     VAR_TRUSTED_KEYS_FILE = 319,
+     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320,
+     VAR_USE_SYSLOG = 321,
+     VAR_OUTGOING_INTERFACE = 322,
+     VAR_ROOT_HINTS = 323,
+     VAR_DO_NOT_QUERY_LOCALHOST = 324,
+     VAR_CACHE_MAX_TTL = 325,
+     VAR_HARDEN_DNNSEC_STRIPPED = 326,
+     VAR_ACCESS_CONTROL = 327,
+     VAR_LOCAL_ZONE = 328,
+     VAR_LOCAL_DATA = 329,
+     VAR_INTERFACE_AUTOMATIC = 330,
+     VAR_STATISTICS_INTERVAL = 331,
+     VAR_DO_DAEMONIZE = 332,
+     VAR_USE_CAPS_FOR_ID = 333,
+     VAR_STATISTICS_CUMULATIVE = 334,
+     VAR_OUTGOING_PORT_PERMIT = 335,
+     VAR_OUTGOING_PORT_AVOID = 336
    };
 #endif
 /* Tokens.  */
 #define VAR_VERBOSITY 267
 #define VAR_NUM_THREADS 268
 #define VAR_PORT 269
-#define VAR_OUTGOING_PORT 270
-#define VAR_OUTGOING_RANGE 271
-#define VAR_INTERFACE 272
-#define VAR_DO_IP4 273
-#define VAR_DO_IP6 274
-#define VAR_DO_UDP 275
-#define VAR_DO_TCP 276
-#define VAR_CHROOT 277
-#define VAR_USERNAME 278
-#define VAR_DIRECTORY 279
-#define VAR_LOGFILE 280
-#define VAR_PIDFILE 281
-#define VAR_MSG_CACHE_SIZE 282
-#define VAR_MSG_CACHE_SLABS 283
-#define VAR_NUM_QUERIES_PER_THREAD 284
-#define VAR_RRSET_CACHE_SIZE 285
-#define VAR_RRSET_CACHE_SLABS 286
-#define VAR_OUTGOING_NUM_TCP 287
-#define VAR_INFRA_HOST_TTL 288
-#define VAR_INFRA_LAME_TTL 289
-#define VAR_INFRA_CACHE_SLABS 290
-#define VAR_INFRA_CACHE_NUMHOSTS 291
-#define VAR_INFRA_CACHE_LAME_SIZE 292
-#define VAR_NAME 293
-#define VAR_STUB_ZONE 294
-#define VAR_STUB_HOST 295
-#define VAR_STUB_ADDR 296
-#define VAR_TARGET_FETCH_POLICY 297
-#define VAR_HARDEN_SHORT_BUFSIZE 298
-#define VAR_HARDEN_LARGE_QUERIES 299
-#define VAR_FORWARD_ZONE 300
-#define VAR_FORWARD_HOST 301
-#define VAR_FORWARD_ADDR 302
-#define VAR_DO_NOT_QUERY_ADDRESS 303
-#define VAR_HIDE_IDENTITY 304
-#define VAR_HIDE_VERSION 305
-#define VAR_IDENTITY 306
-#define VAR_VERSION 307
-#define VAR_HARDEN_GLUE 308
-#define VAR_MODULE_CONF 309
-#define VAR_TRUST_ANCHOR_FILE 310
-#define VAR_TRUST_ANCHOR 311
-#define VAR_VAL_OVERRIDE_DATE 312
-#define VAR_BOGUS_TTL 313
-#define VAR_VAL_CLEAN_ADDITIONAL 314
-#define VAR_VAL_PERMISSIVE_MODE 315
-#define VAR_INCOMING_NUM_TCP 316
-#define VAR_MSG_BUFFER_SIZE 317
-#define VAR_KEY_CACHE_SIZE 318
-#define VAR_KEY_CACHE_SLABS 319
-#define VAR_TRUSTED_KEYS_FILE 320
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 321
-#define VAR_USE_SYSLOG 322
-#define VAR_OUTGOING_INTERFACE 323
-#define VAR_ROOT_HINTS 324
-#define VAR_DO_NOT_QUERY_LOCALHOST 325
-#define VAR_CACHE_MAX_TTL 326
-#define VAR_HARDEN_DNNSEC_STRIPPED 327
-#define VAR_ACCESS_CONTROL 328
-#define VAR_LOCAL_ZONE 329
-#define VAR_LOCAL_DATA 330
-#define VAR_INTERFACE_AUTOMATIC 331
-#define VAR_STATISTICS_INTERVAL 332
-#define VAR_DO_DAEMONIZE 333
-#define VAR_USE_CAPS_FOR_ID 334
-#define VAR_STATISTICS_CUMULATIVE 335
-#define VAR_OUTGOING_PORT_PERMIT 336
-#define VAR_OUTGOING_PORT_AVOID 337
+#define VAR_OUTGOING_RANGE 270
+#define VAR_INTERFACE 271
+#define VAR_DO_IP4 272
+#define VAR_DO_IP6 273
+#define VAR_DO_UDP 274
+#define VAR_DO_TCP 275
+#define VAR_CHROOT 276
+#define VAR_USERNAME 277
+#define VAR_DIRECTORY 278
+#define VAR_LOGFILE 279
+#define VAR_PIDFILE 280
+#define VAR_MSG_CACHE_SIZE 281
+#define VAR_MSG_CACHE_SLABS 282
+#define VAR_NUM_QUERIES_PER_THREAD 283
+#define VAR_RRSET_CACHE_SIZE 284
+#define VAR_RRSET_CACHE_SLABS 285
+#define VAR_OUTGOING_NUM_TCP 286
+#define VAR_INFRA_HOST_TTL 287
+#define VAR_INFRA_LAME_TTL 288
+#define VAR_INFRA_CACHE_SLABS 289
+#define VAR_INFRA_CACHE_NUMHOSTS 290
+#define VAR_INFRA_CACHE_LAME_SIZE 291
+#define VAR_NAME 292
+#define VAR_STUB_ZONE 293
+#define VAR_STUB_HOST 294
+#define VAR_STUB_ADDR 295
+#define VAR_TARGET_FETCH_POLICY 296
+#define VAR_HARDEN_SHORT_BUFSIZE 297
+#define VAR_HARDEN_LARGE_QUERIES 298
+#define VAR_FORWARD_ZONE 299
+#define VAR_FORWARD_HOST 300
+#define VAR_FORWARD_ADDR 301
+#define VAR_DO_NOT_QUERY_ADDRESS 302
+#define VAR_HIDE_IDENTITY 303
+#define VAR_HIDE_VERSION 304
+#define VAR_IDENTITY 305
+#define VAR_VERSION 306
+#define VAR_HARDEN_GLUE 307
+#define VAR_MODULE_CONF 308
+#define VAR_TRUST_ANCHOR_FILE 309
+#define VAR_TRUST_ANCHOR 310
+#define VAR_VAL_OVERRIDE_DATE 311
+#define VAR_BOGUS_TTL 312
+#define VAR_VAL_CLEAN_ADDITIONAL 313
+#define VAR_VAL_PERMISSIVE_MODE 314
+#define VAR_INCOMING_NUM_TCP 315
+#define VAR_MSG_BUFFER_SIZE 316
+#define VAR_KEY_CACHE_SIZE 317
+#define VAR_KEY_CACHE_SLABS 318
+#define VAR_TRUSTED_KEYS_FILE 319
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 320
+#define VAR_USE_SYSLOG 321
+#define VAR_OUTGOING_INTERFACE 322
+#define VAR_ROOT_HINTS 323
+#define VAR_DO_NOT_QUERY_LOCALHOST 324
+#define VAR_CACHE_MAX_TTL 325
+#define VAR_HARDEN_DNNSEC_STRIPPED 326
+#define VAR_ACCESS_CONTROL 327
+#define VAR_LOCAL_ZONE 328
+#define VAR_LOCAL_DATA 329
+#define VAR_INTERFACE_AUTOMATIC 330
+#define VAR_STATISTICS_INTERVAL 331
+#define VAR_DO_DAEMONIZE 332
+#define VAR_USE_CAPS_FOR_ID 333
+#define VAR_STATISTICS_CUMULATIVE 334
+#define VAR_OUTGOING_PORT_PERMIT 335
+#define VAR_OUTGOING_PORT_AVOID 336
 
 
 
@@ -213,7 +211,7 @@ typedef union YYSTYPE
        char*   str;
 }
 /* Line 1489 of yacc.c.  */
-#line 217 "util/configparser.h"
+#line 215 "util/configparser.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
index a6b2d8ddbb8997270856ba719e4f83c5a0999d88..32a5a28bb649af6dbfeaa9f2b235d755f1cf45ad 100644 (file)
@@ -68,7 +68,7 @@ extern struct config_parser_state* cfg_parser;
 %token SPACE LETTER NEWLINE COMMENT COLON ANY ZONESTR
 %token <str> STRING
 %token VAR_SERVER VAR_VERBOSITY VAR_NUM_THREADS VAR_PORT
-%token VAR_OUTGOING_PORT VAR_OUTGOING_RANGE VAR_INTERFACE
+%token VAR_OUTGOING_RANGE VAR_INTERFACE
 %token VAR_DO_IP4 VAR_DO_IP6 VAR_DO_UDP VAR_DO_TCP 
 %token VAR_CHROOT VAR_USERNAME VAR_DIRECTORY VAR_LOGFILE VAR_PIDFILE
 %token VAR_MSG_CACHE_SIZE VAR_MSG_CACHE_SLABS VAR_NUM_QUERIES_PER_THREAD
@@ -107,7 +107,7 @@ serverstart: VAR_SERVER
 contents_server: contents_server content_server 
        | ;
 content_server: server_num_threads | server_verbosity | server_port |
-       server_outgoing_port | server_outgoing_range | server_do_ip4 |
+       server_outgoing_range | server_do_ip4 |
        server_do_ip6 | server_do_udp | server_do_tcp | 
        server_interface | server_chroot | server_username | 
        server_directory | server_logfile | server_pidfile |
@@ -241,15 +241,6 @@ server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING
                                cfg_parser->cfg->num_out_ifs++] = $2;
        }
        ;
-server_outgoing_port: VAR_OUTGOING_PORT STRING
-       {
-               OUTYY(("P(server_outgoing_port:%s)\n", $2));
-               if(atoi($2) == 0)
-                       yyerror("port number expected");
-               else cfg_parser->cfg->outgoing_base_port = atoi($2);
-               free($2);
-       }
-       ;
 server_outgoing_range: VAR_OUTGOING_RANGE STRING
        {
                OUTYY(("P(server_outgoing_range:%s)\n", $2));