]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix #474: always_null and others inside view.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 28 Apr 2021 12:05:23 +0000 (14:05 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 28 Apr 2021 12:05:23 +0000 (14:05 +0200)
doc/Changelog
util/configparser.c
util/configparser.h
util/configparser.y

index 84572302d63475ba337a3cfef85e4c08b4b04a15..977a731367946c38f5eeb5216f274bbc7b13e113 100644 (file)
@@ -1,3 +1,6 @@
+28 April 2021: Wouter
+       - Fix #474: always_null and others inside view.
+
 26 April 2021: Wouter
        - Merge #470 from edevil: Allow configuration of persistent TCP
          connections.
index 3faf61c5e7d71731949dca22024db7c622bbc1aa..3acfe4452617a59995ea2f3ecd930edf7df6bbdc 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-/* Identify Bison output, and Bison version.  */
-#define YYBISON 30706
+/* Identify Bison output.  */
+#define YYBISON 1
 
-/* Bison version string.  */
-#define YYBISON_VERSION "3.7.6"
+/* Bison version.  */
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -67,7 +67,7 @@
 
 
 /* First part of user prologue.  */
-#line 38 "util/configparser.y"
+#line 38 "./util/configparser.y"
 
 #include "config.h"
 
@@ -119,7 +119,677 @@ extern struct config_parser_state* cfg_parser;
 #  endif
 # endif
 
