1 /* A Bison parser, made by GNU Bison 3.6.4.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6    Inc.
7 
8    This program is free software: you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation, either version 3 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20 
21 /* As a special exception, you may create a larger work that contains
22    part or all of the Bison parser skeleton and distribute that work
23    under terms of your choice, so long as that work isn't itself a
24    parser generator using the skeleton or a modified version thereof
25    as a parser skeleton.  Alternatively, if you modify or redistribute
26    the parser skeleton itself, you may (at your option) remove this
27    special exception, which will cause the skeleton and the resulting
28    Bison output files to be licensed under the GNU General Public
29    License without this special exception.
30 
31    This special exception was added by the Free Software Foundation in
32    version 2.2 of Bison.  */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35    simplifying the original so-called "semantic" parser.  */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38    especially those whose name start with YY_ or yy_.  They are
39    private implementation details that can be changed or removed.  */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42    infringing on user name space.  This should be done even for local
43    variables, as they might otherwise be expanded by user macros.
44    There are some unavoidable exceptions within include files to
45    define necessary library symbols; they are noted "INFRINGES ON
46    USER NAME SPACE" below.  */
47 
48 /* Identify Bison output.  */
49 #define YYBISON 1
50 
51 /* Bison version.  */
52 #define YYBISON_VERSION "3.6.4"
53 
54 /* Skeleton name.  */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers.  */
58 #define YYPURE 0
59 
60 /* Push parsers.  */
61 #define YYPUSH 0
62 
63 /* Pull parsers.  */
64 #define YYPULL 1
65 
66 
67 
68 
69 /* First part of user prologue.  */
70 #line 38 "util/configparser.y"
71 
72 #include "config.h"
73 
74 #include <stdarg.h>
75 #include <stdio.h>
76 #include <string.h>
77 #include <stdlib.h>
78 #include <assert.h>
79 
80 #include "util/configyyrename.h"
81 #include "util/config_file.h"
82 #include "util/net_help.h"
83 
84 int ub_c_lex(void);
85 void ub_c_error(const char *message);
86 
87 static void validate_respip_action(const char* action);
88 
89 /* these need to be global, otherwise they cannot be used inside yacc */
90 extern struct config_parser_state* cfg_parser;
91 
92 #if 0
93 #define OUTYY(s)  printf s /* used ONLY when debugging */
94 #else
95 #define OUTYY(s)
96 #endif
97 
98 
99 #line 100 "util/configparser.c"
100 
101 # ifndef YY_CAST
102 #  ifdef __cplusplus
103 #   define YY_CAST(Type, Val) static_cast<Type> (Val)
104 #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
105 #  else
106 #   define YY_CAST(Type, Val) ((Type) (Val))
107 #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
108 #  endif
109 # endif
110 # ifndef YY_NULLPTR
111 #  if defined __cplusplus
112 #   if 201103L <= __cplusplus
113 #    define YY_NULLPTR nullptr
114 #   else
115 #    define YY_NULLPTR 0
116 #   endif
117 #  else
118 #   define YY_NULLPTR ((void*)0)
119 #  endif
120 # endif
121 
122 /* Use api.header.include to #include this header
123    instead of duplicating it here.  */
124 #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
125 # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
126 /* Debug traces.  */
127 #ifndef YYDEBUG
128 # define YYDEBUG 0
129 #endif
130 #if YYDEBUG
131 extern int yydebug;
132 #endif
133 
134 /* Token kinds.  */
135 #ifndef YYTOKENTYPE
136 # define YYTOKENTYPE
137   enum yytokentype
138   {
139     YYEMPTY = -2,
140     YYEOF = 0,                     /* "end of file"  */
141     YYerror = 256,                 /* error  */
142     YYUNDEF = 257,                 /* "invalid token"  */
143     SPACE = 258,                   /* SPACE  */
144     LETTER = 259,                  /* LETTER  */
145     NEWLINE = 260,                 /* NEWLINE  */
146     COMMENT = 261,                 /* COMMENT  */
147     COLON = 262,                   /* COLON  */
148     ANY = 263,                     /* ANY  */
149     ZONESTR = 264,                 /* ZONESTR  */
150     STRING_ARG = 265,              /* STRING_ARG  */
151     VAR_FORCE_TOPLEVEL = 266,      /* VAR_FORCE_TOPLEVEL  */
152     VAR_SERVER = 267,              /* VAR_SERVER  */
153     VAR_VERBOSITY = 268,           /* VAR_VERBOSITY  */
154     VAR_NUM_THREADS = 269,         /* VAR_NUM_THREADS  */
155     VAR_PORT = 270,                /* VAR_PORT  */
156     VAR_OUTGOING_RANGE = 271,      /* VAR_OUTGOING_RANGE  */
157     VAR_INTERFACE = 272,           /* VAR_INTERFACE  */
158     VAR_PREFER_IP4 = 273,          /* VAR_PREFER_IP4  */
159     VAR_DO_IP4 = 274,              /* VAR_DO_IP4  */
160     VAR_DO_IP6 = 275,              /* VAR_DO_IP6  */
161     VAR_PREFER_IP6 = 276,          /* VAR_PREFER_IP6  */
162     VAR_DO_UDP = 277,              /* VAR_DO_UDP  */
163     VAR_DO_TCP = 278,              /* VAR_DO_TCP  */
164     VAR_TCP_MSS = 279,             /* VAR_TCP_MSS  */
165     VAR_OUTGOING_TCP_MSS = 280,    /* VAR_OUTGOING_TCP_MSS  */
166     VAR_TCP_IDLE_TIMEOUT = 281,    /* VAR_TCP_IDLE_TIMEOUT  */
167     VAR_EDNS_TCP_KEEPALIVE = 282,  /* VAR_EDNS_TCP_KEEPALIVE  */
168     VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
169     VAR_CHROOT = 284,              /* VAR_CHROOT  */
170     VAR_USERNAME = 285,            /* VAR_USERNAME  */
171     VAR_DIRECTORY = 286,           /* VAR_DIRECTORY  */
172     VAR_LOGFILE = 287,             /* VAR_LOGFILE  */
173     VAR_PIDFILE = 288,             /* VAR_PIDFILE  */
174     VAR_MSG_CACHE_SIZE = 289,      /* VAR_MSG_CACHE_SIZE  */
175     VAR_MSG_CACHE_SLABS = 290,     /* VAR_MSG_CACHE_SLABS  */
176     VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD  */
177     VAR_RRSET_CACHE_SIZE = 292,    /* VAR_RRSET_CACHE_SIZE  */
178     VAR_RRSET_CACHE_SLABS = 293,   /* VAR_RRSET_CACHE_SLABS  */
179     VAR_OUTGOING_NUM_TCP = 294,    /* VAR_OUTGOING_NUM_TCP  */
180     VAR_INFRA_HOST_TTL = 295,      /* VAR_INFRA_HOST_TTL  */
181     VAR_INFRA_LAME_TTL = 296,      /* VAR_INFRA_LAME_TTL  */
182     VAR_INFRA_CACHE_SLABS = 297,   /* VAR_INFRA_CACHE_SLABS  */
183     VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS  */
184     VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE  */
185     VAR_NAME = 300,                /* VAR_NAME  */
186     VAR_STUB_ZONE = 301,           /* VAR_STUB_ZONE  */
187     VAR_STUB_HOST = 302,           /* VAR_STUB_HOST  */
188     VAR_STUB_ADDR = 303,           /* VAR_STUB_ADDR  */
189     VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY  */
190     VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE  */
191     VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES  */
192     VAR_FORWARD_ZONE = 307,        /* VAR_FORWARD_ZONE  */
193     VAR_FORWARD_HOST = 308,        /* VAR_FORWARD_HOST  */
194     VAR_FORWARD_ADDR = 309,        /* VAR_FORWARD_ADDR  */
195     VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS  */
196     VAR_HIDE_IDENTITY = 311,       /* VAR_HIDE_IDENTITY  */
197     VAR_HIDE_VERSION = 312,        /* VAR_HIDE_VERSION  */
198     VAR_IDENTITY = 313,            /* VAR_IDENTITY  */
199     VAR_VERSION = 314,             /* VAR_VERSION  */
200     VAR_HARDEN_GLUE = 315,         /* VAR_HARDEN_GLUE  */
201     VAR_MODULE_CONF = 316,         /* VAR_MODULE_CONF  */
202     VAR_TRUST_ANCHOR_FILE = 317,   /* VAR_TRUST_ANCHOR_FILE  */
203     VAR_TRUST_ANCHOR = 318,        /* VAR_TRUST_ANCHOR  */
204     VAR_VAL_OVERRIDE_DATE = 319,   /* VAR_VAL_OVERRIDE_DATE  */
205     VAR_BOGUS_TTL = 320,           /* VAR_BOGUS_TTL  */
206     VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL  */
207     VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE  */
208     VAR_INCOMING_NUM_TCP = 323,    /* VAR_INCOMING_NUM_TCP  */
209     VAR_MSG_BUFFER_SIZE = 324,     /* VAR_MSG_BUFFER_SIZE  */
210     VAR_KEY_CACHE_SIZE = 325,      /* VAR_KEY_CACHE_SIZE  */
211     VAR_KEY_CACHE_SLABS = 326,     /* VAR_KEY_CACHE_SLABS  */
212     VAR_TRUSTED_KEYS_FILE = 327,   /* VAR_TRUSTED_KEYS_FILE  */
213     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
214     VAR_USE_SYSLOG = 329,          /* VAR_USE_SYSLOG  */
215     VAR_OUTGOING_INTERFACE = 330,  /* VAR_OUTGOING_INTERFACE  */
216     VAR_ROOT_HINTS = 331,          /* VAR_ROOT_HINTS  */
217     VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST  */
218     VAR_CACHE_MAX_TTL = 333,       /* VAR_CACHE_MAX_TTL  */
219     VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED  */
220     VAR_ACCESS_CONTROL = 335,      /* VAR_ACCESS_CONTROL  */
221     VAR_LOCAL_ZONE = 336,          /* VAR_LOCAL_ZONE  */
222     VAR_LOCAL_DATA = 337,          /* VAR_LOCAL_DATA  */
223     VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC  */
224     VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL  */
225     VAR_DO_DAEMONIZE = 340,        /* VAR_DO_DAEMONIZE  */
226     VAR_USE_CAPS_FOR_ID = 341,     /* VAR_USE_CAPS_FOR_ID  */
227     VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE  */
228     VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT  */
229     VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID  */
230     VAR_DLV_ANCHOR_FILE = 345,     /* VAR_DLV_ANCHOR_FILE  */
231     VAR_DLV_ANCHOR = 346,          /* VAR_DLV_ANCHOR  */
232     VAR_NEG_CACHE_SIZE = 347,      /* VAR_NEG_CACHE_SIZE  */
233     VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH  */
234     VAR_PRIVATE_ADDRESS = 349,     /* VAR_PRIVATE_ADDRESS  */
235     VAR_PRIVATE_DOMAIN = 350,      /* VAR_PRIVATE_DOMAIN  */
236     VAR_REMOTE_CONTROL = 351,      /* VAR_REMOTE_CONTROL  */
237     VAR_CONTROL_ENABLE = 352,      /* VAR_CONTROL_ENABLE  */
238     VAR_CONTROL_INTERFACE = 353,   /* VAR_CONTROL_INTERFACE  */
239     VAR_CONTROL_PORT = 354,        /* VAR_CONTROL_PORT  */
240     VAR_SERVER_KEY_FILE = 355,     /* VAR_SERVER_KEY_FILE  */
241     VAR_SERVER_CERT_FILE = 356,    /* VAR_SERVER_CERT_FILE  */
242     VAR_CONTROL_KEY_FILE = 357,    /* VAR_CONTROL_KEY_FILE  */
243     VAR_CONTROL_CERT_FILE = 358,   /* VAR_CONTROL_CERT_FILE  */
244     VAR_CONTROL_USE_CERT = 359,    /* VAR_CONTROL_USE_CERT  */
245     VAR_TCP_REUSE_TIMEOUT = 360,   /* VAR_TCP_REUSE_TIMEOUT  */
246     VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES  */
247     VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS  */
248     VAR_LOCAL_DATA_PTR = 363,      /* VAR_LOCAL_DATA_PTR  */
249     VAR_JOSTLE_TIMEOUT = 364,      /* VAR_JOSTLE_TIMEOUT  */
250     VAR_STUB_PRIME = 365,          /* VAR_STUB_PRIME  */
251     VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD  */
252     VAR_LOG_TIME_ASCII = 367,      /* VAR_LOG_TIME_ASCII  */
253     VAR_DOMAIN_INSECURE = 368,     /* VAR_DOMAIN_INSECURE  */
254     VAR_PYTHON = 369,              /* VAR_PYTHON  */
255     VAR_PYTHON_SCRIPT = 370,       /* VAR_PYTHON_SCRIPT  */
256     VAR_VAL_SIG_SKEW_MIN = 371,    /* VAR_VAL_SIG_SKEW_MIN  */
257     VAR_VAL_SIG_SKEW_MAX = 372,    /* VAR_VAL_SIG_SKEW_MAX  */
258     VAR_VAL_MAX_RESTART = 373,     /* VAR_VAL_MAX_RESTART  */
259     VAR_CACHE_MIN_TTL = 374,       /* VAR_CACHE_MIN_TTL  */
260     VAR_VAL_LOG_LEVEL = 375,       /* VAR_VAL_LOG_LEVEL  */
261     VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
262     VAR_KEEP_MISSING = 377,        /* VAR_KEEP_MISSING  */
263     VAR_ADD_HOLDDOWN = 378,        /* VAR_ADD_HOLDDOWN  */
264     VAR_DEL_HOLDDOWN = 379,        /* VAR_DEL_HOLDDOWN  */
265     VAR_SO_RCVBUF = 380,           /* VAR_SO_RCVBUF  */
266     VAR_EDNS_BUFFER_SIZE = 381,    /* VAR_EDNS_BUFFER_SIZE  */
267     VAR_PREFETCH = 382,            /* VAR_PREFETCH  */
268     VAR_PREFETCH_KEY = 383,        /* VAR_PREFETCH_KEY  */
269     VAR_SO_SNDBUF = 384,           /* VAR_SO_SNDBUF  */
270     VAR_SO_REUSEPORT = 385,        /* VAR_SO_REUSEPORT  */
271     VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN  */
272     VAR_IGNORE_CD_FLAG = 387,      /* VAR_IGNORE_CD_FLAG  */
273     VAR_LOG_QUERIES = 388,         /* VAR_LOG_QUERIES  */
274     VAR_LOG_REPLIES = 389,         /* VAR_LOG_REPLIES  */
275     VAR_LOG_LOCAL_ACTIONS = 390,   /* VAR_LOG_LOCAL_ACTIONS  */
276     VAR_TCP_UPSTREAM = 391,        /* VAR_TCP_UPSTREAM  */
277     VAR_SSL_UPSTREAM = 392,        /* VAR_SSL_UPSTREAM  */
278     VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
279     VAR_SSL_SERVICE_KEY = 394,     /* VAR_SSL_SERVICE_KEY  */
280     VAR_SSL_SERVICE_PEM = 395,     /* VAR_SSL_SERVICE_PEM  */
281     VAR_SSL_PORT = 396,            /* VAR_SSL_PORT  */
282     VAR_FORWARD_FIRST = 397,       /* VAR_FORWARD_FIRST  */
283     VAR_STUB_SSL_UPSTREAM = 398,   /* VAR_STUB_SSL_UPSTREAM  */
284     VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM  */
285     VAR_TLS_CERT_BUNDLE = 400,     /* VAR_TLS_CERT_BUNDLE  */
286     VAR_STUB_TCP_UPSTREAM = 401,   /* VAR_STUB_TCP_UPSTREAM  */
287     VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM  */
288     VAR_HTTPS_PORT = 403,          /* VAR_HTTPS_PORT  */
289     VAR_HTTP_ENDPOINT = 404,       /* VAR_HTTP_ENDPOINT  */
290     VAR_HTTP_MAX_STREAMS = 405,    /* VAR_HTTP_MAX_STREAMS  */
291     VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
292     VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
293     VAR_HTTP_NODELAY = 408,        /* VAR_HTTP_NODELAY  */
294     VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
295     VAR_STUB_FIRST = 410,          /* VAR_STUB_FIRST  */
296     VAR_MINIMAL_RESPONSES = 411,   /* VAR_MINIMAL_RESPONSES  */
297     VAR_RRSET_ROUNDROBIN = 412,    /* VAR_RRSET_ROUNDROBIN  */
298     VAR_MAX_UDP_SIZE = 413,        /* VAR_MAX_UDP_SIZE  */
299     VAR_DELAY_CLOSE = 414,         /* VAR_DELAY_CLOSE  */
300     VAR_UDP_CONNECT = 415,         /* VAR_UDP_CONNECT  */
301     VAR_UNBLOCK_LAN_ZONES = 416,   /* VAR_UNBLOCK_LAN_ZONES  */
302     VAR_INSECURE_LAN_ZONES = 417,  /* VAR_INSECURE_LAN_ZONES  */
303     VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT  */
304     VAR_INFRA_KEEP_PROBING = 419,  /* VAR_INFRA_KEEP_PROBING  */
305     VAR_DNS64_PREFIX = 420,        /* VAR_DNS64_PREFIX  */
306     VAR_DNS64_SYNTHALL = 421,      /* VAR_DNS64_SYNTHALL  */
307     VAR_DNS64_IGNORE_AAAA = 422,   /* VAR_DNS64_IGNORE_AAAA  */
308     VAR_DNSTAP = 423,              /* VAR_DNSTAP  */
309     VAR_DNSTAP_ENABLE = 424,       /* VAR_DNSTAP_ENABLE  */
310     VAR_DNSTAP_SOCKET_PATH = 425,  /* VAR_DNSTAP_SOCKET_PATH  */
311     VAR_DNSTAP_IP = 426,           /* VAR_DNSTAP_IP  */
312     VAR_DNSTAP_TLS = 427,          /* VAR_DNSTAP_TLS  */
313     VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME  */
314     VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
315     VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
316     VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
317     VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY  */
318     VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION  */
319     VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL  */
320     VAR_DNSTAP_IDENTITY = 435,     /* VAR_DNSTAP_IDENTITY  */
321     VAR_DNSTAP_VERSION = 436,      /* VAR_DNSTAP_VERSION  */
322     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
323     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
324     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
325     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
326     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
327     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
328     VAR_RESPONSE_IP_TAG = 443,     /* VAR_RESPONSE_IP_TAG  */
329     VAR_RESPONSE_IP = 444,         /* VAR_RESPONSE_IP  */
330     VAR_RESPONSE_IP_DATA = 445,    /* VAR_RESPONSE_IP_DATA  */
331     VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE  */
332     VAR_IP_TRANSPARENT = 447,      /* VAR_IP_TRANSPARENT  */
333     VAR_IP_DSCP = 448,             /* VAR_IP_DSCP  */
334     VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
335     VAR_IP_RATELIMIT = 450,        /* VAR_IP_RATELIMIT  */
336     VAR_IP_RATELIMIT_SLABS = 451,  /* VAR_IP_RATELIMIT_SLABS  */
337     VAR_IP_RATELIMIT_SIZE = 452,   /* VAR_IP_RATELIMIT_SIZE  */
338     VAR_RATELIMIT = 453,           /* VAR_RATELIMIT  */
339     VAR_RATELIMIT_SLABS = 454,     /* VAR_RATELIMIT_SLABS  */
340     VAR_RATELIMIT_SIZE = 455,      /* VAR_RATELIMIT_SIZE  */
341     VAR_OUTBOUND_MSG_RETRY = 456,  /* VAR_OUTBOUND_MSG_RETRY  */
342     VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN  */
343     VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN  */
344     VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR  */
345     VAR_RATELIMIT_FACTOR = 460,    /* VAR_RATELIMIT_FACTOR  */
346     VAR_SEND_CLIENT_SUBNET = 461,  /* VAR_SEND_CLIENT_SUBNET  */
347     VAR_CLIENT_SUBNET_ZONE = 462,  /* VAR_CLIENT_SUBNET_ZONE  */
348     VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 463, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
349     VAR_CLIENT_SUBNET_OPCODE = 464, /* VAR_CLIENT_SUBNET_OPCODE  */
350     VAR_MAX_CLIENT_SUBNET_IPV4 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
351     VAR_MAX_CLIENT_SUBNET_IPV6 = 466, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
352     VAR_MIN_CLIENT_SUBNET_IPV4 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
353     VAR_MIN_CLIENT_SUBNET_IPV6 = 468, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
354     VAR_MAX_ECS_TREE_SIZE_IPV4 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
355     VAR_MAX_ECS_TREE_SIZE_IPV6 = 470, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
356     VAR_CAPS_WHITELIST = 471,      /* VAR_CAPS_WHITELIST  */
357     VAR_CACHE_MAX_NEGATIVE_TTL = 472, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
358     VAR_PERMIT_SMALL_HOLDDOWN = 473, /* VAR_PERMIT_SMALL_HOLDDOWN  */
359     VAR_QNAME_MINIMISATION = 474,  /* VAR_QNAME_MINIMISATION  */
360     VAR_QNAME_MINIMISATION_STRICT = 475, /* VAR_QNAME_MINIMISATION_STRICT  */
361     VAR_IP_FREEBIND = 476,         /* VAR_IP_FREEBIND  */
362     VAR_DEFINE_TAG = 477,          /* VAR_DEFINE_TAG  */
363     VAR_LOCAL_ZONE_TAG = 478,      /* VAR_LOCAL_ZONE_TAG  */
364     VAR_ACCESS_CONTROL_TAG = 479,  /* VAR_ACCESS_CONTROL_TAG  */
365     VAR_LOCAL_ZONE_OVERRIDE = 480, /* VAR_LOCAL_ZONE_OVERRIDE  */
366     VAR_ACCESS_CONTROL_TAG_ACTION = 481, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
367     VAR_ACCESS_CONTROL_TAG_DATA = 482, /* VAR_ACCESS_CONTROL_TAG_DATA  */
368     VAR_VIEW = 483,                /* VAR_VIEW  */
369     VAR_ACCESS_CONTROL_VIEW = 484, /* VAR_ACCESS_CONTROL_VIEW  */
370     VAR_VIEW_FIRST = 485,          /* VAR_VIEW_FIRST  */
371     VAR_SERVE_EXPIRED = 486,       /* VAR_SERVE_EXPIRED  */
372     VAR_SERVE_EXPIRED_TTL = 487,   /* VAR_SERVE_EXPIRED_TTL  */
373     VAR_SERVE_EXPIRED_TTL_RESET = 488, /* VAR_SERVE_EXPIRED_TTL_RESET  */
374     VAR_SERVE_EXPIRED_REPLY_TTL = 489, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
375     VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 490, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
376     VAR_SERVE_ORIGINAL_TTL = 491,  /* VAR_SERVE_ORIGINAL_TTL  */
377     VAR_FAKE_DSA = 492,            /* VAR_FAKE_DSA  */
378     VAR_FAKE_SHA1 = 493,           /* VAR_FAKE_SHA1  */
379     VAR_LOG_IDENTITY = 494,        /* VAR_LOG_IDENTITY  */
380     VAR_HIDE_TRUSTANCHOR = 495,    /* VAR_HIDE_TRUSTANCHOR  */
381     VAR_HIDE_HTTP_USER_AGENT = 496, /* VAR_HIDE_HTTP_USER_AGENT  */
382     VAR_HTTP_USER_AGENT = 497,     /* VAR_HTTP_USER_AGENT  */
383     VAR_TRUST_ANCHOR_SIGNALING = 498, /* VAR_TRUST_ANCHOR_SIGNALING  */
384     VAR_AGGRESSIVE_NSEC = 499,     /* VAR_AGGRESSIVE_NSEC  */
385     VAR_USE_SYSTEMD = 500,         /* VAR_USE_SYSTEMD  */
386     VAR_SHM_ENABLE = 501,          /* VAR_SHM_ENABLE  */
387     VAR_SHM_KEY = 502,             /* VAR_SHM_KEY  */
388     VAR_ROOT_KEY_SENTINEL = 503,   /* VAR_ROOT_KEY_SENTINEL  */
389     VAR_DNSCRYPT = 504,            /* VAR_DNSCRYPT  */
390     VAR_DNSCRYPT_ENABLE = 505,     /* VAR_DNSCRYPT_ENABLE  */
391     VAR_DNSCRYPT_PORT = 506,       /* VAR_DNSCRYPT_PORT  */
392     VAR_DNSCRYPT_PROVIDER = 507,   /* VAR_DNSCRYPT_PROVIDER  */
393     VAR_DNSCRYPT_SECRET_KEY = 508, /* VAR_DNSCRYPT_SECRET_KEY  */
394     VAR_DNSCRYPT_PROVIDER_CERT = 509, /* VAR_DNSCRYPT_PROVIDER_CERT  */
395     VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 510, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
396     VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
397     VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 512, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
398     VAR_DNSCRYPT_NONCE_CACHE_SIZE = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
399     VAR_DNSCRYPT_NONCE_CACHE_SLABS = 514, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
400     VAR_PAD_RESPONSES = 515,       /* VAR_PAD_RESPONSES  */
401     VAR_PAD_RESPONSES_BLOCK_SIZE = 516, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
402     VAR_PAD_QUERIES = 517,         /* VAR_PAD_QUERIES  */
403     VAR_PAD_QUERIES_BLOCK_SIZE = 518, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
404     VAR_IPSECMOD_ENABLED = 519,    /* VAR_IPSECMOD_ENABLED  */
405     VAR_IPSECMOD_HOOK = 520,       /* VAR_IPSECMOD_HOOK  */
406     VAR_IPSECMOD_IGNORE_BOGUS = 521, /* VAR_IPSECMOD_IGNORE_BOGUS  */
407     VAR_IPSECMOD_MAX_TTL = 522,    /* VAR_IPSECMOD_MAX_TTL  */
408     VAR_IPSECMOD_WHITELIST = 523,  /* VAR_IPSECMOD_WHITELIST  */
409     VAR_IPSECMOD_STRICT = 524,     /* VAR_IPSECMOD_STRICT  */
410     VAR_CACHEDB = 525,             /* VAR_CACHEDB  */
411     VAR_CACHEDB_BACKEND = 526,     /* VAR_CACHEDB_BACKEND  */
412     VAR_CACHEDB_SECRETSEED = 527,  /* VAR_CACHEDB_SECRETSEED  */
413     VAR_CACHEDB_REDISHOST = 528,   /* VAR_CACHEDB_REDISHOST  */
414     VAR_CACHEDB_REDISPORT = 529,   /* VAR_CACHEDB_REDISPORT  */
415     VAR_CACHEDB_REDISTIMEOUT = 530, /* VAR_CACHEDB_REDISTIMEOUT  */
416     VAR_CACHEDB_REDISEXPIRERECORDS = 531, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
417     VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 532, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
418     VAR_FOR_UPSTREAM = 533,        /* VAR_FOR_UPSTREAM  */
419     VAR_AUTH_ZONE = 534,           /* VAR_AUTH_ZONE  */
420     VAR_ZONEFILE = 535,            /* VAR_ZONEFILE  */
421     VAR_MASTER = 536,              /* VAR_MASTER  */
422     VAR_URL = 537,                 /* VAR_URL  */
423     VAR_FOR_DOWNSTREAM = 538,      /* VAR_FOR_DOWNSTREAM  */
424     VAR_FALLBACK_ENABLED = 539,    /* VAR_FALLBACK_ENABLED  */
425     VAR_TLS_ADDITIONAL_PORT = 540, /* VAR_TLS_ADDITIONAL_PORT  */
426     VAR_LOW_RTT = 541,             /* VAR_LOW_RTT  */
427     VAR_LOW_RTT_PERMIL = 542,      /* VAR_LOW_RTT_PERMIL  */
428     VAR_FAST_SERVER_PERMIL = 543,  /* VAR_FAST_SERVER_PERMIL  */
429     VAR_FAST_SERVER_NUM = 544,     /* VAR_FAST_SERVER_NUM  */
430     VAR_ALLOW_NOTIFY = 545,        /* VAR_ALLOW_NOTIFY  */
431     VAR_TLS_WIN_CERT = 546,        /* VAR_TLS_WIN_CERT  */
432     VAR_TCP_CONNECTION_LIMIT = 547, /* VAR_TCP_CONNECTION_LIMIT  */
433     VAR_FORWARD_NO_CACHE = 548,    /* VAR_FORWARD_NO_CACHE  */
434     VAR_STUB_NO_CACHE = 549,       /* VAR_STUB_NO_CACHE  */
435     VAR_LOG_SERVFAIL = 550,        /* VAR_LOG_SERVFAIL  */
436     VAR_DENY_ANY = 551,            /* VAR_DENY_ANY  */
437     VAR_UNKNOWN_SERVER_TIME_LIMIT = 552, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
438     VAR_LOG_TAG_QUERYREPLY = 553,  /* VAR_LOG_TAG_QUERYREPLY  */
439     VAR_STREAM_WAIT_SIZE = 554,    /* VAR_STREAM_WAIT_SIZE  */
440     VAR_TLS_CIPHERS = 555,         /* VAR_TLS_CIPHERS  */
441     VAR_TLS_CIPHERSUITES = 556,    /* VAR_TLS_CIPHERSUITES  */
442     VAR_TLS_USE_SNI = 557,         /* VAR_TLS_USE_SNI  */
443     VAR_IPSET = 558,               /* VAR_IPSET  */
444     VAR_IPSET_NAME_V4 = 559,       /* VAR_IPSET_NAME_V4  */
445     VAR_IPSET_NAME_V6 = 560,       /* VAR_IPSET_NAME_V6  */
446     VAR_TLS_SESSION_TICKET_KEYS = 561, /* VAR_TLS_SESSION_TICKET_KEYS  */
447     VAR_RPZ = 562,                 /* VAR_RPZ  */
448     VAR_TAGS = 563,                /* VAR_TAGS  */
449     VAR_RPZ_ACTION_OVERRIDE = 564, /* VAR_RPZ_ACTION_OVERRIDE  */
450     VAR_RPZ_CNAME_OVERRIDE = 565,  /* VAR_RPZ_CNAME_OVERRIDE  */
451     VAR_RPZ_LOG = 566,             /* VAR_RPZ_LOG  */
452     VAR_RPZ_LOG_NAME = 567,        /* VAR_RPZ_LOG_NAME  */
453     VAR_DYNLIB = 568,              /* VAR_DYNLIB  */
454     VAR_DYNLIB_FILE = 569,         /* VAR_DYNLIB_FILE  */
455     VAR_EDNS_CLIENT_STRING = 570,  /* VAR_EDNS_CLIENT_STRING  */
456     VAR_EDNS_CLIENT_STRING_OPCODE = 571, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
457     VAR_NSID = 572,                /* VAR_NSID  */
458     VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE  */
459     VAR_ZONEMD_CHECK = 574,        /* VAR_ZONEMD_CHECK  */
460     VAR_ZONEMD_REJECT_ABSENCE = 575 /* VAR_ZONEMD_REJECT_ABSENCE  */
461   };
462   typedef enum yytokentype yytoken_kind_t;
463 #endif
464 /* Token kinds.  */
465 #define YYEOF 0
466 #define YYerror 256
467 #define YYUNDEF 257
468 #define SPACE 258
469 #define LETTER 259
470 #define NEWLINE 260
471 #define COMMENT 261
472 #define COLON 262
473 #define ANY 263
474 #define ZONESTR 264
475 #define STRING_ARG 265
476 #define VAR_FORCE_TOPLEVEL 266
477 #define VAR_SERVER 267
478 #define VAR_VERBOSITY 268
479 #define VAR_NUM_THREADS 269
480 #define VAR_PORT 270
481 #define VAR_OUTGOING_RANGE 271
482 #define VAR_INTERFACE 272
483 #define VAR_PREFER_IP4 273
484 #define VAR_DO_IP4 274
485 #define VAR_DO_IP6 275
486 #define VAR_PREFER_IP6 276
487 #define VAR_DO_UDP 277
488 #define VAR_DO_TCP 278
489 #define VAR_TCP_MSS 279
490 #define VAR_OUTGOING_TCP_MSS 280
491 #define VAR_TCP_IDLE_TIMEOUT 281
492 #define VAR_EDNS_TCP_KEEPALIVE 282
493 #define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283
494 #define VAR_CHROOT 284
495 #define VAR_USERNAME 285
496 #define VAR_DIRECTORY 286
497 #define VAR_LOGFILE 287
498 #define VAR_PIDFILE 288
499 #define VAR_MSG_CACHE_SIZE 289
500 #define VAR_MSG_CACHE_SLABS 290
501 #define VAR_NUM_QUERIES_PER_THREAD 291
502 #define VAR_RRSET_CACHE_SIZE 292
503 #define VAR_RRSET_CACHE_SLABS 293
504 #define VAR_OUTGOING_NUM_TCP 294
505 #define VAR_INFRA_HOST_TTL 295
506 #define VAR_INFRA_LAME_TTL 296
507 #define VAR_INFRA_CACHE_SLABS 297
508 #define VAR_INFRA_CACHE_NUMHOSTS 298
509 #define VAR_INFRA_CACHE_LAME_SIZE 299
510 #define VAR_NAME 300
511 #define VAR_STUB_ZONE 301
512 #define VAR_STUB_HOST 302
513 #define VAR_STUB_ADDR 303
514 #define VAR_TARGET_FETCH_POLICY 304
515 #define VAR_HARDEN_SHORT_BUFSIZE 305
516 #define VAR_HARDEN_LARGE_QUERIES 306
517 #define VAR_FORWARD_ZONE 307
518 #define VAR_FORWARD_HOST 308
519 #define VAR_FORWARD_ADDR 309
520 #define VAR_DO_NOT_QUERY_ADDRESS 310
521 #define VAR_HIDE_IDENTITY 311
522 #define VAR_HIDE_VERSION 312
523 #define VAR_IDENTITY 313
524 #define VAR_VERSION 314
525 #define VAR_HARDEN_GLUE 315
526 #define VAR_MODULE_CONF 316
527 #define VAR_TRUST_ANCHOR_FILE 317
528 #define VAR_TRUST_ANCHOR 318
529 #define VAR_VAL_OVERRIDE_DATE 319
530 #define VAR_BOGUS_TTL 320
531 #define VAR_VAL_CLEAN_ADDITIONAL 321
532 #define VAR_VAL_PERMISSIVE_MODE 322
533 #define VAR_INCOMING_NUM_TCP 323
534 #define VAR_MSG_BUFFER_SIZE 324
535 #define VAR_KEY_CACHE_SIZE 325
536 #define VAR_KEY_CACHE_SLABS 326
537 #define VAR_TRUSTED_KEYS_FILE 327
538 #define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328
539 #define VAR_USE_SYSLOG 329
540 #define VAR_OUTGOING_INTERFACE 330
541 #define VAR_ROOT_HINTS 331
542 #define VAR_DO_NOT_QUERY_LOCALHOST 332
543 #define VAR_CACHE_MAX_TTL 333
544 #define VAR_HARDEN_DNSSEC_STRIPPED 334
545 #define VAR_ACCESS_CONTROL 335
546 #define VAR_LOCAL_ZONE 336
547 #define VAR_LOCAL_DATA 337
548 #define VAR_INTERFACE_AUTOMATIC 338
549 #define VAR_STATISTICS_INTERVAL 339
550 #define VAR_DO_DAEMONIZE 340
551 #define VAR_USE_CAPS_FOR_ID 341
552 #define VAR_STATISTICS_CUMULATIVE 342
553 #define VAR_OUTGOING_PORT_PERMIT 343
554 #define VAR_OUTGOING_PORT_AVOID 344
555 #define VAR_DLV_ANCHOR_FILE 345
556 #define VAR_DLV_ANCHOR 346
557 #define VAR_NEG_CACHE_SIZE 347
558 #define VAR_HARDEN_REFERRAL_PATH 348
559 #define VAR_PRIVATE_ADDRESS 349
560 #define VAR_PRIVATE_DOMAIN 350
561 #define VAR_REMOTE_CONTROL 351
562 #define VAR_CONTROL_ENABLE 352
563 #define VAR_CONTROL_INTERFACE 353
564 #define VAR_CONTROL_PORT 354
565 #define VAR_SERVER_KEY_FILE 355
566 #define VAR_SERVER_CERT_FILE 356
567 #define VAR_CONTROL_KEY_FILE 357
568 #define VAR_CONTROL_CERT_FILE 358
569 #define VAR_CONTROL_USE_CERT 359
570 #define VAR_TCP_REUSE_TIMEOUT 360
571 #define VAR_MAX_REUSE_TCP_QUERIES 361
572 #define VAR_EXTENDED_STATISTICS 362
573 #define VAR_LOCAL_DATA_PTR 363
574 #define VAR_JOSTLE_TIMEOUT 364
575 #define VAR_STUB_PRIME 365
576 #define VAR_UNWANTED_REPLY_THRESHOLD 366
577 #define VAR_LOG_TIME_ASCII 367
578 #define VAR_DOMAIN_INSECURE 368
579 #define VAR_PYTHON 369
580 #define VAR_PYTHON_SCRIPT 370
581 #define VAR_VAL_SIG_SKEW_MIN 371
582 #define VAR_VAL_SIG_SKEW_MAX 372
583 #define VAR_VAL_MAX_RESTART 373
584 #define VAR_CACHE_MIN_TTL 374
585 #define VAR_VAL_LOG_LEVEL 375
586 #define VAR_AUTO_TRUST_ANCHOR_FILE 376
587 #define VAR_KEEP_MISSING 377
588 #define VAR_ADD_HOLDDOWN 378
589 #define VAR_DEL_HOLDDOWN 379
590 #define VAR_SO_RCVBUF 380
591 #define VAR_EDNS_BUFFER_SIZE 381
592 #define VAR_PREFETCH 382
593 #define VAR_PREFETCH_KEY 383
594 #define VAR_SO_SNDBUF 384
595 #define VAR_SO_REUSEPORT 385
596 #define VAR_HARDEN_BELOW_NXDOMAIN 386
597 #define VAR_IGNORE_CD_FLAG 387
598 #define VAR_LOG_QUERIES 388
599 #define VAR_LOG_REPLIES 389
600 #define VAR_LOG_LOCAL_ACTIONS 390
601 #define VAR_TCP_UPSTREAM 391
602 #define VAR_SSL_UPSTREAM 392
603 #define VAR_TCP_AUTH_QUERY_TIMEOUT 393
604 #define VAR_SSL_SERVICE_KEY 394
605 #define VAR_SSL_SERVICE_PEM 395
606 #define VAR_SSL_PORT 396
607 #define VAR_FORWARD_FIRST 397
608 #define VAR_STUB_SSL_UPSTREAM 398
609 #define VAR_FORWARD_SSL_UPSTREAM 399
610 #define VAR_TLS_CERT_BUNDLE 400
611 #define VAR_STUB_TCP_UPSTREAM 401
612 #define VAR_FORWARD_TCP_UPSTREAM 402
613 #define VAR_HTTPS_PORT 403
614 #define VAR_HTTP_ENDPOINT 404
615 #define VAR_HTTP_MAX_STREAMS 405
616 #define VAR_HTTP_QUERY_BUFFER_SIZE 406
617 #define VAR_HTTP_RESPONSE_BUFFER_SIZE 407
618 #define VAR_HTTP_NODELAY 408
619 #define VAR_HTTP_NOTLS_DOWNSTREAM 409
620 #define VAR_STUB_FIRST 410
621 #define VAR_MINIMAL_RESPONSES 411
622 #define VAR_RRSET_ROUNDROBIN 412
623 #define VAR_MAX_UDP_SIZE 413
624 #define VAR_DELAY_CLOSE 414
625 #define VAR_UDP_CONNECT 415
626 #define VAR_UNBLOCK_LAN_ZONES 416
627 #define VAR_INSECURE_LAN_ZONES 417
628 #define VAR_INFRA_CACHE_MIN_RTT 418
629 #define VAR_INFRA_KEEP_PROBING 419
630 #define VAR_DNS64_PREFIX 420
631 #define VAR_DNS64_SYNTHALL 421
632 #define VAR_DNS64_IGNORE_AAAA 422
633 #define VAR_DNSTAP 423
634 #define VAR_DNSTAP_ENABLE 424
635 #define VAR_DNSTAP_SOCKET_PATH 425
636 #define VAR_DNSTAP_IP 426
637 #define VAR_DNSTAP_TLS 427
638 #define VAR_DNSTAP_TLS_SERVER_NAME 428
639 #define VAR_DNSTAP_TLS_CERT_BUNDLE 429
640 #define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430
641 #define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431
642 #define VAR_DNSTAP_SEND_IDENTITY 432
643 #define VAR_DNSTAP_SEND_VERSION 433
644 #define VAR_DNSTAP_BIDIRECTIONAL 434
645 #define VAR_DNSTAP_IDENTITY 435
646 #define VAR_DNSTAP_VERSION 436
647 #define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437
648 #define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438
649 #define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439
650 #define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440
651 #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441
652 #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442
653 #define VAR_RESPONSE_IP_TAG 443
654 #define VAR_RESPONSE_IP 444
655 #define VAR_RESPONSE_IP_DATA 445
656 #define VAR_HARDEN_ALGO_DOWNGRADE 446
657 #define VAR_IP_TRANSPARENT 447
658 #define VAR_IP_DSCP 448
659 #define VAR_DISABLE_DNSSEC_LAME_CHECK 449
660 #define VAR_IP_RATELIMIT 450
661 #define VAR_IP_RATELIMIT_SLABS 451
662 #define VAR_IP_RATELIMIT_SIZE 452
663 #define VAR_RATELIMIT 453
664 #define VAR_RATELIMIT_SLABS 454
665 #define VAR_RATELIMIT_SIZE 455
666 #define VAR_OUTBOUND_MSG_RETRY 456
667 #define VAR_RATELIMIT_FOR_DOMAIN 457
668 #define VAR_RATELIMIT_BELOW_DOMAIN 458
669 #define VAR_IP_RATELIMIT_FACTOR 459
670 #define VAR_RATELIMIT_FACTOR 460
671 #define VAR_SEND_CLIENT_SUBNET 461
672 #define VAR_CLIENT_SUBNET_ZONE 462
673 #define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 463
674 #define VAR_CLIENT_SUBNET_OPCODE 464
675 #define VAR_MAX_CLIENT_SUBNET_IPV4 465
676 #define VAR_MAX_CLIENT_SUBNET_IPV6 466
677 #define VAR_MIN_CLIENT_SUBNET_IPV4 467
678 #define VAR_MIN_CLIENT_SUBNET_IPV6 468
679 #define VAR_MAX_ECS_TREE_SIZE_IPV4 469
680 #define VAR_MAX_ECS_TREE_SIZE_IPV6 470
681 #define VAR_CAPS_WHITELIST 471
682 #define VAR_CACHE_MAX_NEGATIVE_TTL 472
683 #define VAR_PERMIT_SMALL_HOLDDOWN 473
684 #define VAR_QNAME_MINIMISATION 474
685 #define VAR_QNAME_MINIMISATION_STRICT 475
686 #define VAR_IP_FREEBIND 476
687 #define VAR_DEFINE_TAG 477
688 #define VAR_LOCAL_ZONE_TAG 478
689 #define VAR_ACCESS_CONTROL_TAG 479
690 #define VAR_LOCAL_ZONE_OVERRIDE 480
691 #define VAR_ACCESS_CONTROL_TAG_ACTION 481
692 #define VAR_ACCESS_CONTROL_TAG_DATA 482
693 #define VAR_VIEW 483
694 #define VAR_ACCESS_CONTROL_VIEW 484
695 #define VAR_VIEW_FIRST 485
696 #define VAR_SERVE_EXPIRED 486
697 #define VAR_SERVE_EXPIRED_TTL 487
698 #define VAR_SERVE_EXPIRED_TTL_RESET 488
699 #define VAR_SERVE_EXPIRED_REPLY_TTL 489
700 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 490
701 #define VAR_SERVE_ORIGINAL_TTL 491
702 #define VAR_FAKE_DSA 492
703 #define VAR_FAKE_SHA1 493
704 #define VAR_LOG_IDENTITY 494
705 #define VAR_HIDE_TRUSTANCHOR 495
706 #define VAR_HIDE_HTTP_USER_AGENT 496
707 #define VAR_HTTP_USER_AGENT 497
708 #define VAR_TRUST_ANCHOR_SIGNALING 498
709 #define VAR_AGGRESSIVE_NSEC 499
710 #define VAR_USE_SYSTEMD 500
711 #define VAR_SHM_ENABLE 501
712 #define VAR_SHM_KEY 502
713 #define VAR_ROOT_KEY_SENTINEL 503
714 #define VAR_DNSCRYPT 504
715 #define VAR_DNSCRYPT_ENABLE 505
716 #define VAR_DNSCRYPT_PORT 506
717 #define VAR_DNSCRYPT_PROVIDER 507
718 #define VAR_DNSCRYPT_SECRET_KEY 508
719 #define VAR_DNSCRYPT_PROVIDER_CERT 509
720 #define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 510
721 #define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 511
722 #define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 512
723 #define VAR_DNSCRYPT_NONCE_CACHE_SIZE 513
724 #define VAR_DNSCRYPT_NONCE_CACHE_SLABS 514
725 #define VAR_PAD_RESPONSES 515
726 #define VAR_PAD_RESPONSES_BLOCK_SIZE 516
727 #define VAR_PAD_QUERIES 517
728 #define VAR_PAD_QUERIES_BLOCK_SIZE 518
729 #define VAR_IPSECMOD_ENABLED 519
730 #define VAR_IPSECMOD_HOOK 520
731 #define VAR_IPSECMOD_IGNORE_BOGUS 521
732 #define VAR_IPSECMOD_MAX_TTL 522
733 #define VAR_IPSECMOD_WHITELIST 523
734 #define VAR_IPSECMOD_STRICT 524
735 #define VAR_CACHEDB 525
736 #define VAR_CACHEDB_BACKEND 526
737 #define VAR_CACHEDB_SECRETSEED 527
738 #define VAR_CACHEDB_REDISHOST 528
739 #define VAR_CACHEDB_REDISPORT 529
740 #define VAR_CACHEDB_REDISTIMEOUT 530
741 #define VAR_CACHEDB_REDISEXPIRERECORDS 531
742 #define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 532
743 #define VAR_FOR_UPSTREAM 533
744 #define VAR_AUTH_ZONE 534
745 #define VAR_ZONEFILE 535
746 #define VAR_MASTER 536
747 #define VAR_URL 537
748 #define VAR_FOR_DOWNSTREAM 538
749 #define VAR_FALLBACK_ENABLED 539
750 #define VAR_TLS_ADDITIONAL_PORT 540
751 #define VAR_LOW_RTT 541
752 #define VAR_LOW_RTT_PERMIL 542
753 #define VAR_FAST_SERVER_PERMIL 543
754 #define VAR_FAST_SERVER_NUM 544
755 #define VAR_ALLOW_NOTIFY 545
756 #define VAR_TLS_WIN_CERT 546
757 #define VAR_TCP_CONNECTION_LIMIT 547
758 #define VAR_FORWARD_NO_CACHE 548
759 #define VAR_STUB_NO_CACHE 549
760 #define VAR_LOG_SERVFAIL 550
761 #define VAR_DENY_ANY 551
762 #define VAR_UNKNOWN_SERVER_TIME_LIMIT 552
763 #define VAR_LOG_TAG_QUERYREPLY 553
764 #define VAR_STREAM_WAIT_SIZE 554
765 #define VAR_TLS_CIPHERS 555
766 #define VAR_TLS_CIPHERSUITES 556
767 #define VAR_TLS_USE_SNI 557
768 #define VAR_IPSET 558
769 #define VAR_IPSET_NAME_V4 559
770 #define VAR_IPSET_NAME_V6 560
771 #define VAR_TLS_SESSION_TICKET_KEYS 561
772 #define VAR_RPZ 562
773 #define VAR_TAGS 563
774 #define VAR_RPZ_ACTION_OVERRIDE 564
775 #define VAR_RPZ_CNAME_OVERRIDE 565
776 #define VAR_RPZ_LOG 566
777 #define VAR_RPZ_LOG_NAME 567
778 #define VAR_DYNLIB 568
779 #define VAR_DYNLIB_FILE 569
780 #define VAR_EDNS_CLIENT_STRING 570
781 #define VAR_EDNS_CLIENT_STRING_OPCODE 571
782 #define VAR_NSID 572
783 #define VAR_ZONEMD_PERMISSIVE_MODE 573
784 #define VAR_ZONEMD_CHECK 574
785 #define VAR_ZONEMD_REJECT_ABSENCE 575
786 
787 /* Value type.  */
788 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
789 union YYSTYPE
790 {
791 #line 66 "util/configparser.y"
792 
793 	char*	str;
794 
795 #line 796 "util/configparser.c"
796 
797 };
798 typedef union YYSTYPE YYSTYPE;
799 # define YYSTYPE_IS_TRIVIAL 1
800 # define YYSTYPE_IS_DECLARED 1
801 #endif
802 
803 
804 extern YYSTYPE yylval;
805 
806 int yyparse (void);
807 
808 #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
809 /* Symbol kind.  */
810 enum yysymbol_kind_t
811 {
812   YYSYMBOL_YYEMPTY = -2,
813   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
814   YYSYMBOL_YYerror = 1,                    /* error  */
815   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
816   YYSYMBOL_SPACE = 3,                      /* SPACE  */
817   YYSYMBOL_LETTER = 4,                     /* LETTER  */
818   YYSYMBOL_NEWLINE = 5,                    /* NEWLINE  */
819   YYSYMBOL_COMMENT = 6,                    /* COMMENT  */
820   YYSYMBOL_COLON = 7,                      /* COLON  */
821   YYSYMBOL_ANY = 8,                        /* ANY  */
822   YYSYMBOL_ZONESTR = 9,                    /* ZONESTR  */
823   YYSYMBOL_STRING_ARG = 10,                /* STRING_ARG  */
824   YYSYMBOL_VAR_FORCE_TOPLEVEL = 11,        /* VAR_FORCE_TOPLEVEL  */
825   YYSYMBOL_VAR_SERVER = 12,                /* VAR_SERVER  */
826   YYSYMBOL_VAR_VERBOSITY = 13,             /* VAR_VERBOSITY  */
827   YYSYMBOL_VAR_NUM_THREADS = 14,           /* VAR_NUM_THREADS  */
828   YYSYMBOL_VAR_PORT = 15,                  /* VAR_PORT  */
829   YYSYMBOL_VAR_OUTGOING_RANGE = 16,        /* VAR_OUTGOING_RANGE  */
830   YYSYMBOL_VAR_INTERFACE = 17,             /* VAR_INTERFACE  */
831   YYSYMBOL_VAR_PREFER_IP4 = 18,            /* VAR_PREFER_IP4  */
832   YYSYMBOL_VAR_DO_IP4 = 19,                /* VAR_DO_IP4  */
833   YYSYMBOL_VAR_DO_IP6 = 20,                /* VAR_DO_IP6  */
834   YYSYMBOL_VAR_PREFER_IP6 = 21,            /* VAR_PREFER_IP6  */
835   YYSYMBOL_VAR_DO_UDP = 22,                /* VAR_DO_UDP  */
836   YYSYMBOL_VAR_DO_TCP = 23,                /* VAR_DO_TCP  */
837   YYSYMBOL_VAR_TCP_MSS = 24,               /* VAR_TCP_MSS  */
838   YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25,      /* VAR_OUTGOING_TCP_MSS  */
839   YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26,      /* VAR_TCP_IDLE_TIMEOUT  */
840   YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27,    /* VAR_EDNS_TCP_KEEPALIVE  */
841   YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
842   YYSYMBOL_VAR_CHROOT = 29,                /* VAR_CHROOT  */
843   YYSYMBOL_VAR_USERNAME = 30,              /* VAR_USERNAME  */
844   YYSYMBOL_VAR_DIRECTORY = 31,             /* VAR_DIRECTORY  */
845   YYSYMBOL_VAR_LOGFILE = 32,               /* VAR_LOGFILE  */
846   YYSYMBOL_VAR_PIDFILE = 33,               /* VAR_PIDFILE  */
847   YYSYMBOL_VAR_MSG_CACHE_SIZE = 34,        /* VAR_MSG_CACHE_SIZE  */
848   YYSYMBOL_VAR_MSG_CACHE_SLABS = 35,       /* VAR_MSG_CACHE_SLABS  */
849   YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD  */
850   YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37,      /* VAR_RRSET_CACHE_SIZE  */
851   YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38,     /* VAR_RRSET_CACHE_SLABS  */
852   YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39,      /* VAR_OUTGOING_NUM_TCP  */
853   YYSYMBOL_VAR_INFRA_HOST_TTL = 40,        /* VAR_INFRA_HOST_TTL  */
854   YYSYMBOL_VAR_INFRA_LAME_TTL = 41,        /* VAR_INFRA_LAME_TTL  */
855   YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42,     /* VAR_INFRA_CACHE_SLABS  */
856   YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43,  /* VAR_INFRA_CACHE_NUMHOSTS  */
857   YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE  */
858   YYSYMBOL_VAR_NAME = 45,                  /* VAR_NAME  */
859   YYSYMBOL_VAR_STUB_ZONE = 46,             /* VAR_STUB_ZONE  */
860   YYSYMBOL_VAR_STUB_HOST = 47,             /* VAR_STUB_HOST  */
861   YYSYMBOL_VAR_STUB_ADDR = 48,             /* VAR_STUB_ADDR  */
862   YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49,   /* VAR_TARGET_FETCH_POLICY  */
863   YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50,  /* VAR_HARDEN_SHORT_BUFSIZE  */
864   YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51,  /* VAR_HARDEN_LARGE_QUERIES  */
865   YYSYMBOL_VAR_FORWARD_ZONE = 52,          /* VAR_FORWARD_ZONE  */
866   YYSYMBOL_VAR_FORWARD_HOST = 53,          /* VAR_FORWARD_HOST  */
867   YYSYMBOL_VAR_FORWARD_ADDR = 54,          /* VAR_FORWARD_ADDR  */
868   YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55,  /* VAR_DO_NOT_QUERY_ADDRESS  */
869   YYSYMBOL_VAR_HIDE_IDENTITY = 56,         /* VAR_HIDE_IDENTITY  */
870   YYSYMBOL_VAR_HIDE_VERSION = 57,          /* VAR_HIDE_VERSION  */
871   YYSYMBOL_VAR_IDENTITY = 58,              /* VAR_IDENTITY  */
872   YYSYMBOL_VAR_VERSION = 59,               /* VAR_VERSION  */
873   YYSYMBOL_VAR_HARDEN_GLUE = 60,           /* VAR_HARDEN_GLUE  */
874   YYSYMBOL_VAR_MODULE_CONF = 61,           /* VAR_MODULE_CONF  */
875   YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62,     /* VAR_TRUST_ANCHOR_FILE  */
876   YYSYMBOL_VAR_TRUST_ANCHOR = 63,          /* VAR_TRUST_ANCHOR  */
877   YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64,     /* VAR_VAL_OVERRIDE_DATE  */
878   YYSYMBOL_VAR_BOGUS_TTL = 65,             /* VAR_BOGUS_TTL  */
879   YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66,  /* VAR_VAL_CLEAN_ADDITIONAL  */
880   YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67,   /* VAR_VAL_PERMISSIVE_MODE  */
881   YYSYMBOL_VAR_INCOMING_NUM_TCP = 68,      /* VAR_INCOMING_NUM_TCP  */
882   YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69,       /* VAR_MSG_BUFFER_SIZE  */
883   YYSYMBOL_VAR_KEY_CACHE_SIZE = 70,        /* VAR_KEY_CACHE_SIZE  */
884   YYSYMBOL_VAR_KEY_CACHE_SLABS = 71,       /* VAR_KEY_CACHE_SLABS  */
885   YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72,     /* VAR_TRUSTED_KEYS_FILE  */
886   YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
887   YYSYMBOL_VAR_USE_SYSLOG = 74,            /* VAR_USE_SYSLOG  */
888   YYSYMBOL_VAR_OUTGOING_INTERFACE = 75,    /* VAR_OUTGOING_INTERFACE  */
889   YYSYMBOL_VAR_ROOT_HINTS = 76,            /* VAR_ROOT_HINTS  */
890   YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST  */
891   YYSYMBOL_VAR_CACHE_MAX_TTL = 78,         /* VAR_CACHE_MAX_TTL  */
892   YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED  */
893   YYSYMBOL_VAR_ACCESS_CONTROL = 80,        /* VAR_ACCESS_CONTROL  */
894   YYSYMBOL_VAR_LOCAL_ZONE = 81,            /* VAR_LOCAL_ZONE  */
895   YYSYMBOL_VAR_LOCAL_DATA = 82,            /* VAR_LOCAL_DATA  */
896   YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83,   /* VAR_INTERFACE_AUTOMATIC  */
897   YYSYMBOL_VAR_STATISTICS_INTERVAL = 84,   /* VAR_STATISTICS_INTERVAL  */
898   YYSYMBOL_VAR_DO_DAEMONIZE = 85,          /* VAR_DO_DAEMONIZE  */
899   YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86,       /* VAR_USE_CAPS_FOR_ID  */
900   YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE  */
901   YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88,  /* VAR_OUTGOING_PORT_PERMIT  */
902   YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89,   /* VAR_OUTGOING_PORT_AVOID  */
903   YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90,       /* VAR_DLV_ANCHOR_FILE  */
904   YYSYMBOL_VAR_DLV_ANCHOR = 91,            /* VAR_DLV_ANCHOR  */
905   YYSYMBOL_VAR_NEG_CACHE_SIZE = 92,        /* VAR_NEG_CACHE_SIZE  */
906   YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93,  /* VAR_HARDEN_REFERRAL_PATH  */
907   YYSYMBOL_VAR_PRIVATE_ADDRESS = 94,       /* VAR_PRIVATE_ADDRESS  */
908   YYSYMBOL_VAR_PRIVATE_DOMAIN = 95,        /* VAR_PRIVATE_DOMAIN  */
909   YYSYMBOL_VAR_REMOTE_CONTROL = 96,        /* VAR_REMOTE_CONTROL  */
910   YYSYMBOL_VAR_CONTROL_ENABLE = 97,        /* VAR_CONTROL_ENABLE  */
911   YYSYMBOL_VAR_CONTROL_INTERFACE = 98,     /* VAR_CONTROL_INTERFACE  */
912   YYSYMBOL_VAR_CONTROL_PORT = 99,          /* VAR_CONTROL_PORT  */
913   YYSYMBOL_VAR_SERVER_KEY_FILE = 100,      /* VAR_SERVER_KEY_FILE  */
914   YYSYMBOL_VAR_SERVER_CERT_FILE = 101,     /* VAR_SERVER_CERT_FILE  */
915   YYSYMBOL_VAR_CONTROL_KEY_FILE = 102,     /* VAR_CONTROL_KEY_FILE  */
916   YYSYMBOL_VAR_CONTROL_CERT_FILE = 103,    /* VAR_CONTROL_CERT_FILE  */
917   YYSYMBOL_VAR_CONTROL_USE_CERT = 104,     /* VAR_CONTROL_USE_CERT  */
918   YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105,    /* VAR_TCP_REUSE_TIMEOUT  */
919   YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES  */
920   YYSYMBOL_VAR_EXTENDED_STATISTICS = 107,  /* VAR_EXTENDED_STATISTICS  */
921   YYSYMBOL_VAR_LOCAL_DATA_PTR = 108,       /* VAR_LOCAL_DATA_PTR  */
922   YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109,       /* VAR_JOSTLE_TIMEOUT  */
923   YYSYMBOL_VAR_STUB_PRIME = 110,           /* VAR_STUB_PRIME  */
924   YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD  */
925   YYSYMBOL_VAR_LOG_TIME_ASCII = 112,       /* VAR_LOG_TIME_ASCII  */
926   YYSYMBOL_VAR_DOMAIN_INSECURE = 113,      /* VAR_DOMAIN_INSECURE  */
927   YYSYMBOL_VAR_PYTHON = 114,               /* VAR_PYTHON  */
928   YYSYMBOL_VAR_PYTHON_SCRIPT = 115,        /* VAR_PYTHON_SCRIPT  */
929   YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116,     /* VAR_VAL_SIG_SKEW_MIN  */
930   YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117,     /* VAR_VAL_SIG_SKEW_MAX  */
931   YYSYMBOL_VAR_VAL_MAX_RESTART = 118,      /* VAR_VAL_MAX_RESTART  */
932   YYSYMBOL_VAR_CACHE_MIN_TTL = 119,        /* VAR_CACHE_MIN_TTL  */
933   YYSYMBOL_VAR_VAL_LOG_LEVEL = 120,        /* VAR_VAL_LOG_LEVEL  */
934   YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 121, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
935   YYSYMBOL_VAR_KEEP_MISSING = 122,         /* VAR_KEEP_MISSING  */
936   YYSYMBOL_VAR_ADD_HOLDDOWN = 123,         /* VAR_ADD_HOLDDOWN  */
937   YYSYMBOL_VAR_DEL_HOLDDOWN = 124,         /* VAR_DEL_HOLDDOWN  */
938   YYSYMBOL_VAR_SO_RCVBUF = 125,            /* VAR_SO_RCVBUF  */
939   YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 126,     /* VAR_EDNS_BUFFER_SIZE  */
940   YYSYMBOL_VAR_PREFETCH = 127,             /* VAR_PREFETCH  */
941   YYSYMBOL_VAR_PREFETCH_KEY = 128,         /* VAR_PREFETCH_KEY  */
942   YYSYMBOL_VAR_SO_SNDBUF = 129,            /* VAR_SO_SNDBUF  */
943   YYSYMBOL_VAR_SO_REUSEPORT = 130,         /* VAR_SO_REUSEPORT  */
944   YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 131, /* VAR_HARDEN_BELOW_NXDOMAIN  */
945   YYSYMBOL_VAR_IGNORE_CD_FLAG = 132,       /* VAR_IGNORE_CD_FLAG  */
946   YYSYMBOL_VAR_LOG_QUERIES = 133,          /* VAR_LOG_QUERIES  */
947   YYSYMBOL_VAR_LOG_REPLIES = 134,          /* VAR_LOG_REPLIES  */
948   YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 135,    /* VAR_LOG_LOCAL_ACTIONS  */
949   YYSYMBOL_VAR_TCP_UPSTREAM = 136,         /* VAR_TCP_UPSTREAM  */
950   YYSYMBOL_VAR_SSL_UPSTREAM = 137,         /* VAR_SSL_UPSTREAM  */
951   YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 138, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
952   YYSYMBOL_VAR_SSL_SERVICE_KEY = 139,      /* VAR_SSL_SERVICE_KEY  */
953   YYSYMBOL_VAR_SSL_SERVICE_PEM = 140,      /* VAR_SSL_SERVICE_PEM  */
954   YYSYMBOL_VAR_SSL_PORT = 141,             /* VAR_SSL_PORT  */
955   YYSYMBOL_VAR_FORWARD_FIRST = 142,        /* VAR_FORWARD_FIRST  */
956   YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 143,    /* VAR_STUB_SSL_UPSTREAM  */
957   YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 144, /* VAR_FORWARD_SSL_UPSTREAM  */
958   YYSYMBOL_VAR_TLS_CERT_BUNDLE = 145,      /* VAR_TLS_CERT_BUNDLE  */
959   YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 146,    /* VAR_STUB_TCP_UPSTREAM  */
960   YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 147, /* VAR_FORWARD_TCP_UPSTREAM  */
961   YYSYMBOL_VAR_HTTPS_PORT = 148,           /* VAR_HTTPS_PORT  */
962   YYSYMBOL_VAR_HTTP_ENDPOINT = 149,        /* VAR_HTTP_ENDPOINT  */
963   YYSYMBOL_VAR_HTTP_MAX_STREAMS = 150,     /* VAR_HTTP_MAX_STREAMS  */
964   YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 151, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
965   YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 152, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
966   YYSYMBOL_VAR_HTTP_NODELAY = 153,         /* VAR_HTTP_NODELAY  */
967   YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 154, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
968   YYSYMBOL_VAR_STUB_FIRST = 155,           /* VAR_STUB_FIRST  */
969   YYSYMBOL_VAR_MINIMAL_RESPONSES = 156,    /* VAR_MINIMAL_RESPONSES  */
970   YYSYMBOL_VAR_RRSET_ROUNDROBIN = 157,     /* VAR_RRSET_ROUNDROBIN  */
971   YYSYMBOL_VAR_MAX_UDP_SIZE = 158,         /* VAR_MAX_UDP_SIZE  */
972   YYSYMBOL_VAR_DELAY_CLOSE = 159,          /* VAR_DELAY_CLOSE  */
973   YYSYMBOL_VAR_UDP_CONNECT = 160,          /* VAR_UDP_CONNECT  */
974   YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 161,    /* VAR_UNBLOCK_LAN_ZONES  */
975   YYSYMBOL_VAR_INSECURE_LAN_ZONES = 162,   /* VAR_INSECURE_LAN_ZONES  */
976   YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 163,  /* VAR_INFRA_CACHE_MIN_RTT  */
977   YYSYMBOL_VAR_INFRA_KEEP_PROBING = 164,   /* VAR_INFRA_KEEP_PROBING  */
978   YYSYMBOL_VAR_DNS64_PREFIX = 165,         /* VAR_DNS64_PREFIX  */
979   YYSYMBOL_VAR_DNS64_SYNTHALL = 166,       /* VAR_DNS64_SYNTHALL  */
980   YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 167,    /* VAR_DNS64_IGNORE_AAAA  */
981   YYSYMBOL_VAR_DNSTAP = 168,               /* VAR_DNSTAP  */
982   YYSYMBOL_VAR_DNSTAP_ENABLE = 169,        /* VAR_DNSTAP_ENABLE  */
983   YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 170,   /* VAR_DNSTAP_SOCKET_PATH  */
984   YYSYMBOL_VAR_DNSTAP_IP = 171,            /* VAR_DNSTAP_IP  */
985   YYSYMBOL_VAR_DNSTAP_TLS = 172,           /* VAR_DNSTAP_TLS  */
986   YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 173, /* VAR_DNSTAP_TLS_SERVER_NAME  */
987   YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 174, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
988   YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 175, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
989   YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 176, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
990   YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 177, /* VAR_DNSTAP_SEND_IDENTITY  */
991   YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 178,  /* VAR_DNSTAP_SEND_VERSION  */
992   YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 179, /* VAR_DNSTAP_BIDIRECTIONAL  */
993   YYSYMBOL_VAR_DNSTAP_IDENTITY = 180,      /* VAR_DNSTAP_IDENTITY  */
994   YYSYMBOL_VAR_DNSTAP_VERSION = 181,       /* VAR_DNSTAP_VERSION  */
995   YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
996   YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
997   YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 184, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
998   YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 185, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
999   YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
1000   YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
1001   YYSYMBOL_VAR_RESPONSE_IP_TAG = 188,      /* VAR_RESPONSE_IP_TAG  */
1002   YYSYMBOL_VAR_RESPONSE_IP = 189,          /* VAR_RESPONSE_IP  */
1003   YYSYMBOL_VAR_RESPONSE_IP_DATA = 190,     /* VAR_RESPONSE_IP_DATA  */
1004   YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 191, /* VAR_HARDEN_ALGO_DOWNGRADE  */
1005   YYSYMBOL_VAR_IP_TRANSPARENT = 192,       /* VAR_IP_TRANSPARENT  */
1006   YYSYMBOL_VAR_IP_DSCP = 193,              /* VAR_IP_DSCP  */
1007   YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 194, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
1008   YYSYMBOL_VAR_IP_RATELIMIT = 195,         /* VAR_IP_RATELIMIT  */
1009   YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 196,   /* VAR_IP_RATELIMIT_SLABS  */
1010   YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 197,    /* VAR_IP_RATELIMIT_SIZE  */
1011   YYSYMBOL_VAR_RATELIMIT = 198,            /* VAR_RATELIMIT  */
1012   YYSYMBOL_VAR_RATELIMIT_SLABS = 199,      /* VAR_RATELIMIT_SLABS  */
1013   YYSYMBOL_VAR_RATELIMIT_SIZE = 200,       /* VAR_RATELIMIT_SIZE  */
1014   YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 201,   /* VAR_OUTBOUND_MSG_RETRY  */
1015   YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 202, /* VAR_RATELIMIT_FOR_DOMAIN  */
1016   YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 203, /* VAR_RATELIMIT_BELOW_DOMAIN  */
1017   YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 204,  /* VAR_IP_RATELIMIT_FACTOR  */
1018   YYSYMBOL_VAR_RATELIMIT_FACTOR = 205,     /* VAR_RATELIMIT_FACTOR  */
1019   YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 206,   /* VAR_SEND_CLIENT_SUBNET  */
1020   YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 207,   /* VAR_CLIENT_SUBNET_ZONE  */
1021   YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 208, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
1022   YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 209, /* VAR_CLIENT_SUBNET_OPCODE  */
1023   YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 210, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
1024   YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 211, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
1025   YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 212, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
1026   YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 213, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
1027   YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 214, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
1028   YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 215, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
1029   YYSYMBOL_VAR_CAPS_WHITELIST = 216,       /* VAR_CAPS_WHITELIST  */
1030   YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 217, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
1031   YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 218, /* VAR_PERMIT_SMALL_HOLDDOWN  */
1032   YYSYMBOL_VAR_QNAME_MINIMISATION = 219,   /* VAR_QNAME_MINIMISATION  */
1033   YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 220, /* VAR_QNAME_MINIMISATION_STRICT  */
1034   YYSYMBOL_VAR_IP_FREEBIND = 221,          /* VAR_IP_FREEBIND  */
1035   YYSYMBOL_VAR_DEFINE_TAG = 222,           /* VAR_DEFINE_TAG  */
1036   YYSYMBOL_VAR_LOCAL_ZONE_TAG = 223,       /* VAR_LOCAL_ZONE_TAG  */
1037   YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 224,   /* VAR_ACCESS_CONTROL_TAG  */
1038   YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 225,  /* VAR_LOCAL_ZONE_OVERRIDE  */
1039   YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 226, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
1040   YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 227, /* VAR_ACCESS_CONTROL_TAG_DATA  */
1041   YYSYMBOL_VAR_VIEW = 228,                 /* VAR_VIEW  */
1042   YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 229,  /* VAR_ACCESS_CONTROL_VIEW  */
1043   YYSYMBOL_VAR_VIEW_FIRST = 230,           /* VAR_VIEW_FIRST  */
1044   YYSYMBOL_VAR_SERVE_EXPIRED = 231,        /* VAR_SERVE_EXPIRED  */
1045   YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 232,    /* VAR_SERVE_EXPIRED_TTL  */
1046   YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 233, /* VAR_SERVE_EXPIRED_TTL_RESET  */
1047   YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 234, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
1048   YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 235, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
1049   YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 236,   /* VAR_SERVE_ORIGINAL_TTL  */
1050   YYSYMBOL_VAR_FAKE_DSA = 237,             /* VAR_FAKE_DSA  */
1051   YYSYMBOL_VAR_FAKE_SHA1 = 238,            /* VAR_FAKE_SHA1  */
1052   YYSYMBOL_VAR_LOG_IDENTITY = 239,         /* VAR_LOG_IDENTITY  */
1053   YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 240,     /* VAR_HIDE_TRUSTANCHOR  */
1054   YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 241, /* VAR_HIDE_HTTP_USER_AGENT  */
1055   YYSYMBOL_VAR_HTTP_USER_AGENT = 242,      /* VAR_HTTP_USER_AGENT  */
1056   YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 243, /* VAR_TRUST_ANCHOR_SIGNALING  */
1057   YYSYMBOL_VAR_AGGRESSIVE_NSEC = 244,      /* VAR_AGGRESSIVE_NSEC  */
1058   YYSYMBOL_VAR_USE_SYSTEMD = 245,          /* VAR_USE_SYSTEMD  */
1059   YYSYMBOL_VAR_SHM_ENABLE = 246,           /* VAR_SHM_ENABLE  */
1060   YYSYMBOL_VAR_SHM_KEY = 247,              /* VAR_SHM_KEY  */
1061   YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 248,    /* VAR_ROOT_KEY_SENTINEL  */
1062   YYSYMBOL_VAR_DNSCRYPT = 249,             /* VAR_DNSCRYPT  */
1063   YYSYMBOL_VAR_DNSCRYPT_ENABLE = 250,      /* VAR_DNSCRYPT_ENABLE  */
1064   YYSYMBOL_VAR_DNSCRYPT_PORT = 251,        /* VAR_DNSCRYPT_PORT  */
1065   YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 252,    /* VAR_DNSCRYPT_PROVIDER  */
1066   YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 253,  /* VAR_DNSCRYPT_SECRET_KEY  */
1067   YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 254, /* VAR_DNSCRYPT_PROVIDER_CERT  */
1068   YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 255, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
1069   YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 256, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
1070   YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 257, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
1071   YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 258, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
1072   YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 259, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
1073   YYSYMBOL_VAR_PAD_RESPONSES = 260,        /* VAR_PAD_RESPONSES  */
1074   YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 261, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
1075   YYSYMBOL_VAR_PAD_QUERIES = 262,          /* VAR_PAD_QUERIES  */
1076   YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 263, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
1077   YYSYMBOL_VAR_IPSECMOD_ENABLED = 264,     /* VAR_IPSECMOD_ENABLED  */
1078   YYSYMBOL_VAR_IPSECMOD_HOOK = 265,        /* VAR_IPSECMOD_HOOK  */
1079   YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 266, /* VAR_IPSECMOD_IGNORE_BOGUS  */
1080   YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 267,     /* VAR_IPSECMOD_MAX_TTL  */
1081   YYSYMBOL_VAR_IPSECMOD_WHITELIST = 268,   /* VAR_IPSECMOD_WHITELIST  */
1082   YYSYMBOL_VAR_IPSECMOD_STRICT = 269,      /* VAR_IPSECMOD_STRICT  */
1083   YYSYMBOL_VAR_CACHEDB = 270,              /* VAR_CACHEDB  */
1084   YYSYMBOL_VAR_CACHEDB_BACKEND = 271,      /* VAR_CACHEDB_BACKEND  */
1085   YYSYMBOL_VAR_CACHEDB_SECRETSEED = 272,   /* VAR_CACHEDB_SECRETSEED  */
1086   YYSYMBOL_VAR_CACHEDB_REDISHOST = 273,    /* VAR_CACHEDB_REDISHOST  */
1087   YYSYMBOL_VAR_CACHEDB_REDISPORT = 274,    /* VAR_CACHEDB_REDISPORT  */
1088   YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 275, /* VAR_CACHEDB_REDISTIMEOUT  */
1089   YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 276, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
1090   YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 277, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
1091   YYSYMBOL_VAR_FOR_UPSTREAM = 278,         /* VAR_FOR_UPSTREAM  */
1092   YYSYMBOL_VAR_AUTH_ZONE = 279,            /* VAR_AUTH_ZONE  */
1093   YYSYMBOL_VAR_ZONEFILE = 280,             /* VAR_ZONEFILE  */
1094   YYSYMBOL_VAR_MASTER = 281,               /* VAR_MASTER  */
1095   YYSYMBOL_VAR_URL = 282,                  /* VAR_URL  */
1096   YYSYMBOL_VAR_FOR_DOWNSTREAM = 283,       /* VAR_FOR_DOWNSTREAM  */
1097   YYSYMBOL_VAR_FALLBACK_ENABLED = 284,     /* VAR_FALLBACK_ENABLED  */
1098   YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 285,  /* VAR_TLS_ADDITIONAL_PORT  */
1099   YYSYMBOL_VAR_LOW_RTT = 286,              /* VAR_LOW_RTT  */
1100   YYSYMBOL_VAR_LOW_RTT_PERMIL = 287,       /* VAR_LOW_RTT_PERMIL  */
1101   YYSYMBOL_VAR_FAST_SERVER_PERMIL = 288,   /* VAR_FAST_SERVER_PERMIL  */
1102   YYSYMBOL_VAR_FAST_SERVER_NUM = 289,      /* VAR_FAST_SERVER_NUM  */
1103   YYSYMBOL_VAR_ALLOW_NOTIFY = 290,         /* VAR_ALLOW_NOTIFY  */
1104   YYSYMBOL_VAR_TLS_WIN_CERT = 291,         /* VAR_TLS_WIN_CERT  */
1105   YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 292, /* VAR_TCP_CONNECTION_LIMIT  */
1106   YYSYMBOL_VAR_FORWARD_NO_CACHE = 293,     /* VAR_FORWARD_NO_CACHE  */
1107   YYSYMBOL_VAR_STUB_NO_CACHE = 294,        /* VAR_STUB_NO_CACHE  */
1108   YYSYMBOL_VAR_LOG_SERVFAIL = 295,         /* VAR_LOG_SERVFAIL  */
1109   YYSYMBOL_VAR_DENY_ANY = 296,             /* VAR_DENY_ANY  */
1110   YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 297, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
1111   YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 298,   /* VAR_LOG_TAG_QUERYREPLY  */
1112   YYSYMBOL_VAR_STREAM_WAIT_SIZE = 299,     /* VAR_STREAM_WAIT_SIZE  */
1113   YYSYMBOL_VAR_TLS_CIPHERS = 300,          /* VAR_TLS_CIPHERS  */
1114   YYSYMBOL_VAR_TLS_CIPHERSUITES = 301,     /* VAR_TLS_CIPHERSUITES  */
1115   YYSYMBOL_VAR_TLS_USE_SNI = 302,          /* VAR_TLS_USE_SNI  */
1116   YYSYMBOL_VAR_IPSET = 303,                /* VAR_IPSET  */
1117   YYSYMBOL_VAR_IPSET_NAME_V4 = 304,        /* VAR_IPSET_NAME_V4  */
1118   YYSYMBOL_VAR_IPSET_NAME_V6 = 305,        /* VAR_IPSET_NAME_V6  */
1119   YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 306, /* VAR_TLS_SESSION_TICKET_KEYS  */
1120   YYSYMBOL_VAR_RPZ = 307,                  /* VAR_RPZ  */
1121   YYSYMBOL_VAR_TAGS = 308,                 /* VAR_TAGS  */
1122   YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 309,  /* VAR_RPZ_ACTION_OVERRIDE  */
1123   YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 310,   /* VAR_RPZ_CNAME_OVERRIDE  */
1124   YYSYMBOL_VAR_RPZ_LOG = 311,              /* VAR_RPZ_LOG  */
1125   YYSYMBOL_VAR_RPZ_LOG_NAME = 312,         /* VAR_RPZ_LOG_NAME  */
1126   YYSYMBOL_VAR_DYNLIB = 313,               /* VAR_DYNLIB  */
1127   YYSYMBOL_VAR_DYNLIB_FILE = 314,          /* VAR_DYNLIB_FILE  */
1128   YYSYMBOL_VAR_EDNS_CLIENT_STRING = 315,   /* VAR_EDNS_CLIENT_STRING  */
1129   YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 316, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
1130   YYSYMBOL_VAR_NSID = 317,                 /* VAR_NSID  */
1131   YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 318, /* VAR_ZONEMD_PERMISSIVE_MODE  */
1132   YYSYMBOL_VAR_ZONEMD_CHECK = 319,         /* VAR_ZONEMD_CHECK  */
1133   YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 320, /* VAR_ZONEMD_REJECT_ABSENCE  */
1134   YYSYMBOL_YYACCEPT = 321,                 /* $accept  */
1135   YYSYMBOL_toplevelvars = 322,             /* toplevelvars  */
1136   YYSYMBOL_toplevelvar = 323,              /* toplevelvar  */
1137   YYSYMBOL_force_toplevel = 324,           /* force_toplevel  */
1138   YYSYMBOL_serverstart = 325,              /* serverstart  */
1139   YYSYMBOL_contents_server = 326,          /* contents_server  */
1140   YYSYMBOL_content_server = 327,           /* content_server  */
1141   YYSYMBOL_stubstart = 328,                /* stubstart  */
1142   YYSYMBOL_contents_stub = 329,            /* contents_stub  */
1143   YYSYMBOL_content_stub = 330,             /* content_stub  */
1144   YYSYMBOL_forwardstart = 331,             /* forwardstart  */
1145   YYSYMBOL_contents_forward = 332,         /* contents_forward  */
1146   YYSYMBOL_content_forward = 333,          /* content_forward  */
1147   YYSYMBOL_viewstart = 334,                /* viewstart  */
1148   YYSYMBOL_contents_view = 335,            /* contents_view  */
1149   YYSYMBOL_content_view = 336,             /* content_view  */
1150   YYSYMBOL_authstart = 337,                /* authstart  */
1151   YYSYMBOL_contents_auth = 338,            /* contents_auth  */
1152   YYSYMBOL_content_auth = 339,             /* content_auth  */
1153   YYSYMBOL_rpz_tag = 340,                  /* rpz_tag  */
1154   YYSYMBOL_rpz_action_override = 341,      /* rpz_action_override  */
1155   YYSYMBOL_rpz_cname_override = 342,       /* rpz_cname_override  */
1156   YYSYMBOL_rpz_log = 343,                  /* rpz_log  */
1157   YYSYMBOL_rpz_log_name = 344,             /* rpz_log_name  */
1158   YYSYMBOL_rpzstart = 345,                 /* rpzstart  */
1159   YYSYMBOL_contents_rpz = 346,             /* contents_rpz  */
1160   YYSYMBOL_content_rpz = 347,              /* content_rpz  */
1161   YYSYMBOL_server_num_threads = 348,       /* server_num_threads  */
1162   YYSYMBOL_server_verbosity = 349,         /* server_verbosity  */
1163   YYSYMBOL_server_statistics_interval = 350, /* server_statistics_interval  */
1164   YYSYMBOL_server_statistics_cumulative = 351, /* server_statistics_cumulative  */
1165   YYSYMBOL_server_extended_statistics = 352, /* server_extended_statistics  */
1166   YYSYMBOL_server_shm_enable = 353,        /* server_shm_enable  */
1167   YYSYMBOL_server_shm_key = 354,           /* server_shm_key  */
1168   YYSYMBOL_server_port = 355,              /* server_port  */
1169   YYSYMBOL_server_send_client_subnet = 356, /* server_send_client_subnet  */
1170   YYSYMBOL_server_client_subnet_zone = 357, /* server_client_subnet_zone  */
1171   YYSYMBOL_server_client_subnet_always_forward = 358, /* server_client_subnet_always_forward  */
1172   YYSYMBOL_server_client_subnet_opcode = 359, /* server_client_subnet_opcode  */
1173   YYSYMBOL_server_max_client_subnet_ipv4 = 360, /* server_max_client_subnet_ipv4  */
1174   YYSYMBOL_server_max_client_subnet_ipv6 = 361, /* server_max_client_subnet_ipv6  */
1175   YYSYMBOL_server_min_client_subnet_ipv4 = 362, /* server_min_client_subnet_ipv4  */
1176   YYSYMBOL_server_min_client_subnet_ipv6 = 363, /* server_min_client_subnet_ipv6  */
1177   YYSYMBOL_server_max_ecs_tree_size_ipv4 = 364, /* server_max_ecs_tree_size_ipv4  */
1178   YYSYMBOL_server_max_ecs_tree_size_ipv6 = 365, /* server_max_ecs_tree_size_ipv6  */
1179   YYSYMBOL_server_interface = 366,         /* server_interface  */
1180   YYSYMBOL_server_outgoing_interface = 367, /* server_outgoing_interface  */
1181   YYSYMBOL_server_outgoing_range = 368,    /* server_outgoing_range  */
1182   YYSYMBOL_server_outgoing_port_permit = 369, /* server_outgoing_port_permit  */
1183   YYSYMBOL_server_outgoing_port_avoid = 370, /* server_outgoing_port_avoid  */
1184   YYSYMBOL_server_outgoing_num_tcp = 371,  /* server_outgoing_num_tcp  */
1185   YYSYMBOL_server_incoming_num_tcp = 372,  /* server_incoming_num_tcp  */
1186   YYSYMBOL_server_interface_automatic = 373, /* server_interface_automatic  */
1187   YYSYMBOL_server_do_ip4 = 374,            /* server_do_ip4  */
1188   YYSYMBOL_server_do_ip6 = 375,            /* server_do_ip6  */
1189   YYSYMBOL_server_do_udp = 376,            /* server_do_udp  */
1190   YYSYMBOL_server_do_tcp = 377,            /* server_do_tcp  */
1191   YYSYMBOL_server_prefer_ip4 = 378,        /* server_prefer_ip4  */
1192   YYSYMBOL_server_prefer_ip6 = 379,        /* server_prefer_ip6  */
1193   YYSYMBOL_server_tcp_mss = 380,           /* server_tcp_mss  */
1194   YYSYMBOL_server_outgoing_tcp_mss = 381,  /* server_outgoing_tcp_mss  */
1195   YYSYMBOL_server_tcp_idle_timeout = 382,  /* server_tcp_idle_timeout  */
1196   YYSYMBOL_server_max_reuse_tcp_queries = 383, /* server_max_reuse_tcp_queries  */
1197   YYSYMBOL_server_tcp_reuse_timeout = 384, /* server_tcp_reuse_timeout  */
1198   YYSYMBOL_server_tcp_auth_query_timeout = 385, /* server_tcp_auth_query_timeout  */
1199   YYSYMBOL_server_tcp_keepalive = 386,     /* server_tcp_keepalive  */
1200   YYSYMBOL_server_tcp_keepalive_timeout = 387, /* server_tcp_keepalive_timeout  */
1201   YYSYMBOL_server_tcp_upstream = 388,      /* server_tcp_upstream  */
1202   YYSYMBOL_server_udp_upstream_without_downstream = 389, /* server_udp_upstream_without_downstream  */
1203   YYSYMBOL_server_ssl_upstream = 390,      /* server_ssl_upstream  */
1204   YYSYMBOL_server_ssl_service_key = 391,   /* server_ssl_service_key  */
1205   YYSYMBOL_server_ssl_service_pem = 392,   /* server_ssl_service_pem  */
1206   YYSYMBOL_server_ssl_port = 393,          /* server_ssl_port  */
1207   YYSYMBOL_server_tls_cert_bundle = 394,   /* server_tls_cert_bundle  */
1208   YYSYMBOL_server_tls_win_cert = 395,      /* server_tls_win_cert  */
1209   YYSYMBOL_server_tls_additional_port = 396, /* server_tls_additional_port  */
1210   YYSYMBOL_server_tls_ciphers = 397,       /* server_tls_ciphers  */
1211   YYSYMBOL_server_tls_ciphersuites = 398,  /* server_tls_ciphersuites  */
1212   YYSYMBOL_server_tls_session_ticket_keys = 399, /* server_tls_session_ticket_keys  */
1213   YYSYMBOL_server_tls_use_sni = 400,       /* server_tls_use_sni  */
1214   YYSYMBOL_server_https_port = 401,        /* server_https_port  */
1215   YYSYMBOL_server_http_endpoint = 402,     /* server_http_endpoint  */
1216   YYSYMBOL_server_http_max_streams = 403,  /* server_http_max_streams  */
1217   YYSYMBOL_server_http_query_buffer_size = 404, /* server_http_query_buffer_size  */
1218   YYSYMBOL_server_http_response_buffer_size = 405, /* server_http_response_buffer_size  */
1219   YYSYMBOL_server_http_nodelay = 406,      /* server_http_nodelay  */
1220   YYSYMBOL_server_http_notls_downstream = 407, /* server_http_notls_downstream  */
1221   YYSYMBOL_server_use_systemd = 408,       /* server_use_systemd  */
1222   YYSYMBOL_server_do_daemonize = 409,      /* server_do_daemonize  */
1223   YYSYMBOL_server_use_syslog = 410,        /* server_use_syslog  */
1224   YYSYMBOL_server_log_time_ascii = 411,    /* server_log_time_ascii  */
1225   YYSYMBOL_server_log_queries = 412,       /* server_log_queries  */
1226   YYSYMBOL_server_log_replies = 413,       /* server_log_replies  */
1227   YYSYMBOL_server_log_tag_queryreply = 414, /* server_log_tag_queryreply  */
1228   YYSYMBOL_server_log_servfail = 415,      /* server_log_servfail  */
1229   YYSYMBOL_server_log_local_actions = 416, /* server_log_local_actions  */
1230   YYSYMBOL_server_chroot = 417,            /* server_chroot  */
1231   YYSYMBOL_server_username = 418,          /* server_username  */
1232   YYSYMBOL_server_directory = 419,         /* server_directory  */
1233   YYSYMBOL_server_logfile = 420,           /* server_logfile  */
1234   YYSYMBOL_server_pidfile = 421,           /* server_pidfile  */
1235   YYSYMBOL_server_root_hints = 422,        /* server_root_hints  */
1236   YYSYMBOL_server_dlv_anchor_file = 423,   /* server_dlv_anchor_file  */
1237   YYSYMBOL_server_dlv_anchor = 424,        /* server_dlv_anchor  */
1238   YYSYMBOL_server_auto_trust_anchor_file = 425, /* server_auto_trust_anchor_file  */
1239   YYSYMBOL_server_trust_anchor_file = 426, /* server_trust_anchor_file  */
1240   YYSYMBOL_server_trusted_keys_file = 427, /* server_trusted_keys_file  */
1241   YYSYMBOL_server_trust_anchor = 428,      /* server_trust_anchor  */
1242   YYSYMBOL_server_trust_anchor_signaling = 429, /* server_trust_anchor_signaling  */
1243   YYSYMBOL_server_root_key_sentinel = 430, /* server_root_key_sentinel  */
1244   YYSYMBOL_server_domain_insecure = 431,   /* server_domain_insecure  */
1245   YYSYMBOL_server_hide_identity = 432,     /* server_hide_identity  */
1246   YYSYMBOL_server_hide_version = 433,      /* server_hide_version  */
1247   YYSYMBOL_server_hide_trustanchor = 434,  /* server_hide_trustanchor  */
1248   YYSYMBOL_server_hide_http_user_agent = 435, /* server_hide_http_user_agent  */
1249   YYSYMBOL_server_identity = 436,          /* server_identity  */
1250   YYSYMBOL_server_version = 437,           /* server_version  */
1251   YYSYMBOL_server_http_user_agent = 438,   /* server_http_user_agent  */
1252   YYSYMBOL_server_nsid = 439,              /* server_nsid  */
1253   YYSYMBOL_server_so_rcvbuf = 440,         /* server_so_rcvbuf  */
1254   YYSYMBOL_server_so_sndbuf = 441,         /* server_so_sndbuf  */
1255   YYSYMBOL_server_so_reuseport = 442,      /* server_so_reuseport  */
1256   YYSYMBOL_server_ip_transparent = 443,    /* server_ip_transparent  */
1257   YYSYMBOL_server_ip_freebind = 444,       /* server_ip_freebind  */
1258   YYSYMBOL_server_ip_dscp = 445,           /* server_ip_dscp  */
1259   YYSYMBOL_server_stream_wait_size = 446,  /* server_stream_wait_size  */
1260   YYSYMBOL_server_edns_buffer_size = 447,  /* server_edns_buffer_size  */
1261   YYSYMBOL_server_msg_buffer_size = 448,   /* server_msg_buffer_size  */
1262   YYSYMBOL_server_msg_cache_size = 449,    /* server_msg_cache_size  */
1263   YYSYMBOL_server_msg_cache_slabs = 450,   /* server_msg_cache_slabs  */
1264   YYSYMBOL_server_num_queries_per_thread = 451, /* server_num_queries_per_thread  */
1265   YYSYMBOL_server_jostle_timeout = 452,    /* server_jostle_timeout  */
1266   YYSYMBOL_server_delay_close = 453,       /* server_delay_close  */
1267   YYSYMBOL_server_udp_connect = 454,       /* server_udp_connect  */
1268   YYSYMBOL_server_unblock_lan_zones = 455, /* server_unblock_lan_zones  */
1269   YYSYMBOL_server_insecure_lan_zones = 456, /* server_insecure_lan_zones  */
1270   YYSYMBOL_server_rrset_cache_size = 457,  /* server_rrset_cache_size  */
1271   YYSYMBOL_server_rrset_cache_slabs = 458, /* server_rrset_cache_slabs  */
1272   YYSYMBOL_server_infra_host_ttl = 459,    /* server_infra_host_ttl  */
1273   YYSYMBOL_server_infra_lame_ttl = 460,    /* server_infra_lame_ttl  */
1274   YYSYMBOL_server_infra_cache_numhosts = 461, /* server_infra_cache_numhosts  */
1275   YYSYMBOL_server_infra_cache_lame_size = 462, /* server_infra_cache_lame_size  */
1276   YYSYMBOL_server_infra_cache_slabs = 463, /* server_infra_cache_slabs  */
1277   YYSYMBOL_server_infra_cache_min_rtt = 464, /* server_infra_cache_min_rtt  */
1278   YYSYMBOL_server_infra_keep_probing = 465, /* server_infra_keep_probing  */
1279   YYSYMBOL_server_target_fetch_policy = 466, /* server_target_fetch_policy  */
1280   YYSYMBOL_server_harden_short_bufsize = 467, /* server_harden_short_bufsize  */
1281   YYSYMBOL_server_harden_large_queries = 468, /* server_harden_large_queries  */
1282   YYSYMBOL_server_harden_glue = 469,       /* server_harden_glue  */
1283   YYSYMBOL_server_harden_dnssec_stripped = 470, /* server_harden_dnssec_stripped  */
1284   YYSYMBOL_server_harden_below_nxdomain = 471, /* server_harden_below_nxdomain  */
1285   YYSYMBOL_server_harden_referral_path = 472, /* server_harden_referral_path  */
1286   YYSYMBOL_server_harden_algo_downgrade = 473, /* server_harden_algo_downgrade  */
1287   YYSYMBOL_server_use_caps_for_id = 474,   /* server_use_caps_for_id  */
1288   YYSYMBOL_server_caps_whitelist = 475,    /* server_caps_whitelist  */
1289   YYSYMBOL_server_private_address = 476,   /* server_private_address  */
1290   YYSYMBOL_server_private_domain = 477,    /* server_private_domain  */
1291   YYSYMBOL_server_prefetch = 478,          /* server_prefetch  */
1292   YYSYMBOL_server_prefetch_key = 479,      /* server_prefetch_key  */
1293   YYSYMBOL_server_deny_any = 480,          /* server_deny_any  */
1294   YYSYMBOL_server_unwanted_reply_threshold = 481, /* server_unwanted_reply_threshold  */
1295   YYSYMBOL_server_do_not_query_address = 482, /* server_do_not_query_address  */
1296   YYSYMBOL_server_do_not_query_localhost = 483, /* server_do_not_query_localhost  */
1297   YYSYMBOL_server_access_control = 484,    /* server_access_control  */
1298   YYSYMBOL_server_module_conf = 485,       /* server_module_conf  */
1299   YYSYMBOL_server_val_override_date = 486, /* server_val_override_date  */
1300   YYSYMBOL_server_val_sig_skew_min = 487,  /* server_val_sig_skew_min  */
1301   YYSYMBOL_server_val_sig_skew_max = 488,  /* server_val_sig_skew_max  */
1302   YYSYMBOL_server_val_max_restart = 489,   /* server_val_max_restart  */
1303   YYSYMBOL_server_cache_max_ttl = 490,     /* server_cache_max_ttl  */
1304   YYSYMBOL_server_cache_max_negative_ttl = 491, /* server_cache_max_negative_ttl  */
1305   YYSYMBOL_server_cache_min_ttl = 492,     /* server_cache_min_ttl  */
1306   YYSYMBOL_server_bogus_ttl = 493,         /* server_bogus_ttl  */
1307   YYSYMBOL_server_val_clean_additional = 494, /* server_val_clean_additional  */
1308   YYSYMBOL_server_val_permissive_mode = 495, /* server_val_permissive_mode  */
1309   YYSYMBOL_server_aggressive_nsec = 496,   /* server_aggressive_nsec  */
1310   YYSYMBOL_server_ignore_cd_flag = 497,    /* server_ignore_cd_flag  */
1311   YYSYMBOL_server_serve_expired = 498,     /* server_serve_expired  */
1312   YYSYMBOL_server_serve_expired_ttl = 499, /* server_serve_expired_ttl  */
1313   YYSYMBOL_server_serve_expired_ttl_reset = 500, /* server_serve_expired_ttl_reset  */
1314   YYSYMBOL_server_serve_expired_reply_ttl = 501, /* server_serve_expired_reply_ttl  */
1315   YYSYMBOL_server_serve_expired_client_timeout = 502, /* server_serve_expired_client_timeout  */
1316   YYSYMBOL_server_serve_original_ttl = 503, /* server_serve_original_ttl  */
1317   YYSYMBOL_server_fake_dsa = 504,          /* server_fake_dsa  */
1318   YYSYMBOL_server_fake_sha1 = 505,         /* server_fake_sha1  */
1319   YYSYMBOL_server_val_log_level = 506,     /* server_val_log_level  */
1320   YYSYMBOL_server_val_nsec3_keysize_iterations = 507, /* server_val_nsec3_keysize_iterations  */
1321   YYSYMBOL_server_zonemd_permissive_mode = 508, /* server_zonemd_permissive_mode  */
1322   YYSYMBOL_server_add_holddown = 509,      /* server_add_holddown  */
1323   YYSYMBOL_server_del_holddown = 510,      /* server_del_holddown  */
1324   YYSYMBOL_server_keep_missing = 511,      /* server_keep_missing  */
1325   YYSYMBOL_server_permit_small_holddown = 512, /* server_permit_small_holddown  */
1326   YYSYMBOL_server_key_cache_size = 513,    /* server_key_cache_size  */
1327   YYSYMBOL_server_key_cache_slabs = 514,   /* server_key_cache_slabs  */
1328   YYSYMBOL_server_neg_cache_size = 515,    /* server_neg_cache_size  */
1329   YYSYMBOL_server_local_zone = 516,        /* server_local_zone  */
1330   YYSYMBOL_server_local_data = 517,        /* server_local_data  */
1331   YYSYMBOL_server_local_data_ptr = 518,    /* server_local_data_ptr  */
1332   YYSYMBOL_server_minimal_responses = 519, /* server_minimal_responses  */
1333   YYSYMBOL_server_rrset_roundrobin = 520,  /* server_rrset_roundrobin  */
1334   YYSYMBOL_server_unknown_server_time_limit = 521, /* server_unknown_server_time_limit  */
1335   YYSYMBOL_server_max_udp_size = 522,      /* server_max_udp_size  */
1336   YYSYMBOL_server_dns64_prefix = 523,      /* server_dns64_prefix  */
1337   YYSYMBOL_server_dns64_synthall = 524,    /* server_dns64_synthall  */
1338   YYSYMBOL_server_dns64_ignore_aaaa = 525, /* server_dns64_ignore_aaaa  */
1339   YYSYMBOL_server_define_tag = 526,        /* server_define_tag  */
1340   YYSYMBOL_server_local_zone_tag = 527,    /* server_local_zone_tag  */
1341   YYSYMBOL_server_access_control_tag = 528, /* server_access_control_tag  */
1342   YYSYMBOL_server_access_control_tag_action = 529, /* server_access_control_tag_action  */
1343   YYSYMBOL_server_access_control_tag_data = 530, /* server_access_control_tag_data  */
1344   YYSYMBOL_server_local_zone_override = 531, /* server_local_zone_override  */
1345   YYSYMBOL_server_access_control_view = 532, /* server_access_control_view  */
1346   YYSYMBOL_server_response_ip_tag = 533,   /* server_response_ip_tag  */
1347   YYSYMBOL_server_ip_ratelimit = 534,      /* server_ip_ratelimit  */
1348   YYSYMBOL_server_ratelimit = 535,         /* server_ratelimit  */
1349   YYSYMBOL_server_ip_ratelimit_size = 536, /* server_ip_ratelimit_size  */
1350   YYSYMBOL_server_ratelimit_size = 537,    /* server_ratelimit_size  */
1351   YYSYMBOL_server_ip_ratelimit_slabs = 538, /* server_ip_ratelimit_slabs  */
1352   YYSYMBOL_server_ratelimit_slabs = 539,   /* server_ratelimit_slabs  */
1353   YYSYMBOL_server_ratelimit_for_domain = 540, /* server_ratelimit_for_domain  */
1354   YYSYMBOL_server_ratelimit_below_domain = 541, /* server_ratelimit_below_domain  */
1355   YYSYMBOL_server_ip_ratelimit_factor = 542, /* server_ip_ratelimit_factor  */
1356   YYSYMBOL_server_ratelimit_factor = 543,  /* server_ratelimit_factor  */
1357   YYSYMBOL_server_outbound_msg_retry = 544, /* server_outbound_msg_retry  */
1358   YYSYMBOL_server_low_rtt = 545,           /* server_low_rtt  */
1359   YYSYMBOL_server_fast_server_num = 546,   /* server_fast_server_num  */
1360   YYSYMBOL_server_fast_server_permil = 547, /* server_fast_server_permil  */
1361   YYSYMBOL_server_qname_minimisation = 548, /* server_qname_minimisation  */
1362   YYSYMBOL_server_qname_minimisation_strict = 549, /* server_qname_minimisation_strict  */
1363   YYSYMBOL_server_pad_responses = 550,     /* server_pad_responses  */
1364   YYSYMBOL_server_pad_responses_block_size = 551, /* server_pad_responses_block_size  */
1365   YYSYMBOL_server_pad_queries = 552,       /* server_pad_queries  */
1366   YYSYMBOL_server_pad_queries_block_size = 553, /* server_pad_queries_block_size  */
1367   YYSYMBOL_server_ipsecmod_enabled = 554,  /* server_ipsecmod_enabled  */
1368   YYSYMBOL_server_ipsecmod_ignore_bogus = 555, /* server_ipsecmod_ignore_bogus  */
1369   YYSYMBOL_server_ipsecmod_hook = 556,     /* server_ipsecmod_hook  */
1370   YYSYMBOL_server_ipsecmod_max_ttl = 557,  /* server_ipsecmod_max_ttl  */
1371   YYSYMBOL_server_ipsecmod_whitelist = 558, /* server_ipsecmod_whitelist  */
1372   YYSYMBOL_server_ipsecmod_strict = 559,   /* server_ipsecmod_strict  */
1373   YYSYMBOL_server_edns_client_string = 560, /* server_edns_client_string  */
1374   YYSYMBOL_server_edns_client_string_opcode = 561, /* server_edns_client_string_opcode  */
1375   YYSYMBOL_stub_name = 562,                /* stub_name  */
1376   YYSYMBOL_stub_host = 563,                /* stub_host  */
1377   YYSYMBOL_stub_addr = 564,                /* stub_addr  */
1378   YYSYMBOL_stub_first = 565,               /* stub_first  */
1379   YYSYMBOL_stub_no_cache = 566,            /* stub_no_cache  */
1380   YYSYMBOL_stub_ssl_upstream = 567,        /* stub_ssl_upstream  */
1381   YYSYMBOL_stub_tcp_upstream = 568,        /* stub_tcp_upstream  */
1382   YYSYMBOL_stub_prime = 569,               /* stub_prime  */
1383   YYSYMBOL_forward_name = 570,             /* forward_name  */
1384   YYSYMBOL_forward_host = 571,             /* forward_host  */
1385   YYSYMBOL_forward_addr = 572,             /* forward_addr  */
1386   YYSYMBOL_forward_first = 573,            /* forward_first  */
1387   YYSYMBOL_forward_no_cache = 574,         /* forward_no_cache  */
1388   YYSYMBOL_forward_ssl_upstream = 575,     /* forward_ssl_upstream  */
1389   YYSYMBOL_forward_tcp_upstream = 576,     /* forward_tcp_upstream  */
1390   YYSYMBOL_auth_name = 577,                /* auth_name  */
1391   YYSYMBOL_auth_zonefile = 578,            /* auth_zonefile  */
1392   YYSYMBOL_auth_master = 579,              /* auth_master  */
1393   YYSYMBOL_auth_url = 580,                 /* auth_url  */
1394   YYSYMBOL_auth_allow_notify = 581,        /* auth_allow_notify  */
1395   YYSYMBOL_auth_zonemd_check = 582,        /* auth_zonemd_check  */
1396   YYSYMBOL_auth_zonemd_reject_absence = 583, /* auth_zonemd_reject_absence  */
1397   YYSYMBOL_auth_for_downstream = 584,      /* auth_for_downstream  */
1398   YYSYMBOL_auth_for_upstream = 585,        /* auth_for_upstream  */
1399   YYSYMBOL_auth_fallback_enabled = 586,    /* auth_fallback_enabled  */
1400   YYSYMBOL_view_name = 587,                /* view_name  */
1401   YYSYMBOL_view_local_zone = 588,          /* view_local_zone  */
1402   YYSYMBOL_view_response_ip = 589,         /* view_response_ip  */
1403   YYSYMBOL_view_response_ip_data = 590,    /* view_response_ip_data  */
1404   YYSYMBOL_view_local_data = 591,          /* view_local_data  */
1405   YYSYMBOL_view_local_data_ptr = 592,      /* view_local_data_ptr  */
1406   YYSYMBOL_view_first = 593,               /* view_first  */
1407   YYSYMBOL_rcstart = 594,                  /* rcstart  */
1408   YYSYMBOL_contents_rc = 595,              /* contents_rc  */
1409   YYSYMBOL_content_rc = 596,               /* content_rc  */
1410   YYSYMBOL_rc_control_enable = 597,        /* rc_control_enable  */
1411   YYSYMBOL_rc_control_port = 598,          /* rc_control_port  */
1412   YYSYMBOL_rc_control_interface = 599,     /* rc_control_interface  */
1413   YYSYMBOL_rc_control_use_cert = 600,      /* rc_control_use_cert  */
1414   YYSYMBOL_rc_server_key_file = 601,       /* rc_server_key_file  */
1415   YYSYMBOL_rc_server_cert_file = 602,      /* rc_server_cert_file  */
1416   YYSYMBOL_rc_control_key_file = 603,      /* rc_control_key_file  */
1417   YYSYMBOL_rc_control_cert_file = 604,     /* rc_control_cert_file  */
1418   YYSYMBOL_dtstart = 605,                  /* dtstart  */
1419   YYSYMBOL_contents_dt = 606,              /* contents_dt  */
1420   YYSYMBOL_content_dt = 607,               /* content_dt  */
1421   YYSYMBOL_dt_dnstap_enable = 608,         /* dt_dnstap_enable  */
1422   YYSYMBOL_dt_dnstap_bidirectional = 609,  /* dt_dnstap_bidirectional  */
1423   YYSYMBOL_dt_dnstap_socket_path = 610,    /* dt_dnstap_socket_path  */
1424   YYSYMBOL_dt_dnstap_ip = 611,             /* dt_dnstap_ip  */
1425   YYSYMBOL_dt_dnstap_tls = 612,            /* dt_dnstap_tls  */
1426   YYSYMBOL_dt_dnstap_tls_server_name = 613, /* dt_dnstap_tls_server_name  */
1427   YYSYMBOL_dt_dnstap_tls_cert_bundle = 614, /* dt_dnstap_tls_cert_bundle  */
1428   YYSYMBOL_dt_dnstap_tls_client_key_file = 615, /* dt_dnstap_tls_client_key_file  */
1429   YYSYMBOL_dt_dnstap_tls_client_cert_file = 616, /* dt_dnstap_tls_client_cert_file  */
1430   YYSYMBOL_dt_dnstap_send_identity = 617,  /* dt_dnstap_send_identity  */
1431   YYSYMBOL_dt_dnstap_send_version = 618,   /* dt_dnstap_send_version  */
1432   YYSYMBOL_dt_dnstap_identity = 619,       /* dt_dnstap_identity  */
1433   YYSYMBOL_dt_dnstap_version = 620,        /* dt_dnstap_version  */
1434   YYSYMBOL_dt_dnstap_log_resolver_query_messages = 621, /* dt_dnstap_log_resolver_query_messages  */
1435   YYSYMBOL_dt_dnstap_log_resolver_response_messages = 622, /* dt_dnstap_log_resolver_response_messages  */
1436   YYSYMBOL_dt_dnstap_log_client_query_messages = 623, /* dt_dnstap_log_client_query_messages  */
1437   YYSYMBOL_dt_dnstap_log_client_response_messages = 624, /* dt_dnstap_log_client_response_messages  */
1438   YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 625, /* dt_dnstap_log_forwarder_query_messages  */
1439   YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 626, /* dt_dnstap_log_forwarder_response_messages  */
1440   YYSYMBOL_pythonstart = 627,              /* pythonstart  */
1441   YYSYMBOL_contents_py = 628,              /* contents_py  */
1442   YYSYMBOL_content_py = 629,               /* content_py  */
1443   YYSYMBOL_py_script = 630,                /* py_script  */
1444   YYSYMBOL_dynlibstart = 631,              /* dynlibstart  */
1445   YYSYMBOL_contents_dl = 632,              /* contents_dl  */
1446   YYSYMBOL_content_dl = 633,               /* content_dl  */
1447   YYSYMBOL_dl_file = 634,                  /* dl_file  */
1448   YYSYMBOL_server_disable_dnssec_lame_check = 635, /* server_disable_dnssec_lame_check  */
1449   YYSYMBOL_server_log_identity = 636,      /* server_log_identity  */
1450   YYSYMBOL_server_response_ip = 637,       /* server_response_ip  */
1451   YYSYMBOL_server_response_ip_data = 638,  /* server_response_ip_data  */
1452   YYSYMBOL_dnscstart = 639,                /* dnscstart  */
1453   YYSYMBOL_contents_dnsc = 640,            /* contents_dnsc  */
1454   YYSYMBOL_content_dnsc = 641,             /* content_dnsc  */
1455   YYSYMBOL_dnsc_dnscrypt_enable = 642,     /* dnsc_dnscrypt_enable  */
1456   YYSYMBOL_dnsc_dnscrypt_port = 643,       /* dnsc_dnscrypt_port  */
1457   YYSYMBOL_dnsc_dnscrypt_provider = 644,   /* dnsc_dnscrypt_provider  */
1458   YYSYMBOL_dnsc_dnscrypt_provider_cert = 645, /* dnsc_dnscrypt_provider_cert  */
1459   YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 646, /* dnsc_dnscrypt_provider_cert_rotated  */
1460   YYSYMBOL_dnsc_dnscrypt_secret_key = 647, /* dnsc_dnscrypt_secret_key  */
1461   YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 648, /* dnsc_dnscrypt_shared_secret_cache_size  */
1462   YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 649, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
1463   YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 650, /* dnsc_dnscrypt_nonce_cache_size  */
1464   YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 651, /* dnsc_dnscrypt_nonce_cache_slabs  */
1465   YYSYMBOL_cachedbstart = 652,             /* cachedbstart  */
1466   YYSYMBOL_contents_cachedb = 653,         /* contents_cachedb  */
1467   YYSYMBOL_content_cachedb = 654,          /* content_cachedb  */
1468   YYSYMBOL_cachedb_backend_name = 655,     /* cachedb_backend_name  */
1469   YYSYMBOL_cachedb_secret_seed = 656,      /* cachedb_secret_seed  */
1470   YYSYMBOL_redis_server_host = 657,        /* redis_server_host  */
1471   YYSYMBOL_redis_server_port = 658,        /* redis_server_port  */
1472   YYSYMBOL_redis_timeout = 659,            /* redis_timeout  */
1473   YYSYMBOL_redis_expire_records = 660,     /* redis_expire_records  */
1474   YYSYMBOL_server_tcp_connection_limit = 661, /* server_tcp_connection_limit  */
1475   YYSYMBOL_ipsetstart = 662,               /* ipsetstart  */
1476   YYSYMBOL_contents_ipset = 663,           /* contents_ipset  */
1477   YYSYMBOL_content_ipset = 664,            /* content_ipset  */
1478   YYSYMBOL_ipset_name_v4 = 665,            /* ipset_name_v4  */
1479   YYSYMBOL_ipset_name_v6 = 666             /* ipset_name_v6  */
1480 };
1481 typedef enum yysymbol_kind_t yysymbol_kind_t;
1482 
1483 
1484 
1485 
1486 #ifdef short
1487 # undef short
1488 #endif
1489 
1490 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
1491    <limits.h> and (if available) <stdint.h> are included
1492    so that the code can choose integer types of a good width.  */
1493 
1494 #ifndef __PTRDIFF_MAX__
1495 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
1496 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1497 #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
1498 #  define YY_STDINT_H
1499 # endif
1500 #endif
1501 
1502 /* Narrow types that promote to a signed type and that can represent a
1503    signed or unsigned integer of at least N bits.  In tables they can
1504    save space and decrease cache pressure.  Promoting to a signed type
1505    helps avoid bugs in integer arithmetic.  */
1506 
1507 #ifdef __INT_LEAST8_MAX__
1508 typedef __INT_LEAST8_TYPE__ yytype_int8;
1509 #elif defined YY_STDINT_H
1510 typedef int_least8_t yytype_int8;
1511 #else
1512 typedef signed char yytype_int8;
1513 #endif
1514 
1515 #ifdef __INT_LEAST16_MAX__
1516 typedef __INT_LEAST16_TYPE__ yytype_int16;
1517 #elif defined YY_STDINT_H
1518 typedef int_least16_t yytype_int16;
1519 #else
1520 typedef short yytype_int16;
1521 #endif
1522 
1523 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1524 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
1525 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1526        && UINT_LEAST8_MAX <= INT_MAX)
1527 typedef uint_least8_t yytype_uint8;
1528 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1529 typedef unsigned char yytype_uint8;
1530 #else
1531 typedef short yytype_uint8;
1532 #endif
1533 
1534 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1535 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
1536 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1537        && UINT_LEAST16_MAX <= INT_MAX)
1538 typedef uint_least16_t yytype_uint16;
1539 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1540 typedef unsigned short yytype_uint16;
1541 #else
1542 typedef int yytype_uint16;
1543 #endif
1544 
1545 #ifndef YYPTRDIFF_T
1546 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1547 #  define YYPTRDIFF_T __PTRDIFF_TYPE__
1548 #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1549 # elif defined PTRDIFF_MAX
1550 #  ifndef ptrdiff_t
1551 #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1552 #  endif
1553 #  define YYPTRDIFF_T ptrdiff_t
1554 #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1555 # else
1556 #  define YYPTRDIFF_T long
1557 #  define YYPTRDIFF_MAXIMUM LONG_MAX
1558 # endif
1559 #endif
1560 
1561 #ifndef YYSIZE_T
1562 # ifdef __SIZE_TYPE__
1563 #  define YYSIZE_T __SIZE_TYPE__
1564 # elif defined size_t
1565 #  define YYSIZE_T size_t
1566 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1567 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1568 #  define YYSIZE_T size_t
1569 # else
1570 #  define YYSIZE_T unsigned
1571 # endif
1572 #endif
1573 
1574 #define YYSIZE_MAXIMUM                                  \
1575   YY_CAST (YYPTRDIFF_T,                                 \
1576            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
1577             ? YYPTRDIFF_MAXIMUM                         \
1578             : YY_CAST (YYSIZE_T, -1)))
1579 
1580 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1581 
1582 
1583 /* Stored state numbers (used for stacks). */
1584 typedef yytype_int16 yy_state_t;
1585 
1586 /* State numbers in computations.  */
1587 typedef int yy_state_fast_t;
1588 
1589 #ifndef YY_
1590 # if defined YYENABLE_NLS && YYENABLE_NLS
1591 #  if ENABLE_NLS
1592 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1593 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1594 #  endif
1595 # endif
1596 # ifndef YY_
1597 #  define YY_(Msgid) Msgid
1598 # endif
1599 #endif
1600 
1601 
1602 #ifndef YY_ATTRIBUTE_PURE
1603 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1604 #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1605 # else
1606 #  define YY_ATTRIBUTE_PURE
1607 # endif
1608 #endif
1609 
1610 #ifndef YY_ATTRIBUTE_UNUSED
1611 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1612 #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1613 # else
1614 #  define YY_ATTRIBUTE_UNUSED
1615 # endif
1616 #endif
1617 
1618 /* Suppress unused-variable warnings by "using" E.  */
1619 #if ! defined lint || defined __GNUC__
1620 # define YYUSE(E) ((void) (E))
1621 #else
1622 # define YYUSE(E) /* empty */
1623 #endif
1624 
1625 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1626 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
1627 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
1628     _Pragma ("GCC diagnostic push")                                     \
1629     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
1630     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1631 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
1632     _Pragma ("GCC diagnostic pop")
1633 #else
1634 # define YY_INITIAL_VALUE(Value) Value
1635 #endif
1636 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1637 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1638 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1639 #endif
1640 #ifndef YY_INITIAL_VALUE
1641 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1642 #endif
1643 
1644 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1645 # define YY_IGNORE_USELESS_CAST_BEGIN                          \
1646     _Pragma ("GCC diagnostic push")                            \
1647     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1648 # define YY_IGNORE_USELESS_CAST_END            \
1649     _Pragma ("GCC diagnostic pop")
1650 #endif
1651 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1652 # define YY_IGNORE_USELESS_CAST_BEGIN
1653 # define YY_IGNORE_USELESS_CAST_END
1654 #endif
1655 
1656 
1657 #define YY_ASSERT(E) ((void) (0 && (E)))
1658 
1659 #if !defined yyoverflow
1660 
1661 /* The parser invokes alloca or malloc; define the necessary symbols.  */
1662 
1663 # ifdef YYSTACK_USE_ALLOCA
1664 #  if YYSTACK_USE_ALLOCA
1665 #   ifdef __GNUC__
1666 #    define YYSTACK_ALLOC __builtin_alloca
1667 #   elif defined __BUILTIN_VA_ARG_INCR
1668 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1669 #   elif defined _AIX
1670 #    define YYSTACK_ALLOC __alloca
1671 #   elif defined _MSC_VER
1672 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1673 #    define alloca _alloca
1674 #   else
1675 #    define YYSTACK_ALLOC alloca
1676 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1677 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1678       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
1679 #     ifndef EXIT_SUCCESS
1680 #      define EXIT_SUCCESS 0
1681 #     endif
1682 #    endif
1683 #   endif
1684 #  endif
1685 # endif
1686 
1687 # ifdef YYSTACK_ALLOC
1688    /* Pacify GCC's 'empty if-body' warning.  */
1689 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1690 #  ifndef YYSTACK_ALLOC_MAXIMUM
1691     /* The OS might guarantee only one guard page at the bottom of the stack,
1692        and a page size can be as small as 4096 bytes.  So we cannot safely
1693        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1694        to allow for a few compiler-allocated temporary stack slots.  */
1695 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1696 #  endif
1697 # else
1698 #  define YYSTACK_ALLOC YYMALLOC
1699 #  define YYSTACK_FREE YYFREE
1700 #  ifndef YYSTACK_ALLOC_MAXIMUM
1701 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1702 #  endif
1703 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1704        && ! ((defined YYMALLOC || defined malloc) \
1705              && (defined YYFREE || defined free)))
1706 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1707 #   ifndef EXIT_SUCCESS
1708 #    define EXIT_SUCCESS 0
1709 #   endif
1710 #  endif
1711 #  ifndef YYMALLOC
1712 #   define YYMALLOC malloc
1713 #   if ! defined malloc && ! defined EXIT_SUCCESS
1714 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1715 #   endif
1716 #  endif
1717 #  ifndef YYFREE
1718 #   define YYFREE free
1719 #   if ! defined free && ! defined EXIT_SUCCESS
1720 void free (void *); /* INFRINGES ON USER NAME SPACE */
1721 #   endif
1722 #  endif
1723 # endif
1724 #endif /* !defined yyoverflow */
1725 
1726 #if (! defined yyoverflow \
1727      && (! defined __cplusplus \
1728          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1729 
1730 /* A type that is properly aligned for any stack member.  */
1731 union yyalloc
1732 {
1733   yy_state_t yyss_alloc;
1734   YYSTYPE yyvs_alloc;
1735 };
1736 
1737 /* The size of the maximum gap between one aligned stack and the next.  */
1738 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1739 
1740 /* The size of an array large to enough to hold all stacks, each with
1741    N elements.  */
1742 # define YYSTACK_BYTES(N) \
1743      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1744       + YYSTACK_GAP_MAXIMUM)
1745 
1746 # define YYCOPY_NEEDED 1
1747 
1748 /* Relocate STACK from its old location to the new one.  The
1749    local variables YYSIZE and YYSTACKSIZE give the old and new number of
1750    elements in the stack, and YYPTR gives the new location of the
1751    stack.  Advance YYPTR to a properly aligned location for the next
1752    stack.  */
1753 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
1754     do                                                                  \
1755       {                                                                 \
1756         YYPTRDIFF_T yynewbytes;                                         \
1757         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
1758         Stack = &yyptr->Stack_alloc;                                    \
1759         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1760         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
1761       }                                                                 \
1762     while (0)
1763 
1764 #endif
1765 
1766 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1767 /* Copy COUNT objects from SRC to DST.  The source and destination do
1768    not overlap.  */
1769 # ifndef YYCOPY
1770 #  if defined __GNUC__ && 1 < __GNUC__
1771 #   define YYCOPY(Dst, Src, Count) \
1772       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1773 #  else
1774 #   define YYCOPY(Dst, Src, Count)              \
1775       do                                        \
1776         {                                       \
1777           YYPTRDIFF_T yyi;                      \
1778           for (yyi = 0; yyi < (Count); yyi++)   \
1779             (Dst)[yyi] = (Src)[yyi];            \
1780         }                                       \
1781       while (0)
1782 #  endif
1783 # endif
1784 #endif /* !YYCOPY_NEEDED */
1785 
1786 /* YYFINAL -- State number of the termination state.  */
1787 #define YYFINAL  2
1788 /* YYLAST -- Last index in YYTABLE.  */
1789 #define YYLAST   678
1790 
1791 /* YYNTOKENS -- Number of terminals.  */
1792 #define YYNTOKENS  321
1793 /* YYNNTS -- Number of nonterminals.  */
1794 #define YYNNTS  346
1795 /* YYNRULES -- Number of rules.  */
1796 #define YYNRULES  668
1797 /* YYNSTATES -- Number of states.  */
1798 #define YYNSTATES  993
1799 
1800 #define YYMAXUTOK   575
1801 
1802 
1803 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1804    as returned by yylex, with out-of-bounds checking.  */
1805 #define YYTRANSLATE(YYX)                                \
1806   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
1807    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
1808    : YYSYMBOL_YYUNDEF)
1809 
1810 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1811    as returned by yylex.  */
1812 static const yytype_int16 yytranslate[] =
1813 {
1814        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1815        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1816        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1817        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1818        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1819        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1820        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1821        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1822        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1823        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1824        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1825        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1826        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1827        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1828        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1829        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1830        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1831        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1832        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1833        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1834        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1835        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1836        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1837        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1838        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1839        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1840        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1841       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1842       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1843       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1844       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1845       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1846       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1847       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1848       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1849       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1850      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1851      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1852      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
1853      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
1854      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
1855      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1856      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1857      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1858      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1859      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1860      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1861      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1862      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1863      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1864      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1865      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1866      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1867      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1868      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1869      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1870      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1871      315,   316,   317,   318,   319,   320
1872 };
1873 
1874 #if YYDEBUG
1875   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1876 static const yytype_int16 yyrline[] =
1877 {
1878        0,   192,   192,   192,   193,   193,   194,   194,   195,   195,
1879      195,   196,   196,   197,   197,   198,   198,   199,   201,   207,
1880      212,   213,   214,   214,   214,   215,   215,   216,   216,   216,
1881      217,   217,   218,   218,   218,   219,   219,   220,   220,   220,
1882      221,   221,   221,   222,   222,   223,   223,   224,   224,   225,
1883      225,   226,   226,   227,   227,   228,   228,   229,   229,   230,
1884      230,   230,   231,   231,   232,   232,   232,   233,   233,   233,
1885      234,   234,   235,   235,   236,   236,   237,   237,   238,   238,
1886      238,   239,   239,   240,   240,   241,   241,   241,   242,   242,
1887      243,   243,   244,   244,   245,   245,   245,   246,   246,   247,
1888      247,   248,   248,   249,   249,   250,   250,   251,   251,   252,
1889      252,   253,   253,   254,   254,   254,   255,   255,   255,   256,
1890      256,   256,   257,   257,   257,   257,   258,   259,   259,   259,
1891      260,   260,   260,   261,   261,   262,   262,   263,   263,   263,
1892      264,   264,   264,   265,   265,   266,   266,   266,   267,   267,
1893      268,   268,   268,   269,   269,   270,   270,   271,   271,   272,
1894      273,   273,   274,   274,   275,   275,   276,   276,   277,   277,
1895      278,   278,   279,   279,   280,   280,   281,   281,   282,   282,
1896      282,   283,   283,   284,   284,   285,   285,   286,   287,   287,
1897      288,   288,   289,   290,   290,   291,   291,   292,   292,   293,
1898      293,   294,   294,   294,   295,   295,   295,   296,   296,   297,
1899      298,   298,   299,   299,   300,   300,   301,   301,   302,   302,
1900      302,   303,   303,   303,   304,   304,   304,   305,   305,   306,
1901      306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
1902      311,   314,   327,   328,   329,   329,   329,   329,   329,   330,
1903      330,   330,   332,   345,   346,   347,   347,   347,   347,   348,
1904      348,   348,   350,   365,   366,   367,   367,   367,   367,   368,
1905      368,   368,   370,   390,   391,   392,   392,   392,   392,   393,
1906      393,   393,   394,   394,   394,   397,   416,   433,   441,   451,
1907      459,   477,   478,   479,   479,   479,   479,   479,   480,   480,
1908      480,   481,   481,   483,   492,   501,   512,   521,   530,   539,
1909      550,   559,   571,   585,   600,   611,   628,   645,   662,   679,
1910      694,   709,   722,   737,   746,   755,   764,   773,   782,   791,
1911      800,   809,   818,   827,   836,   845,   854,   863,   876,   887,
1912      898,   909,   918,   931,   940,   949,   958,   965,   972,   981,
1913      988,   997,  1005,  1012,  1019,  1027,  1036,  1044,  1060,  1068,
1914     1076,  1084,  1092,  1100,  1109,  1118,  1132,  1141,  1150,  1159,
1915     1168,  1177,  1186,  1193,  1200,  1226,  1234,  1241,  1248,  1255,
1916     1262,  1270,  1278,  1286,  1293,  1304,  1315,  1322,  1331,  1340,
1917     1349,  1358,  1365,  1372,  1379,  1395,  1403,  1411,  1421,  1431,
1918     1441,  1455,  1463,  1476,  1487,  1495,  1508,  1517,  1526,  1535,
1919     1544,  1554,  1564,  1572,  1585,  1594,  1602,  1611,  1619,  1632,
1920     1641,  1651,  1658,  1668,  1678,  1688,  1698,  1708,  1718,  1728,
1921     1738,  1745,  1752,  1759,  1768,  1777,  1786,  1795,  1802,  1812,
1922     1832,  1839,  1857,  1870,  1883,  1896,  1905,  1914,  1923,  1932,
1923     1942,  1952,  1963,  1972,  1981,  1990,  1999,  2008,  2017,  2026,
1924     2039,  2052,  2061,  2068,  2077,  2086,  2095,  2104,  2113,  2121,
1925     2134,  2142,  2187,  2194,  2209,  2219,  2229,  2236,  2243,  2250,
1926     2259,  2267,  2281,  2302,  2323,  2335,  2347,  2359,  2368,  2389,
1927     2398,  2407,  2415,  2423,  2436,  2449,  2464,  2479,  2488,  2497,
1928     2506,  2512,  2521,  2530,  2540,  2550,  2560,  2569,  2579,  2588,
1929     2601,  2614,  2626,  2640,  2652,  2666,  2675,  2687,  2697,  2704,
1930     2711,  2720,  2729,  2739,  2749,  2759,  2769,  2776,  2783,  2792,
1931     2801,  2811,  2821,  2831,  2838,  2845,  2852,  2860,  2870,  2880,
1932     2890,  2900,  2910,  2920,  2966,  2976,  2984,  2992,  3007,  3016,
1933     3021,  3022,  3023,  3023,  3023,  3024,  3024,  3024,  3025,  3025,
1934     3027,  3037,  3046,  3053,  3060,  3067,  3074,  3081,  3088,  3093,
1935     3094,  3095,  3095,  3095,  3096,  3096,  3096,  3097,  3098,  3098,
1936     3099,  3099,  3100,  3100,  3101,  3102,  3103,  3104,  3105,  3106,
1937     3108,  3117,  3127,  3134,  3141,  3150,  3157,  3164,  3171,  3178,
1938     3187,  3196,  3203,  3210,  3220,  3230,  3240,  3250,  3260,  3270,
1939     3275,  3276,  3277,  3279,  3285,  3290,  3291,  3292,  3294,  3300,
1940     3310,  3317,  3326,  3334,  3339,  3340,  3342,  3342,  3342,  3343,
1941     3343,  3344,  3345,  3346,  3347,  3348,  3350,  3360,  3369,  3376,
1942     3385,  3392,  3401,  3409,  3422,  3430,  3443,  3448,  3449,  3450,
1943     3450,  3451,  3451,  3451,  3452,  3454,  3466,  3478,  3490,  3505,
1944     3518,  3531,  3542,  3547,  3548,  3549,  3549,  3551,  3566
1945 };
1946 #endif
1947 
1948 /** Accessing symbol of state STATE.  */
1949 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1950 
1951 #if YYDEBUG || 0
1952 /* The user-facing name of the symbol whose (internal) number is
1953    YYSYMBOL.  No bounds checking.  */
1954 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1955 
1956 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1957    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1958 static const char *const yytname[] =
1959 {
1960   "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER",
1961   "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG",
1962   "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS",
1963   "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4",
1964   "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP",
1965   "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT",
1966   "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT",
1967   "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1968   "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1969   "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1970   "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1971   "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1972   "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1973   "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1974   "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1975   "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1976   "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1977   "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1978   "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1979   "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1980   "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1981   "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1982   "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1983   "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1984   "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1985   "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1986   "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1987   "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1988   "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1989   "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1990   "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1991   "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1992   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1993   "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1994   "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1995   "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1996   "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1997   "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1998   "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1999   "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
2000   "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
2001   "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
2002   "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
2003   "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
2004   "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
2005   "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
2006   "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
2007   "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
2008   "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
2009   "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
2010   "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
2011   "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
2012   "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
2013   "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
2014   "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
2015   "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX",
2016   "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP",
2017   "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
2018   "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
2019   "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
2020   "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
2021   "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
2022   "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
2023   "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
2024   "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
2025   "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
2026   "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
2027   "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
2028   "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG",
2029   "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE",
2030   "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK",
2031   "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE",
2032   "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE",
2033   "VAR_OUTBOUND_MSG_RETRY", "VAR_RATELIMIT_FOR_DOMAIN",
2034   "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_IP_RATELIMIT_FACTOR",
2035   "VAR_RATELIMIT_FACTOR", "VAR_SEND_CLIENT_SUBNET",
2036   "VAR_CLIENT_SUBNET_ZONE", "VAR_CLIENT_SUBNET_ALWAYS_FORWARD",
2037   "VAR_CLIENT_SUBNET_OPCODE", "VAR_MAX_CLIENT_SUBNET_IPV4",
2038   "VAR_MAX_CLIENT_SUBNET_IPV6", "VAR_MIN_CLIENT_SUBNET_IPV4",
2039   "VAR_MIN_CLIENT_SUBNET_IPV6", "VAR_MAX_ECS_TREE_SIZE_IPV4",
2040   "VAR_MAX_ECS_TREE_SIZE_IPV6", "VAR_CAPS_WHITELIST",
2041   "VAR_CACHE_MAX_NEGATIVE_TTL", "VAR_PERMIT_SMALL_HOLDDOWN",
2042   "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
2043   "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
2044   "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
2045   "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
2046   "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
2047   "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
2048   "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
2049   "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_SERVE_ORIGINAL_TTL",
2050   "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY",
2051   "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
2052   "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
2053   "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
2054   "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
2055   "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
2056   "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
2057   "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
2058   "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
2059   "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
2060   "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
2061   "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
2062   "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
2063   "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
2064   "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
2065   "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
2066   "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT",
2067   "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM",
2068   "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER",
2069   "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED",
2070   "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL",
2071   "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY",
2072   "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE",
2073   "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY",
2074   "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY",
2075   "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES",
2076   "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6",
2077   "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS",
2078   "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG",
2079   "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
2080   "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
2081   "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
2082   "VAR_ZONEMD_REJECT_ABSENCE", "$accept", "toplevelvars", "toplevelvar",
2083   "force_toplevel", "serverstart", "contents_server", "content_server",
2084   "stubstart", "contents_stub", "content_stub", "forwardstart",
2085   "contents_forward", "content_forward", "viewstart", "contents_view",
2086   "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag",
2087   "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name",
2088   "rpzstart", "contents_rpz", "content_rpz", "server_num_threads",
2089   "server_verbosity", "server_statistics_interval",
2090   "server_statistics_cumulative", "server_extended_statistics",
2091   "server_shm_enable", "server_shm_key", "server_port",
2092   "server_send_client_subnet", "server_client_subnet_zone",
2093   "server_client_subnet_always_forward", "server_client_subnet_opcode",
2094   "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
2095   "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
2096   "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
2097   "server_interface", "server_outgoing_interface", "server_outgoing_range",
2098   "server_outgoing_port_permit", "server_outgoing_port_avoid",
2099   "server_outgoing_num_tcp", "server_incoming_num_tcp",
2100   "server_interface_automatic", "server_do_ip4", "server_do_ip6",
2101   "server_do_udp", "server_do_tcp", "server_prefer_ip4",
2102   "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss",
2103   "server_tcp_idle_timeout", "server_max_reuse_tcp_queries",
2104   "server_tcp_reuse_timeout", "server_tcp_auth_query_timeout",
2105   "server_tcp_keepalive", "server_tcp_keepalive_timeout",
2106   "server_tcp_upstream", "server_udp_upstream_without_downstream",
2107   "server_ssl_upstream", "server_ssl_service_key",
2108   "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
2109   "server_tls_win_cert", "server_tls_additional_port",
2110   "server_tls_ciphers", "server_tls_ciphersuites",
2111   "server_tls_session_ticket_keys", "server_tls_use_sni",
2112   "server_https_port", "server_http_endpoint", "server_http_max_streams",
2113   "server_http_query_buffer_size", "server_http_response_buffer_size",
2114   "server_http_nodelay", "server_http_notls_downstream",
2115   "server_use_systemd", "server_do_daemonize", "server_use_syslog",
2116   "server_log_time_ascii", "server_log_queries", "server_log_replies",
2117   "server_log_tag_queryreply", "server_log_servfail",
2118   "server_log_local_actions", "server_chroot", "server_username",
2119   "server_directory", "server_logfile", "server_pidfile",
2120   "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
2121   "server_auto_trust_anchor_file", "server_trust_anchor_file",
2122   "server_trusted_keys_file", "server_trust_anchor",
2123   "server_trust_anchor_signaling", "server_root_key_sentinel",
2124   "server_domain_insecure", "server_hide_identity", "server_hide_version",
2125   "server_hide_trustanchor", "server_hide_http_user_agent",
2126   "server_identity", "server_version", "server_http_user_agent",
2127   "server_nsid", "server_so_rcvbuf", "server_so_sndbuf",
2128   "server_so_reuseport", "server_ip_transparent", "server_ip_freebind",
2129   "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size",
2130   "server_msg_buffer_size", "server_msg_cache_size",
2131   "server_msg_cache_slabs", "server_num_queries_per_thread",
2132   "server_jostle_timeout", "server_delay_close", "server_udp_connect",
2133   "server_unblock_lan_zones", "server_insecure_lan_zones",
2134   "server_rrset_cache_size", "server_rrset_cache_slabs",
2135   "server_infra_host_ttl", "server_infra_lame_ttl",
2136   "server_infra_cache_numhosts", "server_infra_cache_lame_size",
2137   "server_infra_cache_slabs", "server_infra_cache_min_rtt",
2138   "server_infra_keep_probing", "server_target_fetch_policy",
2139   "server_harden_short_bufsize", "server_harden_large_queries",
2140   "server_harden_glue", "server_harden_dnssec_stripped",
2141   "server_harden_below_nxdomain", "server_harden_referral_path",
2142   "server_harden_algo_downgrade", "server_use_caps_for_id",
2143   "server_caps_whitelist", "server_private_address",
2144   "server_private_domain", "server_prefetch", "server_prefetch_key",
2145   "server_deny_any", "server_unwanted_reply_threshold",
2146   "server_do_not_query_address", "server_do_not_query_localhost",
2147   "server_access_control", "server_module_conf",
2148   "server_val_override_date", "server_val_sig_skew_min",
2149   "server_val_sig_skew_max", "server_val_max_restart",
2150   "server_cache_max_ttl", "server_cache_max_negative_ttl",
2151   "server_cache_min_ttl", "server_bogus_ttl",
2152   "server_val_clean_additional", "server_val_permissive_mode",
2153   "server_aggressive_nsec", "server_ignore_cd_flag",
2154   "server_serve_expired", "server_serve_expired_ttl",
2155   "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
2156   "server_serve_expired_client_timeout", "server_serve_original_ttl",
2157   "server_fake_dsa", "server_fake_sha1", "server_val_log_level",
2158   "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode",
2159   "server_add_holddown", "server_del_holddown", "server_keep_missing",
2160   "server_permit_small_holddown", "server_key_cache_size",
2161   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
2162   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
2163   "server_rrset_roundrobin", "server_unknown_server_time_limit",
2164   "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall",
2165   "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag",
2166   "server_access_control_tag", "server_access_control_tag_action",
2167   "server_access_control_tag_data", "server_local_zone_override",
2168   "server_access_control_view", "server_response_ip_tag",
2169   "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size",
2170   "server_ratelimit_size", "server_ip_ratelimit_slabs",
2171   "server_ratelimit_slabs", "server_ratelimit_for_domain",
2172   "server_ratelimit_below_domain", "server_ip_ratelimit_factor",
2173   "server_ratelimit_factor", "server_outbound_msg_retry", "server_low_rtt",
2174   "server_fast_server_num", "server_fast_server_permil",
2175   "server_qname_minimisation", "server_qname_minimisation_strict",
2176   "server_pad_responses", "server_pad_responses_block_size",
2177   "server_pad_queries", "server_pad_queries_block_size",
2178   "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus",
2179   "server_ipsecmod_hook", "server_ipsecmod_max_ttl",
2180   "server_ipsecmod_whitelist", "server_ipsecmod_strict",
2181   "server_edns_client_string", "server_edns_client_string_opcode",
2182   "stub_name", "stub_host", "stub_addr", "stub_first", "stub_no_cache",
2183   "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name",
2184   "forward_host", "forward_addr", "forward_first", "forward_no_cache",
2185   "forward_ssl_upstream", "forward_tcp_upstream", "auth_name",
2186   "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
2187   "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream",
2188   "auth_for_upstream", "auth_fallback_enabled", "view_name",
2189   "view_local_zone", "view_response_ip", "view_response_ip_data",
2190   "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
2191   "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
2192   "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
2193   "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
2194   "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
2195   "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
2196   "dt_dnstap_tls", "dt_dnstap_tls_server_name",
2197   "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
2198   "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
2199   "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
2200   "dt_dnstap_log_resolver_query_messages",
2201   "dt_dnstap_log_resolver_response_messages",
2202   "dt_dnstap_log_client_query_messages",
2203   "dt_dnstap_log_client_response_messages",
2204   "dt_dnstap_log_forwarder_query_messages",
2205   "dt_dnstap_log_forwarder_response_messages", "pythonstart",
2206   "contents_py", "content_py", "py_script", "dynlibstart", "contents_dl",
2207   "content_dl", "dl_file", "server_disable_dnssec_lame_check",
2208   "server_log_identity", "server_response_ip", "server_response_ip_data",
2209   "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
2210   "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
2211   "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
2212   "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
2213   "dnsc_dnscrypt_shared_secret_cache_slabs",
2214   "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
2215   "cachedbstart", "contents_cachedb", "content_cachedb",
2216   "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host",
2217   "redis_server_port", "redis_timeout", "redis_expire_records",
2218   "server_tcp_connection_limit", "ipsetstart", "contents_ipset",
2219   "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
2220 };
2221 
2222 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)2223 yysymbol_name (yysymbol_kind_t yysymbol)
2224 {
2225   return yytname[yysymbol];
2226 }
2227 #endif
2228 
2229 #ifdef YYPRINT
2230 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
2231    (internal) symbol number NUM (which must be that of a token).  */
2232 static const yytype_int16 yytoknum[] =
2233 {
2234        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
2235      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
2236      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
2237      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
2238      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
2239      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
2240      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
2241      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
2242      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
2243      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
2244      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
2245      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
2246      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
2247      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
2248      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
2249      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
2250      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
2251      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
2252      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
2253      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2254      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2255      465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
2256      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
2257      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
2258      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
2259      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
2260      515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
2261      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
2262      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
2263      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
2264      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
2265      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
2266      575
2267 };
2268 #endif
2269 
2270 #define YYPACT_NINF (-305)
2271 
2272 #define yypact_value_is_default(Yyn) \
2273   ((Yyn) == YYPACT_NINF)
2274 
2275 #define YYTABLE_NINF (-1)
2276 
2277 #define yytable_value_is_error(Yyn) \
2278   0
2279 
2280   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2281      STATE-NUM.  */
2282 static const yytype_int16 yypact[] =
2283 {
2284     -305,     0,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2285     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2286     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2287     -305,  -305,   301,   -43,   -38,   -42,   -44,   -28,   -29,  -151,
2288     -109,  -304,  -197,  -195,  -296,     3,     4,    27,    28,    31,
2289       32,    33,    34,    35,    37,    38,    39,    40,    41,    53,
2290       54,    55,    72,    73,    74,    75,    76,    77,    78,    79,
2291       80,    81,    82,    83,    84,    85,    87,    88,    89,    91,
2292       92,    95,    97,    98,   100,   101,   103,   105,   106,   107,
2293      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
2294      118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
2295      128,   129,   130,   131,   132,   133,   134,   135,   136,   139,
2296      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
2297      150,   151,   152,   153,   154,   155,   156,   157,   159,   160,
2298      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
2299      171,   172,   173,   174,   175,   176,   177,   179,   180,   181,
2300      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
2301      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
2302      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
2303      212,   213,   214,   215,   216,   217,   219,   220,   221,   222,
2304      223,   225,   231,   232,   233,   234,   235,   237,   238,   240,
2305      246,   247,   248,   249,   250,   251,   253,   254,   255,   256,
2306      257,   258,   259,   261,   262,   263,   264,   267,   268,   275,
2307      276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
2308      286,   287,   288,   289,   290,   291,   292,   294,   295,   296,
2309      298,   299,   300,   302,   336,   337,   338,   339,   343,   344,
2310      345,   387,   388,   389,  -305,  -305,  -305,  -305,  -305,  -305,
2311     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2312     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2313     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2314     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2315     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2316     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2317     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2318     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2319     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2320     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2321     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2322     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2323     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2324     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2325     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2326     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2327     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2328     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2329     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2330     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2331     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2332     -305,  -305,  -305,  -305,   390,   391,   392,   393,   394,   395,
2333      401,   405,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2334     -305,   406,   433,   434,   435,   437,   438,   446,  -305,  -305,
2335     -305,  -305,  -305,  -305,  -305,  -305,   459,   460,   461,   462,
2336      463,   464,   465,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2337     -305,   466,   467,   468,   469,   470,   471,   472,   473,   474,
2338      475,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2339     -305,  -305,   476,   477,   478,   519,   521,  -305,  -305,  -305,
2340     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,   540,   541,
2341      542,   543,   544,   545,   546,   547,  -305,  -305,  -305,  -305,
2342     -305,  -305,  -305,  -305,  -305,   548,   549,   550,   561,   562,
2343      563,   564,   565,   566,   567,   569,   570,   571,   572,   573,
2344      574,   575,   578,   581,  -305,  -305,  -305,  -305,  -305,  -305,
2345     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2346     -305,  -305,  -305,  -305,   584,  -305,  -305,   585,  -305,  -305,
2347      594,   595,   596,   598,   599,   600,   601,   602,   603,   604,
2348     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2349     -305,   605,   610,   611,   612,   613,   614,  -305,  -305,  -305,
2350     -305,  -305,  -305,  -305,   615,   616,  -305,  -305,  -305,  -305,
2351     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2352     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2353     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2354     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2355     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2356     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,   617,
2357      618,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2358     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2359     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2360     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2361     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2362     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2363     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,   619,
2364      620,   621,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2365     -305,  -305,  -305,   622,   623,  -305,  -305,  -305,  -305,  -305,
2366     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2367     -305,  -305,  -305,  -305,   624,   625,   626,   627,   628,   629,
2368     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2369     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2370     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2371     -305,  -305,  -305,  -305,   630,  -305,  -305,  -305,  -305,  -305,
2372     -305,  -305,  -305,  -305,   631,  -305,  -305,  -305,  -305,  -305,
2373     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2374     -305,  -305,  -305,  -305,   632,  -305,  -305,   633,   634,  -305,
2375     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2376     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2377     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2378     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2379     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2380     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2381     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2382     -305,   635,   636,   637,  -305,  -305,  -305,  -305,  -305,  -305,
2383     -305,  -305,  -305
2384 };
2385 
2386   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2387      Performed when YYTABLE does not specify something else to do.  Zero
2388      means the default is an error.  */
2389 static const yytype_int16 yydefact[] =
2390 {
2391        2,     0,     1,    18,    19,   241,   252,   549,   609,   568,
2392      262,   623,   646,   272,   662,   290,   614,     3,    17,    21,
2393      243,   254,   264,   274,   292,   551,   570,   611,   616,   625,
2394      648,   664,     4,     5,     6,    10,    14,    15,     8,     9,
2395        7,    16,    11,    12,    13,     0,     0,     0,     0,     0,
2396        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2397        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2398        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2400        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2401        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2402        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2403        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2404        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2405        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2406        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2407        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2408        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2409        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2410        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2411        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2412        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2413        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2414        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2415        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2416        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2417        0,     0,     0,     0,    20,    22,    23,    88,    91,   100,
2418      204,   205,    24,   164,   165,   166,   167,   168,   169,   170,
2419      171,   172,   173,    37,    79,    25,    92,    93,    48,    72,
2420       87,    26,    27,    30,    31,    28,    29,    32,    33,    34,
2421      238,   239,   240,    35,    36,   124,   216,   125,   127,   128,
2422      129,   218,   223,   219,   230,   231,   232,   233,   130,   131,
2423      132,   133,   134,   135,   136,   200,    89,    78,   104,   122,
2424      123,   228,   225,   126,    38,    39,    40,    41,    42,    80,
2425       94,    95,   111,    66,    76,    67,   208,   209,   105,    58,
2426       59,   207,    62,    60,    61,    63,   236,   115,   119,   140,
2427      150,   178,   153,   229,   116,    73,    43,    44,    45,   102,
2428      141,   142,   143,   144,    46,    47,    49,    50,    52,    53,
2429       51,   148,   154,    54,    55,    56,    64,    83,   120,    97,
2430      149,    90,   174,    98,    99,   117,   118,   226,   103,    57,
2431       81,    84,    65,    68,   106,   107,   108,    82,   175,   109,
2432       69,    70,    71,   217,   121,   192,   193,   194,   195,   196,
2433      197,   198,   206,   110,    77,   237,   112,   113,   114,   176,
2434       74,    75,    96,    85,    86,   101,   137,   138,   227,   139,
2435      145,   146,   147,   179,   180,   182,   184,   185,   183,   186,
2436      201,   151,   152,   157,   158,   155,   156,   159,   160,   162,
2437      161,   163,   220,   222,   221,   177,   187,   188,   189,   190,
2438      191,   210,   212,   211,   213,   214,   215,   234,   235,   181,
2439      199,   202,   203,   224,     0,     0,     0,     0,     0,     0,
2440        0,     0,   242,   244,   245,   246,   248,   249,   250,   251,
2441      247,     0,     0,     0,     0,     0,     0,     0,   253,   255,
2442      256,   257,   258,   259,   260,   261,     0,     0,     0,     0,
2443        0,     0,     0,   263,   265,   266,   269,   270,   267,   271,
2444      268,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2445        0,   273,   275,   276,   277,   278,   282,   283,   284,   279,
2446      280,   281,     0,     0,     0,     0,     0,   295,   299,   300,
2447      301,   302,   291,   293,   294,   296,   297,   298,     0,     0,
2448        0,     0,     0,     0,     0,     0,   550,   552,   554,   553,
2449      559,   555,   556,   557,   558,     0,     0,     0,     0,     0,
2450        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2451        0,     0,     0,     0,   569,   571,   573,   572,   574,   575,
2452      576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
2453      586,   587,   588,   589,     0,   610,   612,     0,   615,   617,
2454        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2455      624,   626,   627,   628,   630,   631,   629,   632,   633,   634,
2456      635,     0,     0,     0,     0,     0,     0,   647,   649,   650,
2457      651,   652,   653,   654,     0,     0,   663,   665,   666,   304,
2458      303,   310,   323,   321,   333,   329,   330,   334,   331,   332,
2459      335,   336,   337,   341,   342,   372,   373,   374,   375,   376,
2460      404,   405,   406,   412,   413,   326,   414,   415,   418,   416,
2461      417,   421,   422,   423,   437,   387,   388,   391,   392,   424,
2462      440,   381,   383,   441,   448,   449,   450,   327,   403,   468,
2463      469,   382,   462,   365,   322,   377,   438,   445,   425,     0,
2464        0,   472,   328,   305,   364,   429,   306,   324,   325,   378,
2465      379,   470,   427,   431,   432,   339,   338,   307,   473,   407,
2466      436,   366,   386,   442,   443,   444,   447,   461,   380,   466,
2467      464,   465,   395,   402,   433,   434,   396,   397,   426,   452,
2468      367,   368,   371,   343,   345,   340,   346,   347,   348,   349,
2469      356,   357,   358,   359,   360,   361,   362,   474,   475,   477,
2470      408,   409,   410,   411,   419,   420,   478,   479,   480,     0,
2471        0,     0,   428,   398,   400,   619,   489,   493,   491,   490,
2472      494,   492,   499,     0,     0,   497,   498,   311,   312,   313,
2473      314,   315,   316,   317,   318,   319,   320,   430,   446,   467,
2474      503,   504,   399,   481,     0,     0,     0,     0,     0,     0,
2475      453,   454,   455,   456,   457,   458,   459,   460,   620,   389,
2476      390,   393,   384,   451,   363,   308,   309,   385,   505,   506,
2477      507,   508,   509,   511,   510,   512,   513,   514,   344,   351,
2478      500,   502,   501,   350,     0,   370,   435,   476,   369,   401,
2479      352,   353,   355,   354,     0,   516,   394,   463,   517,   518,
2480      519,   524,   522,   523,   520,   521,   525,   526,   527,   528,
2481      530,   531,   529,   542,     0,   546,   547,     0,     0,   548,
2482      532,   540,   533,   534,   535,   539,   541,   536,   537,   538,
2483      285,   286,   287,   288,   289,   560,   562,   561,   564,   565,
2484      566,   567,   563,   590,   592,   593,   594,   595,   596,   597,
2485      598,   599,   600,   591,   601,   602,   603,   604,   605,   606,
2486      607,   608,   613,   618,   636,   637,   638,   641,   639,   640,
2487      642,   643,   644,   645,   655,   656,   657,   658,   659,   660,
2488      667,   668,   439,   471,   488,   621,   622,   495,   496,   482,
2489      483,     0,     0,     0,   487,   661,   515,   543,   544,   545,
2490      486,   484,   485
2491 };
2492 
2493   /* YYPGOTO[NTERM-NUM].  */
2494 static const yytype_int16 yypgoto[] =
2495 {
2496     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2497     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2498     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2499     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2500     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2501     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2502     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2503     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2504     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2505     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2506     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2507     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2508     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2509     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2510     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2511     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2512     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2513     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2514     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2515     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2516     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2517     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2518     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2519     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2520     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2521     -305,  -305,  -305,  -305,  -305,  -305,   274,   638,   639,   640,
2522      641,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2523     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2524     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2525     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2526     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2527     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2528     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2529     -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,  -305,
2530     -305,  -305,  -305,  -305,  -305,  -305
2531 };
2532 
2533   /* YYDEFGOTO[NTERM-NUM].  */
2534 static const yytype_int16 yydefgoto[] =
2535 {
2536       -1,     1,    17,    18,    19,    32,   264,    20,    33,   492,
2537       21,    34,   508,    22,    35,   523,    23,    36,   541,   557,
2538      558,   559,   560,   561,    24,    37,   562,   265,   266,   267,
2539      268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
2540      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
2541      288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
2542      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
2543      308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
2544      318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
2545      328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
2546      338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
2547      348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
2548      358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
2549      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
2550      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
2551      388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
2552      398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
2553      408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
2554      418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
2555      428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
2556      438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
2557      448,   449,   450,   451,   452,   453,   454,   455,   456,   457,
2558      458,   459,   460,   461,   462,   463,   464,   465,   466,   467,
2559      468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
2560      478,   493,   494,   495,   496,   497,   498,   499,   500,   509,
2561      510,   511,   512,   513,   514,   515,   542,   543,   544,   545,
2562      546,   547,   548,   549,   550,   551,   524,   525,   526,   527,
2563      528,   529,   530,    25,    38,   576,   577,   578,   579,   580,
2564      581,   582,   583,   584,    26,    39,   604,   605,   606,   607,
2565      608,   609,   610,   611,   612,   613,   614,   615,   616,   617,
2566      618,   619,   620,   621,   622,   623,    27,    40,   625,   626,
2567       28,    41,   628,   629,   479,   480,   481,   482,    29,    42,
2568      640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
2569      650,    30,    43,   657,   658,   659,   660,   661,   662,   663,
2570      483,    31,    44,   666,   667,   668
2571 };
2572 
2573   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2574      positive, shift that token.  If negative, reduce the rule whose
2575      number is the opposite.  If YYTABLE_NINF, syntax error.  */
2576 static const yytype_int16 yytable[] =
2577 {
2578        2,   531,   484,   516,   485,   486,   624,   501,   664,   665,
2579      627,     3,     4,   669,   670,   502,   503,   531,   585,   586,
2580      587,   588,   589,   590,   591,   592,   593,   594,   595,   596,
2581      597,   598,   599,   600,   601,   602,   603,   671,   672,   517,
2582      518,   673,   674,   675,   676,   677,     5,   678,   679,   680,
2583      681,   682,     6,   630,   631,   632,   633,   634,   635,   636,
2584      637,   638,   639,   683,   684,   685,   519,   487,   568,   569,
2585      570,   571,   572,   573,   574,   575,   651,   652,   653,   654,
2586      655,   656,   686,   687,   688,   689,   690,   691,   692,   693,
2587      694,   695,   696,   697,   698,   699,     7,   700,   701,   702,
2588      488,   703,   704,   489,   504,   705,   505,   706,   707,   506,
2589      708,   709,   490,   710,     8,   711,   712,   713,   714,   715,
2590      716,   717,   718,   719,   720,   721,   722,   723,   724,   725,
2591      726,   727,   728,   729,   730,   731,   732,   733,   734,   735,
2592      736,   737,   738,   739,   740,   741,   742,   520,   521,   743,
2593      744,   745,   746,   747,   748,   749,   750,   751,   752,   753,
2594      754,   755,   756,   757,   758,   759,   760,   761,     9,   762,
2595      763,   764,   765,   766,   767,   768,   769,   770,   771,   772,
2596      773,   774,   775,   776,   777,   778,   779,   780,   522,   781,
2597      782,   783,   784,   785,   786,   787,   788,   789,   790,   791,
2598      792,   793,   794,   795,   796,   797,   798,   799,   800,   801,
2599      802,   803,   804,   805,   806,   807,   808,   809,   810,   811,
2600      812,   813,   814,   815,   816,   817,   818,   819,    10,   820,
2601      821,   822,   823,   824,   532,   825,   533,   534,   535,   536,
2602      537,   826,   827,   828,   829,   830,   538,   831,   832,    11,
2603      833,   491,   533,   534,   535,   507,   834,   835,   836,   837,
2604      838,   839,   538,   840,   841,   842,   843,   844,   845,   846,
2605       12,   847,   848,   849,   850,   539,   540,   851,   852,    13,
2606      552,   553,   554,   555,   556,   853,   854,   855,   856,   857,
2607      858,   859,   860,   861,   862,   863,   864,   865,   866,   867,
2608      868,   869,   870,    14,   871,   872,   873,    15,   874,   875,
2609      876,   563,   877,    16,    45,    46,    47,    48,    49,    50,
2610       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
2611       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
2612       71,    72,    73,    74,    75,    76,   878,   879,   880,   881,
2613       77,    78,    79,   882,   883,   884,    80,    81,    82,    83,
2614       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
2615       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
2616      104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
2617      114,   115,   116,   117,   118,   119,   120,   885,   886,   887,
2618      888,   889,   890,   891,   892,   893,   121,   122,   123,   124,
2619      125,   894,   126,   127,   128,   895,   896,   129,   130,   131,
2620      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
2621      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
2622      152,   153,   154,   897,   898,   899,   155,   900,   901,   156,
2623      157,   158,   159,   160,   161,   162,   902,   163,   164,   165,
2624      166,   167,   168,   169,   170,   171,   172,   173,   174,   903,
2625      904,   905,   906,   907,   908,   909,   910,   911,   912,   913,
2626      914,   915,   916,   917,   918,   919,   920,   921,   922,   175,
2627      176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
2628      186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
2629      196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
2630      206,   207,   208,   209,   210,   211,   212,   213,   214,   923,
2631      215,   924,   216,   217,   218,   219,   220,   221,   222,   223,
2632      224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
2633      925,   926,   927,   928,   929,   930,   931,   932,   933,   934,
2634      935,   234,   235,   236,   237,   238,   239,   240,   241,   242,
2635      243,   936,   937,   938,   939,   940,   941,   942,   244,   943,
2636      944,   945,   946,   947,   948,   949,   245,   246,   950,   247,
2637      248,   951,   249,   250,   952,   953,   251,   252,   253,   254,
2638      255,   256,   257,   258,   954,   955,   956,   259,   957,   958,
2639      959,   960,   961,   962,   963,   964,   260,   261,   262,   263,
2640      965,   966,   967,   968,   969,   970,   971,   972,   973,   974,
2641      975,   976,   977,   978,   979,   980,   981,   982,   983,   984,
2642      985,   986,   987,   988,   989,   990,   991,   992,     0,     0,
2643        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2644        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2645        0,     0,     0,     0,     0,   564,   565,   566,   567
2646 };
2647 
2648 static const yytype_int16 yycheck[] =
2649 {
2650        0,    45,    45,    45,    47,    48,   115,    45,   304,   305,
2651      314,    11,    12,    10,    10,    53,    54,    45,   169,   170,
2652      171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
2653      181,   182,   183,   184,   185,   186,   187,    10,    10,    81,
2654       82,    10,    10,    10,    10,    10,    46,    10,    10,    10,
2655       10,    10,    52,   250,   251,   252,   253,   254,   255,   256,
2656      257,   258,   259,    10,    10,    10,   108,   110,    97,    98,
2657       99,   100,   101,   102,   103,   104,   271,   272,   273,   274,
2658      275,   276,    10,    10,    10,    10,    10,    10,    10,    10,
2659       10,    10,    10,    10,    10,    10,    96,    10,    10,    10,
2660      143,    10,    10,   146,   142,    10,   144,    10,    10,   147,
2661       10,    10,   155,    10,   114,    10,    10,    10,    10,    10,
2662       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2663       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2664       10,    10,    10,    10,    10,    10,    10,   189,   190,    10,
2665       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2666       10,    10,    10,    10,    10,    10,    10,    10,   168,    10,
2667       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2668       10,    10,    10,    10,    10,    10,    10,    10,   230,    10,
2669       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2670       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2671       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2672       10,    10,    10,    10,    10,    10,    10,    10,   228,    10,
2673       10,    10,    10,    10,   278,    10,   280,   281,   282,   283,
2674      284,    10,    10,    10,    10,    10,   290,    10,    10,   249,
2675       10,   294,   280,   281,   282,   293,    10,    10,    10,    10,
2676       10,    10,   290,    10,    10,    10,    10,    10,    10,    10,
2677      270,    10,    10,    10,    10,   319,   320,    10,    10,   279,
2678      308,   309,   310,   311,   312,    10,    10,    10,    10,    10,
2679       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2680       10,    10,    10,   303,    10,    10,    10,   307,    10,    10,
2681       10,    37,    10,   313,    13,    14,    15,    16,    17,    18,
2682       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
2683       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
2684       39,    40,    41,    42,    43,    44,    10,    10,    10,    10,
2685       49,    50,    51,    10,    10,    10,    55,    56,    57,    58,
2686       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
2687       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
2688       79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
2689       89,    90,    91,    92,    93,    94,    95,    10,    10,    10,
2690       10,    10,    10,    10,    10,    10,   105,   106,   107,   108,
2691      109,    10,   111,   112,   113,    10,    10,   116,   117,   118,
2692      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
2693      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
2694      139,   140,   141,    10,    10,    10,   145,    10,    10,   148,
2695      149,   150,   151,   152,   153,   154,    10,   156,   157,   158,
2696      159,   160,   161,   162,   163,   164,   165,   166,   167,    10,
2697       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2698       10,    10,    10,    10,    10,    10,    10,    10,    10,   188,
2699      189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
2700      199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
2701      209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
2702      219,   220,   221,   222,   223,   224,   225,   226,   227,    10,
2703      229,    10,   231,   232,   233,   234,   235,   236,   237,   238,
2704      239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
2705       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2706       10,   260,   261,   262,   263,   264,   265,   266,   267,   268,
2707      269,    10,    10,    10,    10,    10,    10,    10,   277,    10,
2708       10,    10,    10,    10,    10,    10,   285,   286,    10,   288,
2709      289,    10,   291,   292,    10,    10,   295,   296,   297,   298,
2710      299,   300,   301,   302,    10,    10,    10,   306,    10,    10,
2711       10,    10,    10,    10,    10,    10,   315,   316,   317,   318,
2712       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2713       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2714       10,    10,    10,    10,    10,    10,    10,    10,    -1,    -1,
2715       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2716       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2717       -1,    -1,    -1,    -1,    -1,    37,    37,    37,    37
2718 };
2719 
2720   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2721      symbol of state STATE-NUM.  */
2722 static const yytype_int16 yystos[] =
2723 {
2724        0,   322,     0,    11,    12,    46,    52,    96,   114,   168,
2725      228,   249,   270,   279,   303,   307,   313,   323,   324,   325,
2726      328,   331,   334,   337,   345,   594,   605,   627,   631,   639,
2727      652,   662,   326,   329,   332,   335,   338,   346,   595,   606,
2728      628,   632,   640,   653,   663,    13,    14,    15,    16,    17,
2729       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
2730       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
2731       38,    39,    40,    41,    42,    43,    44,    49,    50,    51,
2732       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
2733       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
2734       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
2735       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
2736       95,   105,   106,   107,   108,   109,   111,   112,   113,   116,
2737      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
2738      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
2739      137,   138,   139,   140,   141,   145,   148,   149,   150,   151,
2740      152,   153,   154,   156,   157,   158,   159,   160,   161,   162,
2741      163,   164,   165,   166,   167,   188,   189,   190,   191,   192,
2742      193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
2743      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
2744      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
2745      223,   224,   225,   226,   227,   229,   231,   232,   233,   234,
2746      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
2747      245,   246,   247,   248,   260,   261,   262,   263,   264,   265,
2748      266,   267,   268,   269,   277,   285,   286,   288,   289,   291,
2749      292,   295,   296,   297,   298,   299,   300,   301,   302,   306,
2750      315,   316,   317,   318,   327,   348,   349,   350,   351,   352,
2751      353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
2752      363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
2753      373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
2754      383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
2755      393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
2756      403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
2757      413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
2758      423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
2759      433,   434,   435,   436,   437,   438,   439,   440,   441,   442,
2760      443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
2761      453,   454,   455,   456,   457,   458,   459,   460,   461,   462,
2762      463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
2763      473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
2764      483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
2765      493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
2766      503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
2767      513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
2768      523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
2769      533,   534,   535,   536,   537,   538,   539,   540,   541,   542,
2770      543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
2771      553,   554,   555,   556,   557,   558,   559,   560,   561,   635,
2772      636,   637,   638,   661,    45,    47,    48,   110,   143,   146,
2773      155,   294,   330,   562,   563,   564,   565,   566,   567,   568,
2774      569,    45,    53,    54,   142,   144,   147,   293,   333,   570,
2775      571,   572,   573,   574,   575,   576,    45,    81,    82,   108,
2776      189,   190,   230,   336,   587,   588,   589,   590,   591,   592,
2777      593,    45,   278,   280,   281,   282,   283,   284,   290,   319,
2778      320,   339,   577,   578,   579,   580,   581,   582,   583,   584,
2779      585,   586,   308,   309,   310,   311,   312,   340,   341,   342,
2780      343,   344,   347,   577,   578,   579,   580,   581,    97,    98,
2781       99,   100,   101,   102,   103,   104,   596,   597,   598,   599,
2782      600,   601,   602,   603,   604,   169,   170,   171,   172,   173,
2783      174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
2784      184,   185,   186,   187,   607,   608,   609,   610,   611,   612,
2785      613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
2786      623,   624,   625,   626,   115,   629,   630,   314,   633,   634,
2787      250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
2788      641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
2789      651,   271,   272,   273,   274,   275,   276,   654,   655,   656,
2790      657,   658,   659,   660,   304,   305,   664,   665,   666,    10,
2791       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2792       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2793       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2794       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2795       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2796       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2797       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2798       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2799       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2800       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2801       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2802       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2803       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2804       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2805       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2806       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2807       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2808       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2809       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2810       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2811       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2812       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2813       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2814       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2815       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2816       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2817       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2818       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2819       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2820       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2821       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2822       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2823       10,    10,    10
2824 };
2825 
2826   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2827 static const yytype_int16 yyr1[] =
2828 {
2829        0,   321,   322,   322,   323,   323,   323,   323,   323,   323,
2830      323,   323,   323,   323,   323,   323,   323,   323,   324,   325,
2831      326,   326,   327,   327,   327,   327,   327,   327,   327,   327,
2832      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2833      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2834      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2835      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2836      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2837      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2838      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2839      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2840      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2841      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2842      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2843      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2844      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2845      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2846      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2847      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2848      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2849      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2850      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2851      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2852      327,   327,   327,   327,   327,   327,   327,   327,   327,   327,
2853      327,   328,   329,   329,   330,   330,   330,   330,   330,   330,
2854      330,   330,   331,   332,   332,   333,   333,   333,   333,   333,
2855      333,   333,   334,   335,   335,   336,   336,   336,   336,   336,
2856      336,   336,   337,   338,   338,   339,   339,   339,   339,   339,
2857      339,   339,   339,   339,   339,   340,   341,   342,   343,   344,
2858      345,   346,   346,   347,   347,   347,   347,   347,   347,   347,
2859      347,   347,   347,   348,   349,   350,   351,   352,   353,   354,
2860      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
2861      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
2862      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
2863      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
2864      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
2865      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
2866      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
2867      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
2868      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
2869      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2870      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2871      465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
2872      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
2873      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
2874      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
2875      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
2876      515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
2877      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
2878      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
2879      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
2880      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
2881      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
2882      575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
2883      585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
2884      595,   595,   596,   596,   596,   596,   596,   596,   596,   596,
2885      597,   598,   599,   600,   601,   602,   603,   604,   605,   606,
2886      606,   607,   607,   607,   607,   607,   607,   607,   607,   607,
2887      607,   607,   607,   607,   607,   607,   607,   607,   607,   607,
2888      608,   609,   610,   611,   612,   613,   614,   615,   616,   617,
2889      618,   619,   620,   621,   622,   623,   624,   625,   626,   627,
2890      628,   628,   629,   630,   631,   632,   632,   633,   634,   635,
2891      636,   637,   638,   639,   640,   640,   641,   641,   641,   641,
2892      641,   641,   641,   641,   641,   641,   642,   643,   644,   645,
2893      646,   647,   648,   649,   650,   651,   652,   653,   653,   654,
2894      654,   654,   654,   654,   654,   655,   656,   657,   658,   659,
2895      660,   661,   662,   663,   663,   664,   664,   665,   666
2896 };
2897 
2898   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2899 static const yytype_int8 yyr2[] =
2900 {
2901        0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
2902        2,     2,     2,     2,     2,     2,     2,     1,     1,     1,
2903        2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2904        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2905        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2906        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2907        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2908        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2909        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2910        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2911        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2912        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2913        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2914        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2915        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2916        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2917        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2918        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2919        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2920        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2921        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2922        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2923        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2924        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2925        1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
2926        1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
2927        1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
2928        1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
2929        1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
2930        1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
2931        1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
2932        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2933        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2934        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2935        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2936        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2937        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2938        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2939        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2940        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2941        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2942        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2943        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2944        2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
2945        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2946        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2947        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2948        2,     3,     2,     2,     2,     2,     2,     2,     2,     2,
2949        2,     2,     3,     3,     4,     4,     4,     3,     3,     2,
2950        2,     2,     2,     2,     2,     3,     3,     2,     2,     2,
2951        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2952        2,     2,     2,     2,     2,     3,     2,     2,     2,     2,
2953        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2954        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2955        2,     2,     2,     3,     3,     3,     2,     2,     2,     1,
2956        2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2957        2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
2958        0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2959        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2960        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2961        2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
2962        2,     0,     1,     2,     1,     2,     0,     1,     2,     2,
2963        2,     3,     3,     1,     2,     0,     1,     1,     1,     1,
2964        1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
2965        2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
2966        1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
2967        2,     3,     1,     2,     0,     1,     1,     2,     2
2968 };
2969 
2970 
2971 enum { YYENOMEM = -2 };
2972 
2973 #define yyerrok         (yyerrstatus = 0)
2974 #define yyclearin       (yychar = YYEMPTY)
2975 
2976 #define YYACCEPT        goto yyacceptlab
2977 #define YYABORT         goto yyabortlab
2978 #define YYERROR         goto yyerrorlab
2979 
2980 
2981 #define YYRECOVERING()  (!!yyerrstatus)
2982 
2983 #define YYBACKUP(Token, Value)                                    \
2984   do                                                              \
2985     if (yychar == YYEMPTY)                                        \
2986       {                                                           \
2987         yychar = (Token);                                         \
2988         yylval = (Value);                                         \
2989         YYPOPSTACK (yylen);                                       \
2990         yystate = *yyssp;                                         \
2991         goto yybackup;                                            \
2992       }                                                           \
2993     else                                                          \
2994       {                                                           \
2995         yyerror (YY_("syntax error: cannot back up")); \
2996         YYERROR;                                                  \
2997       }                                                           \
2998   while (0)
2999 
3000 /* Backward compatibility with an undocumented macro.
3001    Use YYerror or YYUNDEF. */
3002 #define YYERRCODE YYUNDEF
3003 
3004 
3005 /* Enable debugging if requested.  */
3006 #if YYDEBUG
3007 
3008 # ifndef YYFPRINTF
3009 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
3010 #  define YYFPRINTF fprintf
3011 # endif
3012 
3013 # define YYDPRINTF(Args)                        \
3014 do {                                            \
3015   if (yydebug)                                  \
3016     YYFPRINTF Args;                             \
3017 } while (0)
3018 
3019 /* This macro is provided for backward compatibility. */
3020 # ifndef YY_LOCATION_PRINT
3021 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
3022 # endif
3023 
3024 
3025 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
3026 do {                                                                      \
3027   if (yydebug)                                                            \
3028     {                                                                     \
3029       YYFPRINTF (stderr, "%s ", Title);                                   \
3030       yy_symbol_print (stderr,                                            \
3031                   Kind, Value); \
3032       YYFPRINTF (stderr, "\n");                                           \
3033     }                                                                     \
3034 } while (0)
3035 
3036 
3037 /*-----------------------------------.
3038 | Print this symbol's value on YYO.  |
3039 `-----------------------------------*/
3040 
3041 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)3042 yy_symbol_value_print (FILE *yyo,
3043                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
3044 {
3045   FILE *yyoutput = yyo;
3046   YYUSE (yyoutput);
3047   if (!yyvaluep)
3048     return;
3049 # ifdef YYPRINT
3050   if (yykind < YYNTOKENS)
3051     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
3052 # endif
3053   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3054   YYUSE (yykind);
3055   YY_IGNORE_MAYBE_UNINITIALIZED_END
3056 }
3057 
3058 
3059 /*---------------------------.
3060 | Print this symbol on YYO.  |
3061 `---------------------------*/
3062 
3063 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)3064 yy_symbol_print (FILE *yyo,
3065                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
3066 {
3067   YYFPRINTF (yyo, "%s %s (",
3068              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
3069 
3070   yy_symbol_value_print (yyo, yykind, yyvaluep);
3071   YYFPRINTF (yyo, ")");
3072 }
3073 
3074 /*------------------------------------------------------------------.
3075 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
3076 | TOP (included).                                                   |
3077 `------------------------------------------------------------------*/
3078 
3079 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)3080 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
3081 {
3082   YYFPRINTF (stderr, "Stack now");
3083   for (; yybottom <= yytop; yybottom++)
3084     {
3085       int yybot = *yybottom;
3086       YYFPRINTF (stderr, " %d", yybot);
3087     }
3088   YYFPRINTF (stderr, "\n");
3089 }
3090 
3091 # define YY_STACK_PRINT(Bottom, Top)                            \
3092 do {                                                            \
3093   if (yydebug)                                                  \
3094     yy_stack_print ((Bottom), (Top));                           \
3095 } while (0)
3096 
3097 
3098 /*------------------------------------------------.
3099 | Report that the YYRULE is going to be reduced.  |
3100 `------------------------------------------------*/
3101 
3102 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)3103 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
3104                  int yyrule)
3105 {
3106   int yylno = yyrline[yyrule];
3107   int yynrhs = yyr2[yyrule];
3108   int yyi;
3109   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
3110              yyrule - 1, yylno);
3111   /* The symbols being reduced.  */
3112   for (yyi = 0; yyi < yynrhs; yyi++)
3113     {
3114       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
3115       yy_symbol_print (stderr,
3116                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
3117                        &yyvsp[(yyi + 1) - (yynrhs)]);
3118       YYFPRINTF (stderr, "\n");
3119     }
3120 }
3121 
3122 # define YY_REDUCE_PRINT(Rule)          \
3123 do {                                    \
3124   if (yydebug)                          \
3125     yy_reduce_print (yyssp, yyvsp, Rule); \
3126 } while (0)
3127 
3128 /* Nonzero means print parse trace.  It is left uninitialized so that
3129    multiple parsers can coexist.  */
3130 int yydebug;
3131 #else /* !YYDEBUG */
3132 # define YYDPRINTF(Args) ((void) 0)
3133 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
3134 # define YY_STACK_PRINT(Bottom, Top)
3135 # define YY_REDUCE_PRINT(Rule)
3136 #endif /* !YYDEBUG */
3137 
3138 
3139 /* YYINITDEPTH -- initial size of the parser's stacks.  */
3140 #ifndef YYINITDEPTH
3141 # define YYINITDEPTH 200
3142 #endif
3143 
3144 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
3145    if the built-in stack extension method is used).
3146 
3147    Do not make this value too large; the results are undefined if
3148    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
3149    evaluated with infinite-precision integer arithmetic.  */
3150 
3151 #ifndef YYMAXDEPTH
3152 # define YYMAXDEPTH 10000
3153 #endif
3154 
3155 
3156 
3157 
3158 
3159 
3160 /*-----------------------------------------------.
3161 | Release the memory associated to this symbol.  |
3162 `-----------------------------------------------*/
3163 
3164 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)3165 yydestruct (const char *yymsg,
3166             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
3167 {
3168   YYUSE (yyvaluep);
3169   if (!yymsg)
3170     yymsg = "Deleting";
3171   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
3172 
3173   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3174   YYUSE (yykind);
3175   YY_IGNORE_MAYBE_UNINITIALIZED_END
3176 }
3177 
3178 
3179 /* The lookahead symbol.  */
3180 int yychar;
3181 
3182 /* The semantic value of the lookahead symbol.  */
3183 YYSTYPE yylval;
3184 /* Number of syntax errors so far.  */
3185 int yynerrs;
3186 
3187 
3188 
3189 
3190 /*----------.
3191 | yyparse.  |
3192 `----------*/
3193 
3194 int
yyparse(void)3195 yyparse (void)
3196 {
3197     yy_state_fast_t yystate;
3198     /* Number of tokens to shift before error messages enabled.  */
3199     int yyerrstatus;
3200 
3201     /* The stacks and their tools:
3202        'yyss': related to states.
3203        'yyvs': related to semantic values.
3204 
3205        Refer to the stacks through separate pointers, to allow yyoverflow
3206        to reallocate them elsewhere.  */
3207 
3208     /* Their size.  */
3209     YYPTRDIFF_T yystacksize;
3210 
3211     /* The state stack.  */
3212     yy_state_t yyssa[YYINITDEPTH];
3213     yy_state_t *yyss;
3214     yy_state_t *yyssp;
3215 
3216     /* The semantic value stack.  */
3217     YYSTYPE yyvsa[YYINITDEPTH];
3218     YYSTYPE *yyvs;
3219     YYSTYPE *yyvsp;
3220 
3221   int yyn;
3222   /* The return value of yyparse.  */
3223   int yyresult;
3224   /* Lookahead token as an internal (translated) token number.  */
3225   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
3226   /* The variables used to return semantic value and location from the
3227      action routines.  */
3228   YYSTYPE yyval;
3229 
3230 
3231 
3232 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
3233 
3234   /* The number of symbols on the RHS of the reduced rule.
3235      Keep to zero when no symbol should be popped.  */
3236   int yylen = 0;
3237 
3238   yynerrs = 0;
3239   yystate = 0;
3240   yyerrstatus = 0;
3241 
3242   yystacksize = YYINITDEPTH;
3243   yyssp = yyss = yyssa;
3244   yyvsp = yyvs = yyvsa;
3245 
3246 
3247   YYDPRINTF ((stderr, "Starting parse\n"));
3248 
3249   yychar = YYEMPTY; /* Cause a token to be read.  */
3250   goto yysetstate;
3251 
3252 
3253 /*------------------------------------------------------------.
3254 | yynewstate -- push a new state, which is found in yystate.  |
3255 `------------------------------------------------------------*/
3256 yynewstate:
3257   /* In all cases, when you get here, the value and location stacks
3258      have just been pushed.  So pushing a state here evens the stacks.  */
3259   yyssp++;
3260 
3261 
3262 /*--------------------------------------------------------------------.
3263 | yysetstate -- set current state (the top of the stack) to yystate.  |
3264 `--------------------------------------------------------------------*/
3265 yysetstate:
3266   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3267   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3268   YY_IGNORE_USELESS_CAST_BEGIN
3269   *yyssp = YY_CAST (yy_state_t, yystate);
3270   YY_IGNORE_USELESS_CAST_END
3271   YY_STACK_PRINT (yyss, yyssp);
3272 
3273   if (yyss + yystacksize - 1 <= yyssp)
3274 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
3275     goto yyexhaustedlab;
3276 #else
3277     {
3278       /* Get the current used size of the three stacks, in elements.  */
3279       YYPTRDIFF_T yysize = yyssp - yyss + 1;
3280 
3281 # if defined yyoverflow
3282       {
3283         /* Give user a chance to reallocate the stack.  Use copies of
3284            these so that the &'s don't force the real ones into
3285            memory.  */
3286         yy_state_t *yyss1 = yyss;
3287         YYSTYPE *yyvs1 = yyvs;
3288 
3289         /* Each stack pointer address is followed by the size of the
3290            data in use in that stack, in bytes.  This used to be a
3291            conditional around just the two extra args, but that might
3292            be undefined if yyoverflow is a macro.  */
3293         yyoverflow (YY_("memory exhausted"),
3294                     &yyss1, yysize * YYSIZEOF (*yyssp),
3295                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
3296                     &yystacksize);
3297         yyss = yyss1;
3298         yyvs = yyvs1;
3299       }
3300 # else /* defined YYSTACK_RELOCATE */
3301       /* Extend the stack our own way.  */
3302       if (YYMAXDEPTH <= yystacksize)
3303         goto yyexhaustedlab;
3304       yystacksize *= 2;
3305       if (YYMAXDEPTH < yystacksize)
3306         yystacksize = YYMAXDEPTH;
3307 
3308       {
3309         yy_state_t *yyss1 = yyss;
3310         union yyalloc *yyptr =
3311           YY_CAST (union yyalloc *,
3312                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3313         if (! yyptr)
3314           goto yyexhaustedlab;
3315         YYSTACK_RELOCATE (yyss_alloc, yyss);
3316         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3317 #  undef YYSTACK_RELOCATE
3318         if (yyss1 != yyssa)
3319           YYSTACK_FREE (yyss1);
3320       }
3321 # endif
3322 
3323       yyssp = yyss + yysize - 1;
3324       yyvsp = yyvs + yysize - 1;
3325 
3326       YY_IGNORE_USELESS_CAST_BEGIN
3327       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3328                   YY_CAST (long, yystacksize)));
3329       YY_IGNORE_USELESS_CAST_END
3330 
3331       if (yyss + yystacksize - 1 <= yyssp)
3332         YYABORT;
3333     }
3334 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3335 
3336   if (yystate == YYFINAL)
3337     YYACCEPT;
3338 
3339   goto yybackup;
3340 
3341 
3342 /*-----------.
3343 | yybackup.  |
3344 `-----------*/
3345 yybackup:
3346   /* Do appropriate processing given the current state.  Read a
3347      lookahead token if we need one and don't already have one.  */
3348 
3349   /* First try to decide what to do without reference to lookahead token.  */
3350   yyn = yypact[yystate];
3351   if (yypact_value_is_default (yyn))
3352     goto yydefault;
3353 
3354   /* Not known => get a lookahead token if don't already have one.  */
3355 
3356   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
3357   if (yychar == YYEMPTY)
3358     {
3359       YYDPRINTF ((stderr, "Reading a token\n"));
3360       yychar = yylex ();
3361     }
3362 
3363   if (yychar <= YYEOF)
3364     {
3365       yychar = YYEOF;
3366       yytoken = YYSYMBOL_YYEOF;
3367       YYDPRINTF ((stderr, "Now at end of input.\n"));
3368     }
3369   else if (yychar == YYerror)
3370     {
3371       /* The scanner already issued an error message, process directly
3372          to error recovery.  But do not keep the error token as
3373          lookahead, it is too special and may lead us to an endless
3374          loop in error recovery. */
3375       yychar = YYUNDEF;
3376       yytoken = YYSYMBOL_YYerror;
3377       goto yyerrlab1;
3378     }
3379   else
3380     {
3381       yytoken = YYTRANSLATE (yychar);
3382       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3383     }
3384 
3385   /* If the proper action on seeing token YYTOKEN is to reduce or to
3386      detect an error, take that action.  */
3387   yyn += yytoken;
3388   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3389     goto yydefault;
3390   yyn = yytable[yyn];
3391   if (yyn <= 0)
3392     {
3393       if (yytable_value_is_error (yyn))
3394         goto yyerrlab;
3395       yyn = -yyn;
3396       goto yyreduce;
3397     }
3398 
3399   /* Count tokens shifted since error; after three, turn off error
3400      status.  */
3401   if (yyerrstatus)
3402     yyerrstatus--;
3403 
3404   /* Shift the lookahead token.  */
3405   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3406   yystate = yyn;
3407   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3408   *++yyvsp = yylval;
3409   YY_IGNORE_MAYBE_UNINITIALIZED_END
3410 
3411   /* Discard the shifted token.  */
3412   yychar = YYEMPTY;
3413   goto yynewstate;
3414 
3415 
3416 /*-----------------------------------------------------------.
3417 | yydefault -- do the default action for the current state.  |
3418 `-----------------------------------------------------------*/
3419 yydefault:
3420   yyn = yydefact[yystate];
3421   if (yyn == 0)
3422     goto yyerrlab;
3423   goto yyreduce;
3424 
3425 
3426 /*-----------------------------.
3427 | yyreduce -- do a reduction.  |
3428 `-----------------------------*/
3429 yyreduce:
3430   /* yyn is the number of a rule to reduce with.  */
3431   yylen = yyr2[yyn];
3432 
3433   /* If YYLEN is nonzero, implement the default value of the action:
3434      '$$ = $1'.
3435 
3436      Otherwise, the following line sets YYVAL to garbage.
3437      This behavior is undocumented and Bison
3438      users should not rely upon it.  Assigning to YYVAL
3439      unconditionally makes the parser a bit smaller, and it avoids a
3440      GCC warning that YYVAL may be used uninitialized.  */
3441   yyval = yyvsp[1-yylen];
3442 
3443 
3444   YY_REDUCE_PRINT (yyn);
3445   switch (yyn)
3446     {
3447   case 18:
3448 #line 202 "util/configparser.y"
3449         {
3450 		OUTYY(("\nP(force-toplevel)\n"));
3451 	}
3452 #line 3453 "util/configparser.c"
3453     break;
3454 
3455   case 19:
3456 #line 208 "util/configparser.y"
3457         {
3458 		OUTYY(("\nP(server:)\n"));
3459 	}
3460 #line 3461 "util/configparser.c"
3461     break;
3462 
3463   case 241:
3464 #line 315 "util/configparser.y"
3465         {
3466 		struct config_stub* s;
3467 		OUTYY(("\nP(stub_zone:)\n"));
3468 		s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3469 		if(s) {
3470 			s->next = cfg_parser->cfg->stubs;
3471 			cfg_parser->cfg->stubs = s;
3472 		} else {
3473 			yyerror("out of memory");
3474 		}
3475 	}
3476 #line 3477 "util/configparser.c"
3477     break;
3478 
3479   case 252:
3480 #line 333 "util/configparser.y"
3481         {
3482 		struct config_stub* s;
3483 		OUTYY(("\nP(forward_zone:)\n"));
3484 		s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3485 		if(s) {
3486 			s->next = cfg_parser->cfg->forwards;
3487 			cfg_parser->cfg->forwards = s;
3488 		} else {
3489 			yyerror("out of memory");
3490 		}
3491 	}
3492 #line 3493 "util/configparser.c"
3493     break;
3494 
3495   case 262:
3496 #line 351 "util/configparser.y"
3497         {
3498 		struct config_view* s;
3499 		OUTYY(("\nP(view:)\n"));
3500 		s = (struct config_view*)calloc(1, sizeof(struct config_view));
3501 		if(s) {
3502 			s->next = cfg_parser->cfg->views;
3503 			if(s->next && !s->next->name)
3504 				yyerror("view without name");
3505 			cfg_parser->cfg->views = s;
3506 		} else {
3507 			yyerror("out of memory");
3508 		}
3509 	}
3510 #line 3511 "util/configparser.c"
3511     break;
3512 
3513   case 272:
3514 #line 371 "util/configparser.y"
3515         {
3516 		struct config_auth* s;
3517 		OUTYY(("\nP(auth_zone:)\n"));
3518 		s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3519 		if(s) {
3520 			s->next = cfg_parser->cfg->auths;
3521 			cfg_parser->cfg->auths = s;
3522 			/* defaults for auth zone */
3523 			s->for_downstream = 1;
3524 			s->for_upstream = 1;
3525 			s->fallback_enabled = 0;
3526 			s->zonemd_check = 0;
3527 			s->zonemd_reject_absence = 0;
3528 			s->isrpz = 0;
3529 		} else {
3530 			yyerror("out of memory");
3531 		}
3532 	}
3533 #line 3534 "util/configparser.c"
3534     break;
3535 
3536   case 285:
3537 #line 398 "util/configparser.y"
3538         {
3539 		uint8_t* bitlist;
3540 		size_t len = 0;
3541 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3542 		bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3543 			&len);
3544 		free((yyvsp[0].str));
3545 		if(!bitlist) {
3546 			yyerror("could not parse tags, (define-tag them first)");
3547 		}
3548 		if(bitlist) {
3549 			cfg_parser->cfg->auths->rpz_taglist = bitlist;
3550 			cfg_parser->cfg->auths->rpz_taglistlen = len;
3551 
3552 		}
3553 	}
3554 #line 3555 "util/configparser.c"
3555     break;
3556 
3557   case 286:
3558 #line 417 "util/configparser.y"
3559         {
3560 		OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3561 		if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3562 		   strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3563 		   strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3564 			yyerror("rpz-action-override action: expected nxdomain, "
3565 				"nodata, passthru, drop, cname or disabled");
3566 			free((yyvsp[0].str));
3567 			cfg_parser->cfg->auths->rpz_action_override = NULL;
3568 		}
3569 		else {
3570 			cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3571 		}
3572 	}
3573 #line 3574 "util/configparser.c"
3574     break;
3575 
3576   case 287:
3577 #line 434 "util/configparser.y"
3578         {
3579 		OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3580 		free(cfg_parser->cfg->auths->rpz_cname);
3581 		cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3582 	}
3583 #line 3584 "util/configparser.c"
3584     break;
3585 
3586   case 288:
3587 #line 442 "util/configparser.y"
3588         {
3589 		OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3590 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3591 			yyerror("expected yes or no.");
3592 		else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3593 		free((yyvsp[0].str));
3594 	}
3595 #line 3596 "util/configparser.c"
3596     break;
3597 
3598   case 289:
3599 #line 452 "util/configparser.y"
3600         {
3601 		OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3602 		free(cfg_parser->cfg->auths->rpz_log_name);
3603 		cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3604 	}
3605 #line 3606 "util/configparser.c"
3606     break;
3607 
3608   case 290:
3609 #line 460 "util/configparser.y"
3610         {
3611 		struct config_auth* s;
3612 		OUTYY(("\nP(rpz:)\n"));
3613 		s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3614 		if(s) {
3615 			s->next = cfg_parser->cfg->auths;
3616 			cfg_parser->cfg->auths = s;
3617 			/* defaults for RPZ auth zone */
3618 			s->for_downstream = 0;
3619 			s->for_upstream = 0;
3620 			s->fallback_enabled = 0;
3621 			s->isrpz = 1;
3622 		} else {
3623 			yyerror("out of memory");
3624 		}
3625 	}
3626 #line 3627 "util/configparser.c"
3627     break;
3628 
3629   case 303:
3630 #line 484 "util/configparser.y"
3631         {
3632 		OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3633 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3634 			yyerror("number expected");
3635 		else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3636 		free((yyvsp[0].str));
3637 	}
3638 #line 3639 "util/configparser.c"
3639     break;
3640 
3641   case 304:
3642 #line 493 "util/configparser.y"
3643         {
3644 		OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3645 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3646 			yyerror("number expected");
3647 		else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3648 		free((yyvsp[0].str));
3649 	}
3650 #line 3651 "util/configparser.c"
3651     break;
3652 
3653   case 305:
3654 #line 502 "util/configparser.y"
3655         {
3656 		OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3657 		if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3658 			cfg_parser->cfg->stat_interval = 0;
3659 		else if(atoi((yyvsp[0].str)) == 0)
3660 			yyerror("number expected");
3661 		else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3662 		free((yyvsp[0].str));
3663 	}
3664 #line 3665 "util/configparser.c"
3665     break;
3666 
3667   case 306:
3668 #line 513 "util/configparser.y"
3669         {
3670 		OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3671 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3672 			yyerror("expected yes or no.");
3673 		else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3674 		free((yyvsp[0].str));
3675 	}
3676 #line 3677 "util/configparser.c"
3677     break;
3678 
3679   case 307:
3680 #line 522 "util/configparser.y"
3681         {
3682 		OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3683 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3684 			yyerror("expected yes or no.");
3685 		else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3686 		free((yyvsp[0].str));
3687 	}
3688 #line 3689 "util/configparser.c"
3689     break;
3690 
3691   case 308:
3692 #line 531 "util/configparser.y"
3693         {
3694 		OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3695 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3696 			yyerror("expected yes or no.");
3697 		else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3698 		free((yyvsp[0].str));
3699 	}
3700 #line 3701 "util/configparser.c"
3701     break;
3702 
3703   case 309:
3704 #line 540 "util/configparser.y"
3705         {
3706 		OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3707 		if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3708 			cfg_parser->cfg->shm_key = 0;
3709 		else if(atoi((yyvsp[0].str)) == 0)
3710 			yyerror("number expected");
3711 		else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3712 		free((yyvsp[0].str));
3713 	}
3714 #line 3715 "util/configparser.c"
3715     break;
3716 
3717   case 310:
3718 #line 551 "util/configparser.y"
3719         {
3720 		OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3721 		if(atoi((yyvsp[0].str)) == 0)
3722 			yyerror("port number expected");
3723 		else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3724 		free((yyvsp[0].str));
3725 	}
3726 #line 3727 "util/configparser.c"
3727     break;
3728 
3729   case 311:
3730 #line 560 "util/configparser.y"
3731         {
3732 	#ifdef CLIENT_SUBNET
3733 		OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3734 		if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3735 			fatal_exit("out of memory adding client-subnet");
3736 	#else
3737 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3738 		free((yyvsp[0].str));
3739 	#endif
3740 	}
3741 #line 3742 "util/configparser.c"
3742     break;
3743 
3744   case 312:
3745 #line 572 "util/configparser.y"
3746         {
3747 	#ifdef CLIENT_SUBNET
3748 		OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3749 		if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3750 			(yyvsp[0].str)))
3751 			fatal_exit("out of memory adding client-subnet-zone");
3752 	#else
3753 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3754 		free((yyvsp[0].str));
3755 	#endif
3756 	}
3757 #line 3758 "util/configparser.c"
3758     break;
3759 
3760   case 313:
3761 #line 586 "util/configparser.y"
3762         {
3763 	#ifdef CLIENT_SUBNET
3764 		OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3765 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3766 			yyerror("expected yes or no.");
3767 		else
3768 			cfg_parser->cfg->client_subnet_always_forward =
3769 				(strcmp((yyvsp[0].str), "yes")==0);
3770 	#else
3771 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3772 	#endif
3773 		free((yyvsp[0].str));
3774 	}
3775 #line 3776 "util/configparser.c"
3776     break;
3777 
3778   case 314:
3779 #line 601 "util/configparser.y"
3780         {
3781 	#ifdef CLIENT_SUBNET
3782 		OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3783 		OUTYY(("P(Deprecated option, ignoring)\n"));
3784 	#else
3785 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3786 	#endif
3787 		free((yyvsp[0].str));
3788 	}
3789 #line 3790 "util/configparser.c"
3790     break;
3791 
3792   case 315:
3793 #line 612 "util/configparser.y"
3794         {
3795 	#ifdef CLIENT_SUBNET
3796 		OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3797 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3798 			yyerror("IPv4 subnet length expected");
3799 		else if (atoi((yyvsp[0].str)) > 32)
3800 			cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3801 		else if (atoi((yyvsp[0].str)) < 0)
3802 			cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3803 		else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3804 	#else
3805 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3806 	#endif
3807 		free((yyvsp[0].str));
3808 	}
3809 #line 3810 "util/configparser.c"
3810     break;
3811 
3812   case 316:
3813 #line 629 "util/configparser.y"
3814         {
3815 	#ifdef CLIENT_SUBNET
3816 		OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3817 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3818 			yyerror("Ipv6 subnet length expected");
3819 		else if (atoi((yyvsp[0].str)) > 128)
3820 			cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3821 		else if (atoi((yyvsp[0].str)) < 0)
3822 			cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3823 		else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3824 	#else
3825 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3826 	#endif
3827 		free((yyvsp[0].str));
3828 	}
3829 #line 3830 "util/configparser.c"
3830     break;
3831 
3832   case 317:
3833 #line 646 "util/configparser.y"
3834         {
3835 	#ifdef CLIENT_SUBNET
3836 		OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3837 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3838 			yyerror("IPv4 subnet length expected");
3839 		else if (atoi((yyvsp[0].str)) > 32)
3840 			cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3841 		else if (atoi((yyvsp[0].str)) < 0)
3842 			cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3843 		else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3844 	#else
3845 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3846 	#endif
3847 		free((yyvsp[0].str));
3848 	}
3849 #line 3850 "util/configparser.c"
3850     break;
3851 
3852   case 318:
3853 #line 663 "util/configparser.y"
3854         {
3855 	#ifdef CLIENT_SUBNET
3856 		OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3857 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3858 			yyerror("Ipv6 subnet length expected");
3859 		else if (atoi((yyvsp[0].str)) > 128)
3860 			cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3861 		else if (atoi((yyvsp[0].str)) < 0)
3862 			cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3863 		else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3864 	#else
3865 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3866 	#endif
3867 		free((yyvsp[0].str));
3868 	}
3869 #line 3870 "util/configparser.c"
3870     break;
3871 
3872   case 319:
3873 #line 680 "util/configparser.y"
3874         {
3875 	#ifdef CLIENT_SUBNET
3876 		OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3877 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3878 			yyerror("IPv4 ECS tree size expected");
3879 		else if (atoi((yyvsp[0].str)) < 0)
3880 			cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3881 		else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3882 	#else
3883 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3884 	#endif
3885 		free((yyvsp[0].str));
3886 	}
3887 #line 3888 "util/configparser.c"
3888     break;
3889 
3890   case 320:
3891 #line 695 "util/configparser.y"
3892         {
3893 	#ifdef CLIENT_SUBNET
3894 		OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3895 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3896 			yyerror("IPv6 ECS tree size expected");
3897 		else if (atoi((yyvsp[0].str)) < 0)
3898 			cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3899 		else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3900 	#else
3901 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3902 	#endif
3903 		free((yyvsp[0].str));
3904 	}
3905 #line 3906 "util/configparser.c"
3906     break;
3907 
3908   case 321:
3909 #line 710 "util/configparser.y"
3910         {
3911 		OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3912 		if(cfg_parser->cfg->num_ifs == 0)
3913 			cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3914 		else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3915 				(cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3916 		if(!cfg_parser->cfg->ifs)
3917 			yyerror("out of memory");
3918 		else
3919 			cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3920 	}
3921 #line 3922 "util/configparser.c"
3922     break;
3923 
3924   case 322:
3925 #line 723 "util/configparser.y"
3926         {
3927 		OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3928 		if(cfg_parser->cfg->num_out_ifs == 0)
3929 			cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3930 		else cfg_parser->cfg->out_ifs = realloc(
3931 			cfg_parser->cfg->out_ifs,
3932 			(cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3933 		if(!cfg_parser->cfg->out_ifs)
3934 			yyerror("out of memory");
3935 		else
3936 			cfg_parser->cfg->out_ifs[
3937 				cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3938 	}
3939 #line 3940 "util/configparser.c"
3940     break;
3941 
3942   case 323:
3943 #line 738 "util/configparser.y"
3944         {
3945 		OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3946 		if(atoi((yyvsp[0].str)) == 0)
3947 			yyerror("number expected");
3948 		else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3949 		free((yyvsp[0].str));
3950 	}
3951 #line 3952 "util/configparser.c"
3952     break;
3953 
3954   case 324:
3955 #line 747 "util/configparser.y"
3956         {
3957 		OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3958 		if(!cfg_mark_ports((yyvsp[0].str), 1,
3959 			cfg_parser->cfg->outgoing_avail_ports, 65536))
3960 			yyerror("port number or range (\"low-high\") expected");
3961 		free((yyvsp[0].str));
3962 	}
3963 #line 3964 "util/configparser.c"
3964     break;
3965 
3966   case 325:
3967 #line 756 "util/configparser.y"
3968         {
3969 		OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3970 		if(!cfg_mark_ports((yyvsp[0].str), 0,
3971 			cfg_parser->cfg->outgoing_avail_ports, 65536))
3972 			yyerror("port number or range (\"low-high\") expected");
3973 		free((yyvsp[0].str));
3974 	}
3975 #line 3976 "util/configparser.c"
3976     break;
3977 
3978   case 326:
3979 #line 765 "util/configparser.y"
3980         {
3981 		OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3982 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3983 			yyerror("number expected");
3984 		else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3985 		free((yyvsp[0].str));
3986 	}
3987 #line 3988 "util/configparser.c"
3988     break;
3989 
3990   case 327:
3991 #line 774 "util/configparser.y"
3992         {
3993 		OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3994 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3995 			yyerror("number expected");
3996 		else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3997 		free((yyvsp[0].str));
3998 	}
3999 #line 4000 "util/configparser.c"
4000     break;
4001 
4002   case 328:
4003 #line 783 "util/configparser.y"
4004         {
4005 		OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
4006 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4007 			yyerror("expected yes or no.");
4008 		else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
4009 		free((yyvsp[0].str));
4010 	}
4011 #line 4012 "util/configparser.c"
4012     break;
4013 
4014   case 329:
4015 #line 792 "util/configparser.y"
4016         {
4017 		OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
4018 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4019 			yyerror("expected yes or no.");
4020 		else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
4021 		free((yyvsp[0].str));
4022 	}
4023 #line 4024 "util/configparser.c"
4024     break;
4025 
4026   case 330:
4027 #line 801 "util/configparser.y"
4028         {
4029 		OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
4030 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4031 			yyerror("expected yes or no.");
4032 		else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
4033 		free((yyvsp[0].str));
4034 	}
4035 #line 4036 "util/configparser.c"
4036     break;
4037 
4038   case 331:
4039 #line 810 "util/configparser.y"
4040         {
4041 		OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
4042 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4043 			yyerror("expected yes or no.");
4044 		else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
4045 		free((yyvsp[0].str));
4046 	}
4047 #line 4048 "util/configparser.c"
4048     break;
4049 
4050   case 332:
4051 #line 819 "util/configparser.y"
4052         {
4053 		OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
4054 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4055 			yyerror("expected yes or no.");
4056 		else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
4057 		free((yyvsp[0].str));
4058 	}
4059 #line 4060 "util/configparser.c"
4060     break;
4061 
4062   case 333:
4063 #line 828 "util/configparser.y"
4064         {
4065 		OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
4066 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4067 			yyerror("expected yes or no.");
4068 		else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
4069 		free((yyvsp[0].str));
4070 	}
4071 #line 4072 "util/configparser.c"
4072     break;
4073 
4074   case 334:
4075 #line 837 "util/configparser.y"
4076         {
4077 		OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
4078 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4079 			yyerror("expected yes or no.");
4080 		else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
4081 		free((yyvsp[0].str));
4082 	}
4083 #line 4084 "util/configparser.c"
4084     break;
4085 
4086   case 335:
4087 #line 846 "util/configparser.y"
4088         {
4089 		OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
4090 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4091 				yyerror("number expected");
4092 		else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
4093 		free((yyvsp[0].str));
4094 	}
4095 #line 4096 "util/configparser.c"
4096     break;
4097 
4098   case 336:
4099 #line 855 "util/configparser.y"
4100         {
4101 		OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
4102 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4103 			yyerror("number expected");
4104 		else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
4105 		free((yyvsp[0].str));
4106 	}
4107 #line 4108 "util/configparser.c"
4108     break;
4109 
4110   case 337:
4111 #line 864 "util/configparser.y"
4112         {
4113 		OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
4114 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4115 			yyerror("number expected");
4116 		else if (atoi((yyvsp[0].str)) > 120000)
4117 			cfg_parser->cfg->tcp_idle_timeout = 120000;
4118 		else if (atoi((yyvsp[0].str)) < 1)
4119 			cfg_parser->cfg->tcp_idle_timeout = 1;
4120 		else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
4121 		free((yyvsp[0].str));
4122 	}
4123 #line 4124 "util/configparser.c"
4124     break;
4125 
4126   case 338:
4127 #line 877 "util/configparser.y"
4128         {
4129 		OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
4130 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4131 			yyerror("number expected");
4132 		else if (atoi((yyvsp[0].str)) < 1)
4133 			cfg_parser->cfg->max_reuse_tcp_queries = 0;
4134 		else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
4135 		free((yyvsp[0].str));
4136 	}
4137 #line 4138 "util/configparser.c"
4138     break;
4139 
4140   case 339:
4141 #line 888 "util/configparser.y"
4142         {
4143 		OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
4144 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4145 			yyerror("number expected");
4146 		else if (atoi((yyvsp[0].str)) < 1)
4147 			cfg_parser->cfg->tcp_reuse_timeout = 0;
4148 		else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
4149 		free((yyvsp[0].str));
4150 	}
4151 #line 4152 "util/configparser.c"
4152     break;
4153 
4154   case 340:
4155 #line 899 "util/configparser.y"
4156         {
4157 		OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
4158 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4159 			yyerror("number expected");
4160 		else if (atoi((yyvsp[0].str)) < 1)
4161 			cfg_parser->cfg->tcp_auth_query_timeout = 0;
4162 		else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
4163 		free((yyvsp[0].str));
4164 	}
4165 #line 4166 "util/configparser.c"
4166     break;
4167 
4168   case 341:
4169 #line 910 "util/configparser.y"
4170         {
4171 		OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
4172 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4173 			yyerror("expected yes or no.");
4174 		else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
4175 		free((yyvsp[0].str));
4176 	}
4177 #line 4178 "util/configparser.c"
4178     break;
4179 
4180   case 342:
4181 #line 919 "util/configparser.y"
4182         {
4183 		OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
4184 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4185 			yyerror("number expected");
4186 		else if (atoi((yyvsp[0].str)) > 6553500)
4187 			cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
4188 		else if (atoi((yyvsp[0].str)) < 1)
4189 			cfg_parser->cfg->tcp_keepalive_timeout = 0;
4190 		else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
4191 		free((yyvsp[0].str));
4192 	}
4193 #line 4194 "util/configparser.c"
4194     break;
4195 
4196   case 343:
4197 #line 932 "util/configparser.y"
4198         {
4199 		OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
4200 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4201 			yyerror("expected yes or no.");
4202 		else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
4203 		free((yyvsp[0].str));
4204 	}
4205 #line 4206 "util/configparser.c"
4206     break;
4207 
4208   case 344:
4209 #line 941 "util/configparser.y"
4210         {
4211 		OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
4212 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4213 			yyerror("expected yes or no.");
4214 		else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4215 		free((yyvsp[0].str));
4216 	}
4217 #line 4218 "util/configparser.c"
4218     break;
4219 
4220   case 345:
4221 #line 950 "util/configparser.y"
4222         {
4223 		OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
4224 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4225 			yyerror("expected yes or no.");
4226 		else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
4227 		free((yyvsp[0].str));
4228 	}
4229 #line 4230 "util/configparser.c"
4230     break;
4231 
4232   case 346:
4233 #line 959 "util/configparser.y"
4234         {
4235 		OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
4236 		free(cfg_parser->cfg->ssl_service_key);
4237 		cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
4238 	}
4239 #line 4240 "util/configparser.c"
4240     break;
4241 
4242   case 347:
4243 #line 966 "util/configparser.y"
4244         {
4245 		OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
4246 		free(cfg_parser->cfg->ssl_service_pem);
4247 		cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
4248 	}
4249 #line 4250 "util/configparser.c"
4250     break;
4251 
4252   case 348:
4253 #line 973 "util/configparser.y"
4254         {
4255 		OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
4256 		if(atoi((yyvsp[0].str)) == 0)
4257 			yyerror("port number expected");
4258 		else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
4259 		free((yyvsp[0].str));
4260 	}
4261 #line 4262 "util/configparser.c"
4262     break;
4263 
4264   case 349:
4265 #line 982 "util/configparser.y"
4266         {
4267 		OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
4268 		free(cfg_parser->cfg->tls_cert_bundle);
4269 		cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
4270 	}
4271 #line 4272 "util/configparser.c"
4272     break;
4273 
4274   case 350:
4275 #line 989 "util/configparser.y"
4276         {
4277 		OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
4278 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4279 			yyerror("expected yes or no.");
4280 		else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
4281 		free((yyvsp[0].str));
4282 	}
4283 #line 4284 "util/configparser.c"
4284     break;
4285 
4286   case 351:
4287 #line 998 "util/configparser.y"
4288         {
4289 		OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
4290 		if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
4291 			(yyvsp[0].str)))
4292 			yyerror("out of memory");
4293 	}
4294 #line 4295 "util/configparser.c"
4295     break;
4296 
4297   case 352:
4298 #line 1006 "util/configparser.y"
4299         {
4300 		OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
4301 		free(cfg_parser->cfg->tls_ciphers);
4302 		cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
4303 	}
4304 #line 4305 "util/configparser.c"
4305     break;
4306 
4307   case 353:
4308 #line 1013 "util/configparser.y"
4309         {
4310 		OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
4311 		free(cfg_parser->cfg->tls_ciphersuites);
4312 		cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
4313 	}
4314 #line 4315 "util/configparser.c"
4315     break;
4316 
4317   case 354:
4318 #line 1020 "util/configparser.y"
4319         {
4320 		OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
4321 		if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
4322 			(yyvsp[0].str)))
4323 			yyerror("out of memory");
4324 	}
4325 #line 4326 "util/configparser.c"
4326     break;
4327 
4328   case 355:
4329 #line 1028 "util/configparser.y"
4330         {
4331 		OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4332 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4333 			yyerror("expected yes or no.");
4334 		else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4335 		free((yyvsp[0].str));
4336 	}
4337 #line 4338 "util/configparser.c"
4338     break;
4339 
4340   case 356:
4341 #line 1037 "util/configparser.y"
4342         {
4343 		OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4344 		if(atoi((yyvsp[0].str)) == 0)
4345 			yyerror("port number expected");
4346 		else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4347 		free((yyvsp[0].str));
4348 	}
4349 #line 4350 "util/configparser.c"
4350     break;
4351 
4352   case 357:
4353 #line 1045 "util/configparser.y"
4354         {
4355 		OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4356 		free(cfg_parser->cfg->http_endpoint);
4357 		if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4358 			cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4359 			if(!cfg_parser->cfg->http_endpoint)
4360 				yyerror("out of memory");
4361 			cfg_parser->cfg->http_endpoint[0] = '/';
4362 			memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4363 				strlen((yyvsp[0].str))+1);
4364 			free((yyvsp[0].str));
4365 		} else {
4366 			cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4367 		}
4368 	}
4369 #line 4370 "util/configparser.c"
4370     break;
4371 
4372   case 358:
4373 #line 1061 "util/configparser.y"
4374         {
4375 		OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4376 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4377 			yyerror("number expected");
4378 		else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4379 		free((yyvsp[0].str));
4380 	}
4381 #line 4382 "util/configparser.c"
4382     break;
4383 
4384   case 359:
4385 #line 1069 "util/configparser.y"
4386         {
4387 		OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4388 		if(!cfg_parse_memsize((yyvsp[0].str),
4389 			&cfg_parser->cfg->http_query_buffer_size))
4390 			yyerror("memory size expected");
4391 		free((yyvsp[0].str));
4392 	}
4393 #line 4394 "util/configparser.c"
4394     break;
4395 
4396   case 360:
4397 #line 1077 "util/configparser.y"
4398         {
4399 		OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4400 		if(!cfg_parse_memsize((yyvsp[0].str),
4401 			&cfg_parser->cfg->http_response_buffer_size))
4402 			yyerror("memory size expected");
4403 		free((yyvsp[0].str));
4404 	}
4405 #line 4406 "util/configparser.c"
4406     break;
4407 
4408   case 361:
4409 #line 1085 "util/configparser.y"
4410         {
4411 		OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4412 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4413 			yyerror("expected yes or no.");
4414 		else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4415 		free((yyvsp[0].str));
4416 	}
4417 #line 4418 "util/configparser.c"
4418     break;
4419 
4420   case 362:
4421 #line 1093 "util/configparser.y"
4422         {
4423 		OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4424 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4425 			yyerror("expected yes or no.");
4426 		else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4427 		free((yyvsp[0].str));
4428 	}
4429 #line 4430 "util/configparser.c"
4430     break;
4431 
4432   case 363:
4433 #line 1101 "util/configparser.y"
4434         {
4435 		OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4436 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4437 			yyerror("expected yes or no.");
4438 		else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4439 		free((yyvsp[0].str));
4440 	}
4441 #line 4442 "util/configparser.c"
4442     break;
4443 
4444   case 364:
4445 #line 1110 "util/configparser.y"
4446         {
4447 		OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4448 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4449 			yyerror("expected yes or no.");
4450 		else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4451 		free((yyvsp[0].str));
4452 	}
4453 #line 4454 "util/configparser.c"
4454     break;
4455 
4456   case 365:
4457 #line 1119 "util/configparser.y"
4458         {
4459 		OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4460 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4461 			yyerror("expected yes or no.");
4462 		else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4463 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4464 		if(strcmp((yyvsp[0].str), "yes") == 0)
4465 			yyerror("no syslog services are available. "
4466 				"(reconfigure and compile to add)");
4467 #endif
4468 		free((yyvsp[0].str));
4469 	}
4470 #line 4471 "util/configparser.c"
4471     break;
4472 
4473   case 366:
4474 #line 1133 "util/configparser.y"
4475         {
4476 		OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4477 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4478 			yyerror("expected yes or no.");
4479 		else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4480 		free((yyvsp[0].str));
4481 	}
4482 #line 4483 "util/configparser.c"
4483     break;
4484 
4485   case 367:
4486 #line 1142 "util/configparser.y"
4487         {
4488 		OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4489 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4490 			yyerror("expected yes or no.");
4491 		else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4492 		free((yyvsp[0].str));
4493 	}
4494 #line 4495 "util/configparser.c"
4495     break;
4496 
4497   case 368:
4498 #line 1151 "util/configparser.y"
4499         {
4500 		OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4501 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4502 			yyerror("expected yes or no.");
4503 		else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4504 		free((yyvsp[0].str));
4505 	}
4506 #line 4507 "util/configparser.c"
4507     break;
4508 
4509   case 369:
4510 #line 1160 "util/configparser.y"
4511         {
4512 		OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4513 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4514 			yyerror("expected yes or no.");
4515 		else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4516 		free((yyvsp[0].str));
4517 	}
4518 #line 4519 "util/configparser.c"
4519     break;
4520 
4521   case 370:
4522 #line 1169 "util/configparser.y"
4523         {
4524 		OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4525 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4526 			yyerror("expected yes or no.");
4527 		else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4528 		free((yyvsp[0].str));
4529 	}
4530 #line 4531 "util/configparser.c"
4531     break;
4532 
4533   case 371:
4534 #line 1178 "util/configparser.y"
4535         {
4536 		OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4537 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4538 			yyerror("expected yes or no.");
4539 		else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4540 		free((yyvsp[0].str));
4541 	}
4542 #line 4543 "util/configparser.c"
4543     break;
4544 
4545   case 372:
4546 #line 1187 "util/configparser.y"
4547         {
4548 		OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4549 		free(cfg_parser->cfg->chrootdir);
4550 		cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4551 	}
4552 #line 4553 "util/configparser.c"
4553     break;
4554 
4555   case 373:
4556 #line 1194 "util/configparser.y"
4557         {
4558 		OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4559 		free(cfg_parser->cfg->username);
4560 		cfg_parser->cfg->username = (yyvsp[0].str);
4561 	}
4562 #line 4563 "util/configparser.c"
4563     break;
4564 
4565   case 374:
4566 #line 1201 "util/configparser.y"
4567         {
4568 		OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4569 		free(cfg_parser->cfg->directory);
4570 		cfg_parser->cfg->directory = (yyvsp[0].str);
4571 		/* change there right away for includes relative to this */
4572 		if((yyvsp[0].str)[0]) {
4573 			char* d;
4574 #ifdef UB_ON_WINDOWS
4575 			w_config_adjust_directory(cfg_parser->cfg);
4576 #endif
4577 			d = cfg_parser->cfg->directory;
4578 			/* adjust directory if we have already chroot,
4579 			 * like, we reread after sighup */
4580 			if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4581 				strncmp(d, cfg_parser->chroot, strlen(
4582 				cfg_parser->chroot)) == 0)
4583 				d += strlen(cfg_parser->chroot);
4584 			if(d[0]) {
4585 				if(chdir(d))
4586 				log_err("cannot chdir to directory: %s (%s)",
4587 					d, strerror(errno));
4588 			}
4589 		}
4590 	}
4591 #line 4592 "util/configparser.c"
4592     break;
4593 
4594   case 375:
4595 #line 1227 "util/configparser.y"
4596         {
4597 		OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4598 		free(cfg_parser->cfg->logfile);
4599 		cfg_parser->cfg->logfile = (yyvsp[0].str);
4600 		cfg_parser->cfg->use_syslog = 0;
4601 	}
4602 #line 4603 "util/configparser.c"
4603     break;
4604 
4605   case 376:
4606 #line 1235 "util/configparser.y"
4607         {
4608 		OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4609 		free(cfg_parser->cfg->pidfile);
4610 		cfg_parser->cfg->pidfile = (yyvsp[0].str);
4611 	}
4612 #line 4613 "util/configparser.c"
4613     break;
4614 
4615   case 377:
4616 #line 1242 "util/configparser.y"
4617         {
4618 		OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4619 		if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4620 			yyerror("out of memory");
4621 	}
4622 #line 4623 "util/configparser.c"
4623     break;
4624 
4625   case 378:
4626 #line 1249 "util/configparser.y"
4627         {
4628 		OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4629 		log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4630 		free((yyvsp[0].str));
4631 	}
4632 #line 4633 "util/configparser.c"
4633     break;
4634 
4635   case 379:
4636 #line 1256 "util/configparser.y"
4637         {
4638 		OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4639 		log_warn("option dlv-anchor ignored: DLV is decommissioned");
4640 		free((yyvsp[0].str));
4641 	}
4642 #line 4643 "util/configparser.c"
4643     break;
4644 
4645   case 380:
4646 #line 1263 "util/configparser.y"
4647         {
4648 		OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4649 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4650 			auto_trust_anchor_file_list, (yyvsp[0].str)))
4651 			yyerror("out of memory");
4652 	}
4653 #line 4654 "util/configparser.c"
4654     break;
4655 
4656   case 381:
4657 #line 1271 "util/configparser.y"
4658         {
4659 		OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4660 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4661 			trust_anchor_file_list, (yyvsp[0].str)))
4662 			yyerror("out of memory");
4663 	}
4664 #line 4665 "util/configparser.c"
4665     break;
4666 
4667   case 382:
4668 #line 1279 "util/configparser.y"
4669         {
4670 		OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4671 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4672 			trusted_keys_file_list, (yyvsp[0].str)))
4673 			yyerror("out of memory");
4674 	}
4675 #line 4676 "util/configparser.c"
4676     break;
4677 
4678   case 383:
4679 #line 1287 "util/configparser.y"
4680         {
4681 		OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4682 		if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4683 			yyerror("out of memory");
4684 	}
4685 #line 4686 "util/configparser.c"
4686     break;
4687 
4688   case 384:
4689 #line 1294 "util/configparser.y"
4690         {
4691 		OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4692 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4693 			yyerror("expected yes or no.");
4694 		else
4695 			cfg_parser->cfg->trust_anchor_signaling =
4696 				(strcmp((yyvsp[0].str), "yes")==0);
4697 		free((yyvsp[0].str));
4698 	}
4699 #line 4700 "util/configparser.c"
4700     break;
4701 
4702   case 385:
4703 #line 1305 "util/configparser.y"
4704         {
4705 		OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4706 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4707 			yyerror("expected yes or no.");
4708 		else
4709 			cfg_parser->cfg->root_key_sentinel =
4710 				(strcmp((yyvsp[0].str), "yes")==0);
4711 		free((yyvsp[0].str));
4712 	}
4713 #line 4714 "util/configparser.c"
4714     break;
4715 
4716   case 386:
4717 #line 1316 "util/configparser.y"
4718         {
4719 		OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4720 		if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4721 			yyerror("out of memory");
4722 	}
4723 #line 4724 "util/configparser.c"
4724     break;
4725 
4726   case 387:
4727 #line 1323 "util/configparser.y"
4728         {
4729 		OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4730 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4731 			yyerror("expected yes or no.");
4732 		else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4733 		free((yyvsp[0].str));
4734 	}
4735 #line 4736 "util/configparser.c"
4736     break;
4737 
4738   case 388:
4739 #line 1332 "util/configparser.y"
4740         {
4741 		OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4742 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4743 			yyerror("expected yes or no.");
4744 		else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4745 		free((yyvsp[0].str));
4746 	}
4747 #line 4748 "util/configparser.c"
4748     break;
4749 
4750   case 389:
4751 #line 1341 "util/configparser.y"
4752         {
4753 		OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4754 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4755 			yyerror("expected yes or no.");
4756 		else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4757 		free((yyvsp[0].str));
4758 	}
4759 #line 4760 "util/configparser.c"
4760     break;
4761 
4762   case 390:
4763 #line 1350 "util/configparser.y"
4764         {
4765 		OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4766 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4767 			yyerror("expected yes or no.");
4768 		else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4769 		free((yyvsp[0].str));
4770 	}
4771 #line 4772 "util/configparser.c"
4772     break;
4773 
4774   case 391:
4775 #line 1359 "util/configparser.y"
4776         {
4777 		OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4778 		free(cfg_parser->cfg->identity);
4779 		cfg_parser->cfg->identity = (yyvsp[0].str);
4780 	}
4781 #line 4782 "util/configparser.c"
4782     break;
4783 
4784   case 392:
4785 #line 1366 "util/configparser.y"
4786         {
4787 		OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4788 		free(cfg_parser->cfg->version);
4789 		cfg_parser->cfg->version = (yyvsp[0].str);
4790 	}
4791 #line 4792 "util/configparser.c"
4792     break;
4793 
4794   case 393:
4795 #line 1373 "util/configparser.y"
4796         {
4797 		OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4798 		free(cfg_parser->cfg->http_user_agent);
4799 		cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4800 	}
4801 #line 4802 "util/configparser.c"
4802     break;
4803 
4804   case 394:
4805 #line 1380 "util/configparser.y"
4806         {
4807 		OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4808 		free(cfg_parser->cfg->nsid_cfg_str);
4809 		cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4810 		free(cfg_parser->cfg->nsid);
4811 		cfg_parser->cfg->nsid = NULL;
4812 		cfg_parser->cfg->nsid_len = 0;
4813 		if (*(yyvsp[0].str) == 0)
4814 			; /* pass; empty string is not setting nsid */
4815 		else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4816 					(yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4817 			yyerror("the NSID must be either a hex string or an "
4818 			    "ascii character string prepended with ascii_.");
4819 	}
4820 #line 4821 "util/configparser.c"
4821     break;
4822 
4823   case 395:
4824 #line 1396 "util/configparser.y"
4825         {
4826 		OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4827 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4828 			yyerror("buffer size expected");
4829 		free((yyvsp[0].str));
4830 	}
4831 #line 4832 "util/configparser.c"
4832     break;
4833 
4834   case 396:
4835 #line 1404 "util/configparser.y"
4836         {
4837 		OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4838 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4839 			yyerror("buffer size expected");
4840 		free((yyvsp[0].str));
4841 	}
4842 #line 4843 "util/configparser.c"
4843     break;
4844 
4845   case 397:
4846 #line 1412 "util/configparser.y"
4847         {
4848 		OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4849 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4850 			yyerror("expected yes or no.");
4851 		else cfg_parser->cfg->so_reuseport =
4852 			(strcmp((yyvsp[0].str), "yes")==0);
4853 		free((yyvsp[0].str));
4854 	}
4855 #line 4856 "util/configparser.c"
4856     break;
4857 
4858   case 398:
4859 #line 1422 "util/configparser.y"
4860         {
4861 		OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4862 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4863 			yyerror("expected yes or no.");
4864 		else cfg_parser->cfg->ip_transparent =
4865 			(strcmp((yyvsp[0].str), "yes")==0);
4866 		free((yyvsp[0].str));
4867 	}
4868 #line 4869 "util/configparser.c"
4869     break;
4870 
4871   case 399:
4872 #line 1432 "util/configparser.y"
4873         {
4874 		OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4875 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4876 			yyerror("expected yes or no.");
4877 		else cfg_parser->cfg->ip_freebind =
4878 			(strcmp((yyvsp[0].str), "yes")==0);
4879 		free((yyvsp[0].str));
4880 	}
4881 #line 4882 "util/configparser.c"
4882     break;
4883 
4884   case 400:
4885 #line 1442 "util/configparser.y"
4886         {
4887 		OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4888 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4889 			yyerror("number expected");
4890 		else if (atoi((yyvsp[0].str)) > 63)
4891 			yyerror("value too large (max 63)");
4892 		else if (atoi((yyvsp[0].str)) < 0)
4893 			yyerror("value too small (min 0)");
4894 		else
4895 			cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4896 		free((yyvsp[0].str));
4897 	}
4898 #line 4899 "util/configparser.c"
4899     break;
4900 
4901   case 401:
4902 #line 1456 "util/configparser.y"
4903         {
4904 		OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4905 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4906 			yyerror("memory size expected");
4907 		free((yyvsp[0].str));
4908 	}
4909 #line 4910 "util/configparser.c"
4910     break;
4911 
4912   case 402:
4913 #line 1464 "util/configparser.y"
4914         {
4915 		OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4916 		if(atoi((yyvsp[0].str)) == 0)
4917 			yyerror("number expected");
4918 		else if (atoi((yyvsp[0].str)) < 12)
4919 			yyerror("edns buffer size too small");
4920 		else if (atoi((yyvsp[0].str)) > 65535)
4921 			cfg_parser->cfg->edns_buffer_size = 65535;
4922 		else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4923 		free((yyvsp[0].str));
4924 	}
4925 #line 4926 "util/configparser.c"
4926     break;
4927 
4928   case 403:
4929 #line 1477 "util/configparser.y"
4930         {
4931 		OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4932 		if(atoi((yyvsp[0].str)) == 0)
4933 			yyerror("number expected");
4934 		else if (atoi((yyvsp[0].str)) < 4096)
4935 			yyerror("message buffer size too small (use 4096)");
4936 		else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4937 		free((yyvsp[0].str));
4938 	}
4939 #line 4940 "util/configparser.c"
4940     break;
4941 
4942   case 404:
4943 #line 1488 "util/configparser.y"
4944         {
4945 		OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4946 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4947 			yyerror("memory size expected");
4948 		free((yyvsp[0].str));
4949 	}
4950 #line 4951 "util/configparser.c"
4951     break;
4952 
4953   case 405:
4954 #line 1496 "util/configparser.y"
4955         {
4956 		OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4957 		if(atoi((yyvsp[0].str)) == 0) {
4958 			yyerror("number expected");
4959 		} else {
4960 			cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4961 			if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4962 				yyerror("must be a power of 2");
4963 		}
4964 		free((yyvsp[0].str));
4965 	}
4966 #line 4967 "util/configparser.c"
4967     break;
4968 
4969   case 406:
4970 #line 1509 "util/configparser.y"
4971         {
4972 		OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4973 		if(atoi((yyvsp[0].str)) == 0)
4974 			yyerror("number expected");
4975 		else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4976 		free((yyvsp[0].str));
4977 	}
4978 #line 4979 "util/configparser.c"
4979     break;
4980 
4981   case 407:
4982 #line 1518 "util/configparser.y"
4983         {
4984 		OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4985 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4986 			yyerror("number expected");
4987 		else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4988 		free((yyvsp[0].str));
4989 	}
4990 #line 4991 "util/configparser.c"
4991     break;
4992 
4993   case 408:
4994 #line 1527 "util/configparser.y"
4995         {
4996 		OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4997 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4998 			yyerror("number expected");
4999 		else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
5000 		free((yyvsp[0].str));
5001 	}
5002 #line 5003 "util/configparser.c"
5003     break;
5004 
5005   case 409:
5006 #line 1536 "util/configparser.y"
5007         {
5008 		OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
5009 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5010 			yyerror("expected yes or no.");
5011 		else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
5012 		free((yyvsp[0].str));
5013 	}
5014 #line 5015 "util/configparser.c"
5015     break;
5016 
5017   case 410:
5018 #line 1545 "util/configparser.y"
5019         {
5020 		OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
5021 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5022 			yyerror("expected yes or no.");
5023 		else cfg_parser->cfg->unblock_lan_zones =
5024 			(strcmp((yyvsp[0].str), "yes")==0);
5025 		free((yyvsp[0].str));
5026 	}
5027 #line 5028 "util/configparser.c"
5028     break;
5029 
5030   case 411:
5031 #line 1555 "util/configparser.y"
5032         {
5033 		OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
5034 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5035 			yyerror("expected yes or no.");
5036 		else cfg_parser->cfg->insecure_lan_zones =
5037 			(strcmp((yyvsp[0].str), "yes")==0);
5038 		free((yyvsp[0].str));
5039 	}
5040 #line 5041 "util/configparser.c"
5041     break;
5042 
5043   case 412:
5044 #line 1565 "util/configparser.y"
5045         {
5046 		OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
5047 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
5048 			yyerror("memory size expected");
5049 		free((yyvsp[0].str));
5050 	}
5051 #line 5052 "util/configparser.c"
5052     break;
5053 
5054   case 413:
5055 #line 1573 "util/configparser.y"
5056         {
5057 		OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
5058 		if(atoi((yyvsp[0].str)) == 0) {
5059 			yyerror("number expected");
5060 		} else {
5061 			cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
5062 			if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
5063 				yyerror("must be a power of 2");
5064 		}
5065 		free((yyvsp[0].str));
5066 	}
5067 #line 5068 "util/configparser.c"
5068     break;
5069 
5070   case 414:
5071 #line 1586 "util/configparser.y"
5072         {
5073 		OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
5074 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5075 			yyerror("number expected");
5076 		else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
5077 		free((yyvsp[0].str));
5078 	}
5079 #line 5080 "util/configparser.c"
5080     break;
5081 
5082   case 415:
5083 #line 1595 "util/configparser.y"
5084         {
5085 		OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
5086 		verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
5087 			"removed, use infra-host-ttl)", (yyvsp[0].str));
5088 		free((yyvsp[0].str));
5089 	}
5090 #line 5091 "util/configparser.c"
5091     break;
5092 
5093   case 416:
5094 #line 1603 "util/configparser.y"
5095         {
5096 		OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
5097 		if(atoi((yyvsp[0].str)) == 0)
5098 			yyerror("number expected");
5099 		else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
5100 		free((yyvsp[0].str));
5101 	}
5102 #line 5103 "util/configparser.c"
5103     break;
5104 
5105   case 417:
5106 #line 1612 "util/configparser.y"
5107         {
5108 		OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
5109 		verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
5110 			"(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
5111 		free((yyvsp[0].str));
5112 	}
5113 #line 5114 "util/configparser.c"
5114     break;
5115 
5116   case 418:
5117 #line 1620 "util/configparser.y"
5118         {
5119 		OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
5120 		if(atoi((yyvsp[0].str)) == 0) {
5121 			yyerror("number expected");
5122 		} else {
5123 			cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
5124 			if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
5125 				yyerror("must be a power of 2");
5126 		}
5127 		free((yyvsp[0].str));
5128 	}
5129 #line 5130 "util/configparser.c"
5130     break;
5131 
5132   case 419:
5133 #line 1633 "util/configparser.y"
5134         {
5135 		OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
5136 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5137 			yyerror("number expected");
5138 		else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
5139 		free((yyvsp[0].str));
5140 	}
5141 #line 5142 "util/configparser.c"
5142     break;
5143 
5144   case 420:
5145 #line 1642 "util/configparser.y"
5146         {
5147 		OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
5148 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5149 			yyerror("expected yes or no.");
5150 		else cfg_parser->cfg->infra_keep_probing =
5151 			(strcmp((yyvsp[0].str), "yes")==0);
5152 		free((yyvsp[0].str));
5153 	}
5154 #line 5155 "util/configparser.c"
5155     break;
5156 
5157   case 421:
5158 #line 1652 "util/configparser.y"
5159         {
5160 		OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
5161 		free(cfg_parser->cfg->target_fetch_policy);
5162 		cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
5163 	}
5164 #line 5165 "util/configparser.c"
5165     break;
5166 
5167   case 422:
5168 #line 1659 "util/configparser.y"
5169         {
5170 		OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
5171 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5172 			yyerror("expected yes or no.");
5173 		else cfg_parser->cfg->harden_short_bufsize =
5174 			(strcmp((yyvsp[0].str), "yes")==0);
5175 		free((yyvsp[0].str));
5176 	}
5177 #line 5178 "util/configparser.c"
5178     break;
5179 
5180   case 423:
5181 #line 1669 "util/configparser.y"
5182         {
5183 		OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
5184 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5185 			yyerror("expected yes or no.");
5186 		else cfg_parser->cfg->harden_large_queries =
5187 			(strcmp((yyvsp[0].str), "yes")==0);
5188 		free((yyvsp[0].str));
5189 	}
5190 #line 5191 "util/configparser.c"
5191     break;
5192 
5193   case 424:
5194 #line 1679 "util/configparser.y"
5195         {
5196 		OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
5197 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5198 			yyerror("expected yes or no.");
5199 		else cfg_parser->cfg->harden_glue =
5200 			(strcmp((yyvsp[0].str), "yes")==0);
5201 		free((yyvsp[0].str));
5202 	}
5203 #line 5204 "util/configparser.c"
5204     break;
5205 
5206   case 425:
5207 #line 1689 "util/configparser.y"
5208         {
5209 		OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
5210 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5211 			yyerror("expected yes or no.");
5212 		else cfg_parser->cfg->harden_dnssec_stripped =
5213 			(strcmp((yyvsp[0].str), "yes")==0);
5214 		free((yyvsp[0].str));
5215 	}
5216 #line 5217 "util/configparser.c"
5217     break;
5218 
5219   case 426:
5220 #line 1699 "util/configparser.y"
5221         {
5222 		OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
5223 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5224 			yyerror("expected yes or no.");
5225 		else cfg_parser->cfg->harden_below_nxdomain =
5226 			(strcmp((yyvsp[0].str), "yes")==0);
5227 		free((yyvsp[0].str));
5228 	}
5229 #line 5230 "util/configparser.c"
5230     break;
5231 
5232   case 427:
5233 #line 1709 "util/configparser.y"
5234         {
5235 		OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
5236 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5237 			yyerror("expected yes or no.");
5238 		else cfg_parser->cfg->harden_referral_path =
5239 			(strcmp((yyvsp[0].str), "yes")==0);
5240 		free((yyvsp[0].str));
5241 	}
5242 #line 5243 "util/configparser.c"
5243     break;
5244 
5245   case 428:
5246 #line 1719 "util/configparser.y"
5247         {
5248 		OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5249 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5250 			yyerror("expected yes or no.");
5251 		else cfg_parser->cfg->harden_algo_downgrade =
5252 			(strcmp((yyvsp[0].str), "yes")==0);
5253 		free((yyvsp[0].str));
5254 	}
5255 #line 5256 "util/configparser.c"
5256     break;
5257 
5258   case 429:
5259 #line 1729 "util/configparser.y"
5260         {
5261 		OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5262 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5263 			yyerror("expected yes or no.");
5264 		else cfg_parser->cfg->use_caps_bits_for_id =
5265 			(strcmp((yyvsp[0].str), "yes")==0);
5266 		free((yyvsp[0].str));
5267 	}
5268 #line 5269 "util/configparser.c"
5269     break;
5270 
5271   case 430:
5272 #line 1739 "util/configparser.y"
5273         {
5274 		OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5275 		if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5276 			yyerror("out of memory");
5277 	}
5278 #line 5279 "util/configparser.c"
5279     break;
5280 
5281   case 431:
5282 #line 1746 "util/configparser.y"
5283         {
5284 		OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5285 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5286 			yyerror("out of memory");
5287 	}
5288 #line 5289 "util/configparser.c"
5289     break;
5290 
5291   case 432:
5292 #line 1753 "util/configparser.y"
5293         {
5294 		OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5295 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5296 			yyerror("out of memory");
5297 	}
5298 #line 5299 "util/configparser.c"
5299     break;
5300 
5301   case 433:
5302 #line 1760 "util/configparser.y"
5303         {
5304 		OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5305 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5306 			yyerror("expected yes or no.");
5307 		else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5308 		free((yyvsp[0].str));
5309 	}
5310 #line 5311 "util/configparser.c"
5311     break;
5312 
5313   case 434:
5314 #line 1769 "util/configparser.y"
5315         {
5316 		OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5317 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5318 			yyerror("expected yes or no.");
5319 		else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5320 		free((yyvsp[0].str));
5321 	}
5322 #line 5323 "util/configparser.c"
5323     break;
5324 
5325   case 435:
5326 #line 1778 "util/configparser.y"
5327         {
5328 		OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5329 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5330 			yyerror("expected yes or no.");
5331 		else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5332 		free((yyvsp[0].str));
5333 	}
5334 #line 5335 "util/configparser.c"
5335     break;
5336 
5337   case 436:
5338 #line 1787 "util/configparser.y"
5339         {
5340 		OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5341 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5342 			yyerror("number expected");
5343 		else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5344 		free((yyvsp[0].str));
5345 	}
5346 #line 5347 "util/configparser.c"
5347     break;
5348 
5349   case 437:
5350 #line 1796 "util/configparser.y"
5351         {
5352 		OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5353 		if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5354 			yyerror("out of memory");
5355 	}
5356 #line 5357 "util/configparser.c"
5357     break;
5358 
5359   case 438:
5360 #line 1803 "util/configparser.y"
5361         {
5362 		OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5363 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5364 			yyerror("expected yes or no.");
5365 		else cfg_parser->cfg->donotquery_localhost =
5366 			(strcmp((yyvsp[0].str), "yes")==0);
5367 		free((yyvsp[0].str));
5368 	}
5369 #line 5370 "util/configparser.c"
5370     break;
5371 
5372   case 439:
5373 #line 1813 "util/configparser.y"
5374         {
5375 		OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5376 		if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
5377 			strcmp((yyvsp[0].str), "deny_non_local")!=0 &&
5378 			strcmp((yyvsp[0].str), "refuse_non_local")!=0 &&
5379 			strcmp((yyvsp[0].str), "allow_setrd")!=0 &&
5380 			strcmp((yyvsp[0].str), "allow")!=0 &&
5381 			strcmp((yyvsp[0].str), "allow_snoop")!=0) {
5382 			yyerror("expected deny, refuse, deny_non_local, "
5383 				"refuse_non_local, allow, allow_setrd or "
5384 				"allow_snoop in access control action");
5385 			free((yyvsp[-1].str));
5386 			free((yyvsp[0].str));
5387 		} else {
5388 			if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5389 				fatal_exit("out of memory adding acl");
5390 		}
5391 	}
5392 #line 5393 "util/configparser.c"
5393     break;
5394 
5395   case 440:
5396 #line 1833 "util/configparser.y"
5397         {
5398 		OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5399 		free(cfg_parser->cfg->module_conf);
5400 		cfg_parser->cfg->module_conf = (yyvsp[0].str);
5401 	}
5402 #line 5403 "util/configparser.c"
5403     break;
5404 
5405   case 441:
5406 #line 1840 "util/configparser.y"
5407         {
5408 		OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5409 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5410 			cfg_parser->cfg->val_date_override = 0;
5411 		} else if(strlen((yyvsp[0].str)) == 14) {
5412 			cfg_parser->cfg->val_date_override =
5413 				cfg_convert_timeval((yyvsp[0].str));
5414 			if(!cfg_parser->cfg->val_date_override)
5415 				yyerror("bad date/time specification");
5416 		} else {
5417 			if(atoi((yyvsp[0].str)) == 0)
5418 				yyerror("number expected");
5419 			cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5420 		}
5421 		free((yyvsp[0].str));
5422 	}
5423 #line 5424 "util/configparser.c"
5424     break;
5425 
5426   case 442:
5427 #line 1858 "util/configparser.y"
5428         {
5429 		OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5430 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5431 			cfg_parser->cfg->val_sig_skew_min = 0;
5432 		} else {
5433 			cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5434 			if(!cfg_parser->cfg->val_sig_skew_min)
5435 				yyerror("number expected");
5436 		}
5437 		free((yyvsp[0].str));
5438 	}
5439 #line 5440 "util/configparser.c"
5440     break;
5441 
5442   case 443:
5443 #line 1871 "util/configparser.y"
5444         {
5445 		OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5446 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5447 			cfg_parser->cfg->val_sig_skew_max = 0;
5448 		} else {
5449 			cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5450 			if(!cfg_parser->cfg->val_sig_skew_max)
5451 				yyerror("number expected");
5452 		}
5453 		free((yyvsp[0].str));
5454 	}
5455 #line 5456 "util/configparser.c"
5456     break;
5457 
5458   case 444:
5459 #line 1884 "util/configparser.y"
5460         {
5461 		OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5462 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5463 			cfg_parser->cfg->val_max_restart = 0;
5464 		} else {
5465 			cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5466 			if(!cfg_parser->cfg->val_max_restart)
5467 				yyerror("number expected");
5468 		}
5469 		free((yyvsp[0].str));
5470 	}
5471 #line 5472 "util/configparser.c"
5472     break;
5473 
5474   case 445:
5475 #line 1897 "util/configparser.y"
5476         {
5477 		OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5478 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5479 			yyerror("number expected");
5480 		else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5481 		free((yyvsp[0].str));
5482 	}
5483 #line 5484 "util/configparser.c"
5484     break;
5485 
5486   case 446:
5487 #line 1906 "util/configparser.y"
5488         {
5489 		OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5490 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5491 			yyerror("number expected");
5492 		else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5493 		free((yyvsp[0].str));
5494 	}
5495 #line 5496 "util/configparser.c"
5496     break;
5497 
5498   case 447:
5499 #line 1915 "util/configparser.y"
5500         {
5501 		OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5502 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5503 			yyerror("number expected");
5504 		else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5505 		free((yyvsp[0].str));
5506 	}
5507 #line 5508 "util/configparser.c"
5508     break;
5509 
5510   case 448:
5511 #line 1924 "util/configparser.y"
5512         {
5513 		OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5514 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5515 			yyerror("number expected");
5516 		else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5517 		free((yyvsp[0].str));
5518 	}
5519 #line 5520 "util/configparser.c"
5520     break;
5521 
5522   case 449:
5523 #line 1933 "util/configparser.y"
5524         {
5525 		OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5526 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5527 			yyerror("expected yes or no.");
5528 		else cfg_parser->cfg->val_clean_additional =
5529 			(strcmp((yyvsp[0].str), "yes")==0);
5530 		free((yyvsp[0].str));
5531 	}
5532 #line 5533 "util/configparser.c"
5533     break;
5534 
5535   case 450:
5536 #line 1943 "util/configparser.y"
5537         {
5538 		OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5539 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5540 			yyerror("expected yes or no.");
5541 		else cfg_parser->cfg->val_permissive_mode =
5542 			(strcmp((yyvsp[0].str), "yes")==0);
5543 		free((yyvsp[0].str));
5544 	}
5545 #line 5546 "util/configparser.c"
5546     break;
5547 
5548   case 451:
5549 #line 1953 "util/configparser.y"
5550         {
5551 		OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5552 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5553 			yyerror("expected yes or no.");
5554 		else
5555 			cfg_parser->cfg->aggressive_nsec =
5556 				(strcmp((yyvsp[0].str), "yes")==0);
5557 		free((yyvsp[0].str));
5558 	}
5559 #line 5560 "util/configparser.c"
5560     break;
5561 
5562   case 452:
5563 #line 1964 "util/configparser.y"
5564         {
5565 		OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5566 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5567 			yyerror("expected yes or no.");
5568 		else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5569 		free((yyvsp[0].str));
5570 	}
5571 #line 5572 "util/configparser.c"
5572     break;
5573 
5574   case 453:
5575 #line 1973 "util/configparser.y"
5576         {
5577 		OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5578 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5579 			yyerror("expected yes or no.");
5580 		else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5581 		free((yyvsp[0].str));
5582 	}
5583 #line 5584 "util/configparser.c"
5584     break;
5585 
5586   case 454:
5587 #line 1982 "util/configparser.y"
5588         {
5589 		OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5590 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5591 			yyerror("number expected");
5592 		else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5593 		free((yyvsp[0].str));
5594 	}
5595 #line 5596 "util/configparser.c"
5596     break;
5597 
5598   case 455:
5599 #line 1991 "util/configparser.y"
5600         {
5601 		OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5602 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5603 			yyerror("expected yes or no.");
5604 		else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5605 		free((yyvsp[0].str));
5606 	}
5607 #line 5608 "util/configparser.c"
5608     break;
5609 
5610   case 456:
5611 #line 2000 "util/configparser.y"
5612         {
5613 		OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5614 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5615 			yyerror("number expected");
5616 		else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5617 		free((yyvsp[0].str));
5618 	}
5619 #line 5620 "util/configparser.c"
5620     break;
5621 
5622   case 457:
5623 #line 2009 "util/configparser.y"
5624         {
5625 		OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5626 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5627 			yyerror("number expected");
5628 		else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5629 		free((yyvsp[0].str));
5630 	}
5631 #line 5632 "util/configparser.c"
5632     break;
5633 
5634   case 458:
5635 #line 2018 "util/configparser.y"
5636         {
5637 		OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5638 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5639 			yyerror("expected yes or no.");
5640 		else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5641 		free((yyvsp[0].str));
5642 	}
5643 #line 5644 "util/configparser.c"
5644     break;
5645 
5646   case 459:
5647 #line 2027 "util/configparser.y"
5648         {
5649 		OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5650 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5651 			yyerror("expected yes or no.");
5652 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5653 		else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5654 		if(fake_dsa)
5655 			log_warn("test option fake_dsa is enabled");
5656 #endif
5657 		free((yyvsp[0].str));
5658 	}
5659 #line 5660 "util/configparser.c"
5660     break;
5661 
5662   case 460:
5663 #line 2040 "util/configparser.y"
5664         {
5665 		OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5666 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5667 			yyerror("expected yes or no.");
5668 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5669 		else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5670 		if(fake_sha1)
5671 			log_warn("test option fake_sha1 is enabled");
5672 #endif
5673 		free((yyvsp[0].str));
5674 	}
5675 #line 5676 "util/configparser.c"
5676     break;
5677 
5678   case 461:
5679 #line 2053 "util/configparser.y"
5680         {
5681 		OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5682 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5683 			yyerror("number expected");
5684 		else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5685 		free((yyvsp[0].str));
5686 	}
5687 #line 5688 "util/configparser.c"
5688     break;
5689 
5690   case 462:
5691 #line 2062 "util/configparser.y"
5692         {
5693 		OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5694 		free(cfg_parser->cfg->val_nsec3_key_iterations);
5695 		cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5696 	}
5697 #line 5698 "util/configparser.c"
5698     break;
5699 
5700   case 463:
5701 #line 2069 "util/configparser.y"
5702         {
5703 		OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5704 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5705 			yyerror("expected yes or no.");
5706 		else	cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5707 		free((yyvsp[0].str));
5708 	}
5709 #line 5710 "util/configparser.c"
5710     break;
5711 
5712   case 464:
5713 #line 2078 "util/configparser.y"
5714         {
5715 		OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5716 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5717 			yyerror("number expected");
5718 		else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5719 		free((yyvsp[0].str));
5720 	}
5721 #line 5722 "util/configparser.c"
5722     break;
5723 
5724   case 465:
5725 #line 2087 "util/configparser.y"
5726         {
5727 		OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5728 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5729 			yyerror("number expected");
5730 		else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5731 		free((yyvsp[0].str));
5732 	}
5733 #line 5734 "util/configparser.c"
5734     break;
5735 
5736   case 466:
5737 #line 2096 "util/configparser.y"
5738         {
5739 		OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5740 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5741 			yyerror("number expected");
5742 		else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5743 		free((yyvsp[0].str));
5744 	}
5745 #line 5746 "util/configparser.c"
5746     break;
5747 
5748   case 467:
5749 #line 2105 "util/configparser.y"
5750         {
5751 		OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5752 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5753 			yyerror("expected yes or no.");
5754 		else cfg_parser->cfg->permit_small_holddown =
5755 			(strcmp((yyvsp[0].str), "yes")==0);
5756 		free((yyvsp[0].str));
5757 	}
5758 #line 5759 "util/configparser.c"
5759     break;
5760 
5761   case 468:
5762 #line 2114 "util/configparser.y"
5763         {
5764 		OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5765 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5766 			yyerror("memory size expected");
5767 		free((yyvsp[0].str));
5768 	}
5769 #line 5770 "util/configparser.c"
5770     break;
5771 
5772   case 469:
5773 #line 2122 "util/configparser.y"
5774         {
5775 		OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5776 		if(atoi((yyvsp[0].str)) == 0) {
5777 			yyerror("number expected");
5778 		} else {
5779 			cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5780 			if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5781 				yyerror("must be a power of 2");
5782 		}
5783 		free((yyvsp[0].str));
5784 	}
5785 #line 5786 "util/configparser.c"
5786     break;
5787 
5788   case 470:
5789 #line 2135 "util/configparser.y"
5790         {
5791 		OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5792 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5793 			yyerror("memory size expected");
5794 		free((yyvsp[0].str));
5795 	}
5796 #line 5797 "util/configparser.c"
5797     break;
5798 
5799   case 471:
5800 #line 2143 "util/configparser.y"
5801         {
5802 		OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5803 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5804 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5805 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5806 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
5807 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
5808 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
5809 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5810 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
5811 		   && strcmp((yyvsp[0].str), "always_deny")!=0
5812 		   && strcmp((yyvsp[0].str), "always_null")!=0
5813 		   && strcmp((yyvsp[0].str), "noview")!=0
5814 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5815 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
5816 			 && strcmp((yyvsp[0].str), "ipset") != 0) {
5817 			yyerror("local-zone type: expected static, deny, "
5818 				"refuse, redirect, transparent, "
5819 				"typetransparent, inform, inform_deny, "
5820 				"inform_redirect, always_transparent, "
5821 				"always_refuse, always_nxdomain, "
5822 				"always_nodata, always_deny, always_null, "
5823 				"noview, nodefault or ipset");
5824 			free((yyvsp[-1].str));
5825 			free((yyvsp[0].str));
5826 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5827 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5828 				local_zones_nodefault, (yyvsp[-1].str)))
5829 				fatal_exit("out of memory adding local-zone");
5830 			free((yyvsp[0].str));
5831 #ifdef USE_IPSET
5832 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
5833 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5834 				local_zones_ipset, (yyvsp[-1].str)))
5835 				fatal_exit("out of memory adding local-zone");
5836 			free((yyvsp[0].str));
5837 #endif
5838 		} else {
5839 			if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5840 				(yyvsp[-1].str), (yyvsp[0].str)))
5841 				fatal_exit("out of memory adding local-zone");
5842 		}
5843 	}
5844 #line 5845 "util/configparser.c"
5845     break;
5846 
5847   case 472:
5848 #line 2188 "util/configparser.y"
5849         {
5850 		OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5851 		if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5852 			fatal_exit("out of memory adding local-data");
5853 	}
5854 #line 5855 "util/configparser.c"
5855     break;
5856 
5857   case 473:
5858 #line 2195 "util/configparser.y"
5859         {
5860 		char* ptr;
5861 		OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5862 		ptr = cfg_ptr_reverse((yyvsp[0].str));
5863 		free((yyvsp[0].str));
5864 		if(ptr) {
5865 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5866 				local_data, ptr))
5867 				fatal_exit("out of memory adding local-data");
5868 		} else {
5869 			yyerror("local-data-ptr could not be reversed");
5870 		}
5871 	}
5872 #line 5873 "util/configparser.c"
5873     break;
5874 
5875   case 474:
5876 #line 2210 "util/configparser.y"
5877         {
5878 		OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5879 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5880 			yyerror("expected yes or no.");
5881 		else cfg_parser->cfg->minimal_responses =
5882 			(strcmp((yyvsp[0].str), "yes")==0);
5883 		free((yyvsp[0].str));
5884 	}
5885 #line 5886 "util/configparser.c"
5886     break;
5887 
5888   case 475:
5889 #line 2220 "util/configparser.y"
5890         {
5891 		OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5892 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5893 			yyerror("expected yes or no.");
5894 		else cfg_parser->cfg->rrset_roundrobin =
5895 			(strcmp((yyvsp[0].str), "yes")==0);
5896 		free((yyvsp[0].str));
5897 	}
5898 #line 5899 "util/configparser.c"
5899     break;
5900 
5901   case 476:
5902 #line 2230 "util/configparser.y"
5903         {
5904 		OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5905 		cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5906 		free((yyvsp[0].str));
5907 	}
5908 #line 5909 "util/configparser.c"
5909     break;
5910 
5911   case 477:
5912 #line 2237 "util/configparser.y"
5913         {
5914 		OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5915 		cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5916 		free((yyvsp[0].str));
5917 	}
5918 #line 5919 "util/configparser.c"
5919     break;
5920 
5921   case 478:
5922 #line 2244 "util/configparser.y"
5923         {
5924 		OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5925 		free(cfg_parser->cfg->dns64_prefix);
5926 		cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5927 	}
5928 #line 5929 "util/configparser.c"
5929     break;
5930 
5931   case 479:
5932 #line 2251 "util/configparser.y"
5933         {
5934 		OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5935 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5936 			yyerror("expected yes or no.");
5937 		else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5938 		free((yyvsp[0].str));
5939 	}
5940 #line 5941 "util/configparser.c"
5941     break;
5942 
5943   case 480:
5944 #line 2260 "util/configparser.y"
5945         {
5946 		OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5947 		if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5948 			(yyvsp[0].str)))
5949 			fatal_exit("out of memory adding dns64-ignore-aaaa");
5950 	}
5951 #line 5952 "util/configparser.c"
5952     break;
5953 
5954   case 481:
5955 #line 2268 "util/configparser.y"
5956         {
5957 		char* p, *s = (yyvsp[0].str);
5958 		OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5959 		while((p=strsep(&s, " \t\n")) != NULL) {
5960 			if(*p) {
5961 				if(!config_add_tag(cfg_parser->cfg, p))
5962 					yyerror("could not define-tag, "
5963 						"out of memory");
5964 			}
5965 		}
5966 		free((yyvsp[0].str));
5967 	}
5968 #line 5969 "util/configparser.c"
5969     break;
5970 
5971   case 482:
5972 #line 2282 "util/configparser.y"
5973         {
5974 		size_t len = 0;
5975 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5976 			&len);
5977 		free((yyvsp[0].str));
5978 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5979 		if(!bitlist) {
5980 			yyerror("could not parse tags, (define-tag them first)");
5981 			free((yyvsp[-1].str));
5982 		}
5983 		if(bitlist) {
5984 			if(!cfg_strbytelist_insert(
5985 				&cfg_parser->cfg->local_zone_tags,
5986 				(yyvsp[-1].str), bitlist, len)) {
5987 				yyerror("out of memory");
5988 				free((yyvsp[-1].str));
5989 			}
5990 		}
5991 	}
5992 #line 5993 "util/configparser.c"
5993     break;
5994 
5995   case 483:
5996 #line 2303 "util/configparser.y"
5997         {
5998 		size_t len = 0;
5999 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6000 			&len);
6001 		free((yyvsp[0].str));
6002 		OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
6003 		if(!bitlist) {
6004 			yyerror("could not parse tags, (define-tag them first)");
6005 			free((yyvsp[-1].str));
6006 		}
6007 		if(bitlist) {
6008 			if(!cfg_strbytelist_insert(
6009 				&cfg_parser->cfg->acl_tags,
6010 				(yyvsp[-1].str), bitlist, len)) {
6011 				yyerror("out of memory");
6012 				free((yyvsp[-1].str));
6013 			}
6014 		}
6015 	}
6016 #line 6017 "util/configparser.c"
6017     break;
6018 
6019   case 484:
6020 #line 2324 "util/configparser.y"
6021         {
6022 		OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6023 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
6024 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6025 			yyerror("out of memory");
6026 			free((yyvsp[-2].str));
6027 			free((yyvsp[-1].str));
6028 			free((yyvsp[0].str));
6029 		}
6030 	}
6031 #line 6032 "util/configparser.c"
6032     break;
6033 
6034   case 485:
6035 #line 2336 "util/configparser.y"
6036         {
6037 		OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6038 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
6039 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6040 			yyerror("out of memory");
6041 			free((yyvsp[-2].str));
6042 			free((yyvsp[-1].str));
6043 			free((yyvsp[0].str));
6044 		}
6045 	}
6046 #line 6047 "util/configparser.c"
6047     break;
6048 
6049   case 486:
6050 #line 2348 "util/configparser.y"
6051         {
6052 		OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6053 		if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
6054 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6055 			yyerror("out of memory");
6056 			free((yyvsp[-2].str));
6057 			free((yyvsp[-1].str));
6058 			free((yyvsp[0].str));
6059 		}
6060 	}
6061 #line 6062 "util/configparser.c"
6062     break;
6063 
6064   case 487:
6065 #line 2360 "util/configparser.y"
6066         {
6067 		OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6068 		if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
6069 			(yyvsp[-1].str), (yyvsp[0].str))) {
6070 			yyerror("out of memory");
6071 		}
6072 	}
6073 #line 6074 "util/configparser.c"
6074     break;
6075 
6076   case 488:
6077 #line 2369 "util/configparser.y"
6078         {
6079 		size_t len = 0;
6080 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6081 			&len);
6082 		free((yyvsp[0].str));
6083 		OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6084 		if(!bitlist) {
6085 			yyerror("could not parse tags, (define-tag them first)");
6086 			free((yyvsp[-1].str));
6087 		}
6088 		if(bitlist) {
6089 			if(!cfg_strbytelist_insert(
6090 				&cfg_parser->cfg->respip_tags,
6091 				(yyvsp[-1].str), bitlist, len)) {
6092 				yyerror("out of memory");
6093 				free((yyvsp[-1].str));
6094 			}
6095 		}
6096 	}
6097 #line 6098 "util/configparser.c"
6098     break;
6099 
6100   case 489:
6101 #line 2390 "util/configparser.y"
6102         {
6103 		OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6104 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6105 			yyerror("number expected");
6106 		else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6107 		free((yyvsp[0].str));
6108 	}
6109 #line 6110 "util/configparser.c"
6110     break;
6111 
6112   case 490:
6113 #line 2399 "util/configparser.y"
6114         {
6115 		OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6116 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6117 			yyerror("number expected");
6118 		else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6119 		free((yyvsp[0].str));
6120 	}
6121 #line 6122 "util/configparser.c"
6122     break;
6123 
6124   case 491:
6125 #line 2408 "util/configparser.y"
6126         {
6127 		OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6128 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6129 			yyerror("memory size expected");
6130 		free((yyvsp[0].str));
6131 	}
6132 #line 6133 "util/configparser.c"
6133     break;
6134 
6135   case 492:
6136 #line 2416 "util/configparser.y"
6137         {
6138 		OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6139 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6140 			yyerror("memory size expected");
6141 		free((yyvsp[0].str));
6142 	}
6143 #line 6144 "util/configparser.c"
6144     break;
6145 
6146   case 493:
6147 #line 2424 "util/configparser.y"
6148         {
6149 		OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6150 		if(atoi((yyvsp[0].str)) == 0) {
6151 			yyerror("number expected");
6152 		} else {
6153 			cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6154 			if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6155 				yyerror("must be a power of 2");
6156 		}
6157 		free((yyvsp[0].str));
6158 	}
6159 #line 6160 "util/configparser.c"
6160     break;
6161 
6162   case 494:
6163 #line 2437 "util/configparser.y"
6164         {
6165 		OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6166 		if(atoi((yyvsp[0].str)) == 0) {
6167 			yyerror("number expected");
6168 		} else {
6169 			cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6170 			if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6171 				yyerror("must be a power of 2");
6172 		}
6173 		free((yyvsp[0].str));
6174 	}
6175 #line 6176 "util/configparser.c"
6176     break;
6177 
6178   case 495:
6179 #line 2450 "util/configparser.y"
6180         {
6181 		OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6182 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6183 			yyerror("number expected");
6184 			free((yyvsp[-1].str));
6185 			free((yyvsp[0].str));
6186 		} else {
6187 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6188 				ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6189 				fatal_exit("out of memory adding "
6190 					"ratelimit-for-domain");
6191 		}
6192 	}
6193 #line 6194 "util/configparser.c"
6194     break;
6195 
6196   case 496:
6197 #line 2465 "util/configparser.y"
6198         {
6199 		OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6200 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6201 			yyerror("number expected");
6202 			free((yyvsp[-1].str));
6203 			free((yyvsp[0].str));
6204 		} else {
6205 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6206 				ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6207 				fatal_exit("out of memory adding "
6208 					"ratelimit-below-domain");
6209 		}
6210 	}
6211 #line 6212 "util/configparser.c"
6212     break;
6213 
6214   case 497:
6215 #line 2480 "util/configparser.y"
6216         {
6217 		OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6218 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6219 			yyerror("number expected");
6220 		else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6221 		free((yyvsp[0].str));
6222 	}
6223 #line 6224 "util/configparser.c"
6224     break;
6225 
6226   case 498:
6227 #line 2489 "util/configparser.y"
6228         {
6229 		OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6230 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6231 			yyerror("number expected");
6232 		else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6233 		free((yyvsp[0].str));
6234 	}
6235 #line 6236 "util/configparser.c"
6236     break;
6237 
6238   case 499:
6239 #line 2498 "util/configparser.y"
6240         {
6241 		OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6242 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6243 			yyerror("number expected");
6244 		else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6245 		free((yyvsp[0].str));
6246 	}
6247 #line 6248 "util/configparser.c"
6248     break;
6249 
6250   case 500:
6251 #line 2507 "util/configparser.y"
6252         {
6253 		OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6254 		free((yyvsp[0].str));
6255 	}
6256 #line 6257 "util/configparser.c"
6257     break;
6258 
6259   case 501:
6260 #line 2513 "util/configparser.y"
6261         {
6262 		OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6263 		if(atoi((yyvsp[0].str)) <= 0)
6264 			yyerror("number expected");
6265 		else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6266 		free((yyvsp[0].str));
6267 	}
6268 #line 6269 "util/configparser.c"
6269     break;
6270 
6271   case 502:
6272 #line 2522 "util/configparser.y"
6273         {
6274 		OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6275 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6276 			yyerror("number expected");
6277 		else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6278 		free((yyvsp[0].str));
6279 	}
6280 #line 6281 "util/configparser.c"
6281     break;
6282 
6283   case 503:
6284 #line 2531 "util/configparser.y"
6285         {
6286 		OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6287 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6288 			yyerror("expected yes or no.");
6289 		else cfg_parser->cfg->qname_minimisation =
6290 			(strcmp((yyvsp[0].str), "yes")==0);
6291 		free((yyvsp[0].str));
6292 	}
6293 #line 6294 "util/configparser.c"
6294     break;
6295 
6296   case 504:
6297 #line 2541 "util/configparser.y"
6298         {
6299 		OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6300 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6301 			yyerror("expected yes or no.");
6302 		else cfg_parser->cfg->qname_minimisation_strict =
6303 			(strcmp((yyvsp[0].str), "yes")==0);
6304 		free((yyvsp[0].str));
6305 	}
6306 #line 6307 "util/configparser.c"
6307     break;
6308 
6309   case 505:
6310 #line 2551 "util/configparser.y"
6311         {
6312 		OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6313 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6314 			yyerror("expected yes or no.");
6315 		else cfg_parser->cfg->pad_responses =
6316 			(strcmp((yyvsp[0].str), "yes")==0);
6317 		free((yyvsp[0].str));
6318 	}
6319 #line 6320 "util/configparser.c"
6320     break;
6321 
6322   case 506:
6323 #line 2561 "util/configparser.y"
6324         {
6325 		OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6326 		if(atoi((yyvsp[0].str)) == 0)
6327 			yyerror("number expected");
6328 		else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6329 		free((yyvsp[0].str));
6330 	}
6331 #line 6332 "util/configparser.c"
6332     break;
6333 
6334   case 507:
6335 #line 2570 "util/configparser.y"
6336         {
6337 		OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6338 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6339 			yyerror("expected yes or no.");
6340 		else cfg_parser->cfg->pad_queries =
6341 			(strcmp((yyvsp[0].str), "yes")==0);
6342 		free((yyvsp[0].str));
6343 	}
6344 #line 6345 "util/configparser.c"
6345     break;
6346 
6347   case 508:
6348 #line 2580 "util/configparser.y"
6349         {
6350 		OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6351 		if(atoi((yyvsp[0].str)) == 0)
6352 			yyerror("number expected");
6353 		else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6354 		free((yyvsp[0].str));
6355 	}
6356 #line 6357 "util/configparser.c"
6357     break;
6358 
6359   case 509:
6360 #line 2589 "util/configparser.y"
6361         {
6362 	#ifdef USE_IPSECMOD
6363 		OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6364 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6365 			yyerror("expected yes or no.");
6366 		else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6367 	#else
6368 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6369 	#endif
6370 		free((yyvsp[0].str));
6371 	}
6372 #line 6373 "util/configparser.c"
6373     break;
6374 
6375   case 510:
6376 #line 2602 "util/configparser.y"
6377         {
6378 	#ifdef USE_IPSECMOD
6379 		OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6380 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6381 			yyerror("expected yes or no.");
6382 		else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6383 	#else
6384 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6385 	#endif
6386 		free((yyvsp[0].str));
6387 	}
6388 #line 6389 "util/configparser.c"
6389     break;
6390 
6391   case 511:
6392 #line 2615 "util/configparser.y"
6393         {
6394 	#ifdef USE_IPSECMOD
6395 		OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6396 		free(cfg_parser->cfg->ipsecmod_hook);
6397 		cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6398 	#else
6399 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6400 		free((yyvsp[0].str));
6401 	#endif
6402 	}
6403 #line 6404 "util/configparser.c"
6404     break;
6405 
6406   case 512:
6407 #line 2627 "util/configparser.y"
6408         {
6409 	#ifdef USE_IPSECMOD
6410 		OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6411 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6412 			yyerror("number expected");
6413 		else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6414 		free((yyvsp[0].str));
6415 	#else
6416 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6417 		free((yyvsp[0].str));
6418 	#endif
6419 	}
6420 #line 6421 "util/configparser.c"
6421     break;
6422 
6423   case 513:
6424 #line 2641 "util/configparser.y"
6425         {
6426 	#ifdef USE_IPSECMOD
6427 		OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6428 		if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6429 			yyerror("out of memory");
6430 	#else
6431 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6432 		free((yyvsp[0].str));
6433 	#endif
6434 	}
6435 #line 6436 "util/configparser.c"
6436     break;
6437 
6438   case 514:
6439 #line 2653 "util/configparser.y"
6440         {
6441 	#ifdef USE_IPSECMOD
6442 		OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6443 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6444 			yyerror("expected yes or no.");
6445 		else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6446 		free((yyvsp[0].str));
6447 	#else
6448 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6449 		free((yyvsp[0].str));
6450 	#endif
6451 	}
6452 #line 6453 "util/configparser.c"
6453     break;
6454 
6455   case 515:
6456 #line 2667 "util/configparser.y"
6457         {
6458 		OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6459 		if(!cfg_str2list_insert(
6460 			&cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6461 			fatal_exit("out of memory adding "
6462 				"edns-client-string");
6463 	}
6464 #line 6465 "util/configparser.c"
6465     break;
6466 
6467   case 516:
6468 #line 2676 "util/configparser.y"
6469         {
6470 		OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6471 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6472 			yyerror("option code expected");
6473 		else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6474 			yyerror("option code must be in interval [0, 65535]");
6475 		else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6476 		free((yyvsp[0].str));
6477 
6478 	}
6479 #line 6480 "util/configparser.c"
6480     break;
6481 
6482   case 517:
6483 #line 2688 "util/configparser.y"
6484         {
6485 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6486 		if(cfg_parser->cfg->stubs->name)
6487 			yyerror("stub name override, there must be one name "
6488 				"for one stub-zone");
6489 		free(cfg_parser->cfg->stubs->name);
6490 		cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6491 	}
6492 #line 6493 "util/configparser.c"
6493     break;
6494 
6495   case 518:
6496 #line 2698 "util/configparser.y"
6497         {
6498 		OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6499 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6500 			yyerror("out of memory");
6501 	}
6502 #line 6503 "util/configparser.c"
6503     break;
6504 
6505   case 519:
6506 #line 2705 "util/configparser.y"
6507         {
6508 		OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6509 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6510 			yyerror("out of memory");
6511 	}
6512 #line 6513 "util/configparser.c"
6513     break;
6514 
6515   case 520:
6516 #line 2712 "util/configparser.y"
6517         {
6518 		OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6519 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6520 			yyerror("expected yes or no.");
6521 		else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6522 		free((yyvsp[0].str));
6523 	}
6524 #line 6525 "util/configparser.c"
6525     break;
6526 
6527   case 521:
6528 #line 2721 "util/configparser.y"
6529         {
6530 		OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6531 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6532 			yyerror("expected yes or no.");
6533 		else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6534 		free((yyvsp[0].str));
6535 	}
6536 #line 6537 "util/configparser.c"
6537     break;
6538 
6539   case 522:
6540 #line 2730 "util/configparser.y"
6541         {
6542 		OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6543 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6544 			yyerror("expected yes or no.");
6545 		else cfg_parser->cfg->stubs->ssl_upstream =
6546 			(strcmp((yyvsp[0].str), "yes")==0);
6547 		free((yyvsp[0].str));
6548 	}
6549 #line 6550 "util/configparser.c"
6550     break;
6551 
6552   case 523:
6553 #line 2740 "util/configparser.y"
6554         {
6555                 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6556                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6557                         yyerror("expected yes or no.");
6558                 else cfg_parser->cfg->stubs->tcp_upstream =
6559                         (strcmp((yyvsp[0].str), "yes")==0);
6560                 free((yyvsp[0].str));
6561         }
6562 #line 6563 "util/configparser.c"
6563     break;
6564 
6565   case 524:
6566 #line 2750 "util/configparser.y"
6567         {
6568 		OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6569 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6570 			yyerror("expected yes or no.");
6571 		else cfg_parser->cfg->stubs->isprime =
6572 			(strcmp((yyvsp[0].str), "yes")==0);
6573 		free((yyvsp[0].str));
6574 	}
6575 #line 6576 "util/configparser.c"
6576     break;
6577 
6578   case 525:
6579 #line 2760 "util/configparser.y"
6580         {
6581 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6582 		if(cfg_parser->cfg->forwards->name)
6583 			yyerror("forward name override, there must be one "
6584 				"name for one forward-zone");
6585 		free(cfg_parser->cfg->forwards->name);
6586 		cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6587 	}
6588 #line 6589 "util/configparser.c"
6589     break;
6590 
6591   case 526:
6592 #line 2770 "util/configparser.y"
6593         {
6594 		OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6595 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6596 			yyerror("out of memory");
6597 	}
6598 #line 6599 "util/configparser.c"
6599     break;
6600 
6601   case 527:
6602 #line 2777 "util/configparser.y"
6603         {
6604 		OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6605 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6606 			yyerror("out of memory");
6607 	}
6608 #line 6609 "util/configparser.c"
6609     break;
6610 
6611   case 528:
6612 #line 2784 "util/configparser.y"
6613         {
6614 		OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6615 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6616 			yyerror("expected yes or no.");
6617 		else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6618 		free((yyvsp[0].str));
6619 	}
6620 #line 6621 "util/configparser.c"
6621     break;
6622 
6623   case 529:
6624 #line 2793 "util/configparser.y"
6625         {
6626 		OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6627 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6628 			yyerror("expected yes or no.");
6629 		else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6630 		free((yyvsp[0].str));
6631 	}
6632 #line 6633 "util/configparser.c"
6633     break;
6634 
6635   case 530:
6636 #line 2802 "util/configparser.y"
6637         {
6638 		OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6639 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6640 			yyerror("expected yes or no.");
6641 		else cfg_parser->cfg->forwards->ssl_upstream =
6642 			(strcmp((yyvsp[0].str), "yes")==0);
6643 		free((yyvsp[0].str));
6644 	}
6645 #line 6646 "util/configparser.c"
6646     break;
6647 
6648   case 531:
6649 #line 2812 "util/configparser.y"
6650         {
6651                 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6652                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6653                         yyerror("expected yes or no.");
6654                 else cfg_parser->cfg->forwards->tcp_upstream =
6655                         (strcmp((yyvsp[0].str), "yes")==0);
6656                 free((yyvsp[0].str));
6657         }
6658 #line 6659 "util/configparser.c"
6659     break;
6660 
6661   case 532:
6662 #line 2822 "util/configparser.y"
6663         {
6664 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6665 		if(cfg_parser->cfg->auths->name)
6666 			yyerror("auth name override, there must be one name "
6667 				"for one auth-zone");
6668 		free(cfg_parser->cfg->auths->name);
6669 		cfg_parser->cfg->auths->name = (yyvsp[0].str);
6670 	}
6671 #line 6672 "util/configparser.c"
6672     break;
6673 
6674   case 533:
6675 #line 2832 "util/configparser.y"
6676         {
6677 		OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6678 		free(cfg_parser->cfg->auths->zonefile);
6679 		cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6680 	}
6681 #line 6682 "util/configparser.c"
6682     break;
6683 
6684   case 534:
6685 #line 2839 "util/configparser.y"
6686         {
6687 		OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6688 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6689 			yyerror("out of memory");
6690 	}
6691 #line 6692 "util/configparser.c"
6692     break;
6693 
6694   case 535:
6695 #line 2846 "util/configparser.y"
6696         {
6697 		OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6698 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6699 			yyerror("out of memory");
6700 	}
6701 #line 6702 "util/configparser.c"
6702     break;
6703 
6704   case 536:
6705 #line 2853 "util/configparser.y"
6706         {
6707 		OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6708 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6709 			(yyvsp[0].str)))
6710 			yyerror("out of memory");
6711 	}
6712 #line 6713 "util/configparser.c"
6713     break;
6714 
6715   case 537:
6716 #line 2861 "util/configparser.y"
6717         {
6718 		OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6719 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6720 			yyerror("expected yes or no.");
6721 		else cfg_parser->cfg->auths->zonemd_check =
6722 			(strcmp((yyvsp[0].str), "yes")==0);
6723 		free((yyvsp[0].str));
6724 	}
6725 #line 6726 "util/configparser.c"
6726     break;
6727 
6728   case 538:
6729 #line 2871 "util/configparser.y"
6730         {
6731 		OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6732 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6733 			yyerror("expected yes or no.");
6734 		else cfg_parser->cfg->auths->zonemd_reject_absence =
6735 			(strcmp((yyvsp[0].str), "yes")==0);
6736 		free((yyvsp[0].str));
6737 	}
6738 #line 6739 "util/configparser.c"
6739     break;
6740 
6741   case 539:
6742 #line 2881 "util/configparser.y"
6743         {
6744 		OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6745 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6746 			yyerror("expected yes or no.");
6747 		else cfg_parser->cfg->auths->for_downstream =
6748 			(strcmp((yyvsp[0].str), "yes")==0);
6749 		free((yyvsp[0].str));
6750 	}
6751 #line 6752 "util/configparser.c"
6752     break;
6753 
6754   case 540:
6755 #line 2891 "util/configparser.y"
6756         {
6757 		OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6758 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6759 			yyerror("expected yes or no.");
6760 		else cfg_parser->cfg->auths->for_upstream =
6761 			(strcmp((yyvsp[0].str), "yes")==0);
6762 		free((yyvsp[0].str));
6763 	}
6764 #line 6765 "util/configparser.c"
6765     break;
6766 
6767   case 541:
6768 #line 2901 "util/configparser.y"
6769         {
6770 		OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6771 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6772 			yyerror("expected yes or no.");
6773 		else cfg_parser->cfg->auths->fallback_enabled =
6774 			(strcmp((yyvsp[0].str), "yes")==0);
6775 		free((yyvsp[0].str));
6776 	}
6777 #line 6778 "util/configparser.c"
6778     break;
6779 
6780   case 542:
6781 #line 2911 "util/configparser.y"
6782         {
6783 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6784 		if(cfg_parser->cfg->views->name)
6785 			yyerror("view name override, there must be one "
6786 				"name for one view");
6787 		free(cfg_parser->cfg->views->name);
6788 		cfg_parser->cfg->views->name = (yyvsp[0].str);
6789 	}
6790 #line 6791 "util/configparser.c"
6791     break;
6792 
6793   case 543:
6794 #line 2921 "util/configparser.y"
6795         {
6796 		OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6797 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6798 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6799 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6800 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
6801 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
6802 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
6803 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6804 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
6805 		   && strcmp((yyvsp[0].str), "always_deny")!=0
6806 		   && strcmp((yyvsp[0].str), "always_null")!=0
6807 		   && strcmp((yyvsp[0].str), "noview")!=0
6808 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6809 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
6810 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
6811 			yyerror("local-zone type: expected static, deny, "
6812 				"refuse, redirect, transparent, "
6813 				"typetransparent, inform, inform_deny, "
6814 				"inform_redirect, always_transparent, "
6815 				"always_refuse, always_nxdomain, "
6816 				"always_nodata, always_deny, always_null, "
6817 				"noview, nodefault or ipset");
6818 			free((yyvsp[-1].str));
6819 			free((yyvsp[0].str));
6820 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6821 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6822 				local_zones_nodefault, (yyvsp[-1].str)))
6823 				fatal_exit("out of memory adding local-zone");
6824 			free((yyvsp[0].str));
6825 #ifdef USE_IPSET
6826 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
6827 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6828 				local_zones_ipset, (yyvsp[-1].str)))
6829 				fatal_exit("out of memory adding local-zone");
6830 			free((yyvsp[0].str));
6831 #endif
6832 		} else {
6833 			if(!cfg_str2list_insert(
6834 				&cfg_parser->cfg->views->local_zones,
6835 				(yyvsp[-1].str), (yyvsp[0].str)))
6836 				fatal_exit("out of memory adding local-zone");
6837 		}
6838 	}
6839 #line 6840 "util/configparser.c"
6840     break;
6841 
6842   case 544:
6843 #line 2967 "util/configparser.y"
6844         {
6845 		OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6846 		validate_respip_action((yyvsp[0].str));
6847 		if(!cfg_str2list_insert(
6848 			&cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
6849 			fatal_exit("out of memory adding per-view "
6850 				"response-ip action");
6851 	}
6852 #line 6853 "util/configparser.c"
6853     break;
6854 
6855   case 545:
6856 #line 2977 "util/configparser.y"
6857         {
6858 		OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
6859 		if(!cfg_str2list_insert(
6860 			&cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
6861 			fatal_exit("out of memory adding response-ip-data");
6862 	}
6863 #line 6864 "util/configparser.c"
6864     break;
6865 
6866   case 546:
6867 #line 2985 "util/configparser.y"
6868         {
6869 		OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
6870 		if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
6871 			fatal_exit("out of memory adding local-data");
6872 		}
6873 	}
6874 #line 6875 "util/configparser.c"
6875     break;
6876 
6877   case 547:
6878 #line 2993 "util/configparser.y"
6879         {
6880 		char* ptr;
6881 		OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
6882 		ptr = cfg_ptr_reverse((yyvsp[0].str));
6883 		free((yyvsp[0].str));
6884 		if(ptr) {
6885 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6886 				local_data, ptr))
6887 				fatal_exit("out of memory adding local-data");
6888 		} else {
6889 			yyerror("local-data-ptr could not be reversed");
6890 		}
6891 	}
6892 #line 6893 "util/configparser.c"
6893     break;
6894 
6895   case 548:
6896 #line 3008 "util/configparser.y"
6897         {
6898 		OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
6899 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6900 			yyerror("expected yes or no.");
6901 		else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6902 		free((yyvsp[0].str));
6903 	}
6904 #line 6905 "util/configparser.c"
6905     break;
6906 
6907   case 549:
6908 #line 3017 "util/configparser.y"
6909         {
6910 		OUTYY(("\nP(remote-control:)\n"));
6911 	}
6912 #line 6913 "util/configparser.c"
6913     break;
6914 
6915   case 560:
6916 #line 3028 "util/configparser.y"
6917         {
6918 		OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
6919 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6920 			yyerror("expected yes or no.");
6921 		else cfg_parser->cfg->remote_control_enable =
6922 			(strcmp((yyvsp[0].str), "yes")==0);
6923 		free((yyvsp[0].str));
6924 	}
6925 #line 6926 "util/configparser.c"
6926     break;
6927 
6928   case 561:
6929 #line 3038 "util/configparser.y"
6930         {
6931 		OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
6932 		if(atoi((yyvsp[0].str)) == 0)
6933 			yyerror("control port number expected");
6934 		else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
6935 		free((yyvsp[0].str));
6936 	}
6937 #line 6938 "util/configparser.c"
6938     break;
6939 
6940   case 562:
6941 #line 3047 "util/configparser.y"
6942         {
6943 		OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
6944 		if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
6945 			yyerror("out of memory");
6946 	}
6947 #line 6948 "util/configparser.c"
6948     break;
6949 
6950   case 563:
6951 #line 3054 "util/configparser.y"
6952         {
6953 		OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
6954 		cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
6955 		free((yyvsp[0].str));
6956 	}
6957 #line 6958 "util/configparser.c"
6958     break;
6959 
6960   case 564:
6961 #line 3061 "util/configparser.y"
6962         {
6963 		OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
6964 		free(cfg_parser->cfg->server_key_file);
6965 		cfg_parser->cfg->server_key_file = (yyvsp[0].str);
6966 	}
6967 #line 6968 "util/configparser.c"
6968     break;
6969 
6970   case 565:
6971 #line 3068 "util/configparser.y"
6972         {
6973 		OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
6974 		free(cfg_parser->cfg->server_cert_file);
6975 		cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
6976 	}
6977 #line 6978 "util/configparser.c"
6978     break;
6979 
6980   case 566:
6981 #line 3075 "util/configparser.y"
6982         {
6983 		OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
6984 		free(cfg_parser->cfg->control_key_file);
6985 		cfg_parser->cfg->control_key_file = (yyvsp[0].str);
6986 	}
6987 #line 6988 "util/configparser.c"
6988     break;
6989 
6990   case 567:
6991 #line 3082 "util/configparser.y"
6992         {
6993 		OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
6994 		free(cfg_parser->cfg->control_cert_file);
6995 		cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
6996 	}
6997 #line 6998 "util/configparser.c"
6998     break;
6999 
7000   case 568:
7001 #line 3089 "util/configparser.y"
7002         {
7003 		OUTYY(("\nP(dnstap:)\n"));
7004 	}
7005 #line 7006 "util/configparser.c"
7006     break;
7007 
7008   case 590:
7009 #line 3109 "util/configparser.y"
7010         {
7011 		OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
7012 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7013 			yyerror("expected yes or no.");
7014 		else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
7015 		free((yyvsp[0].str));
7016 	}
7017 #line 7018 "util/configparser.c"
7018     break;
7019 
7020   case 591:
7021 #line 3118 "util/configparser.y"
7022         {
7023 		OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7024 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7025 			yyerror("expected yes or no.");
7026 		else cfg_parser->cfg->dnstap_bidirectional =
7027 			(strcmp((yyvsp[0].str), "yes")==0);
7028 		free((yyvsp[0].str));
7029 	}
7030 #line 7031 "util/configparser.c"
7031     break;
7032 
7033   case 592:
7034 #line 3128 "util/configparser.y"
7035         {
7036 		OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7037 		free(cfg_parser->cfg->dnstap_socket_path);
7038 		cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7039 	}
7040 #line 7041 "util/configparser.c"
7041     break;
7042 
7043   case 593:
7044 #line 3135 "util/configparser.y"
7045         {
7046 		OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7047 		free(cfg_parser->cfg->dnstap_ip);
7048 		cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7049 	}
7050 #line 7051 "util/configparser.c"
7051     break;
7052 
7053   case 594:
7054 #line 3142 "util/configparser.y"
7055         {
7056 		OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7057 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7058 			yyerror("expected yes or no.");
7059 		else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7060 		free((yyvsp[0].str));
7061 	}
7062 #line 7063 "util/configparser.c"
7063     break;
7064 
7065   case 595:
7066 #line 3151 "util/configparser.y"
7067         {
7068 		OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7069 		free(cfg_parser->cfg->dnstap_tls_server_name);
7070 		cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7071 	}
7072 #line 7073 "util/configparser.c"
7073     break;
7074 
7075   case 596:
7076 #line 3158 "util/configparser.y"
7077         {
7078 		OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7079 		free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7080 		cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7081 	}
7082 #line 7083 "util/configparser.c"
7083     break;
7084 
7085   case 597:
7086 #line 3165 "util/configparser.y"
7087         {
7088 		OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7089 		free(cfg_parser->cfg->dnstap_tls_client_key_file);
7090 		cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7091 	}
7092 #line 7093 "util/configparser.c"
7093     break;
7094 
7095   case 598:
7096 #line 3172 "util/configparser.y"
7097         {
7098 		OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7099 		free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7100 		cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7101 	}
7102 #line 7103 "util/configparser.c"
7103     break;
7104 
7105   case 599:
7106 #line 3179 "util/configparser.y"
7107         {
7108 		OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7109 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7110 			yyerror("expected yes or no.");
7111 		else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7112 		free((yyvsp[0].str));
7113 	}
7114 #line 7115 "util/configparser.c"
7115     break;
7116 
7117   case 600:
7118 #line 3188 "util/configparser.y"
7119         {
7120 		OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7121 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7122 			yyerror("expected yes or no.");
7123 		else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7124 		free((yyvsp[0].str));
7125 	}
7126 #line 7127 "util/configparser.c"
7127     break;
7128 
7129   case 601:
7130 #line 3197 "util/configparser.y"
7131         {
7132 		OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7133 		free(cfg_parser->cfg->dnstap_identity);
7134 		cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7135 	}
7136 #line 7137 "util/configparser.c"
7137     break;
7138 
7139   case 602:
7140 #line 3204 "util/configparser.y"
7141         {
7142 		OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7143 		free(cfg_parser->cfg->dnstap_version);
7144 		cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7145 	}
7146 #line 7147 "util/configparser.c"
7147     break;
7148 
7149   case 603:
7150 #line 3211 "util/configparser.y"
7151         {
7152 		OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7153 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7154 			yyerror("expected yes or no.");
7155 		else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7156 			(strcmp((yyvsp[0].str), "yes")==0);
7157 		free((yyvsp[0].str));
7158 	}
7159 #line 7160 "util/configparser.c"
7160     break;
7161 
7162   case 604:
7163 #line 3221 "util/configparser.y"
7164         {
7165 		OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7166 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7167 			yyerror("expected yes or no.");
7168 		else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7169 			(strcmp((yyvsp[0].str), "yes")==0);
7170 		free((yyvsp[0].str));
7171 	}
7172 #line 7173 "util/configparser.c"
7173     break;
7174 
7175   case 605:
7176 #line 3231 "util/configparser.y"
7177         {
7178 		OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7179 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7180 			yyerror("expected yes or no.");
7181 		else cfg_parser->cfg->dnstap_log_client_query_messages =
7182 			(strcmp((yyvsp[0].str), "yes")==0);
7183 		free((yyvsp[0].str));
7184 	}
7185 #line 7186 "util/configparser.c"
7186     break;
7187 
7188   case 606:
7189 #line 3241 "util/configparser.y"
7190         {
7191 		OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7192 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7193 			yyerror("expected yes or no.");
7194 		else cfg_parser->cfg->dnstap_log_client_response_messages =
7195 			(strcmp((yyvsp[0].str), "yes")==0);
7196 		free((yyvsp[0].str));
7197 	}
7198 #line 7199 "util/configparser.c"
7199     break;
7200 
7201   case 607:
7202 #line 3251 "util/configparser.y"
7203         {
7204 		OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7205 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7206 			yyerror("expected yes or no.");
7207 		else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7208 			(strcmp((yyvsp[0].str), "yes")==0);
7209 		free((yyvsp[0].str));
7210 	}
7211 #line 7212 "util/configparser.c"
7212     break;
7213 
7214   case 608:
7215 #line 3261 "util/configparser.y"
7216         {
7217 		OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7218 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7219 			yyerror("expected yes or no.");
7220 		else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7221 			(strcmp((yyvsp[0].str), "yes")==0);
7222 		free((yyvsp[0].str));
7223 	}
7224 #line 7225 "util/configparser.c"
7225     break;
7226 
7227   case 609:
7228 #line 3271 "util/configparser.y"
7229         {
7230 		OUTYY(("\nP(python:)\n"));
7231 	}
7232 #line 7233 "util/configparser.c"
7233     break;
7234 
7235   case 613:
7236 #line 3280 "util/configparser.y"
7237         {
7238 		OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7239 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7240 			yyerror("out of memory");
7241 	}
7242 #line 7243 "util/configparser.c"
7243     break;
7244 
7245   case 614:
7246 #line 3286 "util/configparser.y"
7247         {
7248 		OUTYY(("\nP(dynlib:)\n"));
7249 	}
7250 #line 7251 "util/configparser.c"
7251     break;
7252 
7253   case 618:
7254 #line 3295 "util/configparser.y"
7255         {
7256 		OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7257 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7258 			yyerror("out of memory");
7259 	}
7260 #line 7261 "util/configparser.c"
7261     break;
7262 
7263   case 619:
7264 #line 3301 "util/configparser.y"
7265         {
7266 		OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7267 		if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7268 			yyerror("expected yes or no.");
7269 		else cfg_parser->cfg->disable_dnssec_lame_check =
7270 			(strcmp((yyvsp[0].str), "yes")==0);
7271 		free((yyvsp[0].str));
7272 	}
7273 #line 7274 "util/configparser.c"
7274     break;
7275 
7276   case 620:
7277 #line 3311 "util/configparser.y"
7278         {
7279 		OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7280 		free(cfg_parser->cfg->log_identity);
7281 		cfg_parser->cfg->log_identity = (yyvsp[0].str);
7282 	}
7283 #line 7284 "util/configparser.c"
7284     break;
7285 
7286   case 621:
7287 #line 3318 "util/configparser.y"
7288         {
7289 		OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7290 		validate_respip_action((yyvsp[0].str));
7291 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7292 			(yyvsp[-1].str), (yyvsp[0].str)))
7293 			fatal_exit("out of memory adding response-ip");
7294 	}
7295 #line 7296 "util/configparser.c"
7296     break;
7297 
7298   case 622:
7299 #line 3327 "util/configparser.y"
7300         {
7301 		OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7302 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7303 			(yyvsp[-1].str), (yyvsp[0].str)))
7304 			fatal_exit("out of memory adding response-ip-data");
7305 	}
7306 #line 7307 "util/configparser.c"
7307     break;
7308 
7309   case 623:
7310 #line 3335 "util/configparser.y"
7311         {
7312 		OUTYY(("\nP(dnscrypt:)\n"));
7313 	}
7314 #line 7315 "util/configparser.c"
7315     break;
7316 
7317   case 636:
7318 #line 3351 "util/configparser.y"
7319         {
7320 		OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7321 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7322 			yyerror("expected yes or no.");
7323 		else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7324 		free((yyvsp[0].str));
7325 	}
7326 #line 7327 "util/configparser.c"
7327     break;
7328 
7329   case 637:
7330 #line 3361 "util/configparser.y"
7331         {
7332 		OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7333 		if(atoi((yyvsp[0].str)) == 0)
7334 			yyerror("port number expected");
7335 		else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7336 		free((yyvsp[0].str));
7337 	}
7338 #line 7339 "util/configparser.c"
7339     break;
7340 
7341   case 638:
7342 #line 3370 "util/configparser.y"
7343         {
7344 		OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7345 		free(cfg_parser->cfg->dnscrypt_provider);
7346 		cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7347 	}
7348 #line 7349 "util/configparser.c"
7349     break;
7350 
7351   case 639:
7352 #line 3377 "util/configparser.y"
7353         {
7354 		OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7355 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7356 			log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7357 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7358 			fatal_exit("out of memory adding dnscrypt-provider-cert");
7359 	}
7360 #line 7361 "util/configparser.c"
7361     break;
7362 
7363   case 640:
7364 #line 3386 "util/configparser.y"
7365         {
7366 		OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7367 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7368 			fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7369 	}
7370 #line 7371 "util/configparser.c"
7371     break;
7372 
7373   case 641:
7374 #line 3393 "util/configparser.y"
7375         {
7376 		OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7377 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7378 			log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7379 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7380 			fatal_exit("out of memory adding dnscrypt-secret-key");
7381 	}
7382 #line 7383 "util/configparser.c"
7383     break;
7384 
7385   case 642:
7386 #line 3402 "util/configparser.y"
7387   {
7388 	OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7389 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7390 		yyerror("memory size expected");
7391 	free((yyvsp[0].str));
7392   }
7393 #line 7394 "util/configparser.c"
7394     break;
7395 
7396   case 643:
7397 #line 3410 "util/configparser.y"
7398   {
7399 	OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7400 	if(atoi((yyvsp[0].str)) == 0) {
7401 		yyerror("number expected");
7402 	} else {
7403 		cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7404 		if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7405 			yyerror("must be a power of 2");
7406 	}
7407 	free((yyvsp[0].str));
7408   }
7409 #line 7410 "util/configparser.c"
7410     break;
7411 
7412   case 644:
7413 #line 3423 "util/configparser.y"
7414   {
7415 	OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7416 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7417 		yyerror("memory size expected");
7418 	free((yyvsp[0].str));
7419   }
7420 #line 7421 "util/configparser.c"
7421     break;
7422 
7423   case 645:
7424 #line 3431 "util/configparser.y"
7425   {
7426 	OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7427 	if(atoi((yyvsp[0].str)) == 0) {
7428 		yyerror("number expected");
7429 	} else {
7430 		cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7431 		if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7432 			yyerror("must be a power of 2");
7433 	}
7434 	free((yyvsp[0].str));
7435   }
7436 #line 7437 "util/configparser.c"
7437     break;
7438 
7439   case 646:
7440 #line 3444 "util/configparser.y"
7441         {
7442 		OUTYY(("\nP(cachedb:)\n"));
7443 	}
7444 #line 7445 "util/configparser.c"
7445     break;
7446 
7447   case 655:
7448 #line 3455 "util/configparser.y"
7449         {
7450 	#ifdef USE_CACHEDB
7451 		OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7452 		free(cfg_parser->cfg->cachedb_backend);
7453 		cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7454 	#else
7455 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7456 		free((yyvsp[0].str));
7457 	#endif
7458 	}
7459 #line 7460 "util/configparser.c"
7460     break;
7461 
7462   case 656:
7463 #line 3467 "util/configparser.y"
7464         {
7465 	#ifdef USE_CACHEDB
7466 		OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7467 		free(cfg_parser->cfg->cachedb_secret);
7468 		cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7469 	#else
7470 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7471 		free((yyvsp[0].str));
7472 	#endif
7473 	}
7474 #line 7475 "util/configparser.c"
7475     break;
7476 
7477   case 657:
7478 #line 3479 "util/configparser.y"
7479         {
7480 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7481 		OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7482 		free(cfg_parser->cfg->redis_server_host);
7483 		cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7484 	#else
7485 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7486 		free((yyvsp[0].str));
7487 	#endif
7488 	}
7489 #line 7490 "util/configparser.c"
7490     break;
7491 
7492   case 658:
7493 #line 3491 "util/configparser.y"
7494         {
7495 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7496 		int port;
7497 		OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7498 		port = atoi((yyvsp[0].str));
7499 		if(port == 0 || port < 0 || port > 65535)
7500 			yyerror("valid redis server port number expected");
7501 		else cfg_parser->cfg->redis_server_port = port;
7502 	#else
7503 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7504 	#endif
7505 		free((yyvsp[0].str));
7506 	}
7507 #line 7508 "util/configparser.c"
7508     break;
7509 
7510   case 659:
7511 #line 3506 "util/configparser.y"
7512         {
7513 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7514 		OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7515 		if(atoi((yyvsp[0].str)) == 0)
7516 			yyerror("redis timeout value expected");
7517 		else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7518 	#else
7519 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7520 	#endif
7521 		free((yyvsp[0].str));
7522 	}
7523 #line 7524 "util/configparser.c"
7524     break;
7525 
7526   case 660:
7527 #line 3519 "util/configparser.y"
7528         {
7529 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7530 		OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7531 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7532 			yyerror("expected yes or no.");
7533 		else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7534 	#else
7535 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7536 	#endif
7537 		free((yyvsp[0].str));
7538 	}
7539 #line 7540 "util/configparser.c"
7540     break;
7541 
7542   case 661:
7543 #line 3532 "util/configparser.y"
7544         {
7545 		OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7546 		if (atoi((yyvsp[0].str)) < 0)
7547 			yyerror("positive number expected");
7548 		else {
7549 			if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7550 				fatal_exit("out of memory adding tcp connection limit");
7551 		}
7552 	}
7553 #line 7554 "util/configparser.c"
7554     break;
7555 
7556   case 662:
7557 #line 3543 "util/configparser.y"
7558                 {
7559 			OUTYY(("\nP(ipset:)\n"));
7560 		}
7561 #line 7562 "util/configparser.c"
7562     break;
7563 
7564   case 667:
7565 #line 3552 "util/configparser.y"
7566                 {
7567 		#ifdef USE_IPSET
7568 			OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
7569 			if(cfg_parser->cfg->ipset_name_v4)
7570 				yyerror("ipset name v4 override, there must be one "
7571 					"name for ip v4");
7572 			free(cfg_parser->cfg->ipset_name_v4);
7573 			cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
7574 		#else
7575 			OUTYY(("P(Compiled without ipset, ignoring)\n"));
7576 			free((yyvsp[0].str));
7577 		#endif
7578 		}
7579 #line 7580 "util/configparser.c"
7580     break;
7581 
7582   case 668:
7583 #line 3567 "util/configparser.y"
7584         {
7585 		#ifdef USE_IPSET
7586 			OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
7587 			if(cfg_parser->cfg->ipset_name_v6)
7588 				yyerror("ipset name v6 override, there must be one "
7589 					"name for ip v6");
7590 			free(cfg_parser->cfg->ipset_name_v6);
7591 			cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
7592 		#else
7593 			OUTYY(("P(Compiled without ipset, ignoring)\n"));
7594 			free((yyvsp[0].str));
7595 		#endif
7596 		}
7597 #line 7598 "util/configparser.c"
7598     break;
7599 
7600 
7601 #line 7602 "util/configparser.c"
7602 
7603       default: break;
7604     }
7605   /* User semantic actions sometimes alter yychar, and that requires
7606      that yytoken be updated with the new translation.  We take the
7607      approach of translating immediately before every use of yytoken.
7608      One alternative is translating here after every semantic action,
7609      but that translation would be missed if the semantic action invokes
7610      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7611      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
7612      incorrect destructor might then be invoked immediately.  In the
7613      case of YYERROR or YYBACKUP, subsequent parser actions might lead
7614      to an incorrect destructor call or verbose syntax error message
7615      before the lookahead is translated.  */
7616   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
7617 
7618   YYPOPSTACK (yylen);
7619   yylen = 0;
7620 
7621   *++yyvsp = yyval;
7622 
7623   /* Now 'shift' the result of the reduction.  Determine what state
7624      that goes to, based on the state we popped back to and the rule
7625      number reduced by.  */
7626   {
7627     const int yylhs = yyr1[yyn] - YYNTOKENS;
7628     const int yyi = yypgoto[yylhs] + *yyssp;
7629     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
7630                ? yytable[yyi]
7631                : yydefgoto[yylhs]);
7632   }
7633 
7634   goto yynewstate;
7635 
7636 
7637 /*--------------------------------------.
7638 | yyerrlab -- here on detecting error.  |
7639 `--------------------------------------*/
7640 yyerrlab:
7641   /* Make sure we have latest lookahead translation.  See comments at
7642      user semantic actions for why this is necessary.  */
7643   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7644   /* If not already recovering from an error, report this error.  */
7645   if (!yyerrstatus)
7646     {
7647       ++yynerrs;
7648       yyerror (YY_("syntax error"));
7649     }
7650 
7651   if (yyerrstatus == 3)
7652     {
7653       /* If just tried and failed to reuse lookahead token after an
7654          error, discard it.  */
7655 
7656       if (yychar <= YYEOF)
7657         {
7658           /* Return failure if at end of input.  */
7659           if (yychar == YYEOF)
7660             YYABORT;
7661         }
7662       else
7663         {
7664           yydestruct ("Error: discarding",
7665                       yytoken, &yylval);
7666           yychar = YYEMPTY;
7667         }
7668     }
7669 
7670   /* Else will try to reuse lookahead token after shifting the error
7671      token.  */
7672   goto yyerrlab1;
7673 
7674 
7675 /*---------------------------------------------------.
7676 | yyerrorlab -- error raised explicitly by YYERROR.  |
7677 `---------------------------------------------------*/
7678 yyerrorlab:
7679   /* Pacify compilers when the user code never invokes YYERROR and the
7680      label yyerrorlab therefore never appears in user code.  */
7681   if (0)
7682     YYERROR;
7683 
7684   /* Do not reclaim the symbols of the rule whose action triggered
7685      this YYERROR.  */
7686   YYPOPSTACK (yylen);
7687   yylen = 0;
7688   YY_STACK_PRINT (yyss, yyssp);
7689   yystate = *yyssp;
7690   goto yyerrlab1;
7691 
7692 
7693 /*-------------------------------------------------------------.
7694 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
7695 `-------------------------------------------------------------*/
7696 yyerrlab1:
7697   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
7698 
7699   /* Pop stack until we find a state that shifts the error token.  */
7700   for (;;)
7701     {
7702       yyn = yypact[yystate];
7703       if (!yypact_value_is_default (yyn))
7704         {
7705           yyn += YYSYMBOL_YYerror;
7706           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
7707             {
7708               yyn = yytable[yyn];
7709               if (0 < yyn)
7710                 break;
7711             }
7712         }
7713 
7714       /* Pop the current state because it cannot handle the error token.  */
7715       if (yyssp == yyss)
7716         YYABORT;
7717 
7718 
7719       yydestruct ("Error: popping",
7720                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
7721       YYPOPSTACK (1);
7722       yystate = *yyssp;
7723       YY_STACK_PRINT (yyss, yyssp);
7724     }
7725 
7726   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7727   *++yyvsp = yylval;
7728   YY_IGNORE_MAYBE_UNINITIALIZED_END
7729 
7730 
7731   /* Shift the error token.  */
7732   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
7733 
7734   yystate = yyn;
7735   goto yynewstate;
7736 
7737 
7738 /*-------------------------------------.
7739 | yyacceptlab -- YYACCEPT comes here.  |
7740 `-------------------------------------*/
7741 yyacceptlab:
7742   yyresult = 0;
7743   goto yyreturn;
7744 
7745 
7746 /*-----------------------------------.
7747 | yyabortlab -- YYABORT comes here.  |
7748 `-----------------------------------*/
7749 yyabortlab:
7750   yyresult = 1;
7751   goto yyreturn;
7752 
7753 
7754 #if !defined yyoverflow
7755 /*-------------------------------------------------.
7756 | yyexhaustedlab -- memory exhaustion comes here.  |
7757 `-------------------------------------------------*/
7758 yyexhaustedlab:
7759   yyerror (YY_("memory exhausted"));
7760   yyresult = 2;
7761   /* Fall through.  */
7762 #endif
7763 
7764 
7765 /*-----------------------------------------------------.
7766 | yyreturn -- parsing is finished, return the result.  |
7767 `-----------------------------------------------------*/
7768 yyreturn:
7769   if (yychar != YYEMPTY)
7770     {
7771       /* Make sure we have latest lookahead translation.  See comments at
7772          user semantic actions for why this is necessary.  */
7773       yytoken = YYTRANSLATE (yychar);
7774       yydestruct ("Cleanup: discarding lookahead",
7775                   yytoken, &yylval);
7776     }
7777   /* Do not reclaim the symbols of the rule whose action triggered
7778      this YYABORT or YYACCEPT.  */
7779   YYPOPSTACK (yylen);
7780   YY_STACK_PRINT (yyss, yyssp);
7781   while (yyssp != yyss)
7782     {
7783       yydestruct ("Cleanup: popping",
7784                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
7785       YYPOPSTACK (1);
7786     }
7787 #ifndef yyoverflow
7788   if (yyss != yyssa)
7789     YYSTACK_FREE (yyss);
7790 #endif
7791 
7792   return yyresult;
7793 }
7794 
7795 #line 3581 "util/configparser.y"
7796 
7797 
7798 /* parse helper routines could be here */
7799 static void
validate_respip_action(const char * action)7800 validate_respip_action(const char* action)
7801 {
7802 	if(strcmp(action, "deny")!=0 &&
7803 		strcmp(action, "redirect")!=0 &&
7804 		strcmp(action, "inform")!=0 &&
7805 		strcmp(action, "inform_deny")!=0 &&
7806 		strcmp(action, "always_transparent")!=0 &&
7807 		strcmp(action, "always_refuse")!=0 &&
7808 		strcmp(action, "always_nxdomain")!=0)
7809 	{
7810 		yyerror("response-ip action: expected deny, redirect, "
7811 			"inform, inform_deny, always_transparent, "
7812 			"always_refuse or always_nxdomain");
7813 	}
7814 }
7815 
7816 
7817