1 /* A Bison parser, made by GNU Bison 3.4.1. */
3 /* Bison implementation for Yacc-like parsers in C
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
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.
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.
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/>. */
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.
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
37 /* All symbols defined below should begin with yy or YY, to avoid
38 infringing on user name space. This should be done even for local
39 variables, as they might otherwise be expanded by user macros.
40 There are some unavoidable exceptions within include files to
41 define necessary library symbols; they are noted "INFRINGES ON
42 USER NAME SPACE" below. */
44 /* Undocumented macros, especially those whose name start with YY_,
45 are private implementation details. Do not rely on them. */
47 /* Identify Bison output. */
51 #define YYBISON_VERSION "3.4.1"
54 #define YYSKELETON_NAME "yacc.c"
68 /* First part of user prologue. */
69 #line 38 "util/configparser.y"
79 #include "util/configyyrename.h"
80 #include "util/config_file.h"
81 #include "util/net_help.h"
84 void ub_c_error(const char *message);
86 static void validate_respip_action(const char* action);
88 /* these need to be global, otherwise they cannot be used inside yacc */
89 extern struct config_parser_state* cfg_parser;
92 #define OUTYY(s) printf s /* used ONLY when debugging */
98 #line 99 "util/configparser.c"
101 # if defined __cplusplus
102 # if 201103L <= __cplusplus
103 # define YY_NULLPTR nullptr
105 # define YY_NULLPTR 0
108 # define YY_NULLPTR ((void*)0)
112 /* Enabling verbose error messages. */
113 #ifdef YYERROR_VERBOSE
114 # undef YYERROR_VERBOSE
115 # define YYERROR_VERBOSE 1
117 # define YYERROR_VERBOSE 0
120 /* Use api.header.include to #include this header
121 instead of duplicating it here. */
122 #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
123 # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
145 VAR_FORCE_TOPLEVEL = 266,
148 VAR_NUM_THREADS = 269,
150 VAR_OUTGOING_RANGE = 271,
152 VAR_PREFER_IP4 = 273,
155 VAR_PREFER_IP6 = 276,
159 VAR_OUTGOING_TCP_MSS = 280,
160 VAR_TCP_IDLE_TIMEOUT = 281,
161 VAR_EDNS_TCP_KEEPALIVE = 282,
162 VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283,
168 VAR_MSG_CACHE_SIZE = 289,
169 VAR_MSG_CACHE_SLABS = 290,
170 VAR_NUM_QUERIES_PER_THREAD = 291,
171 VAR_RRSET_CACHE_SIZE = 292,
172 VAR_RRSET_CACHE_SLABS = 293,
173 VAR_OUTGOING_NUM_TCP = 294,
174 VAR_INFRA_HOST_TTL = 295,
175 VAR_INFRA_LAME_TTL = 296,
176 VAR_INFRA_CACHE_SLABS = 297,
177 VAR_INFRA_CACHE_NUMHOSTS = 298,
178 VAR_INFRA_CACHE_LAME_SIZE = 299,
183 VAR_TARGET_FETCH_POLICY = 304,
184 VAR_HARDEN_SHORT_BUFSIZE = 305,
185 VAR_HARDEN_LARGE_QUERIES = 306,
186 VAR_FORWARD_ZONE = 307,
187 VAR_FORWARD_HOST = 308,
188 VAR_FORWARD_ADDR = 309,
189 VAR_DO_NOT_QUERY_ADDRESS = 310,
190 VAR_HIDE_IDENTITY = 311,
191 VAR_HIDE_VERSION = 312,
194 VAR_HARDEN_GLUE = 315,
195 VAR_MODULE_CONF = 316,
196 VAR_TRUST_ANCHOR_FILE = 317,
197 VAR_TRUST_ANCHOR = 318,
198 VAR_VAL_OVERRIDE_DATE = 319,
200 VAR_VAL_CLEAN_ADDITIONAL = 321,
201 VAR_VAL_PERMISSIVE_MODE = 322,
202 VAR_INCOMING_NUM_TCP = 323,
203 VAR_MSG_BUFFER_SIZE = 324,
204 VAR_KEY_CACHE_SIZE = 325,
205 VAR_KEY_CACHE_SLABS = 326,
206 VAR_TRUSTED_KEYS_FILE = 327,
207 VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328,
208 VAR_USE_SYSLOG = 329,
209 VAR_OUTGOING_INTERFACE = 330,
210 VAR_ROOT_HINTS = 331,
211 VAR_DO_NOT_QUERY_LOCALHOST = 332,
212 VAR_CACHE_MAX_TTL = 333,
213 VAR_HARDEN_DNSSEC_STRIPPED = 334,
214 VAR_ACCESS_CONTROL = 335,
215 VAR_LOCAL_ZONE = 336,
216 VAR_LOCAL_DATA = 337,
217 VAR_INTERFACE_AUTOMATIC = 338,
218 VAR_STATISTICS_INTERVAL = 339,
219 VAR_DO_DAEMONIZE = 340,
220 VAR_USE_CAPS_FOR_ID = 341,
221 VAR_STATISTICS_CUMULATIVE = 342,
222 VAR_OUTGOING_PORT_PERMIT = 343,
223 VAR_OUTGOING_PORT_AVOID = 344,
224 VAR_DLV_ANCHOR_FILE = 345,
225 VAR_DLV_ANCHOR = 346,
226 VAR_NEG_CACHE_SIZE = 347,
227 VAR_HARDEN_REFERRAL_PATH = 348,
228 VAR_PRIVATE_ADDRESS = 349,
229 VAR_PRIVATE_DOMAIN = 350,
230 VAR_REMOTE_CONTROL = 351,
231 VAR_CONTROL_ENABLE = 352,
232 VAR_CONTROL_INTERFACE = 353,
233 VAR_CONTROL_PORT = 354,
234 VAR_SERVER_KEY_FILE = 355,
235 VAR_SERVER_CERT_FILE = 356,
236 VAR_CONTROL_KEY_FILE = 357,
237 VAR_CONTROL_CERT_FILE = 358,
238 VAR_CONTROL_USE_CERT = 359,
239 VAR_EXTENDED_STATISTICS = 360,
240 VAR_LOCAL_DATA_PTR = 361,
241 VAR_JOSTLE_TIMEOUT = 362,
242 VAR_STUB_PRIME = 363,
243 VAR_UNWANTED_REPLY_THRESHOLD = 364,
244 VAR_LOG_TIME_ASCII = 365,
245 VAR_DOMAIN_INSECURE = 366,
247 VAR_PYTHON_SCRIPT = 368,
248 VAR_VAL_SIG_SKEW_MIN = 369,
249 VAR_VAL_SIG_SKEW_MAX = 370,
250 VAR_CACHE_MIN_TTL = 371,
251 VAR_VAL_LOG_LEVEL = 372,
252 VAR_AUTO_TRUST_ANCHOR_FILE = 373,
253 VAR_KEEP_MISSING = 374,
254 VAR_ADD_HOLDDOWN = 375,
255 VAR_DEL_HOLDDOWN = 376,
257 VAR_EDNS_BUFFER_SIZE = 378,
259 VAR_PREFETCH_KEY = 380,
261 VAR_SO_REUSEPORT = 382,
262 VAR_HARDEN_BELOW_NXDOMAIN = 383,
263 VAR_IGNORE_CD_FLAG = 384,
264 VAR_LOG_QUERIES = 385,
265 VAR_LOG_REPLIES = 386,
266 VAR_LOG_LOCAL_ACTIONS = 387,
267 VAR_TCP_UPSTREAM = 388,
268 VAR_SSL_UPSTREAM = 389,
269 VAR_SSL_SERVICE_KEY = 390,
270 VAR_SSL_SERVICE_PEM = 391,
272 VAR_FORWARD_FIRST = 393,
273 VAR_STUB_SSL_UPSTREAM = 394,
274 VAR_FORWARD_SSL_UPSTREAM = 395,
275 VAR_TLS_CERT_BUNDLE = 396,
276 VAR_HTTPS_PORT = 397,
277 VAR_HTTP_ENDPOINT = 398,
278 VAR_HTTP_MAX_STREAMS = 399,
279 VAR_HTTP_QUERY_BUFFER_SIZE = 400,
280 VAR_HTTP_RESPONSE_BUFFER_SIZE = 401,
281 VAR_HTTP_NODELAY = 402,
282 VAR_HTTP_NOTLS_DOWNSTREAM = 403,
283 VAR_STUB_FIRST = 404,
284 VAR_MINIMAL_RESPONSES = 405,
285 VAR_RRSET_ROUNDROBIN = 406,
286 VAR_MAX_UDP_SIZE = 407,
287 VAR_DELAY_CLOSE = 408,
288 VAR_UDP_CONNECT = 409,
289 VAR_UNBLOCK_LAN_ZONES = 410,
290 VAR_INSECURE_LAN_ZONES = 411,
291 VAR_INFRA_CACHE_MIN_RTT = 412,
292 VAR_INFRA_KEEP_PROBING = 413,
293 VAR_DNS64_PREFIX = 414,
294 VAR_DNS64_SYNTHALL = 415,
295 VAR_DNS64_IGNORE_AAAA = 416,
297 VAR_DNSTAP_ENABLE = 418,
298 VAR_DNSTAP_SOCKET_PATH = 419,
300 VAR_DNSTAP_TLS = 421,
301 VAR_DNSTAP_TLS_SERVER_NAME = 422,
302 VAR_DNSTAP_TLS_CERT_BUNDLE = 423,
303 VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424,
304 VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425,
305 VAR_DNSTAP_SEND_IDENTITY = 426,
306 VAR_DNSTAP_SEND_VERSION = 427,
307 VAR_DNSTAP_BIDIRECTIONAL = 428,
308 VAR_DNSTAP_IDENTITY = 429,
309 VAR_DNSTAP_VERSION = 430,
310 VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431,
311 VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432,
312 VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433,
313 VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434,
314 VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435,
315 VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436,
316 VAR_RESPONSE_IP_TAG = 437,
317 VAR_RESPONSE_IP = 438,
318 VAR_RESPONSE_IP_DATA = 439,
319 VAR_HARDEN_ALGO_DOWNGRADE = 440,
320 VAR_IP_TRANSPARENT = 441,
322 VAR_DISABLE_DNSSEC_LAME_CHECK = 443,
323 VAR_IP_RATELIMIT = 444,
324 VAR_IP_RATELIMIT_SLABS = 445,
325 VAR_IP_RATELIMIT_SIZE = 446,
327 VAR_RATELIMIT_SLABS = 448,
328 VAR_RATELIMIT_SIZE = 449,
329 VAR_RATELIMIT_FOR_DOMAIN = 450,
330 VAR_RATELIMIT_BELOW_DOMAIN = 451,
331 VAR_IP_RATELIMIT_FACTOR = 452,
332 VAR_RATELIMIT_FACTOR = 453,
333 VAR_SEND_CLIENT_SUBNET = 454,
334 VAR_CLIENT_SUBNET_ZONE = 455,
335 VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456,
336 VAR_CLIENT_SUBNET_OPCODE = 457,
337 VAR_MAX_CLIENT_SUBNET_IPV4 = 458,
338 VAR_MAX_CLIENT_SUBNET_IPV6 = 459,
339 VAR_MIN_CLIENT_SUBNET_IPV4 = 460,
340 VAR_MIN_CLIENT_SUBNET_IPV6 = 461,
341 VAR_MAX_ECS_TREE_SIZE_IPV4 = 462,
342 VAR_MAX_ECS_TREE_SIZE_IPV6 = 463,
343 VAR_CAPS_WHITELIST = 464,
344 VAR_CACHE_MAX_NEGATIVE_TTL = 465,
345 VAR_PERMIT_SMALL_HOLDDOWN = 466,
346 VAR_QNAME_MINIMISATION = 467,
347 VAR_QNAME_MINIMISATION_STRICT = 468,
348 VAR_IP_FREEBIND = 469,
349 VAR_DEFINE_TAG = 470,
350 VAR_LOCAL_ZONE_TAG = 471,
351 VAR_ACCESS_CONTROL_TAG = 472,
352 VAR_LOCAL_ZONE_OVERRIDE = 473,
353 VAR_ACCESS_CONTROL_TAG_ACTION = 474,
354 VAR_ACCESS_CONTROL_TAG_DATA = 475,
356 VAR_ACCESS_CONTROL_VIEW = 477,
357 VAR_VIEW_FIRST = 478,
358 VAR_SERVE_EXPIRED = 479,
359 VAR_SERVE_EXPIRED_TTL = 480,
360 VAR_SERVE_EXPIRED_TTL_RESET = 481,
361 VAR_SERVE_EXPIRED_REPLY_TTL = 482,
362 VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483,
365 VAR_LOG_IDENTITY = 486,
366 VAR_HIDE_TRUSTANCHOR = 487,
367 VAR_TRUST_ANCHOR_SIGNALING = 488,
368 VAR_AGGRESSIVE_NSEC = 489,
369 VAR_USE_SYSTEMD = 490,
370 VAR_SHM_ENABLE = 491,
372 VAR_ROOT_KEY_SENTINEL = 493,
374 VAR_DNSCRYPT_ENABLE = 495,
375 VAR_DNSCRYPT_PORT = 496,
376 VAR_DNSCRYPT_PROVIDER = 497,
377 VAR_DNSCRYPT_SECRET_KEY = 498,
378 VAR_DNSCRYPT_PROVIDER_CERT = 499,
379 VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500,
380 VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501,
381 VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502,
382 VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503,
383 VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504,
384 VAR_IPSECMOD_ENABLED = 505,
385 VAR_IPSECMOD_HOOK = 506,
386 VAR_IPSECMOD_IGNORE_BOGUS = 507,
387 VAR_IPSECMOD_MAX_TTL = 508,
388 VAR_IPSECMOD_WHITELIST = 509,
389 VAR_IPSECMOD_STRICT = 510,
391 VAR_CACHEDB_BACKEND = 512,
392 VAR_CACHEDB_SECRETSEED = 513,
393 VAR_CACHEDB_REDISHOST = 514,
394 VAR_CACHEDB_REDISPORT = 515,
395 VAR_CACHEDB_REDISTIMEOUT = 516,
396 VAR_CACHEDB_REDISEXPIRERECORDS = 517,
397 VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518,
398 VAR_FOR_UPSTREAM = 519,
403 VAR_FOR_DOWNSTREAM = 524,
404 VAR_FALLBACK_ENABLED = 525,
405 VAR_TLS_ADDITIONAL_PORT = 526,
407 VAR_LOW_RTT_PERMIL = 528,
408 VAR_FAST_SERVER_PERMIL = 529,
409 VAR_FAST_SERVER_NUM = 530,
410 VAR_ALLOW_NOTIFY = 531,
411 VAR_TLS_WIN_CERT = 532,
412 VAR_TCP_CONNECTION_LIMIT = 533,
413 VAR_FORWARD_NO_CACHE = 534,
414 VAR_STUB_NO_CACHE = 535,
415 VAR_LOG_SERVFAIL = 536,
417 VAR_UNKNOWN_SERVER_TIME_LIMIT = 538,
418 VAR_LOG_TAG_QUERYREPLY = 539,
419 VAR_STREAM_WAIT_SIZE = 540,
420 VAR_TLS_CIPHERS = 541,
421 VAR_TLS_CIPHERSUITES = 542,
422 VAR_TLS_USE_SNI = 543,
424 VAR_IPSET_NAME_V4 = 545,
425 VAR_IPSET_NAME_V6 = 546,
426 VAR_TLS_SESSION_TICKET_KEYS = 547,
429 VAR_RPZ_ACTION_OVERRIDE = 550,
430 VAR_RPZ_CNAME_OVERRIDE = 551,
432 VAR_RPZ_LOG_NAME = 553,
434 VAR_DYNLIB_FILE = 555,
435 VAR_EDNS_CLIENT_STRING = 556,
436 VAR_EDNS_CLIENT_STRING_OPCODE = 557
447 #define STRING_ARG 265
448 #define VAR_FORCE_TOPLEVEL 266
449 #define VAR_SERVER 267
450 #define VAR_VERBOSITY 268
451 #define VAR_NUM_THREADS 269
453 #define VAR_OUTGOING_RANGE 271
454 #define VAR_INTERFACE 272
455 #define VAR_PREFER_IP4 273
456 #define VAR_DO_IP4 274
457 #define VAR_DO_IP6 275
458 #define VAR_PREFER_IP6 276
459 #define VAR_DO_UDP 277
460 #define VAR_DO_TCP 278
461 #define VAR_TCP_MSS 279
462 #define VAR_OUTGOING_TCP_MSS 280
463 #define VAR_TCP_IDLE_TIMEOUT 281
464 #define VAR_EDNS_TCP_KEEPALIVE 282
465 #define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283
466 #define VAR_CHROOT 284
467 #define VAR_USERNAME 285
468 #define VAR_DIRECTORY 286
469 #define VAR_LOGFILE 287
470 #define VAR_PIDFILE 288
471 #define VAR_MSG_CACHE_SIZE 289
472 #define VAR_MSG_CACHE_SLABS 290
473 #define VAR_NUM_QUERIES_PER_THREAD 291
474 #define VAR_RRSET_CACHE_SIZE 292
475 #define VAR_RRSET_CACHE_SLABS 293
476 #define VAR_OUTGOING_NUM_TCP 294
477 #define VAR_INFRA_HOST_TTL 295
478 #define VAR_INFRA_LAME_TTL 296
479 #define VAR_INFRA_CACHE_SLABS 297
480 #define VAR_INFRA_CACHE_NUMHOSTS 298
481 #define VAR_INFRA_CACHE_LAME_SIZE 299
483 #define VAR_STUB_ZONE 301
484 #define VAR_STUB_HOST 302
485 #define VAR_STUB_ADDR 303
486 #define VAR_TARGET_FETCH_POLICY 304
487 #define VAR_HARDEN_SHORT_BUFSIZE 305
488 #define VAR_HARDEN_LARGE_QUERIES 306
489 #define VAR_FORWARD_ZONE 307
490 #define VAR_FORWARD_HOST 308
491 #define VAR_FORWARD_ADDR 309
492 #define VAR_DO_NOT_QUERY_ADDRESS 310
493 #define VAR_HIDE_IDENTITY 311
494 #define VAR_HIDE_VERSION 312
495 #define VAR_IDENTITY 313
496 #define VAR_VERSION 314
497 #define VAR_HARDEN_GLUE 315
498 #define VAR_MODULE_CONF 316
499 #define VAR_TRUST_ANCHOR_FILE 317
500 #define VAR_TRUST_ANCHOR 318
501 #define VAR_VAL_OVERRIDE_DATE 319
502 #define VAR_BOGUS_TTL 320
503 #define VAR_VAL_CLEAN_ADDITIONAL 321
504 #define VAR_VAL_PERMISSIVE_MODE 322
505 #define VAR_INCOMING_NUM_TCP 323
506 #define VAR_MSG_BUFFER_SIZE 324
507 #define VAR_KEY_CACHE_SIZE 325
508 #define VAR_KEY_CACHE_SLABS 326
509 #define VAR_TRUSTED_KEYS_FILE 327
510 #define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328
511 #define VAR_USE_SYSLOG 329
512 #define VAR_OUTGOING_INTERFACE 330
513 #define VAR_ROOT_HINTS 331
514 #define VAR_DO_NOT_QUERY_LOCALHOST 332
515 #define VAR_CACHE_MAX_TTL 333
516 #define VAR_HARDEN_DNSSEC_STRIPPED 334
517 #define VAR_ACCESS_CONTROL 335
518 #define VAR_LOCAL_ZONE 336
519 #define VAR_LOCAL_DATA 337
520 #define VAR_INTERFACE_AUTOMATIC 338
521 #define VAR_STATISTICS_INTERVAL 339
522 #define VAR_DO_DAEMONIZE 340
523 #define VAR_USE_CAPS_FOR_ID 341
524 #define VAR_STATISTICS_CUMULATIVE 342
525 #define VAR_OUTGOING_PORT_PERMIT 343
526 #define VAR_OUTGOING_PORT_AVOID 344
527 #define VAR_DLV_ANCHOR_FILE 345
528 #define VAR_DLV_ANCHOR 346
529 #define VAR_NEG_CACHE_SIZE 347
530 #define VAR_HARDEN_REFERRAL_PATH 348
531 #define VAR_PRIVATE_ADDRESS 349
532 #define VAR_PRIVATE_DOMAIN 350
533 #define VAR_REMOTE_CONTROL 351
534 #define VAR_CONTROL_ENABLE 352
535 #define VAR_CONTROL_INTERFACE 353
536 #define VAR_CONTROL_PORT 354
537 #define VAR_SERVER_KEY_FILE 355
538 #define VAR_SERVER_CERT_FILE 356
539 #define VAR_CONTROL_KEY_FILE 357
540 #define VAR_CONTROL_CERT_FILE 358
541 #define VAR_CONTROL_USE_CERT 359
542 #define VAR_EXTENDED_STATISTICS 360
543 #define VAR_LOCAL_DATA_PTR 361
544 #define VAR_JOSTLE_TIMEOUT 362
545 #define VAR_STUB_PRIME 363
546 #define VAR_UNWANTED_REPLY_THRESHOLD 364
547 #define VAR_LOG_TIME_ASCII 365
548 #define VAR_DOMAIN_INSECURE 366
549 #define VAR_PYTHON 367
550 #define VAR_PYTHON_SCRIPT 368
551 #define VAR_VAL_SIG_SKEW_MIN 369
552 #define VAR_VAL_SIG_SKEW_MAX 370
553 #define VAR_CACHE_MIN_TTL 371
554 #define VAR_VAL_LOG_LEVEL 372
555 #define VAR_AUTO_TRUST_ANCHOR_FILE 373
556 #define VAR_KEEP_MISSING 374
557 #define VAR_ADD_HOLDDOWN 375
558 #define VAR_DEL_HOLDDOWN 376
559 #define VAR_SO_RCVBUF 377
560 #define VAR_EDNS_BUFFER_SIZE 378
561 #define VAR_PREFETCH 379
562 #define VAR_PREFETCH_KEY 380
563 #define VAR_SO_SNDBUF 381
564 #define VAR_SO_REUSEPORT 382
565 #define VAR_HARDEN_BELOW_NXDOMAIN 383
566 #define VAR_IGNORE_CD_FLAG 384
567 #define VAR_LOG_QUERIES 385
568 #define VAR_LOG_REPLIES 386
569 #define VAR_LOG_LOCAL_ACTIONS 387
570 #define VAR_TCP_UPSTREAM 388
571 #define VAR_SSL_UPSTREAM 389
572 #define VAR_SSL_SERVICE_KEY 390
573 #define VAR_SSL_SERVICE_PEM 391
574 #define VAR_SSL_PORT 392
575 #define VAR_FORWARD_FIRST 393
576 #define VAR_STUB_SSL_UPSTREAM 394
577 #define VAR_FORWARD_SSL_UPSTREAM 395
578 #define VAR_TLS_CERT_BUNDLE 396
579 #define VAR_HTTPS_PORT 397
580 #define VAR_HTTP_ENDPOINT 398
581 #define VAR_HTTP_MAX_STREAMS 399
582 #define VAR_HTTP_QUERY_BUFFER_SIZE 400
583 #define VAR_HTTP_RESPONSE_BUFFER_SIZE 401
584 #define VAR_HTTP_NODELAY 402
585 #define VAR_HTTP_NOTLS_DOWNSTREAM 403
586 #define VAR_STUB_FIRST 404
587 #define VAR_MINIMAL_RESPONSES 405
588 #define VAR_RRSET_ROUNDROBIN 406
589 #define VAR_MAX_UDP_SIZE 407
590 #define VAR_DELAY_CLOSE 408
591 #define VAR_UDP_CONNECT 409
592 #define VAR_UNBLOCK_LAN_ZONES 410
593 #define VAR_INSECURE_LAN_ZONES 411
594 #define VAR_INFRA_CACHE_MIN_RTT 412
595 #define VAR_INFRA_KEEP_PROBING 413
596 #define VAR_DNS64_PREFIX 414
597 #define VAR_DNS64_SYNTHALL 415
598 #define VAR_DNS64_IGNORE_AAAA 416
599 #define VAR_DNSTAP 417
600 #define VAR_DNSTAP_ENABLE 418
601 #define VAR_DNSTAP_SOCKET_PATH 419
602 #define VAR_DNSTAP_IP 420
603 #define VAR_DNSTAP_TLS 421
604 #define VAR_DNSTAP_TLS_SERVER_NAME 422
605 #define VAR_DNSTAP_TLS_CERT_BUNDLE 423
606 #define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 424
607 #define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 425
608 #define VAR_DNSTAP_SEND_IDENTITY 426
609 #define VAR_DNSTAP_SEND_VERSION 427
610 #define VAR_DNSTAP_BIDIRECTIONAL 428
611 #define VAR_DNSTAP_IDENTITY 429
612 #define VAR_DNSTAP_VERSION 430
613 #define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 431
614 #define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 432
615 #define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 433
616 #define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 434
617 #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 435
618 #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 436
619 #define VAR_RESPONSE_IP_TAG 437
620 #define VAR_RESPONSE_IP 438
621 #define VAR_RESPONSE_IP_DATA 439
622 #define VAR_HARDEN_ALGO_DOWNGRADE 440
623 #define VAR_IP_TRANSPARENT 441
624 #define VAR_IP_DSCP 442
625 #define VAR_DISABLE_DNSSEC_LAME_CHECK 443
626 #define VAR_IP_RATELIMIT 444
627 #define VAR_IP_RATELIMIT_SLABS 445
628 #define VAR_IP_RATELIMIT_SIZE 446
629 #define VAR_RATELIMIT 447
630 #define VAR_RATELIMIT_SLABS 448
631 #define VAR_RATELIMIT_SIZE 449
632 #define VAR_RATELIMIT_FOR_DOMAIN 450
633 #define VAR_RATELIMIT_BELOW_DOMAIN 451
634 #define VAR_IP_RATELIMIT_FACTOR 452
635 #define VAR_RATELIMIT_FACTOR 453
636 #define VAR_SEND_CLIENT_SUBNET 454
637 #define VAR_CLIENT_SUBNET_ZONE 455
638 #define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 456
639 #define VAR_CLIENT_SUBNET_OPCODE 457
640 #define VAR_MAX_CLIENT_SUBNET_IPV4 458
641 #define VAR_MAX_CLIENT_SUBNET_IPV6 459
642 #define VAR_MIN_CLIENT_SUBNET_IPV4 460
643 #define VAR_MIN_CLIENT_SUBNET_IPV6 461
644 #define VAR_MAX_ECS_TREE_SIZE_IPV4 462
645 #define VAR_MAX_ECS_TREE_SIZE_IPV6 463
646 #define VAR_CAPS_WHITELIST 464
647 #define VAR_CACHE_MAX_NEGATIVE_TTL 465
648 #define VAR_PERMIT_SMALL_HOLDDOWN 466
649 #define VAR_QNAME_MINIMISATION 467
650 #define VAR_QNAME_MINIMISATION_STRICT 468
651 #define VAR_IP_FREEBIND 469
652 #define VAR_DEFINE_TAG 470
653 #define VAR_LOCAL_ZONE_TAG 471
654 #define VAR_ACCESS_CONTROL_TAG 472
655 #define VAR_LOCAL_ZONE_OVERRIDE 473
656 #define VAR_ACCESS_CONTROL_TAG_ACTION 474
657 #define VAR_ACCESS_CONTROL_TAG_DATA 475
659 #define VAR_ACCESS_CONTROL_VIEW 477
660 #define VAR_VIEW_FIRST 478
661 #define VAR_SERVE_EXPIRED 479
662 #define VAR_SERVE_EXPIRED_TTL 480
663 #define VAR_SERVE_EXPIRED_TTL_RESET 481
664 #define VAR_SERVE_EXPIRED_REPLY_TTL 482
665 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483
666 #define VAR_FAKE_DSA 484
667 #define VAR_FAKE_SHA1 485
668 #define VAR_LOG_IDENTITY 486
669 #define VAR_HIDE_TRUSTANCHOR 487
670 #define VAR_TRUST_ANCHOR_SIGNALING 488
671 #define VAR_AGGRESSIVE_NSEC 489
672 #define VAR_USE_SYSTEMD 490
673 #define VAR_SHM_ENABLE 491
674 #define VAR_SHM_KEY 492
675 #define VAR_ROOT_KEY_SENTINEL 493
676 #define VAR_DNSCRYPT 494
677 #define VAR_DNSCRYPT_ENABLE 495
678 #define VAR_DNSCRYPT_PORT 496
679 #define VAR_DNSCRYPT_PROVIDER 497
680 #define VAR_DNSCRYPT_SECRET_KEY 498
681 #define VAR_DNSCRYPT_PROVIDER_CERT 499
682 #define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 500
683 #define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 501
684 #define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 502
685 #define VAR_DNSCRYPT_NONCE_CACHE_SIZE 503
686 #define VAR_DNSCRYPT_NONCE_CACHE_SLABS 504
687 #define VAR_IPSECMOD_ENABLED 505
688 #define VAR_IPSECMOD_HOOK 506
689 #define VAR_IPSECMOD_IGNORE_BOGUS 507
690 #define VAR_IPSECMOD_MAX_TTL 508
691 #define VAR_IPSECMOD_WHITELIST 509
692 #define VAR_IPSECMOD_STRICT 510
693 #define VAR_CACHEDB 511
694 #define VAR_CACHEDB_BACKEND 512
695 #define VAR_CACHEDB_SECRETSEED 513
696 #define VAR_CACHEDB_REDISHOST 514
697 #define VAR_CACHEDB_REDISPORT 515
698 #define VAR_CACHEDB_REDISTIMEOUT 516
699 #define VAR_CACHEDB_REDISEXPIRERECORDS 517
700 #define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 518
701 #define VAR_FOR_UPSTREAM 519
702 #define VAR_AUTH_ZONE 520
703 #define VAR_ZONEFILE 521
704 #define VAR_MASTER 522
706 #define VAR_FOR_DOWNSTREAM 524
707 #define VAR_FALLBACK_ENABLED 525
708 #define VAR_TLS_ADDITIONAL_PORT 526
709 #define VAR_LOW_RTT 527
710 #define VAR_LOW_RTT_PERMIL 528
711 #define VAR_FAST_SERVER_PERMIL 529
712 #define VAR_FAST_SERVER_NUM 530
713 #define VAR_ALLOW_NOTIFY 531
714 #define VAR_TLS_WIN_CERT 532
715 #define VAR_TCP_CONNECTION_LIMIT 533
716 #define VAR_FORWARD_NO_CACHE 534
717 #define VAR_STUB_NO_CACHE 535
718 #define VAR_LOG_SERVFAIL 536
719 #define VAR_DENY_ANY 537
720 #define VAR_UNKNOWN_SERVER_TIME_LIMIT 538
721 #define VAR_LOG_TAG_QUERYREPLY 539
722 #define VAR_STREAM_WAIT_SIZE 540
723 #define VAR_TLS_CIPHERS 541
724 #define VAR_TLS_CIPHERSUITES 542
725 #define VAR_TLS_USE_SNI 543
726 #define VAR_IPSET 544
727 #define VAR_IPSET_NAME_V4 545
728 #define VAR_IPSET_NAME_V6 546
729 #define VAR_TLS_SESSION_TICKET_KEYS 547
732 #define VAR_RPZ_ACTION_OVERRIDE 550
733 #define VAR_RPZ_CNAME_OVERRIDE 551
734 #define VAR_RPZ_LOG 552
735 #define VAR_RPZ_LOG_NAME 553
736 #define VAR_DYNLIB 554
737 #define VAR_DYNLIB_FILE 555
738 #define VAR_EDNS_CLIENT_STRING 556
739 #define VAR_EDNS_CLIENT_STRING_OPCODE 557
742 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
745 #line 66 "util/configparser.y"
749 #line 750 "util/configparser.c"
752 typedef union YYSTYPE YYSTYPE;
753 # define YYSTYPE_IS_TRIVIAL 1
754 # define YYSTYPE_IS_DECLARED 1
758 extern YYSTYPE yylval;
762 #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */
771 typedef YYTYPE_UINT8 yytype_uint8;
773 typedef unsigned char yytype_uint8;
777 typedef YYTYPE_INT8 yytype_int8;
779 typedef signed char yytype_int8;
783 typedef YYTYPE_UINT16 yytype_uint16;
785 typedef unsigned short yytype_uint16;
789 typedef YYTYPE_INT16 yytype_int16;
791 typedef short yytype_int16;
795 # ifdef __SIZE_TYPE__
796 # define YYSIZE_T __SIZE_TYPE__
797 # elif defined size_t
798 # define YYSIZE_T size_t
799 # elif ! defined YYSIZE_T
800 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
801 # define YYSIZE_T size_t
803 # define YYSIZE_T unsigned
807 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
810 # if defined YYENABLE_NLS && YYENABLE_NLS
812 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
813 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
817 # define YY_(Msgid) Msgid
822 # if (defined __GNUC__ \
823 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
824 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
825 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
827 # define YY_ATTRIBUTE(Spec) /* empty */
831 #ifndef YY_ATTRIBUTE_PURE
832 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
835 #ifndef YY_ATTRIBUTE_UNUSED
836 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
839 /* Suppress unused-variable warnings by "using" E. */
840 #if ! defined lint || defined __GNUC__
841 # define YYUSE(E) ((void) (E))
843 # define YYUSE(E) /* empty */
846 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
847 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
848 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
849 _Pragma ("GCC diagnostic push") \
850 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
851 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
852 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
853 _Pragma ("GCC diagnostic pop")
855 # define YY_INITIAL_VALUE(Value) Value
857 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
858 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
859 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
861 #ifndef YY_INITIAL_VALUE
862 # define YY_INITIAL_VALUE(Value) /* Nothing. */
866 #define YY_ASSERT(E) ((void) (0 && (E)))
868 #if ! defined yyoverflow || YYERROR_VERBOSE
870 /* The parser invokes alloca or malloc; define the necessary symbols. */
872 # ifdef YYSTACK_USE_ALLOCA
873 # if YYSTACK_USE_ALLOCA
875 # define YYSTACK_ALLOC __builtin_alloca
876 # elif defined __BUILTIN_VA_ARG_INCR
877 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
879 # define YYSTACK_ALLOC __alloca
880 # elif defined _MSC_VER
881 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
882 # define alloca _alloca
884 # define YYSTACK_ALLOC alloca
885 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
886 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
887 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
888 # ifndef EXIT_SUCCESS
889 # define EXIT_SUCCESS 0
896 # ifdef YYSTACK_ALLOC
897 /* Pacify GCC's 'empty if-body' warning. */
898 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
899 # ifndef YYSTACK_ALLOC_MAXIMUM
900 /* The OS might guarantee only one guard page at the bottom of the stack,
901 and a page size can be as small as 4096 bytes. So we cannot safely
902 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
903 to allow for a few compiler-allocated temporary stack slots. */
904 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
907 # define YYSTACK_ALLOC YYMALLOC
908 # define YYSTACK_FREE YYFREE
909 # ifndef YYSTACK_ALLOC_MAXIMUM
910 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
912 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
913 && ! ((defined YYMALLOC || defined malloc) \
914 && (defined YYFREE || defined free)))
915 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
916 # ifndef EXIT_SUCCESS
917 # define EXIT_SUCCESS 0
921 # define YYMALLOC malloc
922 # if ! defined malloc && ! defined EXIT_SUCCESS
923 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
928 # if ! defined free && ! defined EXIT_SUCCESS
929 void free (void *); /* INFRINGES ON USER NAME SPACE */
933 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
936 #if (! defined yyoverflow \
937 && (! defined __cplusplus \
938 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
940 /* A type that is properly aligned for any stack member. */
943 yytype_int16 yyss_alloc;
947 /* The size of the maximum gap between one aligned stack and the next. */
948 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
950 /* The size of an array large to enough to hold all stacks, each with
952 # define YYSTACK_BYTES(N) \
953 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
954 + YYSTACK_GAP_MAXIMUM)
956 # define YYCOPY_NEEDED 1
958 /* Relocate STACK from its old location to the new one. The
959 local variables YYSIZE and YYSTACKSIZE give the old and new number of
960 elements in the stack, and YYPTR gives the new location of the
961 stack. Advance YYPTR to a properly aligned location for the next
963 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
966 YYSIZE_T yynewbytes; \
967 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
968 Stack = &yyptr->Stack_alloc; \
969 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
970 yyptr += yynewbytes / sizeof (*yyptr); \
976 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
977 /* Copy COUNT objects from SRC to DST. The source and destination do
980 # if defined __GNUC__ && 1 < __GNUC__
981 # define YYCOPY(Dst, Src, Count) \
982 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
984 # define YYCOPY(Dst, Src, Count) \
988 for (yyi = 0; yyi < (Count); yyi++) \
989 (Dst)[yyi] = (Src)[yyi]; \
994 #endif /* !YYCOPY_NEEDED */
996 /* YYFINAL -- State number of the termination state. */
998 /* YYLAST -- Last index in YYTABLE. */
1001 /* YYNTOKENS -- Number of terminals. */
1002 #define YYNTOKENS 303
1003 /* YYNNTS -- Number of nonterminals. */
1005 /* YYNRULES -- Number of rules. */
1006 #define YYNRULES 632
1007 /* YYNSTATES -- Number of states. */
1008 #define YYNSTATES 939
1010 #define YYUNDEFTOK 2
1011 #define YYMAXUTOK 557
1013 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1014 as returned by yylex, with out-of-bounds checking. */
1015 #define YYTRANSLATE(YYX) \
1016 ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1018 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1019 as returned by yylex. */
1020 static const yytype_uint16 yytranslate[] =
1022 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1023 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1024 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1025 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1026 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1027 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1028 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1029 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1030 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1031 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1032 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1033 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1034 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1035 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1036 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1037 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1038 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1039 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1040 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1041 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1042 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1043 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1044 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1045 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1046 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1047 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1048 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1049 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1050 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1051 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1052 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1053 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1054 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1055 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1056 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1057 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1058 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1059 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1060 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1061 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1062 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1063 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1064 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1065 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1066 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1067 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1068 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1069 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1070 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1071 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1072 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1073 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1074 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1075 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1076 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1077 295, 296, 297, 298, 299, 300, 301, 302
1081 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1082 static const yytype_uint16 yyrline[] =
1084 0, 185, 185, 185, 186, 186, 187, 187, 188, 188,
1085 188, 189, 189, 190, 190, 191, 191, 192, 194, 200,
1086 205, 206, 207, 207, 207, 208, 208, 209, 209, 209,
1087 210, 210, 211, 211, 211, 212, 212, 213, 213, 213,
1088 214, 214, 214, 215, 215, 216, 216, 217, 217, 218,
1089 218, 219, 219, 220, 220, 221, 221, 222, 222, 223,
1090 223, 223, 224, 224, 224, 225, 225, 225, 226, 226,
1091 227, 227, 228, 228, 229, 229, 230, 230, 230, 231,
1092 231, 232, 232, 233, 233, 233, 234, 234, 235, 235,
1093 236, 236, 237, 237, 237, 238, 238, 239, 239, 240,
1094 240, 241, 241, 242, 242, 243, 243, 243, 244, 244,
1095 245, 245, 245, 246, 246, 246, 247, 247, 247, 248,
1096 248, 248, 248, 249, 250, 250, 250, 251, 251, 251,
1097 252, 252, 253, 253, 254, 254, 254, 255, 255, 255,
1098 256, 256, 257, 257, 257, 258, 258, 259, 259, 259,
1099 260, 260, 261, 261, 262, 262, 263, 264, 264, 265,
1100 265, 266, 266, 267, 268, 268, 269, 269, 270, 270,
1101 271, 271, 272, 272, 273, 273, 273, 274, 274, 275,
1102 275, 276, 276, 277, 277, 278, 278, 279, 279, 280,
1103 280, 280, 281, 281, 281, 282, 282, 282, 283, 283,
1104 284, 285, 285, 286, 286, 287, 287, 288, 288, 289,
1105 289, 289, 290, 290, 290, 291, 291, 291, 292, 292,
1106 293, 293, 294, 294, 295, 295, 296, 298, 310, 311,
1107 312, 312, 312, 312, 312, 313, 313, 315, 327, 328,
1108 329, 329, 329, 329, 330, 330, 332, 346, 347, 348,
1109 348, 348, 348, 349, 349, 349, 351, 368, 369, 370,
1110 370, 370, 370, 371, 371, 371, 372, 375, 394, 411,
1111 419, 429, 437, 454, 455, 456, 456, 456, 456, 456,
1112 457, 457, 457, 458, 458, 460, 469, 478, 489, 498,
1113 507, 516, 527, 536, 548, 562, 577, 588, 605, 622,
1114 639, 656, 671, 686, 699, 714, 723, 732, 741, 750,
1115 759, 768, 777, 786, 795, 804, 813, 822, 831, 840,
1116 853, 862, 875, 884, 893, 902, 909, 916, 925, 932,
1117 941, 949, 956, 963, 971, 980, 988, 1004, 1012, 1020,
1118 1028, 1036, 1044, 1053, 1062, 1076, 1085, 1094, 1103, 1112,
1119 1121, 1130, 1137, 1144, 1170, 1178, 1185, 1192, 1199, 1206,
1120 1214, 1222, 1230, 1237, 1248, 1259, 1266, 1275, 1284, 1293,
1121 1300, 1307, 1315, 1323, 1333, 1343, 1353, 1367, 1375, 1388,
1122 1399, 1407, 1420, 1429, 1438, 1447, 1456, 1466, 1476, 1484,
1123 1497, 1506, 1514, 1523, 1531, 1544, 1553, 1563, 1570, 1580,
1124 1590, 1600, 1610, 1620, 1630, 1640, 1650, 1657, 1664, 1671,
1125 1680, 1689, 1698, 1707, 1714, 1724, 1744, 1751, 1769, 1782,
1126 1795, 1804, 1813, 1822, 1831, 1841, 1851, 1862, 1871, 1880,
1127 1889, 1898, 1907, 1916, 1929, 1942, 1951, 1958, 1967, 1976,
1128 1985, 1994, 2002, 2015, 2023, 2064, 2071, 2086, 2096, 2106,
1129 2113, 2120, 2127, 2136, 2144, 2158, 2179, 2200, 2212, 2224,
1130 2236, 2245, 2266, 2276, 2285, 2293, 2301, 2314, 2327, 2342,
1131 2357, 2366, 2375, 2381, 2390, 2399, 2409, 2419, 2432, 2445,
1132 2457, 2471, 2483, 2497, 2506, 2518, 2528, 2535, 2542, 2551,
1133 2560, 2570, 2580, 2590, 2597, 2604, 2613, 2622, 2632, 2642,
1134 2649, 2656, 2663, 2671, 2681, 2691, 2701, 2711, 2750, 2760,
1135 2768, 2776, 2791, 2800, 2805, 2806, 2807, 2807, 2807, 2808,
1136 2808, 2808, 2809, 2809, 2811, 2821, 2830, 2837, 2844, 2851,
1137 2858, 2865, 2872, 2877, 2878, 2879, 2879, 2879, 2880, 2880,
1138 2880, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, 2886,
1139 2887, 2888, 2889, 2890, 2892, 2901, 2911, 2918, 2925, 2934,
1140 2941, 2948, 2955, 2962, 2971, 2980, 2987, 2994, 3004, 3014,
1141 3024, 3034, 3044, 3054, 3059, 3060, 3061, 3063, 3069, 3074,
1142 3075, 3076, 3078, 3084, 3094, 3101, 3110, 3118, 3123, 3124,
1143 3126, 3126, 3126, 3127, 3127, 3128, 3129, 3130, 3131, 3132,
1144 3134, 3144, 3153, 3160, 3169, 3176, 3185, 3193, 3206, 3214,
1145 3227, 3232, 3233, 3234, 3234, 3235, 3235, 3235, 3236, 3238,
1146 3250, 3262, 3274, 3289, 3302, 3315, 3326, 3331, 3332, 3333,
1151 #if YYDEBUG || YYERROR_VERBOSE || 0
1152 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1153 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1154 static const char *const yytname[] =
1156 "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
1157 "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL",
1158 "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT",
1159 "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4",
1160 "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP",
1161 "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT",
1162 "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT",
1163 "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1164 "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1165 "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1166 "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1167 "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1168 "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1169 "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1170 "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1171 "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1172 "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1173 "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1174 "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1175 "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1176 "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1177 "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1178 "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1179 "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1180 "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1181 "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1182 "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1183 "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1184 "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1185 "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1186 "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1187 "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1188 "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1189 "VAR_CONTROL_USE_CERT", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR",
1190 "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD",
1191 "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON",
1192 "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX",
1193 "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1194 "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1195 "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1196 "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1197 "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1198 "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1199 "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM",
1200 "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM",
1201 "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT",
1202 "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS",
1203 "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE",
1204 "VAR_HTTP_NODELAY", "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST",
1205 "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE",
1206 "VAR_DELAY_CLOSE", "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES",
1207 "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT",
1208 "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1209 "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE",
1210 "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS",
1211 "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE",
1212 "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE",
1213 "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION",
1214 "VAR_DNSTAP_BIDIRECTIONAL", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1215 "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1216 "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1217 "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1218 "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1219 "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1220 "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG",
1221 "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE",
1222 "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK",
1223 "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE",
1224 "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE",
1225 "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1226 "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1227 "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1228 "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1229 "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1230 "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1231 "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1232 "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1233 "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION",
1234 "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG",
1235 "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
1236 "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION",
1237 "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW",
1238 "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1239 "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1240 "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1241 "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING",
1242 "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1243 "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1244 "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1245 "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1246 "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1247 "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1248 "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1249 "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1250 "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS",
1251 "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT",
1252 "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED",
1253 "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT",
1254 "VAR_CACHEDB_REDISTIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS",
1255 "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM",
1256 "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL",
1257 "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT",
1258 "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL",
1259 "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT",
1260 "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE",
1261 "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT",
1262 "VAR_LOG_TAG_QUERYREPLY", "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS",
1263 "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI", "VAR_IPSET",
1264 "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS",
1265 "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE",
1266 "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME",
1267 "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING",
1268 "VAR_EDNS_CLIENT_STRING_OPCODE", "$accept", "toplevelvars",
1269 "toplevelvar", "force_toplevel", "serverstart", "contents_server",
1270 "content_server", "stubstart", "contents_stub", "content_stub",
1271 "forwardstart", "contents_forward", "content_forward", "viewstart",
1272 "contents_view", "content_view", "authstart", "contents_auth",
1273 "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override",
1274 "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz",
1275 "server_num_threads", "server_verbosity", "server_statistics_interval",
1276 "server_statistics_cumulative", "server_extended_statistics",
1277 "server_shm_enable", "server_shm_key", "server_port",
1278 "server_send_client_subnet", "server_client_subnet_zone",
1279 "server_client_subnet_always_forward", "server_client_subnet_opcode",
1280 "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1281 "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1282 "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1283 "server_interface", "server_outgoing_interface", "server_outgoing_range",
1284 "server_outgoing_port_permit", "server_outgoing_port_avoid",
1285 "server_outgoing_num_tcp", "server_incoming_num_tcp",
1286 "server_interface_automatic", "server_do_ip4", "server_do_ip6",
1287 "server_do_udp", "server_do_tcp", "server_prefer_ip4",
1288 "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss",
1289 "server_tcp_idle_timeout", "server_tcp_keepalive",
1290 "server_tcp_keepalive_timeout", "server_tcp_upstream",
1291 "server_udp_upstream_without_downstream", "server_ssl_upstream",
1292 "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port",
1293 "server_tls_cert_bundle", "server_tls_win_cert",
1294 "server_tls_additional_port", "server_tls_ciphers",
1295 "server_tls_ciphersuites", "server_tls_session_ticket_keys",
1296 "server_tls_use_sni", "server_https_port", "server_http_endpoint",
1297 "server_http_max_streams", "server_http_query_buffer_size",
1298 "server_http_response_buffer_size", "server_http_nodelay",
1299 "server_http_notls_downstream", "server_use_systemd",
1300 "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
1301 "server_log_queries", "server_log_replies", "server_log_tag_queryreply",
1302 "server_log_servfail", "server_log_local_actions", "server_chroot",
1303 "server_username", "server_directory", "server_logfile",
1304 "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
1305 "server_dlv_anchor", "server_auto_trust_anchor_file",
1306 "server_trust_anchor_file", "server_trusted_keys_file",
1307 "server_trust_anchor", "server_trust_anchor_signaling",
1308 "server_root_key_sentinel", "server_domain_insecure",
1309 "server_hide_identity", "server_hide_version", "server_hide_trustanchor",
1310 "server_identity", "server_version", "server_so_rcvbuf",
1311 "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
1312 "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size",
1313 "server_edns_buffer_size", "server_msg_buffer_size",
1314 "server_msg_cache_size", "server_msg_cache_slabs",
1315 "server_num_queries_per_thread", "server_jostle_timeout",
1316 "server_delay_close", "server_udp_connect", "server_unblock_lan_zones",
1317 "server_insecure_lan_zones", "server_rrset_cache_size",
1318 "server_rrset_cache_slabs", "server_infra_host_ttl",
1319 "server_infra_lame_ttl", "server_infra_cache_numhosts",
1320 "server_infra_cache_lame_size", "server_infra_cache_slabs",
1321 "server_infra_cache_min_rtt", "server_infra_keep_probing",
1322 "server_target_fetch_policy", "server_harden_short_bufsize",
1323 "server_harden_large_queries", "server_harden_glue",
1324 "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
1325 "server_harden_referral_path", "server_harden_algo_downgrade",
1326 "server_use_caps_for_id", "server_caps_whitelist",
1327 "server_private_address", "server_private_domain", "server_prefetch",
1328 "server_prefetch_key", "server_deny_any",
1329 "server_unwanted_reply_threshold", "server_do_not_query_address",
1330 "server_do_not_query_localhost", "server_access_control",
1331 "server_module_conf", "server_val_override_date",
1332 "server_val_sig_skew_min", "server_val_sig_skew_max",
1333 "server_cache_max_ttl", "server_cache_max_negative_ttl",
1334 "server_cache_min_ttl", "server_bogus_ttl",
1335 "server_val_clean_additional", "server_val_permissive_mode",
1336 "server_aggressive_nsec", "server_ignore_cd_flag",
1337 "server_serve_expired", "server_serve_expired_ttl",
1338 "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1339 "server_serve_expired_client_timeout", "server_fake_dsa",
1340 "server_fake_sha1", "server_val_log_level",
1341 "server_val_nsec3_keysize_iterations", "server_add_holddown",
1342 "server_del_holddown", "server_keep_missing",
1343 "server_permit_small_holddown", "server_key_cache_size",
1344 "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1345 "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1346 "server_rrset_roundrobin", "server_unknown_server_time_limit",
1347 "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall",
1348 "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag",
1349 "server_access_control_tag", "server_access_control_tag_action",
1350 "server_access_control_tag_data", "server_local_zone_override",
1351 "server_access_control_view", "server_response_ip_tag",
1352 "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size",
1353 "server_ratelimit_size", "server_ip_ratelimit_slabs",
1354 "server_ratelimit_slabs", "server_ratelimit_for_domain",
1355 "server_ratelimit_below_domain", "server_ip_ratelimit_factor",
1356 "server_ratelimit_factor", "server_low_rtt", "server_fast_server_num",
1357 "server_fast_server_permil", "server_qname_minimisation",
1358 "server_qname_minimisation_strict", "server_ipsecmod_enabled",
1359 "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1360 "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1361 "server_ipsecmod_strict", "server_edns_client_string",
1362 "server_edns_client_string_opcode", "stub_name", "stub_host",
1363 "stub_addr", "stub_first", "stub_no_cache", "stub_ssl_upstream",
1364 "stub_prime", "forward_name", "forward_host", "forward_addr",
1365 "forward_first", "forward_no_cache", "forward_ssl_upstream", "auth_name",
1366 "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
1367 "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled",
1368 "view_name", "view_local_zone", "view_response_ip",
1369 "view_response_ip_data", "view_local_data", "view_local_data_ptr",
1370 "view_first", "rcstart", "contents_rc", "content_rc",
1371 "rc_control_enable", "rc_control_port", "rc_control_interface",
1372 "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file",
1373 "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
1374 "content_dt", "dt_dnstap_enable", "dt_dnstap_bidirectional",
1375 "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls",
1376 "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle",
1377 "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file",
1378 "dt_dnstap_send_identity", "dt_dnstap_send_version",
1379 "dt_dnstap_identity", "dt_dnstap_version",
1380 "dt_dnstap_log_resolver_query_messages",
1381 "dt_dnstap_log_resolver_response_messages",
1382 "dt_dnstap_log_client_query_messages",
1383 "dt_dnstap_log_client_response_messages",
1384 "dt_dnstap_log_forwarder_query_messages",
1385 "dt_dnstap_log_forwarder_response_messages", "pythonstart",
1386 "contents_py", "content_py", "py_script", "dynlibstart", "contents_dl",
1387 "content_dl", "dl_file", "server_disable_dnssec_lame_check",
1388 "server_log_identity", "server_response_ip", "server_response_ip_data",
1389 "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1390 "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1391 "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1392 "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1393 "dnsc_dnscrypt_shared_secret_cache_slabs",
1394 "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1395 "cachedbstart", "contents_cachedb", "content_cachedb",
1396 "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host",
1397 "redis_server_port", "redis_timeout", "redis_expire_records",
1398 "server_tcp_connection_limit", "ipsetstart", "contents_ipset",
1399 "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
1404 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1405 (internal) symbol number NUM (which must be that of a token). */
1406 static const yytype_uint16 yytoknum[] =
1408 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1409 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1410 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1411 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1412 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1413 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1414 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1415 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1416 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1417 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1418 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1419 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1420 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1421 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1422 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1423 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1424 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1425 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1426 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1427 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1428 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1429 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1430 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1431 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1432 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1433 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1434 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
1435 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
1436 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
1437 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
1442 #define YYPACT_NINF -291
1444 #define yypact_value_is_default(Yystate) \
1445 (!!((Yystate) == (-291)))
1447 #define YYTABLE_NINF -1
1449 #define yytable_value_is_error(Yytable_value) \
1452 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1454 static const yytype_int16 yypact[] =
1456 -291, 0, -291, -291, -291, -291, -291, -291, -291, -291,
1457 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1458 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1459 -291, -291, 287, -42, -38, -43, -21, -44, -11, -96,
1460 -109, -290, -215, -240, -282, 3, 4, 13, 25, 26,
1461 27, 30, 31, 32, 33, 34, 35, 37, 38, 39,
1462 40, 41, 43, 44, 45, 46, 47, 48, 49, 50,
1463 51, 52, 54, 55, 84, 85, 88, 89, 91, 93,
1464 94, 95, 96, 98, 99, 100, 101, 103, 104, 105,
1465 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1466 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1467 126, 127, 128, 129, 132, 133, 134, 135, 136, 137,
1468 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
1469 148, 149, 150, 151, 153, 154, 155, 156, 157, 158,
1470 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
1471 169, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1472 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
1473 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
1474 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1475 210, 215, 216, 217, 218, 219, 220, 221, 223, 224,
1476 225, 226, 227, 230, 232, 234, 247, 248, 249, 250,
1477 251, 252, 253, 254, 256, 257, 258, 259, 260, 261,
1478 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
1479 272, 273, 274, 275, 276, 277, 278, 280, 281, 282,
1480 284, 285, 286, 288, 322, 323, 324, 325, 329, 330,
1481 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1482 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1483 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1484 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1485 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1486 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1487 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1488 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1489 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1490 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1491 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1492 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1493 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1494 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1495 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1496 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1497 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1498 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1499 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1500 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1501 -291, -291, -291, -291, -291, -291, 331, 373, 374, 375,
1502 376, 377, 378, -291, -291, -291, -291, -291, -291, -291,
1503 -291, 379, 380, 381, 385, 389, 390, -291, -291, -291,
1504 -291, -291, -291, -291, 415, 416, 417, 426, 439, 440,
1505 441, -291, -291, -291, -291, -291, -291, -291, -291, 442,
1506 443, 444, 445, 446, 447, 448, 449, -291, -291, -291,
1507 -291, -291, -291, -291, -291, -291, 450, 451, 452, 453,
1508 454, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1509 -291, -291, 455, 456, 457, 458, 498, 500, 516, 517,
1510 -291, -291, -291, -291, -291, -291, -291, -291, -291, 518,
1511 519, 520, 521, 522, 523, 524, 525, 526, 533, 534,
1512 535, 536, 537, 538, 539, 541, 542, 543, -291, -291,
1513 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1514 -291, -291, -291, -291, -291, -291, -291, -291, 544, -291,
1515 -291, 545, -291, -291, 546, 547, 550, 553, 556, 557,
1516 566, 567, 568, 570, -291, -291, -291, -291, -291, -291,
1517 -291, -291, -291, -291, -291, 571, 572, 573, 574, 575,
1518 576, -291, -291, -291, -291, -291, -291, -291, 577, 580,
1519 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1520 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1521 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1522 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1523 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1524 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1525 -291, -291, -291, 581, 582, -291, -291, -291, -291, -291,
1526 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1527 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1528 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1529 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1530 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1531 -291, -291, -291, -291, -291, -291, -291, -291, -291, 583,
1532 584, 585, -291, -291, -291, -291, -291, -291, -291, -291,
1533 -291, -291, 586, 587, -291, -291, -291, -291, -291, -291,
1534 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1535 -291, -291, -291, 588, 589, 590, 591, 592, 593, -291,
1536 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1537 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1538 -291, -291, -291, -291, -291, -291, 594, -291, -291, -291,
1539 -291, -291, -291, -291, -291, -291, 595, -291, -291, -291,
1540 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1541 -291, -291, 596, -291, -291, 597, 598, -291, -291, -291,
1542 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1543 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1544 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1545 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1546 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1547 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1548 -291, -291, -291, -291, -291, -291, -291, 599, 600, 601,
1549 -291, -291, -291, -291, -291, -291, -291, -291, -291
1552 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1553 Performed when YYTABLE does not specify something else to do. Zero
1554 means the default is an error. */
1555 static const yytype_uint16 yydefact[] =
1557 2, 0, 1, 18, 19, 227, 237, 513, 573, 532,
1558 246, 587, 610, 256, 626, 272, 578, 3, 17, 21,
1559 229, 239, 248, 258, 274, 515, 534, 575, 580, 589,
1560 612, 628, 4, 5, 6, 10, 14, 15, 8, 9,
1561 7, 16, 11, 12, 13, 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1582 20, 22, 23, 86, 89, 98, 195, 196, 24, 160,
1583 161, 162, 163, 164, 165, 166, 167, 168, 169, 37,
1584 77, 25, 90, 91, 48, 70, 85, 26, 27, 30,
1585 31, 28, 29, 32, 33, 34, 35, 36, 121, 207,
1586 122, 124, 125, 126, 209, 214, 210, 221, 222, 223,
1587 224, 127, 128, 129, 130, 131, 132, 133, 191, 87,
1588 76, 102, 119, 120, 219, 216, 123, 38, 39, 40,
1589 41, 42, 78, 92, 93, 108, 64, 74, 65, 199,
1590 200, 103, 58, 59, 198, 60, 61, 112, 116, 137,
1591 147, 174, 150, 220, 113, 71, 43, 44, 45, 100,
1592 138, 139, 140, 141, 46, 47, 49, 50, 52, 53,
1593 51, 145, 151, 54, 55, 56, 62, 81, 117, 95,
1594 146, 88, 170, 96, 97, 114, 115, 217, 101, 57,
1595 79, 82, 63, 66, 104, 105, 80, 171, 106, 67,
1596 68, 69, 208, 118, 184, 185, 186, 187, 188, 189,
1597 197, 107, 75, 109, 110, 111, 172, 72, 73, 94,
1598 83, 84, 99, 134, 135, 218, 136, 142, 143, 144,
1599 175, 176, 178, 180, 181, 179, 182, 192, 148, 149,
1600 154, 155, 152, 153, 156, 157, 159, 158, 211, 213,
1601 212, 173, 183, 201, 203, 202, 204, 205, 206, 225,
1602 226, 177, 190, 193, 194, 215, 0, 0, 0, 0,
1603 0, 0, 0, 228, 230, 231, 232, 234, 235, 236,
1604 233, 0, 0, 0, 0, 0, 0, 238, 240, 241,
1605 242, 243, 244, 245, 0, 0, 0, 0, 0, 0,
1606 0, 247, 249, 250, 253, 254, 251, 255, 252, 0,
1607 0, 0, 0, 0, 0, 0, 0, 257, 259, 260,
1608 261, 262, 266, 263, 264, 265, 0, 0, 0, 0,
1609 0, 277, 281, 282, 283, 284, 273, 275, 276, 278,
1610 279, 280, 0, 0, 0, 0, 0, 0, 0, 0,
1611 514, 516, 518, 517, 523, 519, 520, 521, 522, 0,
1612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1613 0, 0, 0, 0, 0, 0, 0, 0, 533, 535,
1614 537, 536, 538, 539, 540, 541, 542, 543, 544, 545,
1615 546, 547, 548, 549, 550, 551, 552, 553, 0, 574,
1616 576, 0, 579, 581, 0, 0, 0, 0, 0, 0,
1617 0, 0, 0, 0, 588, 590, 591, 592, 594, 595,
1618 593, 596, 597, 598, 599, 0, 0, 0, 0, 0,
1619 0, 611, 613, 614, 615, 616, 617, 618, 0, 0,
1620 627, 629, 630, 286, 285, 292, 305, 303, 315, 311,
1621 312, 316, 313, 314, 317, 318, 319, 320, 321, 351,
1622 352, 353, 354, 355, 380, 381, 382, 388, 389, 308,
1623 390, 391, 394, 392, 393, 397, 398, 399, 413, 366,
1624 367, 369, 370, 400, 416, 360, 362, 417, 423, 424,
1625 425, 309, 379, 441, 442, 361, 436, 344, 304, 356,
1626 414, 420, 401, 0, 0, 445, 310, 287, 343, 405,
1627 288, 306, 307, 357, 358, 443, 403, 407, 408, 289,
1628 446, 383, 412, 345, 365, 418, 419, 422, 435, 359,
1629 439, 437, 438, 371, 378, 409, 410, 372, 373, 402,
1630 427, 346, 347, 350, 322, 324, 325, 326, 327, 328,
1631 335, 336, 337, 338, 339, 340, 341, 447, 448, 450,
1632 384, 385, 386, 387, 395, 396, 451, 452, 453, 0,
1633 0, 0, 404, 374, 376, 583, 462, 466, 464, 463,
1634 467, 465, 0, 0, 470, 471, 293, 294, 295, 296,
1635 297, 298, 299, 300, 301, 302, 406, 421, 440, 475,
1636 476, 375, 454, 0, 0, 0, 0, 0, 0, 428,
1637 429, 430, 431, 432, 433, 434, 584, 368, 363, 426,
1638 342, 290, 291, 364, 477, 479, 478, 480, 481, 482,
1639 323, 330, 472, 474, 473, 329, 0, 349, 411, 449,
1640 348, 377, 331, 332, 334, 333, 0, 484, 485, 486,
1641 487, 491, 490, 488, 489, 492, 493, 494, 495, 497,
1642 496, 506, 0, 510, 511, 0, 0, 512, 498, 504,
1643 499, 500, 501, 503, 505, 502, 267, 268, 269, 270,
1644 271, 524, 526, 525, 528, 529, 530, 531, 527, 554,
1645 556, 557, 558, 559, 560, 561, 562, 563, 564, 555,
1646 565, 566, 567, 568, 569, 570, 571, 572, 577, 582,
1647 600, 601, 602, 605, 603, 604, 606, 607, 608, 609,
1648 619, 620, 621, 622, 623, 624, 631, 632, 415, 444,
1649 461, 585, 586, 468, 469, 455, 456, 0, 0, 0,
1650 460, 625, 483, 507, 508, 509, 459, 457, 458
1653 /* YYPGOTO[NTERM-NUM]. */
1654 static const yytype_int16 yypgoto[] =
1656 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1657 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1658 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1659 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1660 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1661 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1662 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1663 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1664 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1665 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1666 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1667 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1668 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1669 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1670 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1671 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1672 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1673 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1674 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1675 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1676 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1677 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1678 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1679 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1680 578, 579, 602, 603, 604, -291, -291, -291, -291, -291,
1681 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1682 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1683 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1684 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1685 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1686 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1687 -291, -291, -291, -291, -291, -291, -291, -291, -291, -291,
1688 -291, -291, -291, -291, -291, -291, -291, -291
1691 /* YYDEFGOTO[NTERM-NUM]. */
1692 static const yytype_int16 yydefgoto[] =
1694 -1, 1, 17, 18, 19, 32, 250, 20, 33, 463,
1695 21, 34, 477, 22, 35, 491, 23, 36, 507, 521,
1696 522, 523, 524, 525, 24, 37, 526, 251, 252, 253,
1697 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
1698 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
1699 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
1700 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
1701 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
1702 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1703 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
1704 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
1705 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
1706 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
1707 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
1708 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
1709 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
1710 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
1711 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1712 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
1713 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
1714 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
1715 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
1716 444, 445, 446, 447, 448, 449, 450, 464, 465, 466,
1717 467, 468, 469, 470, 478, 479, 480, 481, 482, 483,
1718 508, 509, 510, 511, 512, 513, 514, 515, 492, 493,
1719 494, 495, 496, 497, 498, 25, 38, 540, 541, 542,
1720 543, 544, 545, 546, 547, 548, 26, 39, 568, 569,
1721 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
1722 580, 581, 582, 583, 584, 585, 586, 587, 27, 40,
1723 589, 590, 28, 41, 592, 593, 451, 452, 453, 454,
1724 29, 42, 604, 605, 606, 607, 608, 609, 610, 611,
1725 612, 613, 614, 30, 43, 621, 622, 623, 624, 625,
1726 626, 627, 455, 31, 44, 630, 631, 632
1729 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1730 positive, shift that token. If negative, reduce the rule whose
1731 number is the opposite. If YYTABLE_NINF, syntax error. */
1732 static const yytype_uint16 yytable[] =
1734 2, 499, 484, 456, 588, 457, 458, 471, 628, 629,
1735 591, 3, 4, 633, 634, 472, 473, 615, 616, 617,
1736 618, 619, 620, 635, 499, 594, 595, 596, 597, 598,
1737 599, 600, 601, 602, 603, 636, 637, 638, 485, 486,
1738 639, 640, 641, 642, 643, 644, 5, 645, 646, 647,
1739 648, 649, 6, 650, 651, 652, 653, 654, 655, 656,
1740 657, 658, 659, 487, 660, 661, 459, 549, 550, 551,
1741 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
1742 562, 563, 564, 565, 566, 567, 532, 533, 534, 535,
1743 536, 537, 538, 539, 662, 663, 7, 460, 664, 665,
1744 474, 666, 475, 667, 668, 669, 670, 461, 671, 672,
1745 673, 674, 8, 675, 676, 677, 678, 679, 680, 681,
1746 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
1747 692, 693, 694, 695, 696, 697, 698, 699, 700, 701,
1748 488, 489, 702, 703, 704, 705, 706, 707, 708, 709,
1749 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
1750 720, 721, 9, 722, 723, 724, 725, 726, 727, 728,
1751 729, 730, 731, 732, 733, 734, 735, 736, 737, 738,
1752 490, 739, 740, 741, 742, 743, 744, 745, 746, 747,
1753 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
1754 758, 759, 760, 761, 762, 763, 764, 765, 766, 767,
1755 768, 769, 770, 771, 772, 773, 774, 775, 776, 777,
1756 778, 10, 501, 502, 503, 779, 780, 781, 782, 783,
1757 784, 785, 506, 786, 787, 788, 789, 790, 462, 11,
1758 791, 476, 792, 500, 793, 501, 502, 503, 504, 505,
1759 516, 517, 518, 519, 520, 506, 12, 794, 795, 796,
1760 797, 798, 799, 800, 801, 13, 802, 803, 804, 805,
1761 806, 807, 808, 809, 810, 811, 812, 813, 814, 815,
1762 816, 817, 818, 819, 820, 821, 822, 823, 824, 14,
1763 825, 826, 827, 15, 828, 829, 830, 0, 831, 16,
1764 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1765 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1766 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1767 75, 76, 832, 833, 834, 835, 77, 78, 79, 836,
1768 837, 838, 80, 81, 82, 83, 84, 85, 86, 87,
1769 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1770 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
1771 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1772 118, 119, 120, 839, 840, 841, 842, 843, 844, 845,
1773 846, 847, 121, 122, 123, 848, 124, 125, 126, 849,
1774 850, 127, 128, 129, 130, 131, 132, 133, 134, 135,
1775 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
1776 146, 147, 148, 149, 150, 851, 852, 853, 151, 152,
1777 153, 154, 155, 156, 157, 158, 854, 159, 160, 161,
1778 162, 163, 164, 165, 166, 167, 168, 169, 170, 855,
1779 856, 857, 858, 859, 860, 861, 862, 863, 864, 865,
1780 866, 867, 868, 869, 870, 871, 872, 873, 874, 171,
1781 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
1782 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1783 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
1784 202, 203, 204, 205, 206, 207, 208, 209, 875, 210,
1785 876, 211, 212, 213, 214, 215, 216, 217, 218, 219,
1786 220, 221, 222, 223, 224, 225, 877, 878, 879, 880,
1787 881, 882, 883, 884, 885, 886, 887, 226, 227, 228,
1788 229, 230, 231, 888, 889, 890, 891, 892, 893, 894,
1789 232, 895, 896, 897, 898, 899, 900, 901, 233, 234,
1790 902, 235, 236, 903, 237, 238, 904, 905, 239, 240,
1791 241, 242, 243, 244, 245, 246, 906, 907, 908, 247,
1792 909, 910, 911, 912, 913, 914, 915, 916, 248, 249,
1793 917, 918, 919, 920, 921, 922, 923, 924, 925, 926,
1794 927, 928, 929, 930, 931, 932, 933, 934, 935, 936,
1795 937, 938, 0, 0, 0, 527, 528, 0, 0, 0,
1796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1797 0, 0, 0, 0, 0, 0, 0, 0, 0, 529,
1801 static const yytype_int16 yycheck[] =
1803 0, 45, 45, 45, 113, 47, 48, 45, 290, 291,
1804 300, 11, 12, 10, 10, 53, 54, 257, 258, 259,
1805 260, 261, 262, 10, 45, 240, 241, 242, 243, 244,
1806 245, 246, 247, 248, 249, 10, 10, 10, 81, 82,
1807 10, 10, 10, 10, 10, 10, 46, 10, 10, 10,
1808 10, 10, 52, 10, 10, 10, 10, 10, 10, 10,
1809 10, 10, 10, 106, 10, 10, 108, 163, 164, 165,
1810 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
1811 176, 177, 178, 179, 180, 181, 97, 98, 99, 100,
1812 101, 102, 103, 104, 10, 10, 96, 139, 10, 10,
1813 138, 10, 140, 10, 10, 10, 10, 149, 10, 10,
1814 10, 10, 112, 10, 10, 10, 10, 10, 10, 10,
1815 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1816 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1817 183, 184, 10, 10, 10, 10, 10, 10, 10, 10,
1818 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1819 10, 10, 162, 10, 10, 10, 10, 10, 10, 10,
1820 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1821 223, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1822 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1823 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1824 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1825 10, 221, 266, 267, 268, 10, 10, 10, 10, 10,
1826 10, 10, 276, 10, 10, 10, 10, 10, 280, 239,
1827 10, 279, 10, 264, 10, 266, 267, 268, 269, 270,
1828 294, 295, 296, 297, 298, 276, 256, 10, 10, 10,
1829 10, 10, 10, 10, 10, 265, 10, 10, 10, 10,
1830 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1831 10, 10, 10, 10, 10, 10, 10, 10, 10, 289,
1832 10, 10, 10, 293, 10, 10, 10, -1, 10, 299,
1833 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1834 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1835 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1836 43, 44, 10, 10, 10, 10, 49, 50, 51, 10,
1837 10, 10, 55, 56, 57, 58, 59, 60, 61, 62,
1838 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1839 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1840 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1841 93, 94, 95, 10, 10, 10, 10, 10, 10, 10,
1842 10, 10, 105, 106, 107, 10, 109, 110, 111, 10,
1843 10, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1844 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
1845 133, 134, 135, 136, 137, 10, 10, 10, 141, 142,
1846 143, 144, 145, 146, 147, 148, 10, 150, 151, 152,
1847 153, 154, 155, 156, 157, 158, 159, 160, 161, 10,
1848 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1849 10, 10, 10, 10, 10, 10, 10, 10, 10, 182,
1850 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1851 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
1852 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
1853 213, 214, 215, 216, 217, 218, 219, 220, 10, 222,
1854 10, 224, 225, 226, 227, 228, 229, 230, 231, 232,
1855 233, 234, 235, 236, 237, 238, 10, 10, 10, 10,
1856 10, 10, 10, 10, 10, 10, 10, 250, 251, 252,
1857 253, 254, 255, 10, 10, 10, 10, 10, 10, 10,
1858 263, 10, 10, 10, 10, 10, 10, 10, 271, 272,
1859 10, 274, 275, 10, 277, 278, 10, 10, 281, 282,
1860 283, 284, 285, 286, 287, 288, 10, 10, 10, 292,
1861 10, 10, 10, 10, 10, 10, 10, 10, 301, 302,
1862 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1863 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1864 10, 10, -1, -1, -1, 37, 37, -1, -1, -1,
1865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1866 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
1870 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1871 symbol of state STATE-NUM. */
1872 static const yytype_uint16 yystos[] =
1874 0, 304, 0, 11, 12, 46, 52, 96, 112, 162,
1875 221, 239, 256, 265, 289, 293, 299, 305, 306, 307,
1876 310, 313, 316, 319, 327, 558, 569, 591, 595, 603,
1877 616, 626, 308, 311, 314, 317, 320, 328, 559, 570,
1878 592, 596, 604, 617, 627, 13, 14, 15, 16, 17,
1879 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1880 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
1881 38, 39, 40, 41, 42, 43, 44, 49, 50, 51,
1882 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1883 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1884 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1885 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1886 95, 105, 106, 107, 109, 110, 111, 114, 115, 116,
1887 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1888 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
1889 137, 141, 142, 143, 144, 145, 146, 147, 148, 150,
1890 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
1891 161, 182, 183, 184, 185, 186, 187, 188, 189, 190,
1892 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
1893 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
1894 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
1895 222, 224, 225, 226, 227, 228, 229, 230, 231, 232,
1896 233, 234, 235, 236, 237, 238, 250, 251, 252, 253,
1897 254, 255, 263, 271, 272, 274, 275, 277, 278, 281,
1898 282, 283, 284, 285, 286, 287, 288, 292, 301, 302,
1899 309, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1900 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1901 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
1902 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
1903 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
1904 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
1905 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
1906 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1907 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
1908 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
1909 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
1910 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
1911 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
1912 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
1913 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
1914 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
1915 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
1916 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
1917 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
1918 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
1919 529, 599, 600, 601, 602, 625, 45, 47, 48, 108,
1920 139, 149, 280, 312, 530, 531, 532, 533, 534, 535,
1921 536, 45, 53, 54, 138, 140, 279, 315, 537, 538,
1922 539, 540, 541, 542, 45, 81, 82, 106, 183, 184,
1923 223, 318, 551, 552, 553, 554, 555, 556, 557, 45,
1924 264, 266, 267, 268, 269, 270, 276, 321, 543, 544,
1925 545, 546, 547, 548, 549, 550, 294, 295, 296, 297,
1926 298, 322, 323, 324, 325, 326, 329, 543, 544, 545,
1927 546, 547, 97, 98, 99, 100, 101, 102, 103, 104,
1928 560, 561, 562, 563, 564, 565, 566, 567, 568, 163,
1929 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
1930 174, 175, 176, 177, 178, 179, 180, 181, 571, 572,
1931 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
1932 583, 584, 585, 586, 587, 588, 589, 590, 113, 593,
1933 594, 300, 597, 598, 240, 241, 242, 243, 244, 245,
1934 246, 247, 248, 249, 605, 606, 607, 608, 609, 610,
1935 611, 612, 613, 614, 615, 257, 258, 259, 260, 261,
1936 262, 618, 619, 620, 621, 622, 623, 624, 290, 291,
1937 628, 629, 630, 10, 10, 10, 10, 10, 10, 10,
1938 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1939 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1940 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1941 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1942 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1943 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1944 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1945 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1946 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1947 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1948 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1949 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1950 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1951 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1952 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1953 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1954 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1955 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1956 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1957 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1958 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1959 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1960 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1961 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1962 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1963 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1964 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1965 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1966 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1967 10, 10, 10, 10, 10, 10, 10, 10, 10
1970 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1971 static const yytype_uint16 yyr1[] =
1973 0, 303, 304, 304, 305, 305, 305, 305, 305, 305,
1974 305, 305, 305, 305, 305, 305, 305, 305, 306, 307,
1975 308, 308, 309, 309, 309, 309, 309, 309, 309, 309,
1976 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1977 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1978 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1979 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1980 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1981 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1982 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1983 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1984 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1985 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1986 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1987 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1988 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1989 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1990 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1991 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1992 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1993 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1994 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1995 309, 309, 309, 309, 309, 309, 309, 310, 311, 311,
1996 312, 312, 312, 312, 312, 312, 312, 313, 314, 314,
1997 315, 315, 315, 315, 315, 315, 316, 317, 317, 318,
1998 318, 318, 318, 318, 318, 318, 319, 320, 320, 321,
1999 321, 321, 321, 321, 321, 321, 321, 322, 323, 324,
2000 325, 326, 327, 328, 328, 329, 329, 329, 329, 329,
2001 329, 329, 329, 329, 329, 330, 331, 332, 333, 334,
2002 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2003 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
2004 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
2005 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2006 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
2007 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
2008 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2009 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
2010 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
2011 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
2012 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
2013 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
2014 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
2015 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
2016 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
2017 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
2018 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
2019 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
2020 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
2021 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
2022 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
2023 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
2024 555, 556, 557, 558, 559, 559, 560, 560, 560, 560,
2025 560, 560, 560, 560, 561, 562, 563, 564, 565, 566,
2026 567, 568, 569, 570, 570, 571, 571, 571, 571, 571,
2027 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
2028 571, 571, 571, 571, 572, 573, 574, 575, 576, 577,
2029 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
2030 588, 589, 590, 591, 592, 592, 593, 594, 595, 596,
2031 596, 597, 598, 599, 600, 601, 602, 603, 604, 604,
2032 605, 605, 605, 605, 605, 605, 605, 605, 605, 605,
2033 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
2034 616, 617, 617, 618, 618, 618, 618, 618, 618, 619,
2035 620, 621, 622, 623, 624, 625, 626, 627, 627, 628,
2039 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2040 static const yytype_uint8 yyr2[] =
2042 0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
2043 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
2044 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2045 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2046 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2047 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2048 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2049 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2050 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2051 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2052 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2053 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2054 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2055 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2056 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2057 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2058 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2059 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2060 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2061 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2062 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2063 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2064 1, 1, 1, 1, 1, 1, 1, 1, 2, 0,
2065 1, 1, 1, 1, 1, 1, 1, 1, 2, 0,
2066 1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
2067 1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
2068 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
2069 2, 2, 1, 2, 0, 1, 1, 1, 1, 1,
2070 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
2071 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2073 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2074 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2075 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2076 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2077 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2078 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2079 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2080 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2081 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2082 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2083 2, 2, 2, 2, 2, 3, 2, 2, 2, 2,
2084 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2085 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2086 2, 2, 2, 2, 3, 2, 2, 2, 2, 2,
2087 2, 2, 2, 2, 2, 3, 3, 4, 4, 4,
2088 3, 3, 2, 2, 2, 2, 2, 2, 3, 3,
2089 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2090 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
2091 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2092 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,
2093 2, 2, 2, 1, 2, 0, 1, 1, 1, 1,
2094 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2095 2, 2, 1, 2, 0, 1, 1, 1, 1, 1,
2096 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2097 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2098 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2099 2, 2, 2, 1, 2, 0, 1, 2, 1, 2,
2100 0, 1, 2, 2, 2, 3, 3, 1, 2, 0,
2101 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2102 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2103 1, 2, 0, 1, 1, 1, 1, 1, 1, 2,
2104 2, 2, 2, 2, 2, 3, 1, 2, 0, 1,
2109 #define yyerrok (yyerrstatus = 0)
2110 #define yyclearin (yychar = YYEMPTY)
2111 #define YYEMPTY (-2)
2114 #define YYACCEPT goto yyacceptlab
2115 #define YYABORT goto yyabortlab
2116 #define YYERROR goto yyerrorlab
2119 #define YYRECOVERING() (!!yyerrstatus)
2121 #define YYBACKUP(Token, Value) \
2123 if (yychar == YYEMPTY) \
2127 YYPOPSTACK (yylen); \
2133 yyerror (YY_("syntax error: cannot back up")); \
2138 /* Error token number */
2140 #define YYERRCODE 256
2144 /* Enable debugging if requested. */
2148 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2149 # define YYFPRINTF fprintf
2152 # define YYDPRINTF(Args) \
2158 /* This macro is provided for backward compatibility. */
2159 #ifndef YY_LOCATION_PRINT
2160 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2164 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2168 YYFPRINTF (stderr, "%s ", Title); \
2169 yy_symbol_print (stderr, \
2171 YYFPRINTF (stderr, "\n"); \
2176 /*-----------------------------------.
2177 | Print this symbol's value on YYO. |
2178 `-----------------------------------*/
2181 yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2183 FILE *yyoutput = yyo;
2188 if (yytype < YYNTOKENS)
2189 YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
2195 /*---------------------------.
2196 | Print this symbol on YYO. |
2197 `---------------------------*/
2200 yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2202 YYFPRINTF (yyo, "%s %s (",
2203 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2205 yy_symbol_value_print (yyo, yytype, yyvaluep);
2206 YYFPRINTF (yyo, ")");
2209 /*------------------------------------------------------------------.
2210 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2212 `------------------------------------------------------------------*/
2215 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2217 YYFPRINTF (stderr, "Stack now");
2218 for (; yybottom <= yytop; yybottom++)
2220 int yybot = *yybottom;
2221 YYFPRINTF (stderr, " %d", yybot);
2223 YYFPRINTF (stderr, "\n");
2226 # define YY_STACK_PRINT(Bottom, Top) \
2229 yy_stack_print ((Bottom), (Top)); \
2233 /*------------------------------------------------.
2234 | Report that the YYRULE is going to be reduced. |
2235 `------------------------------------------------*/
2238 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2240 unsigned long yylno = yyrline[yyrule];
2241 int yynrhs = yyr2[yyrule];
2243 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2245 /* The symbols being reduced. */
2246 for (yyi = 0; yyi < yynrhs; yyi++)
2248 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2249 yy_symbol_print (stderr,
2250 yystos[yyssp[yyi + 1 - yynrhs]],
2251 &yyvsp[(yyi + 1) - (yynrhs)]
2253 YYFPRINTF (stderr, "\n");
2257 # define YY_REDUCE_PRINT(Rule) \
2260 yy_reduce_print (yyssp, yyvsp, Rule); \
2263 /* Nonzero means print parse trace. It is left uninitialized so that
2264 multiple parsers can coexist. */
2266 #else /* !YYDEBUG */
2267 # define YYDPRINTF(Args)
2268 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2269 # define YY_STACK_PRINT(Bottom, Top)
2270 # define YY_REDUCE_PRINT(Rule)
2271 #endif /* !YYDEBUG */
2274 /* YYINITDEPTH -- initial size of the parser's stacks. */
2276 # define YYINITDEPTH 200
2279 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2280 if the built-in stack extension method is used).
2282 Do not make this value too large; the results are undefined if
2283 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2284 evaluated with infinite-precision integer arithmetic. */
2287 # define YYMAXDEPTH 10000
2294 # if defined __GLIBC__ && defined _STRING_H
2295 # define yystrlen strlen
2297 /* Return the length of YYSTR. */
2299 yystrlen (const char *yystr)
2302 for (yylen = 0; yystr[yylen]; yylen++)
2310 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2311 # define yystpcpy stpcpy
2313 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2316 yystpcpy (char *yydest, const char *yysrc)
2319 const char *yys = yysrc;
2321 while ((*yyd++ = *yys++) != '\0')
2330 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2331 quotes and backslashes, so that it's suitable for yyerror. The
2332 heuristic is that double-quoting is unnecessary unless the string
2333 contains an apostrophe, a comma, or backslash (other than
2334 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2335 null, do not copy; instead, return the length of what the result
2338 yytnamerr (char *yyres, const char *yystr)
2343 char const *yyp = yystr;
2350 goto do_not_strip_quotes;
2354 goto do_not_strip_quotes;
2370 do_not_strip_quotes: ;
2374 return yystrlen (yystr);
2376 return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
2380 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2381 about the unexpected token YYTOKEN for the state stack whose top is
2384 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2385 not large enough to hold the message. In that case, also set
2386 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2387 required number of bytes is too large to store. */
2389 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2390 yytype_int16 *yyssp, int yytoken)
2392 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2393 YYSIZE_T yysize = yysize0;
2394 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2395 /* Internationalized format string. */
2396 const char *yyformat = YY_NULLPTR;
2397 /* Arguments of yyformat. */
2398 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2399 /* Number of reported tokens (one for the "unexpected", one per
2403 /* There are many possibilities here to consider:
2404 - If this state is a consistent state with a default action, then
2405 the only way this function was invoked is if the default action
2406 is an error action. In that case, don't check for expected
2407 tokens because there are none.
2408 - The only way there can be no lookahead present (in yychar) is if
2409 this state is a consistent state with a default action. Thus,
2410 detecting the absence of a lookahead is sufficient to determine
2411 that there is no unexpected or expected token to report. In that
2412 case, just report a simple "syntax error".
2413 - Don't assume there isn't a lookahead just because this state is a
2414 consistent state with a default action. There might have been a
2415 previous inconsistent state, consistent state with a non-default
2416 action, or user semantic action that manipulated yychar.
2417 - Of course, the expected token list depends on states to have
2418 correct lookahead information, and it depends on the parser not
2419 to perform extra reductions after fetching a lookahead from the
2420 scanner and before detecting a syntax error. Thus, state merging
2421 (from LALR or IELR) and default reductions corrupt the expected
2422 token list. However, the list is correct for canonical LR with
2423 one exception: it will still contain any token that will not be
2424 accepted due to an error action in a later state.
2426 if (yytoken != YYEMPTY)
2428 int yyn = yypact[*yyssp];
2429 yyarg[yycount++] = yytname[yytoken];
2430 if (!yypact_value_is_default (yyn))
2432 /* Start YYX at -YYN if negative to avoid negative indexes in
2433 YYCHECK. In other words, skip the first -YYN actions for
2434 this state because they are default actions. */
2435 int yyxbegin = yyn < 0 ? -yyn : 0;
2436 /* Stay within bounds of both yycheck and yytname. */
2437 int yychecklim = YYLAST - yyn + 1;
2438 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2441 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2442 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2443 && !yytable_value_is_error (yytable[yyx + yyn]))
2445 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2451 yyarg[yycount++] = yytname[yyx];
2453 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2454 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2465 # define YYCASE_(N, S) \
2469 default: /* Avoid compiler warnings. */
2470 YYCASE_(0, YY_("syntax error"));
2471 YYCASE_(1, YY_("syntax error, unexpected %s"));
2472 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2473 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2474 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2475 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2480 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2481 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2487 if (*yymsg_alloc < yysize)
2489 *yymsg_alloc = 2 * yysize;
2490 if (! (yysize <= *yymsg_alloc
2491 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2492 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2496 /* Avoid sprintf, as that infringes on the user's name space.
2497 Don't have undefined behavior even if the translation
2498 produced a string with the wrong number of "%s"s. */
2502 while ((*yyp = *yyformat) != '\0')
2503 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2505 yyp += yytnamerr (yyp, yyarg[yyi++]);
2516 #endif /* YYERROR_VERBOSE */
2518 /*-----------------------------------------------.
2519 | Release the memory associated to this symbol. |
2520 `-----------------------------------------------*/
2523 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2528 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2530 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2532 YY_IGNORE_MAYBE_UNINITIALIZED_END
2538 /* The lookahead symbol. */
2541 /* The semantic value of the lookahead symbol. */
2543 /* Number of syntax errors so far. */
2555 /* Number of tokens to shift before error messages enabled. */
2558 /* The stacks and their tools:
2559 'yyss': related to states.
2560 'yyvs': related to semantic values.
2562 Refer to the stacks through separate pointers, to allow yyoverflow
2563 to reallocate them elsewhere. */
2565 /* The state stack. */
2566 yytype_int16 yyssa[YYINITDEPTH];
2568 yytype_int16 *yyssp;
2570 /* The semantic value stack. */
2571 YYSTYPE yyvsa[YYINITDEPTH];
2575 YYSIZE_T yystacksize;
2579 /* Lookahead token as an internal (translated) token number. */
2581 /* The variables used to return semantic value and location from the
2586 /* Buffer for error messages, and its allocated size. */
2588 char *yymsg = yymsgbuf;
2589 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2592 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2594 /* The number of symbols on the RHS of the reduced rule.
2595 Keep to zero when no symbol should be popped. */
2598 yyssp = yyss = yyssa;
2599 yyvsp = yyvs = yyvsa;
2600 yystacksize = YYINITDEPTH;
2602 YYDPRINTF ((stderr, "Starting parse\n"));
2607 yychar = YYEMPTY; /* Cause a token to be read. */
2611 /*------------------------------------------------------------.
2612 | yynewstate -- push a new state, which is found in yystate. |
2613 `------------------------------------------------------------*/
2615 /* In all cases, when you get here, the value and location stacks
2616 have just been pushed. So pushing a state here evens the stacks. */
2620 /*--------------------------------------------------------------------.
2621 | yynewstate -- set current state (the top of the stack) to yystate. |
2622 `--------------------------------------------------------------------*/
2624 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2625 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2626 *yyssp = (yytype_int16) yystate;
2628 if (yyss + yystacksize - 1 <= yyssp)
2629 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2630 goto yyexhaustedlab;
2633 /* Get the current used size of the three stacks, in elements. */
2634 YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
2636 # if defined yyoverflow
2638 /* Give user a chance to reallocate the stack. Use copies of
2639 these so that the &'s don't force the real ones into
2641 YYSTYPE *yyvs1 = yyvs;
2642 yytype_int16 *yyss1 = yyss;
2644 /* Each stack pointer address is followed by the size of the
2645 data in use in that stack, in bytes. This used to be a
2646 conditional around just the two extra args, but that might
2647 be undefined if yyoverflow is a macro. */
2648 yyoverflow (YY_("memory exhausted"),
2649 &yyss1, yysize * sizeof (*yyssp),
2650 &yyvs1, yysize * sizeof (*yyvsp),
2655 # else /* defined YYSTACK_RELOCATE */
2656 /* Extend the stack our own way. */
2657 if (YYMAXDEPTH <= yystacksize)
2658 goto yyexhaustedlab;
2660 if (YYMAXDEPTH < yystacksize)
2661 yystacksize = YYMAXDEPTH;
2664 yytype_int16 *yyss1 = yyss;
2665 union yyalloc *yyptr =
2666 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2668 goto yyexhaustedlab;
2669 YYSTACK_RELOCATE (yyss_alloc, yyss);
2670 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2671 # undef YYSTACK_RELOCATE
2673 YYSTACK_FREE (yyss1);
2677 yyssp = yyss + yysize - 1;
2678 yyvsp = yyvs + yysize - 1;
2680 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2681 (unsigned long) yystacksize));
2683 if (yyss + yystacksize - 1 <= yyssp)
2686 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2688 if (yystate == YYFINAL)
2698 /* Do appropriate processing given the current state. Read a
2699 lookahead token if we need one and don't already have one. */
2701 /* First try to decide what to do without reference to lookahead token. */
2702 yyn = yypact[yystate];
2703 if (yypact_value_is_default (yyn))
2706 /* Not known => get a lookahead token if don't already have one. */
2708 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2709 if (yychar == YYEMPTY)
2711 YYDPRINTF ((stderr, "Reading a token: "));
2715 if (yychar <= YYEOF)
2717 yychar = yytoken = YYEOF;
2718 YYDPRINTF ((stderr, "Now at end of input.\n"));
2722 yytoken = YYTRANSLATE (yychar);
2723 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2726 /* If the proper action on seeing token YYTOKEN is to reduce or to
2727 detect an error, take that action. */
2729 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2734 if (yytable_value_is_error (yyn))
2740 /* Count tokens shifted since error; after three, turn off error
2745 /* Shift the lookahead token. */
2746 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2748 /* Discard the shifted token. */
2752 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2754 YY_IGNORE_MAYBE_UNINITIALIZED_END
2758 /*-----------------------------------------------------------.
2759 | yydefault -- do the default action for the current state. |
2760 `-----------------------------------------------------------*/
2762 yyn = yydefact[yystate];
2768 /*-----------------------------.
2769 | yyreduce -- do a reduction. |
2770 `-----------------------------*/
2772 /* yyn is the number of a rule to reduce with. */
2775 /* If YYLEN is nonzero, implement the default value of the action:
2778 Otherwise, the following line sets YYVAL to garbage.
2779 This behavior is undocumented and Bison
2780 users should not rely upon it. Assigning to YYVAL
2781 unconditionally makes the parser a bit smaller, and it avoids a
2782 GCC warning that YYVAL may be used uninitialized. */
2783 yyval = yyvsp[1-yylen];
2786 YY_REDUCE_PRINT (yyn);
2790 #line 195 "util/configparser.y"
2792 OUTYY(("\nP(force-toplevel)\n"));
2794 #line 2795 "util/configparser.c"
2798 #line 201 "util/configparser.y"
2800 OUTYY(("\nP(server:)\n"));
2802 #line 2803 "util/configparser.c"
2806 #line 299 "util/configparser.y"
2808 struct config_stub* s;
2809 OUTYY(("\nP(stub_zone:)\n"));
2810 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2812 s->next = cfg_parser->cfg->stubs;
2813 cfg_parser->cfg->stubs = s;
2815 yyerror("out of memory");
2817 #line 2818 "util/configparser.c"
2821 #line 316 "util/configparser.y"
2823 struct config_stub* s;
2824 OUTYY(("\nP(forward_zone:)\n"));
2825 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2827 s->next = cfg_parser->cfg->forwards;
2828 cfg_parser->cfg->forwards = s;
2830 yyerror("out of memory");
2832 #line 2833 "util/configparser.c"
2836 #line 333 "util/configparser.y"
2838 struct config_view* s;
2839 OUTYY(("\nP(view:)\n"));
2840 s = (struct config_view*)calloc(1, sizeof(struct config_view));
2842 s->next = cfg_parser->cfg->views;
2843 if(s->next && !s->next->name)
2844 yyerror("view without name");
2845 cfg_parser->cfg->views = s;
2847 yyerror("out of memory");
2849 #line 2850 "util/configparser.c"
2853 #line 352 "util/configparser.y"
2855 struct config_auth* s;
2856 OUTYY(("\nP(auth_zone:)\n"));
2857 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
2859 s->next = cfg_parser->cfg->auths;
2860 cfg_parser->cfg->auths = s;
2861 /* defaults for auth zone */
2862 s->for_downstream = 1;
2863 s->for_upstream = 1;
2864 s->fallback_enabled = 0;
2867 yyerror("out of memory");
2869 #line 2870 "util/configparser.c"
2873 #line 376 "util/configparser.y"
2877 OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
2878 bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
2880 free((yyvsp[0].str));
2882 yyerror("could not parse tags, (define-tag them first)");
2885 cfg_parser->cfg->auths->rpz_taglist = bitlist;
2886 cfg_parser->cfg->auths->rpz_taglistlen = len;
2890 #line 2891 "util/configparser.c"
2894 #line 395 "util/configparser.y"
2896 OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
2897 if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
2898 strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
2899 strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
2900 yyerror("rpz-action-override action: expected nxdomain, "
2901 "nodata, passthru, drop, cname or disabled");
2902 free((yyvsp[0].str));
2903 cfg_parser->cfg->auths->rpz_action_override = NULL;
2906 cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
2909 #line 2910 "util/configparser.c"
2913 #line 412 "util/configparser.y"
2915 OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
2916 free(cfg_parser->cfg->auths->rpz_cname);
2917 cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
2919 #line 2920 "util/configparser.c"
2923 #line 420 "util/configparser.y"
2925 OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
2926 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2927 yyerror("expected yes or no.");
2928 else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
2929 free((yyvsp[0].str));
2931 #line 2932 "util/configparser.c"
2935 #line 430 "util/configparser.y"
2937 OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
2938 free(cfg_parser->cfg->auths->rpz_log_name);
2939 cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
2941 #line 2942 "util/configparser.c"
2945 #line 438 "util/configparser.y"
2947 struct config_auth* s;
2948 OUTYY(("\nP(rpz:)\n"));
2949 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
2951 s->next = cfg_parser->cfg->auths;
2952 cfg_parser->cfg->auths = s;
2953 /* defaults for RPZ auth zone */
2954 s->for_downstream = 0;
2955 s->for_upstream = 0;
2956 s->fallback_enabled = 0;
2959 yyerror("out of memory");
2961 #line 2962 "util/configparser.c"
2965 #line 461 "util/configparser.y"
2967 OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
2968 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2969 yyerror("number expected");
2970 else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
2971 free((yyvsp[0].str));
2973 #line 2974 "util/configparser.c"
2977 #line 470 "util/configparser.y"
2979 OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
2980 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2981 yyerror("number expected");
2982 else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
2983 free((yyvsp[0].str));
2985 #line 2986 "util/configparser.c"
2989 #line 479 "util/configparser.y"
2991 OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
2992 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
2993 cfg_parser->cfg->stat_interval = 0;
2994 else if(atoi((yyvsp[0].str)) == 0)
2995 yyerror("number expected");
2996 else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
2997 free((yyvsp[0].str));
2999 #line 3000 "util/configparser.c"
3003 #line 490 "util/configparser.y"
3005 OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3006 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3007 yyerror("expected yes or no.");
3008 else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3009 free((yyvsp[0].str));
3011 #line 3012 "util/configparser.c"
3015 #line 499 "util/configparser.y"
3017 OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3018 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3019 yyerror("expected yes or no.");
3020 else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3021 free((yyvsp[0].str));
3023 #line 3024 "util/configparser.c"
3027 #line 508 "util/configparser.y"
3029 OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3030 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3031 yyerror("expected yes or no.");
3032 else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3033 free((yyvsp[0].str));
3035 #line 3036 "util/configparser.c"
3039 #line 517 "util/configparser.y"
3041 OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3042 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3043 cfg_parser->cfg->shm_key = 0;
3044 else if(atoi((yyvsp[0].str)) == 0)
3045 yyerror("number expected");
3046 else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3047 free((yyvsp[0].str));
3049 #line 3050 "util/configparser.c"
3053 #line 528 "util/configparser.y"
3055 OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3056 if(atoi((yyvsp[0].str)) == 0)
3057 yyerror("port number expected");
3058 else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3059 free((yyvsp[0].str));
3061 #line 3062 "util/configparser.c"
3065 #line 537 "util/configparser.y"
3067 #ifdef CLIENT_SUBNET
3068 OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3069 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3070 fatal_exit("out of memory adding client-subnet");
3072 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3073 free((yyvsp[0].str));
3076 #line 3077 "util/configparser.c"
3080 #line 549 "util/configparser.y"
3082 #ifdef CLIENT_SUBNET
3083 OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3084 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3086 fatal_exit("out of memory adding client-subnet-zone");
3088 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3089 free((yyvsp[0].str));
3092 #line 3093 "util/configparser.c"
3096 #line 563 "util/configparser.y"
3098 #ifdef CLIENT_SUBNET
3099 OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3100 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3101 yyerror("expected yes or no.");
3103 cfg_parser->cfg->client_subnet_always_forward =
3104 (strcmp((yyvsp[0].str), "yes")==0);
3106 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3108 free((yyvsp[0].str));
3110 #line 3111 "util/configparser.c"
3114 #line 578 "util/configparser.y"
3116 #ifdef CLIENT_SUBNET
3117 OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3118 OUTYY(("P(Deprecated option, ignoring)\n"));
3120 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3122 free((yyvsp[0].str));
3124 #line 3125 "util/configparser.c"
3128 #line 589 "util/configparser.y"
3130 #ifdef CLIENT_SUBNET
3131 OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3132 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3133 yyerror("IPv4 subnet length expected");
3134 else if (atoi((yyvsp[0].str)) > 32)
3135 cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3136 else if (atoi((yyvsp[0].str)) < 0)
3137 cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3138 else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3140 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3142 free((yyvsp[0].str));
3144 #line 3145 "util/configparser.c"
3148 #line 606 "util/configparser.y"
3150 #ifdef CLIENT_SUBNET
3151 OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3152 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3153 yyerror("Ipv6 subnet length expected");
3154 else if (atoi((yyvsp[0].str)) > 128)
3155 cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3156 else if (atoi((yyvsp[0].str)) < 0)
3157 cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3158 else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3160 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3162 free((yyvsp[0].str));
3164 #line 3165 "util/configparser.c"
3168 #line 623 "util/configparser.y"
3170 #ifdef CLIENT_SUBNET
3171 OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3172 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3173 yyerror("IPv4 subnet length expected");
3174 else if (atoi((yyvsp[0].str)) > 32)
3175 cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3176 else if (atoi((yyvsp[0].str)) < 0)
3177 cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3178 else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3180 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3182 free((yyvsp[0].str));
3184 #line 3185 "util/configparser.c"
3188 #line 640 "util/configparser.y"
3190 #ifdef CLIENT_SUBNET
3191 OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3192 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3193 yyerror("Ipv6 subnet length expected");
3194 else if (atoi((yyvsp[0].str)) > 128)
3195 cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3196 else if (atoi((yyvsp[0].str)) < 0)
3197 cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3198 else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3200 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3202 free((yyvsp[0].str));
3204 #line 3205 "util/configparser.c"
3208 #line 657 "util/configparser.y"
3210 #ifdef CLIENT_SUBNET
3211 OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3212 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3213 yyerror("IPv4 ECS tree size expected");
3214 else if (atoi((yyvsp[0].str)) < 0)
3215 cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3216 else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3218 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3220 free((yyvsp[0].str));
3222 #line 3223 "util/configparser.c"
3226 #line 672 "util/configparser.y"
3228 #ifdef CLIENT_SUBNET
3229 OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3230 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3231 yyerror("IPv6 ECS tree size expected");
3232 else if (atoi((yyvsp[0].str)) < 0)
3233 cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3234 else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3236 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3238 free((yyvsp[0].str));
3240 #line 3241 "util/configparser.c"
3244 #line 687 "util/configparser.y"
3246 OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3247 if(cfg_parser->cfg->num_ifs == 0)
3248 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3249 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3250 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3251 if(!cfg_parser->cfg->ifs)
3252 yyerror("out of memory");
3254 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3256 #line 3257 "util/configparser.c"
3260 #line 700 "util/configparser.y"
3262 OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3263 if(cfg_parser->cfg->num_out_ifs == 0)
3264 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3265 else cfg_parser->cfg->out_ifs = realloc(
3266 cfg_parser->cfg->out_ifs,
3267 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3268 if(!cfg_parser->cfg->out_ifs)
3269 yyerror("out of memory");
3271 cfg_parser->cfg->out_ifs[
3272 cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3274 #line 3275 "util/configparser.c"
3278 #line 715 "util/configparser.y"
3280 OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3281 if(atoi((yyvsp[0].str)) == 0)
3282 yyerror("number expected");
3283 else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3284 free((yyvsp[0].str));
3286 #line 3287 "util/configparser.c"
3290 #line 724 "util/configparser.y"
3292 OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3293 if(!cfg_mark_ports((yyvsp[0].str), 1,
3294 cfg_parser->cfg->outgoing_avail_ports, 65536))
3295 yyerror("port number or range (\"low-high\") expected");
3296 free((yyvsp[0].str));
3298 #line 3299 "util/configparser.c"
3302 #line 733 "util/configparser.y"
3304 OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3305 if(!cfg_mark_ports((yyvsp[0].str), 0,
3306 cfg_parser->cfg->outgoing_avail_ports, 65536))
3307 yyerror("port number or range (\"low-high\") expected");
3308 free((yyvsp[0].str));
3310 #line 3311 "util/configparser.c"
3314 #line 742 "util/configparser.y"
3316 OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3317 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3318 yyerror("number expected");
3319 else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3320 free((yyvsp[0].str));
3322 #line 3323 "util/configparser.c"
3326 #line 751 "util/configparser.y"
3328 OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3329 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3330 yyerror("number expected");
3331 else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3332 free((yyvsp[0].str));
3334 #line 3335 "util/configparser.c"
3338 #line 760 "util/configparser.y"
3340 OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3341 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3342 yyerror("expected yes or no.");
3343 else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3344 free((yyvsp[0].str));
3346 #line 3347 "util/configparser.c"
3350 #line 769 "util/configparser.y"
3352 OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3353 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3354 yyerror("expected yes or no.");
3355 else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3356 free((yyvsp[0].str));
3358 #line 3359 "util/configparser.c"
3362 #line 778 "util/configparser.y"
3364 OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3365 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3366 yyerror("expected yes or no.");
3367 else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3368 free((yyvsp[0].str));
3370 #line 3371 "util/configparser.c"
3374 #line 787 "util/configparser.y"
3376 OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3377 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3378 yyerror("expected yes or no.");
3379 else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3380 free((yyvsp[0].str));
3382 #line 3383 "util/configparser.c"
3386 #line 796 "util/configparser.y"
3388 OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3389 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3390 yyerror("expected yes or no.");
3391 else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3392 free((yyvsp[0].str));
3394 #line 3395 "util/configparser.c"
3398 #line 805 "util/configparser.y"
3400 OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3401 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3402 yyerror("expected yes or no.");
3403 else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3404 free((yyvsp[0].str));
3406 #line 3407 "util/configparser.c"
3410 #line 814 "util/configparser.y"
3412 OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
3413 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3414 yyerror("expected yes or no.");
3415 else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3416 free((yyvsp[0].str));
3418 #line 3419 "util/configparser.c"
3422 #line 823 "util/configparser.y"
3424 OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
3425 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3426 yyerror("number expected");
3427 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
3428 free((yyvsp[0].str));
3430 #line 3431 "util/configparser.c"
3434 #line 832 "util/configparser.y"
3436 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
3437 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3438 yyerror("number expected");
3439 else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
3440 free((yyvsp[0].str));
3442 #line 3443 "util/configparser.c"
3446 #line 841 "util/configparser.y"
3448 OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
3449 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3450 yyerror("number expected");
3451 else if (atoi((yyvsp[0].str)) > 120000)
3452 cfg_parser->cfg->tcp_idle_timeout = 120000;
3453 else if (atoi((yyvsp[0].str)) < 1)
3454 cfg_parser->cfg->tcp_idle_timeout = 1;
3455 else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
3456 free((yyvsp[0].str));
3458 #line 3459 "util/configparser.c"
3462 #line 854 "util/configparser.y"
3464 OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
3465 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3466 yyerror("expected yes or no.");
3467 else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
3468 free((yyvsp[0].str));
3470 #line 3471 "util/configparser.c"
3474 #line 863 "util/configparser.y"
3476 OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
3477 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3478 yyerror("number expected");
3479 else if (atoi((yyvsp[0].str)) > 6553500)
3480 cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
3481 else if (atoi((yyvsp[0].str)) < 1)
3482 cfg_parser->cfg->tcp_keepalive_timeout = 0;
3483 else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
3484 free((yyvsp[0].str));
3486 #line 3487 "util/configparser.c"
3490 #line 876 "util/configparser.y"
3492 OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
3493 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3494 yyerror("expected yes or no.");
3495 else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3496 free((yyvsp[0].str));
3498 #line 3499 "util/configparser.c"
3502 #line 885 "util/configparser.y"
3504 OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
3505 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3506 yyerror("expected yes or no.");
3507 else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3508 free((yyvsp[0].str));
3510 #line 3511 "util/configparser.c"
3514 #line 894 "util/configparser.y"
3516 OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
3517 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3518 yyerror("expected yes or no.");
3519 else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3520 free((yyvsp[0].str));
3522 #line 3523 "util/configparser.c"
3526 #line 903 "util/configparser.y"
3528 OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
3529 free(cfg_parser->cfg->ssl_service_key);
3530 cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
3532 #line 3533 "util/configparser.c"
3536 #line 910 "util/configparser.y"
3538 OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
3539 free(cfg_parser->cfg->ssl_service_pem);
3540 cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
3542 #line 3543 "util/configparser.c"
3546 #line 917 "util/configparser.y"
3548 OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
3549 if(atoi((yyvsp[0].str)) == 0)
3550 yyerror("port number expected");
3551 else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
3552 free((yyvsp[0].str));
3554 #line 3555 "util/configparser.c"
3558 #line 926 "util/configparser.y"
3560 OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
3561 free(cfg_parser->cfg->tls_cert_bundle);
3562 cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
3564 #line 3565 "util/configparser.c"
3568 #line 933 "util/configparser.y"
3570 OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
3571 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3572 yyerror("expected yes or no.");
3573 else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
3574 free((yyvsp[0].str));
3576 #line 3577 "util/configparser.c"
3580 #line 942 "util/configparser.y"
3582 OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
3583 if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
3585 yyerror("out of memory");
3587 #line 3588 "util/configparser.c"
3591 #line 950 "util/configparser.y"
3593 OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
3594 free(cfg_parser->cfg->tls_ciphers);
3595 cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
3597 #line 3598 "util/configparser.c"
3601 #line 957 "util/configparser.y"
3603 OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
3604 free(cfg_parser->cfg->tls_ciphersuites);
3605 cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
3607 #line 3608 "util/configparser.c"
3611 #line 964 "util/configparser.y"
3613 OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
3614 if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
3616 yyerror("out of memory");
3618 #line 3619 "util/configparser.c"
3622 #line 972 "util/configparser.y"
3624 OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
3625 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3626 yyerror("expected yes or no.");
3627 else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
3628 free((yyvsp[0].str));
3630 #line 3631 "util/configparser.c"
3634 #line 981 "util/configparser.y"
3636 OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
3637 if(atoi((yyvsp[0].str)) == 0)
3638 yyerror("port number expected");
3639 else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
3640 free((yyvsp[0].str));
3642 #line 3643 "util/configparser.c"
3646 #line 989 "util/configparser.y"
3648 OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
3649 free(cfg_parser->cfg->http_endpoint);
3650 if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
3651 cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
3652 if(!cfg_parser->cfg->http_endpoint)
3653 yyerror("out of memory");
3654 cfg_parser->cfg->http_endpoint[0] = '/';
3655 memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
3656 strlen((yyvsp[0].str))+1);
3657 free((yyvsp[0].str));
3659 cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
3662 #line 3663 "util/configparser.c"
3666 #line 1005 "util/configparser.y"
3668 OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
3669 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3670 yyerror("number expected");
3671 else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
3672 free((yyvsp[0].str));
3674 #line 3675 "util/configparser.c"
3678 #line 1013 "util/configparser.y"
3680 OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
3681 if(!cfg_parse_memsize((yyvsp[0].str),
3682 &cfg_parser->cfg->http_query_buffer_size))
3683 yyerror("memory size expected");
3684 free((yyvsp[0].str));
3686 #line 3687 "util/configparser.c"
3690 #line 1021 "util/configparser.y"
3692 OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
3693 if(!cfg_parse_memsize((yyvsp[0].str),
3694 &cfg_parser->cfg->http_response_buffer_size))
3695 yyerror("memory size expected");
3696 free((yyvsp[0].str));
3698 #line 3699 "util/configparser.c"
3702 #line 1029 "util/configparser.y"
3704 OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
3705 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3706 yyerror("expected yes or no.");
3707 else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
3708 free((yyvsp[0].str));
3710 #line 3711 "util/configparser.c"
3714 #line 1037 "util/configparser.y"
3716 OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
3717 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3718 yyerror("expected yes or no.");
3719 else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3720 free((yyvsp[0].str));
3722 #line 3723 "util/configparser.c"
3726 #line 1045 "util/configparser.y"
3728 OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
3729 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3730 yyerror("expected yes or no.");
3731 else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
3732 free((yyvsp[0].str));
3734 #line 3735 "util/configparser.c"
3738 #line 1054 "util/configparser.y"
3740 OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
3741 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3742 yyerror("expected yes or no.");
3743 else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
3744 free((yyvsp[0].str));
3746 #line 3747 "util/configparser.c"
3750 #line 1063 "util/configparser.y"
3752 OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
3753 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3754 yyerror("expected yes or no.");
3755 else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
3756 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
3757 if(strcmp((yyvsp[0].str), "yes") == 0)
3758 yyerror("no syslog services are available. "
3759 "(reconfigure and compile to add)");
3761 free((yyvsp[0].str));
3763 #line 3764 "util/configparser.c"
3767 #line 1077 "util/configparser.y"
3769 OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
3770 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3771 yyerror("expected yes or no.");
3772 else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
3773 free((yyvsp[0].str));
3775 #line 3776 "util/configparser.c"
3779 #line 1086 "util/configparser.y"
3781 OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
3782 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3783 yyerror("expected yes or no.");
3784 else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
3785 free((yyvsp[0].str));
3787 #line 3788 "util/configparser.c"
3791 #line 1095 "util/configparser.y"
3793 OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
3794 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3795 yyerror("expected yes or no.");
3796 else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
3797 free((yyvsp[0].str));
3799 #line 3800 "util/configparser.c"
3803 #line 1104 "util/configparser.y"
3805 OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
3806 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3807 yyerror("expected yes or no.");
3808 else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
3809 free((yyvsp[0].str));
3811 #line 3812 "util/configparser.c"
3815 #line 1113 "util/configparser.y"
3817 OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
3818 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3819 yyerror("expected yes or no.");
3820 else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
3821 free((yyvsp[0].str));
3823 #line 3824 "util/configparser.c"
3827 #line 1122 "util/configparser.y"
3829 OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
3830 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3831 yyerror("expected yes or no.");
3832 else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
3833 free((yyvsp[0].str));
3835 #line 3836 "util/configparser.c"
3839 #line 1131 "util/configparser.y"
3841 OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
3842 free(cfg_parser->cfg->chrootdir);
3843 cfg_parser->cfg->chrootdir = (yyvsp[0].str);
3845 #line 3846 "util/configparser.c"
3849 #line 1138 "util/configparser.y"
3851 OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
3852 free(cfg_parser->cfg->username);
3853 cfg_parser->cfg->username = (yyvsp[0].str);
3855 #line 3856 "util/configparser.c"
3859 #line 1145 "util/configparser.y"
3861 OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
3862 free(cfg_parser->cfg->directory);
3863 cfg_parser->cfg->directory = (yyvsp[0].str);
3864 /* change there right away for includes relative to this */
3865 if((yyvsp[0].str)[0]) {
3867 #ifdef UB_ON_WINDOWS
3868 w_config_adjust_directory(cfg_parser->cfg);
3870 d = cfg_parser->cfg->directory;
3871 /* adjust directory if we have already chroot,
3872 * like, we reread after sighup */
3873 if(cfg_parser->chroot && cfg_parser->chroot[0] &&
3874 strncmp(d, cfg_parser->chroot, strlen(
3875 cfg_parser->chroot)) == 0)
3876 d += strlen(cfg_parser->chroot);
3879 log_err("cannot chdir to directory: %s (%s)",
3880 d, strerror(errno));
3884 #line 3885 "util/configparser.c"
3888 #line 1171 "util/configparser.y"
3890 OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
3891 free(cfg_parser->cfg->logfile);
3892 cfg_parser->cfg->logfile = (yyvsp[0].str);
3893 cfg_parser->cfg->use_syslog = 0;
3895 #line 3896 "util/configparser.c"
3899 #line 1179 "util/configparser.y"
3901 OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
3902 free(cfg_parser->cfg->pidfile);
3903 cfg_parser->cfg->pidfile = (yyvsp[0].str);
3905 #line 3906 "util/configparser.c"
3909 #line 1186 "util/configparser.y"
3911 OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
3912 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
3913 yyerror("out of memory");
3915 #line 3916 "util/configparser.c"
3919 #line 1193 "util/configparser.y"
3921 OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
3922 log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
3923 free((yyvsp[0].str));
3925 #line 3926 "util/configparser.c"
3929 #line 1200 "util/configparser.y"
3931 OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
3932 log_warn("option dlv-anchor ignored: DLV is decommissioned");
3933 free((yyvsp[0].str));
3935 #line 3936 "util/configparser.c"
3939 #line 1207 "util/configparser.y"
3941 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
3942 if(!cfg_strlist_insert(&cfg_parser->cfg->
3943 auto_trust_anchor_file_list, (yyvsp[0].str)))
3944 yyerror("out of memory");
3946 #line 3947 "util/configparser.c"
3950 #line 1215 "util/configparser.y"
3952 OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
3953 if(!cfg_strlist_insert(&cfg_parser->cfg->
3954 trust_anchor_file_list, (yyvsp[0].str)))
3955 yyerror("out of memory");
3957 #line 3958 "util/configparser.c"
3961 #line 1223 "util/configparser.y"
3963 OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
3964 if(!cfg_strlist_insert(&cfg_parser->cfg->
3965 trusted_keys_file_list, (yyvsp[0].str)))
3966 yyerror("out of memory");
3968 #line 3969 "util/configparser.c"
3972 #line 1231 "util/configparser.y"
3974 OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
3975 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
3976 yyerror("out of memory");
3978 #line 3979 "util/configparser.c"
3982 #line 1238 "util/configparser.y"
3984 OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
3985 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3986 yyerror("expected yes or no.");
3988 cfg_parser->cfg->trust_anchor_signaling =
3989 (strcmp((yyvsp[0].str), "yes")==0);
3990 free((yyvsp[0].str));
3992 #line 3993 "util/configparser.c"
3996 #line 1249 "util/configparser.y"
3998 OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
3999 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4000 yyerror("expected yes or no.");
4002 cfg_parser->cfg->root_key_sentinel =
4003 (strcmp((yyvsp[0].str), "yes")==0);
4004 free((yyvsp[0].str));
4006 #line 4007 "util/configparser.c"
4010 #line 1260 "util/configparser.y"
4012 OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4013 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4014 yyerror("out of memory");
4016 #line 4017 "util/configparser.c"
4020 #line 1267 "util/configparser.y"
4022 OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4023 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4024 yyerror("expected yes or no.");
4025 else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4026 free((yyvsp[0].str));
4028 #line 4029 "util/configparser.c"
4032 #line 1276 "util/configparser.y"
4034 OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4035 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4036 yyerror("expected yes or no.");
4037 else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4038 free((yyvsp[0].str));
4040 #line 4041 "util/configparser.c"
4044 #line 1285 "util/configparser.y"
4046 OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4047 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4048 yyerror("expected yes or no.");
4049 else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4050 free((yyvsp[0].str));
4052 #line 4053 "util/configparser.c"
4056 #line 1294 "util/configparser.y"
4058 OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4059 free(cfg_parser->cfg->identity);
4060 cfg_parser->cfg->identity = (yyvsp[0].str);
4062 #line 4063 "util/configparser.c"
4066 #line 1301 "util/configparser.y"
4068 OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4069 free(cfg_parser->cfg->version);
4070 cfg_parser->cfg->version = (yyvsp[0].str);
4072 #line 4073 "util/configparser.c"
4076 #line 1308 "util/configparser.y"
4078 OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4079 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4080 yyerror("buffer size expected");
4081 free((yyvsp[0].str));
4083 #line 4084 "util/configparser.c"
4087 #line 1316 "util/configparser.y"
4089 OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4090 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4091 yyerror("buffer size expected");
4092 free((yyvsp[0].str));
4094 #line 4095 "util/configparser.c"
4098 #line 1324 "util/configparser.y"
4100 OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4101 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4102 yyerror("expected yes or no.");
4103 else cfg_parser->cfg->so_reuseport =
4104 (strcmp((yyvsp[0].str), "yes")==0);
4105 free((yyvsp[0].str));
4107 #line 4108 "util/configparser.c"
4111 #line 1334 "util/configparser.y"
4113 OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4114 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4115 yyerror("expected yes or no.");
4116 else cfg_parser->cfg->ip_transparent =
4117 (strcmp((yyvsp[0].str), "yes")==0);
4118 free((yyvsp[0].str));
4120 #line 4121 "util/configparser.c"
4124 #line 1344 "util/configparser.y"
4126 OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4127 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4128 yyerror("expected yes or no.");
4129 else cfg_parser->cfg->ip_freebind =
4130 (strcmp((yyvsp[0].str), "yes")==0);
4131 free((yyvsp[0].str));
4133 #line 4134 "util/configparser.c"
4137 #line 1354 "util/configparser.y"
4139 OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4140 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4141 yyerror("number expected");
4142 else if (atoi((yyvsp[0].str)) > 63)
4143 yyerror("value too large (max 63)");
4144 else if (atoi((yyvsp[0].str)) < 0)
4145 yyerror("value too small (min 0)");
4147 cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4148 free((yyvsp[0].str));
4150 #line 4151 "util/configparser.c"
4154 #line 1368 "util/configparser.y"
4156 OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4157 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4158 yyerror("memory size expected");
4159 free((yyvsp[0].str));
4161 #line 4162 "util/configparser.c"
4165 #line 1376 "util/configparser.y"
4167 OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4168 if(atoi((yyvsp[0].str)) == 0)
4169 yyerror("number expected");
4170 else if (atoi((yyvsp[0].str)) < 12)
4171 yyerror("edns buffer size too small");
4172 else if (atoi((yyvsp[0].str)) > 65535)
4173 cfg_parser->cfg->edns_buffer_size = 65535;
4174 else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4175 free((yyvsp[0].str));
4177 #line 4178 "util/configparser.c"
4181 #line 1389 "util/configparser.y"
4183 OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4184 if(atoi((yyvsp[0].str)) == 0)
4185 yyerror("number expected");
4186 else if (atoi((yyvsp[0].str)) < 4096)
4187 yyerror("message buffer size too small (use 4096)");
4188 else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4189 free((yyvsp[0].str));
4191 #line 4192 "util/configparser.c"
4195 #line 1400 "util/configparser.y"
4197 OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4198 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4199 yyerror("memory size expected");
4200 free((yyvsp[0].str));
4202 #line 4203 "util/configparser.c"
4206 #line 1408 "util/configparser.y"
4208 OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4209 if(atoi((yyvsp[0].str)) == 0)
4210 yyerror("number expected");
4212 cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4213 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4214 yyerror("must be a power of 2");
4216 free((yyvsp[0].str));
4218 #line 4219 "util/configparser.c"
4222 #line 1421 "util/configparser.y"
4224 OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4225 if(atoi((yyvsp[0].str)) == 0)
4226 yyerror("number expected");
4227 else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4228 free((yyvsp[0].str));
4230 #line 4231 "util/configparser.c"
4234 #line 1430 "util/configparser.y"
4236 OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4237 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4238 yyerror("number expected");
4239 else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4240 free((yyvsp[0].str));
4242 #line 4243 "util/configparser.c"
4246 #line 1439 "util/configparser.y"
4248 OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4249 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4250 yyerror("number expected");
4251 else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4252 free((yyvsp[0].str));
4254 #line 4255 "util/configparser.c"
4258 #line 1448 "util/configparser.y"
4260 OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4261 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4262 yyerror("expected yes or no.");
4263 else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4264 free((yyvsp[0].str));
4266 #line 4267 "util/configparser.c"
4270 #line 1457 "util/configparser.y"
4272 OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4273 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4274 yyerror("expected yes or no.");
4275 else cfg_parser->cfg->unblock_lan_zones =
4276 (strcmp((yyvsp[0].str), "yes")==0);
4277 free((yyvsp[0].str));
4279 #line 4280 "util/configparser.c"
4283 #line 1467 "util/configparser.y"
4285 OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4286 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4287 yyerror("expected yes or no.");
4288 else cfg_parser->cfg->insecure_lan_zones =
4289 (strcmp((yyvsp[0].str), "yes")==0);
4290 free((yyvsp[0].str));
4292 #line 4293 "util/configparser.c"
4296 #line 1477 "util/configparser.y"
4298 OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4299 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4300 yyerror("memory size expected");
4301 free((yyvsp[0].str));
4303 #line 4304 "util/configparser.c"
4307 #line 1485 "util/configparser.y"
4309 OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4310 if(atoi((yyvsp[0].str)) == 0)
4311 yyerror("number expected");
4313 cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4314 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4315 yyerror("must be a power of 2");
4317 free((yyvsp[0].str));
4319 #line 4320 "util/configparser.c"
4323 #line 1498 "util/configparser.y"
4325 OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4326 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4327 yyerror("number expected");
4328 else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4329 free((yyvsp[0].str));
4331 #line 4332 "util/configparser.c"
4335 #line 1507 "util/configparser.y"
4337 OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4338 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4339 "removed, use infra-host-ttl)", (yyvsp[0].str));
4340 free((yyvsp[0].str));
4342 #line 4343 "util/configparser.c"
4346 #line 1515 "util/configparser.y"
4348 OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4349 if(atoi((yyvsp[0].str)) == 0)
4350 yyerror("number expected");
4351 else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4352 free((yyvsp[0].str));
4354 #line 4355 "util/configparser.c"
4358 #line 1524 "util/configparser.y"
4360 OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4361 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4362 "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4363 free((yyvsp[0].str));
4365 #line 4366 "util/configparser.c"
4369 #line 1532 "util/configparser.y"
4371 OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4372 if(atoi((yyvsp[0].str)) == 0)
4373 yyerror("number expected");
4375 cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4376 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4377 yyerror("must be a power of 2");
4379 free((yyvsp[0].str));
4381 #line 4382 "util/configparser.c"
4385 #line 1545 "util/configparser.y"
4387 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4388 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4389 yyerror("number expected");
4390 else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4391 free((yyvsp[0].str));
4393 #line 4394 "util/configparser.c"
4397 #line 1554 "util/configparser.y"
4399 OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4400 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4401 yyerror("expected yes or no.");
4402 else cfg_parser->cfg->infra_keep_probing =
4403 (strcmp((yyvsp[0].str), "yes")==0);
4404 free((yyvsp[0].str));
4406 #line 4407 "util/configparser.c"
4410 #line 1564 "util/configparser.y"
4412 OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4413 free(cfg_parser->cfg->target_fetch_policy);
4414 cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4416 #line 4417 "util/configparser.c"
4420 #line 1571 "util/configparser.y"
4422 OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4423 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4424 yyerror("expected yes or no.");
4425 else cfg_parser->cfg->harden_short_bufsize =
4426 (strcmp((yyvsp[0].str), "yes")==0);
4427 free((yyvsp[0].str));
4429 #line 4430 "util/configparser.c"
4433 #line 1581 "util/configparser.y"
4435 OUTYY(("P(server_harden_large_queries:%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->harden_large_queries =
4439 (strcmp((yyvsp[0].str), "yes")==0);
4440 free((yyvsp[0].str));
4442 #line 4443 "util/configparser.c"
4446 #line 1591 "util/configparser.y"
4448 OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
4449 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4450 yyerror("expected yes or no.");
4451 else cfg_parser->cfg->harden_glue =
4452 (strcmp((yyvsp[0].str), "yes")==0);
4453 free((yyvsp[0].str));
4455 #line 4456 "util/configparser.c"
4459 #line 1601 "util/configparser.y"
4461 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
4462 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4463 yyerror("expected yes or no.");
4464 else cfg_parser->cfg->harden_dnssec_stripped =
4465 (strcmp((yyvsp[0].str), "yes")==0);
4466 free((yyvsp[0].str));
4468 #line 4469 "util/configparser.c"
4472 #line 1611 "util/configparser.y"
4474 OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
4475 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4476 yyerror("expected yes or no.");
4477 else cfg_parser->cfg->harden_below_nxdomain =
4478 (strcmp((yyvsp[0].str), "yes")==0);
4479 free((yyvsp[0].str));
4481 #line 4482 "util/configparser.c"
4485 #line 1621 "util/configparser.y"
4487 OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
4488 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4489 yyerror("expected yes or no.");
4490 else cfg_parser->cfg->harden_referral_path =
4491 (strcmp((yyvsp[0].str), "yes")==0);
4492 free((yyvsp[0].str));
4494 #line 4495 "util/configparser.c"
4498 #line 1631 "util/configparser.y"
4500 OUTYY(("P(server_harden_algo_downgrade:%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->harden_algo_downgrade =
4504 (strcmp((yyvsp[0].str), "yes")==0);
4505 free((yyvsp[0].str));
4507 #line 4508 "util/configparser.c"
4511 #line 1641 "util/configparser.y"
4513 OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
4514 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4515 yyerror("expected yes or no.");
4516 else cfg_parser->cfg->use_caps_bits_for_id =
4517 (strcmp((yyvsp[0].str), "yes")==0);
4518 free((yyvsp[0].str));
4520 #line 4521 "util/configparser.c"
4524 #line 1651 "util/configparser.y"
4526 OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
4527 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
4528 yyerror("out of memory");
4530 #line 4531 "util/configparser.c"
4534 #line 1658 "util/configparser.y"
4536 OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
4537 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
4538 yyerror("out of memory");
4540 #line 4541 "util/configparser.c"
4544 #line 1665 "util/configparser.y"
4546 OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
4547 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
4548 yyerror("out of memory");
4550 #line 4551 "util/configparser.c"
4554 #line 1672 "util/configparser.y"
4556 OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
4557 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4558 yyerror("expected yes or no.");
4559 else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
4560 free((yyvsp[0].str));
4562 #line 4563 "util/configparser.c"
4566 #line 1681 "util/configparser.y"
4568 OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
4569 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4570 yyerror("expected yes or no.");
4571 else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
4572 free((yyvsp[0].str));
4574 #line 4575 "util/configparser.c"
4578 #line 1690 "util/configparser.y"
4580 OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
4581 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4582 yyerror("expected yes or no.");
4583 else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
4584 free((yyvsp[0].str));
4586 #line 4587 "util/configparser.c"
4590 #line 1699 "util/configparser.y"
4592 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
4593 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4594 yyerror("number expected");
4595 else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
4596 free((yyvsp[0].str));
4598 #line 4599 "util/configparser.c"
4602 #line 1708 "util/configparser.y"
4604 OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
4605 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
4606 yyerror("out of memory");
4608 #line 4609 "util/configparser.c"
4612 #line 1715 "util/configparser.y"
4614 OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
4615 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4616 yyerror("expected yes or no.");
4617 else cfg_parser->cfg->donotquery_localhost =
4618 (strcmp((yyvsp[0].str), "yes")==0);
4619 free((yyvsp[0].str));
4621 #line 4622 "util/configparser.c"
4625 #line 1725 "util/configparser.y"
4627 OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
4628 if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
4629 strcmp((yyvsp[0].str), "deny_non_local")!=0 &&
4630 strcmp((yyvsp[0].str), "refuse_non_local")!=0 &&
4631 strcmp((yyvsp[0].str), "allow_setrd")!=0 &&
4632 strcmp((yyvsp[0].str), "allow")!=0 &&
4633 strcmp((yyvsp[0].str), "allow_snoop")!=0) {
4634 yyerror("expected deny, refuse, deny_non_local, "
4635 "refuse_non_local, allow, allow_setrd or "
4636 "allow_snoop in access control action");
4637 free((yyvsp[-1].str));
4638 free((yyvsp[0].str));
4640 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
4641 fatal_exit("out of memory adding acl");
4644 #line 4645 "util/configparser.c"
4648 #line 1745 "util/configparser.y"
4650 OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
4651 free(cfg_parser->cfg->module_conf);
4652 cfg_parser->cfg->module_conf = (yyvsp[0].str);
4654 #line 4655 "util/configparser.c"
4658 #line 1752 "util/configparser.y"
4660 OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
4661 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
4662 cfg_parser->cfg->val_date_override = 0;
4663 } else if(strlen((yyvsp[0].str)) == 14) {
4664 cfg_parser->cfg->val_date_override =
4665 cfg_convert_timeval((yyvsp[0].str));
4666 if(!cfg_parser->cfg->val_date_override)
4667 yyerror("bad date/time specification");
4669 if(atoi((yyvsp[0].str)) == 0)
4670 yyerror("number expected");
4671 cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
4673 free((yyvsp[0].str));
4675 #line 4676 "util/configparser.c"
4679 #line 1770 "util/configparser.y"
4681 OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
4682 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
4683 cfg_parser->cfg->val_sig_skew_min = 0;
4685 cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
4686 if(!cfg_parser->cfg->val_sig_skew_min)
4687 yyerror("number expected");
4689 free((yyvsp[0].str));
4691 #line 4692 "util/configparser.c"
4695 #line 1783 "util/configparser.y"
4697 OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
4698 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
4699 cfg_parser->cfg->val_sig_skew_max = 0;
4701 cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
4702 if(!cfg_parser->cfg->val_sig_skew_max)
4703 yyerror("number expected");
4705 free((yyvsp[0].str));
4707 #line 4708 "util/configparser.c"
4711 #line 1796 "util/configparser.y"
4713 OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
4714 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4715 yyerror("number expected");
4716 else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
4717 free((yyvsp[0].str));
4719 #line 4720 "util/configparser.c"
4723 #line 1805 "util/configparser.y"
4725 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
4726 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4727 yyerror("number expected");
4728 else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
4729 free((yyvsp[0].str));
4731 #line 4732 "util/configparser.c"
4735 #line 1814 "util/configparser.y"
4737 OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
4738 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4739 yyerror("number expected");
4740 else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
4741 free((yyvsp[0].str));
4743 #line 4744 "util/configparser.c"
4747 #line 1823 "util/configparser.y"
4749 OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
4750 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4751 yyerror("number expected");
4752 else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
4753 free((yyvsp[0].str));
4755 #line 4756 "util/configparser.c"
4759 #line 1832 "util/configparser.y"
4761 OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
4762 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4763 yyerror("expected yes or no.");
4764 else cfg_parser->cfg->val_clean_additional =
4765 (strcmp((yyvsp[0].str), "yes")==0);
4766 free((yyvsp[0].str));
4768 #line 4769 "util/configparser.c"
4772 #line 1842 "util/configparser.y"
4774 OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
4775 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4776 yyerror("expected yes or no.");
4777 else cfg_parser->cfg->val_permissive_mode =
4778 (strcmp((yyvsp[0].str), "yes")==0);
4779 free((yyvsp[0].str));
4781 #line 4782 "util/configparser.c"
4785 #line 1852 "util/configparser.y"
4787 OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
4788 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4789 yyerror("expected yes or no.");
4791 cfg_parser->cfg->aggressive_nsec =
4792 (strcmp((yyvsp[0].str), "yes")==0);
4793 free((yyvsp[0].str));
4795 #line 4796 "util/configparser.c"
4799 #line 1863 "util/configparser.y"
4801 OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
4802 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4803 yyerror("expected yes or no.");
4804 else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
4805 free((yyvsp[0].str));
4807 #line 4808 "util/configparser.c"
4811 #line 1872 "util/configparser.y"
4813 OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
4814 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4815 yyerror("expected yes or no.");
4816 else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
4817 free((yyvsp[0].str));
4819 #line 4820 "util/configparser.c"
4823 #line 1881 "util/configparser.y"
4825 OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
4826 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4827 yyerror("number expected");
4828 else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
4829 free((yyvsp[0].str));
4831 #line 4832 "util/configparser.c"
4835 #line 1890 "util/configparser.y"
4837 OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
4838 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4839 yyerror("expected yes or no.");
4840 else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
4841 free((yyvsp[0].str));
4843 #line 4844 "util/configparser.c"
4847 #line 1899 "util/configparser.y"
4849 OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
4850 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4851 yyerror("number expected");
4852 else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
4853 free((yyvsp[0].str));
4855 #line 4856 "util/configparser.c"
4859 #line 1908 "util/configparser.y"
4861 OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
4862 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4863 yyerror("number expected");
4864 else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
4865 free((yyvsp[0].str));
4867 #line 4868 "util/configparser.c"
4871 #line 1917 "util/configparser.y"
4873 OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
4874 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4875 yyerror("expected yes or no.");
4876 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
4877 else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
4879 log_warn("test option fake_dsa is enabled");
4881 free((yyvsp[0].str));
4883 #line 4884 "util/configparser.c"
4887 #line 1930 "util/configparser.y"
4889 OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
4890 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4891 yyerror("expected yes or no.");
4892 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
4893 else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
4895 log_warn("test option fake_sha1 is enabled");
4897 free((yyvsp[0].str));
4899 #line 4900 "util/configparser.c"
4903 #line 1943 "util/configparser.y"
4905 OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
4906 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4907 yyerror("number expected");
4908 else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
4909 free((yyvsp[0].str));
4911 #line 4912 "util/configparser.c"
4915 #line 1952 "util/configparser.y"
4917 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
4918 free(cfg_parser->cfg->val_nsec3_key_iterations);
4919 cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
4921 #line 4922 "util/configparser.c"
4925 #line 1959 "util/configparser.y"
4927 OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
4928 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4929 yyerror("number expected");
4930 else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
4931 free((yyvsp[0].str));
4933 #line 4934 "util/configparser.c"
4937 #line 1968 "util/configparser.y"
4939 OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
4940 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4941 yyerror("number expected");
4942 else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
4943 free((yyvsp[0].str));
4945 #line 4946 "util/configparser.c"
4949 #line 1977 "util/configparser.y"
4951 OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
4952 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4953 yyerror("number expected");
4954 else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
4955 free((yyvsp[0].str));
4957 #line 4958 "util/configparser.c"
4961 #line 1986 "util/configparser.y"
4963 OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
4964 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4965 yyerror("expected yes or no.");
4966 else cfg_parser->cfg->permit_small_holddown =
4967 (strcmp((yyvsp[0].str), "yes")==0);
4968 free((yyvsp[0].str));
4970 #line 4971 "util/configparser.c"
4974 #line 1995 "util/configparser.y"
4976 OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
4977 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
4978 yyerror("memory size expected");
4979 free((yyvsp[0].str));
4981 #line 4982 "util/configparser.c"
4985 #line 2003 "util/configparser.y"
4987 OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
4988 if(atoi((yyvsp[0].str)) == 0)
4989 yyerror("number expected");
4991 cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
4992 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
4993 yyerror("must be a power of 2");
4995 free((yyvsp[0].str));
4997 #line 4998 "util/configparser.c"
5001 #line 2016 "util/configparser.y"
5003 OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5004 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5005 yyerror("memory size expected");
5006 free((yyvsp[0].str));
5008 #line 5009 "util/configparser.c"
5012 #line 2024 "util/configparser.y"
5014 OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5015 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5016 strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5017 strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5018 && strcmp((yyvsp[0].str), "typetransparent")!=0
5019 && strcmp((yyvsp[0].str), "always_transparent")!=0
5020 && strcmp((yyvsp[0].str), "always_refuse")!=0
5021 && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5022 && strcmp((yyvsp[0].str), "noview")!=0
5023 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5024 && strcmp((yyvsp[0].str), "inform_redirect") != 0
5025 && strcmp((yyvsp[0].str), "ipset") != 0) {
5026 yyerror("local-zone type: expected static, deny, "
5027 "refuse, redirect, transparent, "
5028 "typetransparent, inform, inform_deny, "
5029 "inform_redirect, always_transparent, "
5030 "always_refuse, always_nxdomain, noview "
5031 ", nodefault or ipset");
5032 free((yyvsp[-1].str));
5033 free((yyvsp[0].str));
5034 } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5035 if(!cfg_strlist_insert(&cfg_parser->cfg->
5036 local_zones_nodefault, (yyvsp[-1].str)))
5037 fatal_exit("out of memory adding local-zone");
5038 free((yyvsp[0].str));
5040 } else if(strcmp((yyvsp[0].str), "ipset")==0) {
5041 if(!cfg_strlist_insert(&cfg_parser->cfg->
5042 local_zones_ipset, (yyvsp[-1].str)))
5043 fatal_exit("out of memory adding local-zone");
5044 free((yyvsp[0].str));
5047 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5048 (yyvsp[-1].str), (yyvsp[0].str)))
5049 fatal_exit("out of memory adding local-zone");
5052 #line 5053 "util/configparser.c"
5056 #line 2065 "util/configparser.y"
5058 OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5059 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5060 fatal_exit("out of memory adding local-data");
5062 #line 5063 "util/configparser.c"
5066 #line 2072 "util/configparser.y"
5069 OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5070 ptr = cfg_ptr_reverse((yyvsp[0].str));
5071 free((yyvsp[0].str));
5073 if(!cfg_strlist_insert(&cfg_parser->cfg->
5075 fatal_exit("out of memory adding local-data");
5077 yyerror("local-data-ptr could not be reversed");
5080 #line 5081 "util/configparser.c"
5084 #line 2087 "util/configparser.y"
5086 OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5087 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5088 yyerror("expected yes or no.");
5089 else cfg_parser->cfg->minimal_responses =
5090 (strcmp((yyvsp[0].str), "yes")==0);
5091 free((yyvsp[0].str));
5093 #line 5094 "util/configparser.c"
5097 #line 2097 "util/configparser.y"
5099 OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5100 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5101 yyerror("expected yes or no.");
5102 else cfg_parser->cfg->rrset_roundrobin =
5103 (strcmp((yyvsp[0].str), "yes")==0);
5104 free((yyvsp[0].str));
5106 #line 5107 "util/configparser.c"
5110 #line 2107 "util/configparser.y"
5112 OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5113 cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5114 free((yyvsp[0].str));
5116 #line 5117 "util/configparser.c"
5120 #line 2114 "util/configparser.y"
5122 OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5123 cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5124 free((yyvsp[0].str));
5126 #line 5127 "util/configparser.c"
5130 #line 2121 "util/configparser.y"
5132 OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5133 free(cfg_parser->cfg->dns64_prefix);
5134 cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5136 #line 5137 "util/configparser.c"
5140 #line 2128 "util/configparser.y"
5142 OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5143 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5144 yyerror("expected yes or no.");
5145 else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5146 free((yyvsp[0].str));
5148 #line 5149 "util/configparser.c"
5152 #line 2137 "util/configparser.y"
5154 OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5155 if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5157 fatal_exit("out of memory adding dns64-ignore-aaaa");
5159 #line 5160 "util/configparser.c"
5163 #line 2145 "util/configparser.y"
5165 char* p, *s = (yyvsp[0].str);
5166 OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5167 while((p=strsep(&s, " \t\n")) != NULL) {
5169 if(!config_add_tag(cfg_parser->cfg, p))
5170 yyerror("could not define-tag, "
5174 free((yyvsp[0].str));
5176 #line 5177 "util/configparser.c"
5180 #line 2159 "util/configparser.y"
5183 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5185 free((yyvsp[0].str));
5186 OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5188 yyerror("could not parse tags, (define-tag them first)");
5189 free((yyvsp[-1].str));
5192 if(!cfg_strbytelist_insert(
5193 &cfg_parser->cfg->local_zone_tags,
5194 (yyvsp[-1].str), bitlist, len)) {
5195 yyerror("out of memory");
5196 free((yyvsp[-1].str));
5200 #line 5201 "util/configparser.c"
5204 #line 2180 "util/configparser.y"
5207 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5209 free((yyvsp[0].str));
5210 OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5212 yyerror("could not parse tags, (define-tag them first)");
5213 free((yyvsp[-1].str));
5216 if(!cfg_strbytelist_insert(
5217 &cfg_parser->cfg->acl_tags,
5218 (yyvsp[-1].str), bitlist, len)) {
5219 yyerror("out of memory");
5220 free((yyvsp[-1].str));
5224 #line 5225 "util/configparser.c"
5228 #line 2201 "util/configparser.y"
5230 OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5231 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5232 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5233 yyerror("out of memory");
5234 free((yyvsp[-2].str));
5235 free((yyvsp[-1].str));
5236 free((yyvsp[0].str));
5239 #line 5240 "util/configparser.c"
5243 #line 2213 "util/configparser.y"
5245 OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5246 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
5247 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5248 yyerror("out of memory");
5249 free((yyvsp[-2].str));
5250 free((yyvsp[-1].str));
5251 free((yyvsp[0].str));
5254 #line 5255 "util/configparser.c"
5258 #line 2225 "util/configparser.y"
5260 OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5261 if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
5262 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5263 yyerror("out of memory");
5264 free((yyvsp[-2].str));
5265 free((yyvsp[-1].str));
5266 free((yyvsp[0].str));
5269 #line 5270 "util/configparser.c"
5273 #line 2237 "util/configparser.y"
5275 OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5276 if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
5277 (yyvsp[-1].str), (yyvsp[0].str))) {
5278 yyerror("out of memory");
5281 #line 5282 "util/configparser.c"
5285 #line 2246 "util/configparser.y"
5288 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5290 free((yyvsp[0].str));
5291 OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
5293 yyerror("could not parse tags, (define-tag them first)");
5294 free((yyvsp[-1].str));
5297 if(!cfg_strbytelist_insert(
5298 &cfg_parser->cfg->respip_tags,
5299 (yyvsp[-1].str), bitlist, len)) {
5300 yyerror("out of memory");
5301 free((yyvsp[-1].str));
5305 #line 5306 "util/configparser.c"
5309 #line 2267 "util/configparser.y"
5311 OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
5312 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5313 yyerror("number expected");
5314 else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
5315 free((yyvsp[0].str));
5317 #line 5318 "util/configparser.c"
5321 #line 2277 "util/configparser.y"
5323 OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
5324 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5325 yyerror("number expected");
5326 else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
5327 free((yyvsp[0].str));
5329 #line 5330 "util/configparser.c"
5333 #line 2286 "util/configparser.y"
5335 OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
5336 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
5337 yyerror("memory size expected");
5338 free((yyvsp[0].str));
5340 #line 5341 "util/configparser.c"
5344 #line 2294 "util/configparser.y"
5346 OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
5347 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
5348 yyerror("memory size expected");
5349 free((yyvsp[0].str));
5351 #line 5352 "util/configparser.c"
5355 #line 2302 "util/configparser.y"
5357 OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
5358 if(atoi((yyvsp[0].str)) == 0)
5359 yyerror("number expected");
5361 cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
5362 if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
5363 yyerror("must be a power of 2");
5365 free((yyvsp[0].str));
5367 #line 5368 "util/configparser.c"
5371 #line 2315 "util/configparser.y"
5373 OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
5374 if(atoi((yyvsp[0].str)) == 0)
5375 yyerror("number expected");
5377 cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
5378 if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
5379 yyerror("must be a power of 2");
5381 free((yyvsp[0].str));
5383 #line 5384 "util/configparser.c"
5387 #line 2328 "util/configparser.y"
5389 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5390 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5391 yyerror("number expected");
5392 free((yyvsp[-1].str));
5393 free((yyvsp[0].str));
5395 if(!cfg_str2list_insert(&cfg_parser->cfg->
5396 ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
5397 fatal_exit("out of memory adding "
5398 "ratelimit-for-domain");
5401 #line 5402 "util/configparser.c"
5405 #line 2343 "util/configparser.y"
5407 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5408 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5409 yyerror("number expected");
5410 free((yyvsp[-1].str));
5411 free((yyvsp[0].str));
5413 if(!cfg_str2list_insert(&cfg_parser->cfg->
5414 ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
5415 fatal_exit("out of memory adding "
5416 "ratelimit-below-domain");
5419 #line 5420 "util/configparser.c"
5423 #line 2358 "util/configparser.y"
5425 OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
5426 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5427 yyerror("number expected");
5428 else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
5429 free((yyvsp[0].str));
5431 #line 5432 "util/configparser.c"
5435 #line 2367 "util/configparser.y"
5437 OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
5438 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5439 yyerror("number expected");
5440 else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
5441 free((yyvsp[0].str));
5443 #line 5444 "util/configparser.c"
5447 #line 2376 "util/configparser.y"
5449 OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
5450 free((yyvsp[0].str));
5452 #line 5453 "util/configparser.c"
5456 #line 2382 "util/configparser.y"
5458 OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
5459 if(atoi((yyvsp[0].str)) <= 0)
5460 yyerror("number expected");
5461 else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
5462 free((yyvsp[0].str));
5464 #line 5465 "util/configparser.c"
5468 #line 2391 "util/configparser.y"
5470 OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
5471 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5472 yyerror("number expected");
5473 else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
5474 free((yyvsp[0].str));
5476 #line 5477 "util/configparser.c"
5480 #line 2400 "util/configparser.y"
5482 OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
5483 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5484 yyerror("expected yes or no.");
5485 else cfg_parser->cfg->qname_minimisation =
5486 (strcmp((yyvsp[0].str), "yes")==0);
5487 free((yyvsp[0].str));
5489 #line 5490 "util/configparser.c"
5493 #line 2410 "util/configparser.y"
5495 OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
5496 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5497 yyerror("expected yes or no.");
5498 else cfg_parser->cfg->qname_minimisation_strict =
5499 (strcmp((yyvsp[0].str), "yes")==0);
5500 free((yyvsp[0].str));
5502 #line 5503 "util/configparser.c"
5506 #line 2420 "util/configparser.y"
5509 OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
5510 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5511 yyerror("expected yes or no.");
5512 else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
5514 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5516 free((yyvsp[0].str));
5518 #line 5519 "util/configparser.c"
5522 #line 2433 "util/configparser.y"
5525 OUTYY(("P(server_ipsecmod_ignore_bogus:%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->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
5530 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5532 free((yyvsp[0].str));
5534 #line 5535 "util/configparser.c"
5538 #line 2446 "util/configparser.y"
5541 OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
5542 free(cfg_parser->cfg->ipsecmod_hook);
5543 cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
5545 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5546 free((yyvsp[0].str));
5549 #line 5550 "util/configparser.c"
5553 #line 2458 "util/configparser.y"
5556 OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
5557 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5558 yyerror("number expected");
5559 else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
5560 free((yyvsp[0].str));
5562 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5563 free((yyvsp[0].str));
5566 #line 5567 "util/configparser.c"
5570 #line 2472 "util/configparser.y"
5573 OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
5574 if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
5575 yyerror("out of memory");
5577 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5578 free((yyvsp[0].str));
5581 #line 5582 "util/configparser.c"
5585 #line 2484 "util/configparser.y"
5588 OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
5589 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5590 yyerror("expected yes or no.");
5591 else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
5592 free((yyvsp[0].str));
5594 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5595 free((yyvsp[0].str));
5598 #line 5599 "util/configparser.c"
5602 #line 2498 "util/configparser.y"
5604 OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5605 if(!cfg_str2list_insert(
5606 &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
5607 fatal_exit("out of memory adding "
5608 "edns-client-string");
5610 #line 5611 "util/configparser.c"
5614 #line 2507 "util/configparser.y"
5616 OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
5617 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5618 yyerror("option code expected");
5619 else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
5620 yyerror("option code must be in interval [0, 65535]");
5621 else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
5622 free((yyvsp[0].str));
5625 #line 5626 "util/configparser.c"
5629 #line 2519 "util/configparser.y"
5631 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
5632 if(cfg_parser->cfg->stubs->name)
5633 yyerror("stub name override, there must be one name "
5634 "for one stub-zone");
5635 free(cfg_parser->cfg->stubs->name);
5636 cfg_parser->cfg->stubs->name = (yyvsp[0].str);
5638 #line 5639 "util/configparser.c"
5642 #line 2529 "util/configparser.y"
5644 OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
5645 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
5646 yyerror("out of memory");
5648 #line 5649 "util/configparser.c"
5652 #line 2536 "util/configparser.y"
5654 OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
5655 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
5656 yyerror("out of memory");
5658 #line 5659 "util/configparser.c"
5662 #line 2543 "util/configparser.y"
5664 OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
5665 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5666 yyerror("expected yes or no.");
5667 else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
5668 free((yyvsp[0].str));
5670 #line 5671 "util/configparser.c"
5674 #line 2552 "util/configparser.y"
5676 OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
5677 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5678 yyerror("expected yes or no.");
5679 else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
5680 free((yyvsp[0].str));
5682 #line 5683 "util/configparser.c"
5686 #line 2561 "util/configparser.y"
5688 OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
5689 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5690 yyerror("expected yes or no.");
5691 else cfg_parser->cfg->stubs->ssl_upstream =
5692 (strcmp((yyvsp[0].str), "yes")==0);
5693 free((yyvsp[0].str));
5695 #line 5696 "util/configparser.c"
5699 #line 2571 "util/configparser.y"
5701 OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
5702 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5703 yyerror("expected yes or no.");
5704 else cfg_parser->cfg->stubs->isprime =
5705 (strcmp((yyvsp[0].str), "yes")==0);
5706 free((yyvsp[0].str));
5708 #line 5709 "util/configparser.c"
5712 #line 2581 "util/configparser.y"
5714 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
5715 if(cfg_parser->cfg->forwards->name)
5716 yyerror("forward name override, there must be one "
5717 "name for one forward-zone");
5718 free(cfg_parser->cfg->forwards->name);
5719 cfg_parser->cfg->forwards->name = (yyvsp[0].str);
5721 #line 5722 "util/configparser.c"
5725 #line 2591 "util/configparser.y"
5727 OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
5728 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
5729 yyerror("out of memory");
5731 #line 5732 "util/configparser.c"
5735 #line 2598 "util/configparser.y"
5737 OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
5738 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
5739 yyerror("out of memory");
5741 #line 5742 "util/configparser.c"
5745 #line 2605 "util/configparser.y"
5747 OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
5748 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5749 yyerror("expected yes or no.");
5750 else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
5751 free((yyvsp[0].str));
5753 #line 5754 "util/configparser.c"
5757 #line 2614 "util/configparser.y"
5759 OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
5760 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5761 yyerror("expected yes or no.");
5762 else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
5763 free((yyvsp[0].str));
5765 #line 5766 "util/configparser.c"
5769 #line 2623 "util/configparser.y"
5771 OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
5772 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5773 yyerror("expected yes or no.");
5774 else cfg_parser->cfg->forwards->ssl_upstream =
5775 (strcmp((yyvsp[0].str), "yes")==0);
5776 free((yyvsp[0].str));
5778 #line 5779 "util/configparser.c"
5782 #line 2633 "util/configparser.y"
5784 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
5785 if(cfg_parser->cfg->auths->name)
5786 yyerror("auth name override, there must be one name "
5787 "for one auth-zone");
5788 free(cfg_parser->cfg->auths->name);
5789 cfg_parser->cfg->auths->name = (yyvsp[0].str);
5791 #line 5792 "util/configparser.c"
5795 #line 2643 "util/configparser.y"
5797 OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
5798 free(cfg_parser->cfg->auths->zonefile);
5799 cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
5801 #line 5802 "util/configparser.c"
5805 #line 2650 "util/configparser.y"
5807 OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
5808 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
5809 yyerror("out of memory");
5811 #line 5812 "util/configparser.c"
5815 #line 2657 "util/configparser.y"
5817 OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
5818 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
5819 yyerror("out of memory");
5821 #line 5822 "util/configparser.c"
5825 #line 2664 "util/configparser.y"
5827 OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
5828 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
5830 yyerror("out of memory");
5832 #line 5833 "util/configparser.c"
5836 #line 2672 "util/configparser.y"
5838 OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
5839 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5840 yyerror("expected yes or no.");
5841 else cfg_parser->cfg->auths->for_downstream =
5842 (strcmp((yyvsp[0].str), "yes")==0);
5843 free((yyvsp[0].str));
5845 #line 5846 "util/configparser.c"
5849 #line 2682 "util/configparser.y"
5851 OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
5852 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5853 yyerror("expected yes or no.");
5854 else cfg_parser->cfg->auths->for_upstream =
5855 (strcmp((yyvsp[0].str), "yes")==0);
5856 free((yyvsp[0].str));
5858 #line 5859 "util/configparser.c"
5862 #line 2692 "util/configparser.y"
5864 OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
5865 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5866 yyerror("expected yes or no.");
5867 else cfg_parser->cfg->auths->fallback_enabled =
5868 (strcmp((yyvsp[0].str), "yes")==0);
5869 free((yyvsp[0].str));
5871 #line 5872 "util/configparser.c"
5875 #line 2702 "util/configparser.y"
5877 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
5878 if(cfg_parser->cfg->views->name)
5879 yyerror("view name override, there must be one "
5880 "name for one view");
5881 free(cfg_parser->cfg->views->name);
5882 cfg_parser->cfg->views->name = (yyvsp[0].str);
5884 #line 5885 "util/configparser.c"
5888 #line 2712 "util/configparser.y"
5890 OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5891 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5892 strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5893 strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5894 && strcmp((yyvsp[0].str), "typetransparent")!=0
5895 && strcmp((yyvsp[0].str), "always_transparent")!=0
5896 && strcmp((yyvsp[0].str), "always_refuse")!=0
5897 && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5898 && strcmp((yyvsp[0].str), "noview")!=0
5899 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) {
5900 yyerror("local-zone type: expected static, deny, "
5901 "refuse, redirect, transparent, "
5902 "typetransparent, inform, inform_deny, "
5903 "always_transparent, always_refuse, "
5904 "always_nxdomain, noview or nodefault");
5905 free((yyvsp[-1].str));
5906 free((yyvsp[0].str));
5907 } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5908 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
5909 local_zones_nodefault, (yyvsp[-1].str)))
5910 fatal_exit("out of memory adding local-zone");
5911 free((yyvsp[0].str));
5913 } else if(strcmp((yyvsp[0].str), "ipset")==0) {
5914 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
5915 local_zones_ipset, (yyvsp[-1].str)))
5916 fatal_exit("out of memory adding local-zone");
5917 free((yyvsp[0].str));
5920 if(!cfg_str2list_insert(
5921 &cfg_parser->cfg->views->local_zones,
5922 (yyvsp[-1].str), (yyvsp[0].str)))
5923 fatal_exit("out of memory adding local-zone");
5926 #line 5927 "util/configparser.c"
5930 #line 2751 "util/configparser.y"
5932 OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5933 validate_respip_action((yyvsp[0].str));
5934 if(!cfg_str2list_insert(
5935 &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5936 fatal_exit("out of memory adding per-view "
5937 "response-ip action");
5939 #line 5940 "util/configparser.c"
5943 #line 2761 "util/configparser.y"
5945 OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
5946 if(!cfg_str2list_insert(
5947 &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
5948 fatal_exit("out of memory adding response-ip-data");
5950 #line 5951 "util/configparser.c"
5954 #line 2769 "util/configparser.y"
5956 OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
5957 if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
5958 fatal_exit("out of memory adding local-data");
5961 #line 5962 "util/configparser.c"
5965 #line 2777 "util/configparser.y"
5968 OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
5969 ptr = cfg_ptr_reverse((yyvsp[0].str));
5970 free((yyvsp[0].str));
5972 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
5974 fatal_exit("out of memory adding local-data");
5976 yyerror("local-data-ptr could not be reversed");
5979 #line 5980 "util/configparser.c"
5983 #line 2792 "util/configparser.y"
5985 OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
5986 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5987 yyerror("expected yes or no.");
5988 else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
5989 free((yyvsp[0].str));
5991 #line 5992 "util/configparser.c"
5995 #line 2801 "util/configparser.y"
5997 OUTYY(("\nP(remote-control:)\n"));
5999 #line 6000 "util/configparser.c"
6003 #line 2812 "util/configparser.y"
6005 OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
6006 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6007 yyerror("expected yes or no.");
6008 else cfg_parser->cfg->remote_control_enable =
6009 (strcmp((yyvsp[0].str), "yes")==0);
6010 free((yyvsp[0].str));
6012 #line 6013 "util/configparser.c"
6016 #line 2822 "util/configparser.y"
6018 OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
6019 if(atoi((yyvsp[0].str)) == 0)
6020 yyerror("control port number expected");
6021 else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
6022 free((yyvsp[0].str));
6024 #line 6025 "util/configparser.c"
6028 #line 2831 "util/configparser.y"
6030 OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
6031 if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
6032 yyerror("out of memory");
6034 #line 6035 "util/configparser.c"
6038 #line 2838 "util/configparser.y"
6040 OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
6041 cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
6042 free((yyvsp[0].str));
6044 #line 6045 "util/configparser.c"
6048 #line 2845 "util/configparser.y"
6050 OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
6051 free(cfg_parser->cfg->server_key_file);
6052 cfg_parser->cfg->server_key_file = (yyvsp[0].str);
6054 #line 6055 "util/configparser.c"
6058 #line 2852 "util/configparser.y"
6060 OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
6061 free(cfg_parser->cfg->server_cert_file);
6062 cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
6064 #line 6065 "util/configparser.c"
6068 #line 2859 "util/configparser.y"
6070 OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
6071 free(cfg_parser->cfg->control_key_file);
6072 cfg_parser->cfg->control_key_file = (yyvsp[0].str);
6074 #line 6075 "util/configparser.c"
6078 #line 2866 "util/configparser.y"
6080 OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
6081 free(cfg_parser->cfg->control_cert_file);
6082 cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
6084 #line 6085 "util/configparser.c"
6088 #line 2873 "util/configparser.y"
6090 OUTYY(("\nP(dnstap:)\n"));
6092 #line 6093 "util/configparser.c"
6096 #line 2893 "util/configparser.y"
6098 OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
6099 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6100 yyerror("expected yes or no.");
6101 else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
6102 free((yyvsp[0].str));
6104 #line 6105 "util/configparser.c"
6108 #line 2902 "util/configparser.y"
6110 OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
6111 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6112 yyerror("expected yes or no.");
6113 else cfg_parser->cfg->dnstap_bidirectional =
6114 (strcmp((yyvsp[0].str), "yes")==0);
6115 free((yyvsp[0].str));
6117 #line 6118 "util/configparser.c"
6121 #line 2912 "util/configparser.y"
6123 OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
6124 free(cfg_parser->cfg->dnstap_socket_path);
6125 cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
6127 #line 6128 "util/configparser.c"
6131 #line 2919 "util/configparser.y"
6133 OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
6134 free(cfg_parser->cfg->dnstap_ip);
6135 cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
6137 #line 6138 "util/configparser.c"
6141 #line 2926 "util/configparser.y"
6143 OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
6144 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6145 yyerror("expected yes or no.");
6146 else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
6147 free((yyvsp[0].str));
6149 #line 6150 "util/configparser.c"
6153 #line 2935 "util/configparser.y"
6155 OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
6156 free(cfg_parser->cfg->dnstap_tls_server_name);
6157 cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
6159 #line 6160 "util/configparser.c"
6163 #line 2942 "util/configparser.y"
6165 OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
6166 free(cfg_parser->cfg->dnstap_tls_cert_bundle);
6167 cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
6169 #line 6170 "util/configparser.c"
6173 #line 2949 "util/configparser.y"
6175 OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
6176 free(cfg_parser->cfg->dnstap_tls_client_key_file);
6177 cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
6179 #line 6180 "util/configparser.c"
6183 #line 2956 "util/configparser.y"
6185 OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
6186 free(cfg_parser->cfg->dnstap_tls_client_cert_file);
6187 cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
6189 #line 6190 "util/configparser.c"
6193 #line 2963 "util/configparser.y"
6195 OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
6196 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6197 yyerror("expected yes or no.");
6198 else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
6199 free((yyvsp[0].str));
6201 #line 6202 "util/configparser.c"
6205 #line 2972 "util/configparser.y"
6207 OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
6208 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6209 yyerror("expected yes or no.");
6210 else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
6211 free((yyvsp[0].str));
6213 #line 6214 "util/configparser.c"
6217 #line 2981 "util/configparser.y"
6219 OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
6220 free(cfg_parser->cfg->dnstap_identity);
6221 cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
6223 #line 6224 "util/configparser.c"
6227 #line 2988 "util/configparser.y"
6229 OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
6230 free(cfg_parser->cfg->dnstap_version);
6231 cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
6233 #line 6234 "util/configparser.c"
6237 #line 2995 "util/configparser.y"
6239 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
6240 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6241 yyerror("expected yes or no.");
6242 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
6243 (strcmp((yyvsp[0].str), "yes")==0);
6244 free((yyvsp[0].str));
6246 #line 6247 "util/configparser.c"
6250 #line 3005 "util/configparser.y"
6252 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
6253 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6254 yyerror("expected yes or no.");
6255 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
6256 (strcmp((yyvsp[0].str), "yes")==0);
6257 free((yyvsp[0].str));
6259 #line 6260 "util/configparser.c"
6263 #line 3015 "util/configparser.y"
6265 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
6266 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6267 yyerror("expected yes or no.");
6268 else cfg_parser->cfg->dnstap_log_client_query_messages =
6269 (strcmp((yyvsp[0].str), "yes")==0);
6270 free((yyvsp[0].str));
6272 #line 6273 "util/configparser.c"
6276 #line 3025 "util/configparser.y"
6278 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
6279 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6280 yyerror("expected yes or no.");
6281 else cfg_parser->cfg->dnstap_log_client_response_messages =
6282 (strcmp((yyvsp[0].str), "yes")==0);
6283 free((yyvsp[0].str));
6285 #line 6286 "util/configparser.c"
6289 #line 3035 "util/configparser.y"
6291 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
6292 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6293 yyerror("expected yes or no.");
6294 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
6295 (strcmp((yyvsp[0].str), "yes")==0);
6296 free((yyvsp[0].str));
6298 #line 6299 "util/configparser.c"
6302 #line 3045 "util/configparser.y"
6304 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
6305 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6306 yyerror("expected yes or no.");
6307 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
6308 (strcmp((yyvsp[0].str), "yes")==0);
6309 free((yyvsp[0].str));
6311 #line 6312 "util/configparser.c"
6315 #line 3055 "util/configparser.y"
6317 OUTYY(("\nP(python:)\n"));
6319 #line 6320 "util/configparser.c"
6323 #line 3064 "util/configparser.y"
6325 OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
6326 if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
6327 yyerror("out of memory");
6329 #line 6330 "util/configparser.c"
6333 #line 3070 "util/configparser.y"
6335 OUTYY(("\nP(dynlib:)\n"));
6337 #line 6338 "util/configparser.c"
6341 #line 3079 "util/configparser.y"
6343 OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
6344 if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
6345 yyerror("out of memory");
6347 #line 6348 "util/configparser.c"
6351 #line 3085 "util/configparser.y"
6353 OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
6354 if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6355 yyerror("expected yes or no.");
6356 else cfg_parser->cfg->disable_dnssec_lame_check =
6357 (strcmp((yyvsp[0].str), "yes")==0);
6358 free((yyvsp[0].str));
6360 #line 6361 "util/configparser.c"
6364 #line 3095 "util/configparser.y"
6366 OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
6367 free(cfg_parser->cfg->log_identity);
6368 cfg_parser->cfg->log_identity = (yyvsp[0].str);
6370 #line 6371 "util/configparser.c"
6374 #line 3102 "util/configparser.y"
6376 OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6377 validate_respip_action((yyvsp[0].str));
6378 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
6379 (yyvsp[-1].str), (yyvsp[0].str)))
6380 fatal_exit("out of memory adding response-ip");
6382 #line 6383 "util/configparser.c"
6386 #line 3111 "util/configparser.y"
6388 OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
6389 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
6390 (yyvsp[-1].str), (yyvsp[0].str)))
6391 fatal_exit("out of memory adding response-ip-data");
6393 #line 6394 "util/configparser.c"
6397 #line 3119 "util/configparser.y"
6399 OUTYY(("\nP(dnscrypt:)\n"));
6401 #line 6402 "util/configparser.c"
6405 #line 3135 "util/configparser.y"
6407 OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
6408 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6409 yyerror("expected yes or no.");
6410 else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
6411 free((yyvsp[0].str));
6413 #line 6414 "util/configparser.c"
6417 #line 3145 "util/configparser.y"
6419 OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
6420 if(atoi((yyvsp[0].str)) == 0)
6421 yyerror("port number expected");
6422 else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
6423 free((yyvsp[0].str));
6425 #line 6426 "util/configparser.c"
6429 #line 3154 "util/configparser.y"
6431 OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
6432 free(cfg_parser->cfg->dnscrypt_provider);
6433 cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
6435 #line 6436 "util/configparser.c"
6439 #line 3161 "util/configparser.y"
6441 OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
6442 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
6443 log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
6444 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
6445 fatal_exit("out of memory adding dnscrypt-provider-cert");
6447 #line 6448 "util/configparser.c"
6451 #line 3170 "util/configparser.y"
6453 OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
6454 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
6455 fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
6457 #line 6458 "util/configparser.c"
6461 #line 3177 "util/configparser.y"
6463 OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
6464 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
6465 log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
6466 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
6467 fatal_exit("out of memory adding dnscrypt-secret-key");
6469 #line 6470 "util/configparser.c"
6473 #line 3186 "util/configparser.y"
6475 OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
6476 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
6477 yyerror("memory size expected");
6478 free((yyvsp[0].str));
6480 #line 6481 "util/configparser.c"
6484 #line 3194 "util/configparser.y"
6486 OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
6487 if(atoi((yyvsp[0].str)) == 0)
6488 yyerror("number expected");
6490 cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
6491 if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
6492 yyerror("must be a power of 2");
6494 free((yyvsp[0].str));
6496 #line 6497 "util/configparser.c"
6500 #line 3207 "util/configparser.y"
6502 OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
6503 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
6504 yyerror("memory size expected");
6505 free((yyvsp[0].str));
6507 #line 6508 "util/configparser.c"
6511 #line 3215 "util/configparser.y"
6513 OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
6514 if(atoi((yyvsp[0].str)) == 0)
6515 yyerror("number expected");
6517 cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
6518 if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
6519 yyerror("must be a power of 2");
6521 free((yyvsp[0].str));
6523 #line 6524 "util/configparser.c"
6527 #line 3228 "util/configparser.y"
6529 OUTYY(("\nP(cachedb:)\n"));
6531 #line 6532 "util/configparser.c"
6535 #line 3239 "util/configparser.y"
6538 OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
6539 free(cfg_parser->cfg->cachedb_backend);
6540 cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
6542 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
6543 free((yyvsp[0].str));
6546 #line 6547 "util/configparser.c"
6550 #line 3251 "util/configparser.y"
6553 OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
6554 free(cfg_parser->cfg->cachedb_secret);
6555 cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
6557 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
6558 free((yyvsp[0].str));
6561 #line 6562 "util/configparser.c"
6565 #line 3263 "util/configparser.y"
6567 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6568 OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
6569 free(cfg_parser->cfg->redis_server_host);
6570 cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
6572 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6573 free((yyvsp[0].str));
6576 #line 6577 "util/configparser.c"
6580 #line 3275 "util/configparser.y"
6582 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6584 OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
6585 port = atoi((yyvsp[0].str));
6586 if(port == 0 || port < 0 || port > 65535)
6587 yyerror("valid redis server port number expected");
6588 else cfg_parser->cfg->redis_server_port = port;
6590 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6592 free((yyvsp[0].str));
6594 #line 6595 "util/configparser.c"
6598 #line 3290 "util/configparser.y"
6600 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6601 OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
6602 if(atoi((yyvsp[0].str)) == 0)
6603 yyerror("redis timeout value expected");
6604 else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
6606 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6608 free((yyvsp[0].str));
6610 #line 6611 "util/configparser.c"
6614 #line 3303 "util/configparser.y"
6616 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6617 OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
6618 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6619 yyerror("expected yes or no.");
6620 else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
6622 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6624 free((yyvsp[0].str));
6626 #line 6627 "util/configparser.c"
6630 #line 3316 "util/configparser.y"
6632 OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6633 if (atoi((yyvsp[0].str)) < 0)
6634 yyerror("positive number expected");
6636 if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
6637 fatal_exit("out of memory adding tcp connection limit");
6640 #line 6641 "util/configparser.c"
6644 #line 3327 "util/configparser.y"
6646 OUTYY(("\nP(ipset:)\n"));
6648 #line 6649 "util/configparser.c"
6652 #line 3336 "util/configparser.y"
6655 OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
6656 if(cfg_parser->cfg->ipset_name_v4)
6657 yyerror("ipset name v4 override, there must be one "
6659 free(cfg_parser->cfg->ipset_name_v4);
6660 cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
6662 OUTYY(("P(Compiled without ipset, ignoring)\n"));
6663 free((yyvsp[0].str));
6666 #line 6667 "util/configparser.c"
6670 #line 3351 "util/configparser.y"
6673 OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
6674 if(cfg_parser->cfg->ipset_name_v6)
6675 yyerror("ipset name v6 override, there must be one "
6677 free(cfg_parser->cfg->ipset_name_v6);
6678 cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
6680 OUTYY(("P(Compiled without ipset, ignoring)\n"));
6681 free((yyvsp[0].str));
6684 #line 6685 "util/configparser.c"
6688 #line 6689 "util/configparser.c"
6692 /* User semantic actions sometimes alter yychar, and that requires
6693 that yytoken be updated with the new translation. We take the
6694 approach of translating immediately before every use of yytoken.
6695 One alternative is translating here after every semantic action,
6696 but that translation would be missed if the semantic action invokes
6697 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6698 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6699 incorrect destructor might then be invoked immediately. In the
6700 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6701 to an incorrect destructor call or verbose syntax error message
6702 before the lookahead is translated. */
6703 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6707 YY_STACK_PRINT (yyss, yyssp);
6711 /* Now 'shift' the result of the reduction. Determine what state
6712 that goes to, based on the state we popped back to and the rule
6713 number reduced by. */
6715 const int yylhs = yyr1[yyn] - YYNTOKENS;
6716 const int yyi = yypgoto[yylhs] + *yyssp;
6717 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
6719 : yydefgoto[yylhs]);
6725 /*--------------------------------------.
6726 | yyerrlab -- here on detecting error. |
6727 `--------------------------------------*/
6729 /* Make sure we have latest lookahead translation. See comments at
6730 user semantic actions for why this is necessary. */
6731 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6733 /* If not already recovering from an error, report this error. */
6737 #if ! YYERROR_VERBOSE
6738 yyerror (YY_("syntax error"));
6740 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6743 char const *yymsgp = YY_("syntax error");
6744 int yysyntax_error_status;
6745 yysyntax_error_status = YYSYNTAX_ERROR;
6746 if (yysyntax_error_status == 0)
6748 else if (yysyntax_error_status == 1)
6750 if (yymsg != yymsgbuf)
6751 YYSTACK_FREE (yymsg);
6752 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6756 yymsg_alloc = sizeof yymsgbuf;
6757 yysyntax_error_status = 2;
6761 yysyntax_error_status = YYSYNTAX_ERROR;
6766 if (yysyntax_error_status == 2)
6767 goto yyexhaustedlab;
6769 # undef YYSYNTAX_ERROR
6775 if (yyerrstatus == 3)
6777 /* If just tried and failed to reuse lookahead token after an
6778 error, discard it. */
6780 if (yychar <= YYEOF)
6782 /* Return failure if at end of input. */
6783 if (yychar == YYEOF)
6788 yydestruct ("Error: discarding",
6794 /* Else will try to reuse lookahead token after shifting the error
6799 /*---------------------------------------------------.
6800 | yyerrorlab -- error raised explicitly by YYERROR. |
6801 `---------------------------------------------------*/
6803 /* Pacify compilers when the user code never invokes YYERROR and the
6804 label yyerrorlab therefore never appears in user code. */
6808 /* Do not reclaim the symbols of the rule whose action triggered
6812 YY_STACK_PRINT (yyss, yyssp);
6817 /*-------------------------------------------------------------.
6818 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6819 `-------------------------------------------------------------*/
6821 yyerrstatus = 3; /* Each real token shifted decrements this. */
6825 yyn = yypact[yystate];
6826 if (!yypact_value_is_default (yyn))
6829 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6837 /* Pop the current state because it cannot handle the error token. */
6842 yydestruct ("Error: popping",
6843 yystos[yystate], yyvsp);
6846 YY_STACK_PRINT (yyss, yyssp);
6849 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6851 YY_IGNORE_MAYBE_UNINITIALIZED_END
6854 /* Shift the error token. */
6855 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6861 /*-------------------------------------.
6862 | yyacceptlab -- YYACCEPT comes here. |
6863 `-------------------------------------*/
6869 /*-----------------------------------.
6870 | yyabortlab -- YYABORT comes here. |
6871 `-----------------------------------*/
6877 #if !defined yyoverflow || YYERROR_VERBOSE
6878 /*-------------------------------------------------.
6879 | yyexhaustedlab -- memory exhaustion comes here. |
6880 `-------------------------------------------------*/
6882 yyerror (YY_("memory exhausted"));
6888 /*-----------------------------------------------------.
6889 | yyreturn -- parsing is finished, return the result. |
6890 `-----------------------------------------------------*/
6892 if (yychar != YYEMPTY)
6894 /* Make sure we have latest lookahead translation. See comments at
6895 user semantic actions for why this is necessary. */
6896 yytoken = YYTRANSLATE (yychar);
6897 yydestruct ("Cleanup: discarding lookahead",
6900 /* Do not reclaim the symbols of the rule whose action triggered
6901 this YYABORT or YYACCEPT. */
6903 YY_STACK_PRINT (yyss, yyssp);
6904 while (yyssp != yyss)
6906 yydestruct ("Cleanup: popping",
6907 yystos[*yyssp], yyvsp);
6912 YYSTACK_FREE (yyss);
6915 if (yymsg != yymsgbuf)
6916 YYSTACK_FREE (yymsg);
6920 #line 3365 "util/configparser.y"
6923 /* parse helper routines could be here */
6925 validate_respip_action(const char* action)
6927 if(strcmp(action, "deny")!=0 &&
6928 strcmp(action, "redirect")!=0 &&
6929 strcmp(action, "inform")!=0 &&
6930 strcmp(action, "inform_deny")!=0 &&
6931 strcmp(action, "always_transparent")!=0 &&
6932 strcmp(action, "always_refuse")!=0 &&
6933 strcmp(action, "always_nxdomain")!=0)
6935 yyerror("response-ip action: expected deny, redirect, "
6936 "inform, inform_deny, always_transparent, "
6937 "always_refuse or always_nxdomain");