-#include "configparser.h"
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
+#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
+# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token kinds.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    SPACE = 258,                   /* SPACE  */
+    LETTER = 259,                  /* LETTER  */
+    NEWLINE = 260,                 /* NEWLINE  */
+    COMMENT = 261,                 /* COMMENT  */
+    COLON = 262,                   /* COLON  */
+    ANY = 263,                     /* ANY  */
+    ZONESTR = 264,                 /* ZONESTR  */
+    STRING_ARG = 265,              /* STRING_ARG  */
+    VAR_FORCE_TOPLEVEL = 266,      /* VAR_FORCE_TOPLEVEL  */
+    VAR_SERVER = 267,              /* VAR_SERVER  */
+    VAR_VERBOSITY = 268,           /* VAR_VERBOSITY  */
+    VAR_NUM_THREADS = 269,         /* VAR_NUM_THREADS  */
+    VAR_PORT = 270,                /* VAR_PORT  */
+    VAR_OUTGOING_RANGE = 271,      /* VAR_OUTGOING_RANGE  */
+    VAR_INTERFACE = 272,           /* VAR_INTERFACE  */
+    VAR_PREFER_IP4 = 273,          /* VAR_PREFER_IP4  */
+    VAR_DO_IP4 = 274,              /* VAR_DO_IP4  */
+    VAR_DO_IP6 = 275,              /* VAR_DO_IP6  */
+    VAR_PREFER_IP6 = 276,          /* VAR_PREFER_IP6  */
+    VAR_DO_UDP = 277,              /* VAR_DO_UDP  */
+    VAR_DO_TCP = 278,              /* VAR_DO_TCP  */
+    VAR_TCP_MSS = 279,             /* VAR_TCP_MSS  */
+    VAR_OUTGOING_TCP_MSS = 280,    /* VAR_OUTGOING_TCP_MSS  */
+    VAR_TCP_IDLE_TIMEOUT = 281,    /* VAR_TCP_IDLE_TIMEOUT  */
+    VAR_EDNS_TCP_KEEPALIVE = 282,  /* VAR_EDNS_TCP_KEEPALIVE  */
+    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
+    VAR_CHROOT = 284,              /* VAR_CHROOT  */
+    VAR_USERNAME = 285,            /* VAR_USERNAME  */
+    VAR_DIRECTORY = 286,           /* VAR_DIRECTORY  */
+    VAR_LOGFILE = 287,             /* VAR_LOGFILE  */
+    VAR_PIDFILE = 288,             /* VAR_PIDFILE  */
+    VAR_MSG_CACHE_SIZE = 289,      /* VAR_MSG_CACHE_SIZE  */
+    VAR_MSG_CACHE_SLABS = 290,     /* VAR_MSG_CACHE_SLABS  */
+    VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD  */
+    VAR_RRSET_CACHE_SIZE = 292,    /* VAR_RRSET_CACHE_SIZE  */
+    VAR_RRSET_CACHE_SLABS = 293,   /* VAR_RRSET_CACHE_SLABS  */
+    VAR_OUTGOING_NUM_TCP = 294,    /* VAR_OUTGOING_NUM_TCP  */
+    VAR_INFRA_HOST_TTL = 295,      /* VAR_INFRA_HOST_TTL  */
+    VAR_INFRA_LAME_TTL = 296,      /* VAR_INFRA_LAME_TTL  */
+    VAR_INFRA_CACHE_SLABS = 297,   /* VAR_INFRA_CACHE_SLABS  */
+    VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS  */
+    VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE  */
+    VAR_NAME = 300,                /* VAR_NAME  */
+    VAR_STUB_ZONE = 301,           /* VAR_STUB_ZONE  */
+    VAR_STUB_HOST = 302,           /* VAR_STUB_HOST  */
+    VAR_STUB_ADDR = 303,           /* VAR_STUB_ADDR  */
+    VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY  */
+    VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE  */
+    VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES  */
+    VAR_FORWARD_ZONE = 307,        /* VAR_FORWARD_ZONE  */
+    VAR_FORWARD_HOST = 308,        /* VAR_FORWARD_HOST  */
+    VAR_FORWARD_ADDR = 309,        /* VAR_FORWARD_ADDR  */
+    VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS  */
+    VAR_HIDE_IDENTITY = 311,       /* VAR_HIDE_IDENTITY  */
+    VAR_HIDE_VERSION = 312,        /* VAR_HIDE_VERSION  */
+    VAR_IDENTITY = 313,            /* VAR_IDENTITY  */
+    VAR_VERSION = 314,             /* VAR_VERSION  */
+    VAR_HARDEN_GLUE = 315,         /* VAR_HARDEN_GLUE  */
+    VAR_MODULE_CONF = 316,         /* VAR_MODULE_CONF  */
+    VAR_TRUST_ANCHOR_FILE = 317,   /* VAR_TRUST_ANCHOR_FILE  */
+    VAR_TRUST_ANCHOR = 318,        /* VAR_TRUST_ANCHOR  */
+    VAR_VAL_OVERRIDE_DATE = 319,   /* VAR_VAL_OVERRIDE_DATE  */
+    VAR_BOGUS_TTL = 320,           /* VAR_BOGUS_TTL  */
+    VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL  */
+    VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE  */
+    VAR_INCOMING_NUM_TCP = 323,    /* VAR_INCOMING_NUM_TCP  */
+    VAR_MSG_BUFFER_SIZE = 324,     /* VAR_MSG_BUFFER_SIZE  */
+    VAR_KEY_CACHE_SIZE = 325,      /* VAR_KEY_CACHE_SIZE  */
+    VAR_KEY_CACHE_SLABS = 326,     /* VAR_KEY_CACHE_SLABS  */
+    VAR_TRUSTED_KEYS_FILE = 327,   /* VAR_TRUSTED_KEYS_FILE  */
+    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
+    VAR_USE_SYSLOG = 329,          /* VAR_USE_SYSLOG  */
+    VAR_OUTGOING_INTERFACE = 330,  /* VAR_OUTGOING_INTERFACE  */
+    VAR_ROOT_HINTS = 331,          /* VAR_ROOT_HINTS  */
+    VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST  */
+    VAR_CACHE_MAX_TTL = 333,       /* VAR_CACHE_MAX_TTL  */
+    VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED  */
+    VAR_ACCESS_CONTROL = 335,      /* VAR_ACCESS_CONTROL  */
+    VAR_LOCAL_ZONE = 336,          /* VAR_LOCAL_ZONE  */
+    VAR_LOCAL_DATA = 337,          /* VAR_LOCAL_DATA  */
+    VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC  */
+    VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL  */
+    VAR_DO_DAEMONIZE = 340,        /* VAR_DO_DAEMONIZE  */
+    VAR_USE_CAPS_FOR_ID = 341,     /* VAR_USE_CAPS_FOR_ID  */
+    VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE  */
+    VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT  */
+    VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID  */
+    VAR_DLV_ANCHOR_FILE = 345,     /* VAR_DLV_ANCHOR_FILE  */
+    VAR_DLV_ANCHOR = 346,          /* VAR_DLV_ANCHOR  */
+    VAR_NEG_CACHE_SIZE = 347,      /* VAR_NEG_CACHE_SIZE  */
+    VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH  */
+    VAR_PRIVATE_ADDRESS = 349,     /* VAR_PRIVATE_ADDRESS  */
+    VAR_PRIVATE_DOMAIN = 350,      /* VAR_PRIVATE_DOMAIN  */
+    VAR_REMOTE_CONTROL = 351,      /* VAR_REMOTE_CONTROL  */
+    VAR_CONTROL_ENABLE = 352,      /* VAR_CONTROL_ENABLE  */
+    VAR_CONTROL_INTERFACE = 353,   /* VAR_CONTROL_INTERFACE  */
+    VAR_CONTROL_PORT = 354,        /* VAR_CONTROL_PORT  */
+    VAR_SERVER_KEY_FILE = 355,     /* VAR_SERVER_KEY_FILE  */
+    VAR_SERVER_CERT_FILE = 356,    /* VAR_SERVER_CERT_FILE  */
+    VAR_CONTROL_KEY_FILE = 357,    /* VAR_CONTROL_KEY_FILE  */
+    VAR_CONTROL_CERT_FILE = 358,   /* VAR_CONTROL_CERT_FILE  */
+    VAR_CONTROL_USE_CERT = 359,    /* VAR_CONTROL_USE_CERT  */
+    VAR_TCP_REUSE_TIMEOUT = 360,   /* VAR_TCP_REUSE_TIMEOUT  */
+    VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES  */
+    VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS  */
+    VAR_LOCAL_DATA_PTR = 363,      /* VAR_LOCAL_DATA_PTR  */
+    VAR_JOSTLE_TIMEOUT = 364,      /* VAR_JOSTLE_TIMEOUT  */
+    VAR_STUB_PRIME = 365,          /* VAR_STUB_PRIME  */
+    VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD  */
+    VAR_LOG_TIME_ASCII = 367,      /* VAR_LOG_TIME_ASCII  */
+    VAR_DOMAIN_INSECURE = 368,     /* VAR_DOMAIN_INSECURE  */
+    VAR_PYTHON = 369,              /* VAR_PYTHON  */
+    VAR_PYTHON_SCRIPT = 370,       /* VAR_PYTHON_SCRIPT  */
+    VAR_VAL_SIG_SKEW_MIN = 371,    /* VAR_VAL_SIG_SKEW_MIN  */
+    VAR_VAL_SIG_SKEW_MAX = 372,    /* VAR_VAL_SIG_SKEW_MAX  */
+    VAR_CACHE_MIN_TTL = 373,       /* VAR_CACHE_MIN_TTL  */
+    VAR_VAL_LOG_LEVEL = 374,       /* VAR_VAL_LOG_LEVEL  */
+    VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
+    VAR_KEEP_MISSING = 376,        /* VAR_KEEP_MISSING  */
+    VAR_ADD_HOLDDOWN = 377,        /* VAR_ADD_HOLDDOWN  */
+    VAR_DEL_HOLDDOWN = 378,        /* VAR_DEL_HOLDDOWN  */
+    VAR_SO_RCVBUF = 379,           /* VAR_SO_RCVBUF  */
+    VAR_EDNS_BUFFER_SIZE = 380,    /* VAR_EDNS_BUFFER_SIZE  */
+    VAR_PREFETCH = 381,            /* VAR_PREFETCH  */
+    VAR_PREFETCH_KEY = 382,        /* VAR_PREFETCH_KEY  */
+    VAR_SO_SNDBUF = 383,           /* VAR_SO_SNDBUF  */
+    VAR_SO_REUSEPORT = 384,        /* VAR_SO_REUSEPORT  */
+    VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN  */
+    VAR_IGNORE_CD_FLAG = 386,      /* VAR_IGNORE_CD_FLAG  */
+    VAR_LOG_QUERIES = 387,         /* VAR_LOG_QUERIES  */
+    VAR_LOG_REPLIES = 388,         /* VAR_LOG_REPLIES  */
+    VAR_LOG_LOCAL_ACTIONS = 389,   /* VAR_LOG_LOCAL_ACTIONS  */
+    VAR_TCP_UPSTREAM = 390,        /* VAR_TCP_UPSTREAM  */
+    VAR_SSL_UPSTREAM = 391,        /* VAR_SSL_UPSTREAM  */
+    VAR_SSL_SERVICE_KEY = 392,     /* VAR_SSL_SERVICE_KEY  */
+    VAR_SSL_SERVICE_PEM = 393,     /* VAR_SSL_SERVICE_PEM  */
+    VAR_SSL_PORT = 394,            /* VAR_SSL_PORT  */
+    VAR_FORWARD_FIRST = 395,       /* VAR_FORWARD_FIRST  */
+    VAR_STUB_SSL_UPSTREAM = 396,   /* VAR_STUB_SSL_UPSTREAM  */
+    VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM  */
+    VAR_TLS_CERT_BUNDLE = 398,     /* VAR_TLS_CERT_BUNDLE  */
+    VAR_HTTPS_PORT = 399,          /* VAR_HTTPS_PORT  */
+    VAR_HTTP_ENDPOINT = 400,       /* VAR_HTTP_ENDPOINT  */
+    VAR_HTTP_MAX_STREAMS = 401,    /* VAR_HTTP_MAX_STREAMS  */
+    VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
+    VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
+    VAR_HTTP_NODELAY = 404,        /* VAR_HTTP_NODELAY  */
+    VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
+    VAR_STUB_FIRST = 406,          /* VAR_STUB_FIRST  */
+    VAR_MINIMAL_RESPONSES = 407,   /* VAR_MINIMAL_RESPONSES  */
+    VAR_RRSET_ROUNDROBIN = 408,    /* VAR_RRSET_ROUNDROBIN  */
+    VAR_MAX_UDP_SIZE = 409,        /* VAR_MAX_UDP_SIZE  */
+    VAR_DELAY_CLOSE = 410,         /* VAR_DELAY_CLOSE  */
+    VAR_UDP_CONNECT = 411,         /* VAR_UDP_CONNECT  */
+    VAR_UNBLOCK_LAN_ZONES = 412,   /* VAR_UNBLOCK_LAN_ZONES  */
+    VAR_INSECURE_LAN_ZONES = 413,  /* VAR_INSECURE_LAN_ZONES  */
+    VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT  */
+    VAR_INFRA_KEEP_PROBING = 415,  /* VAR_INFRA_KEEP_PROBING  */
+    VAR_DNS64_PREFIX = 416,        /* VAR_DNS64_PREFIX  */
+    VAR_DNS64_SYNTHALL = 417,      /* VAR_DNS64_SYNTHALL  */
+    VAR_DNS64_IGNORE_AAAA = 418,   /* VAR_DNS64_IGNORE_AAAA  */
+    VAR_DNSTAP = 419,              /* VAR_DNSTAP  */
+    VAR_DNSTAP_ENABLE = 420,       /* VAR_DNSTAP_ENABLE  */
+    VAR_DNSTAP_SOCKET_PATH = 421,  /* VAR_DNSTAP_SOCKET_PATH  */
+    VAR_DNSTAP_IP = 422,           /* VAR_DNSTAP_IP  */
+    VAR_DNSTAP_TLS = 423,          /* VAR_DNSTAP_TLS  */
+    VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME  */
+    VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
+    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
+    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
+    VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY  */
+    VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION  */
+    VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL  */
+    VAR_DNSTAP_IDENTITY = 431,     /* VAR_DNSTAP_IDENTITY  */
+    VAR_DNSTAP_VERSION = 432,      /* VAR_DNSTAP_VERSION  */
+    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
+    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
+    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
+    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
+    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
+    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
+    VAR_RESPONSE_IP_TAG = 439,     /* VAR_RESPONSE_IP_TAG  */
+    VAR_RESPONSE_IP = 440,         /* VAR_RESPONSE_IP  */
+    VAR_RESPONSE_IP_DATA = 441,    /* VAR_RESPONSE_IP_DATA  */
+    VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE  */
+    VAR_IP_TRANSPARENT = 443,      /* VAR_IP_TRANSPARENT  */
+    VAR_IP_DSCP = 444,             /* VAR_IP_DSCP  */
+    VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
+    VAR_IP_RATELIMIT = 446,        /* VAR_IP_RATELIMIT  */
+    VAR_IP_RATELIMIT_SLABS = 447,  /* VAR_IP_RATELIMIT_SLABS  */
+    VAR_IP_RATELIMIT_SIZE = 448,   /* VAR_IP_RATELIMIT_SIZE  */
+    VAR_RATELIMIT = 449,           /* VAR_RATELIMIT  */
+    VAR_RATELIMIT_SLABS = 450,     /* VAR_RATELIMIT_SLABS  */
+    VAR_RATELIMIT_SIZE = 451,      /* VAR_RATELIMIT_SIZE  */
+    VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN  */
+    VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN  */
+    VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR  */
+    VAR_RATELIMIT_FACTOR = 455,    /* VAR_RATELIMIT_FACTOR  */
+    VAR_SEND_CLIENT_SUBNET = 456,  /* VAR_SEND_CLIENT_SUBNET  */
+    VAR_CLIENT_SUBNET_ZONE = 457,  /* VAR_CLIENT_SUBNET_ZONE  */
+    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
+    VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE  */
+    VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
+    VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
+    VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
+    VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
+    VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
+    VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
+    VAR_CAPS_WHITELIST = 466,      /* VAR_CAPS_WHITELIST  */
+    VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
+    VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN  */
+    VAR_QNAME_MINIMISATION = 469,  /* VAR_QNAME_MINIMISATION  */
+    VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT  */
+    VAR_IP_FREEBIND = 471,         /* VAR_IP_FREEBIND  */
+    VAR_DEFINE_TAG = 472,          /* VAR_DEFINE_TAG  */
+    VAR_LOCAL_ZONE_TAG = 473,      /* VAR_LOCAL_ZONE_TAG  */
+    VAR_ACCESS_CONTROL_TAG = 474,  /* VAR_ACCESS_CONTROL_TAG  */
+    VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE  */
+    VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
+    VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA  */
+    VAR_VIEW = 478,                /* VAR_VIEW  */
+    VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW  */
+    VAR_VIEW_FIRST = 480,          /* VAR_VIEW_FIRST  */
+    VAR_SERVE_EXPIRED = 481,       /* VAR_SERVE_EXPIRED  */
+    VAR_SERVE_EXPIRED_TTL = 482,   /* VAR_SERVE_EXPIRED_TTL  */
+    VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET  */
+    VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
+    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
+    VAR_SERVE_ORIGINAL_TTL = 486,  /* VAR_SERVE_ORIGINAL_TTL  */
+    VAR_FAKE_DSA = 487,            /* VAR_FAKE_DSA  */
+    VAR_FAKE_SHA1 = 488,           /* VAR_FAKE_SHA1  */
+    VAR_LOG_IDENTITY = 489,        /* VAR_LOG_IDENTITY  */
+    VAR_HIDE_TRUSTANCHOR = 490,    /* VAR_HIDE_TRUSTANCHOR  */
+    VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING  */
+    VAR_AGGRESSIVE_NSEC = 492,     /* VAR_AGGRESSIVE_NSEC  */
+    VAR_USE_SYSTEMD = 493,         /* VAR_USE_SYSTEMD  */
+    VAR_SHM_ENABLE = 494,          /* VAR_SHM_ENABLE  */
+    VAR_SHM_KEY = 495,             /* VAR_SHM_KEY  */
+    VAR_ROOT_KEY_SENTINEL = 496,   /* VAR_ROOT_KEY_SENTINEL  */
+    VAR_DNSCRYPT = 497,            /* VAR_DNSCRYPT  */
+    VAR_DNSCRYPT_ENABLE = 498,     /* VAR_DNSCRYPT_ENABLE  */
+    VAR_DNSCRYPT_PORT = 499,       /* VAR_DNSCRYPT_PORT  */
+    VAR_DNSCRYPT_PROVIDER = 500,   /* VAR_DNSCRYPT_PROVIDER  */
+    VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY  */
+    VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT  */
+    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
+    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
+    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
+    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
+    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
+    VAR_PAD_RESPONSES = 508,       /* VAR_PAD_RESPONSES  */
+    VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
+    VAR_PAD_QUERIES = 510,         /* VAR_PAD_QUERIES  */
+    VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
+    VAR_IPSECMOD_ENABLED = 512,    /* VAR_IPSECMOD_ENABLED  */
+    VAR_IPSECMOD_HOOK = 513,       /* VAR_IPSECMOD_HOOK  */
+    VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS  */
+    VAR_IPSECMOD_MAX_TTL = 515,    /* VAR_IPSECMOD_MAX_TTL  */
+    VAR_IPSECMOD_WHITELIST = 516,  /* VAR_IPSECMOD_WHITELIST  */
+    VAR_IPSECMOD_STRICT = 517,     /* VAR_IPSECMOD_STRICT  */
+    VAR_CACHEDB = 518,             /* VAR_CACHEDB  */
+    VAR_CACHEDB_BACKEND = 519,     /* VAR_CACHEDB_BACKEND  */
+    VAR_CACHEDB_SECRETSEED = 520,  /* VAR_CACHEDB_SECRETSEED  */
+    VAR_CACHEDB_REDISHOST = 521,   /* VAR_CACHEDB_REDISHOST  */
+    VAR_CACHEDB_REDISPORT = 522,   /* VAR_CACHEDB_REDISPORT  */
+    VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT  */
+    VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
+    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
+    VAR_FOR_UPSTREAM = 526,        /* VAR_FOR_UPSTREAM  */
+    VAR_AUTH_ZONE = 527,           /* VAR_AUTH_ZONE  */
+    VAR_ZONEFILE = 528,            /* VAR_ZONEFILE  */
+    VAR_MASTER = 529,              /* VAR_MASTER  */
+    VAR_URL = 530,                 /* VAR_URL  */
+    VAR_FOR_DOWNSTREAM = 531,      /* VAR_FOR_DOWNSTREAM  */
+    VAR_FALLBACK_ENABLED = 532,    /* VAR_FALLBACK_ENABLED  */
+    VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT  */
+    VAR_LOW_RTT = 534,             /* VAR_LOW_RTT  */
+    VAR_LOW_RTT_PERMIL = 535,      /* VAR_LOW_RTT_PERMIL  */
+    VAR_FAST_SERVER_PERMIL = 536,  /* VAR_FAST_SERVER_PERMIL  */
+    VAR_FAST_SERVER_NUM = 537,     /* VAR_FAST_SERVER_NUM  */
+    VAR_ALLOW_NOTIFY = 538,        /* VAR_ALLOW_NOTIFY  */
+    VAR_TLS_WIN_CERT = 539,        /* VAR_TLS_WIN_CERT  */
+    VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT  */
+    VAR_FORWARD_NO_CACHE = 541,    /* VAR_FORWARD_NO_CACHE  */
+    VAR_STUB_NO_CACHE = 542,       /* VAR_STUB_NO_CACHE  */
+    VAR_LOG_SERVFAIL = 543,        /* VAR_LOG_SERVFAIL  */
+    VAR_DENY_ANY = 544,            /* VAR_DENY_ANY  */
+    VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
+    VAR_LOG_TAG_QUERYREPLY = 546,  /* VAR_LOG_TAG_QUERYREPLY  */
+    VAR_STREAM_WAIT_SIZE = 547,    /* VAR_STREAM_WAIT_SIZE  */
+    VAR_TLS_CIPHERS = 548,         /* VAR_TLS_CIPHERS  */
+    VAR_TLS_CIPHERSUITES = 549,    /* VAR_TLS_CIPHERSUITES  */
+    VAR_TLS_USE_SNI = 550,         /* VAR_TLS_USE_SNI  */
+    VAR_IPSET = 551,               /* VAR_IPSET  */
+    VAR_IPSET_NAME_V4 = 552,       /* VAR_IPSET_NAME_V4  */
+    VAR_IPSET_NAME_V6 = 553,       /* VAR_IPSET_NAME_V6  */
+    VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS  */
+    VAR_RPZ = 555,                 /* VAR_RPZ  */
+    VAR_TAGS = 556,                /* VAR_TAGS  */
+    VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE  */
+    VAR_RPZ_CNAME_OVERRIDE = 558,  /* VAR_RPZ_CNAME_OVERRIDE  */
+    VAR_RPZ_LOG = 559,             /* VAR_RPZ_LOG  */
+    VAR_RPZ_LOG_NAME = 560,        /* VAR_RPZ_LOG_NAME  */
+    VAR_DYNLIB = 561,              /* VAR_DYNLIB  */
+    VAR_DYNLIB_FILE = 562,         /* VAR_DYNLIB_FILE  */
+    VAR_EDNS_CLIENT_STRING = 563,  /* VAR_EDNS_CLIENT_STRING  */
+    VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
+    VAR_NSID = 565,                /* VAR_NSID  */
+    VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE  */
+    VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
+#define SPACE 258
+#define LETTER 259
+#define NEWLINE 260
+#define COMMENT 261
+#define COLON 262
+#define ANY 263
+#define ZONESTR 264
+#define STRING_ARG 265
+#define VAR_FORCE_TOPLEVEL 266
+#define VAR_SERVER 267
+#define VAR_VERBOSITY 268
+#define VAR_NUM_THREADS 269
+#define VAR_PORT 270
+#define VAR_OUTGOING_RANGE 271
+#define VAR_INTERFACE 272
+#define VAR_PREFER_IP4 273
+#define VAR_DO_IP4 274
+#define VAR_DO_IP6 275
+#define VAR_PREFER_IP6 276
+#define VAR_DO_UDP 277
+#define VAR_DO_TCP 278
+#define VAR_TCP_MSS 279
+#define VAR_OUTGOING_TCP_MSS 280
+#define VAR_TCP_IDLE_TIMEOUT 281
+#define VAR_EDNS_TCP_KEEPALIVE 282
+#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283
+#define VAR_CHROOT 284
+#define VAR_USERNAME 285
+#define VAR_DIRECTORY 286
+#define VAR_LOGFILE 287
+#define VAR_PIDFILE 288
+#define VAR_MSG_CACHE_SIZE 289
+#define VAR_MSG_CACHE_SLABS 290
+#define VAR_NUM_QUERIES_PER_THREAD 291
+#define VAR_RRSET_CACHE_SIZE 292
+#define VAR_RRSET_CACHE_SLABS 293
+#define VAR_OUTGOING_NUM_TCP 294
+#define VAR_INFRA_HOST_TTL 295
+#define VAR_INFRA_LAME_TTL 296
+#define VAR_INFRA_CACHE_SLABS 297
+#define VAR_INFRA_CACHE_NUMHOSTS 298
+#define VAR_INFRA_CACHE_LAME_SIZE 299
+#define VAR_NAME 300
+#define VAR_STUB_ZONE 301
+#define VAR_STUB_HOST 302
+#define VAR_STUB_ADDR 303
+#define VAR_TARGET_FETCH_POLICY 304
+#define VAR_HARDEN_SHORT_BUFSIZE 305
+#define VAR_HARDEN_LARGE_QUERIES 306
+#define VAR_FORWARD_ZONE 307
+#define VAR_FORWARD_HOST 308
+#define VAR_FORWARD_ADDR 309
+#define VAR_DO_NOT_QUERY_ADDRESS 310
+#define VAR_HIDE_IDENTITY 311
+#define VAR_HIDE_VERSION 312
+#define VAR_IDENTITY 313
+#define VAR_VERSION 314
+#define VAR_HARDEN_GLUE 315
+#define VAR_MODULE_CONF 316
+#define VAR_TRUST_ANCHOR_FILE 317
+#define VAR_TRUST_ANCHOR 318
+#define VAR_VAL_OVERRIDE_DATE 319
+#define VAR_BOGUS_TTL 320
+#define VAR_VAL_CLEAN_ADDITIONAL 321
+#define VAR_VAL_PERMISSIVE_MODE 322
+#define VAR_INCOMING_NUM_TCP 323
+#define VAR_MSG_BUFFER_SIZE 324
+#define VAR_KEY_CACHE_SIZE 325
+#define VAR_KEY_CACHE_SLABS 326
+#define VAR_TRUSTED_KEYS_FILE 327
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328
+#define VAR_USE_SYSLOG 329
+#define VAR_OUTGOING_INTERFACE 330
+#define VAR_ROOT_HINTS 331
+#define VAR_DO_NOT_QUERY_LOCALHOST 332
+#define VAR_CACHE_MAX_TTL 333
+#define VAR_HARDEN_DNSSEC_STRIPPED 334
+#define VAR_ACCESS_CONTROL 335
+#define VAR_LOCAL_ZONE 336
+#define VAR_LOCAL_DATA 337
+#define VAR_INTERFACE_AUTOMATIC 338
+#define VAR_STATISTICS_INTERVAL 339
+#define VAR_DO_DAEMONIZE 340
+#define VAR_USE_CAPS_FOR_ID 341
+#define VAR_STATISTICS_CUMULATIVE 342
+#define VAR_OUTGOING_PORT_PERMIT 343
+#define VAR_OUTGOING_PORT_AVOID 344
+#define VAR_DLV_ANCHOR_FILE 345
+#define VAR_DLV_ANCHOR 346
+#define VAR_NEG_CACHE_SIZE 347
+#define VAR_HARDEN_REFERRAL_PATH 348
+#define VAR_PRIVATE_ADDRESS 349
+#define VAR_PRIVATE_DOMAIN 350
+#define VAR_REMOTE_CONTROL 351
+#define VAR_CONTROL_ENABLE 352
+#define VAR_CONTROL_INTERFACE 353
+#define VAR_CONTROL_PORT 354
+#define VAR_SERVER_KEY_FILE 355
+#define VAR_SERVER_CERT_FILE 356
+#define VAR_CONTROL_KEY_FILE 357
+#define VAR_CONTROL_CERT_FILE 358
+#define VAR_CONTROL_USE_CERT 359
+#define VAR_TCP_REUSE_TIMEOUT 360
+#define VAR_MAX_REUSE_TCP_QUERIES 361
+#define VAR_EXTENDED_STATISTICS 362
+#define VAR_LOCAL_DATA_PTR 363
+#define VAR_JOSTLE_TIMEOUT 364
+#define VAR_STUB_PRIME 365
+#define VAR_UNWANTED_REPLY_THRESHOLD 366
+#define VAR_LOG_TIME_ASCII 367
+#define VAR_DOMAIN_INSECURE 368
+#define VAR_PYTHON 369
+#define VAR_PYTHON_SCRIPT 370
+#define VAR_VAL_SIG_SKEW_MIN 371
+#define VAR_VAL_SIG_SKEW_MAX 372
+#define VAR_CACHE_MIN_TTL 373
+#define VAR_VAL_LOG_LEVEL 374
+#define VAR_AUTO_TRUST_ANCHOR_FILE 375
+#define VAR_KEEP_MISSING 376
+#define VAR_ADD_HOLDDOWN 377
+#define VAR_DEL_HOLDDOWN 378
+#define VAR_SO_RCVBUF 379
+#define VAR_EDNS_BUFFER_SIZE 380
+#define VAR_PREFETCH 381
+#define VAR_PREFETCH_KEY 382
+#define VAR_SO_SNDBUF 383
+#define VAR_SO_REUSEPORT 384
+#define VAR_HARDEN_BELOW_NXDOMAIN 385
+#define VAR_IGNORE_CD_FLAG 386
+#define VAR_LOG_QUERIES 387
+#define VAR_LOG_REPLIES 388
+#define VAR_LOG_LOCAL_ACTIONS 389
+#define VAR_TCP_UPSTREAM 390
+#define VAR_SSL_UPSTREAM 391
+#define VAR_SSL_SERVICE_KEY 392
+#define VAR_SSL_SERVICE_PEM 393
+#define VAR_SSL_PORT 394
+#define VAR_FORWARD_FIRST 395
+#define VAR_STUB_SSL_UPSTREAM 396
+#define VAR_FORWARD_SSL_UPSTREAM 397
+#define VAR_TLS_CERT_BUNDLE 398
+#define VAR_HTTPS_PORT 399
+#define VAR_HTTP_ENDPOINT 400
+#define VAR_HTTP_MAX_STREAMS 401
+#define VAR_HTTP_QUERY_BUFFER_SIZE 402
+#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403
+#define VAR_HTTP_NODELAY 404
+#define VAR_HTTP_NOTLS_DOWNSTREAM 405
+#define VAR_STUB_FIRST 406
+#define VAR_MINIMAL_RESPONSES 407
+#define VAR_RRSET_ROUNDROBIN 408
+#define VAR_MAX_UDP_SIZE 409
+#define VAR_DELAY_CLOSE 410
+#define VAR_UDP_CONNECT 411
+#define VAR_UNBLOCK_LAN_ZONES 412
+#define VAR_INSECURE_LAN_ZONES 413
+#define VAR_INFRA_CACHE_MIN_RTT 414
+#define VAR_INFRA_KEEP_PROBING 415
+#define VAR_DNS64_PREFIX 416
+#define VAR_DNS64_SYNTHALL 417
+#define VAR_DNS64_IGNORE_AAAA 418
+#define VAR_DNSTAP 419
+#define VAR_DNSTAP_ENABLE 420
+#define VAR_DNSTAP_SOCKET_PATH 421
+#define VAR_DNSTAP_IP 422
+#define VAR_DNSTAP_TLS 423
+#define VAR_DNSTAP_TLS_SERVER_NAME 424
+#define VAR_DNSTAP_TLS_CERT_BUNDLE 425
+#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426
+#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427
+#define VAR_DNSTAP_SEND_IDENTITY 428
+#define VAR_DNSTAP_SEND_VERSION 429
+#define VAR_DNSTAP_BIDIRECTIONAL 430
+#define VAR_DNSTAP_IDENTITY 431
+#define VAR_DNSTAP_VERSION 432
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438
+#define VAR_RESPONSE_IP_TAG 439
+#define VAR_RESPONSE_IP 440
+#define VAR_RESPONSE_IP_DATA 441
+#define VAR_HARDEN_ALGO_DOWNGRADE 442
+#define VAR_IP_TRANSPARENT 443
+#define VAR_IP_DSCP 444
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 445
+#define VAR_IP_RATELIMIT 446
+#define VAR_IP_RATELIMIT_SLABS 447
+#define VAR_IP_RATELIMIT_SIZE 448
+#define VAR_RATELIMIT 449
+#define VAR_RATELIMIT_SLABS 450
+#define VAR_RATELIMIT_SIZE 451
+#define VAR_RATELIMIT_FOR_DOMAIN 452
+#define VAR_RATELIMIT_BELOW_DOMAIN 453
+#define VAR_IP_RATELIMIT_FACTOR 454
+#define VAR_RATELIMIT_FACTOR 455
+#define VAR_SEND_CLIENT_SUBNET 456
+#define VAR_CLIENT_SUBNET_ZONE 457
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458
+#define VAR_CLIENT_SUBNET_OPCODE 459
+#define VAR_MAX_CLIENT_SUBNET_IPV4 460
+#define VAR_MAX_CLIENT_SUBNET_IPV6 461
+#define VAR_MIN_CLIENT_SUBNET_IPV4 462
+#define VAR_MIN_CLIENT_SUBNET_IPV6 463
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 464
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 465
+#define VAR_CAPS_WHITELIST 466
+#define VAR_CACHE_MAX_NEGATIVE_TTL 467
+#define VAR_PERMIT_SMALL_HOLDDOWN 468
+#define VAR_QNAME_MINIMISATION 469
+#define VAR_QNAME_MINIMISATION_STRICT 470
+#define VAR_IP_FREEBIND 471
+#define VAR_DEFINE_TAG 472
+#define VAR_LOCAL_ZONE_TAG 473
+#define VAR_ACCESS_CONTROL_TAG 474
+#define VAR_LOCAL_ZONE_OVERRIDE 475
+#define VAR_ACCESS_CONTROL_TAG_ACTION 476
+#define VAR_ACCESS_CONTROL_TAG_DATA 477
+#define VAR_VIEW 478
+#define VAR_ACCESS_CONTROL_VIEW 479
+#define VAR_VIEW_FIRST 480
+#define VAR_SERVE_EXPIRED 481
+#define VAR_SERVE_EXPIRED_TTL 482
+#define VAR_SERVE_EXPIRED_TTL_RESET 483
+#define VAR_SERVE_EXPIRED_REPLY_TTL 484
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485
+#define VAR_SERVE_ORIGINAL_TTL 486
+#define VAR_FAKE_DSA 487
+#define VAR_FAKE_SHA1 488
+#define VAR_LOG_IDENTITY 489
+#define VAR_HIDE_TRUSTANCHOR 490
+#define VAR_TRUST_ANCHOR_SIGNALING 491
+#define VAR_AGGRESSIVE_NSEC 492
+#define VAR_USE_SYSTEMD 493
+#define VAR_SHM_ENABLE 494
+#define VAR_SHM_KEY 495
+#define VAR_ROOT_KEY_SENTINEL 496
+#define VAR_DNSCRYPT 497
+#define VAR_DNSCRYPT_ENABLE 498
+#define VAR_DNSCRYPT_PORT 499
+#define VAR_DNSCRYPT_PROVIDER 500
+#define VAR_DNSCRYPT_SECRET_KEY 501
+#define VAR_DNSCRYPT_PROVIDER_CERT 502
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507
+#define VAR_PAD_RESPONSES 508
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 509
+#define VAR_PAD_QUERIES 510
+#define VAR_PAD_QUERIES_BLOCK_SIZE 511
+#define VAR_IPSECMOD_ENABLED 512
+#define VAR_IPSECMOD_HOOK 513
+#define VAR_IPSECMOD_IGNORE_BOGUS 514
+#define VAR_IPSECMOD_MAX_TTL 515
+#define VAR_IPSECMOD_WHITELIST 516
+#define VAR_IPSECMOD_STRICT 517
+#define VAR_CACHEDB 518
+#define VAR_CACHEDB_BACKEND 519
+#define VAR_CACHEDB_SECRETSEED 520
+#define VAR_CACHEDB_REDISHOST 521
+#define VAR_CACHEDB_REDISPORT 522
+#define VAR_CACHEDB_REDISTIMEOUT 523
+#define VAR_CACHEDB_REDISEXPIRERECORDS 524
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525
+#define VAR_FOR_UPSTREAM 526
+#define VAR_AUTH_ZONE 527
+#define VAR_ZONEFILE 528
+#define VAR_MASTER 529
+#define VAR_URL 530
+#define VAR_FOR_DOWNSTREAM 531
+#define VAR_FALLBACK_ENABLED 532
+#define VAR_TLS_ADDITIONAL_PORT 533
+#define VAR_LOW_RTT 534
+#define VAR_LOW_RTT_PERMIL 535
+#define VAR_FAST_SERVER_PERMIL 536
+#define VAR_FAST_SERVER_NUM 537
+#define VAR_ALLOW_NOTIFY 538
+#define VAR_TLS_WIN_CERT 539
+#define VAR_TCP_CONNECTION_LIMIT 540
+#define VAR_FORWARD_NO_CACHE 541
+#define VAR_STUB_NO_CACHE 542
+#define VAR_LOG_SERVFAIL 543
+#define VAR_DENY_ANY 544
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545
+#define VAR_LOG_TAG_QUERYREPLY 546
+#define VAR_STREAM_WAIT_SIZE 547
+#define VAR_TLS_CIPHERS 548
+#define VAR_TLS_CIPHERSUITES 549
+#define VAR_TLS_USE_SNI 550
+#define VAR_IPSET 551
+#define VAR_IPSET_NAME_V4 552
+#define VAR_IPSET_NAME_V6 553
+#define VAR_TLS_SESSION_TICKET_KEYS 554
+#define VAR_RPZ 555
+#define VAR_TAGS 556
+#define VAR_RPZ_ACTION_OVERRIDE 557
+#define VAR_RPZ_CNAME_OVERRIDE 558
+#define VAR_RPZ_LOG 559
+#define VAR_RPZ_LOG_NAME 560
+#define VAR_DYNLIB 561
+#define VAR_DYNLIB_FILE 562
+#define VAR_EDNS_CLIENT_STRING 563
+#define VAR_EDNS_CLIENT_STRING_OPCODE 564
+#define VAR_NSID 565
+#define VAR_ZONEMD_PERMISSIVE_MODE 566
+#define VAR_ZONEMD_REJECT_ABSENCE 567
+
+/* Value type.  */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+union YYSTYPE
+{
+#line 66 "./util/configparser.y"
+
+       char*   str;
+
+#line 780 "util/configparser.c"
+
+};
+typedef union YYSTYPE YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
 /* Symbol kind.  */
 enum yysymbol_kind_t
 {
@@ -818,18 +1488,6 @@ typedef int_least16_t yytype_int16;
 typedef short yytype_int16;
 #endif
 
-/* Work around bug in HP-UX 11.23, which defines these macros
-   incorrectly for preprocessor constants.  This workaround can likely
-   be removed in 2023, as HPE has promised support for HP-UX 11.23
-   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
-   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
-#ifdef __hpux
-# undef UINT_LEAST8_MAX
-# undef UINT_LEAST16_MAX
-# define UINT_LEAST8_MAX 255
-# define UINT_LEAST16_MAX 65535
-#endif
-
 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
@@ -927,9 +1585,9 @@ typedef int yy_state_fast_t;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YY_USE(E) ((void) (E))
+# define YYUSE(E) ((void) (E))
 #else
-# define YY_USE(E) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -1107,7 +1765,6 @@ union yyalloc
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  969
 
-/* YYMAXUTOK -- Last valid token kind.  */
 #define YYMAXUTOK   567
 
 
@@ -1237,20 +1894,20 @@ static const yytype_int16 yyrline[] =
     2470,  2480,  2490,  2500,  2509,  2519,  2528,  2541,  2554,  2566,
     2580,  2592,  2606,  2615,  2627,  2637,  2644,  2651,  2660,  2669,
     2679,  2689,  2699,  2706,  2713,  2722,  2731,  2741,  2751,  2758,
-    2765,  2772,  2780,  2790,  2800,  2810,  2820,  2830,  2869,  2879,
-    2887,  2895,  2910,  2919,  2924,  2925,  2926,  2926,  2926,  2927,
-    2927,  2927,  2928,  2928,  2930,  2940,  2949,  2956,  2963,  2970,
-    2977,  2984,  2991,  2996,  2997,  2998,  2998,  2998,  2999,  2999,
-    2999,  3000,  3001,  3001,  3002,  3002,  3003,  3003,  3004,  3005,
-    3006,  3007,  3008,  3009,  3011,  3020,  3030,  3037,  3044,  3053,
-    3060,  3067,  3074,  3081,  3090,  3099,  3106,  3113,  3123,  3133,
-    3143,  3153,  3163,  3173,  3178,  3179,  3180,  3182,  3188,  3193,
-    3194,  3195,  3197,  3203,  3213,  3220,  3229,  3237,  3242,  3243,
-    3245,  3245,  3245,  3246,  3246,  3247,  3248,  3249,  3250,  3251,
-    3253,  3263,  3272,  3279,  3288,  3295,  3304,  3312,  3325,  3333,
-    3346,  3351,  3352,  3353,  3353,  3354,  3354,  3354,  3355,  3357,
-    3369,  3381,  3393,  3408,  3421,  3434,  3445,  3450,  3451,  3452,
-    3452,  3454,  3469
+    2765,  2772,  2780,  2790,  2800,  2810,  2820,  2830,  2876,  2886,
+    2894,  2902,  2917,  2926,  2931,  2932,  2933,  2933,  2933,  2934,
+    2934,  2934,  2935,  2935,  2937,  2947,  2956,  2963,  2970,  2977,
+    2984,  2991,  2998,  3003,  3004,  3005,  3005,  3005,  3006,  3006,
+    3006,  3007,  3008,  3008,  3009,  3009,  3010,  3010,  3011,  3012,
+    3013,  3014,  3015,  3016,  3018,  3027,  3037,  3044,  3051,  3060,
+    3067,  3074,  3081,  3088,  3097,  3106,  3113,  3120,  3130,  3140,
+    3150,  3160,  3170,  3180,  3185,  3186,  3187,  3189,  3195,  3200,
+    3201,  3202,  3204,  3210,  3220,  3227,  3236,  3244,  3249,  3250,
+    3252,  3252,  3252,  3253,  3253,  3254,  3255,  3256,  3257,  3258,
+    3260,  3270,  3279,  3286,  3295,  3302,  3311,  3319,  3332,  3340,
+    3353,  3358,  3359,  3360,  3360,  3361,  3361,  3361,  3362,  3364,
+    3376,  3388,  3400,  3415,  3428,  3441,  3452,  3457,  3458,  3459,
+    3459,  3461,  3476
 };
 #endif
 
