1 /* A Bison parser, made by GNU Bison 3.0.4. */
3 /* Bison implementation for Yacc-like parsers in C
5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
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.
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.
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/>. */
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.
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
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. */
43 /* Identify Bison output. */
47 #define YYBISON_VERSION "3.0.4"
50 #define YYSKELETON_NAME "yacc.c"
64 /* Copy the first part of user declarations. */
65 #line 38 "util/configparser.y" /* yacc.c:339 */
75 #include "util/configyyrename.h"
76 #include "util/config_file.h"
77 #include "util/net_help.h"
80 void ub_c_error(const char *message);
82 /* these need to be global, otherwise they cannot be used inside yacc */
83 extern struct config_parser_state* cfg_parser;
86 #define OUTYY(s) printf s /* used ONLY when debugging */
92 #line 93 "util/configparser.c" /* yacc.c:339 */
95 # if defined __cplusplus && 201103L <= __cplusplus
96 # define YY_NULLPTR nullptr
102 /* Enabling verbose error messages. */
103 #ifdef YYERROR_VERBOSE
104 # undef YYERROR_VERBOSE
105 # define YYERROR_VERBOSE 1
107 # define YYERROR_VERBOSE 0
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
137 VAR_NUM_THREADS = 268,
139 VAR_OUTGOING_RANGE = 270,
146 VAR_OUTGOING_TCP_MSS = 277,
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,
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,
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,
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,
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,
241 VAR_EDNS_BUFFER_SIZE = 372,
243 VAR_PREFETCH_KEY = 374,
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,
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,
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,
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
300 #define STRING_ARG 265
301 #define VAR_SERVER 266
302 #define VAR_VERBOSITY 267
303 #define VAR_NUM_THREADS 268
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
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
458 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
462 #line 64 "util/configparser.y" /* yacc.c:355 */
466 #line 467 "util/configparser.c" /* yacc.c:355 */
469 typedef union YYSTYPE YYSTYPE;
470 # define YYSTYPE_IS_TRIVIAL 1
471 # define YYSTYPE_IS_DECLARED 1
475 extern YYSTYPE yylval;
479 #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */
481 /* Copy the second part of user declarations. */
483 #line 484 "util/configparser.c" /* yacc.c:358 */
490 typedef YYTYPE_UINT8 yytype_uint8;
492 typedef unsigned char yytype_uint8;
496 typedef YYTYPE_INT8 yytype_int8;
498 typedef signed char yytype_int8;
502 typedef YYTYPE_UINT16 yytype_uint16;
504 typedef unsigned short int yytype_uint16;
508 typedef YYTYPE_INT16 yytype_int16;
510 typedef short int yytype_int16;
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
522 # define YYSIZE_T unsigned int
526 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
529 # if defined YYENABLE_NLS && YYENABLE_NLS
531 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
532 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
536 # define YY_(Msgid) Msgid
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)
546 # define YY_ATTRIBUTE(Spec) /* empty */
550 #ifndef YY_ATTRIBUTE_PURE
551 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
554 #ifndef YY_ATTRIBUTE_UNUSED
555 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
558 #if !defined _Noreturn \
559 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
560 # if defined _MSC_VER && 1200 <= _MSC_VER
561 # define _Noreturn __declspec (noreturn)
563 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
567 /* Suppress unused-variable warnings by "using" E. */
568 #if ! defined lint || defined __GNUC__
569 # define YYUSE(E) ((void) (E))
571 # define YYUSE(E) /* empty */
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")
583 # define YY_INITIAL_VALUE(Value) Value
585 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
586 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
587 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
589 #ifndef YY_INITIAL_VALUE
590 # define YY_INITIAL_VALUE(Value) /* Nothing. */
594 #if ! defined yyoverflow || YYERROR_VERBOSE
596 /* The parser invokes alloca or malloc; define the necessary symbols. */
598 # ifdef YYSTACK_USE_ALLOCA
599 # if YYSTACK_USE_ALLOCA
601 # define YYSTACK_ALLOC __builtin_alloca
602 # elif defined __BUILTIN_VA_ARG_INCR
603 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
605 # define YYSTACK_ALLOC __alloca
606 # elif defined _MSC_VER
607 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
608 # define alloca _alloca
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
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 */
633 # define YYSTACK_ALLOC YYMALLOC
634 # define YYSTACK_FREE YYFREE
635 # ifndef YYSTACK_ALLOC_MAXIMUM
636 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
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
647 # define YYMALLOC malloc
648 # if ! defined malloc && ! defined EXIT_SUCCESS
649 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
654 # if ! defined free && ! defined EXIT_SUCCESS
655 void free (void *); /* INFRINGES ON USER NAME SPACE */
659 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
662 #if (! defined yyoverflow \
663 && (! defined __cplusplus \
664 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
666 /* A type that is properly aligned for any stack member. */
669 yytype_int16 yyss_alloc;
673 /* The size of the maximum gap between one aligned stack and the next. */
674 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
676 /* The size of an array large to enough to hold all stacks, each with
678 # define YYSTACK_BYTES(N) \
679 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
680 + YYSTACK_GAP_MAXIMUM)
682 # define YYCOPY_NEEDED 1
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
689 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
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); \
702 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
703 /* Copy COUNT objects from SRC to DST. The source and destination do
706 # if defined __GNUC__ && 1 < __GNUC__
707 # define YYCOPY(Dst, Src, Count) \
708 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
710 # define YYCOPY(Dst, Src, Count) \
714 for (yyi = 0; yyi < (Count); yyi++) \
715 (Dst)[yyi] = (Src)[yyi]; \
720 #endif /* !YYCOPY_NEEDED */
722 /* YYFINAL -- State number of the termination state. */
724 /* YYLAST -- Last index in YYTABLE. */
727 /* YYNTOKENS -- Number of terminals. */
728 #define YYNTOKENS 166
729 /* YYNNTS -- Number of nonterminals. */
731 /* YYNRULES -- Number of rules. */
733 /* YYNSTATES -- Number of states. */
734 #define YYNSTATES 482
736 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
737 by yylex, with out-of-bounds checking. */
739 #define YYMAXUTOK 420
741 #define YYTRANSLATE(YYX) \
742 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
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[] =
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,
794 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
795 static const yytype_uint16 yyrline[] =
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
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[] =
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
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[] =
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
993 #define YYPACT_NINF -81
995 #define yypact_value_is_default(Yystate) \
996 (!!((Yystate) == (-81)))
998 #define YYTABLE_NINF -1
1000 #define yytable_value_is_error(Yytable_value) \
1003 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1005 static const yytype_int16 yypact[] =
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,
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[] =
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,
1114 /* YYPGOTO[NTERM-NUM]. */
1115 static const yytype_int8 yypgoto[] =
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,
1137 /* YYDEFGOTO[NTERM-NUM]. */
1138 static const yytype_int16 yydefgoto[] =
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,
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[] =
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,
1199 static const yytype_uint8 yycheck[] =
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,
1235 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1236 symbol of state STATE-NUM. */
1237 static const yytype_uint16 yystos[] =
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,
1290 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1291 static const yytype_uint16 yyr1[] =
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
1328 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1329 static const yytype_uint8 yyr2[] =
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
1367 #define yyerrok (yyerrstatus = 0)
1368 #define yyclearin (yychar = YYEMPTY)
1369 #define YYEMPTY (-2)
1372 #define YYACCEPT goto yyacceptlab
1373 #define YYABORT goto yyabortlab
1374 #define YYERROR goto yyerrorlab
1377 #define YYRECOVERING() (!!yyerrstatus)
1379 #define YYBACKUP(Token, Value) \
1381 if (yychar == YYEMPTY) \
1385 YYPOPSTACK (yylen); \
1391 yyerror (YY_("syntax error: cannot back up")); \
1396 /* Error token number */
1398 #define YYERRCODE 256
1402 /* Enable debugging if requested. */
1406 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1407 # define YYFPRINTF fprintf
1410 # define YYDPRINTF(Args) \
1416 /* This macro is provided for backward compatibility. */
1417 #ifndef YY_LOCATION_PRINT
1418 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1422 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1426 YYFPRINTF (stderr, "%s ", Title); \
1427 yy_symbol_print (stderr, \
1429 YYFPRINTF (stderr, "\n"); \
1434 /*----------------------------------------.
1435 | Print this symbol's value on YYOUTPUT. |
1436 `----------------------------------------*/
1439 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1441 FILE *yyo = yyoutput;
1446 if (yytype < YYNTOKENS)
1447 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1453 /*--------------------------------.
1454 | Print this symbol on YYOUTPUT. |
1455 `--------------------------------*/
1458 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1460 YYFPRINTF (yyoutput, "%s %s (",
1461 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1463 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1464 YYFPRINTF (yyoutput, ")");
1467 /*------------------------------------------------------------------.
1468 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1470 `------------------------------------------------------------------*/
1473 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1475 YYFPRINTF (stderr, "Stack now");
1476 for (; yybottom <= yytop; yybottom++)
1478 int yybot = *yybottom;
1479 YYFPRINTF (stderr, " %d", yybot);
1481 YYFPRINTF (stderr, "\n");
1484 # define YY_STACK_PRINT(Bottom, Top) \
1487 yy_stack_print ((Bottom), (Top)); \
1491 /*------------------------------------------------.
1492 | Report that the YYRULE is going to be reduced. |
1493 `------------------------------------------------*/
1496 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1498 unsigned long int yylno = yyrline[yyrule];
1499 int yynrhs = yyr2[yyrule];
1501 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1503 /* The symbols being reduced. */
1504 for (yyi = 0; yyi < yynrhs; yyi++)
1506 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1507 yy_symbol_print (stderr,
1508 yystos[yyssp[yyi + 1 - yynrhs]],
1509 &(yyvsp[(yyi + 1) - (yynrhs)])
1511 YYFPRINTF (stderr, "\n");
1515 # define YY_REDUCE_PRINT(Rule) \
1518 yy_reduce_print (yyssp, yyvsp, Rule); \
1521 /* Nonzero means print parse trace. It is left uninitialized so that
1522 multiple parsers can coexist. */
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 */
1532 /* YYINITDEPTH -- initial size of the parser's stacks. */
1534 # define YYINITDEPTH 200
1537 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1538 if the built-in stack extension method is used).
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. */
1545 # define YYMAXDEPTH 10000
1552 # if defined __GLIBC__ && defined _STRING_H
1553 # define yystrlen strlen
1555 /* Return the length of YYSTR. */
1557 yystrlen (const char *yystr)
1560 for (yylen = 0; yystr[yylen]; yylen++)
1568 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1569 # define yystpcpy stpcpy
1571 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1574 yystpcpy (char *yydest, const char *yysrc)
1577 const char *yys = yysrc;
1579 while ((*yyd++ = *yys++) != '\0')
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
1596 yytnamerr (char *yyres, const char *yystr)
1601 char const *yyp = yystr;
1608 goto do_not_strip_quotes;
1612 goto do_not_strip_quotes;
1625 do_not_strip_quotes: ;
1629 return yystrlen (yystr);
1631 return yystpcpy (yyres, yystr) - yyres;
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
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. */
1644 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1645 yytype_int16 *yyssp, int yytoken)
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
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.
1681 if (yytoken != YYEMPTY)
1683 int yyn = yypact[*yyssp];
1684 yyarg[yycount++] = yytname[yytoken];
1685 if (!yypact_value_is_default (yyn))
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;
1696 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1697 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1698 && !yytable_value_is_error (yytable[yyx + yyn]))
1700 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1706 yyarg[yycount++] = yytname[yyx];
1708 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1709 if (! (yysize <= yysize1
1710 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1720 # define YYCASE_(N, S) \
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"));
1734 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1735 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1740 if (*yymsg_alloc < yysize)
1742 *yymsg_alloc = 2 * yysize;
1743 if (! (yysize <= *yymsg_alloc
1744 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1745 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
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. */
1755 while ((*yyp = *yyformat) != '\0')
1756 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1758 yyp += yytnamerr (yyp, yyarg[yyi++]);
1769 #endif /* YYERROR_VERBOSE */
1771 /*-----------------------------------------------.
1772 | Release the memory associated to this symbol. |
1773 `-----------------------------------------------*/
1776 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1781 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1783 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1785 YY_IGNORE_MAYBE_UNINITIALIZED_END
1791 /* The lookahead symbol. */
1794 /* The semantic value of the lookahead symbol. */
1796 /* Number of syntax errors so far. */
1808 /* Number of tokens to shift before error messages enabled. */
1811 /* The stacks and their tools:
1812 'yyss': related to states.
1813 'yyvs': related to semantic values.
1815 Refer to the stacks through separate pointers, to allow yyoverflow
1816 to reallocate them elsewhere. */
1818 /* The state stack. */
1819 yytype_int16 yyssa[YYINITDEPTH];
1821 yytype_int16 *yyssp;
1823 /* The semantic value stack. */
1824 YYSTYPE yyvsa[YYINITDEPTH];
1828 YYSIZE_T yystacksize;
1832 /* Lookahead token as an internal (translated) token number. */
1834 /* The variables used to return semantic value and location from the
1839 /* Buffer for error messages, and its allocated size. */
1841 char *yymsg = yymsgbuf;
1842 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1845 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1847 /* The number of symbols on the RHS of the reduced rule.
1848 Keep to zero when no symbol should be popped. */
1851 yyssp = yyss = yyssa;
1852 yyvsp = yyvs = yyvsa;
1853 yystacksize = YYINITDEPTH;
1855 YYDPRINTF ((stderr, "Starting parse\n"));
1860 yychar = YYEMPTY; /* Cause a token to be read. */
1863 /*------------------------------------------------------------.
1864 | yynewstate -- Push a new state, which is found in yystate. |
1865 `------------------------------------------------------------*/
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. */
1874 if (yyss + yystacksize - 1 <= yyssp)
1876 /* Get the current used size of the three stacks, in elements. */
1877 YYSIZE_T yysize = yyssp - yyss + 1;
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
1884 YYSTYPE *yyvs1 = yyvs;
1885 yytype_int16 *yyss1 = yyss;
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),
1899 #else /* no yyoverflow */
1900 # ifndef YYSTACK_RELOCATE
1901 goto yyexhaustedlab;
1903 /* Extend the stack our own way. */
1904 if (YYMAXDEPTH <= yystacksize)
1905 goto yyexhaustedlab;
1907 if (YYMAXDEPTH < yystacksize)
1908 yystacksize = YYMAXDEPTH;
1911 yytype_int16 *yyss1 = yyss;
1912 union yyalloc *yyptr =
1913 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1915 goto yyexhaustedlab;
1916 YYSTACK_RELOCATE (yyss_alloc, yyss);
1917 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1918 # undef YYSTACK_RELOCATE
1920 YYSTACK_FREE (yyss1);
1923 #endif /* no yyoverflow */
1925 yyssp = yyss + yysize - 1;
1926 yyvsp = yyvs + yysize - 1;
1928 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1929 (unsigned long int) yystacksize));
1931 if (yyss + yystacksize - 1 <= yyssp)
1935 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1937 if (yystate == YYFINAL)
1947 /* Do appropriate processing given the current state. Read a
1948 lookahead token if we need one and don't already have one. */
1950 /* First try to decide what to do without reference to lookahead token. */
1951 yyn = yypact[yystate];
1952 if (yypact_value_is_default (yyn))
1955 /* Not known => get a lookahead token if don't already have one. */
1957 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1958 if (yychar == YYEMPTY)
1960 YYDPRINTF ((stderr, "Reading a token: "));
1964 if (yychar <= YYEOF)
1966 yychar = yytoken = YYEOF;
1967 YYDPRINTF ((stderr, "Now at end of input.\n"));
1971 yytoken = YYTRANSLATE (yychar);
1972 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1975 /* If the proper action on seeing token YYTOKEN is to reduce or to
1976 detect an error, take that action. */
1978 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1983 if (yytable_value_is_error (yyn))
1989 /* Count tokens shifted since error; after three, turn off error
1994 /* Shift the lookahead token. */
1995 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1997 /* Discard the shifted token. */
2001 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2003 YY_IGNORE_MAYBE_UNINITIALIZED_END
2008 /*-----------------------------------------------------------.
2009 | yydefault -- do the default action for the current state. |
2010 `-----------------------------------------------------------*/
2012 yyn = yydefact[yystate];
2018 /*-----------------------------.
2019 | yyreduce -- Do a reduction. |
2020 `-----------------------------*/
2022 /* yyn is the number of a rule to reduce with. */
2025 /* If YYLEN is nonzero, implement the default value of the action:
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];
2036 YY_REDUCE_PRINT (yyn);
2040 #line 138 "util/configparser.y" /* yacc.c:1646 */
2042 OUTYY(("\nP(server:)\n"));
2044 #line 2045 "util/configparser.c" /* yacc.c:1646 */
2048 #line 197 "util/configparser.y" /* yacc.c:1646 */
2050 struct config_stub* s;
2051 OUTYY(("\nP(stub_zone:)\n"));
2052 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2054 s->next = cfg_parser->cfg->stubs;
2055 cfg_parser->cfg->stubs = s;
2057 yyerror("out of memory");
2059 #line 2060 "util/configparser.c" /* yacc.c:1646 */
2063 #line 213 "util/configparser.y" /* yacc.c:1646 */
2065 struct config_stub* s;
2066 OUTYY(("\nP(forward_zone:)\n"));
2067 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2069 s->next = cfg_parser->cfg->forwards;
2070 cfg_parser->cfg->forwards = s;
2072 yyerror("out of memory");
2074 #line 2075 "util/configparser.c" /* yacc.c:1646 */
2078 #line 229 "util/configparser.y" /* yacc.c:1646 */
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));
2086 #line 2087 "util/configparser.c" /* yacc.c:1646 */
2090 #line 238 "util/configparser.y" /* yacc.c:1646 */
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));
2098 #line 2099 "util/configparser.c" /* yacc.c:1646 */
2102 #line 247 "util/configparser.y" /* yacc.c:1646 */
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));
2112 #line 2113 "util/configparser.c" /* yacc.c:1646 */
2116 #line 258 "util/configparser.y" /* yacc.c:1646 */
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));
2124 #line 2125 "util/configparser.c" /* yacc.c:1646 */
2128 #line 267 "util/configparser.y" /* yacc.c:1646 */
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));
2136 #line 2137 "util/configparser.c" /* yacc.c:1646 */
2140 #line 276 "util/configparser.y" /* yacc.c:1646 */
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));
2148 #line 2149 "util/configparser.c" /* yacc.c:1646 */
2152 #line 285 "util/configparser.y" /* yacc.c:1646 */
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");
2162 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
2164 #line 2165 "util/configparser.c" /* yacc.c:1646 */
2168 #line 298 "util/configparser.y" /* yacc.c:1646 */
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");
2179 cfg_parser->cfg->out_ifs[
2180 cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
2182 #line 2183 "util/configparser.c" /* yacc.c:1646 */
2186 #line 313 "util/configparser.y" /* yacc.c:1646 */
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));
2194 #line 2195 "util/configparser.c" /* yacc.c:1646 */
2198 #line 322 "util/configparser.y" /* yacc.c:1646 */
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));
2206 #line 2207 "util/configparser.c" /* yacc.c:1646 */
2210 #line 331 "util/configparser.y" /* yacc.c:1646 */
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));
2218 #line 2219 "util/configparser.c" /* yacc.c:1646 */
2222 #line 340 "util/configparser.y" /* yacc.c:1646 */
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));
2230 #line 2231 "util/configparser.c" /* yacc.c:1646 */
2234 #line 349 "util/configparser.y" /* yacc.c:1646 */
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));
2242 #line 2243 "util/configparser.c" /* yacc.c:1646 */
2246 #line 358 "util/configparser.y" /* yacc.c:1646 */
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));
2254 #line 2255 "util/configparser.c" /* yacc.c:1646 */
2258 #line 367 "util/configparser.y" /* yacc.c:1646 */
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));
2266 #line 2267 "util/configparser.c" /* yacc.c:1646 */
2270 #line 376 "util/configparser.y" /* yacc.c:1646 */
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));
2278 #line 2279 "util/configparser.c" /* yacc.c:1646 */
2282 #line 385 "util/configparser.y" /* yacc.c:1646 */
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));
2290 #line 2291 "util/configparser.c" /* yacc.c:1646 */
2294 #line 394 "util/configparser.y" /* yacc.c:1646 */
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));
2302 #line 2303 "util/configparser.c" /* yacc.c:1646 */
2306 #line 403 "util/configparser.y" /* yacc.c:1646 */
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));
2314 #line 2315 "util/configparser.c" /* yacc.c:1646 */
2318 #line 412 "util/configparser.y" /* yacc.c:1646 */
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));
2326 #line 2327 "util/configparser.c" /* yacc.c:1646 */
2330 #line 421 "util/configparser.y" /* yacc.c:1646 */
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));
2338 #line 2339 "util/configparser.c" /* yacc.c:1646 */
2342 #line 430 "util/configparser.y" /* yacc.c:1646 */
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));
2350 #line 2351 "util/configparser.c" /* yacc.c:1646 */
2354 #line 439 "util/configparser.y" /* yacc.c:1646 */
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);
2360 #line 2361 "util/configparser.c" /* yacc.c:1646 */
2364 #line 446 "util/configparser.y" /* yacc.c:1646 */
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);
2370 #line 2371 "util/configparser.c" /* yacc.c:1646 */
2374 #line 453 "util/configparser.y" /* yacc.c:1646 */
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));
2382 #line 2383 "util/configparser.c" /* yacc.c:1646 */
2386 #line 462 "util/configparser.y" /* yacc.c:1646 */
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));
2394 #line 2395 "util/configparser.c" /* yacc.c:1646 */
2398 #line 471 "util/configparser.y" /* yacc.c:1646 */
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)");
2409 free((yyvsp[0].str));
2411 #line 2412 "util/configparser.c" /* yacc.c:1646 */
2415 #line 485 "util/configparser.y" /* yacc.c:1646 */
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));
2423 #line 2424 "util/configparser.c" /* yacc.c:1646 */
2427 #line 494 "util/configparser.y" /* yacc.c:1646 */
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));
2435 #line 2436 "util/configparser.c" /* yacc.c:1646 */
2439 #line 503 "util/configparser.y" /* yacc.c:1646 */
2441 OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
2442 free(cfg_parser->cfg->chrootdir);
2443 cfg_parser->cfg->chrootdir = (yyvsp[0].str);
2445 #line 2446 "util/configparser.c" /* yacc.c:1646 */
2449 #line 510 "util/configparser.y" /* yacc.c:1646 */
2451 OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
2452 free(cfg_parser->cfg->username);
2453 cfg_parser->cfg->username = (yyvsp[0].str);
2455 #line 2456 "util/configparser.c" /* yacc.c:1646 */
2459 #line 517 "util/configparser.y" /* yacc.c:1646 */
2461 OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
2462 free(cfg_parser->cfg->directory);
2463 cfg_parser->cfg->directory = (yyvsp[0].str);
2465 #line 2466 "util/configparser.c" /* yacc.c:1646 */
2469 #line 524 "util/configparser.y" /* yacc.c:1646 */
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;
2476 #line 2477 "util/configparser.c" /* yacc.c:1646 */
2480 #line 532 "util/configparser.y" /* yacc.c:1646 */
2482 OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
2483 free(cfg_parser->cfg->pidfile);
2484 cfg_parser->cfg->pidfile = (yyvsp[0].str);
2486 #line 2487 "util/configparser.c" /* yacc.c:1646 */
2490 #line 539 "util/configparser.y" /* yacc.c:1646 */
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");
2496 #line 2497 "util/configparser.c" /* yacc.c:1646 */
2500 #line 546 "util/configparser.y" /* yacc.c:1646 */
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);
2506 #line 2507 "util/configparser.c" /* yacc.c:1646 */
2510 #line 553 "util/configparser.y" /* yacc.c:1646 */
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");
2516 #line 2517 "util/configparser.c" /* yacc.c:1646 */
2520 #line 560 "util/configparser.y" /* yacc.c:1646 */
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");
2527 #line 2528 "util/configparser.c" /* yacc.c:1646 */
2531 #line 568 "util/configparser.y" /* yacc.c:1646 */
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");
2538 #line 2539 "util/configparser.c" /* yacc.c:1646 */
2542 #line 576 "util/configparser.y" /* yacc.c:1646 */
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");
2549 #line 2550 "util/configparser.c" /* yacc.c:1646 */
2553 #line 584 "util/configparser.y" /* yacc.c:1646 */
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");
2559 #line 2560 "util/configparser.c" /* yacc.c:1646 */
2563 #line 591 "util/configparser.y" /* yacc.c:1646 */
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");
2569 #line 2570 "util/configparser.c" /* yacc.c:1646 */
2573 #line 598 "util/configparser.y" /* yacc.c:1646 */
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));
2581 #line 2582 "util/configparser.c" /* yacc.c:1646 */
2585 #line 607 "util/configparser.y" /* yacc.c:1646 */
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));
2593 #line 2594 "util/configparser.c" /* yacc.c:1646 */
2597 #line 616 "util/configparser.y" /* yacc.c:1646 */
2599 OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
2600 free(cfg_parser->cfg->identity);
2601 cfg_parser->cfg->identity = (yyvsp[0].str);
2603 #line 2604 "util/configparser.c" /* yacc.c:1646 */
2607 #line 623 "util/configparser.y" /* yacc.c:1646 */
2609 OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
2610 free(cfg_parser->cfg->version);
2611 cfg_parser->cfg->version = (yyvsp[0].str);
2613 #line 2614 "util/configparser.c" /* yacc.c:1646 */
2617 #line 630 "util/configparser.y" /* yacc.c:1646 */
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));
2624 #line 2625 "util/configparser.c" /* yacc.c:1646 */
2628 #line 638 "util/configparser.y" /* yacc.c:1646 */
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));
2635 #line 2636 "util/configparser.c" /* yacc.c:1646 */
2639 #line 646 "util/configparser.y" /* yacc.c:1646 */
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));
2648 #line 2649 "util/configparser.c" /* yacc.c:1646 */
2652 #line 656 "util/configparser.y" /* yacc.c:1646 */
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));
2661 #line 2662 "util/configparser.c" /* yacc.c:1646 */
2665 #line 666 "util/configparser.y" /* yacc.c:1646 */
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));
2677 #line 2678 "util/configparser.c" /* yacc.c:1646 */
2681 #line 679 "util/configparser.y" /* yacc.c:1646 */
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));
2691 #line 2692 "util/configparser.c" /* yacc.c:1646 */
2695 #line 690 "util/configparser.y" /* yacc.c:1646 */
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));
2702 #line 2703 "util/configparser.c" /* yacc.c:1646 */
2706 #line 698 "util/configparser.y" /* yacc.c:1646 */
2708 OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
2709 if(atoi((yyvsp[0].str)) == 0)
2710 yyerror("number expected");
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");
2716 free((yyvsp[0].str));
2718 #line 2719 "util/configparser.c" /* yacc.c:1646 */
2722 #line 711 "util/configparser.y" /* yacc.c:1646 */
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));
2730 #line 2731 "util/configparser.c" /* yacc.c:1646 */
2734 #line 720 "util/configparser.y" /* yacc.c:1646 */
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));
2742 #line 2743 "util/configparser.c" /* yacc.c:1646 */
2746 #line 729 "util/configparser.y" /* yacc.c:1646 */
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));
2754 #line 2755 "util/configparser.c" /* yacc.c:1646 */
2758 #line 738 "util/configparser.y" /* yacc.c:1646 */
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));
2767 #line 2768 "util/configparser.c" /* yacc.c:1646 */
2771 #line 748 "util/configparser.y" /* yacc.c:1646 */
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));
2780 #line 2781 "util/configparser.c" /* yacc.c:1646 */
2784 #line 758 "util/configparser.y" /* yacc.c:1646 */
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));
2791 #line 2792 "util/configparser.c" /* yacc.c:1646 */
2795 #line 766 "util/configparser.y" /* yacc.c:1646 */
2797 OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
2798 if(atoi((yyvsp[0].str)) == 0)
2799 yyerror("number expected");
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");
2805 free((yyvsp[0].str));
2807 #line 2808 "util/configparser.c" /* yacc.c:1646 */
2811 #line 779 "util/configparser.y" /* yacc.c:1646 */
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));
2819 #line 2820 "util/configparser.c" /* yacc.c:1646 */
2823 #line 788 "util/configparser.y" /* yacc.c:1646 */
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));
2830 #line 2831 "util/configparser.c" /* yacc.c:1646 */
2834 #line 796 "util/configparser.y" /* yacc.c:1646 */
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));
2842 #line 2843 "util/configparser.c" /* yacc.c:1646 */
2846 #line 805 "util/configparser.y" /* yacc.c:1646 */
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));
2853 #line 2854 "util/configparser.c" /* yacc.c:1646 */
2857 #line 813 "util/configparser.y" /* yacc.c:1646 */
2859 OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
2860 if(atoi((yyvsp[0].str)) == 0)
2861 yyerror("number expected");
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");
2867 free((yyvsp[0].str));
2869 #line 2870 "util/configparser.c" /* yacc.c:1646 */
2873 #line 826 "util/configparser.y" /* yacc.c:1646 */
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));
2881 #line 2882 "util/configparser.c" /* yacc.c:1646 */
2885 #line 835 "util/configparser.y" /* yacc.c:1646 */
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);
2891 #line 2892 "util/configparser.c" /* yacc.c:1646 */
2895 #line 842 "util/configparser.y" /* yacc.c:1646 */
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));
2904 #line 2905 "util/configparser.c" /* yacc.c:1646 */
2908 #line 852 "util/configparser.y" /* yacc.c:1646 */
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));
2917 #line 2918 "util/configparser.c" /* yacc.c:1646 */
2921 #line 862 "util/configparser.y" /* yacc.c:1646 */
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));
2930 #line 2931 "util/configparser.c" /* yacc.c:1646 */
2934 #line 872 "util/configparser.y" /* yacc.c:1646 */
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));
2943 #line 2944 "util/configparser.c" /* yacc.c:1646 */
2947 #line 882 "util/configparser.y" /* yacc.c:1646 */
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));
2956 #line 2957 "util/configparser.c" /* yacc.c:1646 */
2960 #line 892 "util/configparser.y" /* yacc.c:1646 */
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));
2969 #line 2970 "util/configparser.c" /* yacc.c:1646 */
2973 #line 902 "util/configparser.y" /* yacc.c:1646 */
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));
2982 #line 2983 "util/configparser.c" /* yacc.c:1646 */
2986 #line 912 "util/configparser.y" /* yacc.c:1646 */
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));
2995 #line 2996 "util/configparser.c" /* yacc.c:1646 */
2999 #line 922 "util/configparser.y" /* yacc.c:1646 */
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");
3005 #line 3006 "util/configparser.c" /* yacc.c:1646 */
3009 #line 929 "util/configparser.y" /* yacc.c:1646 */
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");
3015 #line 3016 "util/configparser.c" /* yacc.c:1646 */
3019 #line 936 "util/configparser.y" /* yacc.c:1646 */
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");
3025 #line 3026 "util/configparser.c" /* yacc.c:1646 */
3029 #line 943 "util/configparser.y" /* yacc.c:1646 */
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));
3037 #line 3038 "util/configparser.c" /* yacc.c:1646 */
3041 #line 952 "util/configparser.y" /* yacc.c:1646 */
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));
3049 #line 3050 "util/configparser.c" /* yacc.c:1646 */
3053 #line 961 "util/configparser.y" /* yacc.c:1646 */
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));
3061 #line 3062 "util/configparser.c" /* yacc.c:1646 */
3065 #line 970 "util/configparser.y" /* yacc.c:1646 */
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");
3071 #line 3072 "util/configparser.c" /* yacc.c:1646 */
3075 #line 977 "util/configparser.y" /* yacc.c:1646 */
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));
3084 #line 3085 "util/configparser.c" /* yacc.c:1646 */
3088 #line 987 "util/configparser.y" /* yacc.c:1646 */
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");
3100 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
3101 fatal_exit("out of memory adding acl");
3104 #line 3105 "util/configparser.c" /* yacc.c:1646 */
3108 #line 1004 "util/configparser.y" /* yacc.c:1646 */
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);
3114 #line 3115 "util/configparser.c" /* yacc.c:1646 */
3118 #line 1011 "util/configparser.y" /* yacc.c:1646 */
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");
3129 if(atoi((yyvsp[0].str)) == 0)
3130 yyerror("number expected");
3131 cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
3133 free((yyvsp[0].str));
3135 #line 3136 "util/configparser.c" /* yacc.c:1646 */
3139 #line 1029 "util/configparser.y" /* yacc.c:1646 */
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;
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");
3149 free((yyvsp[0].str));
3151 #line 3152 "util/configparser.c" /* yacc.c:1646 */
3155 #line 1042 "util/configparser.y" /* yacc.c:1646 */
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;
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");
3165 free((yyvsp[0].str));
3167 #line 3168 "util/configparser.c" /* yacc.c:1646 */
3171 #line 1055 "util/configparser.y" /* yacc.c:1646 */
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));
3179 #line 3180 "util/configparser.c" /* yacc.c:1646 */
3183 #line 1064 "util/configparser.y" /* yacc.c:1646 */
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));
3191 #line 3192 "util/configparser.c" /* yacc.c:1646 */
3195 #line 1073 "util/configparser.y" /* yacc.c:1646 */
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));
3203 #line 3204 "util/configparser.c" /* yacc.c:1646 */
3207 #line 1082 "util/configparser.y" /* yacc.c:1646 */
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));
3215 #line 3216 "util/configparser.c" /* yacc.c:1646 */
3219 #line 1091 "util/configparser.y" /* yacc.c:1646 */
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));
3228 #line 3229 "util/configparser.c" /* yacc.c:1646 */
3232 #line 1101 "util/configparser.y" /* yacc.c:1646 */
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));
3241 #line 3242 "util/configparser.c" /* yacc.c:1646 */
3245 #line 1111 "util/configparser.y" /* yacc.c:1646 */
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));
3253 #line 3254 "util/configparser.c" /* yacc.c:1646 */
3257 #line 1120 "util/configparser.y" /* yacc.c:1646 */
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));
3265 #line 3266 "util/configparser.c" /* yacc.c:1646 */
3269 #line 1129 "util/configparser.y" /* yacc.c:1646 */
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);
3275 #line 3276 "util/configparser.c" /* yacc.c:1646 */
3279 #line 1136 "util/configparser.y" /* yacc.c:1646 */
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));
3287 #line 3288 "util/configparser.c" /* yacc.c:1646 */
3291 #line 1145 "util/configparser.y" /* yacc.c:1646 */
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));
3299 #line 3300 "util/configparser.c" /* yacc.c:1646 */
3303 #line 1154 "util/configparser.y" /* yacc.c:1646 */
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));
3311 #line 3312 "util/configparser.c" /* yacc.c:1646 */
3315 #line 1163 "util/configparser.y" /* yacc.c:1646 */
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));
3324 #line 3325 "util/configparser.c" /* yacc.c:1646 */
3328 #line 1172 "util/configparser.y" /* yacc.c:1646 */
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));
3335 #line 3336 "util/configparser.c" /* yacc.c:1646 */
3339 #line 1180 "util/configparser.y" /* yacc.c:1646 */
3341 OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
3342 if(atoi((yyvsp[0].str)) == 0)
3343 yyerror("number expected");
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");
3349 free((yyvsp[0].str));
3351 #line 3352 "util/configparser.c" /* yacc.c:1646 */
3355 #line 1193 "util/configparser.y" /* yacc.c:1646 */
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));
3362 #line 3363 "util/configparser.c" /* yacc.c:1646 */
3366 #line 1201 "util/configparser.y" /* yacc.c:1646 */
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 "
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));
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");
3389 #line 3390 "util/configparser.c" /* yacc.c:1646 */
3393 #line 1225 "util/configparser.y" /* yacc.c:1646 */
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");
3399 #line 3400 "util/configparser.c" /* yacc.c:1646 */
3403 #line 1232 "util/configparser.y" /* yacc.c:1646 */
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));
3410 if(!cfg_strlist_insert(&cfg_parser->cfg->
3412 fatal_exit("out of memory adding local-data");
3414 yyerror("local-data-ptr could not be reversed");
3417 #line 3418 "util/configparser.c" /* yacc.c:1646 */
3421 #line 1247 "util/configparser.y" /* yacc.c:1646 */
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));
3430 #line 3431 "util/configparser.c" /* yacc.c:1646 */
3434 #line 1257 "util/configparser.y" /* yacc.c:1646 */
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));
3443 #line 3444 "util/configparser.c" /* yacc.c:1646 */
3447 #line 1267 "util/configparser.y" /* yacc.c:1646 */
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));
3453 #line 3454 "util/configparser.c" /* yacc.c:1646 */
3457 #line 1274 "util/configparser.y" /* yacc.c:1646 */
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);
3463 #line 3464 "util/configparser.c" /* yacc.c:1646 */
3467 #line 1281 "util/configparser.y" /* yacc.c:1646 */
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));
3475 #line 3476 "util/configparser.c" /* yacc.c:1646 */
3479 #line 1290 "util/configparser.y" /* yacc.c:1646 */
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));
3487 #line 3488 "util/configparser.c" /* yacc.c:1646 */
3491 #line 1299 "util/configparser.y" /* yacc.c:1646 */
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));
3498 #line 3499 "util/configparser.c" /* yacc.c:1646 */
3502 #line 1307 "util/configparser.y" /* yacc.c:1646 */
3504 OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
3505 if(atoi((yyvsp[0].str)) == 0)
3506 yyerror("number expected");
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");
3512 free((yyvsp[0].str));
3514 #line 3515 "util/configparser.c" /* yacc.c:1646 */
3518 #line 1320 "util/configparser.y" /* yacc.c:1646 */
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");
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");
3530 #line 3531 "util/configparser.c" /* yacc.c:1646 */
3534 #line 1333 "util/configparser.y" /* yacc.c:1646 */
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");
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");
3546 #line 3547 "util/configparser.c" /* yacc.c:1646 */
3550 #line 1346 "util/configparser.y" /* yacc.c:1646 */
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));
3558 #line 3559 "util/configparser.c" /* yacc.c:1646 */
3562 #line 1355 "util/configparser.y" /* yacc.c:1646 */
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));
3571 #line 3572 "util/configparser.c" /* yacc.c:1646 */
3575 #line 1365 "util/configparser.y" /* yacc.c:1646 */
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);
3584 #line 3585 "util/configparser.c" /* yacc.c:1646 */
3588 #line 1375 "util/configparser.y" /* yacc.c:1646 */
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");
3594 #line 3595 "util/configparser.c" /* yacc.c:1646 */
3598 #line 1382 "util/configparser.y" /* yacc.c:1646 */
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");
3604 #line 3605 "util/configparser.c" /* yacc.c:1646 */
3608 #line 1389 "util/configparser.y" /* yacc.c:1646 */
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));
3616 #line 3617 "util/configparser.c" /* yacc.c:1646 */
3620 #line 1398 "util/configparser.y" /* yacc.c:1646 */
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));
3629 #line 3630 "util/configparser.c" /* yacc.c:1646 */
3633 #line 1408 "util/configparser.y" /* yacc.c:1646 */
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);
3642 #line 3643 "util/configparser.c" /* yacc.c:1646 */
3646 #line 1418 "util/configparser.y" /* yacc.c:1646 */
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");
3652 #line 3653 "util/configparser.c" /* yacc.c:1646 */
3656 #line 1425 "util/configparser.y" /* yacc.c:1646 */
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");
3662 #line 3663 "util/configparser.c" /* yacc.c:1646 */
3666 #line 1432 "util/configparser.y" /* yacc.c:1646 */
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));
3674 #line 3675 "util/configparser.c" /* yacc.c:1646 */
3678 #line 1441 "util/configparser.y" /* yacc.c:1646 */
3680 OUTYY(("\nP(remote-control:)\n"));
3682 #line 3683 "util/configparser.c" /* yacc.c:1646 */
3686 #line 1452 "util/configparser.y" /* yacc.c:1646 */
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));
3695 #line 3696 "util/configparser.c" /* yacc.c:1646 */
3699 #line 1462 "util/configparser.y" /* yacc.c:1646 */
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));
3707 #line 3708 "util/configparser.c" /* yacc.c:1646 */
3711 #line 1471 "util/configparser.y" /* yacc.c:1646 */
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");
3717 #line 3718 "util/configparser.c" /* yacc.c:1646 */
3721 #line 1478 "util/configparser.y" /* yacc.c:1646 */
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));
3730 #line 3731 "util/configparser.c" /* yacc.c:1646 */
3734 #line 1488 "util/configparser.y" /* yacc.c:1646 */
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);
3740 #line 3741 "util/configparser.c" /* yacc.c:1646 */
3744 #line 1495 "util/configparser.y" /* yacc.c:1646 */
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);
3750 #line 3751 "util/configparser.c" /* yacc.c:1646 */
3754 #line 1502 "util/configparser.y" /* yacc.c:1646 */
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);
3760 #line 3761 "util/configparser.c" /* yacc.c:1646 */
3764 #line 1509 "util/configparser.y" /* yacc.c:1646 */
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);
3770 #line 3771 "util/configparser.c" /* yacc.c:1646 */
3774 #line 1516 "util/configparser.y" /* yacc.c:1646 */
3776 OUTYY(("\nP(dnstap:)\n"));
3778 #line 3779 "util/configparser.c" /* yacc.c:1646 */
3782 #line 1533 "util/configparser.y" /* yacc.c:1646 */
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);
3789 #line 3790 "util/configparser.c" /* yacc.c:1646 */
3793 #line 1541 "util/configparser.y" /* yacc.c:1646 */
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);
3799 #line 3800 "util/configparser.c" /* yacc.c:1646 */
3803 #line 1548 "util/configparser.y" /* yacc.c:1646 */
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);
3810 #line 3811 "util/configparser.c" /* yacc.c:1646 */
3814 #line 1556 "util/configparser.y" /* yacc.c:1646 */
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);
3821 #line 3822 "util/configparser.c" /* yacc.c:1646 */
3825 #line 1564 "util/configparser.y" /* yacc.c:1646 */
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);
3831 #line 3832 "util/configparser.c" /* yacc.c:1646 */
3835 #line 1571 "util/configparser.y" /* yacc.c:1646 */
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);
3841 #line 3842 "util/configparser.c" /* yacc.c:1646 */
3845 #line 1578 "util/configparser.y" /* yacc.c:1646 */
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);
3853 #line 3854 "util/configparser.c" /* yacc.c:1646 */
3857 #line 1587 "util/configparser.y" /* yacc.c:1646 */
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);
3865 #line 3866 "util/configparser.c" /* yacc.c:1646 */
3869 #line 1596 "util/configparser.y" /* yacc.c:1646 */
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);
3877 #line 3878 "util/configparser.c" /* yacc.c:1646 */
3881 #line 1605 "util/configparser.y" /* yacc.c:1646 */
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);
3889 #line 3890 "util/configparser.c" /* yacc.c:1646 */
3893 #line 1614 "util/configparser.y" /* yacc.c:1646 */
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);
3901 #line 3902 "util/configparser.c" /* yacc.c:1646 */
3905 #line 1623 "util/configparser.y" /* yacc.c:1646 */
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);
3913 #line 3914 "util/configparser.c" /* yacc.c:1646 */
3917 #line 1632 "util/configparser.y" /* yacc.c:1646 */
3919 OUTYY(("\nP(python:)\n"));
3921 #line 3922 "util/configparser.c" /* yacc.c:1646 */
3925 #line 1641 "util/configparser.y" /* yacc.c:1646 */
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);
3931 #line 3932 "util/configparser.c" /* yacc.c:1646 */
3935 #line 3936 "util/configparser.c" /* yacc.c:1646 */
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);
3953 YY_STACK_PRINT (yyss, yyssp);
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. */
3963 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3964 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3965 yystate = yytable[yystate];
3967 yystate = yydefgoto[yyn - YYNTOKENS];
3972 /*--------------------------------------.
3973 | yyerrlab -- here on detecting error. |
3974 `--------------------------------------*/
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);
3980 /* If not already recovering from an error, report this error. */
3984 #if ! YYERROR_VERBOSE
3985 yyerror (YY_("syntax error"));
3987 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3990 char const *yymsgp = YY_("syntax error");
3991 int yysyntax_error_status;
3992 yysyntax_error_status = YYSYNTAX_ERROR;
3993 if (yysyntax_error_status == 0)
3995 else if (yysyntax_error_status == 1)
3997 if (yymsg != yymsgbuf)
3998 YYSTACK_FREE (yymsg);
3999 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
4003 yymsg_alloc = sizeof yymsgbuf;
4004 yysyntax_error_status = 2;
4008 yysyntax_error_status = YYSYNTAX_ERROR;
4013 if (yysyntax_error_status == 2)
4014 goto yyexhaustedlab;
4016 # undef YYSYNTAX_ERROR
4022 if (yyerrstatus == 3)
4024 /* If just tried and failed to reuse lookahead token after an
4025 error, discard it. */
4027 if (yychar <= YYEOF)
4029 /* Return failure if at end of input. */
4030 if (yychar == YYEOF)
4035 yydestruct ("Error: discarding",
4041 /* Else will try to reuse lookahead token after shifting the error
4046 /*---------------------------------------------------.
4047 | yyerrorlab -- error raised explicitly by YYERROR. |
4048 `---------------------------------------------------*/
4051 /* Pacify compilers like GCC when the user code never invokes
4052 YYERROR and the label yyerrorlab therefore never appears in user
4054 if (/*CONSTCOND*/ 0)
4057 /* Do not reclaim the symbols of the rule whose action triggered
4061 YY_STACK_PRINT (yyss, yyssp);
4066 /*-------------------------------------------------------------.
4067 | yyerrlab1 -- common code for both syntax error and YYERROR. |
4068 `-------------------------------------------------------------*/
4070 yyerrstatus = 3; /* Each real token shifted decrements this. */
4074 yyn = yypact[yystate];
4075 if (!yypact_value_is_default (yyn))
4078 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4086 /* Pop the current state because it cannot handle the error token. */
4091 yydestruct ("Error: popping",
4092 yystos[yystate], yyvsp);
4095 YY_STACK_PRINT (yyss, yyssp);
4098 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4100 YY_IGNORE_MAYBE_UNINITIALIZED_END
4103 /* Shift the error token. */
4104 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
4110 /*-------------------------------------.
4111 | yyacceptlab -- YYACCEPT comes here. |
4112 `-------------------------------------*/
4117 /*-----------------------------------.
4118 | yyabortlab -- YYABORT comes here. |
4119 `-----------------------------------*/
4124 #if !defined yyoverflow || YYERROR_VERBOSE
4125 /*-------------------------------------------------.
4126 | yyexhaustedlab -- memory exhaustion comes here. |
4127 `-------------------------------------------------*/
4129 yyerror (YY_("memory exhausted"));
4135 if (yychar != YYEMPTY)
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",
4143 /* Do not reclaim the symbols of the rule whose action triggered
4144 this YYABORT or YYACCEPT. */
4146 YY_STACK_PRINT (yyss, yyssp);
4147 while (yyssp != yyss)
4149 yydestruct ("Cleanup: popping",
4150 yystos[*yyssp], yyvsp);
4155 YYSTACK_FREE (yyss);
4158 if (yymsg != yymsgbuf)
4159 YYSTACK_FREE (yymsg);
4163 #line 1646 "util/configparser.y" /* yacc.c:1906 */
4166 /* parse helper routines could be here */