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