@@ -1826,7 +2483,7 @@ static const yytype_int16 yypgoto[] =
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-       0,     1,    17,    18,    19,    32,   259,    20,    33,   481,
+      -1,     1,    17,    18,    19,    32,   259,    20,    33,   481,
       21,    34,   495,    22,    35,   509,    23,    36,   526,   541,
      542,   543,   544,   545,    24,    37,   546,   260,   261,   262,
      263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
@@ -2328,7 +2985,7 @@ yy_symbol_value_print (FILE *yyo,
                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
   FILE *yyoutput = yyo;
-  YY_USE (yyoutput);
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -2336,7 +2993,7 @@ yy_symbol_value_print (FILE *yyo,
     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
+  YYUSE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
@@ -2450,18 +3107,18 @@ static void
 yydestruct (const char *yymsg,
             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
-  YY_USE (yyvaluep);
+  YYUSE (yyvaluep);
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
+  YYUSE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/* Lookahead token kind.  */
+/* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
@@ -2479,30 +3136,34 @@ int yynerrs;
 int
 yyparse (void)
 {
-    yy_state_fast_t yystate = 0;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus = 0;
+    int yyerrstatus;
 
-    /* Refer to the stacks through separate pointers, to allow yyoverflow
+    /* The stacks and their tools:
+       'yyss': related to states.
+       'yyvs': related to semantic values.
+
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* Their size.  */
-    YYPTRDIFF_T yystacksize = YYINITDEPTH;
+    YYPTRDIFF_T yystacksize;
 
-    /* The state stack: array, bottom, top.  */
+    /* The state stack.  */
     yy_state_t yyssa[YYINITDEPTH];
-    yy_state_t *yyss = yyssa;
-    yy_state_t *yyssp = yyss;
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
-    /* The semantic value stack: array, bottom, top.  */
+    /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs = yyvsa;
-    YYSTYPE *yyvsp = yyvs;
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
 
   int yyn;
   /* The return value of yyparse.  */
   int yyresult;
-  /* Lookahead symbol kind.  */
+  /* Lookahead token as an internal (translated) token number.  */
   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
@@ -2516,6 +3177,15 @@ yyparse (void)
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
+  yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
+
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yychar = YYEMPTY; /* Cause a token to be read.  */
@@ -2716,24 +3386,24 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL  */
-#line 198 "util/configparser.y"
+  case 18:
+#line 198 "./util/configparser.y"
         {
                OUTYY(("\nP(force-toplevel)\n"));
        }
-#line 2725 "util/configparser.c"
+#line 3395 "util/configparser.c"
     break;
 
-  case 19: /* serverstart: VAR_SERVER  */
-#line 204 "util/configparser.y"
+  case 19:
+#line 204 "./util/configparser.y"
         { 
                OUTYY(("\nP(server:)\n"));
        }
-#line 2733 "util/configparser.c"
+#line 3403 "util/configparser.c"
     break;
 
-  case 236: /* stubstart: VAR_STUB_ZONE  */
-#line 309 "util/configparser.y"
+  case 236:
+#line 309 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2744,11 +3414,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2748 "util/configparser.c"
+#line 3418 "util/configparser.c"
     break;
 
-  case 246: /* forwardstart: VAR_FORWARD_ZONE  */
-#line 326 "util/configparser.y"
+  case 246:
+#line 326 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2759,11 +3429,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2763 "util/configparser.c"
+#line 3433 "util/configparser.c"
     break;
 
-  case 255: /* viewstart: VAR_VIEW  */
-#line 343 "util/configparser.y"
+  case 255:
+#line 343 "./util/configparser.y"
         {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2776,11 +3446,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2780 "util/configparser.c"
+#line 3450 "util/configparser.c"
     break;
 
-  case 265: /* authstart: VAR_AUTH_ZONE  */
-#line 362 "util/configparser.y"
+  case 265:
+#line 362 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n")); 
@@ -2797,11 +3467,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2801 "util/configparser.c"
+#line 3471 "util/configparser.c"
     break;
 
-  case 277: /* rpz_tag: VAR_TAGS STRING_ARG  */
-#line 387 "util/configparser.y"
+  case 277:
+#line 387 "./util/configparser.y"
         {
                uint8_t* bitlist;
                size_t len = 0;
@@ -2818,11 +3488,11 @@ yyreduce:
 
                }
        }
-#line 2822 "util/configparser.c"
+#line 3492 "util/configparser.c"
     break;
 
-  case 278: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG  */
-#line 406 "util/configparser.y"
+  case 278:
+#line 406 "./util/configparser.y"
         {
                OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
@@ -2837,21 +3507,21 @@ yyreduce:
                        cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
                }
        }
-#line 2841 "util/configparser.c"
+#line 3511 "util/configparser.c"
     break;
 
-  case 279: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG  */
-#line 423 "util/configparser.y"
+  case 279:
+#line 423 "./util/configparser.y"
         {
                OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_cname);
                cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
        }
-#line 2851 "util/configparser.c"
+#line 3521 "util/configparser.c"
     break;
 
-  case 280: /* rpz_log: VAR_RPZ_LOG STRING_ARG  */
-#line 431 "util/configparser.y"
+  case 280:
+#line 431 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2859,21 +3529,21 @@ yyreduce:
                else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2863 "util/configparser.c"
+#line 3533 "util/configparser.c"
     break;
 
-  case 281: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG  */
-#line 441 "util/configparser.y"
+  case 281:
+#line 441 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_log_name);
                cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
        }
