]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - util/configparser.c
import unbound 1.5.8
[FreeBSD/FreeBSD.git] / util / configparser.c
1 /* A Bison parser, made by GNU Bison 3.0.4.  */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34    simplifying the original so-called "semantic" parser.  */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37    infringing on user name space.  This should be done even for local
38    variables, as they might otherwise be expanded by user macros.
39    There are some unavoidable exceptions within include files to
40    define necessary library symbols; they are noted "INFRINGES ON
41    USER NAME SPACE" below.  */
42
43 /* Identify Bison output.  */
44 #define YYBISON 1
45
46 /* Bison version.  */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name.  */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers.  */
53 #define YYPURE 0
54
55 /* Push parsers.  */
56 #define YYPUSH 0
57
58 /* Pull parsers.  */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations.  */
65 #line 38 "util/configparser.y" /* yacc.c:339  */
66
67 #include "config.h"
68
69 #include <stdarg.h>
70 #include <stdio.h>
71 #include <string.h>
72 #include <stdlib.h>
73 #include <assert.h>
74
75 #include "util/configyyrename.h"
76 #include "util/config_file.h"
77 #include "util/net_help.h"
78
79 int ub_c_lex(void);
80 void ub_c_error(const char *message);
81
82 /* these need to be global, otherwise they cannot be used inside yacc */
83 extern struct config_parser_state* cfg_parser;
84
85 #if 0
86 #define OUTYY(s)  printf s /* used ONLY when debugging */
87 #else
88 #define OUTYY(s)
89 #endif
90
91
92 #line 93 "util/configparser.c" /* yacc.c:339  */
93
94 # ifndef YY_NULLPTR
95 #  if defined __cplusplus && 201103L <= __cplusplus
96 #   define YY_NULLPTR nullptr
97 #  else
98 #   define YY_NULLPTR 0
99 #  endif
100 # endif
101
102 /* Enabling verbose error messages.  */
103 #ifdef YYERROR_VERBOSE
104 # undef YYERROR_VERBOSE
105 # define YYERROR_VERBOSE 1
106 #else
107 # define YYERROR_VERBOSE 0
108 #endif
109
110 /* In a future release of Bison, this section will be replaced
111    by #include "configparser.h".  */
112 #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
113 # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
114 /* Debug traces.  */
115 #ifndef YYDEBUG
116 # define YYDEBUG 0
117 #endif
118 #if YYDEBUG
119 extern int yydebug;
120 #endif
121
122 /* Token type.  */
123 #ifndef YYTOKENTYPE
124 # define YYTOKENTYPE
125   enum yytokentype
126   {
127     SPACE = 258,
128     LETTER = 259,
129     NEWLINE = 260,
130     COMMENT = 261,
131     COLON = 262,
132     ANY = 263,
133     ZONESTR = 264,
134     STRING_ARG = 265,
135     VAR_SERVER = 266,
136     VAR_VERBOSITY = 267,
137     VAR_NUM_THREADS = 268,
138     VAR_PORT = 269,
139     VAR_OUTGOING_RANGE = 270,
140     VAR_INTERFACE = 271,
141     VAR_DO_IP4 = 272,
142     VAR_DO_IP6 = 273,
143     VAR_DO_UDP = 274,
144     VAR_DO_TCP = 275,
145     VAR_TCP_MSS = 276,
146     VAR_OUTGOING_TCP_MSS = 277,
147     VAR_CHROOT = 278,
148     VAR_USERNAME = 279,
149     VAR_DIRECTORY = 280,
150     VAR_LOGFILE = 281,
151     VAR_PIDFILE = 282,
152     VAR_MSG_CACHE_SIZE = 283,
153     VAR_MSG_CACHE_SLABS = 284,
154     VAR_NUM_QUERIES_PER_THREAD = 285,
155     VAR_RRSET_CACHE_SIZE = 286,
156     VAR_RRSET_CACHE_SLABS = 287,
157     VAR_OUTGOING_NUM_TCP = 288,
158     VAR_INFRA_HOST_TTL = 289,
159     VAR_INFRA_LAME_TTL = 290,
160     VAR_INFRA_CACHE_SLABS = 291,
161     VAR_INFRA_CACHE_NUMHOSTS = 292,
162     VAR_INFRA_CACHE_LAME_SIZE = 293,
163     VAR_NAME = 294,
164     VAR_STUB_ZONE = 295,
165     VAR_STUB_HOST = 296,
166     VAR_STUB_ADDR = 297,
167     VAR_TARGET_FETCH_POLICY = 298,
168     VAR_HARDEN_SHORT_BUFSIZE = 299,
169     VAR_HARDEN_LARGE_QUERIES = 300,
170     VAR_FORWARD_ZONE = 301,
171     VAR_FORWARD_HOST = 302,
172     VAR_FORWARD_ADDR = 303,
173     VAR_DO_NOT_QUERY_ADDRESS = 304,
174     VAR_HIDE_IDENTITY = 305,
175     VAR_HIDE_VERSION = 306,
176     VAR_IDENTITY = 307,
177     VAR_VERSION = 308,
178     VAR_HARDEN_GLUE = 309,
179     VAR_MODULE_CONF = 310,
180     VAR_TRUST_ANCHOR_FILE = 311,
181     VAR_TRUST_ANCHOR = 312,
182     VAR_VAL_OVERRIDE_DATE = 313,
183     VAR_BOGUS_TTL = 314,
184     VAR_VAL_CLEAN_ADDITIONAL = 315,
185     VAR_VAL_PERMISSIVE_MODE = 316,
186     VAR_INCOMING_NUM_TCP = 317,
187     VAR_MSG_BUFFER_SIZE = 318,
188     VAR_KEY_CACHE_SIZE = 319,
189     VAR_KEY_CACHE_SLABS = 320,
190     VAR_TRUSTED_KEYS_FILE = 321,
191     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 322,
192     VAR_USE_SYSLOG = 323,
193     VAR_OUTGOING_INTERFACE = 324,
194     VAR_ROOT_HINTS = 325,
195     VAR_DO_NOT_QUERY_LOCALHOST = 326,
196     VAR_CACHE_MAX_TTL = 327,
197     VAR_HARDEN_DNSSEC_STRIPPED = 328,
198     VAR_ACCESS_CONTROL = 329,
199     VAR_LOCAL_ZONE = 330,
200     VAR_LOCAL_DATA = 331,
201     VAR_INTERFACE_AUTOMATIC = 332,
202     VAR_STATISTICS_INTERVAL = 333,
203     VAR_DO_DAEMONIZE = 334,
204     VAR_USE_CAPS_FOR_ID = 335,
205     VAR_STATISTICS_CUMULATIVE = 336,
206     VAR_OUTGOING_PORT_PERMIT = 337,
207     VAR_OUTGOING_PORT_AVOID = 338,
208     VAR_DLV_ANCHOR_FILE = 339,
209     VAR_DLV_ANCHOR = 340,
210     VAR_NEG_CACHE_SIZE = 341,
211     VAR_HARDEN_REFERRAL_PATH = 342,
212     VAR_PRIVATE_ADDRESS = 343,
213     VAR_PRIVATE_DOMAIN = 344,
214     VAR_REMOTE_CONTROL = 345,
215     VAR_CONTROL_ENABLE = 346,
216     VAR_CONTROL_INTERFACE = 347,
217     VAR_CONTROL_PORT = 348,
218     VAR_SERVER_KEY_FILE = 349,
219     VAR_SERVER_CERT_FILE = 350,
220     VAR_CONTROL_KEY_FILE = 351,
221     VAR_CONTROL_CERT_FILE = 352,
222     VAR_CONTROL_USE_CERT = 353,
223     VAR_EXTENDED_STATISTICS = 354,
224     VAR_LOCAL_DATA_PTR = 355,
225     VAR_JOSTLE_TIMEOUT = 356,
226     VAR_STUB_PRIME = 357,
227     VAR_UNWANTED_REPLY_THRESHOLD = 358,
228     VAR_LOG_TIME_ASCII = 359,
229     VAR_DOMAIN_INSECURE = 360,
230     VAR_PYTHON = 361,
231     VAR_PYTHON_SCRIPT = 362,
232     VAR_VAL_SIG_SKEW_MIN = 363,
233     VAR_VAL_SIG_SKEW_MAX = 364,
234     VAR_CACHE_MIN_TTL = 365,
235     VAR_VAL_LOG_LEVEL = 366,
236     VAR_AUTO_TRUST_ANCHOR_FILE = 367,
237     VAR_KEEP_MISSING = 368,
238     VAR_ADD_HOLDDOWN = 369,
239     VAR_DEL_HOLDDOWN = 370,
240     VAR_SO_RCVBUF = 371,
241     VAR_EDNS_BUFFER_SIZE = 372,
242     VAR_PREFETCH = 373,
243     VAR_PREFETCH_KEY = 374,
244     VAR_SO_SNDBUF = 375,
245     VAR_SO_REUSEPORT = 376,
246     VAR_HARDEN_BELOW_NXDOMAIN = 377,
247     VAR_IGNORE_CD_FLAG = 378,
248     VAR_LOG_QUERIES = 379,
249     VAR_TCP_UPSTREAM = 380,
250     VAR_SSL_UPSTREAM = 381,
251     VAR_SSL_SERVICE_KEY = 382,
252     VAR_SSL_SERVICE_PEM = 383,
253     VAR_SSL_PORT = 384,
254     VAR_FORWARD_FIRST = 385,
255     VAR_STUB_FIRST = 386,
256     VAR_MINIMAL_RESPONSES = 387,
257     VAR_RRSET_ROUNDROBIN = 388,
258     VAR_MAX_UDP_SIZE = 389,
259     VAR_DELAY_CLOSE = 390,
260     VAR_UNBLOCK_LAN_ZONES = 391,
261     VAR_INSECURE_LAN_ZONES = 392,
262     VAR_INFRA_CACHE_MIN_RTT = 393,
263     VAR_DNS64_PREFIX = 394,
264     VAR_DNS64_SYNTHALL = 395,
265     VAR_DNSTAP = 396,
266     VAR_DNSTAP_ENABLE = 397,
267     VAR_DNSTAP_SOCKET_PATH = 398,
268     VAR_DNSTAP_SEND_IDENTITY = 399,
269     VAR_DNSTAP_SEND_VERSION = 400,
270     VAR_DNSTAP_IDENTITY = 401,
271     VAR_DNSTAP_VERSION = 402,
272     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 403,
273     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 404,
274     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 405,
275     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 406,
276     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 407,
277     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 408,
278     VAR_HARDEN_ALGO_DOWNGRADE = 409,
279     VAR_IP_TRANSPARENT = 410,
280     VAR_RATELIMIT = 411,
281     VAR_RATELIMIT_SLABS = 412,
282     VAR_RATELIMIT_SIZE = 413,
283     VAR_RATELIMIT_FOR_DOMAIN = 414,
284     VAR_RATELIMIT_BELOW_DOMAIN = 415,
285     VAR_RATELIMIT_FACTOR = 416,
286     VAR_CAPS_WHITELIST = 417,
287     VAR_CACHE_MAX_NEGATIVE_TTL = 418,
288     VAR_PERMIT_SMALL_HOLDDOWN = 419,
289     VAR_QNAME_MINIMISATION = 420
290   };
291 #endif
292 /* Tokens.  */
293 #define SPACE 258
294 #define LETTER 259
295 #define NEWLINE 260
296 #define COMMENT 261
297 #define COLON 262
298 #define ANY 263
299 #define ZONESTR 264
300 #define STRING_ARG 265
301 #define VAR_SERVER 266
302 #define VAR_VERBOSITY 267
303 #define VAR_NUM_THREADS 268
304 #define VAR_PORT 269
305 #define VAR_OUTGOING_RANGE 270
306 #define VAR_INTERFACE 271
307 #define VAR_DO_IP4 272
308 #define VAR_DO_IP6 273
309 #define VAR_DO_UDP 274
310 #define VAR_DO_TCP 275
311 #define VAR_TCP_MSS 276
312 #define VAR_OUTGOING_TCP_MSS 277
313 #define VAR_CHROOT 278
314 #define VAR_USERNAME 279
315 #define VAR_DIRECTORY 280
316 #define VAR_LOGFILE 281
317 #define VAR_PIDFILE 282
318 #define VAR_MSG_CACHE_SIZE 283
319 #define VAR_MSG_CACHE_SLABS 284
320 #define VAR_NUM_QUERIES_PER_THREAD 285
321 #define VAR_RRSET_CACHE_SIZE 286
322 #define VAR_RRSET_CACHE_SLABS 287
323 #define VAR_OUTGOING_NUM_TCP 288
324 #define VAR_INFRA_HOST_TTL 289
325 #define VAR_INFRA_LAME_TTL 290
326 #define VAR_INFRA_CACHE_SLABS 291
327 #define VAR_INFRA_CACHE_NUMHOSTS 292
328 #define VAR_INFRA_CACHE_LAME_SIZE 293
329 #define VAR_NAME 294
330 #define VAR_STUB_ZONE 295
331 #define VAR_STUB_HOST 296
332 #define VAR_STUB_ADDR 297
333 #define VAR_TARGET_FETCH_POLICY 298
334 #define VAR_HARDEN_SHORT_BUFSIZE 299
335 #define VAR_HARDEN_LARGE_QUERIES 300
336 #define VAR_FORWARD_ZONE 301
337 #define VAR_FORWARD_HOST 302
338 #define VAR_FORWARD_ADDR 303
339 #define VAR_DO_NOT_QUERY_ADDRESS 304
340 #define VAR_HIDE_IDENTITY 305
341 #define VAR_HIDE_VERSION 306
342 #define VAR_IDENTITY 307
343 #define VAR_VERSION 308
344 #define VAR_HARDEN_GLUE 309
345 #define VAR_MODULE_CONF 310
346 #define VAR_TRUST_ANCHOR_FILE 311
347 #define VAR_TRUST_ANCHOR 312
348 #define VAR_VAL_OVERRIDE_DATE 313
349 #define VAR_BOGUS_TTL 314
350 #define VAR_VAL_CLEAN_ADDITIONAL 315
351 #define VAR_VAL_PERMISSIVE_MODE 316
352 #define VAR_INCOMING_NUM_TCP 317
353 #define VAR_MSG_BUFFER_SIZE 318
354 #define VAR_KEY_CACHE_SIZE 319
355 #define VAR_KEY_CACHE_SLABS 320
356 #define VAR_TRUSTED_KEYS_FILE 321
357 #define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 322
358 #define VAR_USE_SYSLOG 323
359 #define VAR_OUTGOING_INTERFACE 324
360 #define VAR_ROOT_HINTS 325
361 #define VAR_DO_NOT_QUERY_LOCALHOST 326
362 #define VAR_CACHE_MAX_TTL 327
363 #define VAR_HARDEN_DNSSEC_STRIPPED 328
364 #define VAR_ACCESS_CONTROL 329
365 #define VAR_LOCAL_ZONE 330
366 #define VAR_LOCAL_DATA 331
367 #define VAR_INTERFACE_AUTOMATIC 332
368 #define VAR_STATISTICS_INTERVAL 333
369 #define VAR_DO_DAEMONIZE 334
370 #define VAR_USE_CAPS_FOR_ID 335
371 #define VAR_STATISTICS_CUMULATIVE 336
372 #define VAR_OUTGOING_PORT_PERMIT 337
373 #define VAR_OUTGOING_PORT_AVOID 338
374 #define VAR_DLV_ANCHOR_FILE 339
375 #define VAR_DLV_ANCHOR 340
376 #define VAR_NEG_CACHE_SIZE 341
377 #define VAR_HARDEN_REFERRAL_PATH 342
378 #define VAR_PRIVATE_ADDRESS 343
379 #define VAR_PRIVATE_DOMAIN 344
380 #define VAR_REMOTE_CONTROL 345
381 #define VAR_CONTROL_ENABLE 346
382 #define VAR_CONTROL_INTERFACE 347
383 #define VAR_CONTROL_PORT 348
384 #define VAR_SERVER_KEY_FILE 349
385 #define VAR_SERVER_CERT_FILE 350
386 #define VAR_CONTROL_KEY_FILE 351
387 #define VAR_CONTROL_CERT_FILE 352
388 #define VAR_CONTROL_USE_CERT 353
389 #define VAR_EXTENDED_STATISTICS 354
390 #define VAR_LOCAL_DATA_PTR 355
391 #define VAR_JOSTLE_TIMEOUT 356
392 #define VAR_STUB_PRIME 357
393 #define VAR_UNWANTED_REPLY_THRESHOLD 358
394 #define VAR_LOG_TIME_ASCII 359
395 #define VAR_DOMAIN_INSECURE 360
396 #define VAR_PYTHON 361
397 #define VAR_PYTHON_SCRIPT 362
398 #define VAR_VAL_SIG_SKEW_MIN 363
399 #define VAR_VAL_SIG_SKEW_MAX 364
400 #define VAR_CACHE_MIN_TTL 365
401 #define VAR_VAL_LOG_LEVEL 366
402 #define VAR_AUTO_TRUST_ANCHOR_FILE 367
403 #define VAR_KEEP_MISSING 368
404 #define VAR_ADD_HOLDDOWN 369
405 #define VAR_DEL_HOLDDOWN 370
406 #define VAR_SO_RCVBUF 371
407 #define VAR_EDNS_BUFFER_SIZE 372
408 #define VAR_PREFETCH 373
409 #define VAR_PREFETCH_KEY 374
410 #define VAR_SO_SNDBUF 375
411 #define VAR_SO_REUSEPORT 376
412 #define VAR_HARDEN_BELOW_NXDOMAIN 377
413 #define VAR_IGNORE_CD_FLAG 378
414 #define VAR_LOG_QUERIES 379
415 #define VAR_TCP_UPSTREAM 380
416 #define VAR_SSL_UPSTREAM 381
417 #define VAR_SSL_SERVICE_KEY 382
418 #define VAR_SSL_SERVICE_PEM 383
419 #define VAR_SSL_PORT 384
420 #define VAR_FORWARD_FIRST 385
421 #define VAR_STUB_FIRST 386
422 #define VAR_MINIMAL_RESPONSES 387
423 #define VAR_RRSET_ROUNDROBIN 388
424 #define VAR_MAX_UDP_SIZE 389
425 #define VAR_DELAY_CLOSE 390
426 #define VAR_UNBLOCK_LAN_ZONES 391
427 #define VAR_INSECURE_LAN_ZONES 392
428 #define VAR_INFRA_CACHE_MIN_RTT 393
429 #define VAR_DNS64_PREFIX 394
430 #define VAR_DNS64_SYNTHALL 395
431 #define VAR_DNSTAP 396
432 #define VAR_DNSTAP_ENABLE 397
433 #define VAR_DNSTAP_SOCKET_PATH 398
434 #define VAR_DNSTAP_SEND_IDENTITY 399
435 #define VAR_DNSTAP_SEND_VERSION 400
436 #define VAR_DNSTAP_IDENTITY 401
437 #define VAR_DNSTAP_VERSION 402
438 #define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 403
439 #define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 404
440 #define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 405
441 #define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 406
442 #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 407
443 #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 408
444 #define VAR_HARDEN_ALGO_DOWNGRADE 409
445 #define VAR_IP_TRANSPARENT 410
446 #define VAR_RATELIMIT 411
447 #define VAR_RATELIMIT_SLABS 412
448 #define VAR_RATELIMIT_SIZE 413
449 #define VAR_RATELIMIT_FOR_DOMAIN 414
450 #define VAR_RATELIMIT_BELOW_DOMAIN 415
451 #define VAR_RATELIMIT_FACTOR 416
452 #define VAR_CAPS_WHITELIST 417
453 #define VAR_CACHE_MAX_NEGATIVE_TTL 418
454 #define VAR_PERMIT_SMALL_HOLDDOWN 419
455 #define VAR_QNAME_MINIMISATION 420
456
457 /* Value type.  */
458 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
459
460 union YYSTYPE
461 {
462 #line 64 "util/configparser.y" /* yacc.c:355  */
463
464         char*   str;
465
466 #line 467 "util/configparser.c" /* yacc.c:355  */
467 };
468
469 typedef union YYSTYPE YYSTYPE;
470 # define YYSTYPE_IS_TRIVIAL 1
471 # define YYSTYPE_IS_DECLARED 1
472 #endif
473
474
475 extern YYSTYPE yylval;
476
477 int yyparse (void);
478
479 #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
480
481 /* Copy the second part of user declarations.  */
482
483 #line 484 "util/configparser.c" /* yacc.c:358  */
484
485 #ifdef short
486 # undef short
487 #endif
488
489 #ifdef YYTYPE_UINT8
490 typedef YYTYPE_UINT8 yytype_uint8;
491 #else
492 typedef unsigned char yytype_uint8;
493 #endif
494
495 #ifdef YYTYPE_INT8
496 typedef YYTYPE_INT8 yytype_int8;
497 #else
498 typedef signed char yytype_int8;
499 #endif
500
501 #ifdef YYTYPE_UINT16
502 typedef YYTYPE_UINT16 yytype_uint16;
503 #else
504 typedef unsigned short int yytype_uint16;
505 #endif
506
507 #ifdef YYTYPE_INT16
508 typedef YYTYPE_INT16 yytype_int16;
509 #else
510 typedef short int yytype_int16;
511 #endif
512
513 #ifndef YYSIZE_T
514 # ifdef __SIZE_TYPE__
515 #  define YYSIZE_T __SIZE_TYPE__
516 # elif defined size_t
517 #  define YYSIZE_T size_t
518 # elif ! defined YYSIZE_T
519 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
520 #  define YYSIZE_T size_t
521 # else
522 #  define YYSIZE_T unsigned int
523 # endif
524 #endif
525
526 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
527
528 #ifndef YY_
529 # if defined YYENABLE_NLS && YYENABLE_NLS
530 #  if ENABLE_NLS
531 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
532 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
533 #  endif
534 # endif
535 # ifndef YY_
536 #  define YY_(Msgid) Msgid
537 # endif
538 #endif
539
540 #ifndef YY_ATTRIBUTE
541 # if (defined __GNUC__                                               \
542       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
543      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
544 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
545 # else
546 #  define YY_ATTRIBUTE(Spec) /* empty */
547 # endif
548 #endif
549
550 #ifndef YY_ATTRIBUTE_PURE
551 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
552 #endif
553
554 #ifndef YY_ATTRIBUTE_UNUSED
555 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
556 #endif
557
558 #if !defined _Noreturn \
559      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
560 # if defined _MSC_VER && 1200 <= _MSC_VER
561 #  define _Noreturn __declspec (noreturn)
562 # else
563 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
564 # endif
565 #endif
566
567 /* Suppress unused-variable warnings by "using" E.  */
568 #if ! defined lint || defined __GNUC__
569 # define YYUSE(E) ((void) (E))
570 #else
571 # define YYUSE(E) /* empty */
572 #endif
573
574 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
575 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
576 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
577     _Pragma ("GCC diagnostic push") \
578     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
579     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
580 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
581     _Pragma ("GCC diagnostic pop")
582 #else
583 # define YY_INITIAL_VALUE(Value) Value
584 #endif
585 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
586 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
587 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
588 #endif
589 #ifndef YY_INITIAL_VALUE
590 # define YY_INITIAL_VALUE(Value) /* Nothing. */
591 #endif
592
593
594 #if ! defined yyoverflow || YYERROR_VERBOSE
595
596 /* The parser invokes alloca or malloc; define the necessary symbols.  */
597
598 # ifdef YYSTACK_USE_ALLOCA
599 #  if YYSTACK_USE_ALLOCA
600 #   ifdef __GNUC__
601 #    define YYSTACK_ALLOC __builtin_alloca
602 #   elif defined __BUILTIN_VA_ARG_INCR
603 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
604 #   elif defined _AIX
605 #    define YYSTACK_ALLOC __alloca
606 #   elif defined _MSC_VER
607 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
608 #    define alloca _alloca
609 #   else
610 #    define YYSTACK_ALLOC alloca
611 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
612 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
613       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
614 #     ifndef EXIT_SUCCESS
615 #      define EXIT_SUCCESS 0
616 #     endif
617 #    endif
618 #   endif
619 #  endif
620 # endif
621
622 # ifdef YYSTACK_ALLOC
623    /* Pacify GCC's 'empty if-body' warning.  */
624 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
625 #  ifndef YYSTACK_ALLOC_MAXIMUM
626     /* The OS might guarantee only one guard page at the bottom of the stack,
627        and a page size can be as small as 4096 bytes.  So we cannot safely
628        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
629        to allow for a few compiler-allocated temporary stack slots.  */
630 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
631 #  endif
632 # else
633 #  define YYSTACK_ALLOC YYMALLOC
634 #  define YYSTACK_FREE YYFREE
635 #  ifndef YYSTACK_ALLOC_MAXIMUM
636 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
637 #  endif
638 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
639        && ! ((defined YYMALLOC || defined malloc) \
640              && (defined YYFREE || defined free)))
641 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
642 #   ifndef EXIT_SUCCESS
643 #    define EXIT_SUCCESS 0
644 #   endif
645 #  endif
646 #  ifndef YYMALLOC
647 #   define YYMALLOC malloc
648 #   if ! defined malloc && ! defined EXIT_SUCCESS
649 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
650 #   endif
651 #  endif
652 #  ifndef YYFREE
653 #   define YYFREE free
654 #   if ! defined free && ! defined EXIT_SUCCESS
655 void free (void *); /* INFRINGES ON USER NAME SPACE */
656 #   endif
657 #  endif
658 # endif
659 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
660
661
662 #if (! defined yyoverflow \
663      && (! defined __cplusplus \
664          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
665
666 /* A type that is properly aligned for any stack member.  */
667 union yyalloc
668 {
669   yytype_int16 yyss_alloc;
670   YYSTYPE yyvs_alloc;
671 };
672
673 /* The size of the maximum gap between one aligned stack and the next.  */
674 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
675
676 /* The size of an array large to enough to hold all stacks, each with
677    N elements.  */
678 # define YYSTACK_BYTES(N) \
679      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
680       + YYSTACK_GAP_MAXIMUM)
681
682 # define YYCOPY_NEEDED 1
683
684 /* Relocate STACK from its old location to the new one.  The
685    local variables YYSIZE and YYSTACKSIZE give the old and new number of
686    elements in the stack, and YYPTR gives the new location of the
687    stack.  Advance YYPTR to a properly aligned location for the next
688    stack.  */
689 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
690     do                                                                  \
691       {                                                                 \
692         YYSIZE_T yynewbytes;                                            \
693         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
694         Stack = &yyptr->Stack_alloc;                                    \
695         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
696         yyptr += yynewbytes / sizeof (*yyptr);                          \
697       }                                                                 \
698     while (0)
699
700 #endif
701
702 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
703 /* Copy COUNT objects from SRC to DST.  The source and destination do
704    not overlap.  */
705 # ifndef YYCOPY
706 #  if defined __GNUC__ && 1 < __GNUC__
707 #   define YYCOPY(Dst, Src, Count) \
708       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
709 #  else
710 #   define YYCOPY(Dst, Src, Count)              \
711       do                                        \
712         {                                       \
713           YYSIZE_T yyi;                         \
714           for (yyi = 0; yyi < (Count); yyi++)   \
715             (Dst)[yyi] = (Src)[yyi];            \
716         }                                       \
717       while (0)
718 #  endif
719 # endif
720 #endif /* !YYCOPY_NEEDED */
721
722 /* YYFINAL -- State number of the termination state.  */
723 #define YYFINAL  2
724 /* YYLAST -- Last index in YYTABLE.  */
725 #define YYLAST   310
726
727 /* YYNTOKENS -- Number of terminals.  */
728 #define YYNTOKENS  166
729 /* YYNNTS -- Number of nonterminals.  */
730 #define YYNNTS  171
731 /* YYNRULES -- Number of rules.  */
732 #define YYNRULES  327
733 /* YYNSTATES -- Number of states.  */
734 #define YYNSTATES  482
735
736 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
737    by yylex, with out-of-bounds checking.  */
738 #define YYUNDEFTOK  2
739 #define YYMAXUTOK   420
740
741 #define YYTRANSLATE(YYX)                                                \
742   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
743
744 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
745    as returned by yylex, without out-of-bounds checking.  */
746 static const yytype_uint8 yytranslate[] =
747 {
748        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
749        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
750        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
751        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
752        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
753        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
754        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
755        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
756        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
757        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
758        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
759        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
760        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
761        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
762        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
763        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
764        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
765        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
766        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
767        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
768        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
769        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
770        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
771        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
772        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
773        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
774        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
775       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
776       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
777       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
778       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
779       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
780       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
781       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
782       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
783       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
784      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
785      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
786      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
787      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
788      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
789      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
790      165
791 };
792
793 #if YYDEBUG
794   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
795 static const yytype_uint16 yyrline[] =
796 {
797        0,   130,   130,   130,   131,   131,   132,   132,   133,   133,
798      137,   142,   143,   144,   144,   144,   145,   145,   146,   146,
799      146,   147,   147,   148,   148,   148,   149,   149,   149,   150,
800      150,   151,   151,   152,   152,   153,   153,   154,   154,   155,
801      155,   156,   156,   157,   157,   158,   158,   158,   159,   159,
802      159,   160,   160,   160,   161,   161,   162,   162,   163,   163,
803      164,   164,   165,   165,   165,   166,   166,   167,   167,   168,
804      168,   168,   169,   169,   170,   170,   171,   171,   172,   172,
805      172,   173,   173,   174,   174,   175,   175,   176,   176,   177,
806      177,   178,   178,   178,   179,   179,   180,   180,   180,   181,
807      181,   181,   182,   182,   182,   183,   183,   183,   184,   184,
808      184,   185,   185,   185,   186,   186,   187,   187,   188,   188,
809      189,   189,   190,   190,   190,   191,   191,   192,   192,   193,
810      193,   194,   194,   196,   208,   209,   210,   210,   210,   210,
811      210,   212,   224,   225,   226,   226,   226,   226,   228,   237,
812      246,   257,   266,   275,   284,   297,   312,   321,   330,   339,
813      348,   357,   366,   375,   384,   393,   402,   411,   420,   429,
814      438,   445,   452,   461,   470,   484,   493,   502,   509,   516,
815      523,   531,   538,   545,   552,   559,   567,   575,   583,   590,
816      597,   606,   615,   622,   629,   637,   645,   655,   665,   678,
817      689,   697,   710,   719,   728,   737,   747,   757,   765,   778,
818      787,   795,   804,   812,   825,   834,   841,   851,   861,   871,
819      881,   891,   901,   911,   921,   928,   935,   942,   951,   960,
820      969,   976,   986,  1003,  1010,  1028,  1041,  1054,  1063,  1072,
821     1081,  1090,  1100,  1110,  1119,  1128,  1135,  1144,  1153,  1162,
822     1171,  1179,  1192,  1200,  1224,  1231,  1246,  1256,  1266,  1273,
823     1280,  1289,  1298,  1306,  1319,  1332,  1345,  1354,  1364,  1374,
824     1381,  1388,  1397,  1407,  1417,  1424,  1431,  1440,  1445,  1446,
825     1447,  1447,  1447,  1448,  1448,  1448,  1449,  1449,  1451,  1461,
826     1470,  1477,  1487,  1494,  1501,  1508,  1515,  1520,  1521,  1522,
827     1522,  1523,  1523,  1524,  1524,  1525,  1526,  1527,  1528,  1529,
828     1530,  1532,  1540,  1547,  1555,  1563,  1570,  1577,  1586,  1595,
829     1604,  1613,  1622,  1631,  1636,  1637,  1638,  1640
830 };
831 #endif
832
833 #if YYDEBUG || YYERROR_VERBOSE || 0
834 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
835    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
836 static const char *const yytname[] =
837 {
838   "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
839   "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY",
840   "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE",
841   "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS",
842   "VAR_OUTGOING_TCP_MSS", "VAR_CHROOT", "VAR_USERNAME", "VAR_DIRECTORY",
843   "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE",
844   "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD",
845   "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP",
846   "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
847   "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
848   "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
849   "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
850   "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
851   "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
852   "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
853   "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
854   "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
855   "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
856   "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
857   "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
858   "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
859   "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
860   "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
861   "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
862   "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
863   "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
864   "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
865   "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
866   "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
867   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
868   "VAR_CONTROL_USE_CERT", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR",
869   "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD",
870   "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON",
871   "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX",
872   "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
873   "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
874   "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
875   "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
876   "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
877   "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY",
878   "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
879   "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN",
880   "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES",
881   "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX",
882   "VAR_DNS64_SYNTHALL", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE",
883   "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_SEND_IDENTITY",
884   "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
885   "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
886   "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
887   "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
888   "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
889   "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
890   "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES",
891   "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_RATELIMIT",
892   "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_RATELIMIT_FOR_DOMAIN",
893   "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR",
894   "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
895   "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "$accept",
896   "toplevelvars", "toplevelvar", "serverstart", "contents_server",
897   "content_server", "stubstart", "contents_stub", "content_stub",
898   "forwardstart", "contents_forward", "content_forward",
899   "server_num_threads", "server_verbosity", "server_statistics_interval",
900   "server_statistics_cumulative", "server_extended_statistics",
901   "server_port", "server_interface", "server_outgoing_interface",
902   "server_outgoing_range", "server_outgoing_port_permit",
903   "server_outgoing_port_avoid", "server_outgoing_num_tcp",
904   "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4",
905   "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_mss",
906   "server_outgoing_tcp_mss", "server_tcp_upstream", "server_ssl_upstream",
907   "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port",
908   "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
909   "server_log_queries", "server_chroot", "server_username",
910   "server_directory", "server_logfile", "server_pidfile",
911   "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
912   "server_auto_trust_anchor_file", "server_trust_anchor_file",
913   "server_trusted_keys_file", "server_trust_anchor",
914   "server_domain_insecure", "server_hide_identity", "server_hide_version",
915   "server_identity", "server_version", "server_so_rcvbuf",
916   "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
917   "server_edns_buffer_size", "server_msg_buffer_size",
918   "server_msg_cache_size", "server_msg_cache_slabs",
919   "server_num_queries_per_thread", "server_jostle_timeout",
920   "server_delay_close", "server_unblock_lan_zones",
921   "server_insecure_lan_zones", "server_rrset_cache_size",
922   "server_rrset_cache_slabs", "server_infra_host_ttl",
923   "server_infra_lame_ttl", "server_infra_cache_numhosts",
924   "server_infra_cache_lame_size", "server_infra_cache_slabs",
925   "server_infra_cache_min_rtt", "server_target_fetch_policy",
926   "server_harden_short_bufsize", "server_harden_large_queries",
927   "server_harden_glue", "server_harden_dnssec_stripped",
928   "server_harden_below_nxdomain", "server_harden_referral_path",
929   "server_harden_algo_downgrade", "server_use_caps_for_id",
930   "server_caps_whitelist", "server_private_address",
931   "server_private_domain", "server_prefetch", "server_prefetch_key",
932   "server_unwanted_reply_threshold", "server_do_not_query_address",
933   "server_do_not_query_localhost", "server_access_control",
934   "server_module_conf", "server_val_override_date",
935   "server_val_sig_skew_min", "server_val_sig_skew_max",
936   "server_cache_max_ttl", "server_cache_max_negative_ttl",
937   "server_cache_min_ttl", "server_bogus_ttl",
938   "server_val_clean_additional", "server_val_permissive_mode",
939   "server_ignore_cd_flag", "server_val_log_level",
940   "server_val_nsec3_keysize_iterations", "server_add_holddown",
941   "server_del_holddown", "server_keep_missing",
942   "server_permit_small_holddown", "server_key_cache_size",
943   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
944   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
945   "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix",
946   "server_dns64_synthall", "server_ratelimit", "server_ratelimit_size",
947   "server_ratelimit_slabs", "server_ratelimit_for_domain",
948   "server_ratelimit_below_domain", "server_ratelimit_factor",
949   "server_qname_minimisation", "stub_name", "stub_host", "stub_addr",
950   "stub_first", "stub_prime", "forward_name", "forward_host",
951   "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc",
952   "rc_control_enable", "rc_control_port", "rc_control_interface",
953   "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file",
954   "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
955   "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path",
956   "dt_dnstap_send_identity", "dt_dnstap_send_version",
957   "dt_dnstap_identity", "dt_dnstap_version",
958   "dt_dnstap_log_resolver_query_messages",
959   "dt_dnstap_log_resolver_response_messages",
960   "dt_dnstap_log_client_query_messages",
961   "dt_dnstap_log_client_response_messages",
962   "dt_dnstap_log_forwarder_query_messages",
963   "dt_dnstap_log_forwarder_response_messages", "pythonstart",
964   "contents_py", "content_py", "py_script", YY_NULLPTR
965 };
966 #endif
967
968 # ifdef YYPRINT
969 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
970    (internal) symbol number NUM (which must be that of a token).  */
971 static const yytype_uint16 yytoknum[] =
972 {
973        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
974      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
975      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
976      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
977      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
978      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
979      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
980      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
981      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
982      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
983      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
984      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
985      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
986      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
987      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
988      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
989      415,   416,   417,   418,   419,   420
990 };
991 # endif
992
993 #define YYPACT_NINF -81
994
995 #define yypact_value_is_default(Yystate) \
996   (!!((Yystate) == (-81)))
997
998 #define YYTABLE_NINF -1
999
1000 #define yytable_value_is_error(Yytable_value) \
1001   0
1002
1003   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1004      STATE-NUM.  */
1005 static const yytype_int16 yypact[] =
1006 {
1007      -81,   118,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1008      -81,   -81,   -81,   -81,   -81,   -81,   -12,    39,    47,    40,
1009       36,   -80,    18,    19,    20,    24,    25,    26,    69,    72,
1010       73,    74,    75,    80,   109,   120,   129,   130,   144,   145,
1011      146,   147,   149,   150,   151,   152,   153,   155,   156,   157,
1012      158,   159,   161,   162,   163,   164,   165,   166,   180,   181,
1013      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
1014      192,   193,   194,   195,   196,   197,   199,   200,   201,   202,
1015      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
1016      213,   215,   216,   217,   218,   219,   220,   221,   222,   223,
1017      224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
1018      234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
1019      244,   245,   246,   247,   248,   250,   251,   252,   253,   254,
1020      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1021      265,   266,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1022      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1023      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1024      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1025      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1026      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1027      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1028      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1029      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1030      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1031      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1032      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1033      -81,   -81,   -81,   267,   268,   269,   270,   271,   -81,   -81,
1034      -81,   -81,   -81,   -81,   272,   273,   274,   275,   -81,   -81,
1035      -81,   -81,   -81,   276,   277,   278,   279,   280,   281,   282,
1036      283,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1037      284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
1038      294,   295,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1039      -81,   -81,   -81,   -81,   -81,   296,   -81,   -81,   -81,   -81,
1040      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1041      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1042      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1043      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1044      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1045      -81,   -81,   -81,   297,   298,   -81,   -81,   -81,   -81,   -81,
1046      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1047      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1048      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1049      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1050      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1051      -81,   299,   300,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1052      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1053      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1054      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1055      -81,   -81
1056 };
1057
1058   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1059      Performed when YYTABLE does not specify something else to do.  Zero
1060      means the default is an error.  */
1061 static const yytype_uint16 yydefact[] =
1062 {
1063        2,     0,     1,    10,   133,   141,   277,   323,   296,     3,
1064       12,   135,   143,   279,   298,   325,     4,     5,     6,     8,
1065        9,     7,     0,     0,     0,     0,     0,     0,     0,     0,
1066        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1067        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1068        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1069        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1070        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1071        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1072        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1073        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1074        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1075        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1076        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1077        0,     0,    11,    13,    14,    72,    75,    84,    15,    23,
1078       63,    16,    76,    77,    34,    56,    71,    17,    18,    19,
1079       20,    21,    22,   106,   107,   108,   109,   110,    73,    62,
1080       88,   105,    24,    25,    26,    27,    28,    64,    78,    79,
1081       94,    50,    60,    51,    89,    44,    45,    46,    47,    98,
1082      102,   114,   122,    99,    57,    29,    30,    31,    86,   115,
1083      116,   117,    32,    33,    35,    36,    38,    39,    37,   120,
1084       40,    41,    42,    48,    67,   103,    81,   121,    74,   129,
1085       82,    83,   100,   101,    87,    43,    65,    68,    49,    52,
1086       90,    91,    66,   130,    92,    53,    54,    55,   104,    93,
1087       61,    95,    96,    97,   131,    58,    59,    80,    69,    70,
1088       85,   111,   112,   113,   118,   119,   123,   125,   124,   126,
1089      127,   128,   132,     0,     0,     0,     0,     0,   134,   136,
1090      137,   138,   140,   139,     0,     0,     0,     0,   142,   144,
1091      145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
1092        0,   278,   280,   282,   281,   287,   283,   284,   285,   286,
1093        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1094        0,     0,   297,   299,   300,   301,   302,   303,   304,   305,
1095      306,   307,   308,   309,   310,     0,   324,   326,   149,   148,
1096      153,   156,   154,   162,   163,   164,   165,   166,   167,   177,
1097      178,   179,   180,   181,   200,   201,   202,   207,   208,   159,
1098      209,   210,   213,   211,   212,   215,   216,   217,   230,   190,
1099      191,   192,   193,   218,   233,   186,   188,   234,   240,   241,
1100      242,   160,   199,   250,   251,   187,   245,   174,   155,   182,
1101      231,   237,   219,     0,     0,   254,   161,   150,   173,   223,
1102      151,   157,   158,   183,   184,   252,   221,   225,   226,   152,
1103      255,   203,   229,   175,   189,   235,   236,   239,   244,   185,
1104      248,   246,   247,   194,   198,   227,   228,   195,   196,   220,
1105      243,   176,   168,   169,   170,   171,   172,   256,   257,   258,
1106      204,   205,   206,   214,   259,   260,   222,   197,   261,   263,
1107      262,     0,     0,   266,   224,   238,   249,   267,   268,   269,
1108      270,   272,   271,   273,   274,   275,   276,   288,   290,   289,
1109      292,   293,   294,   295,   291,   311,   312,   313,   314,   315,
1110      316,   317,   318,   319,   320,   321,   322,   327,   232,   253,
1111      264,   265
1112 };
1113
1114   /* YYPGOTO[NTERM-NUM].  */
1115 static const yytype_int8 yypgoto[] =
1116 {
1117      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1118      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1119      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1120      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1121      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1122      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1123      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1124      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1125      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1126      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1127      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1128      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1129      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1130      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1131      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1132      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1133      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
1134      -81
1135 };
1136
1137   /* YYDEFGOTO[NTERM-NUM].  */
1138 static const yytype_int16 yydefgoto[] =
1139 {
1140       -1,     1,     9,    10,    16,   142,    11,    17,   268,    12,
1141       18,   278,   143,   144,   145,   146,   147,   148,   149,   150,
1142      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
1143      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
1144      171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
1145      181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
1146      191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
1147      201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
1148      211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
1149      221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
1150      231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
1151      241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
1152      251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
1153      261,   262,   269,   270,   271,   272,   273,   279,   280,   281,
1154      282,    13,    19,   291,   292,   293,   294,   295,   296,   297,
1155      298,   299,    14,    20,   312,   313,   314,   315,   316,   317,
1156      318,   319,   320,   321,   322,   323,   324,    15,    21,   326,
1157      327
1158 };
1159
1160   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1161      positive, shift that token.  If negative, reduce the rule whose
1162      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1163 static const yytype_uint16 yytable[] =
1164 {
1165       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
1166       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
1167       42,    43,    44,    45,    46,    47,    48,   325,   328,   329,
1168      330,    49,    50,    51,   331,   332,   333,    52,    53,    54,
1169       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1170       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1171       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1172       85,    86,    87,    88,    89,    90,    91,    92,   263,   334,
1173      264,   265,   335,   336,   337,   338,   274,    93,    94,    95,
1174      339,    96,    97,    98,   275,   276,    99,   100,   101,   102,
1175      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
1176      113,   114,   115,   116,   117,   118,   119,   120,     2,   340,
1177      121,   122,   123,   124,   125,   126,   127,   128,   129,     3,
1178      341,   283,   284,   285,   286,   287,   288,   289,   290,   342,
1179      343,   266,   130,   131,   132,   133,   134,   135,   136,   137,
1180      138,   139,   140,   141,   344,   345,   346,   347,     4,   348,
1181      349,   350,   351,   352,     5,   353,   354,   355,   356,   357,
1182      267,   358,   359,   360,   361,   362,   363,   277,   300,   301,
1183      302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
1184      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
1185      374,   375,   376,   377,   378,   379,   380,   381,     6,   382,
1186      383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
1187      393,   394,   395,   396,     7,   397,   398,   399,   400,   401,
1188      402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
1189      412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
1190      422,   423,   424,   425,   426,   427,   428,   429,   430,     8,
1191      431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
1192      441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
1193      451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
1194      461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
1195      471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
1196      481
1197 };
1198
1199 static const yytype_uint8 yycheck[] =
1200 {
1201       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1202       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
1203       32,    33,    34,    35,    36,    37,    38,   107,    10,    10,
1204       10,    43,    44,    45,    10,    10,    10,    49,    50,    51,
1205       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
1206       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
1207       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
1208       82,    83,    84,    85,    86,    87,    88,    89,    39,    10,
1209       41,    42,    10,    10,    10,    10,    39,    99,   100,   101,
1210       10,   103,   104,   105,    47,    48,   108,   109,   110,   111,
1211      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
1212      122,   123,   124,   125,   126,   127,   128,   129,     0,    10,
1213      132,   133,   134,   135,   136,   137,   138,   139,   140,    11,
1214       10,    91,    92,    93,    94,    95,    96,    97,    98,    10,
1215       10,   102,   154,   155,   156,   157,   158,   159,   160,   161,
1216      162,   163,   164,   165,    10,    10,    10,    10,    40,    10,
1217       10,    10,    10,    10,    46,    10,    10,    10,    10,    10,
1218      131,    10,    10,    10,    10,    10,    10,   130,   142,   143,
1219      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
1220       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1221       10,    10,    10,    10,    10,    10,    10,    10,    90,    10,
1222       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1223       10,    10,    10,    10,   106,    10,    10,    10,    10,    10,
1224       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1225       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1226       10,    10,    10,    10,    10,    10,    10,    10,    10,   141,
1227       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1228       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1229       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1230       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1231       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1232       10
1233 };
1234
1235   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1236      symbol of state STATE-NUM.  */
1237 static const yytype_uint16 yystos[] =
1238 {
1239        0,   167,     0,    11,    40,    46,    90,   106,   141,   168,
1240      169,   172,   175,   307,   318,   333,   170,   173,   176,   308,
1241      319,   334,    12,    13,    14,    15,    16,    17,    18,    19,
1242       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
1243       30,    31,    32,    33,    34,    35,    36,    37,    38,    43,
1244       44,    45,    49,    50,    51,    52,    53,    54,    55,    56,
1245       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
1246       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1247       77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
1248       87,    88,    89,    99,   100,   101,   103,   104,   105,   108,
1249      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
1250      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
1251      129,   132,   133,   134,   135,   136,   137,   138,   139,   140,
1252      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
1253      164,   165,   171,   178,   179,   180,   181,   182,   183,   184,
1254      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1255      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1256      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1257      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1258      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1259      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1260      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1261      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1262      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1263      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1264      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1265      295,   296,   297,    39,    41,    42,   102,   131,   174,   298,
1266      299,   300,   301,   302,    39,    47,    48,   130,   177,   303,
1267      304,   305,   306,    91,    92,    93,    94,    95,    96,    97,
1268       98,   309,   310,   311,   312,   313,   314,   315,   316,   317,
1269      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
1270      152,   153,   320,   321,   322,   323,   324,   325,   326,   327,
1271      328,   329,   330,   331,   332,   107,   335,   336,    10,    10,
1272       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1273       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1274       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1275       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1276       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1277       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1278       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1279       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1280       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1281       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1282       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1283       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1284       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1285       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1286       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
1287       10,    10
1288 };
1289
1290   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1291 static const yytype_uint16 yyr1[] =
1292 {
1293        0,   166,   167,   167,   168,   168,   168,   168,   168,   168,
1294      169,   170,   170,   171,   171,   171,   171,   171,   171,   171,
1295      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1296      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1297      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1298      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1299      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1300      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1301      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1302      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1303      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1304      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1305      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
1306      171,   171,   171,   172,   173,   173,   174,   174,   174,   174,
1307      174,   175,   176,   176,   177,   177,   177,   177,   178,   179,
1308      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
1309      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
1310      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
1311      210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
1312      220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
1313      230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
1314      240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
1315      250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
1316      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
1317      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
1318      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
1319      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
1320      300,   301,   302,   303,   304,   305,   306,   307,   308,   308,
1321      309,   309,   309,   309,   309,   309,   309,   309,   310,   311,
1322      312,   313,   314,   315,   316,   317,   318,   319,   319,   320,
1323      320,   320,   320,   320,   320,   320,   320,   320,   320,   320,
1324      320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
1325      330,   331,   332,   333,   334,   334,   335,   336
1326 };
1327
1328   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1329 static const yytype_uint8 yyr2[] =
1330 {
1331        0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
1332        1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
1333        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1334        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1335        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1336        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1337        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1338        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1339        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1340        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1341        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1342        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1343        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1344        1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
1345        1,     1,     2,     0,     1,     1,     1,     1,     2,     2,
1346        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1347        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1348        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1349        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1350        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1351        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1352        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1353        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1354        2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
1355        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1356        2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
1357        2,     2,     2,     2,     3,     3,     2,     2,     2,     2,
1358        2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
1359        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
1360        2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
1361        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1362        1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1363        2,     2,     2,     1,     2,     0,     1,     2
1364 };
1365
1366
1367 #define yyerrok         (yyerrstatus = 0)
1368 #define yyclearin       (yychar = YYEMPTY)
1369 #define YYEMPTY         (-2)
1370 #define YYEOF           0
1371
1372 #define YYACCEPT        goto yyacceptlab
1373 #define YYABORT         goto yyabortlab
1374 #define YYERROR         goto yyerrorlab
1375
1376
1377 #define YYRECOVERING()  (!!yyerrstatus)
1378
1379 #define YYBACKUP(Token, Value)                                  \
1380 do                                                              \
1381   if (yychar == YYEMPTY)                                        \
1382     {                                                           \
1383       yychar = (Token);                                         \
1384       yylval = (Value);                                         \
1385       YYPOPSTACK (yylen);                                       \
1386       yystate = *yyssp;                                         \
1387       goto yybackup;                                            \
1388     }                                                           \
1389   else                                                          \
1390     {                                                           \
1391       yyerror (YY_("syntax error: cannot back up")); \
1392       YYERROR;                                                  \
1393     }                                                           \
1394 while (0)
1395
1396 /* Error token number */
1397 #define YYTERROR        1
1398 #define YYERRCODE       256
1399
1400
1401
1402 /* Enable debugging if requested.  */
1403 #if YYDEBUG
1404
1405 # ifndef YYFPRINTF
1406 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1407 #  define YYFPRINTF fprintf
1408 # endif
1409
1410 # define YYDPRINTF(Args)                        \
1411 do {                                            \
1412   if (yydebug)                                  \
1413     YYFPRINTF Args;                             \
1414 } while (0)
1415
1416 /* This macro is provided for backward compatibility. */
1417 #ifndef YY_LOCATION_PRINT
1418 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1419 #endif
1420
1421
1422 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1423 do {                                                                      \
1424   if (yydebug)                                                            \
1425     {                                                                     \
1426       YYFPRINTF (stderr, "%s ", Title);                                   \
1427       yy_symbol_print (stderr,                                            \
1428                   Type, Value); \
1429       YYFPRINTF (stderr, "\n");                                           \
1430     }                                                                     \
1431 } while (0)
1432
1433
1434 /*----------------------------------------.
1435 | Print this symbol's value on YYOUTPUT.  |
1436 `----------------------------------------*/
1437
1438 static void
1439 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1440 {
1441   FILE *yyo = yyoutput;
1442   YYUSE (yyo);
1443   if (!yyvaluep)
1444     return;
1445 # ifdef YYPRINT
1446   if (yytype < YYNTOKENS)
1447     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1448 # endif
1449   YYUSE (yytype);
1450 }
1451
1452
1453 /*--------------------------------.
1454 | Print this symbol on YYOUTPUT.  |
1455 `--------------------------------*/
1456
1457 static void
1458 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1459 {
1460   YYFPRINTF (yyoutput, "%s %s (",
1461              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1462
1463   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1464   YYFPRINTF (yyoutput, ")");
1465 }
1466
1467 /*------------------------------------------------------------------.
1468 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1469 | TOP (included).                                                   |
1470 `------------------------------------------------------------------*/
1471
1472 static void
1473 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1474 {
1475   YYFPRINTF (stderr, "Stack now");
1476   for (; yybottom <= yytop; yybottom++)
1477     {
1478       int yybot = *yybottom;
1479       YYFPRINTF (stderr, " %d", yybot);
1480     }
1481   YYFPRINTF (stderr, "\n");
1482 }
1483
1484 # define YY_STACK_PRINT(Bottom, Top)                            \
1485 do {                                                            \
1486   if (yydebug)                                                  \
1487     yy_stack_print ((Bottom), (Top));                           \
1488 } while (0)
1489
1490
1491 /*------------------------------------------------.
1492 | Report that the YYRULE is going to be reduced.  |
1493 `------------------------------------------------*/
1494
1495 static void
1496 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1497 {
1498   unsigned long int yylno = yyrline[yyrule];
1499   int yynrhs = yyr2[yyrule];
1500   int yyi;
1501   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1502              yyrule - 1, yylno);
1503   /* The symbols being reduced.  */
1504   for (yyi = 0; yyi < yynrhs; yyi++)
1505     {
1506       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1507       yy_symbol_print (stderr,
1508                        yystos[yyssp[yyi + 1 - yynrhs]],
1509                        &(yyvsp[(yyi + 1) - (yynrhs)])
1510                                               );
1511       YYFPRINTF (stderr, "\n");
1512     }
1513 }
1514
1515 # define YY_REDUCE_PRINT(Rule)          \
1516 do {                                    \
1517   if (yydebug)                          \
1518     yy_reduce_print (yyssp, yyvsp, Rule); \
1519 } while (0)
1520
1521 /* Nonzero means print parse trace.  It is left uninitialized so that
1522    multiple parsers can coexist.  */
1523 int yydebug;
1524 #else /* !YYDEBUG */
1525 # define YYDPRINTF(Args)
1526 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1527 # define YY_STACK_PRINT(Bottom, Top)
1528 # define YY_REDUCE_PRINT(Rule)
1529 #endif /* !YYDEBUG */
1530
1531
1532 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1533 #ifndef YYINITDEPTH
1534 # define YYINITDEPTH 200
1535 #endif
1536
1537 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1538    if the built-in stack extension method is used).
1539
1540    Do not make this value too large; the results are undefined if
1541    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1542    evaluated with infinite-precision integer arithmetic.  */
1543
1544 #ifndef YYMAXDEPTH
1545 # define YYMAXDEPTH 10000
1546 #endif
1547
1548
1549 #if YYERROR_VERBOSE
1550
1551 # ifndef yystrlen
1552 #  if defined __GLIBC__ && defined _STRING_H
1553 #   define yystrlen strlen
1554 #  else
1555 /* Return the length of YYSTR.  */
1556 static YYSIZE_T
1557 yystrlen (const char *yystr)
1558 {
1559   YYSIZE_T yylen;
1560   for (yylen = 0; yystr[yylen]; yylen++)
1561     continue;
1562   return yylen;
1563 }
1564 #  endif
1565 # endif
1566
1567 # ifndef yystpcpy
1568 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1569 #   define yystpcpy stpcpy
1570 #  else
1571 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1572    YYDEST.  */
1573 static char *
1574 yystpcpy (char *yydest, const char *yysrc)
1575 {
1576   char *yyd = yydest;
1577   const char *yys = yysrc;
1578
1579   while ((*yyd++ = *yys++) != '\0')
1580     continue;
1581
1582   return yyd - 1;
1583 }
1584 #  endif
1585 # endif
1586
1587 # ifndef yytnamerr
1588 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1589    quotes and backslashes, so that it's suitable for yyerror.  The
1590    heuristic is that double-quoting is unnecessary unless the string
1591    contains an apostrophe, a comma, or backslash (other than
1592    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1593    null, do not copy; instead, return the length of what the result
1594    would have been.  */
1595 static YYSIZE_T
1596 yytnamerr (char *yyres, const char *yystr)
1597 {
1598   if (*yystr == '"')
1599     {
1600       YYSIZE_T yyn = 0;
1601       char const *yyp = yystr;
1602
1603       for (;;)
1604         switch (*++yyp)
1605           {
1606           case '\'':
1607           case ',':
1608             goto do_not_strip_quotes;
1609
1610           case '\\':
1611             if (*++yyp != '\\')
1612               goto do_not_strip_quotes;
1613             /* Fall through.  */
1614           default:
1615             if (yyres)
1616               yyres[yyn] = *yyp;
1617             yyn++;
1618             break;
1619
1620           case '"':
1621             if (yyres)
1622               yyres[yyn] = '\0';
1623             return yyn;
1624           }
1625     do_not_strip_quotes: ;
1626     }
1627
1628   if (! yyres)
1629     return yystrlen (yystr);
1630
1631   return yystpcpy (yyres, yystr) - yyres;
1632 }
1633 # endif
1634
1635 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1636    about the unexpected token YYTOKEN for the state stack whose top is
1637    YYSSP.
1638
1639    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1640    not large enough to hold the message.  In that case, also set
1641    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1642    required number of bytes is too large to store.  */
1643 static int
1644 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1645                 yytype_int16 *yyssp, int yytoken)
1646 {
1647   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1648   YYSIZE_T yysize = yysize0;
1649   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1650   /* Internationalized format string. */
1651   const char *yyformat = YY_NULLPTR;
1652   /* Arguments of yyformat. */
1653   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1654   /* Number of reported tokens (one for the "unexpected", one per
1655      "expected"). */
1656   int yycount = 0;
1657
1658   /* There are many possibilities here to consider:
1659      - If this state is a consistent state with a default action, then
1660        the only way this function was invoked is if the default action
1661        is an error action.  In that case, don't check for expected
1662        tokens because there are none.
1663      - The only way there can be no lookahead present (in yychar) is if
1664        this state is a consistent state with a default action.  Thus,
1665        detecting the absence of a lookahead is sufficient to determine
1666        that there is no unexpected or expected token to report.  In that
1667        case, just report a simple "syntax error".
1668      - Don't assume there isn't a lookahead just because this state is a
1669        consistent state with a default action.  There might have been a
1670        previous inconsistent state, consistent state with a non-default
1671        action, or user semantic action that manipulated yychar.
1672      - Of course, the expected token list depends on states to have
1673        correct lookahead information, and it depends on the parser not
1674        to perform extra reductions after fetching a lookahead from the
1675        scanner and before detecting a syntax error.  Thus, state merging
1676        (from LALR or IELR) and default reductions corrupt the expected
1677        token list.  However, the list is correct for canonical LR with
1678        one exception: it will still contain any token that will not be
1679        accepted due to an error action in a later state.
1680   */
1681   if (yytoken != YYEMPTY)
1682     {
1683       int yyn = yypact[*yyssp];
1684       yyarg[yycount++] = yytname[yytoken];
1685       if (!yypact_value_is_default (yyn))
1686         {
1687           /* Start YYX at -YYN if negative to avoid negative indexes in
1688              YYCHECK.  In other words, skip the first -YYN actions for
1689              this state because they are default actions.  */
1690           int yyxbegin = yyn < 0 ? -yyn : 0;
1691           /* Stay within bounds of both yycheck and yytname.  */
1692           int yychecklim = YYLAST - yyn + 1;
1693           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1694           int yyx;
1695
1696           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1697             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1698                 && !yytable_value_is_error (yytable[yyx + yyn]))
1699               {
1700                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1701                   {
1702                     yycount = 1;
1703                     yysize = yysize0;
1704                     break;
1705                   }
1706                 yyarg[yycount++] = yytname[yyx];
1707                 {
1708                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1709                   if (! (yysize <= yysize1
1710                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1711                     return 2;
1712                   yysize = yysize1;
1713                 }
1714               }
1715         }
1716     }
1717
1718   switch (yycount)
1719     {
1720 # define YYCASE_(N, S)                      \
1721       case N:                               \
1722         yyformat = S;                       \
1723       break
1724       YYCASE_(0, YY_("syntax error"));
1725       YYCASE_(1, YY_("syntax error, unexpected %s"));
1726       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1727       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1728       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1729       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1730 # undef YYCASE_
1731     }
1732
1733   {
1734     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1735     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1736       return 2;
1737     yysize = yysize1;
1738   }
1739
1740   if (*yymsg_alloc < yysize)
1741     {
1742       *yymsg_alloc = 2 * yysize;
1743       if (! (yysize <= *yymsg_alloc
1744              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1745         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1746       return 1;
1747     }
1748
1749   /* Avoid sprintf, as that infringes on the user's name space.
1750      Don't have undefined behavior even if the translation
1751      produced a string with the wrong number of "%s"s.  */
1752   {
1753     char *yyp = *yymsg;
1754     int yyi = 0;
1755     while ((*yyp = *yyformat) != '\0')
1756       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1757         {
1758           yyp += yytnamerr (yyp, yyarg[yyi++]);
1759           yyformat += 2;
1760         }
1761       else
1762         {
1763           yyp++;
1764           yyformat++;
1765         }
1766   }
1767   return 0;
1768 }
1769 #endif /* YYERROR_VERBOSE */
1770
1771 /*-----------------------------------------------.
1772 | Release the memory associated to this symbol.  |
1773 `-----------------------------------------------*/
1774
1775 static void
1776 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1777 {
1778   YYUSE (yyvaluep);
1779   if (!yymsg)
1780     yymsg = "Deleting";
1781   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1782
1783   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1784   YYUSE (yytype);
1785   YY_IGNORE_MAYBE_UNINITIALIZED_END
1786 }
1787
1788
1789
1790
1791 /* The lookahead symbol.  */
1792 int yychar;
1793
1794 /* The semantic value of the lookahead symbol.  */
1795 YYSTYPE yylval;
1796 /* Number of syntax errors so far.  */
1797 int yynerrs;
1798
1799
1800 /*----------.
1801 | yyparse.  |
1802 `----------*/
1803
1804 int
1805 yyparse (void)
1806 {
1807     int yystate;
1808     /* Number of tokens to shift before error messages enabled.  */
1809     int yyerrstatus;
1810
1811     /* The stacks and their tools:
1812        'yyss': related to states.
1813        'yyvs': related to semantic values.
1814
1815        Refer to the stacks through separate pointers, to allow yyoverflow
1816        to reallocate them elsewhere.  */
1817
1818     /* The state stack.  */
1819     yytype_int16 yyssa[YYINITDEPTH];
1820     yytype_int16 *yyss;
1821     yytype_int16 *yyssp;
1822
1823     /* The semantic value stack.  */
1824     YYSTYPE yyvsa[YYINITDEPTH];
1825     YYSTYPE *yyvs;
1826     YYSTYPE *yyvsp;
1827
1828     YYSIZE_T yystacksize;
1829
1830   int yyn;
1831   int yyresult;
1832   /* Lookahead token as an internal (translated) token number.  */
1833   int yytoken = 0;
1834   /* The variables used to return semantic value and location from the
1835      action routines.  */
1836   YYSTYPE yyval;
1837
1838 #if YYERROR_VERBOSE
1839   /* Buffer for error messages, and its allocated size.  */
1840   char yymsgbuf[128];
1841   char *yymsg = yymsgbuf;
1842   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1843 #endif
1844
1845 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1846
1847   /* The number of symbols on the RHS of the reduced rule.
1848      Keep to zero when no symbol should be popped.  */
1849   int yylen = 0;
1850
1851   yyssp = yyss = yyssa;
1852   yyvsp = yyvs = yyvsa;
1853   yystacksize = YYINITDEPTH;
1854
1855   YYDPRINTF ((stderr, "Starting parse\n"));
1856
1857   yystate = 0;
1858   yyerrstatus = 0;
1859   yynerrs = 0;
1860   yychar = YYEMPTY; /* Cause a token to be read.  */
1861   goto yysetstate;
1862
1863 /*------------------------------------------------------------.
1864 | yynewstate -- Push a new state, which is found in yystate.  |
1865 `------------------------------------------------------------*/
1866  yynewstate:
1867   /* In all cases, when you get here, the value and location stacks
1868      have just been pushed.  So pushing a state here evens the stacks.  */
1869   yyssp++;
1870
1871  yysetstate:
1872   *yyssp = yystate;
1873
1874   if (yyss + yystacksize - 1 <= yyssp)
1875     {
1876       /* Get the current used size of the three stacks, in elements.  */
1877       YYSIZE_T yysize = yyssp - yyss + 1;
1878
1879 #ifdef yyoverflow
1880       {
1881         /* Give user a chance to reallocate the stack.  Use copies of
1882            these so that the &'s don't force the real ones into
1883            memory.  */
1884         YYSTYPE *yyvs1 = yyvs;
1885         yytype_int16 *yyss1 = yyss;
1886
1887         /* Each stack pointer address is followed by the size of the
1888            data in use in that stack, in bytes.  This used to be a
1889            conditional around just the two extra args, but that might
1890            be undefined if yyoverflow is a macro.  */
1891         yyoverflow (YY_("memory exhausted"),
1892                     &yyss1, yysize * sizeof (*yyssp),
1893                     &yyvs1, yysize * sizeof (*yyvsp),
1894                     &yystacksize);
1895
1896         yyss = yyss1;
1897         yyvs = yyvs1;
1898       }
1899 #else /* no yyoverflow */
1900 # ifndef YYSTACK_RELOCATE
1901       goto yyexhaustedlab;
1902 # else
1903       /* Extend the stack our own way.  */
1904       if (YYMAXDEPTH <= yystacksize)
1905         goto yyexhaustedlab;
1906       yystacksize *= 2;
1907       if (YYMAXDEPTH < yystacksize)
1908         yystacksize = YYMAXDEPTH;
1909
1910       {
1911         yytype_int16 *yyss1 = yyss;
1912         union yyalloc *yyptr =
1913           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1914         if (! yyptr)
1915           goto yyexhaustedlab;
1916         YYSTACK_RELOCATE (yyss_alloc, yyss);
1917         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1918 #  undef YYSTACK_RELOCATE
1919         if (yyss1 != yyssa)
1920           YYSTACK_FREE (yyss1);
1921       }
1922 # endif
1923 #endif /* no yyoverflow */
1924
1925       yyssp = yyss + yysize - 1;
1926       yyvsp = yyvs + yysize - 1;
1927
1928       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1929                   (unsigned long int) yystacksize));
1930
1931       if (yyss + yystacksize - 1 <= yyssp)
1932         YYABORT;
1933     }
1934
1935   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1936
1937   if (yystate == YYFINAL)
1938     YYACCEPT;
1939
1940   goto yybackup;
1941
1942 /*-----------.
1943 | yybackup.  |
1944 `-----------*/
1945 yybackup:
1946
1947   /* Do appropriate processing given the current state.  Read a
1948      lookahead token if we need one and don't already have one.  */
1949
1950   /* First try to decide what to do without reference to lookahead token.  */
1951   yyn = yypact[yystate];
1952   if (yypact_value_is_default (yyn))
1953     goto yydefault;
1954
1955   /* Not known => get a lookahead token if don't already have one.  */
1956
1957   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1958   if (yychar == YYEMPTY)
1959     {
1960       YYDPRINTF ((stderr, "Reading a token: "));
1961       yychar = yylex ();
1962     }
1963
1964   if (yychar <= YYEOF)
1965     {
1966       yychar = yytoken = YYEOF;
1967       YYDPRINTF ((stderr, "Now at end of input.\n"));
1968     }
1969   else
1970     {
1971       yytoken = YYTRANSLATE (yychar);
1972       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1973     }
1974
1975   /* If the proper action on seeing token YYTOKEN is to reduce or to
1976      detect an error, take that action.  */
1977   yyn += yytoken;
1978   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1979     goto yydefault;
1980   yyn = yytable[yyn];
1981   if (yyn <= 0)
1982     {
1983       if (yytable_value_is_error (yyn))
1984         goto yyerrlab;
1985       yyn = -yyn;
1986       goto yyreduce;
1987     }
1988
1989   /* Count tokens shifted since error; after three, turn off error
1990      status.  */
1991   if (yyerrstatus)
1992     yyerrstatus--;
1993
1994   /* Shift the lookahead token.  */
1995   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1996
1997   /* Discard the shifted token.  */
1998   yychar = YYEMPTY;
1999
2000   yystate = yyn;
2001   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2002   *++yyvsp = yylval;
2003   YY_IGNORE_MAYBE_UNINITIALIZED_END
2004
2005   goto yynewstate;
2006
2007
2008 /*-----------------------------------------------------------.
2009 | yydefault -- do the default action for the current state.  |
2010 `-----------------------------------------------------------*/
2011 yydefault:
2012   yyn = yydefact[yystate];
2013   if (yyn == 0)
2014     goto yyerrlab;
2015   goto yyreduce;
2016
2017
2018 /*-----------------------------.
2019 | yyreduce -- Do a reduction.  |
2020 `-----------------------------*/
2021 yyreduce:
2022   /* yyn is the number of a rule to reduce with.  */
2023   yylen = yyr2[yyn];
2024
2025   /* If YYLEN is nonzero, implement the default value of the action:
2026      '$$ = $1'.
2027
2028      Otherwise, the following line sets YYVAL to garbage.
2029      This behavior is undocumented and Bison
2030      users should not rely upon it.  Assigning to YYVAL
2031      unconditionally makes the parser a bit smaller, and it avoids a
2032      GCC warning that YYVAL may be used uninitialized.  */
2033   yyval = yyvsp[1-yylen];
2034
2035
2036   YY_REDUCE_PRINT (yyn);
2037   switch (yyn)
2038     {
2039         case 10:
2040 #line 138 "util/configparser.y" /* yacc.c:1646  */
2041     { 
2042                 OUTYY(("\nP(server:)\n")); 
2043         }
2044 #line 2045 "util/configparser.c" /* yacc.c:1646  */
2045     break;
2046
2047   case 133:
2048 #line 197 "util/configparser.y" /* yacc.c:1646  */
2049     {
2050                 struct config_stub* s;
2051                 OUTYY(("\nP(stub_zone:)\n")); 
2052                 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2053                 if(s) {
2054                         s->next = cfg_parser->cfg->stubs;
2055                         cfg_parser->cfg->stubs = s;
2056                 } else 
2057                         yyerror("out of memory");
2058         }
2059 #line 2060 "util/configparser.c" /* yacc.c:1646  */
2060     break;
2061
2062   case 141:
2063 #line 213 "util/configparser.y" /* yacc.c:1646  */
2064     {
2065                 struct config_stub* s;
2066                 OUTYY(("\nP(forward_zone:)\n")); 
2067                 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2068                 if(s) {
2069                         s->next = cfg_parser->cfg->forwards;
2070                         cfg_parser->cfg->forwards = s;
2071                 } else 
2072                         yyerror("out of memory");
2073         }
2074 #line 2075 "util/configparser.c" /* yacc.c:1646  */
2075     break;
2076
2077   case 148:
2078 #line 229 "util/configparser.y" /* yacc.c:1646  */
2079     { 
2080                 OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
2081                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2082                         yyerror("number expected");
2083                 else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
2084                 free((yyvsp[0].str));
2085         }
2086 #line 2087 "util/configparser.c" /* yacc.c:1646  */
2087     break;
2088
2089   case 149:
2090 #line 238 "util/configparser.y" /* yacc.c:1646  */
2091     { 
2092                 OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
2093                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2094                         yyerror("number expected");
2095                 else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
2096                 free((yyvsp[0].str));
2097         }
2098 #line 2099 "util/configparser.c" /* yacc.c:1646  */
2099     break;
2100
2101   case 150:
2102 #line 247 "util/configparser.y" /* yacc.c:1646  */
2103     { 
2104                 OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
2105                 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
2106                         cfg_parser->cfg->stat_interval = 0;
2107                 else if(atoi((yyvsp[0].str)) == 0)
2108                         yyerror("number expected");
2109                 else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
2110                 free((yyvsp[0].str));
2111         }
2112 #line 2113 "util/configparser.c" /* yacc.c:1646  */
2113     break;
2114
2115   case 151:
2116 #line 258 "util/configparser.y" /* yacc.c:1646  */
2117     {
2118                 OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
2119                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2120                         yyerror("expected yes or no.");
2121                 else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
2122                 free((yyvsp[0].str));
2123         }
2124 #line 2125 "util/configparser.c" /* yacc.c:1646  */
2125     break;
2126
2127   case 152:
2128 #line 267 "util/configparser.y" /* yacc.c:1646  */
2129     {
2130                 OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
2131                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2132                         yyerror("expected yes or no.");
2133                 else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
2134                 free((yyvsp[0].str));
2135         }
2136 #line 2137 "util/configparser.c" /* yacc.c:1646  */
2137     break;
2138
2139   case 153:
2140 #line 276 "util/configparser.y" /* yacc.c:1646  */
2141     {
2142                 OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
2143                 if(atoi((yyvsp[0].str)) == 0)
2144                         yyerror("port number expected");
2145                 else cfg_parser->cfg->port = atoi((yyvsp[0].str));
2146                 free((yyvsp[0].str));
2147         }
2148 #line 2149 "util/configparser.c" /* yacc.c:1646  */
2149     break;
2150
2151   case 154:
2152 #line 285 "util/configparser.y" /* yacc.c:1646  */
2153     {
2154                 OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
2155                 if(cfg_parser->cfg->num_ifs == 0)
2156                         cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
2157                 else    cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
2158                                 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
2159                 if(!cfg_parser->cfg->ifs)
2160                         yyerror("out of memory");
2161                 else
2162                         cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
2163         }
2164 #line 2165 "util/configparser.c" /* yacc.c:1646  */
2165     break;
2166
2167   case 155:
2168 #line 298 "util/configparser.y" /* yacc.c:1646  */
2169     {
2170                 OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
2171                 if(cfg_parser->cfg->num_out_ifs == 0)
2172                         cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
2173                 else    cfg_parser->cfg->out_ifs = realloc(
2174                         cfg_parser->cfg->out_ifs, 
2175                         (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
2176                 if(!cfg_parser->cfg->out_ifs)
2177                         yyerror("out of memory");
2178                 else
2179                         cfg_parser->cfg->out_ifs[
2180                                 cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
2181         }
2182 #line 2183 "util/configparser.c" /* yacc.c:1646  */
2183     break;
2184
2185   case 156:
2186 #line 313 "util/configparser.y" /* yacc.c:1646  */
2187     {
2188                 OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
2189                 if(atoi((yyvsp[0].str)) == 0)
2190                         yyerror("number expected");
2191                 else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
2192                 free((yyvsp[0].str));
2193         }
2194 #line 2195 "util/configparser.c" /* yacc.c:1646  */
2195     break;
2196
2197   case 157:
2198 #line 322 "util/configparser.y" /* yacc.c:1646  */
2199     {
2200                 OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
2201                 if(!cfg_mark_ports((yyvsp[0].str), 1, 
2202                         cfg_parser->cfg->outgoing_avail_ports, 65536))
2203                         yyerror("port number or range (\"low-high\") expected");
2204                 free((yyvsp[0].str));
2205         }
2206 #line 2207 "util/configparser.c" /* yacc.c:1646  */
2207     break;
2208
2209   case 158:
2210 #line 331 "util/configparser.y" /* yacc.c:1646  */
2211     {
2212                 OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
2213                 if(!cfg_mark_ports((yyvsp[0].str), 0, 
2214                         cfg_parser->cfg->outgoing_avail_ports, 65536))
2215                         yyerror("port number or range (\"low-high\") expected");
2216                 free((yyvsp[0].str));
2217         }
2218 #line 2219 "util/configparser.c" /* yacc.c:1646  */
2219     break;
2220
2221   case 159:
2222 #line 340 "util/configparser.y" /* yacc.c:1646  */
2223     {
2224                 OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
2225                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2226                         yyerror("number expected");
2227                 else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
2228                 free((yyvsp[0].str));
2229         }
2230 #line 2231 "util/configparser.c" /* yacc.c:1646  */
2231     break;
2232
2233   case 160:
2234 #line 349 "util/configparser.y" /* yacc.c:1646  */
2235     {
2236                 OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
2237                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2238                         yyerror("number expected");
2239                 else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
2240                 free((yyvsp[0].str));
2241         }
2242 #line 2243 "util/configparser.c" /* yacc.c:1646  */
2243     break;
2244
2245   case 161:
2246 #line 358 "util/configparser.y" /* yacc.c:1646  */
2247     {
2248                 OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
2249                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2250                         yyerror("expected yes or no.");
2251                 else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
2252                 free((yyvsp[0].str));
2253         }
2254 #line 2255 "util/configparser.c" /* yacc.c:1646  */
2255     break;
2256
2257   case 162:
2258 #line 367 "util/configparser.y" /* yacc.c:1646  */
2259     {
2260                 OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
2261                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2262                         yyerror("expected yes or no.");
2263                 else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
2264                 free((yyvsp[0].str));
2265         }
2266 #line 2267 "util/configparser.c" /* yacc.c:1646  */
2267     break;
2268
2269   case 163:
2270 #line 376 "util/configparser.y" /* yacc.c:1646  */
2271     {
2272                 OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
2273                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2274                         yyerror("expected yes or no.");
2275                 else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
2276                 free((yyvsp[0].str));
2277         }
2278 #line 2279 "util/configparser.c" /* yacc.c:1646  */
2279     break;
2280
2281   case 164:
2282 #line 385 "util/configparser.y" /* yacc.c:1646  */
2283     {
2284                 OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
2285                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2286                         yyerror("expected yes or no.");
2287                 else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
2288                 free((yyvsp[0].str));
2289         }
2290 #line 2291 "util/configparser.c" /* yacc.c:1646  */
2291     break;
2292
2293   case 165:
2294 #line 394 "util/configparser.y" /* yacc.c:1646  */
2295     {
2296                 OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
2297                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2298                         yyerror("expected yes or no.");
2299                 else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
2300                 free((yyvsp[0].str));
2301         }
2302 #line 2303 "util/configparser.c" /* yacc.c:1646  */
2303     break;
2304
2305   case 166:
2306 #line 403 "util/configparser.y" /* yacc.c:1646  */
2307     {
2308                 OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
2309                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2310                         yyerror("number expected");
2311                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
2312                 free((yyvsp[0].str));
2313         }
2314 #line 2315 "util/configparser.c" /* yacc.c:1646  */
2315     break;
2316
2317   case 167:
2318 #line 412 "util/configparser.y" /* yacc.c:1646  */
2319     {
2320                 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
2321                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2322                         yyerror("number expected");
2323                 else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
2324                 free((yyvsp[0].str));
2325         }
2326 #line 2327 "util/configparser.c" /* yacc.c:1646  */
2327     break;
2328
2329   case 168:
2330 #line 421 "util/configparser.y" /* yacc.c:1646  */
2331     {
2332                 OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
2333                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2334                         yyerror("expected yes or no.");
2335                 else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
2336                 free((yyvsp[0].str));
2337         }
2338 #line 2339 "util/configparser.c" /* yacc.c:1646  */
2339     break;
2340
2341   case 169:
2342 #line 430 "util/configparser.y" /* yacc.c:1646  */
2343     {
2344                 OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
2345                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2346                         yyerror("expected yes or no.");
2347                 else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
2348                 free((yyvsp[0].str));
2349         }
2350 #line 2351 "util/configparser.c" /* yacc.c:1646  */
2351     break;
2352
2353   case 170:
2354 #line 439 "util/configparser.y" /* yacc.c:1646  */
2355     {
2356                 OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
2357                 free(cfg_parser->cfg->ssl_service_key);
2358                 cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
2359         }
2360 #line 2361 "util/configparser.c" /* yacc.c:1646  */
2361     break;
2362
2363   case 171:
2364 #line 446 "util/configparser.y" /* yacc.c:1646  */
2365     {
2366                 OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
2367                 free(cfg_parser->cfg->ssl_service_pem);
2368                 cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
2369         }
2370 #line 2371 "util/configparser.c" /* yacc.c:1646  */
2371     break;
2372
2373   case 172:
2374 #line 453 "util/configparser.y" /* yacc.c:1646  */
2375     {
2376                 OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
2377                 if(atoi((yyvsp[0].str)) == 0)
2378                         yyerror("port number expected");
2379                 else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
2380                 free((yyvsp[0].str));
2381         }
2382 #line 2383 "util/configparser.c" /* yacc.c:1646  */
2383     break;
2384
2385   case 173:
2386 #line 462 "util/configparser.y" /* yacc.c:1646  */
2387     {
2388                 OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
2389                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2390                         yyerror("expected yes or no.");
2391                 else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
2392                 free((yyvsp[0].str));
2393         }
2394 #line 2395 "util/configparser.c" /* yacc.c:1646  */
2395     break;
2396
2397   case 174:
2398 #line 471 "util/configparser.y" /* yacc.c:1646  */
2399     {
2400                 OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
2401                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2402                         yyerror("expected yes or no.");
2403                 else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
2404 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
2405                 if(strcmp((yyvsp[0].str), "yes") == 0)
2406                         yyerror("no syslog services are available. "
2407                                 "(reconfigure and compile to add)");
2408 #endif
2409                 free((yyvsp[0].str));
2410         }
2411 #line 2412 "util/configparser.c" /* yacc.c:1646  */
2412     break;
2413
2414   case 175:
2415 #line 485 "util/configparser.y" /* yacc.c:1646  */
2416     {
2417                 OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
2418                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2419                         yyerror("expected yes or no.");
2420                 else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
2421                 free((yyvsp[0].str));
2422         }
2423 #line 2424 "util/configparser.c" /* yacc.c:1646  */
2424     break;
2425
2426   case 176:
2427 #line 494 "util/configparser.y" /* yacc.c:1646  */
2428     {
2429                 OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
2430                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2431                         yyerror("expected yes or no.");
2432                 else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
2433                 free((yyvsp[0].str));
2434         }
2435 #line 2436 "util/configparser.c" /* yacc.c:1646  */
2436     break;
2437
2438   case 177:
2439 #line 503 "util/configparser.y" /* yacc.c:1646  */
2440     {
2441                 OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
2442                 free(cfg_parser->cfg->chrootdir);
2443                 cfg_parser->cfg->chrootdir = (yyvsp[0].str);
2444         }
2445 #line 2446 "util/configparser.c" /* yacc.c:1646  */
2446     break;
2447
2448   case 178:
2449 #line 510 "util/configparser.y" /* yacc.c:1646  */
2450     {
2451                 OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
2452                 free(cfg_parser->cfg->username);
2453                 cfg_parser->cfg->username = (yyvsp[0].str);
2454         }
2455 #line 2456 "util/configparser.c" /* yacc.c:1646  */
2456     break;
2457
2458   case 179:
2459 #line 517 "util/configparser.y" /* yacc.c:1646  */
2460     {
2461                 OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
2462                 free(cfg_parser->cfg->directory);
2463                 cfg_parser->cfg->directory = (yyvsp[0].str);
2464         }
2465 #line 2466 "util/configparser.c" /* yacc.c:1646  */
2466     break;
2467
2468   case 180:
2469 #line 524 "util/configparser.y" /* yacc.c:1646  */
2470     {
2471                 OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
2472                 free(cfg_parser->cfg->logfile);
2473                 cfg_parser->cfg->logfile = (yyvsp[0].str);
2474                 cfg_parser->cfg->use_syslog = 0;
2475         }
2476 #line 2477 "util/configparser.c" /* yacc.c:1646  */
2477     break;
2478
2479   case 181:
2480 #line 532 "util/configparser.y" /* yacc.c:1646  */
2481     {
2482                 OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
2483                 free(cfg_parser->cfg->pidfile);
2484                 cfg_parser->cfg->pidfile = (yyvsp[0].str);
2485         }
2486 #line 2487 "util/configparser.c" /* yacc.c:1646  */
2487     break;
2488
2489   case 182:
2490 #line 539 "util/configparser.y" /* yacc.c:1646  */
2491     {
2492                 OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
2493                 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
2494                         yyerror("out of memory");
2495         }
2496 #line 2497 "util/configparser.c" /* yacc.c:1646  */
2497     break;
2498
2499   case 183:
2500 #line 546 "util/configparser.y" /* yacc.c:1646  */
2501     {
2502                 OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
2503                 free(cfg_parser->cfg->dlv_anchor_file);
2504                 cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
2505         }
2506 #line 2507 "util/configparser.c" /* yacc.c:1646  */
2507     break;
2508
2509   case 184:
2510 #line 553 "util/configparser.y" /* yacc.c:1646  */
2511     {
2512                 OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
2513                 if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
2514                         yyerror("out of memory");
2515         }
2516 #line 2517 "util/configparser.c" /* yacc.c:1646  */
2517     break;
2518
2519   case 185:
2520 #line 560 "util/configparser.y" /* yacc.c:1646  */
2521     {
2522                 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
2523                 if(!cfg_strlist_insert(&cfg_parser->cfg->
2524                         auto_trust_anchor_file_list, (yyvsp[0].str)))
2525                         yyerror("out of memory");
2526         }
2527 #line 2528 "util/configparser.c" /* yacc.c:1646  */
2528     break;
2529
2530   case 186:
2531 #line 568 "util/configparser.y" /* yacc.c:1646  */
2532     {
2533                 OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
2534                 if(!cfg_strlist_insert(&cfg_parser->cfg->
2535                         trust_anchor_file_list, (yyvsp[0].str)))
2536                         yyerror("out of memory");
2537         }
2538 #line 2539 "util/configparser.c" /* yacc.c:1646  */
2539     break;
2540
2541   case 187:
2542 #line 576 "util/configparser.y" /* yacc.c:1646  */
2543     {
2544                 OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
2545                 if(!cfg_strlist_insert(&cfg_parser->cfg->
2546                         trusted_keys_file_list, (yyvsp[0].str)))
2547                         yyerror("out of memory");
2548         }
2549 #line 2550 "util/configparser.c" /* yacc.c:1646  */
2550     break;
2551
2552   case 188:
2553 #line 584 "util/configparser.y" /* yacc.c:1646  */
2554     {
2555                 OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
2556                 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
2557                         yyerror("out of memory");
2558         }
2559 #line 2560 "util/configparser.c" /* yacc.c:1646  */
2560     break;
2561
2562   case 189:
2563 #line 591 "util/configparser.y" /* yacc.c:1646  */
2564     {
2565                 OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
2566                 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
2567                         yyerror("out of memory");
2568         }
2569 #line 2570 "util/configparser.c" /* yacc.c:1646  */
2570     break;
2571
2572   case 190:
2573 #line 598 "util/configparser.y" /* yacc.c:1646  */
2574     {
2575                 OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
2576                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2577                         yyerror("expected yes or no.");
2578                 else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
2579                 free((yyvsp[0].str));
2580         }
2581 #line 2582 "util/configparser.c" /* yacc.c:1646  */
2582     break;
2583
2584   case 191:
2585 #line 607 "util/configparser.y" /* yacc.c:1646  */
2586     {
2587                 OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
2588                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2589                         yyerror("expected yes or no.");
2590                 else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
2591                 free((yyvsp[0].str));
2592         }
2593 #line 2594 "util/configparser.c" /* yacc.c:1646  */
2594     break;
2595
2596   case 192:
2597 #line 616 "util/configparser.y" /* yacc.c:1646  */
2598     {
2599                 OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
2600                 free(cfg_parser->cfg->identity);
2601                 cfg_parser->cfg->identity = (yyvsp[0].str);
2602         }
2603 #line 2604 "util/configparser.c" /* yacc.c:1646  */
2604     break;
2605
2606   case 193:
2607 #line 623 "util/configparser.y" /* yacc.c:1646  */
2608     {
2609                 OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
2610                 free(cfg_parser->cfg->version);
2611                 cfg_parser->cfg->version = (yyvsp[0].str);
2612         }
2613 #line 2614 "util/configparser.c" /* yacc.c:1646  */
2614     break;
2615
2616   case 194:
2617 #line 630 "util/configparser.y" /* yacc.c:1646  */
2618     {
2619                 OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
2620                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
2621                         yyerror("buffer size expected");
2622                 free((yyvsp[0].str));
2623         }
2624 #line 2625 "util/configparser.c" /* yacc.c:1646  */
2625     break;
2626
2627   case 195:
2628 #line 638 "util/configparser.y" /* yacc.c:1646  */
2629     {
2630                 OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
2631                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
2632                         yyerror("buffer size expected");
2633                 free((yyvsp[0].str));
2634         }
2635 #line 2636 "util/configparser.c" /* yacc.c:1646  */
2636     break;
2637
2638   case 196:
2639 #line 646 "util/configparser.y" /* yacc.c:1646  */
2640     {
2641         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
2642         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2643             yyerror("expected yes or no.");
2644         else cfg_parser->cfg->so_reuseport =
2645             (strcmp((yyvsp[0].str), "yes")==0);
2646         free((yyvsp[0].str));
2647     }
2648 #line 2649 "util/configparser.c" /* yacc.c:1646  */
2649     break;
2650
2651   case 197:
2652 #line 656 "util/configparser.y" /* yacc.c:1646  */
2653     {
2654         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
2655         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2656             yyerror("expected yes or no.");
2657         else cfg_parser->cfg->ip_transparent =
2658             (strcmp((yyvsp[0].str), "yes")==0);
2659         free((yyvsp[0].str));
2660     }
2661 #line 2662 "util/configparser.c" /* yacc.c:1646  */
2662     break;
2663
2664   case 198:
2665 #line 666 "util/configparser.y" /* yacc.c:1646  */
2666     {
2667                 OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
2668                 if(atoi((yyvsp[0].str)) == 0)
2669                         yyerror("number expected");
2670                 else if (atoi((yyvsp[0].str)) < 12)
2671                         yyerror("edns buffer size too small");
2672                 else if (atoi((yyvsp[0].str)) > 65535)
2673                         cfg_parser->cfg->edns_buffer_size = 65535;
2674                 else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
2675                 free((yyvsp[0].str));
2676         }
2677 #line 2678 "util/configparser.c" /* yacc.c:1646  */
2678     break;
2679
2680   case 199:
2681 #line 679 "util/configparser.y" /* yacc.c:1646  */
2682     {
2683                 OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
2684                 if(atoi((yyvsp[0].str)) == 0)
2685                         yyerror("number expected");
2686                 else if (atoi((yyvsp[0].str)) < 4096)
2687                         yyerror("message buffer size too small (use 4096)");
2688                 else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
2689                 free((yyvsp[0].str));
2690         }
2691 #line 2692 "util/configparser.c" /* yacc.c:1646  */
2692     break;
2693
2694   case 200:
2695 #line 690 "util/configparser.y" /* yacc.c:1646  */
2696     {
2697                 OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
2698                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
2699                         yyerror("memory size expected");
2700                 free((yyvsp[0].str));
2701         }
2702 #line 2703 "util/configparser.c" /* yacc.c:1646  */
2703     break;
2704
2705   case 201:
2706 #line 698 "util/configparser.y" /* yacc.c:1646  */
2707     {
2708                 OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
2709                 if(atoi((yyvsp[0].str)) == 0)
2710                         yyerror("number expected");
2711                 else {
2712                         cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
2713                         if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
2714                                 yyerror("must be a power of 2");
2715                 }
2716                 free((yyvsp[0].str));
2717         }
2718 #line 2719 "util/configparser.c" /* yacc.c:1646  */
2719     break;
2720
2721   case 202:
2722 #line 711 "util/configparser.y" /* yacc.c:1646  */
2723     {
2724                 OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
2725                 if(atoi((yyvsp[0].str)) == 0)
2726                         yyerror("number expected");
2727                 else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
2728                 free((yyvsp[0].str));
2729         }
2730 #line 2731 "util/configparser.c" /* yacc.c:1646  */
2731     break;
2732
2733   case 203:
2734 #line 720 "util/configparser.y" /* yacc.c:1646  */
2735     {
2736                 OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
2737                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2738                         yyerror("number expected");
2739                 else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
2740                 free((yyvsp[0].str));
2741         }
2742 #line 2743 "util/configparser.c" /* yacc.c:1646  */
2743     break;
2744
2745   case 204:
2746 #line 729 "util/configparser.y" /* yacc.c:1646  */
2747     {
2748                 OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
2749                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2750                         yyerror("number expected");
2751                 else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
2752                 free((yyvsp[0].str));
2753         }
2754 #line 2755 "util/configparser.c" /* yacc.c:1646  */
2755     break;
2756
2757   case 205:
2758 #line 738 "util/configparser.y" /* yacc.c:1646  */
2759     {
2760                 OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
2761                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2762                         yyerror("expected yes or no.");
2763                 else cfg_parser->cfg->unblock_lan_zones = 
2764                         (strcmp((yyvsp[0].str), "yes")==0);
2765                 free((yyvsp[0].str));
2766         }
2767 #line 2768 "util/configparser.c" /* yacc.c:1646  */
2768     break;
2769
2770   case 206:
2771 #line 748 "util/configparser.y" /* yacc.c:1646  */
2772     {
2773                 OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
2774                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2775                         yyerror("expected yes or no.");
2776                 else cfg_parser->cfg->insecure_lan_zones = 
2777                         (strcmp((yyvsp[0].str), "yes")==0);
2778                 free((yyvsp[0].str));
2779         }
2780 #line 2781 "util/configparser.c" /* yacc.c:1646  */
2781     break;
2782
2783   case 207:
2784 #line 758 "util/configparser.y" /* yacc.c:1646  */
2785     {
2786                 OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
2787                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
2788                         yyerror("memory size expected");
2789                 free((yyvsp[0].str));
2790         }
2791 #line 2792 "util/configparser.c" /* yacc.c:1646  */
2792     break;
2793
2794   case 208:
2795 #line 766 "util/configparser.y" /* yacc.c:1646  */
2796     {
2797                 OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
2798                 if(atoi((yyvsp[0].str)) == 0)
2799                         yyerror("number expected");
2800                 else {
2801                         cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
2802                         if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
2803                                 yyerror("must be a power of 2");
2804                 }
2805                 free((yyvsp[0].str));
2806         }
2807 #line 2808 "util/configparser.c" /* yacc.c:1646  */
2808     break;
2809
2810   case 209:
2811 #line 779 "util/configparser.y" /* yacc.c:1646  */
2812     {
2813                 OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
2814                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2815                         yyerror("number expected");
2816                 else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
2817                 free((yyvsp[0].str));
2818         }
2819 #line 2820 "util/configparser.c" /* yacc.c:1646  */
2820     break;
2821
2822   case 210:
2823 #line 788 "util/configparser.y" /* yacc.c:1646  */
2824     {
2825                 OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
2826                 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
2827                         "removed, use infra-host-ttl)", (yyvsp[0].str));
2828                 free((yyvsp[0].str));
2829         }
2830 #line 2831 "util/configparser.c" /* yacc.c:1646  */
2831     break;
2832
2833   case 211:
2834 #line 796 "util/configparser.y" /* yacc.c:1646  */
2835     {
2836                 OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
2837                 if(atoi((yyvsp[0].str)) == 0)
2838                         yyerror("number expected");
2839                 else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
2840                 free((yyvsp[0].str));
2841         }
2842 #line 2843 "util/configparser.c" /* yacc.c:1646  */
2843     break;
2844
2845   case 212:
2846 #line 805 "util/configparser.y" /* yacc.c:1646  */
2847     {
2848                 OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
2849                 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
2850                         "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
2851                 free((yyvsp[0].str));
2852         }
2853 #line 2854 "util/configparser.c" /* yacc.c:1646  */
2854     break;
2855
2856   case 213:
2857 #line 813 "util/configparser.y" /* yacc.c:1646  */
2858     {
2859                 OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
2860                 if(atoi((yyvsp[0].str)) == 0)
2861                         yyerror("number expected");
2862                 else {
2863                         cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
2864                         if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
2865                                 yyerror("must be a power of 2");
2866                 }
2867                 free((yyvsp[0].str));
2868         }
2869 #line 2870 "util/configparser.c" /* yacc.c:1646  */
2870     break;
2871
2872   case 214:
2873 #line 826 "util/configparser.y" /* yacc.c:1646  */
2874     {
2875                 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
2876                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
2877                         yyerror("number expected");
2878                 else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
2879                 free((yyvsp[0].str));
2880         }
2881 #line 2882 "util/configparser.c" /* yacc.c:1646  */
2882     break;
2883
2884   case 215:
2885 #line 835 "util/configparser.y" /* yacc.c:1646  */
2886     {
2887                 OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
2888                 free(cfg_parser->cfg->target_fetch_policy);
2889                 cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
2890         }
2891 #line 2892 "util/configparser.c" /* yacc.c:1646  */
2892     break;
2893
2894   case 216:
2895 #line 842 "util/configparser.y" /* yacc.c:1646  */
2896     {
2897                 OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
2898                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2899                         yyerror("expected yes or no.");
2900                 else cfg_parser->cfg->harden_short_bufsize = 
2901                         (strcmp((yyvsp[0].str), "yes")==0);
2902                 free((yyvsp[0].str));
2903         }
2904 #line 2905 "util/configparser.c" /* yacc.c:1646  */
2905     break;
2906
2907   case 217:
2908 #line 852 "util/configparser.y" /* yacc.c:1646  */
2909     {
2910                 OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
2911                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2912                         yyerror("expected yes or no.");
2913                 else cfg_parser->cfg->harden_large_queries = 
2914                         (strcmp((yyvsp[0].str), "yes")==0);
2915                 free((yyvsp[0].str));
2916         }
2917 #line 2918 "util/configparser.c" /* yacc.c:1646  */
2918     break;
2919
2920   case 218:
2921 #line 862 "util/configparser.y" /* yacc.c:1646  */
2922     {
2923                 OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
2924                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2925                         yyerror("expected yes or no.");
2926                 else cfg_parser->cfg->harden_glue = 
2927                         (strcmp((yyvsp[0].str), "yes")==0);
2928                 free((yyvsp[0].str));
2929         }
2930 #line 2931 "util/configparser.c" /* yacc.c:1646  */
2931     break;
2932
2933   case 219:
2934 #line 872 "util/configparser.y" /* yacc.c:1646  */
2935     {
2936                 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
2937                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2938                         yyerror("expected yes or no.");
2939                 else cfg_parser->cfg->harden_dnssec_stripped = 
2940                         (strcmp((yyvsp[0].str), "yes")==0);
2941                 free((yyvsp[0].str));
2942         }
2943 #line 2944 "util/configparser.c" /* yacc.c:1646  */
2944     break;
2945
2946   case 220:
2947 #line 882 "util/configparser.y" /* yacc.c:1646  */
2948     {
2949                 OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
2950                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2951                         yyerror("expected yes or no.");
2952                 else cfg_parser->cfg->harden_below_nxdomain = 
2953                         (strcmp((yyvsp[0].str), "yes")==0);
2954                 free((yyvsp[0].str));
2955         }
2956 #line 2957 "util/configparser.c" /* yacc.c:1646  */
2957     break;
2958
2959   case 221:
2960 #line 892 "util/configparser.y" /* yacc.c:1646  */
2961     {
2962                 OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
2963                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2964                         yyerror("expected yes or no.");
2965                 else cfg_parser->cfg->harden_referral_path = 
2966                         (strcmp((yyvsp[0].str), "yes")==0);
2967                 free((yyvsp[0].str));
2968         }
2969 #line 2970 "util/configparser.c" /* yacc.c:1646  */
2970     break;
2971
2972   case 222:
2973 #line 902 "util/configparser.y" /* yacc.c:1646  */
2974     {
2975                 OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
2976                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2977                         yyerror("expected yes or no.");
2978                 else cfg_parser->cfg->harden_algo_downgrade = 
2979                         (strcmp((yyvsp[0].str), "yes")==0);
2980                 free((yyvsp[0].str));
2981         }
2982 #line 2983 "util/configparser.c" /* yacc.c:1646  */
2983     break;
2984
2985   case 223:
2986 #line 912 "util/configparser.y" /* yacc.c:1646  */
2987     {
2988                 OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
2989                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
2990                         yyerror("expected yes or no.");
2991                 else cfg_parser->cfg->use_caps_bits_for_id = 
2992                         (strcmp((yyvsp[0].str), "yes")==0);
2993                 free((yyvsp[0].str));
2994         }
2995 #line 2996 "util/configparser.c" /* yacc.c:1646  */
2996     break;
2997
2998   case 224:
2999 #line 922 "util/configparser.y" /* yacc.c:1646  */
3000     {
3001                 OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
3002                 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
3003                         yyerror("out of memory");
3004         }
3005 #line 3006 "util/configparser.c" /* yacc.c:1646  */
3006     break;
3007
3008   case 225:
3009 #line 929 "util/configparser.y" /* yacc.c:1646  */
3010     {
3011                 OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
3012                 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
3013                         yyerror("out of memory");
3014         }
3015 #line 3016 "util/configparser.c" /* yacc.c:1646  */
3016     break;
3017
3018   case 226:
3019 #line 936 "util/configparser.y" /* yacc.c:1646  */
3020     {
3021                 OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
3022                 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
3023                         yyerror("out of memory");
3024         }
3025 #line 3026 "util/configparser.c" /* yacc.c:1646  */
3026     break;
3027
3028   case 227:
3029 #line 943 "util/configparser.y" /* yacc.c:1646  */
3030     {
3031                 OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
3032                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3033                         yyerror("expected yes or no.");
3034                 else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
3035                 free((yyvsp[0].str));
3036         }
3037 #line 3038 "util/configparser.c" /* yacc.c:1646  */
3038     break;
3039
3040   case 228:
3041 #line 952 "util/configparser.y" /* yacc.c:1646  */
3042     {
3043                 OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
3044                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3045                         yyerror("expected yes or no.");
3046                 else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
3047                 free((yyvsp[0].str));
3048         }
3049 #line 3050 "util/configparser.c" /* yacc.c:1646  */
3050     break;
3051
3052   case 229:
3053 #line 961 "util/configparser.y" /* yacc.c:1646  */
3054     {
3055                 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
3056                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3057                         yyerror("number expected");
3058                 else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
3059                 free((yyvsp[0].str));
3060         }
3061 #line 3062 "util/configparser.c" /* yacc.c:1646  */
3062     break;
3063
3064   case 230:
3065 #line 970 "util/configparser.y" /* yacc.c:1646  */
3066     {
3067                 OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
3068                 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
3069                         yyerror("out of memory");
3070         }
3071 #line 3072 "util/configparser.c" /* yacc.c:1646  */
3072     break;
3073
3074   case 231:
3075 #line 977 "util/configparser.y" /* yacc.c:1646  */
3076     {
3077                 OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
3078                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3079                         yyerror("expected yes or no.");
3080                 else cfg_parser->cfg->donotquery_localhost = 
3081                         (strcmp((yyvsp[0].str), "yes")==0);
3082                 free((yyvsp[0].str));
3083         }
3084 #line 3085 "util/configparser.c" /* yacc.c:1646  */
3085     break;
3086
3087   case 232:
3088 #line 987 "util/configparser.y" /* yacc.c:1646  */
3089     {
3090                 OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
3091                 if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
3092                         strcmp((yyvsp[0].str), "deny_non_local")!=0 &&
3093                         strcmp((yyvsp[0].str), "refuse_non_local")!=0 &&
3094                         strcmp((yyvsp[0].str), "allow")!=0 && 
3095                         strcmp((yyvsp[0].str), "allow_snoop")!=0) {
3096                         yyerror("expected deny, refuse, deny_non_local, "
3097                                 "refuse_non_local, allow or allow_snoop "
3098                                 "in access control action");
3099                 } else {
3100                         if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
3101                                 fatal_exit("out of memory adding acl");
3102                 }
3103         }
3104 #line 3105 "util/configparser.c" /* yacc.c:1646  */
3105     break;
3106
3107   case 233:
3108 #line 1004 "util/configparser.y" /* yacc.c:1646  */
3109     {
3110                 OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
3111                 free(cfg_parser->cfg->module_conf);
3112                 cfg_parser->cfg->module_conf = (yyvsp[0].str);
3113         }
3114 #line 3115 "util/configparser.c" /* yacc.c:1646  */
3115     break;
3116
3117   case 234:
3118 #line 1011 "util/configparser.y" /* yacc.c:1646  */
3119     {
3120                 OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
3121                 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
3122                         cfg_parser->cfg->val_date_override = 0;
3123                 } else if(strlen((yyvsp[0].str)) == 14) {
3124                         cfg_parser->cfg->val_date_override = 
3125                                 cfg_convert_timeval((yyvsp[0].str));
3126                         if(!cfg_parser->cfg->val_date_override)
3127                                 yyerror("bad date/time specification");
3128                 } else {
3129                         if(atoi((yyvsp[0].str)) == 0)
3130                                 yyerror("number expected");
3131                         cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
3132                 }
3133                 free((yyvsp[0].str));
3134         }
3135 #line 3136 "util/configparser.c" /* yacc.c:1646  */
3136     break;
3137
3138   case 235:
3139 #line 1029 "util/configparser.y" /* yacc.c:1646  */
3140     {
3141                 OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
3142                 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
3143                         cfg_parser->cfg->val_sig_skew_min = 0;
3144                 } else {
3145                         cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
3146                         if(!cfg_parser->cfg->val_sig_skew_min)
3147                                 yyerror("number expected");
3148                 }
3149                 free((yyvsp[0].str));
3150         }
3151 #line 3152 "util/configparser.c" /* yacc.c:1646  */
3152     break;
3153
3154   case 236:
3155 #line 1042 "util/configparser.y" /* yacc.c:1646  */
3156     {
3157                 OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
3158                 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
3159                         cfg_parser->cfg->val_sig_skew_max = 0;
3160                 } else {
3161                         cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
3162                         if(!cfg_parser->cfg->val_sig_skew_max)
3163                                 yyerror("number expected");
3164                 }
3165                 free((yyvsp[0].str));
3166         }
3167 #line 3168 "util/configparser.c" /* yacc.c:1646  */
3168     break;
3169
3170   case 237:
3171 #line 1055 "util/configparser.y" /* yacc.c:1646  */
3172     {
3173                 OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
3174                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3175                         yyerror("number expected");
3176                 else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
3177                 free((yyvsp[0].str));
3178         }
3179 #line 3180 "util/configparser.c" /* yacc.c:1646  */
3180     break;
3181
3182   case 238:
3183 #line 1064 "util/configparser.y" /* yacc.c:1646  */
3184     {
3185                 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
3186                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3187                         yyerror("number expected");
3188                 else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
3189                 free((yyvsp[0].str));
3190         }
3191 #line 3192 "util/configparser.c" /* yacc.c:1646  */
3192     break;
3193
3194   case 239:
3195 #line 1073 "util/configparser.y" /* yacc.c:1646  */
3196     {
3197                 OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
3198                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3199                         yyerror("number expected");
3200                 else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
3201                 free((yyvsp[0].str));
3202         }
3203 #line 3204 "util/configparser.c" /* yacc.c:1646  */
3204     break;
3205
3206   case 240:
3207 #line 1082 "util/configparser.y" /* yacc.c:1646  */
3208     {
3209                 OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
3210                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3211                         yyerror("number expected");
3212                 else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
3213                 free((yyvsp[0].str));
3214         }
3215 #line 3216 "util/configparser.c" /* yacc.c:1646  */
3216     break;
3217
3218   case 241:
3219 #line 1091 "util/configparser.y" /* yacc.c:1646  */
3220     {
3221                 OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
3222                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3223                         yyerror("expected yes or no.");
3224                 else cfg_parser->cfg->val_clean_additional = 
3225                         (strcmp((yyvsp[0].str), "yes")==0);
3226                 free((yyvsp[0].str));
3227         }
3228 #line 3229 "util/configparser.c" /* yacc.c:1646  */
3229     break;
3230
3231   case 242:
3232 #line 1101 "util/configparser.y" /* yacc.c:1646  */
3233     {
3234                 OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
3235                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3236                         yyerror("expected yes or no.");
3237                 else cfg_parser->cfg->val_permissive_mode = 
3238                         (strcmp((yyvsp[0].str), "yes")==0);
3239                 free((yyvsp[0].str));
3240         }
3241 #line 3242 "util/configparser.c" /* yacc.c:1646  */
3242     break;
3243
3244   case 243:
3245 #line 1111 "util/configparser.y" /* yacc.c:1646  */
3246     {
3247                 OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
3248                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3249                         yyerror("expected yes or no.");
3250                 else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
3251                 free((yyvsp[0].str));
3252         }
3253 #line 3254 "util/configparser.c" /* yacc.c:1646  */
3254     break;
3255
3256   case 244:
3257 #line 1120 "util/configparser.y" /* yacc.c:1646  */
3258     {
3259                 OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
3260                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3261                         yyerror("number expected");
3262                 else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
3263                 free((yyvsp[0].str));
3264         }
3265 #line 3266 "util/configparser.c" /* yacc.c:1646  */
3266     break;
3267
3268   case 245:
3269 #line 1129 "util/configparser.y" /* yacc.c:1646  */
3270     {
3271                 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
3272                 free(cfg_parser->cfg->val_nsec3_key_iterations);
3273                 cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
3274         }
3275 #line 3276 "util/configparser.c" /* yacc.c:1646  */
3276     break;
3277
3278   case 246:
3279 #line 1136 "util/configparser.y" /* yacc.c:1646  */
3280     {
3281                 OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
3282                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3283                         yyerror("number expected");
3284                 else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
3285                 free((yyvsp[0].str));
3286         }
3287 #line 3288 "util/configparser.c" /* yacc.c:1646  */
3288     break;
3289
3290   case 247:
3291 #line 1145 "util/configparser.y" /* yacc.c:1646  */
3292     {
3293                 OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
3294                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3295                         yyerror("number expected");
3296                 else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
3297                 free((yyvsp[0].str));
3298         }
3299 #line 3300 "util/configparser.c" /* yacc.c:1646  */
3300     break;
3301
3302   case 248:
3303 #line 1154 "util/configparser.y" /* yacc.c:1646  */
3304     {
3305                 OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
3306                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3307                         yyerror("number expected");
3308                 else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
3309                 free((yyvsp[0].str));
3310         }
3311 #line 3312 "util/configparser.c" /* yacc.c:1646  */
3312     break;
3313
3314   case 249:
3315 #line 1163 "util/configparser.y" /* yacc.c:1646  */
3316     {
3317                 OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
3318                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3319                         yyerror("expected yes or no.");
3320                 else cfg_parser->cfg->permit_small_holddown =
3321                         (strcmp((yyvsp[0].str), "yes")==0);
3322                 free((yyvsp[0].str));
3323         }
3324 #line 3325 "util/configparser.c" /* yacc.c:1646  */
3325     break;
3326
3327   case 250:
3328 #line 1172 "util/configparser.y" /* yacc.c:1646  */
3329     {
3330                 OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
3331                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
3332                         yyerror("memory size expected");
3333                 free((yyvsp[0].str));
3334         }
3335 #line 3336 "util/configparser.c" /* yacc.c:1646  */
3336     break;
3337
3338   case 251:
3339 #line 1180 "util/configparser.y" /* yacc.c:1646  */
3340     {
3341                 OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
3342                 if(atoi((yyvsp[0].str)) == 0)
3343                         yyerror("number expected");
3344                 else {
3345                         cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
3346                         if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
3347                                 yyerror("must be a power of 2");
3348                 }
3349                 free((yyvsp[0].str));
3350         }
3351 #line 3352 "util/configparser.c" /* yacc.c:1646  */
3352     break;
3353
3354   case 252:
3355 #line 1193 "util/configparser.y" /* yacc.c:1646  */
3356     {
3357                 OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
3358                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
3359                         yyerror("memory size expected");
3360                 free((yyvsp[0].str));
3361         }
3362 #line 3363 "util/configparser.c" /* yacc.c:1646  */
3363     break;
3364
3365   case 253:
3366 #line 1201 "util/configparser.y" /* yacc.c:1646  */
3367     {
3368                 OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
3369                 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
3370                    strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
3371                    strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
3372                    && strcmp((yyvsp[0].str), "typetransparent")!=0 &&
3373                    strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0)
3374                         yyerror("local-zone type: expected static, deny, "
3375                                 "refuse, redirect, transparent, "
3376                                 "typetransparent, inform, inform_deny "
3377                                 "or nodefault");
3378                 else if(strcmp((yyvsp[0].str), "nodefault")==0) {
3379                         if(!cfg_strlist_insert(&cfg_parser->cfg->
3380                                 local_zones_nodefault, (yyvsp[-1].str)))
3381                                 fatal_exit("out of memory adding local-zone");
3382                         free((yyvsp[0].str));
3383                 } else {
3384                         if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, 
3385                                 (yyvsp[-1].str), (yyvsp[0].str)))
3386                                 fatal_exit("out of memory adding local-zone");
3387                 }
3388         }
3389 #line 3390 "util/configparser.c" /* yacc.c:1646  */
3390     break;
3391
3392   case 254:
3393 #line 1225 "util/configparser.y" /* yacc.c:1646  */
3394     {
3395                 OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
3396                 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
3397                         fatal_exit("out of memory adding local-data");
3398         }
3399 #line 3400 "util/configparser.c" /* yacc.c:1646  */
3400     break;
3401
3402   case 255:
3403 #line 1232 "util/configparser.y" /* yacc.c:1646  */
3404     {
3405                 char* ptr;
3406                 OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
3407                 ptr = cfg_ptr_reverse((yyvsp[0].str));
3408                 free((yyvsp[0].str));
3409                 if(ptr) {
3410                         if(!cfg_strlist_insert(&cfg_parser->cfg->
3411                                 local_data, ptr))
3412                                 fatal_exit("out of memory adding local-data");
3413                 } else {
3414                         yyerror("local-data-ptr could not be reversed");
3415                 }
3416         }
3417 #line 3418 "util/configparser.c" /* yacc.c:1646  */
3418     break;
3419
3420   case 256:
3421 #line 1247 "util/configparser.y" /* yacc.c:1646  */
3422     {
3423                 OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
3424                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3425                         yyerror("expected yes or no.");
3426                 else cfg_parser->cfg->minimal_responses =
3427                         (strcmp((yyvsp[0].str), "yes")==0);
3428                 free((yyvsp[0].str));
3429         }
3430 #line 3431 "util/configparser.c" /* yacc.c:1646  */
3431     break;
3432
3433   case 257:
3434 #line 1257 "util/configparser.y" /* yacc.c:1646  */
3435     {
3436                 OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
3437                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3438                         yyerror("expected yes or no.");
3439                 else cfg_parser->cfg->rrset_roundrobin =
3440                         (strcmp((yyvsp[0].str), "yes")==0);
3441                 free((yyvsp[0].str));
3442         }
3443 #line 3444 "util/configparser.c" /* yacc.c:1646  */
3444     break;
3445
3446   case 258:
3447 #line 1267 "util/configparser.y" /* yacc.c:1646  */
3448     {
3449                 OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
3450                 cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
3451                 free((yyvsp[0].str));
3452         }
3453 #line 3454 "util/configparser.c" /* yacc.c:1646  */
3454     break;
3455
3456   case 259:
3457 #line 1274 "util/configparser.y" /* yacc.c:1646  */
3458     {
3459                 OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
3460                 free(cfg_parser->cfg->dns64_prefix);
3461                 cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
3462         }
3463 #line 3464 "util/configparser.c" /* yacc.c:1646  */
3464     break;
3465
3466   case 260:
3467 #line 1281 "util/configparser.y" /* yacc.c:1646  */
3468     {
3469                 OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
3470                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3471                         yyerror("expected yes or no.");
3472                 else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
3473                 free((yyvsp[0].str));
3474         }
3475 #line 3476 "util/configparser.c" /* yacc.c:1646  */
3476     break;
3477
3478   case 261:
3479 #line 1290 "util/configparser.y" /* yacc.c:1646  */
3480     { 
3481                 OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
3482                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3483                         yyerror("number expected");
3484                 else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
3485                 free((yyvsp[0].str));
3486         }
3487 #line 3488 "util/configparser.c" /* yacc.c:1646  */
3488     break;
3489
3490   case 262:
3491 #line 1299 "util/configparser.y" /* yacc.c:1646  */
3492     {
3493                 OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
3494                 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
3495                         yyerror("memory size expected");
3496                 free((yyvsp[0].str));
3497         }
3498 #line 3499 "util/configparser.c" /* yacc.c:1646  */
3499     break;
3500
3501   case 263:
3502 #line 1307 "util/configparser.y" /* yacc.c:1646  */
3503     {
3504                 OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
3505                 if(atoi((yyvsp[0].str)) == 0)
3506                         yyerror("number expected");
3507                 else {
3508                         cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
3509                         if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
3510                                 yyerror("must be a power of 2");
3511                 }
3512                 free((yyvsp[0].str));
3513         }
3514 #line 3515 "util/configparser.c" /* yacc.c:1646  */
3515     break;
3516
3517   case 264:
3518 #line 1320 "util/configparser.y" /* yacc.c:1646  */
3519     {
3520                 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
3521                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
3522                         yyerror("number expected");
3523                 } else {
3524                         if(!cfg_str2list_insert(&cfg_parser->cfg->
3525                                 ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
3526                                 fatal_exit("out of memory adding "
3527                                         "ratelimit-for-domain");
3528                 }
3529         }
3530 #line 3531 "util/configparser.c" /* yacc.c:1646  */
3531     break;
3532
3533   case 265:
3534 #line 1333 "util/configparser.y" /* yacc.c:1646  */
3535     {
3536                 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
3537                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
3538                         yyerror("number expected");
3539                 } else {
3540                         if(!cfg_str2list_insert(&cfg_parser->cfg->
3541                                 ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
3542                                 fatal_exit("out of memory adding "
3543                                         "ratelimit-below-domain");
3544                 }
3545         }
3546 #line 3547 "util/configparser.c" /* yacc.c:1646  */
3547     break;
3548
3549   case 266:
3550 #line 1346 "util/configparser.y" /* yacc.c:1646  */
3551     { 
3552                 OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
3553                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3554                         yyerror("number expected");
3555                 else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
3556                 free((yyvsp[0].str));
3557         }
3558 #line 3559 "util/configparser.c" /* yacc.c:1646  */
3559     break;
3560
3561   case 267:
3562 #line 1355 "util/configparser.y" /* yacc.c:1646  */
3563     {
3564                 OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
3565                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3566                         yyerror("expected yes or no.");
3567                 else cfg_parser->cfg->qname_minimisation = 
3568                         (strcmp((yyvsp[0].str), "yes")==0);
3569                 free((yyvsp[0].str));
3570         }
3571 #line 3572 "util/configparser.c" /* yacc.c:1646  */
3572     break;
3573
3574   case 268:
3575 #line 1365 "util/configparser.y" /* yacc.c:1646  */
3576     {
3577                 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
3578                 if(cfg_parser->cfg->stubs->name)
3579                         yyerror("stub name override, there must be one name "
3580                                 "for one stub-zone");
3581                 free(cfg_parser->cfg->stubs->name);
3582                 cfg_parser->cfg->stubs->name = (yyvsp[0].str);
3583         }
3584 #line 3585 "util/configparser.c" /* yacc.c:1646  */
3585     break;
3586
3587   case 269:
3588 #line 1375 "util/configparser.y" /* yacc.c:1646  */
3589     {
3590                 OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
3591                 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
3592                         yyerror("out of memory");
3593         }
3594 #line 3595 "util/configparser.c" /* yacc.c:1646  */
3595     break;
3596
3597   case 270:
3598 #line 1382 "util/configparser.y" /* yacc.c:1646  */
3599     {
3600                 OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
3601                 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
3602                         yyerror("out of memory");
3603         }
3604 #line 3605 "util/configparser.c" /* yacc.c:1646  */
3605     break;
3606
3607   case 271:
3608 #line 1389 "util/configparser.y" /* yacc.c:1646  */
3609     {
3610                 OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
3611                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3612                         yyerror("expected yes or no.");
3613                 else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
3614                 free((yyvsp[0].str));
3615         }
3616 #line 3617 "util/configparser.c" /* yacc.c:1646  */
3617     break;
3618
3619   case 272:
3620 #line 1398 "util/configparser.y" /* yacc.c:1646  */
3621     {
3622                 OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
3623                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3624                         yyerror("expected yes or no.");
3625                 else cfg_parser->cfg->stubs->isprime = 
3626                         (strcmp((yyvsp[0].str), "yes")==0);
3627                 free((yyvsp[0].str));
3628         }
3629 #line 3630 "util/configparser.c" /* yacc.c:1646  */
3630     break;
3631
3632   case 273:
3633 #line 1408 "util/configparser.y" /* yacc.c:1646  */
3634     {
3635                 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
3636                 if(cfg_parser->cfg->forwards->name)
3637                         yyerror("forward name override, there must be one "
3638                                 "name for one forward-zone");
3639                 free(cfg_parser->cfg->forwards->name);
3640                 cfg_parser->cfg->forwards->name = (yyvsp[0].str);
3641         }
3642 #line 3643 "util/configparser.c" /* yacc.c:1646  */
3643     break;
3644
3645   case 274:
3646 #line 1418 "util/configparser.y" /* yacc.c:1646  */
3647     {
3648                 OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
3649                 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
3650                         yyerror("out of memory");
3651         }
3652 #line 3653 "util/configparser.c" /* yacc.c:1646  */
3653     break;
3654
3655   case 275:
3656 #line 1425 "util/configparser.y" /* yacc.c:1646  */
3657     {
3658                 OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
3659                 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
3660                         yyerror("out of memory");
3661         }
3662 #line 3663 "util/configparser.c" /* yacc.c:1646  */
3663     break;
3664
3665   case 276:
3666 #line 1432 "util/configparser.y" /* yacc.c:1646  */
3667     {
3668                 OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
3669                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3670                         yyerror("expected yes or no.");
3671                 else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
3672                 free((yyvsp[0].str));
3673         }
3674 #line 3675 "util/configparser.c" /* yacc.c:1646  */
3675     break;
3676
3677   case 277:
3678 #line 1441 "util/configparser.y" /* yacc.c:1646  */
3679     { 
3680                 OUTYY(("\nP(remote-control:)\n")); 
3681         }
3682 #line 3683 "util/configparser.c" /* yacc.c:1646  */
3683     break;
3684
3685   case 288:
3686 #line 1452 "util/configparser.y" /* yacc.c:1646  */
3687     {
3688                 OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
3689                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3690                         yyerror("expected yes or no.");
3691                 else cfg_parser->cfg->remote_control_enable = 
3692                         (strcmp((yyvsp[0].str), "yes")==0);
3693                 free((yyvsp[0].str));
3694         }
3695 #line 3696 "util/configparser.c" /* yacc.c:1646  */
3696     break;
3697
3698   case 289:
3699 #line 1462 "util/configparser.y" /* yacc.c:1646  */
3700     {
3701                 OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
3702                 if(atoi((yyvsp[0].str)) == 0)
3703                         yyerror("control port number expected");
3704                 else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
3705                 free((yyvsp[0].str));
3706         }
3707 #line 3708 "util/configparser.c" /* yacc.c:1646  */
3708     break;
3709
3710   case 290:
3711 #line 1471 "util/configparser.y" /* yacc.c:1646  */
3712     {
3713                 OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
3714                 if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
3715                         yyerror("out of memory");
3716         }
3717 #line 3718 "util/configparser.c" /* yacc.c:1646  */
3718     break;
3719
3720   case 291:
3721 #line 1478 "util/configparser.y" /* yacc.c:1646  */
3722     {
3723                 OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
3724                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3725                         yyerror("expected yes or no.");
3726                 else cfg_parser->cfg->remote_control_use_cert =
3727                         (strcmp((yyvsp[0].str), "yes")==0);
3728                 free((yyvsp[0].str));
3729         }
3730 #line 3731 "util/configparser.c" /* yacc.c:1646  */
3731     break;
3732
3733   case 292:
3734 #line 1488 "util/configparser.y" /* yacc.c:1646  */
3735     {
3736                 OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
3737                 free(cfg_parser->cfg->server_key_file);
3738                 cfg_parser->cfg->server_key_file = (yyvsp[0].str);
3739         }
3740 #line 3741 "util/configparser.c" /* yacc.c:1646  */
3741     break;
3742
3743   case 293:
3744 #line 1495 "util/configparser.y" /* yacc.c:1646  */
3745     {
3746                 OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
3747                 free(cfg_parser->cfg->server_cert_file);
3748                 cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
3749         }
3750 #line 3751 "util/configparser.c" /* yacc.c:1646  */
3751     break;
3752
3753   case 294:
3754 #line 1502 "util/configparser.y" /* yacc.c:1646  */
3755     {
3756                 OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
3757                 free(cfg_parser->cfg->control_key_file);
3758                 cfg_parser->cfg->control_key_file = (yyvsp[0].str);
3759         }
3760 #line 3761 "util/configparser.c" /* yacc.c:1646  */
3761     break;
3762
3763   case 295:
3764 #line 1509 "util/configparser.y" /* yacc.c:1646  */
3765     {
3766                 OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
3767                 free(cfg_parser->cfg->control_cert_file);
3768                 cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
3769         }
3770 #line 3771 "util/configparser.c" /* yacc.c:1646  */
3771     break;
3772
3773   case 296:
3774 #line 1516 "util/configparser.y" /* yacc.c:1646  */
3775     {
3776                 OUTYY(("\nP(dnstap:)\n"));
3777         }
3778 #line 3779 "util/configparser.c" /* yacc.c:1646  */
3779     break;
3780
3781   case 311:
3782 #line 1533 "util/configparser.y" /* yacc.c:1646  */
3783     {
3784                 OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
3785                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3786                         yyerror("expected yes or no.");
3787                 else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
3788         }
3789 #line 3790 "util/configparser.c" /* yacc.c:1646  */
3790     break;
3791
3792   case 312:
3793 #line 1541 "util/configparser.y" /* yacc.c:1646  */
3794     {
3795                 OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
3796                 free(cfg_parser->cfg->dnstap_socket_path);
3797                 cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
3798         }
3799 #line 3800 "util/configparser.c" /* yacc.c:1646  */
3800     break;
3801
3802   case 313:
3803 #line 1548 "util/configparser.y" /* yacc.c:1646  */
3804     {
3805                 OUTYY(("P(dt_dnstap_send_identity:%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->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
3809         }
3810 #line 3811 "util/configparser.c" /* yacc.c:1646  */
3811     break;
3812
3813   case 314:
3814 #line 1556 "util/configparser.y" /* yacc.c:1646  */
3815     {
3816                 OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
3817                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3818                         yyerror("expected yes or no.");
3819                 else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
3820         }
3821 #line 3822 "util/configparser.c" /* yacc.c:1646  */
3822     break;
3823
3824   case 315:
3825 #line 1564 "util/configparser.y" /* yacc.c:1646  */
3826     {
3827                 OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
3828                 free(cfg_parser->cfg->dnstap_identity);
3829                 cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
3830         }
3831 #line 3832 "util/configparser.c" /* yacc.c:1646  */
3832     break;
3833
3834   case 316:
3835 #line 1571 "util/configparser.y" /* yacc.c:1646  */
3836     {
3837                 OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
3838                 free(cfg_parser->cfg->dnstap_version);
3839                 cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
3840         }
3841 #line 3842 "util/configparser.c" /* yacc.c:1646  */
3842     break;
3843
3844   case 317:
3845 #line 1578 "util/configparser.y" /* yacc.c:1646  */
3846     {
3847                 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
3848                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3849                         yyerror("expected yes or no.");
3850                 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
3851                         (strcmp((yyvsp[0].str), "yes")==0);
3852         }
3853 #line 3854 "util/configparser.c" /* yacc.c:1646  */
3854     break;
3855
3856   case 318:
3857 #line 1587 "util/configparser.y" /* yacc.c:1646  */
3858     {
3859                 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
3860                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3861                         yyerror("expected yes or no.");
3862                 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
3863                         (strcmp((yyvsp[0].str), "yes")==0);
3864         }
3865 #line 3866 "util/configparser.c" /* yacc.c:1646  */
3866     break;
3867
3868   case 319:
3869 #line 1596 "util/configparser.y" /* yacc.c:1646  */
3870     {
3871                 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
3872                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3873                         yyerror("expected yes or no.");
3874                 else cfg_parser->cfg->dnstap_log_client_query_messages =
3875                         (strcmp((yyvsp[0].str), "yes")==0);
3876         }
3877 #line 3878 "util/configparser.c" /* yacc.c:1646  */
3878     break;
3879
3880   case 320:
3881 #line 1605 "util/configparser.y" /* yacc.c:1646  */
3882     {
3883                 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
3884                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3885                         yyerror("expected yes or no.");
3886                 else cfg_parser->cfg->dnstap_log_client_response_messages =
3887                         (strcmp((yyvsp[0].str), "yes")==0);
3888         }
3889 #line 3890 "util/configparser.c" /* yacc.c:1646  */
3890     break;
3891
3892   case 321:
3893 #line 1614 "util/configparser.y" /* yacc.c:1646  */
3894     {
3895                 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
3896                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3897                         yyerror("expected yes or no.");
3898                 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
3899                         (strcmp((yyvsp[0].str), "yes")==0);
3900         }
3901 #line 3902 "util/configparser.c" /* yacc.c:1646  */
3902     break;
3903
3904   case 322:
3905 #line 1623 "util/configparser.y" /* yacc.c:1646  */
3906     {
3907                 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
3908                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3909                         yyerror("expected yes or no.");
3910                 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
3911                         (strcmp((yyvsp[0].str), "yes")==0);
3912         }
3913 #line 3914 "util/configparser.c" /* yacc.c:1646  */
3914     break;
3915
3916   case 323:
3917 #line 1632 "util/configparser.y" /* yacc.c:1646  */
3918     { 
3919                 OUTYY(("\nP(python:)\n")); 
3920         }
3921 #line 3922 "util/configparser.c" /* yacc.c:1646  */
3922     break;
3923
3924   case 327:
3925 #line 1641 "util/configparser.y" /* yacc.c:1646  */
3926     {
3927                 OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
3928                 free(cfg_parser->cfg->python_script);
3929                 cfg_parser->cfg->python_script = (yyvsp[0].str);
3930         }
3931 #line 3932 "util/configparser.c" /* yacc.c:1646  */
3932     break;
3933
3934
3935 #line 3936 "util/configparser.c" /* yacc.c:1646  */
3936       default: break;
3937     }
3938   /* User semantic actions sometimes alter yychar, and that requires
3939      that yytoken be updated with the new translation.  We take the
3940      approach of translating immediately before every use of yytoken.
3941      One alternative is translating here after every semantic action,
3942      but that translation would be missed if the semantic action invokes
3943      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3944      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3945      incorrect destructor might then be invoked immediately.  In the
3946      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3947      to an incorrect destructor call or verbose syntax error message
3948      before the lookahead is translated.  */
3949   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3950
3951   YYPOPSTACK (yylen);
3952   yylen = 0;
3953   YY_STACK_PRINT (yyss, yyssp);
3954
3955   *++yyvsp = yyval;
3956
3957   /* Now 'shift' the result of the reduction.  Determine what state
3958      that goes to, based on the state we popped back to and the rule
3959      number reduced by.  */
3960
3961   yyn = yyr1[yyn];
3962
3963   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3964   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3965     yystate = yytable[yystate];
3966   else
3967     yystate = yydefgoto[yyn - YYNTOKENS];
3968
3969   goto yynewstate;
3970
3971
3972 /*--------------------------------------.
3973 | yyerrlab -- here on detecting error.  |
3974 `--------------------------------------*/
3975 yyerrlab:
3976   /* Make sure we have latest lookahead translation.  See comments at
3977      user semantic actions for why this is necessary.  */
3978   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3979
3980   /* If not already recovering from an error, report this error.  */
3981   if (!yyerrstatus)
3982     {
3983       ++yynerrs;
3984 #if ! YYERROR_VERBOSE
3985       yyerror (YY_("syntax error"));
3986 #else
3987 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3988                                         yyssp, yytoken)
3989       {
3990         char const *yymsgp = YY_("syntax error");
3991         int yysyntax_error_status;
3992         yysyntax_error_status = YYSYNTAX_ERROR;
3993         if (yysyntax_error_status == 0)
3994           yymsgp = yymsg;
3995         else if (yysyntax_error_status == 1)
3996           {
3997             if (yymsg != yymsgbuf)
3998               YYSTACK_FREE (yymsg);
3999             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
4000             if (!yymsg)
4001               {
4002                 yymsg = yymsgbuf;
4003                 yymsg_alloc = sizeof yymsgbuf;
4004                 yysyntax_error_status = 2;
4005               }
4006             else
4007               {
4008                 yysyntax_error_status = YYSYNTAX_ERROR;
4009                 yymsgp = yymsg;
4010               }
4011           }
4012         yyerror (yymsgp);
4013         if (yysyntax_error_status == 2)
4014           goto yyexhaustedlab;
4015       }
4016 # undef YYSYNTAX_ERROR
4017 #endif
4018     }
4019
4020
4021
4022   if (yyerrstatus == 3)
4023     {
4024       /* If just tried and failed to reuse lookahead token after an
4025          error, discard it.  */
4026
4027       if (yychar <= YYEOF)
4028         {
4029           /* Return failure if at end of input.  */
4030           if (yychar == YYEOF)
4031             YYABORT;
4032         }
4033       else
4034         {
4035           yydestruct ("Error: discarding",
4036                       yytoken, &yylval);
4037           yychar = YYEMPTY;
4038         }
4039     }
4040
4041   /* Else will try to reuse lookahead token after shifting the error
4042      token.  */
4043   goto yyerrlab1;
4044
4045
4046 /*---------------------------------------------------.
4047 | yyerrorlab -- error raised explicitly by YYERROR.  |
4048 `---------------------------------------------------*/
4049 yyerrorlab:
4050
4051   /* Pacify compilers like GCC when the user code never invokes
4052      YYERROR and the label yyerrorlab therefore never appears in user
4053      code.  */
4054   if (/*CONSTCOND*/ 0)
4055      goto yyerrorlab;
4056
4057   /* Do not reclaim the symbols of the rule whose action triggered
4058      this YYERROR.  */
4059   YYPOPSTACK (yylen);
4060   yylen = 0;
4061   YY_STACK_PRINT (yyss, yyssp);
4062   yystate = *yyssp;
4063   goto yyerrlab1;
4064
4065
4066 /*-------------------------------------------------------------.
4067 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
4068 `-------------------------------------------------------------*/
4069 yyerrlab1:
4070   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
4071
4072   for (;;)
4073     {
4074       yyn = yypact[yystate];
4075       if (!yypact_value_is_default (yyn))
4076         {
4077           yyn += YYTERROR;
4078           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4079             {
4080               yyn = yytable[yyn];
4081               if (0 < yyn)
4082                 break;
4083             }
4084         }
4085
4086       /* Pop the current state because it cannot handle the error token.  */
4087       if (yyssp == yyss)
4088         YYABORT;
4089
4090
4091       yydestruct ("Error: popping",
4092                   yystos[yystate], yyvsp);
4093       YYPOPSTACK (1);
4094       yystate = *yyssp;
4095       YY_STACK_PRINT (yyss, yyssp);
4096     }
4097
4098   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4099   *++yyvsp = yylval;
4100   YY_IGNORE_MAYBE_UNINITIALIZED_END
4101
4102
4103   /* Shift the error token.  */
4104   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
4105
4106   yystate = yyn;
4107   goto yynewstate;
4108
4109
4110 /*-------------------------------------.
4111 | yyacceptlab -- YYACCEPT comes here.  |
4112 `-------------------------------------*/
4113 yyacceptlab:
4114   yyresult = 0;
4115   goto yyreturn;
4116
4117 /*-----------------------------------.
4118 | yyabortlab -- YYABORT comes here.  |
4119 `-----------------------------------*/
4120 yyabortlab:
4121   yyresult = 1;
4122   goto yyreturn;
4123
4124 #if !defined yyoverflow || YYERROR_VERBOSE
4125 /*-------------------------------------------------.
4126 | yyexhaustedlab -- memory exhaustion comes here.  |
4127 `-------------------------------------------------*/
4128 yyexhaustedlab:
4129   yyerror (YY_("memory exhausted"));
4130   yyresult = 2;
4131   /* Fall through.  */
4132 #endif
4133
4134 yyreturn:
4135   if (yychar != YYEMPTY)
4136     {
4137       /* Make sure we have latest lookahead translation.  See comments at
4138          user semantic actions for why this is necessary.  */
4139       yytoken = YYTRANSLATE (yychar);
4140       yydestruct ("Cleanup: discarding lookahead",
4141                   yytoken, &yylval);
4142     }
4143   /* Do not reclaim the symbols of the rule whose action triggered
4144      this YYABORT or YYACCEPT.  */
4145   YYPOPSTACK (yylen);
4146   YY_STACK_PRINT (yyss, yyssp);
4147   while (yyssp != yyss)
4148     {
4149       yydestruct ("Cleanup: popping",
4150                   yystos[*yyssp], yyvsp);
4151       YYPOPSTACK (1);
4152     }
4153 #ifndef yyoverflow
4154   if (yyss != yyssa)
4155     YYSTACK_FREE (yyss);
4156 #endif
4157 #if YYERROR_VERBOSE
4158   if (yymsg != yymsgbuf)
4159     YYSTACK_FREE (yymsg);
4160 #endif
4161   return yyresult;
4162 }
4163 #line 1646 "util/configparser.y" /* yacc.c:1906  */
4164
4165
4166 /* parse helper routines could be here */