-#line 2873 "util/configparser.c"
+#line 3543 "util/configparser.c"
     break;
 
-  case 282: /* rpzstart: VAR_RPZ  */
-#line 449 "util/configparser.y"
+  case 282:
+#line 449 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(rpz:)\n")); 
@@ -2889,11 +3559,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2893 "util/configparser.c"
+#line 3563 "util/configparser.c"
     break;
 
-  case 295: /* server_num_threads: VAR_NUM_THREADS STRING_ARG  */
-#line 472 "util/configparser.y"
+  case 295:
+#line 472 "./util/configparser.y"
         { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2901,11 +3571,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2905 "util/configparser.c"
+#line 3575 "util/configparser.c"
     break;
 
-  case 296: /* server_verbosity: VAR_VERBOSITY STRING_ARG  */
-#line 481 "util/configparser.y"
+  case 296:
+#line 481 "./util/configparser.y"
         { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2913,11 +3583,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2917 "util/configparser.c"
+#line 3587 "util/configparser.c"
     break;
 
-  case 297: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG  */
-#line 490 "util/configparser.y"
+  case 297:
+#line 490 "./util/configparser.y"
         { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2927,11 +3597,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2931 "util/configparser.c"
+#line 3601 "util/configparser.c"
     break;
 
-  case 298: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG  */
-#line 501 "util/configparser.y"
+  case 298:
+#line 501 "./util/configparser.y"
         {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2939,11 +3609,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2943 "util/configparser.c"
+#line 3613 "util/configparser.c"
     break;
 
-  case 299: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG  */
-#line 510 "util/configparser.y"
+  case 299:
+#line 510 "./util/configparser.y"
         {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2951,11 +3621,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2955 "util/configparser.c"
+#line 3625 "util/configparser.c"
     break;
 
-  case 300: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG  */
-#line 519 "util/configparser.y"
+  case 300:
+#line 519 "./util/configparser.y"
         {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2963,11 +3633,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2967 "util/configparser.c"
+#line 3637 "util/configparser.c"
     break;
 
-  case 301: /* server_shm_key: VAR_SHM_KEY STRING_ARG  */
-#line 528 "util/configparser.y"
+  case 301:
+#line 528 "./util/configparser.y"
         { 
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2977,11 +3647,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2981 "util/configparser.c"
+#line 3651 "util/configparser.c"
     break;
 
-  case 302: /* server_port: VAR_PORT STRING_ARG  */
-#line 539 "util/configparser.y"
+  case 302:
+#line 539 "./util/configparser.y"
         {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2989,11 +3659,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2993 "util/configparser.c"
+#line 3663 "util/configparser.c"
     break;
 
-  case 303: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG  */
-#line 548 "util/configparser.y"
+  case 303:
+#line 548 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
@@ -3004,11 +3674,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3008 "util/configparser.c"
+#line 3678 "util/configparser.c"
     break;
 
-  case 304: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG  */
-#line 560 "util/configparser.y"
+  case 304:
+#line 560 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
@@ -3020,11 +3690,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3024 "util/configparser.c"
+#line 3694 "util/configparser.c"
     break;
 
-  case 305: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG  */
-#line 574 "util/configparser.y"
+  case 305:
+#line 574 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -3038,11 +3708,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3042 "util/configparser.c"
+#line 3712 "util/configparser.c"
     break;
 
-  case 306: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG  */
-#line 589 "util/configparser.y"
+  case 306:
+#line 589 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -3052,11 +3722,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3056 "util/configparser.c"
+#line 3726 "util/configparser.c"
     break;
 
-  case 307: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG  */
-#line 600 "util/configparser.y"
+  case 307:
+#line 600 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3072,11 +3742,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3076 "util/configparser.c"
+#line 3746 "util/configparser.c"
     break;
 
-  case 308: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG  */
-#line 617 "util/configparser.y"
+  case 308:
+#line 617 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3092,11 +3762,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3096 "util/configparser.c"
+#line 3766 "util/configparser.c"
     break;
 
-  case 309: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG  */
-#line 634 "util/configparser.y"
+  case 309:
+#line 634 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3112,11 +3782,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3116 "util/configparser.c"
+#line 3786 "util/configparser.c"
     break;
 
-  case 310: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG  */
-#line 651 "util/configparser.y"
+  case 310:
+#line 651 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3132,11 +3802,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3136 "util/configparser.c"
+#line 3806 "util/configparser.c"
     break;
 
-  case 311: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG  */
-#line 668 "util/configparser.y"
+  case 311:
+#line 668 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3150,11 +3820,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3154 "util/configparser.c"
+#line 3824 "util/configparser.c"
     break;
 
-  case 312: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG  */
-#line 683 "util/configparser.y"
+  case 312:
+#line 683 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3168,11 +3838,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3172 "util/configparser.c"
+#line 3842 "util/configparser.c"
     break;
 
-  case 313: /* server_interface: VAR_INTERFACE STRING_ARG  */
-#line 698 "util/configparser.y"
+  case 313:
+#line 698 "./util/configparser.y"
         {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -3184,11 +3854,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 3188 "util/configparser.c"
+#line 3858 "util/configparser.c"
     break;
 
-  case 314: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG  */
-#line 711 "util/configparser.y"
+  case 314:
+#line 711 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -3202,11 +3872,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 3206 "util/configparser.c"
+#line 3876 "util/configparser.c"
     break;
 
-  case 315: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG  */
-#line 726 "util/configparser.y"
+  case 315:
+#line 726 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3214,11 +3884,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3218 "util/configparser.c"
+#line 3888 "util/configparser.c"
     break;
 
-  case 316: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG  */
-#line 735 "util/configparser.y"
+  case 316:
+#line 735 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -3226,11 +3896,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3230 "util/configparser.c"
+#line 3900 "util/configparser.c"
     break;
 
-  case 317: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG  */
-#line 744 "util/configparser.y"
+  case 317:
+#line 744 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -3238,11 +3908,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3242 "util/configparser.c"
+#line 3912 "util/configparser.c"
     break;
 
-  case 318: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG  */
-#line 753 "util/configparser.y"
+  case 318:
+#line 753 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3250,11 +3920,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3254 "util/configparser.c"
+#line 3924 "util/configparser.c"
     break;
 
-  case 319: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG  */
-#line 762 "util/configparser.y"
+  case 319:
+#line 762 "./util/configparser.y"
         {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3262,11 +3932,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3266 "util/configparser.c"
+#line 3936 "util/configparser.c"
     break;
 
-  case 320: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG  */
-#line 771 "util/configparser.y"
+  case 320:
+#line 771 "./util/configparser.y"
         {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3274,11 +3944,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3278 "util/configparser.c"
+#line 3948 "util/configparser.c"
     break;
 
-  case 321: /* server_do_ip4: VAR_DO_IP4 STRING_ARG  */
-#line 780 "util/configparser.y"
+  case 321:
+#line 780 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3286,11 +3956,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3290 "util/configparser.c"
+#line 3960 "util/configparser.c"
     break;
 
-  case 322: /* server_do_ip6: VAR_DO_IP6 STRING_ARG  */
-#line 789 "util/configparser.y"
+  case 322:
+#line 789 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3298,11 +3968,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3302 "util/configparser.c"
+#line 3972 "util/configparser.c"
     break;
 
-  case 323: /* server_do_udp: VAR_DO_UDP STRING_ARG  */
-#line 798 "util/configparser.y"
+  case 323:
+#line 798 "./util/configparser.y"
         {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3310,11 +3980,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3314 "util/configparser.c"
+#line 3984 "util/configparser.c"
     break;
 
-  case 324: /* server_do_tcp: VAR_DO_TCP STRING_ARG  */
-#line 807 "util/configparser.y"
+  case 324:
+#line 807 "./util/configparser.y"
         {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3322,11 +3992,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3326 "util/configparser.c"
+#line 3996 "util/configparser.c"
     break;
 
-  case 325: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG  */
-#line 816 "util/configparser.y"
+  case 325:
+#line 816 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3334,11 +4004,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3338 "util/configparser.c"
+#line 4008 "util/configparser.c"
     break;
 
-  case 326: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG  */
-#line 825 "util/configparser.y"
+  case 326:
+#line 825 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3346,11 +4016,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3350 "util/configparser.c"
+#line 4020 "util/configparser.c"
     break;
 
-  case 327: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG  */
-#line 834 "util/configparser.y"
+  case 327:
+#line 834 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3358,11 +4028,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 3362 "util/configparser.c"
+#line 4032 "util/configparser.c"
     break;
 
-  case 328: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG  */
-#line 843 "util/configparser.y"
+  case 328:
+#line 843 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3370,11 +4040,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3374 "util/configparser.c"
+#line 4044 "util/configparser.c"
     break;
 
-  case 329: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG  */
-#line 852 "util/configparser.y"
+  case 329:
+#line 852 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3386,11 +4056,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3390 "util/configparser.c"
+#line 4060 "util/configparser.c"
     break;
 
-  case 330: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG  */
-#line 865 "util/configparser.y"
+  case 330:
+#line 865 "./util/configparser.y"
         {
                OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3400,11 +4070,11 @@ yyreduce:
                else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3404 "util/configparser.c"
+#line 4074 "util/configparser.c"
     break;
 
-  case 331: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG  */
-#line 876 "util/configparser.y"
+  case 331:
+#line 876 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3414,11 +4084,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3418 "util/configparser.c"
+#line 4088 "util/configparser.c"
     break;
 
-  case 332: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG  */
-#line 887 "util/configparser.y"
+  case 332:
+#line 887 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3426,11 +4096,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3430 "util/configparser.c"
+#line 4100 "util/configparser.c"
     break;
 
-  case 333: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG  */
-#line 896 "util/configparser.y"
+  case 333:
+#line 896 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3442,11 +4112,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3446 "util/configparser.c"
+#line 4116 "util/configparser.c"
     break;
 
-  case 334: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG  */
-#line 909 "util/configparser.y"
+  case 334:
+#line 909 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3454,11 +4124,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3458 "util/configparser.c"
+#line 4128 "util/configparser.c"
     break;
 
-  case 335: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG  */
-#line 918 "util/configparser.y"
+  case 335:
+#line 918 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3466,11 +4136,11 @@ yyreduce:
                else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3470 "util/configparser.c"
+#line 4140 "util/configparser.c"
     break;
 
-  case 336: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG  */
-#line 927 "util/configparser.y"
+  case 336:
+#line 927 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3478,31 +4148,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3482 "util/configparser.c"
+#line 4152 "util/configparser.c"
     break;
 
-  case 337: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG  */
-#line 936 "util/configparser.y"
+  case 337:
+#line 936 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 3492 "util/configparser.c"
+#line 4162 "util/configparser.c"
     break;
 
-  case 338: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG  */
-#line 943 "util/configparser.y"
+  case 338:
+#line 943 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 3502 "util/configparser.c"
+#line 4172 "util/configparser.c"
     break;
 
-  case 339: /* server_ssl_port: VAR_SSL_PORT STRING_ARG  */
-#line 950 "util/configparser.y"
+  case 339:
+#line 950 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3510,21 +4180,21 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3514 "util/configparser.c"
+#line 4184 "util/configparser.c"
     break;
 
-  case 340: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG  */
-#line 959 "util/configparser.y"
+  case 340:
+#line 959 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_cert_bundle);
                cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
        }
-#line 3524 "util/configparser.c"
+#line 4194 "util/configparser.c"
     break;
 
-  case 341: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG  */
-#line 966 "util/configparser.y"
+  case 341:
+#line 966 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3532,53 +4202,53 @@ yyreduce:
                else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3536 "util/configparser.c"
+#line 4206 "util/configparser.c"
     break;
 
-  case 342: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG  */
-#line 975 "util/configparser.y"
+  case 342:
+#line 975 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3547 "util/configparser.c"
+#line 4217 "util/configparser.c"
     break;
 
-  case 343: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG  */
-#line 983 "util/configparser.y"
+  case 343:
+#line 983 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphers);
                cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
        }
-#line 3557 "util/configparser.c"
+#line 4227 "util/configparser.c"
     break;
 
-  case 344: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG  */
-#line 990 "util/configparser.y"
+  case 344:
+#line 990 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphersuites);
                cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
        }
-#line 3567 "util/configparser.c"
+#line 4237 "util/configparser.c"
     break;
 
-  case 345: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG  */
-#line 997 "util/configparser.y"
+  case 345:
+#line 997 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3578 "util/configparser.c"
+#line 4248 "util/configparser.c"
     break;
 
-  case 346: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG  */
-#line 1005 "util/configparser.y"
+  case 346:
+#line 1005 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3586,11 +4256,11 @@ yyreduce:
                else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3590 "util/configparser.c"
+#line 4260 "util/configparser.c"
     break;
 
-  case 347: /* server_https_port: VAR_HTTPS_PORT STRING_ARG  */
-#line 1014 "util/configparser.y"
+  case 347:
+#line 1014 "./util/configparser.y"
         {
                OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3598,11 +4268,11 @@ yyreduce:
                else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3602 "util/configparser.c"
+#line 4272 "util/configparser.c"
     break;
 
-  case 348: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG  */
-#line 1022 "util/configparser.y"
+  case 348:
+#line 1022 "./util/configparser.y"
         {
                OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->http_endpoint);
@@ -3618,11 +4288,11 @@ yyreduce:
                        cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
                }
        }
-#line 3622 "util/configparser.c"
+#line 4292 "util/configparser.c"
     break;
 
-  case 349: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
-#line 1038 "util/configparser.y"
+  case 349:
+#line 1038 "./util/configparser.y"
         {
                OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3630,11 +4300,11 @@ yyreduce:
                else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3634 "util/configparser.c"
+#line 4304 "util/configparser.c"
     break;
 
-  case 350: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
-#line 1046 "util/configparser.y"
+  case 350:
+#line 1046 "./util/configparser.y"
         {
                OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -3642,11 +4312,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3646 "util/configparser.c"
+#line 4316 "util/configparser.c"
     break;
 
-  case 351: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
-#line 1054 "util/configparser.y"
+  case 351:
+#line 1054 "./util/configparser.y"
         {
                OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -3654,11 +4324,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3658 "util/configparser.c"
+#line 4328 "util/configparser.c"
     break;
 
-  case 352: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
-#line 1062 "util/configparser.y"
+  case 352:
+#line 1062 "./util/configparser.y"
         {
                OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3666,11 +4336,11 @@ yyreduce:
                else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3670 "util/configparser.c"
+#line 4340 "util/configparser.c"
     break;
 
-  case 353: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
-#line 1070 "util/configparser.y"
+  case 353:
+#line 1070 "./util/configparser.y"
         {
                OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3678,11 +4348,11 @@ yyreduce:
                else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3682 "util/configparser.c"
+#line 4352 "util/configparser.c"
     break;
 
-  case 354: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
-#line 1078 "util/configparser.y"
+  case 354:
+#line 1078 "./util/configparser.y"
         {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3690,11 +4360,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3694 "util/configparser.c"
+#line 4364 "util/configparser.c"
     break;
 
-  case 355: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
-#line 1087 "util/configparser.y"
+  case 355:
+#line 1087 "./util/configparser.y"
         {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3702,11 +4372,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3706 "util/configparser.c"
+#line 4376 "util/configparser.c"
     break;
 
-  case 356: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
-#line 1096 "util/configparser.y"
+  case 356:
+#line 1096 "./util/configparser.y"
         {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3719,11 +4389,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3723 "util/configparser.c"
+#line 4393 "util/configparser.c"
     break;
 
-  case 357: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
-#line 1110 "util/configparser.y"
+  case 357:
+#line 1110 "./util/configparser.y"
         {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3731,11 +4401,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3735 "util/configparser.c"
+#line 4405 "util/configparser.c"
     break;
 
-  case 358: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
-#line 1119 "util/configparser.y"
+  case 358:
+#line 1119 "./util/configparser.y"
         {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3743,11 +4413,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3747 "util/configparser.c"
+#line 4417 "util/configparser.c"
     break;
 
-  case 359: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
-#line 1128 "util/configparser.y"
+  case 359:
+#line 1128 "./util/configparser.y"
   {
        OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3755,11 +4425,11 @@ yyreduce:
        else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3759 "util/configparser.c"
+#line 4429 "util/configparser.c"
     break;
 
-  case 360: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
-#line 1137 "util/configparser.y"
+  case 360:
+#line 1137 "./util/configparser.y"
   {
        OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3767,11 +4437,11 @@ yyreduce:
        else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3771 "util/configparser.c"
+#line 4441 "util/configparser.c"
     break;
 
-  case 361: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
-#line 1146 "util/configparser.y"
+  case 361:
+#line 1146 "./util/configparser.y"
         {
                OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3779,11 +4449,11 @@ yyreduce:
                else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3783 "util/configparser.c"
+#line 4453 "util/configparser.c"
     break;
 
-  case 362: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
-#line 1155 "util/configparser.y"
+  case 362:
+#line 1155 "./util/configparser.y"
   {
        OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3791,31 +4461,31 @@ yyreduce:
        else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 3795 "util/configparser.c"
+#line 4465 "util/configparser.c"
     break;
 
-  case 363: /* server_chroot: VAR_CHROOT STRING_ARG  */
-#line 1164 "util/configparser.y"
+  case 363:
+#line 1164 "./util/configparser.y"
         {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 3805 "util/configparser.c"
+#line 4475 "util/configparser.c"
     break;
 
-  case 364: /* server_username: VAR_USERNAME STRING_ARG  */
-#line 1171 "util/configparser.y"
+  case 364:
+#line 1171 "./util/configparser.y"
         {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 3815 "util/configparser.c"
+#line 4485 "util/configparser.c"
     break;
 
-  case 365: /* server_directory: VAR_DIRECTORY STRING_ARG  */
-#line 1178 "util/configparser.y"
+  case 365:
+#line 1178 "./util/configparser.y"
         {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -3840,105 +4510,105 @@ yyreduce:
                        }
                }
        }
-#line 3844 "util/configparser.c"
+#line 4514 "util/configparser.c"
     break;
 
-  case 366: /* server_logfile: VAR_LOGFILE STRING_ARG  */
-#line 1204 "util/configparser.y"
+  case 366:
+#line 1204 "./util/configparser.y"
         {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 3855 "util/configparser.c"
+#line 4525 "util/configparser.c"
     break;
 
-  case 367: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
-#line 1212 "util/configparser.y"
+  case 367:
+#line 1212 "./util/configparser.y"
         {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 3865 "util/configparser.c"
+#line 4535 "util/configparser.c"
     break;
 
-  case 368: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
-#line 1219 "util/configparser.y"
+  case 368:
+#line 1219 "./util/configparser.y"
         {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3875 "util/configparser.c"
+#line 4545 "util/configparser.c"
     break;
 
-  case 369: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
-#line 1226 "util/configparser.y"
+  case 369:
+#line 1226 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 3885 "util/configparser.c"
+#line 4555 "util/configparser.c"
     break;
 
-  case 370: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
-#line 1233 "util/configparser.y"
+  case 370:
+#line 1233 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 3895 "util/configparser.c"
+#line 4565 "util/configparser.c"
     break;
 
-  case 371: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
-#line 1240 "util/configparser.y"
+  case 371:
+#line 1240 "./util/configparser.y"
         {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3906 "util/configparser.c"
+#line 4576 "util/configparser.c"
     break;
 
-  case 372: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
-#line 1248 "util/configparser.y"
+  case 372:
+#line 1248 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3917 "util/configparser.c"
+#line 4587 "util/configparser.c"
     break;
 
-  case 373: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
-#line 1256 "util/configparser.y"
+  case 373:
+#line 1256 "./util/configparser.y"
         {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3928 "util/configparser.c"
+#line 4598 "util/configparser.c"
     break;
 
-  case 374: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
-#line 1264 "util/configparser.y"
+  case 374:
+#line 1264 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3938 "util/configparser.c"
+#line 4608 "util/configparser.c"
     break;
 
-  case 375: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
-#line 1271 "util/configparser.y"
+  case 375:
+#line 1271 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3948,11 +4618,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3952 "util/configparser.c"
+#line 4622 "util/configparser.c"
     break;
 
-  case 376: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
-#line 1282 "util/configparser.y"
+  case 376:
+#line 1282 "./util/configparser.y"
         {
                OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3962,21 +4632,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3966 "util/configparser.c"
+#line 4636 "util/configparser.c"
     break;
 
-  case 377: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
-#line 1293 "util/configparser.y"
+  case 377:
+#line 1293 "./util/configparser.y"
         {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3976 "util/configparser.c"
+#line 4646 "util/configparser.c"
     break;
 
-  case 378: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
-#line 1300 "util/configparser.y"
+  case 378:
+#line 1300 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3984,11 +4654,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3988 "util/configparser.c"
+#line 4658 "util/configparser.c"
     break;
 
-  case 379: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
-#line 1309 "util/configparser.y"
+  case 379:
+#line 1309 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3996,11 +4666,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4000 "util/configparser.c"
+#line 4670 "util/configparser.c"
     break;
 
-  case 380: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
-#line 1318 "util/configparser.y"
+  case 380:
+#line 1318 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4008,31 +4678,31 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4012 "util/configparser.c"
+#line 4682 "util/configparser.c"
     break;
 
-  case 381: /* server_identity: VAR_IDENTITY STRING_ARG  */
-#line 1327 "util/configparser.y"
+  case 381:
+#line 1327 "./util/configparser.y"
         {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 4022 "util/configparser.c"
+#line 4692 "util/configparser.c"
     break;
 
-  case 382: /* server_version: VAR_VERSION STRING_ARG  */
-#line 1334 "util/configparser.y"
+  case 382:
+#line 1334 "./util/configparser.y"
         {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 4032 "util/configparser.c"
+#line 4702 "util/configparser.c"
     break;
 
-  case 383: /* server_nsid: VAR_NSID STRING_ARG  */
-#line 1341 "util/configparser.y"
+  case 383:
+#line 1341 "./util/configparser.y"
         {
                OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->nsid_cfg_str);
@@ -4047,33 +4717,33 @@ yyreduce:
                        yyerror("the NSID must be either a hex string or an "
                            "ascii character string prepended with ascii_.");
        }
-#line 4051 "util/configparser.c"
+#line 4721 "util/configparser.c"
     break;
 
-  case 384: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
-#line 1357 "util/configparser.y"
+  case 384:
+#line 1357 "./util/configparser.y"
         {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 4062 "util/configparser.c"
+#line 4732 "util/configparser.c"
     break;
 
-  case 385: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
-#line 1365 "util/configparser.y"
+  case 385:
+#line 1365 "./util/configparser.y"
         {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 4073 "util/configparser.c"
+#line 4743 "util/configparser.c"
     break;
 
-  case 386: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
-#line 1373 "util/configparser.y"
+  case 386:
+#line 1373 "./util/configparser.y"
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4082,11 +4752,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 4086 "util/configparser.c"
+#line 4756 "util/configparser.c"
     break;
 
-  case 387: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
-#line 1383 "util/configparser.y"
+  case 387:
+#line 1383 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4095,11 +4765,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 4099 "util/configparser.c"
+#line 4769 "util/configparser.c"
     break;
 
-  case 388: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
-#line 1393 "util/configparser.y"
+  case 388:
+#line 1393 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4108,11 +4778,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 4112 "util/configparser.c"
+#line 4782 "util/configparser.c"
     break;
 
-  case 389: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
-#line 1403 "util/configparser.y"
+  case 389:
+#line 1403 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4125,22 +4795,22 @@ yyreduce:
                        cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4129 "util/configparser.c"
+#line 4799 "util/configparser.c"
     break;
 
-  case 390: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
-#line 1417 "util/configparser.y"
+  case 390:
+#line 1417 "./util/configparser.y"
         {
                OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4140 "util/configparser.c"
+#line 4810 "util/configparser.c"
     break;
 
-  case 391: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
-#line 1425 "util/configparser.y"
+  case 391:
+#line 1425 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4152,11 +4822,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4156 "util/configparser.c"
+#line 4826 "util/configparser.c"
     break;
 
-  case 392: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
-#line 1438 "util/configparser.y"
+  case 392:
+#line 1438 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4166,22 +4836,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4170 "util/configparser.c"
+#line 4840 "util/configparser.c"
     break;
 
-  case 393: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
-#line 1449 "util/configparser.y"
+  case 393:
+#line 1449 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4181 "util/configparser.c"
+#line 4851 "util/configparser.c"
     break;
 
-  case 394: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
-#line 1457 "util/configparser.y"
+  case 394:
+#line 1457 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4193,11 +4863,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4197 "util/configparser.c"
+#line 4867 "util/configparser.c"
     break;
 
-  case 395: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
-#line 1470 "util/configparser.y"
+  case 395:
+#line 1470 "./util/configparser.y"
         {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4205,11 +4875,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4209 "util/configparser.c"
+#line 4879 "util/configparser.c"
     break;
 
-  case 396: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
-#line 1479 "util/configparser.y"
+  case 396:
+#line 1479 "./util/configparser.y"
         {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4217,11 +4887,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4221 "util/configparser.c"
+#line 4891 "util/configparser.c"
     break;
 
-  case 397: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
-#line 1488 "util/configparser.y"
+  case 397:
+#line 1488 "./util/configparser.y"
         {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4229,11 +4899,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4233 "util/configparser.c"
+#line 4903 "util/configparser.c"
     break;
 
-  case 398: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
-#line 1497 "util/configparser.y"
+  case 398:
+#line 1497 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4241,11 +4911,11 @@ yyreduce:
                else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4245 "util/configparser.c"
+#line 4915 "util/configparser.c"
     break;
 
-  case 399: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
-#line 1506 "util/configparser.y"
+  case 399:
+#line 1506 "./util/configparser.y"
         {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4254,11 +4924,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4258 "util/configparser.c"
+#line 4928 "util/configparser.c"
     break;
 
-  case 400: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
-#line 1516 "util/configparser.y"
+  case 400:
+#line 1516 "./util/configparser.y"
         {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4267,22 +4937,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4271 "util/configparser.c"
+#line 4941 "util/configparser.c"
     break;
 
-  case 401: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
-#line 1526 "util/configparser.y"
+  case 401:
+#line 1526 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4282 "util/configparser.c"
+#line 4952 "util/configparser.c"
     break;
 
-  case 402: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
-#line 1534 "util/configparser.y"
+  case 402:
+#line 1534 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4294,11 +4964,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4298 "util/configparser.c"
+#line 4968 "util/configparser.c"
     break;
 
-  case 403: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
-#line 1547 "util/configparser.y"
+  case 403:
+#line 1547 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4306,22 +4976,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4310 "util/configparser.c"
+#line 4980 "util/configparser.c"
     break;
 
-  case 404: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
-#line 1556 "util/configparser.y"
+  case 404:
+#line 1556 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4321 "util/configparser.c"
+#line 4991 "util/configparser.c"
     break;
 
-  case 405: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
-#line 1564 "util/configparser.y"
+  case 405:
+#line 1564 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4329,22 +4999,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4333 "util/configparser.c"
+#line 5003 "util/configparser.c"
     break;
 
-  case 406: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
-#line 1573 "util/configparser.y"
+  case 406:
+#line 1573 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4344 "util/configparser.c"
+#line 5014 "util/configparser.c"
     break;
 
-  case 407: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
-#line 1581 "util/configparser.y"
+  case 407:
+#line 1581 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4356,11 +5026,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4360 "util/configparser.c"
+#line 5030 "util/configparser.c"
     break;
 
-  case 408: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
-#line 1594 "util/configparser.y"
+  case 408:
+#line 1594 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4368,11 +5038,11 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4372 "util/configparser.c"
+#line 5042 "util/configparser.c"
     break;
 
-  case 409: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
-#line 1603 "util/configparser.y"
+  case 409:
+#line 1603 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4381,21 +5051,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4385 "util/configparser.c"
+#line 5055 "util/configparser.c"
     break;
 
-  case 410: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
-#line 1613 "util/configparser.y"
+  case 410:
+#line 1613 "./util/configparser.y"
         {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 4395 "util/configparser.c"
+#line 5065 "util/configparser.c"
     break;
 
-  case 411: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
-#line 1620 "util/configparser.y"
+  case 411:
+#line 1620 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4404,11 +5074,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4408 "util/configparser.c"
+#line 5078 "util/configparser.c"
     break;
 
-  case 412: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
-#line 1630 "util/configparser.y"
+  case 412:
+#line 1630 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4417,11 +5087,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4421 "util/configparser.c"
+#line 5091 "util/configparser.c"
     break;
 
-  case 413: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
-#line 1640 "util/configparser.y"
+  case 413:
+#line 1640 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4430,11 +5100,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4434 "util/configparser.c"
+#line 5104 "util/configparser.c"
     break;
 
-  case 414: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
-#line 1650 "util/configparser.y"
+  case 414:
+#line 1650 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4443,11 +5113,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4447 "util/configparser.c"
+#line 5117 "util/configparser.c"
     break;
 
-  case 415: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
-#line 1660 "util/configparser.y"
+  case 415:
+#line 1660 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4456,11 +5126,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4460 "util/configparser.c"
+#line 5130 "util/configparser.c"
     break;
 
-  case 416: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
-#line 1670 "util/configparser.y"
+  case 416:
+#line 1670 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4469,11 +5139,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4473 "util/configparser.c"
+#line 5143 "util/configparser.c"
     break;
 
-  case 417: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
-#line 1680 "util/configparser.y"
+  case 417:
+#line 1680 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4482,11 +5152,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4486 "util/configparser.c"
+#line 5156 "util/configparser.c"
     break;
 
-  case 418: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
-#line 1690 "util/configparser.y"
+  case 418:
+#line 1690 "./util/configparser.y"
         {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4495,41 +5165,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4499 "util/configparser.c"
+#line 5169 "util/configparser.c"
     break;
 
-  case 419: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
-#line 1700 "util/configparser.y"
+  case 419:
+#line 1700 "./util/configparser.y"
         {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4509 "util/configparser.c"
+#line 5179 "util/configparser.c"
     break;
 
-  case 420: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
-#line 1707 "util/configparser.y"
+  case 420:
+#line 1707 "./util/configparser.y"
         {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4519 "util/configparser.c"
+#line 5189 "util/configparser.c"
     break;
 
-  case 421: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
-#line 1714 "util/configparser.y"
+  case 421:
+#line 1714 "./util/configparser.y"
         {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4529 "util/configparser.c"
+#line 5199 "util/configparser.c"
     break;
 
-  case 422: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
-#line 1721 "util/configparser.y"
+  case 422:
+#line 1721 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4537,11 +5207,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4541 "util/configparser.c"
+#line 5211 "util/configparser.c"
     break;
 
-  case 423: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
-#line 1730 "util/configparser.y"
+  case 423:
+#line 1730 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4549,11 +5219,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4553 "util/configparser.c"
+#line 5223 "util/configparser.c"
     break;
 
-  case 424: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
-#line 1739 "util/configparser.y"
+  case 424:
+#line 1739 "./util/configparser.y"
         {
                OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4561,11 +5231,11 @@ yyreduce:
                else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4565 "util/configparser.c"
+#line 5235 "util/configparser.c"
     break;
 
-  case 425: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
-#line 1748 "util/configparser.y"
+  case 425:
+#line 1748 "./util/configparser.y"
         {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4573,21 +5243,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4577 "util/configparser.c"
+#line 5247 "util/configparser.c"
     break;
 
-  case 426: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
-#line 1757 "util/configparser.y"
+  case 426:
+#line 1757 "./util/configparser.y"
         {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4587 "util/configparser.c"
+#line 5257 "util/configparser.c"
     break;
 
-  case 427: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
-#line 1764 "util/configparser.y"
+  case 427:
+#line 1764 "./util/configparser.y"
         {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4596,11 +5266,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4600 "util/configparser.c"
+#line 5270 "util/configparser.c"
     break;
 
-  case 428: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
-#line 1774 "util/configparser.y"
+  case 428:
+#line 1774 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -4619,21 +5289,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 4623 "util/configparser.c"
+#line 5293 "util/configparser.c"
     break;
 
-  case 429: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
-#line 1794 "util/configparser.y"
+  case 429:
+#line 1794 "./util/configparser.y"
         {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 4633 "util/configparser.c"
+#line 5303 "util/configparser.c"
     break;
 
-  case 430: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
-#line 1801 "util/configparser.y"
+  case 430:
+#line 1801 "./util/configparser.y"
         {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4650,11 +5320,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4654 "util/configparser.c"
+#line 5324 "util/configparser.c"
     break;
 
-  case 431: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
-#line 1819 "util/configparser.y"
+  case 431:
+#line 1819 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4666,11 +5336,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4670 "util/configparser.c"
+#line 5340 "util/configparser.c"
     break;
 
-  case 432: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
-#line 1832 "util/configparser.y"
+  case 432:
+#line 1832 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4682,11 +5352,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4686 "util/configparser.c"
+#line 5356 "util/configparser.c"
     break;
 
-  case 433: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
-#line 1845 "util/configparser.y"
+  case 433:
+#line 1845 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4694,11 +5364,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4698 "util/configparser.c"
+#line 5368 "util/configparser.c"
     break;
 
-  case 434: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
-#line 1854 "util/configparser.y"
+  case 434:
+#line 1854 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4706,11 +5376,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4710 "util/configparser.c"
+#line 5380 "util/configparser.c"
     break;
 
-  case 435: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
-#line 1863 "util/configparser.y"
+  case 435:
+#line 1863 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4718,11 +5388,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4722 "util/configparser.c"
+#line 5392 "util/configparser.c"
     break;
 
-  case 436: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
-#line 1872 "util/configparser.y"
+  case 436:
+#line 1872 "./util/configparser.y"
         {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4730,11 +5400,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4734 "util/configparser.c"
+#line 5404 "util/configparser.c"
     break;
 
-  case 437: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
-#line 1881 "util/configparser.y"
+  case 437:
+#line 1881 "./util/configparser.y"
         {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4743,11 +5413,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4747 "util/configparser.c"
+#line 5417 "util/configparser.c"
     break;
 
-  case 438: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
-#line 1891 "util/configparser.y"
+  case 438:
+#line 1891 "./util/configparser.y"
         {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4756,11 +5426,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4760 "util/configparser.c"
+#line 5430 "util/configparser.c"
     break;
 
-  case 439: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
-#line 1901 "util/configparser.y"
+  case 439:
+#line 1901 "./util/configparser.y"
         {
                OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4770,11 +5440,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4774 "util/configparser.c"
+#line 5444 "util/configparser.c"
     break;
 
-  case 440: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
-#line 1912 "util/configparser.y"
+  case 440:
+#line 1912 "./util/configparser.y"
         {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4782,11 +5452,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4786 "util/configparser.c"
+#line 5456 "util/configparser.c"
     break;
 
-  case 441: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
-#line 1921 "util/configparser.y"
+  case 441:
+#line 1921 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4794,11 +5464,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4798 "util/configparser.c"
+#line 5468 "util/configparser.c"
     break;
 
-  case 442: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
-#line 1930 "util/configparser.y"
+  case 442:
+#line 1930 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4806,11 +5476,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4810 "util/configparser.c"
+#line 5480 "util/configparser.c"
     break;
 
-  case 443: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
-#line 1939 "util/configparser.y"
+  case 443:
+#line 1939 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4818,11 +5488,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4822 "util/configparser.c"
+#line 5492 "util/configparser.c"
     break;
 
-  case 444: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
-#line 1948 "util/configparser.y"
+  case 444:
+#line 1948 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4830,11 +5500,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4834 "util/configparser.c"
+#line 5504 "util/configparser.c"
     break;
 
-  case 445: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
-#line 1957 "util/configparser.y"
+  case 445:
+#line 1957 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4842,11 +5512,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4846 "util/configparser.c"
+#line 5516 "util/configparser.c"
     break;
 
-  case 446: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
-#line 1966 "util/configparser.y"
+  case 446:
+#line 1966 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4854,11 +5524,11 @@ yyreduce:
                else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4858 "util/configparser.c"
+#line 5528 "util/configparser.c"
     break;
 
-  case 447: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
-#line 1975 "util/configparser.y"
+  case 447:
+#line 1975 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4870,11 +5540,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4874 "util/configparser.c"
+#line 5544 "util/configparser.c"
     break;
 
-  case 448: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
-#line 1988 "util/configparser.y"
+  case 448:
+#line 1988 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4886,11 +5556,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4890 "util/configparser.c"
+#line 5560 "util/configparser.c"
     break;
 
-  case 449: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
-#line 2001 "util/configparser.y"
+  case 449:
+#line 2001 "./util/configparser.y"
         {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4898,21 +5568,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4902 "util/configparser.c"
+#line 5572 "util/configparser.c"
     break;
 
-  case 450: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
-#line 2010 "util/configparser.y"
+  case 450:
+#line 2010 "./util/configparser.y"
         {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 4912 "util/configparser.c"
+#line 5582 "util/configparser.c"
     break;
 
-  case 451: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
-#line 2017 "util/configparser.y"
+  case 451:
+#line 2017 "./util/configparser.y"
         {
                OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4920,11 +5590,11 @@ yyreduce:
                else    cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4924 "util/configparser.c"
+#line 5594 "util/configparser.c"
     break;
 
-  case 452: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
-#line 2026 "util/configparser.y"
+  case 452:
+#line 2026 "./util/configparser.y"
         {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4932,11 +5602,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4936 "util/configparser.c"
+#line 5606 "util/configparser.c"
     break;
 
-  case 453: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
-#line 2035 "util/configparser.y"
+  case 453:
+#line 2035 "./util/configparser.y"
         {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4944,11 +5614,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4948 "util/configparser.c"
+#line 5618 "util/configparser.c"
     break;
 
-  case 454: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
-#line 2044 "util/configparser.y"
+  case 454:
+#line 2044 "./util/configparser.y"
         {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4956,11 +5626,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4960 "util/configparser.c"
+#line 5630 "util/configparser.c"
     break;
 
-  case 455: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
-#line 2053 "util/configparser.y"
+  case 455:
+#line 2053 "./util/configparser.y"
         {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4969,22 +5639,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4973 "util/configparser.c"
+#line 5643 "util/configparser.c"
     break;
 
-  case 456: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
-#line 2062 "util/configparser.y"
+  case 456:
+#line 2062 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4984 "util/configparser.c"
+#line 5654 "util/configparser.c"
     break;
 
-  case 457: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
-#line 2070 "util/configparser.y"
+  case 457:
+#line 2070 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4996,22 +5666,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5000 "util/configparser.c"
+#line 5670 "util/configparser.c"
     break;
 
-  case 458: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
-#line 2083 "util/configparser.y"
+  case 458:
+#line 2083 "./util/configparser.y"
         {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5011 "util/configparser.c"
+#line 5681 "util/configparser.c"
     break;
 
-  case 459: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
-#line 2091 "util/configparser.y"
+  case 459:
+#line 2091 "./util/configparser.y"
         {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -5055,21 +5725,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5059 "util/configparser.c"
+#line 5729 "util/configparser.c"
     break;
 
-  case 460: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
-#line 2136 "util/configparser.y"
+  case 460:
+#line 2136 "./util/configparser.y"
         {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 5069 "util/configparser.c"
+#line 5739 "util/configparser.c"
     break;
 
-  case 461: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
-#line 2143 "util/configparser.y"
+  case 461:
+#line 2143 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -5083,11 +5753,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5087 "util/configparser.c"
+#line 5757 "util/configparser.c"
     break;
 
-  case 462: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
-#line 2158 "util/configparser.y"
+  case 462:
+#line 2158 "./util/configparser.y"
         {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5096,11 +5766,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5100 "util/configparser.c"
+#line 5770 "util/configparser.c"
     break;
 
-  case 463: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
-#line 2168 "util/configparser.y"
+  case 463:
+#line 2168 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5109,41 +5779,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5113 "util/configparser.c"
+#line 5783 "util/configparser.c"
     break;
 
-  case 464: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
-#line 2178 "util/configparser.y"
+  case 464:
+#line 2178 "./util/configparser.y"
         {
                OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5123 "util/configparser.c"
+#line 5793 "util/configparser.c"
     break;
 
-  case 465: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
-#line 2185 "util/configparser.y"
+  case 465:
+#line 2185 "./util/configparser.y"
         {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5133 "util/configparser.c"
+#line 5803 "util/configparser.c"
     break;
 
-  case 466: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
-#line 2192 "util/configparser.y"
+  case 466:
+#line 2192 "./util/configparser.y"
         {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 5143 "util/configparser.c"
+#line 5813 "util/configparser.c"
     break;
 
-  case 467: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
-#line 2199 "util/configparser.y"
+  case 467:
+#line 2199 "./util/configparser.y"
         {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5151,22 +5821,22 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5155 "util/configparser.c"
+#line 5825 "util/configparser.c"
     break;
 
-  case 468: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
-#line 2208 "util/configparser.y"
+  case 468:
+#line 2208 "./util/configparser.y"
         {
                OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
                        (yyvsp[0].str)))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 5166 "util/configparser.c"
+#line 5836 "util/configparser.c"
     break;
 
-  case 469: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
-#line 2216 "util/configparser.y"
+  case 469:
+#line 2216 "./util/configparser.y"
         {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -5179,11 +5849,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5183 "util/configparser.c"
+#line 5853 "util/configparser.c"
     break;
 
-  case 470: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
-#line 2230 "util/configparser.y"
+  case 470:
+#line 2230 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5203,11 +5873,11 @@ yyreduce:
                        }
                }
        }
-#line 5207 "util/configparser.c"
+#line 5877 "util/configparser.c"
     break;
 
-  case 471: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
-#line 2251 "util/configparser.y"
+  case 471:
+#line 2251 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5227,11 +5897,11 @@ yyreduce:
                        }
                }
        }
-#line 5231 "util/configparser.c"
+#line 5901 "util/configparser.c"
     break;
 
-  case 472: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
-#line 2272 "util/configparser.y"
+  case 472:
+#line 2272 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -5242,11 +5912,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5246 "util/configparser.c"
+#line 5916 "util/configparser.c"
     break;
 
-  case 473: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
-#line 2284 "util/configparser.y"
+  case 473:
+#line 2284 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -5257,11 +5927,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5261 "util/configparser.c"
+#line 5931 "util/configparser.c"
     break;
 
-  case 474: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
-#line 2296 "util/configparser.y"
+  case 474:
+#line 2296 "./util/configparser.y"
         {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -5272,11 +5942,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5276 "util/configparser.c"
+#line 5946 "util/configparser.c"
     break;
 
-  case 475: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
-#line 2308 "util/configparser.y"
+  case 475:
+#line 2308 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -5284,11 +5954,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 5288 "util/configparser.c"
+#line 5958 "util/configparser.c"
     break;
 
-  case 476: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
-#line 2317 "util/configparser.y"
+  case 476:
+#line 2317 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5308,11 +5978,11 @@ yyreduce:
                        }
                }
        }
-#line 5312 "util/configparser.c"
+#line 5982 "util/configparser.c"
     break;
 
-  case 477: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
-#line 2338 "util/configparser.y"
+  case 477:
+#line 2338 "./util/configparser.y"
         { 
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5320,11 +5990,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5324 "util/configparser.c"
+#line 5994 "util/configparser.c"
     break;
 
-  case 478: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
-#line 2348 "util/configparser.y"
+  case 478:
+#line 2348 "./util/configparser.y"
         { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5332,33 +6002,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5336 "util/configparser.c"
+#line 6006 "util/configparser.c"
     break;
 
-  case 479: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
-#line 2357 "util/configparser.y"
+  case 479:
+#line 2357 "./util/configparser.y"
   {
        OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 5347 "util/configparser.c"
+#line 6017 "util/configparser.c"
     break;
 
-  case 480: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
-#line 2365 "util/configparser.y"
+  case 480:
+#line 2365 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5358 "util/configparser.c"
+#line 6028 "util/configparser.c"
     break;
 
-  case 481: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
-#line 2373 "util/configparser.y"
+  case 481:
+#line 2373 "./util/configparser.y"
   {
        OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -5370,11 +6040,11 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 5374 "util/configparser.c"
+#line 6044 "util/configparser.c"
     break;
 
-  case 482: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
-#line 2386 "util/configparser.y"
+  case 482:
+#line 2386 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5386,11 +6056,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5390 "util/configparser.c"
+#line 6060 "util/configparser.c"
     break;
 
-  case 483: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
-#line 2399 "util/configparser.y"
+  case 483:
+#line 2399 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -5404,11 +6074,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 5408 "util/configparser.c"
+#line 6078 "util/configparser.c"
     break;
 
-  case 484: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
-#line 2414 "util/configparser.y"
+  case 484:
+#line 2414 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -5422,11 +6092,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 5426 "util/configparser.c"
+#line 6096 "util/configparser.c"
     break;
 
-  case 485: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
-#line 2429 "util/configparser.y"
+  case 485:
+#line 2429 "./util/configparser.y"
   { 
        OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
        if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5434,11 +6104,11 @@ yyreduce:
        else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
        free((yyvsp[0].str));
        }
-#line 5438 "util/configparser.c"
+#line 6108 "util/configparser.c"
     break;
 
-  case 486: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
-#line 2438 "util/configparser.y"
+  case 486:
+#line 2438 "./util/configparser.y"
         { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5446,20 +6116,20 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5450 "util/configparser.c"
+#line 6120 "util/configparser.c"
     break;
 
-  case 487: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
-#line 2447 "util/configparser.y"
+  case 487:
+#line 2447 "./util/configparser.y"
         { 
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
                free((yyvsp[0].str));
        }
-#line 5459 "util/configparser.c"
+#line 6129 "util/configparser.c"
     break;
 
-  case 488: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
-#line 2453 "util/configparser.y"
+  case 488:
+#line 2453 "./util/configparser.y"
         { 
                OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) <= 0)
@@ -5467,11 +6137,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5471 "util/configparser.c"
+#line 6141 "util/configparser.c"
     break;
 
-  case 489: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
-#line 2462 "util/configparser.y"
+  case 489:
+#line 2462 "./util/configparser.y"
         { 
                OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5479,11 +6149,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5483 "util/configparser.c"
+#line 6153 "util/configparser.c"
     break;
 
-  case 490: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
-#line 2471 "util/configparser.y"
+  case 490:
+#line 2471 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5492,11 +6162,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5496 "util/configparser.c"
+#line 6166 "util/configparser.c"
     break;
 
-  case 491: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
-#line 2481 "util/configparser.y"
+  case 491:
+#line 2481 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5505,11 +6175,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5509 "util/configparser.c"
+#line 6179 "util/configparser.c"
     break;
 
-  case 492: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
-#line 2491 "util/configparser.y"
+  case 492:
+#line 2491 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5518,11 +6188,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5522 "util/configparser.c"
+#line 6192 "util/configparser.c"
     break;
 
-  case 493: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
-#line 2501 "util/configparser.y"
+  case 493:
+#line 2501 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5530,11 +6200,11 @@ yyreduce:
                else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5534 "util/configparser.c"
+#line 6204 "util/configparser.c"
     break;
 
-  case 494: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
-#line 2510 "util/configparser.y"
+  case 494:
+#line 2510 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5543,11 +6213,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5547 "util/configparser.c"
+#line 6217 "util/configparser.c"
     break;
 
-  case 495: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
-#line 2520 "util/configparser.y"
+  case 495:
+#line 2520 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5555,11 +6225,11 @@ yyreduce:
                else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5559 "util/configparser.c"
+#line 6229 "util/configparser.c"
     break;
 
-  case 496: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
-#line 2529 "util/configparser.y"
+  case 496:
+#line 2529 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
@@ -5571,11 +6241,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5575 "util/configparser.c"
+#line 6245 "util/configparser.c"
     break;
 
-  case 497: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
-#line 2542 "util/configparser.y"
+  case 497:
+#line 2542 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
@@ -5587,11 +6257,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5591 "util/configparser.c"
+#line 6261 "util/configparser.c"
     break;
 
-  case 498: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
-#line 2555 "util/configparser.y"
+  case 498:
+#line 2555 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
@@ -5602,11 +6272,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5606 "util/configparser.c"
+#line 6276 "util/configparser.c"
     break;
 
-  case 499: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
-#line 2567 "util/configparser.y"
+  case 499:
+#line 2567 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
@@ -5619,11 +6289,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5623 "util/configparser.c"
+#line 6293 "util/configparser.c"
     break;
 
-  case 500: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
-#line 2581 "util/configparser.y"
+  case 500:
+#line 2581 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
@@ -5634,11 +6304,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5638 "util/configparser.c"
+#line 6308 "util/configparser.c"
     break;
 
-  case 501: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
-#line 2593 "util/configparser.y"
+  case 501:
+#line 2593 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
@@ -5651,11 +6321,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5655 "util/configparser.c"
+#line 6325 "util/configparser.c"
     break;
 
-  case 502: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
-#line 2607 "util/configparser.y"
+  case 502:
+#line 2607 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(
@@ -5663,11 +6333,11 @@ yyreduce:
                        fatal_exit("out of memory adding "
                                "edns-client-string");
        }
-#line 5667 "util/configparser.c"
+#line 6337 "util/configparser.c"
     break;
 
-  case 503: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
-#line 2616 "util/configparser.y"
+  case 503:
+#line 2616 "./util/configparser.y"
         {
                OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5678,11 +6348,11 @@ yyreduce:
                free((yyvsp[0].str));
 
        }
-#line 5682 "util/configparser.c"
+#line 6352 "util/configparser.c"
     break;
 
-  case 504: /* stub_name: VAR_NAME STRING_ARG  */
-#line 2628 "util/configparser.y"
+  case 504:
+#line 2628 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -5691,31 +6361,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 5695 "util/configparser.c"
+#line 6365 "util/configparser.c"
     break;
 
-  case 505: /* stub_host: VAR_STUB_HOST STRING_ARG  */
-#line 2638 "util/configparser.y"
+  case 505:
+#line 2638 "./util/configparser.y"
         {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5705 "util/configparser.c"
+#line 6375 "util/configparser.c"
     break;
 
-  case 506: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
-#line 2645 "util/configparser.y"
+  case 506:
+#line 2645 "./util/configparser.y"
         {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5715 "util/configparser.c"
+#line 6385 "util/configparser.c"
     break;
 
-  case 507: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
-#line 2652 "util/configparser.y"
+  case 507:
+#line 2652 "./util/configparser.y"
         {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5723,11 +6393,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5727 "util/configparser.c"
+#line 6397 "util/configparser.c"
     break;
 
-  case 508: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
-#line 2661 "util/configparser.y"
+  case 508:
+#line 2661 "./util/configparser.y"
         {
                OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5735,11 +6405,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5739 "util/configparser.c"
+#line 6409 "util/configparser.c"
     break;
 
-  case 509: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
-#line 2670 "util/configparser.y"
+  case 509:
+#line 2670 "./util/configparser.y"
         {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5748,11 +6418,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5752 "util/configparser.c"
+#line 6422 "util/configparser.c"
     break;
 
-  case 510: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
-#line 2680 "util/configparser.y"
+  case 510:
+#line 2680 "./util/configparser.y"
         {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5761,11 +6431,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5765 "util/configparser.c"
+#line 6435 "util/configparser.c"
     break;
 
-  case 511: /* forward_name: VAR_NAME STRING_ARG  */
-#line 2690 "util/configparser.y"
+  case 511:
+#line 2690 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -5774,31 +6444,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 5778 "util/configparser.c"
+#line 6448 "util/configparser.c"
     break;
 
-  case 512: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
-#line 2700 "util/configparser.y"
+  case 512:
+#line 2700 "./util/configparser.y"
         {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5788 "util/configparser.c"
+#line 6458 "util/configparser.c"
     break;
 
-  case 513: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
-#line 2707 "util/configparser.y"
+  case 513:
+#line 2707 "./util/configparser.y"
         {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5798 "util/configparser.c"
+#line 6468 "util/configparser.c"
     break;
 
-  case 514: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
-#line 2714 "util/configparser.y"
+  case 514:
+#line 2714 "./util/configparser.y"
         {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5806,11 +6476,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5810 "util/configparser.c"
+#line 6480 "util/configparser.c"
     break;
 
-  case 515: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
-#line 2723 "util/configparser.y"
+  case 515:
+#line 2723 "./util/configparser.y"
         {
                OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5818,11 +6488,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5822 "util/configparser.c"
+#line 6492 "util/configparser.c"
     break;
 
-  case 516: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
-#line 2732 "util/configparser.y"
+  case 516:
+#line 2732 "./util/configparser.y"
         {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5831,11 +6501,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5835 "util/configparser.c"
+#line 6505 "util/configparser.c"
     break;
 
-  case 517: /* auth_name: VAR_NAME STRING_ARG  */
-#line 2742 "util/configparser.y"
+  case 517:
+#line 2742 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->auths->name)
@@ -5844,52 +6514,52 @@ yyreduce:
                free(cfg_parser->cfg->auths->name);
                cfg_parser->cfg->auths->name = (yyvsp[0].str);
        }
-#line 5848 "util/configparser.c"
+#line 6518 "util/configparser.c"
     break;
 
-  case 518: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
-#line 2752 "util/configparser.y"
+  case 518:
+#line 2752 "./util/configparser.y"
         {
                OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->zonefile);
                cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
        }
-#line 5858 "util/configparser.c"
+#line 6528 "util/configparser.c"
     break;
 
-  case 519: /* auth_master: VAR_MASTER STRING_ARG  */
-#line 2759 "util/configparser.y"
+  case 519:
+#line 2759 "./util/configparser.y"
         {
                OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5868 "util/configparser.c"
+#line 6538 "util/configparser.c"
     break;
 
-  case 520: /* auth_url: VAR_URL STRING_ARG  */
-#line 2766 "util/configparser.y"
+  case 520:
+#line 2766 "./util/configparser.y"
         {
                OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5878 "util/configparser.c"
+#line 6548 "util/configparser.c"
     break;
 
-  case 521: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
-#line 2773 "util/configparser.y"
+  case 521:
+#line 2773 "./util/configparser.y"
         {
                OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5889 "util/configparser.c"
+#line 6559 "util/configparser.c"
     break;
 
-  case 522: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
-#line 2781 "util/configparser.y"
+  case 522:
+#line 2781 "./util/configparser.y"
         {
                OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5898,11 +6568,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5902 "util/configparser.c"
+#line 6572 "util/configparser.c"
     break;
 
-  case 523: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
-#line 2791 "util/configparser.y"
+  case 523:
+#line 2791 "./util/configparser.y"
         {
                OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5911,11 +6581,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5915 "util/configparser.c"
+#line 6585 "util/configparser.c"
     break;
 
-  case 524: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
-#line 2801 "util/configparser.y"
+  case 524:
+#line 2801 "./util/configparser.y"
         {
                OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5924,11 +6594,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5928 "util/configparser.c"
+#line 6598 "util/configparser.c"
     break;
 
-  case 525: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
-#line 2811 "util/configparser.y"
+  case 525:
+#line 2811 "./util/configparser.y"
         {
                OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5937,11 +6607,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5941 "util/configparser.c"
+#line 6611 "util/configparser.c"
     break;
 
-  case 526: /* view_name: VAR_NAME STRING_ARG  */
-#line 2821 "util/configparser.y"
+  case 526:
+#line 2821 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -5950,11 +6620,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 5954 "util/configparser.c"
+#line 6624 "util/configparser.c"
     break;
 
-  case 527: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
-#line 2831 "util/configparser.y"
+  case 527:
+#line 2831 "./util/configparser.y"
         {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -5964,13 +6634,20 @@ yyreduce:
                   && strcmp((yyvsp[0].str), "always_transparent")!=0
                   && strcmp((yyvsp[0].str), "always_refuse")!=0
                   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
+                  && strcmp((yyvsp[0].str), "always_nodata")!=0
+                  && strcmp((yyvsp[0].str), "always_deny")!=0
+                  && strcmp((yyvsp[0].str), "always_null")!=0
                   && strcmp((yyvsp[0].str), "noview")!=0
-                  && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) {
+                  && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
+                  && strcmp((yyvsp[0].str), "inform_redirect") != 0
+                  && strcmp((yyvsp[0].str), "ipset") != 0) {
                        yyerror("local-zone type: expected static, deny, "
                                "refuse, redirect, transparent, "
                                "typetransparent, inform, inform_deny, "
-                               "always_transparent, always_refuse, "
-                               "always_nxdomain, noview or nodefault");
+                               "inform_redirect, always_transparent, "
+                               "always_refuse, always_nxdomain, "
+                               "always_nodata, always_deny, always_null, "
+                               "noview, nodefault or ipset");
                        free((yyvsp[-1].str));
                        free((yyvsp[0].str));
                } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
@@ -5992,11 +6669,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5996 "util/configparser.c"
+#line 6673 "util/configparser.c"
     break;
 
-  case 528: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
-#line 2870 "util/configparser.y"
+  case 528:
+#line 2877 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -6005,33 +6682,33 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 6009 "util/configparser.c"
+#line 6686 "util/configparser.c"
     break;
 
-  case 529: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
-#line 2880 "util/configparser.y"
+  case 529:
+#line 2887 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(
                        &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6020 "util/configparser.c"
+#line 6697 "util/configparser.c"
     break;
 
-  case 530: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
-#line 2888 "util/configparser.y"
+  case 530:
+#line 2895 "./util/configparser.y"
         {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 6031 "util/configparser.c"
+#line 6708 "util/configparser.c"
     break;
 
-  case 531: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
-#line 2896 "util/configparser.y"
+  case 531:
+#line 2903 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -6045,11 +6722,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 6049 "util/configparser.c"
+#line 6726 "util/configparser.c"
     break;
 
-  case 532: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
-#line 2911 "util/configparser.y"
+  case 532:
+#line 2918 "./util/configparser.y"
         {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6057,19 +6734,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6061 "util/configparser.c"
+#line 6738 "util/configparser.c"
     break;
 
-  case 533: /* rcstart: VAR_REMOTE_CONTROL  */
-#line 2920 "util/configparser.y"
+  case 533:
+#line 2927 "./util/configparser.y"
         { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 6069 "util/configparser.c"
+#line 6746 "util/configparser.c"
     break;
 
-  case 544: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
-#line 2931 "util/configparser.y"
+  case 544:
+#line 2938 "./util/configparser.y"
         {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6078,11 +6755,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6082 "util/configparser.c"
+#line 6759 "util/configparser.c"
     break;
 
-  case 545: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
-#line 2941 "util/configparser.y"
+  case 545:
+#line 2948 "./util/configparser.y"
         {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6090,79 +6767,79 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6094 "util/configparser.c"
+#line 6771 "util/configparser.c"
     break;
 
-  case 546: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
-#line 2950 "util/configparser.y"
+  case 546:
+#line 2957 "./util/configparser.y"
         {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6104 "util/configparser.c"
+#line 6781 "util/configparser.c"
     break;
 
-  case 547: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
-#line 2957 "util/configparser.y"
+  case 547:
+#line 2964 "./util/configparser.y"
         {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6114 "util/configparser.c"
+#line 6791 "util/configparser.c"
     break;
 
-  case 548: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
-#line 2964 "util/configparser.y"
+  case 548:
+#line 2971 "./util/configparser.y"
         {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 6124 "util/configparser.c"
+#line 6801 "util/configparser.c"
     break;
 
-  case 549: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
-#line 2971 "util/configparser.y"
+  case 549:
+#line 2978 "./util/configparser.y"
         {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 6134 "util/configparser.c"
+#line 6811 "util/configparser.c"
     break;
 
-  case 550: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
-#line 2978 "util/configparser.y"
+  case 550:
+#line 2985 "./util/configparser.y"
         {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 6144 "util/configparser.c"
+#line 6821 "util/configparser.c"
     break;
 
-  case 551: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
-#line 2985 "util/configparser.y"
+  case 551:
+#line 2992 "./util/configparser.y"
         {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 6154 "util/configparser.c"
+#line 6831 "util/configparser.c"
     break;
 
-  case 552: /* dtstart: VAR_DNSTAP  */
-#line 2992 "util/configparser.y"
+  case 552:
+#line 2999 "./util/configparser.y"
         {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 6162 "util/configparser.c"
+#line 6839 "util/configparser.c"
     break;
 
-  case 574: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
-#line 3012 "util/configparser.y"
+  case 574:
+#line 3019 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6170,11 +6847,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6174 "util/configparser.c"
+#line 6851 "util/configparser.c"
     break;
 
-  case 575: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
-#line 3021 "util/configparser.y"
+  case 575:
+#line 3028 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6183,31 +6860,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6187 "util/configparser.c"
+#line 6864 "util/configparser.c"
     break;
 
-  case 576: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
-#line 3031 "util/configparser.y"
+  case 576:
+#line 3038 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 6197 "util/configparser.c"
+#line 6874 "util/configparser.c"
     break;
 
-  case 577: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
-#line 3038 "util/configparser.y"
+  case 577:
+#line 3045 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_ip);
                cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
        }
-#line 6207 "util/configparser.c"
+#line 6884 "util/configparser.c"
     break;
 
-  case 578: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
-#line 3045 "util/configparser.y"
+  case 578:
+#line 3052 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6215,51 +6892,51 @@ yyreduce:
                else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6219 "util/configparser.c"
+#line 6896 "util/configparser.c"
     break;
 
-  case 579: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
-#line 3054 "util/configparser.y"
+  case 579:
+#line 3061 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_server_name);
                cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
        }
-#line 6229 "util/configparser.c"
+#line 6906 "util/configparser.c"
     break;
 
-  case 580: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
-#line 3061 "util/configparser.y"
+  case 580:
+#line 3068 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_cert_bundle);
                cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
        }
-#line 6239 "util/configparser.c"
+#line 6916 "util/configparser.c"
     break;
 
-  case 581: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
-#line 3068 "util/configparser.y"
+  case 581:
+#line 3075 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_key_file);
                cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
        }
-#line 6249 "util/configparser.c"
+#line 6926 "util/configparser.c"
     break;
 
-  case 582: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
-#line 3075 "util/configparser.y"
+  case 582:
+#line 3082 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_cert_file);
                cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
        }
-#line 6259 "util/configparser.c"
+#line 6936 "util/configparser.c"
     break;
 
-  case 583: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
-#line 3082 "util/configparser.y"
+  case 583:
+#line 3089 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6267,11 +6944,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6271 "util/configparser.c"
+#line 6948 "util/configparser.c"
     break;
 
-  case 584: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
-#line 3091 "util/configparser.y"
+  case 584:
+#line 3098 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6279,31 +6956,31 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6283 "util/configparser.c"
+#line 6960 "util/configparser.c"
     break;
 
-  case 585: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
-#line 3100 "util/configparser.y"
+  case 585:
+#line 3107 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 6293 "util/configparser.c"
+#line 6970 "util/configparser.c"
     break;
 
-  case 586: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
-#line 3107 "util/configparser.y"
+  case 586:
+#line 3114 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 6303 "util/configparser.c"
+#line 6980 "util/configparser.c"
     break;
 
-  case 587: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
-#line 3114 "util/configparser.y"
+  case 587:
+#line 3121 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6312,11 +6989,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6316 "util/configparser.c"
+#line 6993 "util/configparser.c"
     break;
 
-  case 588: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
-#line 3124 "util/configparser.y"
+  case 588:
+#line 3131 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6325,11 +7002,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6329 "util/configparser.c"
+#line 7006 "util/configparser.c"
     break;
 
-  case 589: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
-#line 3134 "util/configparser.y"
+  case 589:
+#line 3141 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6338,11 +7015,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6342 "util/configparser.c"
+#line 7019 "util/configparser.c"
     break;
 
-  case 590: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
-#line 3144 "util/configparser.y"
+  case 590:
+#line 3151 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6351,11 +7028,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6355 "util/configparser.c"
+#line 7032 "util/configparser.c"
     break;
 
-  case 591: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
-#line 3154 "util/configparser.y"
+  case 591:
+#line 3161 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6364,11 +7041,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6368 "util/configparser.c"
+#line 7045 "util/configparser.c"
     break;
 
-  case 592: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
-#line 3164 "util/configparser.y"
+  case 592:
+#line 3171 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6377,47 +7054,47 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6381 "util/configparser.c"
+#line 7058 "util/configparser.c"
     break;
 
-  case 593: /* pythonstart: VAR_PYTHON  */
-#line 3174 "util/configparser.y"
+  case 593:
+#line 3181 "./util/configparser.y"
         { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 6389 "util/configparser.c"
+#line 7066 "util/configparser.c"
     break;
 
-  case 597: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
-#line 3183 "util/configparser.y"
+  case 597:
+#line 3190 "./util/configparser.y"
         {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6399 "util/configparser.c"
+#line 7076 "util/configparser.c"
     break;
 
-  case 598: /* dynlibstart: VAR_DYNLIB  */
-#line 3189 "util/configparser.y"
+  case 598:
+#line 3196 "./util/configparser.y"
         { 
                OUTYY(("\nP(dynlib:)\n")); 
        }
-#line 6407 "util/configparser.c"
+#line 7084 "util/configparser.c"
     break;
 
-  case 602: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
-#line 3198 "util/configparser.y"
+  case 602:
+#line 3205 "./util/configparser.y"
         {
                OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6417 "util/configparser.c"
+#line 7094 "util/configparser.c"
     break;
 
-  case 603: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
-#line 3204 "util/configparser.y"
+  case 603:
+#line 3211 "./util/configparser.y"
         {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6426,21 +7103,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6430 "util/configparser.c"
+#line 7107 "util/configparser.c"
     break;
 
-  case 604: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
-#line 3214 "util/configparser.y"
+  case 604:
+#line 3221 "./util/configparser.y"
         {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 6440 "util/configparser.c"
+#line 7117 "util/configparser.c"
     break;
 
-  case 605: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
-#line 3221 "util/configparser.y"
+  case 605:
+#line 3228 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -6448,30 +7125,30 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 6452 "util/configparser.c"
+#line 7129 "util/configparser.c"
     break;
 
-  case 606: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
-#line 3230 "util/configparser.y"
+  case 606:
+#line 3237 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6463 "util/configparser.c"
+#line 7140 "util/configparser.c"
     break;
 
-  case 607: /* dnscstart: VAR_DNSCRYPT  */
-#line 3238 "util/configparser.y"
+  case 607:
+#line 3245 "./util/configparser.y"
         {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 6471 "util/configparser.c"
+#line 7148 "util/configparser.c"
     break;
 
-  case 620: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
-#line 3254 "util/configparser.y"
+  case 620:
+#line 3261 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6479,11 +7156,11 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6483 "util/configparser.c"
+#line 7160 "util/configparser.c"
     break;
 
-  case 621: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
-#line 3264 "util/configparser.y"
+  case 621:
+#line 3271 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6491,21 +7168,21 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6495 "util/configparser.c"
+#line 7172 "util/configparser.c"
     break;
 
-  case 622: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
-#line 3273 "util/configparser.y"
+  case 622:
+#line 3280 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnscrypt_provider);
                cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
        }
-#line 6505 "util/configparser.c"
+#line 7182 "util/configparser.c"
     break;
 
-  case 623: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
-#line 3280 "util/configparser.y"
+  case 623:
+#line 3287 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
@@ -6513,21 +7190,21 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 6517 "util/configparser.c"
+#line 7194 "util/configparser.c"
     break;
 
-  case 624: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
-#line 3289 "util/configparser.y"
+  case 624:
+#line 3296 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 6527 "util/configparser.c"
+#line 7204 "util/configparser.c"
     break;
 
-  case 625: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
-#line 3296 "util/configparser.y"
+  case 625:
+#line 3303 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
@@ -6535,22 +7212,22 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 6539 "util/configparser.c"
+#line 7216 "util/configparser.c"
     break;
 
-  case 626: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
-#line 3305 "util/configparser.y"
+  case 626:
+#line 3312 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 6550 "util/configparser.c"
+#line 7227 "util/configparser.c"
     break;
 
-  case 627: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
-#line 3313 "util/configparser.y"
+  case 627:
+#line 3320 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -6562,22 +7239,22 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 6566 "util/configparser.c"
+#line 7243 "util/configparser.c"
     break;
 
-  case 628: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
-#line 3326 "util/configparser.y"
+  case 628:
+#line 3333 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 6577 "util/configparser.c"
+#line 7254 "util/configparser.c"
     break;
 
-  case 629: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
-#line 3334 "util/configparser.y"
+  case 629:
+#line 3341 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -6589,19 +7266,19 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 6593 "util/configparser.c"
+#line 7270 "util/configparser.c"
     break;
 
-  case 630: /* cachedbstart: VAR_CACHEDB  */
-#line 3347 "util/configparser.y"
+  case 630:
+#line 3354 "./util/configparser.y"
         {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 6601 "util/configparser.c"
+#line 7278 "util/configparser.c"
     break;
 
-  case 639: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
-#line 3358 "util/configparser.y"
+  case 639:
+#line 3365 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
@@ -6612,11 +7289,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6616 "util/configparser.c"
+#line 7293 "util/configparser.c"
     break;
 
-  case 640: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
-#line 3370 "util/configparser.y"
+  case 640:
+#line 3377 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
@@ -6627,11 +7304,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6631 "util/configparser.c"
+#line 7308 "util/configparser.c"
     break;
 
-  case 641: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
-#line 3382 "util/configparser.y"
+  case 641:
+#line 3389 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
@@ -6642,11 +7319,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6646 "util/configparser.c"
+#line 7323 "util/configparser.c"
     break;
 
-  case 642: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
-#line 3394 "util/configparser.y"
+  case 642:
+#line 3401 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
@@ -6660,11 +7337,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6664 "util/configparser.c"
+#line 7341 "util/configparser.c"
     break;
 
-  case 643: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
-#line 3409 "util/configparser.y"
+  case 643:
+#line 3416 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
@@ -6676,11 +7353,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6680 "util/configparser.c"
+#line 7357 "util/configparser.c"
     break;
 
-  case 644: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
-#line 3422 "util/configparser.y"
+  case 644:
+#line 3429 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
@@ -6692,11 +7369,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6696 "util/configparser.c"
+#line 7373 "util/configparser.c"
     break;
 
-  case 645: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
-#line 3435 "util/configparser.y"
+  case 645:
+#line 3442 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if (atoi((yyvsp[0].str)) < 0)
@@ -6706,19 +7383,19 @@ yyreduce:
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 6710 "util/configparser.c"
+#line 7387 "util/configparser.c"
     break;
 
-  case 646: /* ipsetstart: VAR_IPSET  */
-#line 3446 "util/configparser.y"
+  case 646:
+#line 3453 "./util/configparser.y"
                 {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 6718 "util/configparser.c"
+#line 7395 "util/configparser.c"
     break;
 
-  case 651: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
-#line 3455 "util/configparser.y"
+  case 651:
+#line 3462 "./util/configparser.y"
                 {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
@@ -6732,11 +7409,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6736 "util/configparser.c"
+#line 7413 "util/configparser.c"
     break;
 
-  case 652: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
-#line 3470 "util/configparser.y"
+  case 652:
+#line 3477 "./util/configparser.y"
         {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
@@ -6750,11 +7427,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6754 "util/configparser.c"
+#line 7431 "util/configparser.c"
     break;
 
 
-#line 6758 "util/configparser.c"
+#line 7435 "util/configparser.c"
 
       default: break;
     }
@@ -6914,13 +7591,13 @@ yyabortlab:
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  goto yyreturn;
+  /* Fall through.  */
 #endif
 
 
-/*-------------------------------------------------------.
-| yyreturn -- parsing is finished, clean up and return.  |
-`-------------------------------------------------------*/
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -6948,7 +7625,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 3484 "util/configparser.y"
+#line 3491 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index 58935003ba9bb2f6552e79ce12ca94120f5c2671..5f1f73fec7881723ab32db2fd17f3fe661de6c35 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -368,7 +368,6 @@ extern int yydebug;
   typedef enum yytokentype yytoken_kind_t;
 #endif
 /* Token kinds.  */
-#define YYEMPTY -2
 #define YYEOF 0
 #define YYerror 256
 #define YYUNDEF 257
@@ -687,11 +686,11 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 66 "util/configparser.y"
+#line 66 "./util/configparser.y"
 
        char*   str;
 
-#line 695 "util/configparser.h"
+#line 694 "util/configparser.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
index 6d82938c31c46523197a49c58bd579f6eac49649..3561630b33e3bf1b1d00018a4533689765e45927 100644 (file)
@@ -2837,13 +2837,20 @@ view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG
                   && strcmp($3, "always_transparent")!=0
                   && strcmp($3, "always_refuse")!=0
                   && strcmp($3, "always_nxdomain")!=0
+                  && strcmp($3, "always_nodata")!=0
+                  && strcmp($3, "always_deny")!=0
+                  && strcmp($3, "always_null")!=0
                   && strcmp($3, "noview")!=0
-                  && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) {
+                  && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0
+                  && strcmp($3, "inform_redirect") != 0
+                  && strcmp($3, "ipset") != 0) {
                        yyerror("local-zone type: expected static, deny, "
                                "refuse, redirect, transparent, "
                                "typetransparent, inform, inform_deny, "
-                               "always_transparent, always_refuse, "
-                               "always_nxdomain, noview or nodefault");
+                               "inform_redirect, always_transparent, "
+                               "always_refuse, always_nxdomain, "
+                               "always_nodata, always_deny, always_null, "
+                               "noview, nodefault or ipset");
                        free($2);
                        free($3);
                } else if(strcmp($3, "nodefault")==0) {