Home | History | Annotate | Line # | Download | only in dist
configparser.c revision 1.1.1.3
      1 /* A Bison parser, made by GNU Bison 3.0.4.  */
      2 
      3 /* Bison implementation for Yacc-like parsers in C
      4 
      5    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
      6 
      7    This program is free software: you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation, either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 /* As a special exception, you may create a larger work that contains
     21    part or all of the Bison parser skeleton and distribute that work
     22    under terms of your choice, so long as that work isn't itself a
     23    parser generator using the skeleton or a modified version thereof
     24    as a parser skeleton.  Alternatively, if you modify or redistribute
     25    the parser skeleton itself, you may (at your option) remove this
     26    special exception, which will cause the skeleton and the resulting
     27    Bison output files to be licensed under the GNU General Public
     28    License without this special exception.
     29 
     30    This special exception was added by the Free Software Foundation in
     31    version 2.2 of Bison.  */
     32 
     33 /* C LALR(1) parser skeleton written by Richard Stallman, by
     34    simplifying the original so-called "semantic" parser.  */
     35 
     36 /* All symbols defined below should begin with yy or YY, to avoid
     37    infringing on user name space.  This should be done even for local
     38    variables, as they might otherwise be expanded by user macros.
     39    There are some unavoidable exceptions within include files to
     40    define necessary library symbols; they are noted "INFRINGES ON
     41    USER NAME SPACE" below.  */
     42 
     43 /* Identify Bison output.  */
     44 #define YYBISON 1
     45 
     46 /* Bison version.  */
     47 #define YYBISON_VERSION "3.0.4"
     48 
     49 /* Skeleton name.  */
     50 #define YYSKELETON_NAME "yacc.c"
     51 
     52 /* Pure parsers.  */
     53 #define YYPURE 0
     54 
     55 /* Push parsers.  */
     56 #define YYPUSH 0
     57 
     58 /* Pull parsers.  */
     59 #define YYPULL 1
     60 
     61 
     62 
     63 
     64 /* Copy the first part of user declarations.  */
     65 #line 10 "configparser.y" /* yacc.c:339  */
     66 
     67 #include "config.h"
     68 
     69 #include <stdarg.h>
     70 #include <stdio.h>
     71 #include <string.h>
     72 #include <stdlib.h>
     73 #include <assert.h>
     74 
     75 #include "options.h"
     76 #include "util.h"
     77 #include "dname.h"
     78 #include "tsig.h"
     79 #include "rrl.h"
     80 #include "configyyrename.h"
     81 int c_lex(void);
     82 void c_error(const char *message);
     83 
     84 #ifdef __cplusplus
     85 extern "C"
     86 #endif /* __cplusplus */
     87 
     88 /* these need to be global, otherwise they cannot be used inside yacc */
     89 extern config_parser_state_type* cfg_parser;
     90 
     91 #if 0
     92 #define OUTYY(s) printf s /* used ONLY when debugging */
     93 #else
     94 #define OUTYY(s)
     95 #endif
     96 
     97 
     98 #line 99 "configparser.c" /* yacc.c:339  */
     99 
    100 # ifndef YY_NULLPTR
    101 #  if defined __cplusplus && 201103L <= __cplusplus
    102 #   define YY_NULLPTR nullptr
    103 #  else
    104 #   define YY_NULLPTR 0
    105 #  endif
    106 # endif
    107 
    108 /* Enabling verbose error messages.  */
    109 #ifdef YYERROR_VERBOSE
    110 # undef YYERROR_VERBOSE
    111 # define YYERROR_VERBOSE 1
    112 #else
    113 # define YYERROR_VERBOSE 0
    114 #endif
    115 
    116 /* In a future release of Bison, this section will be replaced
    117    by #include "configparser.h".  */
    118 #ifndef YY_YY_CONFIGPARSER_H_INCLUDED
    119 # define YY_YY_CONFIGPARSER_H_INCLUDED
    120 /* Debug traces.  */
    121 #ifndef YYDEBUG
    122 # define YYDEBUG 0
    123 #endif
    124 #if YYDEBUG
    125 extern int yydebug;
    126 #endif
    127 
    128 /* Token type.  */
    129 #ifndef YYTOKENTYPE
    130 # define YYTOKENTYPE
    131   enum yytokentype
    132   {
    133     SPACE = 258,
    134     LETTER = 259,
    135     NEWLINE = 260,
    136     COMMENT = 261,
    137     COLON = 262,
    138     ANY = 263,
    139     ZONESTR = 264,
    140     STRING = 265,
    141     VAR_SERVER = 266,
    142     VAR_NAME = 267,
    143     VAR_IP_ADDRESS = 268,
    144     VAR_IP_TRANSPARENT = 269,
    145     VAR_DEBUG_MODE = 270,
    146     VAR_IP4_ONLY = 271,
    147     VAR_IP6_ONLY = 272,
    148     VAR_DATABASE = 273,
    149     VAR_IDENTITY = 274,
    150     VAR_NSID = 275,
    151     VAR_LOGFILE = 276,
    152     VAR_SERVER_COUNT = 277,
    153     VAR_TCP_COUNT = 278,
    154     VAR_PIDFILE = 279,
    155     VAR_PORT = 280,
    156     VAR_STATISTICS = 281,
    157     VAR_CHROOT = 282,
    158     VAR_USERNAME = 283,
    159     VAR_ZONESDIR = 284,
    160     VAR_XFRDFILE = 285,
    161     VAR_DIFFFILE = 286,
    162     VAR_XFRD_RELOAD_TIMEOUT = 287,
    163     VAR_TCP_QUERY_COUNT = 288,
    164     VAR_TCP_TIMEOUT = 289,
    165     VAR_IPV4_EDNS_SIZE = 290,
    166     VAR_IPV6_EDNS_SIZE = 291,
    167     VAR_DO_IP4 = 292,
    168     VAR_DO_IP6 = 293,
    169     VAR_TCP_MSS = 294,
    170     VAR_OUTGOING_TCP_MSS = 295,
    171     VAR_IP_FREEBIND = 296,
    172     VAR_ZONEFILE = 297,
    173     VAR_ZONE = 298,
    174     VAR_ALLOW_NOTIFY = 299,
    175     VAR_REQUEST_XFR = 300,
    176     VAR_NOTIFY = 301,
    177     VAR_PROVIDE_XFR = 302,
    178     VAR_SIZE_LIMIT_XFR = 303,
    179     VAR_NOTIFY_RETRY = 304,
    180     VAR_OUTGOING_INTERFACE = 305,
    181     VAR_ALLOW_AXFR_FALLBACK = 306,
    182     VAR_KEY = 307,
    183     VAR_ALGORITHM = 308,
    184     VAR_SECRET = 309,
    185     VAR_AXFR = 310,
    186     VAR_UDP = 311,
    187     VAR_VERBOSITY = 312,
    188     VAR_HIDE_VERSION = 313,
    189     VAR_PATTERN = 314,
    190     VAR_INCLUDEPATTERN = 315,
    191     VAR_ZONELISTFILE = 316,
    192     VAR_REMOTE_CONTROL = 317,
    193     VAR_CONTROL_ENABLE = 318,
    194     VAR_CONTROL_INTERFACE = 319,
    195     VAR_CONTROL_PORT = 320,
    196     VAR_SERVER_KEY_FILE = 321,
    197     VAR_SERVER_CERT_FILE = 322,
    198     VAR_CONTROL_KEY_FILE = 323,
    199     VAR_CONTROL_CERT_FILE = 324,
    200     VAR_XFRDIR = 325,
    201     VAR_RRL_SIZE = 326,
    202     VAR_RRL_RATELIMIT = 327,
    203     VAR_RRL_SLIP = 328,
    204     VAR_RRL_IPV4_PREFIX_LENGTH = 329,
    205     VAR_RRL_IPV6_PREFIX_LENGTH = 330,
    206     VAR_RRL_WHITELIST_RATELIMIT = 331,
    207     VAR_RRL_WHITELIST = 332,
    208     VAR_ZONEFILES_CHECK = 333,
    209     VAR_ZONEFILES_WRITE = 334,
    210     VAR_LOG_TIME_ASCII = 335,
    211     VAR_ROUND_ROBIN = 336,
    212     VAR_ZONESTATS = 337,
    213     VAR_REUSEPORT = 338,
    214     VAR_VERSION = 339,
    215     VAR_MAX_REFRESH_TIME = 340,
    216     VAR_MIN_REFRESH_TIME = 341,
    217     VAR_MAX_RETRY_TIME = 342,
    218     VAR_MIN_RETRY_TIME = 343,
    219     VAR_MULTI_MASTER_CHECK = 344,
    220     VAR_MINIMAL_RESPONSES = 345,
    221     VAR_REFUSE_ANY = 346,
    222     VAR_USE_SYSTEMD = 347,
    223     VAR_DNSTAP = 348,
    224     VAR_DNSTAP_ENABLE = 349,
    225     VAR_DNSTAP_SOCKET_PATH = 350,
    226     VAR_DNSTAP_SEND_IDENTITY = 351,
    227     VAR_DNSTAP_SEND_VERSION = 352,
    228     VAR_DNSTAP_IDENTITY = 353,
    229     VAR_DNSTAP_VERSION = 354,
    230     VAR_DNSTAP_LOG_AUTH_QUERY_MESSAGES = 355,
    231     VAR_DNSTAP_LOG_AUTH_RESPONSE_MESSAGES = 356
    232   };
    233 #endif
    234 /* Tokens.  */
    235 #define SPACE 258
    236 #define LETTER 259
    237 #define NEWLINE 260
    238 #define COMMENT 261
    239 #define COLON 262
    240 #define ANY 263
    241 #define ZONESTR 264
    242 #define STRING 265
    243 #define VAR_SERVER 266
    244 #define VAR_NAME 267
    245 #define VAR_IP_ADDRESS 268
    246 #define VAR_IP_TRANSPARENT 269
    247 #define VAR_DEBUG_MODE 270
    248 #define VAR_IP4_ONLY 271
    249 #define VAR_IP6_ONLY 272
    250 #define VAR_DATABASE 273
    251 #define VAR_IDENTITY 274
    252 #define VAR_NSID 275
    253 #define VAR_LOGFILE 276
    254 #define VAR_SERVER_COUNT 277
    255 #define VAR_TCP_COUNT 278
    256 #define VAR_PIDFILE 279
    257 #define VAR_PORT 280
    258 #define VAR_STATISTICS 281
    259 #define VAR_CHROOT 282
    260 #define VAR_USERNAME 283
    261 #define VAR_ZONESDIR 284
    262 #define VAR_XFRDFILE 285
    263 #define VAR_DIFFFILE 286
    264 #define VAR_XFRD_RELOAD_TIMEOUT 287
    265 #define VAR_TCP_QUERY_COUNT 288
    266 #define VAR_TCP_TIMEOUT 289
    267 #define VAR_IPV4_EDNS_SIZE 290
    268 #define VAR_IPV6_EDNS_SIZE 291
    269 #define VAR_DO_IP4 292
    270 #define VAR_DO_IP6 293
    271 #define VAR_TCP_MSS 294
    272 #define VAR_OUTGOING_TCP_MSS 295
    273 #define VAR_IP_FREEBIND 296
    274 #define VAR_ZONEFILE 297
    275 #define VAR_ZONE 298
    276 #define VAR_ALLOW_NOTIFY 299
    277 #define VAR_REQUEST_XFR 300
    278 #define VAR_NOTIFY 301
    279 #define VAR_PROVIDE_XFR 302
    280 #define VAR_SIZE_LIMIT_XFR 303
    281 #define VAR_NOTIFY_RETRY 304
    282 #define VAR_OUTGOING_INTERFACE 305
    283 #define VAR_ALLOW_AXFR_FALLBACK 306
    284 #define VAR_KEY 307
    285 #define VAR_ALGORITHM 308
    286 #define VAR_SECRET 309
    287 #define VAR_AXFR 310
    288 #define VAR_UDP 311
    289 #define VAR_VERBOSITY 312
    290 #define VAR_HIDE_VERSION 313
    291 #define VAR_PATTERN 314
    292 #define VAR_INCLUDEPATTERN 315
    293 #define VAR_ZONELISTFILE 316
    294 #define VAR_REMOTE_CONTROL 317
    295 #define VAR_CONTROL_ENABLE 318
    296 #define VAR_CONTROL_INTERFACE 319
    297 #define VAR_CONTROL_PORT 320
    298 #define VAR_SERVER_KEY_FILE 321
    299 #define VAR_SERVER_CERT_FILE 322
    300 #define VAR_CONTROL_KEY_FILE 323
    301 #define VAR_CONTROL_CERT_FILE 324
    302 #define VAR_XFRDIR 325
    303 #define VAR_RRL_SIZE 326
    304 #define VAR_RRL_RATELIMIT 327
    305 #define VAR_RRL_SLIP 328
    306 #define VAR_RRL_IPV4_PREFIX_LENGTH 329
    307 #define VAR_RRL_IPV6_PREFIX_LENGTH 330
    308 #define VAR_RRL_WHITELIST_RATELIMIT 331
    309 #define VAR_RRL_WHITELIST 332
    310 #define VAR_ZONEFILES_CHECK 333
    311 #define VAR_ZONEFILES_WRITE 334
    312 #define VAR_LOG_TIME_ASCII 335
    313 #define VAR_ROUND_ROBIN 336
    314 #define VAR_ZONESTATS 337
    315 #define VAR_REUSEPORT 338
    316 #define VAR_VERSION 339
    317 #define VAR_MAX_REFRESH_TIME 340
    318 #define VAR_MIN_REFRESH_TIME 341
    319 #define VAR_MAX_RETRY_TIME 342
    320 #define VAR_MIN_RETRY_TIME 343
    321 #define VAR_MULTI_MASTER_CHECK 344
    322 #define VAR_MINIMAL_RESPONSES 345
    323 #define VAR_REFUSE_ANY 346
    324 #define VAR_USE_SYSTEMD 347
    325 #define VAR_DNSTAP 348
    326 #define VAR_DNSTAP_ENABLE 349
    327 #define VAR_DNSTAP_SOCKET_PATH 350
    328 #define VAR_DNSTAP_SEND_IDENTITY 351
    329 #define VAR_DNSTAP_SEND_VERSION 352
    330 #define VAR_DNSTAP_IDENTITY 353
    331 #define VAR_DNSTAP_VERSION 354
    332 #define VAR_DNSTAP_LOG_AUTH_QUERY_MESSAGES 355
    333 #define VAR_DNSTAP_LOG_AUTH_RESPONSE_MESSAGES 356
    334 
    335 /* Value type.  */
    336 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    337 
    338 union YYSTYPE
    339 {
    340 #line 42 "configparser.y" /* yacc.c:355  */
    341 
    342 	char*	str;
    343 
    344 #line 345 "configparser.c" /* yacc.c:355  */
    345 };
    346 
    347 typedef union YYSTYPE YYSTYPE;
    348 # define YYSTYPE_IS_TRIVIAL 1
    349 # define YYSTYPE_IS_DECLARED 1
    350 #endif
    351 
    352 
    353 extern YYSTYPE yylval;
    354 
    355 int yyparse (void);
    356 
    357 #endif /* !YY_YY_CONFIGPARSER_H_INCLUDED  */
    358 
    359 /* Copy the second part of user declarations.  */
    360 
    361 #line 362 "configparser.c" /* yacc.c:358  */
    362 
    363 #ifdef short
    364 # undef short
    365 #endif
    366 
    367 #ifdef YYTYPE_UINT8
    368 typedef YYTYPE_UINT8 yytype_uint8;
    369 #else
    370 typedef unsigned char yytype_uint8;
    371 #endif
    372 
    373 #ifdef YYTYPE_INT8
    374 typedef YYTYPE_INT8 yytype_int8;
    375 #else
    376 typedef signed char yytype_int8;
    377 #endif
    378 
    379 #ifdef YYTYPE_UINT16
    380 typedef YYTYPE_UINT16 yytype_uint16;
    381 #else
    382 typedef unsigned short int yytype_uint16;
    383 #endif
    384 
    385 #ifdef YYTYPE_INT16
    386 typedef YYTYPE_INT16 yytype_int16;
    387 #else
    388 typedef short int yytype_int16;
    389 #endif
    390 
    391 #ifndef YYSIZE_T
    392 # ifdef __SIZE_TYPE__
    393 #  define YYSIZE_T __SIZE_TYPE__
    394 # elif defined size_t
    395 #  define YYSIZE_T size_t
    396 # elif ! defined YYSIZE_T
    397 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    398 #  define YYSIZE_T size_t
    399 # else
    400 #  define YYSIZE_T unsigned int
    401 # endif
    402 #endif
    403 
    404 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
    405 
    406 #ifndef YY_
    407 # if defined YYENABLE_NLS && YYENABLE_NLS
    408 #  if ENABLE_NLS
    409 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    410 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    411 #  endif
    412 # endif
    413 # ifndef YY_
    414 #  define YY_(Msgid) Msgid
    415 # endif
    416 #endif
    417 
    418 #ifndef YY_ATTRIBUTE
    419 # if (defined __GNUC__                                               \
    420       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
    421      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
    422 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
    423 # else
    424 #  define YY_ATTRIBUTE(Spec) /* empty */
    425 # endif
    426 #endif
    427 
    428 #ifndef YY_ATTRIBUTE_PURE
    429 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
    430 #endif
    431 
    432 #ifndef YY_ATTRIBUTE_UNUSED
    433 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
    434 #endif
    435 
    436 #if !defined _Noreturn \
    437      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
    438 # if defined _MSC_VER && 1200 <= _MSC_VER
    439 #  define _Noreturn __declspec (noreturn)
    440 # else
    441 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
    442 # endif
    443 #endif
    444 
    445 /* Suppress unused-variable warnings by "using" E.  */
    446 #if ! defined lint || defined __GNUC__
    447 # define YYUSE(E) ((void) (E))
    448 #else
    449 # define YYUSE(E) /* empty */
    450 #endif
    451 
    452 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
    453 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
    454 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
    455     _Pragma ("GCC diagnostic push") \
    456     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
    457     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
    458 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
    459     _Pragma ("GCC diagnostic pop")
    460 #else
    461 # define YY_INITIAL_VALUE(Value) Value
    462 #endif
    463 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    464 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    465 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
    466 #endif
    467 #ifndef YY_INITIAL_VALUE
    468 # define YY_INITIAL_VALUE(Value) /* Nothing. */
    469 #endif
    470 
    471 
    472 #if ! defined yyoverflow || YYERROR_VERBOSE
    473 
    474 /* The parser invokes alloca or malloc; define the necessary symbols.  */
    475 
    476 # ifdef YYSTACK_USE_ALLOCA
    477 #  if YYSTACK_USE_ALLOCA
    478 #   ifdef __GNUC__
    479 #    define YYSTACK_ALLOC __builtin_alloca
    480 #   elif defined __BUILTIN_VA_ARG_INCR
    481 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
    482 #   elif defined _AIX
    483 #    define YYSTACK_ALLOC __alloca
    484 #   elif defined _MSC_VER
    485 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
    486 #    define alloca _alloca
    487 #   else
    488 #    define YYSTACK_ALLOC alloca
    489 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    490 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    491       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    492 #     ifndef EXIT_SUCCESS
    493 #      define EXIT_SUCCESS 0
    494 #     endif
    495 #    endif
    496 #   endif
    497 #  endif
    498 # endif
    499 
    500 # ifdef YYSTACK_ALLOC
    501    /* Pacify GCC's 'empty if-body' warning.  */
    502 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    503 #  ifndef YYSTACK_ALLOC_MAXIMUM
    504     /* The OS might guarantee only one guard page at the bottom of the stack,
    505        and a page size can be as small as 4096 bytes.  So we cannot safely
    506        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
    507        to allow for a few compiler-allocated temporary stack slots.  */
    508 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
    509 #  endif
    510 # else
    511 #  define YYSTACK_ALLOC YYMALLOC
    512 #  define YYSTACK_FREE YYFREE
    513 #  ifndef YYSTACK_ALLOC_MAXIMUM
    514 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
    515 #  endif
    516 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    517        && ! ((defined YYMALLOC || defined malloc) \
    518              && (defined YYFREE || defined free)))
    519 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    520 #   ifndef EXIT_SUCCESS
    521 #    define EXIT_SUCCESS 0
    522 #   endif
    523 #  endif
    524 #  ifndef YYMALLOC
    525 #   define YYMALLOC malloc
    526 #   if ! defined malloc && ! defined EXIT_SUCCESS
    527 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    528 #   endif
    529 #  endif
    530 #  ifndef YYFREE
    531 #   define YYFREE free
    532 #   if ! defined free && ! defined EXIT_SUCCESS
    533 void free (void *); /* INFRINGES ON USER NAME SPACE */
    534 #   endif
    535 #  endif
    536 # endif
    537 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
    538 
    539 
    540 #if (! defined yyoverflow \
    541      && (! defined __cplusplus \
    542          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    543 
    544 /* A type that is properly aligned for any stack member.  */
    545 union yyalloc
    546 {
    547   yytype_int16 yyss_alloc;
    548   YYSTYPE yyvs_alloc;
    549 };
    550 
    551 /* The size of the maximum gap between one aligned stack and the next.  */
    552 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
    553 
    554 /* The size of an array large to enough to hold all stacks, each with
    555    N elements.  */
    556 # define YYSTACK_BYTES(N) \
    557      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
    558       + YYSTACK_GAP_MAXIMUM)
    559 
    560 # define YYCOPY_NEEDED 1
    561 
    562 /* Relocate STACK from its old location to the new one.  The
    563    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    564    elements in the stack, and YYPTR gives the new location of the
    565    stack.  Advance YYPTR to a properly aligned location for the next
    566    stack.  */
    567 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    568     do                                                                  \
    569       {                                                                 \
    570         YYSIZE_T yynewbytes;                                            \
    571         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    572         Stack = &yyptr->Stack_alloc;                                    \
    573         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    574         yyptr += yynewbytes / sizeof (*yyptr);                          \
    575       }                                                                 \
    576     while (0)
    577 
    578 #endif
    579 
    580 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    581 /* Copy COUNT objects from SRC to DST.  The source and destination do
    582    not overlap.  */
    583 # ifndef YYCOPY
    584 #  if defined __GNUC__ && 1 < __GNUC__
    585 #   define YYCOPY(Dst, Src, Count) \
    586       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
    587 #  else
    588 #   define YYCOPY(Dst, Src, Count)              \
    589       do                                        \
    590         {                                       \
    591           YYSIZE_T yyi;                         \
    592           for (yyi = 0; yyi < (Count); yyi++)   \
    593             (Dst)[yyi] = (Src)[yyi];            \
    594         }                                       \
    595       while (0)
    596 #  endif
    597 # endif
    598 #endif /* !YYCOPY_NEEDED */
    599 
    600 /* YYFINAL -- State number of the termination state.  */
    601 #define YYFINAL  2
    602 /* YYLAST -- Last index in YYTABLE.  */
    603 #define YYLAST   208
    604 
    605 /* YYNTOKENS -- Number of terminals.  */
    606 #define YYNTOKENS  102
    607 /* YYNNTS -- Number of nonterminals.  */
    608 #define YYNNTS  108
    609 /* YYNRULES -- Number of rules.  */
    610 #define YYNRULES  202
    611 /* YYNSTATES -- Number of states.  */
    612 #define YYNSTATES  299
    613 
    614 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    615    by yylex, with out-of-bounds checking.  */
    616 #define YYUNDEFTOK  2
    617 #define YYMAXUTOK   356
    618 
    619 #define YYTRANSLATE(YYX)                                                \
    620   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    621 
    622 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    623    as returned by yylex, without out-of-bounds checking.  */
    624 static const yytype_uint8 yytranslate[] =
    625 {
    626        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    627        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    628        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    629        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    630        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    631        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    632        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    633        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    634        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    635        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    636        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    637        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    638        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    639        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    640        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    641        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    642        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    643        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    644        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    646        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    647        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    648        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    649        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    650        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    651        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
    652        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    653       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    654       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    655       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
    656       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    657       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
    658       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
    659       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
    660       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    661       95,    96,    97,    98,    99,   100,   101
    662 };
    663 
    664 #if YYDEBUG
    665   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    666 static const yytype_uint16 yyrline[] =
    667 {
    668        0,    81,    81,    81,    82,    82,    83,    83,    84,    84,
    669       87,    95,    95,    96,    96,    96,    96,    97,    97,    97,
    670       97,    97,    98,    98,    98,    98,    99,    99,    99,    99,
    671      100,   100,   100,   101,   101,   101,   102,   102,   102,   103,
    672      103,   104,   104,   105,   105,   105,   106,   106,   106,   107,
    673      107,   107,   108,   108,   108,   109,   109,   109,   110,   110,
    674      110,   111,   133,   141,   149,   157,   162,   170,   178,   190,
    675      202,   210,   218,   226,   235,   241,   247,   277,   283,   294,
    676      305,   316,   326,   334,   342,   348,   354,   362,   368,   374,
    677      380,   386,   392,   398,   404,   412,   420,   428,   436,   444,
    678      452,   460,   470,   478,   488,   498,   508,   516,   524,   533,
    679      538,   539,   540,   540,   540,   541,   541,   541,   542,   544,
    680      552,   560,   577,   583,   589,   595,   603,   608,   609,   610,
    681      610,   611,   611,   612,   612,   613,   614,   616,   624,   630,
    682      638,   646,   652,   658,   666,   676,   710,   710,   711,   711,
    683      712,   712,   712,   713,   713,   713,   714,   714,   714,   715,
    684      715,   715,   716,   716,   716,   717,   717,   718,   730,   741,
    685      778,   778,   779,   779,   780,   800,   809,   818,   829,   833,
    686      841,   853,   866,   880,   893,   904,   915,   927,   938,   946,
    687      956,   966,   976,   986,   995,  1008,  1008,  1009,  1009,  1009,
    688     1010,  1024,  1037
    689 };
    690 #endif
    691 
    692 #if YYDEBUG || YYERROR_VERBOSE || 0
    693 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    694    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
    695 static const char *const yytname[] =
    696 {
    697   "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
    698   "COLON", "ANY", "ZONESTR", "STRING", "VAR_SERVER", "VAR_NAME",
    699   "VAR_IP_ADDRESS", "VAR_IP_TRANSPARENT", "VAR_DEBUG_MODE", "VAR_IP4_ONLY",
    700   "VAR_IP6_ONLY", "VAR_DATABASE", "VAR_IDENTITY", "VAR_NSID",
    701   "VAR_LOGFILE", "VAR_SERVER_COUNT", "VAR_TCP_COUNT", "VAR_PIDFILE",
    702   "VAR_PORT", "VAR_STATISTICS", "VAR_CHROOT", "VAR_USERNAME",
    703   "VAR_ZONESDIR", "VAR_XFRDFILE", "VAR_DIFFFILE",
    704   "VAR_XFRD_RELOAD_TIMEOUT", "VAR_TCP_QUERY_COUNT", "VAR_TCP_TIMEOUT",
    705   "VAR_IPV4_EDNS_SIZE", "VAR_IPV6_EDNS_SIZE", "VAR_DO_IP4", "VAR_DO_IP6",
    706   "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_IP_FREEBIND", "VAR_ZONEFILE",
    707   "VAR_ZONE", "VAR_ALLOW_NOTIFY", "VAR_REQUEST_XFR", "VAR_NOTIFY",
    708   "VAR_PROVIDE_XFR", "VAR_SIZE_LIMIT_XFR", "VAR_NOTIFY_RETRY",
    709   "VAR_OUTGOING_INTERFACE", "VAR_ALLOW_AXFR_FALLBACK", "VAR_KEY",
    710   "VAR_ALGORITHM", "VAR_SECRET", "VAR_AXFR", "VAR_UDP", "VAR_VERBOSITY",
    711   "VAR_HIDE_VERSION", "VAR_PATTERN", "VAR_INCLUDEPATTERN",
    712   "VAR_ZONELISTFILE", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
    713   "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
    714   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
    715   "VAR_XFRDIR", "VAR_RRL_SIZE", "VAR_RRL_RATELIMIT", "VAR_RRL_SLIP",
    716   "VAR_RRL_IPV4_PREFIX_LENGTH", "VAR_RRL_IPV6_PREFIX_LENGTH",
    717   "VAR_RRL_WHITELIST_RATELIMIT", "VAR_RRL_WHITELIST",
    718   "VAR_ZONEFILES_CHECK", "VAR_ZONEFILES_WRITE", "VAR_LOG_TIME_ASCII",
    719   "VAR_ROUND_ROBIN", "VAR_ZONESTATS", "VAR_REUSEPORT", "VAR_VERSION",
    720   "VAR_MAX_REFRESH_TIME", "VAR_MIN_REFRESH_TIME", "VAR_MAX_RETRY_TIME",
    721   "VAR_MIN_RETRY_TIME", "VAR_MULTI_MASTER_CHECK", "VAR_MINIMAL_RESPONSES",
    722   "VAR_REFUSE_ANY", "VAR_USE_SYSTEMD", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE",
    723   "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_SEND_IDENTITY",
    724   "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
    725   "VAR_DNSTAP_LOG_AUTH_QUERY_MESSAGES",
    726   "VAR_DNSTAP_LOG_AUTH_RESPONSE_MESSAGES", "$accept", "toplevelvars",
    727   "toplevelvar", "serverstart", "contents_server", "content_server",
    728   "server_ip_address", "server_ip_transparent", "server_ip_freebind",
    729   "server_debug_mode", "server_use_systemd", "server_verbosity",
    730   "server_hide_version", "server_ip4_only", "server_ip6_only",
    731   "server_do_ip4", "server_do_ip6", "server_reuseport", "server_database",
    732   "server_identity", "server_version", "server_nsid", "server_logfile",
    733   "server_log_time_ascii", "server_round_robin",
    734   "server_minimal_responses", "server_refuse_any", "server_server_count",
    735   "server_tcp_count", "server_pidfile", "server_port", "server_statistics",
    736   "server_chroot", "server_username", "server_zonesdir",
    737   "server_zonelistfile", "server_xfrdir", "server_difffile",
    738   "server_xfrdfile", "server_xfrd_reload_timeout",
    739   "server_tcp_query_count", "server_tcp_timeout", "server_tcp_mss",
    740   "server_outgoing_tcp_mss", "server_ipv4_edns_size",
    741   "server_ipv6_edns_size", "server_rrl_size", "server_rrl_ratelimit",
    742   "server_rrl_slip", "server_rrl_ipv4_prefix_length",
    743   "server_rrl_ipv6_prefix_length", "server_rrl_whitelist_ratelimit",
    744   "server_zonefiles_check", "server_zonefiles_write", "rcstart",
    745   "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
    746   "rc_control_interface", "rc_server_key_file", "rc_server_cert_file",
    747   "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
    748   "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path",
    749   "dt_dnstap_send_identity", "dt_dnstap_send_version",
    750   "dt_dnstap_identity", "dt_dnstap_version",
    751   "dt_dnstap_log_auth_query_messages",
    752   "dt_dnstap_log_auth_response_messages", "patternstart",
    753   "contents_pattern", "content_pattern", "zone_config_item",
    754   "pattern_name", "include_pattern", "zonestart", "contents_zone",
    755   "content_zone", "zone_name", "zone_zonefile", "zone_zonestats",
    756   "zone_allow_notify", "zone_request_xfr", "zone_size_limit_xfr",
    757   "zone_request_xfr_data", "zone_notify", "zone_notify_retry",
    758   "zone_provide_xfr", "zone_outgoing_interface",
    759   "zone_allow_axfr_fallback", "zone_rrl_whitelist",
    760   "zone_max_refresh_time", "zone_min_refresh_time", "zone_max_retry_time",
    761   "zone_min_retry_time", "zone_multi_master_check", "keystart",
    762   "contents_key", "content_key", "key_name", "key_algorithm", "key_secret", YY_NULLPTR
    763 };
    764 #endif
    765 
    766 # ifdef YYPRINT
    767 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    768    (internal) symbol number NUM (which must be that of a token).  */
    769 static const yytype_uint16 yytoknum[] =
    770 {
    771        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
    772      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
    773      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
    774      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
    775      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
    776      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
    777      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
    778      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
    779      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    780      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    781      355,   356
    782 };
    783 # endif
    784 
    785 #define YYPACT_NINF -57
    786 
    787 #define yypact_value_is_default(Yystate) \
    788   (!!((Yystate) == (-57)))
    789 
    790 #define YYTABLE_NINF -1
    791 
    792 #define yytable_value_is_error(Yytable_value) \
    793   0
    794 
    795   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    796      STATE-NUM.  */
    797 static const yytype_int16 yypact[] =
    798 {
    799      -57,     0,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    800      -57,   -57,   -57,    52,    72,    -4,    -1,    79,    10,    -7,
    801       -6,    -5,    -9,    -3,    31,    32,    34,    35,    41,    43,
    802       44,    45,    48,    51,    53,    55,    56,    52,   -57,   -57,
    803      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    804      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,    57,   -57,
    805       72,   -57,   -57,    58,    66,    71,    -4,   -57,   -57,   -57,
    806      -57,    75,    76,    77,    78,    82,    85,   103,   105,   114,
    807      115,   116,   117,   118,   120,   121,   123,   125,   126,   140,
    808      141,   142,   143,   145,   146,   152,   153,   154,   155,   156,
    809      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    810      167,   168,   169,   170,   171,   172,   173,   174,   175,   -57,
    811      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    812      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    813      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    814      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    815      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   176,   177,
    816      178,   179,   180,   181,   182,   -57,   -57,   -57,   -57,   -57,
    817      -57,   -57,   -57,   183,   184,   185,   186,   187,   188,   189,
    818      190,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    819      -57,   -57,   191,   192,   193,   194,   -57,   195,   196,   -57,
    820      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    821      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    822      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    823      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    824      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    825      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    826      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    827      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    828      -57,   -57,   -57,   197,   198,   -57,   -57,   -57,   -57
    829 };
    830 
    831   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
    832      Performed when YYTABLE does not specify something else to do.  Zero
    833      means the default is an error.  */
    834 static const yytype_uint8 yydefact[] =
    835 {
    836        2,     0,     1,    10,   169,   194,   145,   109,   126,     3,
    837       12,   111,   128,     0,     0,     0,     4,     8,     9,     0,
    838        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    839        0,     0,     0,     0,     0,     0,     0,     7,   147,   149,
    840      148,   158,   150,   160,   151,   152,   165,   153,   154,   155,
    841      156,   157,   159,   161,   162,   163,   164,   166,     0,   173,
    842        5,   171,   172,     0,     0,     0,     6,   196,   197,   198,
    843      199,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    844        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    845        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    846        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    847        0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
    848       13,    14,    57,    15,    60,    37,    38,    16,    17,    50,
    849       51,    55,    18,    19,    56,    20,    21,    53,    54,    58,
    850       59,    22,    23,    24,    25,    26,    27,    28,    29,    39,
    851       40,    30,    31,    32,    33,    34,    41,    42,    35,    36,
    852       43,    44,    45,    46,    47,    48,    49,    52,     0,     0,
    853        0,     0,     0,     0,     0,   110,   112,   114,   113,   115,
    854      116,   117,   118,     0,     0,     0,     0,     0,     0,     0,
    855        0,   127,   129,   130,   131,   132,   133,   134,   135,   136,
    856      167,   175,     0,     0,     0,     0,   178,     0,     0,   179,
    857      184,   186,   187,   168,   188,   176,   189,   190,   191,   192,
    858      193,   146,   174,   170,   200,   201,   202,   195,    61,    62,
    859       64,    68,    69,    73,    74,    76,    77,    82,    83,    84,
    860       85,    86,    87,    88,    89,    93,    92,    94,    95,    96,
    861       99,   100,    70,    71,    97,    98,    63,    66,    67,    90,
    862       91,   101,   102,   103,   104,   105,   106,   107,   108,    78,
    863       79,    72,    75,    80,    81,    65,   119,   121,   120,   122,
    864      123,   124,   125,   137,   138,   139,   140,   141,   142,   143,
    865      144,   177,   180,     0,     0,   183,   185,   181,   182
    866 };
    867 
    868   /* YYPGOTO[NTERM-NUM].  */
    869 static const yytype_int8 yypgoto[] =
    870 {
    871      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    872      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    873      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    874      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    875      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    876      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    877      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    878      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -31,   -12,   -57,
    879      -57,   -57,   -57,   -51,   -57,   -57,   -57,   -57,   -57,   -57,
    880      -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,   -57,
    881      -57,   -57,   -57,   -57,   -56,   -57,   -57,   -57
    882 };
    883 
    884   /* YYDEFGOTO[NTERM-NUM].  */
    885 static const yytype_int16 yydefgoto[] =
    886 {
    887       -1,     1,     9,    10,    16,   119,   120,   121,   122,   123,
    888      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
    889      134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
    890      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
    891      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
    892      164,   165,   166,   167,    11,    17,   175,   176,   177,   178,
    893      179,   180,   181,   182,    12,    18,   191,   192,   193,   194,
    894      195,   196,   197,   198,   199,    13,    37,    38,    39,    40,
    895       41,    14,    60,    61,    62,    42,    43,    44,    45,    46,
    896      206,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    897       56,    57,    15,    66,    67,    68,    69,    70
    898 };
    899 
    900   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
    901      positive, shift that token.  If negative, reduce the rule whose
    902      number is the opposite.  If YYTABLE_NINF, syntax error.  */
    903 static const yytype_uint16 yytable[] =
    904 {
    905        2,   203,    59,   200,   201,   202,   221,   207,    63,   223,
    906      227,     3,    71,    72,    73,    74,    75,    76,    77,    78,
    907       79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
    908       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
    909       99,   208,   209,     4,   210,   211,   204,   205,    59,    64,
    910       65,   212,     5,   213,   214,   215,   100,   101,   216,     6,
    911      102,   217,     7,   218,    19,   219,   220,   222,   224,   103,
    912      104,   105,   106,   107,   108,   109,   225,   110,   111,   112,
    913      113,   226,   114,   115,    58,   228,   229,   230,   231,   116,
    914      117,   118,   232,     8,    20,   233,    21,    22,    23,    24,
    915       25,    26,    27,    28,   183,   184,   185,   186,   187,   188,
    916      189,   190,    29,   234,    20,   235,    21,    22,    23,    24,
    917       25,    26,    27,    28,   236,   237,   238,   239,   240,    30,
    918      241,   242,    29,   243,    31,   244,   245,    32,    33,    34,
    919       35,    36,   168,   169,   170,   171,   172,   173,   174,    30,
    920      246,   247,   248,   249,    31,   250,   251,    32,    33,    34,
    921       35,    36,   252,   253,   254,   255,   256,   257,   258,   259,
    922      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
    923      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
    924      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
    925      290,   291,   292,   293,   294,   295,   296,   297,   298
    926 };
    927 
    928 static const yytype_uint8 yycheck[] =
    929 {
    930        0,    10,    14,    10,    10,    10,    37,    10,    12,    60,
    931       66,    11,    13,    14,    15,    16,    17,    18,    19,    20,
    932       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    933       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
    934       41,    10,    10,    43,    10,    10,    55,    56,    60,    53,
    935       54,    10,    52,    10,    10,    10,    57,    58,    10,    59,
    936       61,    10,    62,    10,    12,    10,    10,    10,    10,    70,
    937       71,    72,    73,    74,    75,    76,    10,    78,    79,    80,
    938       81,    10,    83,    84,    12,    10,    10,    10,    10,    90,
    939       91,    92,    10,    93,    42,    10,    44,    45,    46,    47,
    940       48,    49,    50,    51,    94,    95,    96,    97,    98,    99,
    941      100,   101,    60,    10,    42,    10,    44,    45,    46,    47,
    942       48,    49,    50,    51,    10,    10,    10,    10,    10,    77,
    943       10,    10,    60,    10,    82,    10,    10,    85,    86,    87,
    944       88,    89,    63,    64,    65,    66,    67,    68,    69,    77,
    945       10,    10,    10,    10,    82,    10,    10,    85,    86,    87,
    946       88,    89,    10,    10,    10,    10,    10,    10,    10,    10,
    947       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    948       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    949       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    950       10,    10,    10,    10,    10,    10,    10,    10,    10
    951 };
    952 
    953   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    954      symbol of state STATE-NUM.  */
    955 static const yytype_uint8 yystos[] =
    956 {
    957        0,   103,     0,    11,    43,    52,    59,    62,    93,   104,
    958      105,   156,   166,   177,   183,   204,   106,   157,   167,    12,
    959       42,    44,    45,    46,    47,    48,    49,    50,    51,    60,
    960       77,    82,    85,    86,    87,    88,    89,   178,   179,   180,
    961      181,   182,   187,   188,   189,   190,   191,   193,   194,   195,
    962      196,   197,   198,   199,   200,   201,   202,   203,    12,   180,
    963      184,   185,   186,    12,    53,    54,   205,   206,   207,   208,
    964      209,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    965       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    966       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
    967       57,    58,    61,    70,    71,    72,    73,    74,    75,    76,
    968       78,    79,    80,    81,    83,    84,    90,    91,    92,   107,
    969      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
    970      118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
    971      128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
    972      138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
    973      148,   149,   150,   151,   152,   153,   154,   155,    63,    64,
    974       65,    66,    67,    68,    69,   158,   159,   160,   161,   162,
    975      163,   164,   165,    94,    95,    96,    97,    98,    99,   100,
    976      101,   168,   169,   170,   171,   172,   173,   174,   175,   176,
    977       10,    10,    10,    10,    55,    56,   192,    10,    10,    10,
    978       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    979       10,   179,    10,   185,    10,    10,    10,   206,    10,    10,
    980       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    981       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    982       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    983       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    984       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    985       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
    986       10,    10,    10,    10,    10,    10,    10,    10,    10
    987 };
    988 
    989   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    990 static const yytype_uint8 yyr1[] =
    991 {
    992        0,   102,   103,   103,   104,   104,   104,   104,   104,   104,
    993      105,   106,   106,   107,   107,   107,   107,   107,   107,   107,
    994      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
    995      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
    996      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
    997      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
    998      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
    999      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
   1000      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
   1001      137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
   1002      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
   1003      157,   157,   158,   158,   158,   158,   158,   158,   158,   159,
   1004      160,   161,   162,   163,   164,   165,   166,   167,   167,   168,
   1005      168,   168,   168,   168,   168,   168,   168,   169,   170,   171,
   1006      172,   173,   174,   175,   176,   177,   178,   178,   179,   179,
   1007      180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
   1008      180,   180,   180,   180,   180,   180,   180,   181,   182,   183,
   1009      184,   184,   185,   185,   186,   187,   188,   189,   190,   191,
   1010      192,   192,   192,   193,   194,   195,   196,   197,   198,   199,
   1011      200,   201,   202,   203,   204,   205,   205,   206,   206,   206,
   1012      207,   208,   209
   1013 };
   1014 
   1015   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
   1016 static const yytype_uint8 yyr2[] =
   1017 {
   1018        0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
   1019        1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
   1020        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
   1021        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
   1022        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
   1023        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
   1024        1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   1025        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   1026        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   1027        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   1028        2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
   1029        2,     0,     1,     1,     1,     1,     1,     1,     1,     2,
   1030        2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
   1031        1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
   1032        2,     2,     2,     2,     2,     1,     2,     1,     1,     1,
   1033        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
   1034        1,     1,     1,     1,     1,     1,     1,     2,     2,     1,
   1035        2,     1,     1,     1,     2,     2,     2,     3,     2,     2,
   1036        2,     3,     3,     3,     2,     3,     2,     2,     2,     2,
   1037        2,     2,     2,     2,     1,     2,     1,     1,     1,     1,
   1038        2,     2,     2
   1039 };
   1040 
   1041 
   1042 #define yyerrok         (yyerrstatus = 0)
   1043 #define yyclearin       (yychar = YYEMPTY)
   1044 #define YYEMPTY         (-2)
   1045 #define YYEOF           0
   1046 
   1047 #define YYACCEPT        goto yyacceptlab
   1048 #define YYABORT         goto yyabortlab
   1049 #define YYERROR         goto yyerrorlab
   1050 
   1051 
   1052 #define YYRECOVERING()  (!!yyerrstatus)
   1053 
   1054 #define YYBACKUP(Token, Value)                                  \
   1055 do                                                              \
   1056   if (yychar == YYEMPTY)                                        \
   1057     {                                                           \
   1058       yychar = (Token);                                         \
   1059       yylval = (Value);                                         \
   1060       YYPOPSTACK (yylen);                                       \
   1061       yystate = *yyssp;                                         \
   1062       goto yybackup;                                            \
   1063     }                                                           \
   1064   else                                                          \
   1065     {                                                           \
   1066       yyerror (YY_("syntax error: cannot back up")); \
   1067       YYERROR;                                                  \
   1068     }                                                           \
   1069 while (0)
   1070 
   1071 /* Error token number */
   1072 #define YYTERROR        1
   1073 #define YYERRCODE       256
   1074 
   1075 
   1076 
   1077 /* Enable debugging if requested.  */
   1078 #if YYDEBUG
   1079 
   1080 # ifndef YYFPRINTF
   1081 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
   1082 #  define YYFPRINTF fprintf
   1083 # endif
   1084 
   1085 # define YYDPRINTF(Args)                        \
   1086 do {                                            \
   1087   if (yydebug)                                  \
   1088     YYFPRINTF Args;                             \
   1089 } while (0)
   1090 
   1091 /* This macro is provided for backward compatibility. */
   1092 #ifndef YY_LOCATION_PRINT
   1093 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
   1094 #endif
   1095 
   1096 
   1097 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
   1098 do {                                                                      \
   1099   if (yydebug)                                                            \
   1100     {                                                                     \
   1101       YYFPRINTF (stderr, "%s ", Title);                                   \
   1102       yy_symbol_print (stderr,                                            \
   1103                   Type, Value); \
   1104       YYFPRINTF (stderr, "\n");                                           \
   1105     }                                                                     \
   1106 } while (0)
   1107 
   1108 
   1109 /*----------------------------------------.
   1110 | Print this symbol's value on YYOUTPUT.  |
   1111 `----------------------------------------*/
   1112 
   1113 static void
   1114 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
   1115 {
   1116   FILE *yyo = yyoutput;
   1117   YYUSE (yyo);
   1118   if (!yyvaluep)
   1119     return;
   1120 # ifdef YYPRINT
   1121   if (yytype < YYNTOKENS)
   1122     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
   1123 # endif
   1124   YYUSE (yytype);
   1125 }
   1126 
   1127 
   1128 /*--------------------------------.
   1129 | Print this symbol on YYOUTPUT.  |
   1130 `--------------------------------*/
   1131 
   1132 static void
   1133 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
   1134 {
   1135   YYFPRINTF (yyoutput, "%s %s (",
   1136              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
   1137 
   1138   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
   1139   YYFPRINTF (yyoutput, ")");
   1140 }
   1141 
   1142 /*------------------------------------------------------------------.
   1143 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
   1144 | TOP (included).                                                   |
   1145 `------------------------------------------------------------------*/
   1146 
   1147 static void
   1148 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
   1149 {
   1150   YYFPRINTF (stderr, "Stack now");
   1151   for (; yybottom <= yytop; yybottom++)
   1152     {
   1153       int yybot = *yybottom;
   1154       YYFPRINTF (stderr, " %d", yybot);
   1155     }
   1156   YYFPRINTF (stderr, "\n");
   1157 }
   1158 
   1159 # define YY_STACK_PRINT(Bottom, Top)                            \
   1160 do {                                                            \
   1161   if (yydebug)                                                  \
   1162     yy_stack_print ((Bottom), (Top));                           \
   1163 } while (0)
   1164 
   1165 
   1166 /*------------------------------------------------.
   1167 | Report that the YYRULE is going to be reduced.  |
   1168 `------------------------------------------------*/
   1169 
   1170 static void
   1171 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
   1172 {
   1173   unsigned long int yylno = yyrline[yyrule];
   1174   int yynrhs = yyr2[yyrule];
   1175   int yyi;
   1176   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
   1177              yyrule - 1, yylno);
   1178   /* The symbols being reduced.  */
   1179   for (yyi = 0; yyi < yynrhs; yyi++)
   1180     {
   1181       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
   1182       yy_symbol_print (stderr,
   1183                        yystos[yyssp[yyi + 1 - yynrhs]],
   1184                        &(yyvsp[(yyi + 1) - (yynrhs)])
   1185                                               );
   1186       YYFPRINTF (stderr, "\n");
   1187     }
   1188 }
   1189 
   1190 # define YY_REDUCE_PRINT(Rule)          \
   1191 do {                                    \
   1192   if (yydebug)                          \
   1193     yy_reduce_print (yyssp, yyvsp, Rule); \
   1194 } while (0)
   1195 
   1196 /* Nonzero means print parse trace.  It is left uninitialized so that
   1197    multiple parsers can coexist.  */
   1198 int yydebug;
   1199 #else /* !YYDEBUG */
   1200 # define YYDPRINTF(Args)
   1201 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
   1202 # define YY_STACK_PRINT(Bottom, Top)
   1203 # define YY_REDUCE_PRINT(Rule)
   1204 #endif /* !YYDEBUG */
   1205 
   1206 
   1207 /* YYINITDEPTH -- initial size of the parser's stacks.  */
   1208 #ifndef YYINITDEPTH
   1209 # define YYINITDEPTH 200
   1210 #endif
   1211 
   1212 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   1213    if the built-in stack extension method is used).
   1214 
   1215    Do not make this value too large; the results are undefined if
   1216    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   1217    evaluated with infinite-precision integer arithmetic.  */
   1218 
   1219 #ifndef YYMAXDEPTH
   1220 # define YYMAXDEPTH 10000
   1221 #endif
   1222 
   1223 
   1224 #if YYERROR_VERBOSE
   1225 
   1226 # ifndef yystrlen
   1227 #  if defined __GLIBC__ && defined _STRING_H
   1228 #   define yystrlen strlen
   1229 #  else
   1230 /* Return the length of YYSTR.  */
   1231 static YYSIZE_T
   1232 yystrlen (const char *yystr)
   1233 {
   1234   YYSIZE_T yylen;
   1235   for (yylen = 0; yystr[yylen]; yylen++)
   1236     continue;
   1237   return yylen;
   1238 }
   1239 #  endif
   1240 # endif
   1241 
   1242 # ifndef yystpcpy
   1243 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
   1244 #   define yystpcpy stpcpy
   1245 #  else
   1246 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   1247    YYDEST.  */
   1248 static char *
   1249 yystpcpy (char *yydest, const char *yysrc)
   1250 {
   1251   char *yyd = yydest;
   1252   const char *yys = yysrc;
   1253 
   1254   while ((*yyd++ = *yys++) != '\0')
   1255     continue;
   1256 
   1257   return yyd - 1;
   1258 }
   1259 #  endif
   1260 # endif
   1261 
   1262 # ifndef yytnamerr
   1263 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   1264    quotes and backslashes, so that it's suitable for yyerror.  The
   1265    heuristic is that double-quoting is unnecessary unless the string
   1266    contains an apostrophe, a comma, or backslash (other than
   1267    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   1268    null, do not copy; instead, return the length of what the result
   1269    would have been.  */
   1270 static YYSIZE_T
   1271 yytnamerr (char *yyres, const char *yystr)
   1272 {
   1273   if (*yystr == '"')
   1274     {
   1275       YYSIZE_T yyn = 0;
   1276       char const *yyp = yystr;
   1277 
   1278       for (;;)
   1279         switch (*++yyp)
   1280           {
   1281           case '\'':
   1282           case ',':
   1283             goto do_not_strip_quotes;
   1284 
   1285           case '\\':
   1286             if (*++yyp != '\\')
   1287               goto do_not_strip_quotes;
   1288             /* Fall through.  */
   1289           default:
   1290             if (yyres)
   1291               yyres[yyn] = *yyp;
   1292             yyn++;
   1293             break;
   1294 
   1295           case '"':
   1296             if (yyres)
   1297               yyres[yyn] = '\0';
   1298             return yyn;
   1299           }
   1300     do_not_strip_quotes: ;
   1301     }
   1302 
   1303   if (! yyres)
   1304     return yystrlen (yystr);
   1305 
   1306   return yystpcpy (yyres, yystr) - yyres;
   1307 }
   1308 # endif
   1309 
   1310 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
   1311    about the unexpected token YYTOKEN for the state stack whose top is
   1312    YYSSP.
   1313 
   1314    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
   1315    not large enough to hold the message.  In that case, also set
   1316    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
   1317    required number of bytes is too large to store.  */
   1318 static int
   1319 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
   1320                 yytype_int16 *yyssp, int yytoken)
   1321 {
   1322   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
   1323   YYSIZE_T yysize = yysize0;
   1324   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   1325   /* Internationalized format string. */
   1326   const char *yyformat = YY_NULLPTR;
   1327   /* Arguments of yyformat. */
   1328   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   1329   /* Number of reported tokens (one for the "unexpected", one per
   1330      "expected"). */
   1331   int yycount = 0;
   1332 
   1333   /* There are many possibilities here to consider:
   1334      - If this state is a consistent state with a default action, then
   1335        the only way this function was invoked is if the default action
   1336        is an error action.  In that case, don't check for expected
   1337        tokens because there are none.
   1338      - The only way there can be no lookahead present (in yychar) is if
   1339        this state is a consistent state with a default action.  Thus,
   1340        detecting the absence of a lookahead is sufficient to determine
   1341        that there is no unexpected or expected token to report.  In that
   1342        case, just report a simple "syntax error".
   1343      - Don't assume there isn't a lookahead just because this state is a
   1344        consistent state with a default action.  There might have been a
   1345        previous inconsistent state, consistent state with a non-default
   1346        action, or user semantic action that manipulated yychar.
   1347      - Of course, the expected token list depends on states to have
   1348        correct lookahead information, and it depends on the parser not
   1349        to perform extra reductions after fetching a lookahead from the
   1350        scanner and before detecting a syntax error.  Thus, state merging
   1351        (from LALR or IELR) and default reductions corrupt the expected
   1352        token list.  However, the list is correct for canonical LR with
   1353        one exception: it will still contain any token that will not be
   1354        accepted due to an error action in a later state.
   1355   */
   1356   if (yytoken != YYEMPTY)
   1357     {
   1358       int yyn = yypact[*yyssp];
   1359       yyarg[yycount++] = yytname[yytoken];
   1360       if (!yypact_value_is_default (yyn))
   1361         {
   1362           /* Start YYX at -YYN if negative to avoid negative indexes in
   1363              YYCHECK.  In other words, skip the first -YYN actions for
   1364              this state because they are default actions.  */
   1365           int yyxbegin = yyn < 0 ? -yyn : 0;
   1366           /* Stay within bounds of both yycheck and yytname.  */
   1367           int yychecklim = YYLAST - yyn + 1;
   1368           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
   1369           int yyx;
   1370 
   1371           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
   1372             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
   1373                 && !yytable_value_is_error (yytable[yyx + yyn]))
   1374               {
   1375                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
   1376                   {
   1377                     yycount = 1;
   1378                     yysize = yysize0;
   1379                     break;
   1380                   }
   1381                 yyarg[yycount++] = yytname[yyx];
   1382                 {
   1383                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
   1384                   if (! (yysize <= yysize1
   1385                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
   1386                     return 2;
   1387                   yysize = yysize1;
   1388                 }
   1389               }
   1390         }
   1391     }
   1392 
   1393   switch (yycount)
   1394     {
   1395 # define YYCASE_(N, S)                      \
   1396       case N:                               \
   1397         yyformat = S;                       \
   1398       break
   1399       YYCASE_(0, YY_("syntax error"));
   1400       YYCASE_(1, YY_("syntax error, unexpected %s"));
   1401       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
   1402       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
   1403       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
   1404       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
   1405 # undef YYCASE_
   1406     }
   1407 
   1408   {
   1409     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
   1410     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
   1411       return 2;
   1412     yysize = yysize1;
   1413   }
   1414 
   1415   if (*yymsg_alloc < yysize)
   1416     {
   1417       *yymsg_alloc = 2 * yysize;
   1418       if (! (yysize <= *yymsg_alloc
   1419              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
   1420         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
   1421       return 1;
   1422     }
   1423 
   1424   /* Avoid sprintf, as that infringes on the user's name space.
   1425      Don't have undefined behavior even if the translation
   1426      produced a string with the wrong number of "%s"s.  */
   1427   {
   1428     char *yyp = *yymsg;
   1429     int yyi = 0;
   1430     while ((*yyp = *yyformat) != '\0')
   1431       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
   1432         {
   1433           yyp += yytnamerr (yyp, yyarg[yyi++]);
   1434           yyformat += 2;
   1435         }
   1436       else
   1437         {
   1438           yyp++;
   1439           yyformat++;
   1440         }
   1441   }
   1442   return 0;
   1443 }
   1444 #endif /* YYERROR_VERBOSE */
   1445 
   1446 /*-----------------------------------------------.
   1447 | Release the memory associated to this symbol.  |
   1448 `-----------------------------------------------*/
   1449 
   1450 static void
   1451 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
   1452 {
   1453   YYUSE (yyvaluep);
   1454   if (!yymsg)
   1455     yymsg = "Deleting";
   1456   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
   1457 
   1458   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1459   YYUSE (yytype);
   1460   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1461 }
   1462 
   1463 
   1464 
   1465 
   1466 /* The lookahead symbol.  */
   1467 int yychar;
   1468 
   1469 /* The semantic value of the lookahead symbol.  */
   1470 YYSTYPE yylval;
   1471 /* Number of syntax errors so far.  */
   1472 int yynerrs;
   1473 
   1474 
   1475 /*----------.
   1476 | yyparse.  |
   1477 `----------*/
   1478 
   1479 int
   1480 yyparse (void)
   1481 {
   1482     int yystate;
   1483     /* Number of tokens to shift before error messages enabled.  */
   1484     int yyerrstatus;
   1485 
   1486     /* The stacks and their tools:
   1487        'yyss': related to states.
   1488        'yyvs': related to semantic values.
   1489 
   1490        Refer to the stacks through separate pointers, to allow yyoverflow
   1491        to reallocate them elsewhere.  */
   1492 
   1493     /* The state stack.  */
   1494     yytype_int16 yyssa[YYINITDEPTH];
   1495     yytype_int16 *yyss;
   1496     yytype_int16 *yyssp;
   1497 
   1498     /* The semantic value stack.  */
   1499     YYSTYPE yyvsa[YYINITDEPTH];
   1500     YYSTYPE *yyvs;
   1501     YYSTYPE *yyvsp;
   1502 
   1503     YYSIZE_T yystacksize;
   1504 
   1505   int yyn;
   1506   int yyresult;
   1507   /* Lookahead token as an internal (translated) token number.  */
   1508   int yytoken = 0;
   1509   /* The variables used to return semantic value and location from the
   1510      action routines.  */
   1511   YYSTYPE yyval;
   1512 
   1513 #if YYERROR_VERBOSE
   1514   /* Buffer for error messages, and its allocated size.  */
   1515   char yymsgbuf[128];
   1516   char *yymsg = yymsgbuf;
   1517   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
   1518 #endif
   1519 
   1520 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
   1521 
   1522   /* The number of symbols on the RHS of the reduced rule.
   1523      Keep to zero when no symbol should be popped.  */
   1524   int yylen = 0;
   1525 
   1526   yyssp = yyss = yyssa;
   1527   yyvsp = yyvs = yyvsa;
   1528   yystacksize = YYINITDEPTH;
   1529 
   1530   YYDPRINTF ((stderr, "Starting parse\n"));
   1531 
   1532   yystate = 0;
   1533   yyerrstatus = 0;
   1534   yynerrs = 0;
   1535   yychar = YYEMPTY; /* Cause a token to be read.  */
   1536   goto yysetstate;
   1537 
   1538 /*------------------------------------------------------------.
   1539 | yynewstate -- Push a new state, which is found in yystate.  |
   1540 `------------------------------------------------------------*/
   1541  yynewstate:
   1542   /* In all cases, when you get here, the value and location stacks
   1543      have just been pushed.  So pushing a state here evens the stacks.  */
   1544   yyssp++;
   1545 
   1546  yysetstate:
   1547   *yyssp = yystate;
   1548 
   1549   if (yyss + yystacksize - 1 <= yyssp)
   1550     {
   1551       /* Get the current used size of the three stacks, in elements.  */
   1552       YYSIZE_T yysize = yyssp - yyss + 1;
   1553 
   1554 #ifdef yyoverflow
   1555       {
   1556         /* Give user a chance to reallocate the stack.  Use copies of
   1557            these so that the &'s don't force the real ones into
   1558            memory.  */
   1559         YYSTYPE *yyvs1 = yyvs;
   1560         yytype_int16 *yyss1 = yyss;
   1561 
   1562         /* Each stack pointer address is followed by the size of the
   1563            data in use in that stack, in bytes.  This used to be a
   1564            conditional around just the two extra args, but that might
   1565            be undefined if yyoverflow is a macro.  */
   1566         yyoverflow (YY_("memory exhausted"),
   1567                     &yyss1, yysize * sizeof (*yyssp),
   1568                     &yyvs1, yysize * sizeof (*yyvsp),
   1569                     &yystacksize);
   1570 
   1571         yyss = yyss1;
   1572         yyvs = yyvs1;
   1573       }
   1574 #else /* no yyoverflow */
   1575 # ifndef YYSTACK_RELOCATE
   1576       goto yyexhaustedlab;
   1577 # else
   1578       /* Extend the stack our own way.  */
   1579       if (YYMAXDEPTH <= yystacksize)
   1580         goto yyexhaustedlab;
   1581       yystacksize *= 2;
   1582       if (YYMAXDEPTH < yystacksize)
   1583         yystacksize = YYMAXDEPTH;
   1584 
   1585       {
   1586         yytype_int16 *yyss1 = yyss;
   1587         union yyalloc *yyptr =
   1588           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
   1589         if (! yyptr)
   1590           goto yyexhaustedlab;
   1591         YYSTACK_RELOCATE (yyss_alloc, yyss);
   1592         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
   1593 #  undef YYSTACK_RELOCATE
   1594         if (yyss1 != yyssa)
   1595           YYSTACK_FREE (yyss1);
   1596       }
   1597 # endif
   1598 #endif /* no yyoverflow */
   1599 
   1600       yyssp = yyss + yysize - 1;
   1601       yyvsp = yyvs + yysize - 1;
   1602 
   1603       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
   1604                   (unsigned long int) yystacksize));
   1605 
   1606       if (yyss + yystacksize - 1 <= yyssp)
   1607         YYABORT;
   1608     }
   1609 
   1610   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
   1611 
   1612   if (yystate == YYFINAL)
   1613     YYACCEPT;
   1614 
   1615   goto yybackup;
   1616 
   1617 /*-----------.
   1618 | yybackup.  |
   1619 `-----------*/
   1620 yybackup:
   1621 
   1622   /* Do appropriate processing given the current state.  Read a
   1623      lookahead token if we need one and don't already have one.  */
   1624 
   1625   /* First try to decide what to do without reference to lookahead token.  */
   1626   yyn = yypact[yystate];
   1627   if (yypact_value_is_default (yyn))
   1628     goto yydefault;
   1629 
   1630   /* Not known => get a lookahead token if don't already have one.  */
   1631 
   1632   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   1633   if (yychar == YYEMPTY)
   1634     {
   1635       YYDPRINTF ((stderr, "Reading a token: "));
   1636       yychar = yylex ();
   1637     }
   1638 
   1639   if (yychar <= YYEOF)
   1640     {
   1641       yychar = yytoken = YYEOF;
   1642       YYDPRINTF ((stderr, "Now at end of input.\n"));
   1643     }
   1644   else
   1645     {
   1646       yytoken = YYTRANSLATE (yychar);
   1647       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
   1648     }
   1649 
   1650   /* If the proper action on seeing token YYTOKEN is to reduce or to
   1651      detect an error, take that action.  */
   1652   yyn += yytoken;
   1653   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
   1654     goto yydefault;
   1655   yyn = yytable[yyn];
   1656   if (yyn <= 0)
   1657     {
   1658       if (yytable_value_is_error (yyn))
   1659         goto yyerrlab;
   1660       yyn = -yyn;
   1661       goto yyreduce;
   1662     }
   1663 
   1664   /* Count tokens shifted since error; after three, turn off error
   1665      status.  */
   1666   if (yyerrstatus)
   1667     yyerrstatus--;
   1668 
   1669   /* Shift the lookahead token.  */
   1670   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
   1671 
   1672   /* Discard the shifted token.  */
   1673   yychar = YYEMPTY;
   1674 
   1675   yystate = yyn;
   1676   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1677   *++yyvsp = yylval;
   1678   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1679 
   1680   goto yynewstate;
   1681 
   1682 
   1683 /*-----------------------------------------------------------.
   1684 | yydefault -- do the default action for the current state.  |
   1685 `-----------------------------------------------------------*/
   1686 yydefault:
   1687   yyn = yydefact[yystate];
   1688   if (yyn == 0)
   1689     goto yyerrlab;
   1690   goto yyreduce;
   1691 
   1692 
   1693 /*-----------------------------.
   1694 | yyreduce -- Do a reduction.  |
   1695 `-----------------------------*/
   1696 yyreduce:
   1697   /* yyn is the number of a rule to reduce with.  */
   1698   yylen = yyr2[yyn];
   1699 
   1700   /* If YYLEN is nonzero, implement the default value of the action:
   1701      '$$ = $1'.
   1702 
   1703      Otherwise, the following line sets YYVAL to garbage.
   1704      This behavior is undocumented and Bison
   1705      users should not rely upon it.  Assigning to YYVAL
   1706      unconditionally makes the parser a bit smaller, and it avoids a
   1707      GCC warning that YYVAL may be used uninitialized.  */
   1708   yyval = yyvsp[1-yylen];
   1709 
   1710 
   1711   YY_REDUCE_PRINT (yyn);
   1712   switch (yyn)
   1713     {
   1714         case 10:
   1715 #line 88 "configparser.y" /* yacc.c:1646  */
   1716     { OUTYY(("\nP(server:)\n"));
   1717 		if(cfg_parser->server_settings_seen) {
   1718 			yyerror("duplicate server: element.");
   1719 		}
   1720 		cfg_parser->server_settings_seen = 1;
   1721 	}
   1722 #line 1723 "configparser.c" /* yacc.c:1646  */
   1723     break;
   1724 
   1725   case 61:
   1726 #line 112 "configparser.y" /* yacc.c:1646  */
   1727     {
   1728 		OUTYY(("P(server_ip_address:%s)\n", (yyvsp[0].str)));
   1729 		if(cfg_parser->current_ip_address_option) {
   1730 			cfg_parser->current_ip_address_option->next =
   1731 				(ip_address_option_type*)region_alloc(
   1732 				cfg_parser->opt->region, sizeof(ip_address_option_type));
   1733 			cfg_parser->current_ip_address_option =
   1734 				cfg_parser->current_ip_address_option->next;
   1735 			cfg_parser->current_ip_address_option->next=0;
   1736 		} else {
   1737 			cfg_parser->current_ip_address_option =
   1738 				(ip_address_option_type*)region_alloc(
   1739 				cfg_parser->opt->region, sizeof(ip_address_option_type));
   1740 			cfg_parser->current_ip_address_option->next=0;
   1741 			cfg_parser->opt->ip_addresses = cfg_parser->current_ip_address_option;
   1742 		}
   1743 
   1744 		cfg_parser->current_ip_address_option->address =
   1745 			region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   1746 	}
   1747 #line 1748 "configparser.c" /* yacc.c:1646  */
   1748     break;
   1749 
   1750   case 62:
   1751 #line 134 "configparser.y" /* yacc.c:1646  */
   1752     {
   1753 		OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
   1754 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1755 			yyerror("expected yes or no.");
   1756 		else cfg_parser->opt->ip_transparent = (strcmp((yyvsp[0].str), "yes")==0);
   1757 	}
   1758 #line 1759 "configparser.c" /* yacc.c:1646  */
   1759     break;
   1760 
   1761   case 63:
   1762 #line 142 "configparser.y" /* yacc.c:1646  */
   1763     {
   1764 		OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
   1765 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1766 			yyerror("expected yes or no.");
   1767 		else cfg_parser->opt->ip_freebind = (strcmp((yyvsp[0].str), "yes")==0);
   1768 	}
   1769 #line 1770 "configparser.c" /* yacc.c:1646  */
   1770     break;
   1771 
   1772   case 64:
   1773 #line 150 "configparser.y" /* yacc.c:1646  */
   1774     {
   1775 		OUTYY(("P(server_debug_mode:%s)\n", (yyvsp[0].str)));
   1776 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1777 			yyerror("expected yes or no.");
   1778 		else cfg_parser->opt->debug_mode = (strcmp((yyvsp[0].str), "yes")==0);
   1779 	}
   1780 #line 1781 "configparser.c" /* yacc.c:1646  */
   1781     break;
   1782 
   1783   case 65:
   1784 #line 158 "configparser.y" /* yacc.c:1646  */
   1785     {
   1786 		OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
   1787 	}
   1788 #line 1789 "configparser.c" /* yacc.c:1646  */
   1789     break;
   1790 
   1791   case 66:
   1792 #line 163 "configparser.y" /* yacc.c:1646  */
   1793     {
   1794 		OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
   1795 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   1796 			yyerror("number expected");
   1797 		else cfg_parser->opt->verbosity = atoi((yyvsp[0].str));
   1798 	}
   1799 #line 1800 "configparser.c" /* yacc.c:1646  */
   1800     break;
   1801 
   1802   case 67:
   1803 #line 171 "configparser.y" /* yacc.c:1646  */
   1804     {
   1805 		OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
   1806 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1807 			yyerror("expected yes or no.");
   1808 		else cfg_parser->opt->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
   1809 	}
   1810 #line 1811 "configparser.c" /* yacc.c:1646  */
   1811     break;
   1812 
   1813   case 68:
   1814 #line 179 "configparser.y" /* yacc.c:1646  */
   1815     {
   1816 		/* for backwards compatibility in config file with NSD3 */
   1817 		OUTYY(("P(server_ip4_only:%s)\n", (yyvsp[0].str)));
   1818 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1819 			yyerror("expected yes or no.");
   1820 		else if(strcmp((yyvsp[0].str), "yes")==0) {
   1821 			cfg_parser->opt->do_ip4 = 1;
   1822 			cfg_parser->opt->do_ip6 = 0;
   1823 		}
   1824 	}
   1825 #line 1826 "configparser.c" /* yacc.c:1646  */
   1826     break;
   1827 
   1828   case 69:
   1829 #line 191 "configparser.y" /* yacc.c:1646  */
   1830     {
   1831 		/* for backwards compatibility in config file with NSD3 */
   1832 		OUTYY(("P(server_ip6_only:%s)\n", (yyvsp[0].str)));
   1833 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1834 			yyerror("expected yes or no.");
   1835 		else if(strcmp((yyvsp[0].str), "yes")==0) {
   1836 			cfg_parser->opt->do_ip6 = 1;
   1837 			cfg_parser->opt->do_ip4 = 0;
   1838 		}
   1839 	}
   1840 #line 1841 "configparser.c" /* yacc.c:1646  */
   1841     break;
   1842 
   1843   case 70:
   1844 #line 203 "configparser.y" /* yacc.c:1646  */
   1845     {
   1846 		OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
   1847 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1848 			yyerror("expected yes or no.");
   1849 		else cfg_parser->opt->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
   1850 	}
   1851 #line 1852 "configparser.c" /* yacc.c:1646  */
   1852     break;
   1853 
   1854   case 71:
   1855 #line 211 "configparser.y" /* yacc.c:1646  */
   1856     {
   1857 		OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
   1858 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1859 			yyerror("expected yes or no.");
   1860 		else cfg_parser->opt->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
   1861 	}
   1862 #line 1863 "configparser.c" /* yacc.c:1646  */
   1863     break;
   1864 
   1865   case 72:
   1866 #line 219 "configparser.y" /* yacc.c:1646  */
   1867     {
   1868 		OUTYY(("P(server_reuseport:%s)\n", (yyvsp[0].str)));
   1869 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1870 			yyerror("expected yes or no.");
   1871 		else cfg_parser->opt->reuseport = (strcmp((yyvsp[0].str), "yes")==0);
   1872 	}
   1873 #line 1874 "configparser.c" /* yacc.c:1646  */
   1874     break;
   1875 
   1876   case 73:
   1877 #line 227 "configparser.y" /* yacc.c:1646  */
   1878     {
   1879 		OUTYY(("P(server_database:%s)\n", (yyvsp[0].str)));
   1880 		cfg_parser->opt->database = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   1881 		if(cfg_parser->opt->database[0] == 0 &&
   1882 			cfg_parser->opt->zonefiles_write == 0)
   1883 			cfg_parser->opt->zonefiles_write = ZONEFILES_WRITE_INTERVAL;
   1884 	}
   1885 #line 1886 "configparser.c" /* yacc.c:1646  */
   1886     break;
   1887 
   1888   case 74:
   1889 #line 236 "configparser.y" /* yacc.c:1646  */
   1890     {
   1891 		OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
   1892 		cfg_parser->opt->identity = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   1893 	}
   1894 #line 1895 "configparser.c" /* yacc.c:1646  */
   1895     break;
   1896 
   1897   case 75:
   1898 #line 242 "configparser.y" /* yacc.c:1646  */
   1899     {
   1900 		OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
   1901 		cfg_parser->opt->version = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   1902 	}
   1903 #line 1904 "configparser.c" /* yacc.c:1646  */
   1904     break;
   1905 
   1906   case 76:
   1907 #line 248 "configparser.y" /* yacc.c:1646  */
   1908     {
   1909 		unsigned char* nsid = 0;
   1910 		size_t nsid_len = 0;
   1911 
   1912 		OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
   1913 
   1914 		if (strncasecmp((yyvsp[0].str), "ascii_", 6) == 0) {
   1915 			nsid_len = strlen((yyvsp[0].str)+6);
   1916 			if(nsid_len < 65535) {
   1917 				cfg_parser->opt->nsid = region_alloc(cfg_parser->opt->region, nsid_len*2+1);
   1918 				hex_ntop((uint8_t*)(yyvsp[0].str)+6, nsid_len, (char*)cfg_parser->opt->nsid, nsid_len*2+1);
   1919 			} else
   1920 				yyerror("NSID too long");
   1921 		} else if (strlen((yyvsp[0].str)) % 2 != 0) {
   1922 			yyerror("the NSID must be a hex string of an even length.");
   1923 		} else {
   1924 			nsid_len = strlen((yyvsp[0].str)) / 2;
   1925 			if(nsid_len < 65535) {
   1926 				nsid = xalloc(nsid_len);
   1927 				if (hex_pton((yyvsp[0].str), nsid, nsid_len) == -1)
   1928 					yyerror("hex string cannot be parsed in NSID.");
   1929 				else
   1930 					cfg_parser->opt->nsid = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   1931 				free(nsid);
   1932 			} else
   1933 				yyerror("NSID too long");
   1934 		}
   1935 	}
   1936 #line 1937 "configparser.c" /* yacc.c:1646  */
   1937     break;
   1938 
   1939   case 77:
   1940 #line 278 "configparser.y" /* yacc.c:1646  */
   1941     {
   1942 		OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
   1943 		cfg_parser->opt->logfile = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   1944 	}
   1945 #line 1946 "configparser.c" /* yacc.c:1646  */
   1946     break;
   1947 
   1948   case 78:
   1949 #line 284 "configparser.y" /* yacc.c:1646  */
   1950     {
   1951 		OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
   1952 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1953 			yyerror("expected yes or no.");
   1954 		else {
   1955 			cfg_parser->opt->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
   1956 			log_time_asc = cfg_parser->opt->log_time_ascii;
   1957 		}
   1958 	}
   1959 #line 1960 "configparser.c" /* yacc.c:1646  */
   1960     break;
   1961 
   1962   case 79:
   1963 #line 295 "configparser.y" /* yacc.c:1646  */
   1964     {
   1965 		OUTYY(("P(server_round_robin:%s)\n", (yyvsp[0].str)));
   1966 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1967 			yyerror("expected yes or no.");
   1968 		else {
   1969 			cfg_parser->opt->round_robin = (strcmp((yyvsp[0].str), "yes")==0);
   1970 			round_robin = cfg_parser->opt->round_robin;
   1971 		}
   1972 	}
   1973 #line 1974 "configparser.c" /* yacc.c:1646  */
   1974     break;
   1975 
   1976   case 80:
   1977 #line 306 "configparser.y" /* yacc.c:1646  */
   1978     {
   1979 		OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
   1980 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1981 			yyerror("expected yes or no.");
   1982 		else {
   1983 			cfg_parser->opt->minimal_responses = (strcmp((yyvsp[0].str), "yes")==0);
   1984 			minimal_responses = cfg_parser->opt->minimal_responses;
   1985 		}
   1986 	}
   1987 #line 1988 "configparser.c" /* yacc.c:1646  */
   1988     break;
   1989 
   1990   case 81:
   1991 #line 317 "configparser.y" /* yacc.c:1646  */
   1992     {
   1993 		OUTYY(("P(server_refuse_any:%s)\n", (yyvsp[0].str)));
   1994 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   1995 			yyerror("expected yes or no.");
   1996 		else {
   1997 			cfg_parser->opt->refuse_any = (strcmp((yyvsp[0].str), "yes")==0);
   1998 		}
   1999 	}
   2000 #line 2001 "configparser.c" /* yacc.c:1646  */
   2001     break;
   2002 
   2003   case 82:
   2004 #line 327 "configparser.y" /* yacc.c:1646  */
   2005     {
   2006 		OUTYY(("P(server_server_count:%s)\n", (yyvsp[0].str)));
   2007 		if(atoi((yyvsp[0].str)) <= 0)
   2008 			yyerror("number greater than zero expected");
   2009 		else cfg_parser->opt->server_count = atoi((yyvsp[0].str));
   2010 	}
   2011 #line 2012 "configparser.c" /* yacc.c:1646  */
   2012     break;
   2013 
   2014   case 83:
   2015 #line 335 "configparser.y" /* yacc.c:1646  */
   2016     {
   2017 		OUTYY(("P(server_tcp_count:%s)\n", (yyvsp[0].str)));
   2018 		if(atoi((yyvsp[0].str)) <= 0)
   2019 			yyerror("number greater than zero expected");
   2020 		else cfg_parser->opt->tcp_count = atoi((yyvsp[0].str));
   2021 	}
   2022 #line 2023 "configparser.c" /* yacc.c:1646  */
   2023     break;
   2024 
   2025   case 84:
   2026 #line 343 "configparser.y" /* yacc.c:1646  */
   2027     {
   2028 		OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
   2029 		cfg_parser->opt->pidfile = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2030 	}
   2031 #line 2032 "configparser.c" /* yacc.c:1646  */
   2032     break;
   2033 
   2034   case 85:
   2035 #line 349 "configparser.y" /* yacc.c:1646  */
   2036     {
   2037 		OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
   2038 		cfg_parser->opt->port = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2039 	}
   2040 #line 2041 "configparser.c" /* yacc.c:1646  */
   2041     break;
   2042 
   2043   case 86:
   2044 #line 355 "configparser.y" /* yacc.c:1646  */
   2045     {
   2046 		OUTYY(("P(server_statistics:%s)\n", (yyvsp[0].str)));
   2047 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2048 			yyerror("number expected");
   2049 		else cfg_parser->opt->statistics = atoi((yyvsp[0].str));
   2050 	}
   2051 #line 2052 "configparser.c" /* yacc.c:1646  */
   2052     break;
   2053 
   2054   case 87:
   2055 #line 363 "configparser.y" /* yacc.c:1646  */
   2056     {
   2057 		OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
   2058 		cfg_parser->opt->chroot = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2059 	}
   2060 #line 2061 "configparser.c" /* yacc.c:1646  */
   2061     break;
   2062 
   2063   case 88:
   2064 #line 369 "configparser.y" /* yacc.c:1646  */
   2065     {
   2066 		OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
   2067 		cfg_parser->opt->username = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2068 	}
   2069 #line 2070 "configparser.c" /* yacc.c:1646  */
   2070     break;
   2071 
   2072   case 89:
   2073 #line 375 "configparser.y" /* yacc.c:1646  */
   2074     {
   2075 		OUTYY(("P(server_zonesdir:%s)\n", (yyvsp[0].str)));
   2076 		cfg_parser->opt->zonesdir = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2077 	}
   2078 #line 2079 "configparser.c" /* yacc.c:1646  */
   2079     break;
   2080 
   2081   case 90:
   2082 #line 381 "configparser.y" /* yacc.c:1646  */
   2083     {
   2084 		OUTYY(("P(server_zonelistfile:%s)\n", (yyvsp[0].str)));
   2085 		cfg_parser->opt->zonelistfile = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2086 	}
   2087 #line 2088 "configparser.c" /* yacc.c:1646  */
   2088     break;
   2089 
   2090   case 91:
   2091 #line 387 "configparser.y" /* yacc.c:1646  */
   2092     {
   2093 		OUTYY(("P(server_xfrdir:%s)\n", (yyvsp[0].str)));
   2094 		cfg_parser->opt->xfrdir = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2095 	}
   2096 #line 2097 "configparser.c" /* yacc.c:1646  */
   2097     break;
   2098 
   2099   case 92:
   2100 #line 393 "configparser.y" /* yacc.c:1646  */
   2101     {
   2102 		OUTYY(("P(server_difffile:%s)\n", (yyvsp[0].str)));
   2103 		/* ignore the value for backwards compatibility in config file*/
   2104 	}
   2105 #line 2106 "configparser.c" /* yacc.c:1646  */
   2106     break;
   2107 
   2108   case 93:
   2109 #line 399 "configparser.y" /* yacc.c:1646  */
   2110     {
   2111 		OUTYY(("P(server_xfrdfile:%s)\n", (yyvsp[0].str)));
   2112 		cfg_parser->opt->xfrdfile = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2113 	}
   2114 #line 2115 "configparser.c" /* yacc.c:1646  */
   2115     break;
   2116 
   2117   case 94:
   2118 #line 405 "configparser.y" /* yacc.c:1646  */
   2119     {
   2120 		OUTYY(("P(server_xfrd_reload_timeout:%s)\n", (yyvsp[0].str)));
   2121 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2122 			yyerror("number expected");
   2123 		cfg_parser->opt->xfrd_reload_timeout = atoi((yyvsp[0].str));
   2124 	}
   2125 #line 2126 "configparser.c" /* yacc.c:1646  */
   2126     break;
   2127 
   2128   case 95:
   2129 #line 413 "configparser.y" /* yacc.c:1646  */
   2130     {
   2131 		OUTYY(("P(server_tcp_query_count:%s)\n", (yyvsp[0].str)));
   2132 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2133 			yyerror("number expected");
   2134 		cfg_parser->opt->tcp_query_count = atoi((yyvsp[0].str));
   2135 	}
   2136 #line 2137 "configparser.c" /* yacc.c:1646  */
   2137     break;
   2138 
   2139   case 96:
   2140 #line 421 "configparser.y" /* yacc.c:1646  */
   2141     {
   2142 		OUTYY(("P(server_tcp_timeout:%s)\n", (yyvsp[0].str)));
   2143 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2144 			yyerror("number expected");
   2145 		cfg_parser->opt->tcp_timeout = atoi((yyvsp[0].str));
   2146 	}
   2147 #line 2148 "configparser.c" /* yacc.c:1646  */
   2148     break;
   2149 
   2150   case 97:
   2151 #line 429 "configparser.y" /* yacc.c:1646  */
   2152     {
   2153 		OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
   2154 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2155 			yyerror("number expected");
   2156 		cfg_parser->opt->tcp_mss = atoi((yyvsp[0].str));
   2157 	}
   2158 #line 2159 "configparser.c" /* yacc.c:1646  */
   2159     break;
   2160 
   2161   case 98:
   2162 #line 437 "configparser.y" /* yacc.c:1646  */
   2163     {
   2164 		OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
   2165 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2166 			yyerror("number expected");
   2167 		cfg_parser->opt->outgoing_tcp_mss = atoi((yyvsp[0].str));
   2168 	}
   2169 #line 2170 "configparser.c" /* yacc.c:1646  */
   2170     break;
   2171 
   2172   case 99:
   2173 #line 445 "configparser.y" /* yacc.c:1646  */
   2174     {
   2175 		OUTYY(("P(server_ipv4_edns_size:%s)\n", (yyvsp[0].str)));
   2176 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2177 			yyerror("number expected");
   2178 		cfg_parser->opt->ipv4_edns_size = atoi((yyvsp[0].str));
   2179 	}
   2180 #line 2181 "configparser.c" /* yacc.c:1646  */
   2181     break;
   2182 
   2183   case 100:
   2184 #line 453 "configparser.y" /* yacc.c:1646  */
   2185     {
   2186 		OUTYY(("P(server_ipv6_edns_size:%s)\n", (yyvsp[0].str)));
   2187 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2188 			yyerror("number expected");
   2189 		cfg_parser->opt->ipv6_edns_size = atoi((yyvsp[0].str));
   2190 	}
   2191 #line 2192 "configparser.c" /* yacc.c:1646  */
   2192     break;
   2193 
   2194   case 101:
   2195 #line 461 "configparser.y" /* yacc.c:1646  */
   2196     {
   2197 		OUTYY(("P(server_rrl_size:%s)\n", (yyvsp[0].str)));
   2198 #ifdef RATELIMIT
   2199 		if(atoi((yyvsp[0].str)) <= 0)
   2200 			yyerror("number greater than zero expected");
   2201 		cfg_parser->opt->rrl_size = atoi((yyvsp[0].str));
   2202 #endif
   2203 	}
   2204 #line 2205 "configparser.c" /* yacc.c:1646  */
   2205     break;
   2206 
   2207   case 102:
   2208 #line 471 "configparser.y" /* yacc.c:1646  */
   2209     {
   2210 		OUTYY(("P(server_rrl_ratelimit:%s)\n", (yyvsp[0].str)));
   2211 #ifdef RATELIMIT
   2212 		cfg_parser->opt->rrl_ratelimit = atoi((yyvsp[0].str));
   2213 #endif
   2214 	}
   2215 #line 2216 "configparser.c" /* yacc.c:1646  */
   2216     break;
   2217 
   2218   case 103:
   2219 #line 479 "configparser.y" /* yacc.c:1646  */
   2220     {
   2221 		OUTYY(("P(server_rrl_slip:%s)\n", (yyvsp[0].str)));
   2222 #ifdef RATELIMIT
   2223 		if(atoi((yyvsp[0].str)) < 0)
   2224 			yyerror("number equal or greater than zero expected");
   2225 		cfg_parser->opt->rrl_slip = atoi((yyvsp[0].str));
   2226 #endif
   2227 	}
   2228 #line 2229 "configparser.c" /* yacc.c:1646  */
   2229     break;
   2230 
   2231   case 104:
   2232 #line 489 "configparser.y" /* yacc.c:1646  */
   2233     {
   2234 		OUTYY(("P(server_rrl_ipv4_prefix_length:%s)\n", (yyvsp[0].str)));
   2235 #ifdef RATELIMIT
   2236 		if(atoi((yyvsp[0].str)) < 0 || atoi((yyvsp[0].str)) > 32)
   2237 			yyerror("invalid IPv4 prefix length");
   2238 		cfg_parser->opt->rrl_ipv4_prefix_length = atoi((yyvsp[0].str));
   2239 #endif
   2240 	}
   2241 #line 2242 "configparser.c" /* yacc.c:1646  */
   2242     break;
   2243 
   2244   case 105:
   2245 #line 499 "configparser.y" /* yacc.c:1646  */
   2246     {
   2247 		OUTYY(("P(server_rrl_ipv6_prefix_length:%s)\n", (yyvsp[0].str)));
   2248 #ifdef RATELIMIT
   2249 		if(atoi((yyvsp[0].str)) < 0 || atoi((yyvsp[0].str)) > 64)
   2250 			yyerror("invalid IPv6 prefix length");
   2251 		cfg_parser->opt->rrl_ipv6_prefix_length = atoi((yyvsp[0].str));
   2252 #endif
   2253 	}
   2254 #line 2255 "configparser.c" /* yacc.c:1646  */
   2255     break;
   2256 
   2257   case 106:
   2258 #line 509 "configparser.y" /* yacc.c:1646  */
   2259     {
   2260 		OUTYY(("P(server_rrl_whitelist_ratelimit:%s)\n", (yyvsp[0].str)));
   2261 #ifdef RATELIMIT
   2262 		cfg_parser->opt->rrl_whitelist_ratelimit = atoi((yyvsp[0].str));
   2263 #endif
   2264 	}
   2265 #line 2266 "configparser.c" /* yacc.c:1646  */
   2266     break;
   2267 
   2268   case 107:
   2269 #line 517 "configparser.y" /* yacc.c:1646  */
   2270     {
   2271 		OUTYY(("P(server_zonefiles_check:%s)\n", (yyvsp[0].str)));
   2272 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2273 			yyerror("expected yes or no.");
   2274 		else cfg_parser->opt->zonefiles_check = (strcmp((yyvsp[0].str), "yes")==0);
   2275 	}
   2276 #line 2277 "configparser.c" /* yacc.c:1646  */
   2277     break;
   2278 
   2279   case 108:
   2280 #line 525 "configparser.y" /* yacc.c:1646  */
   2281     {
   2282 		OUTYY(("P(server_zonefiles_write:%s)\n", (yyvsp[0].str)));
   2283 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2284 			yyerror("number expected");
   2285 		else cfg_parser->opt->zonefiles_write = atoi((yyvsp[0].str));
   2286 	}
   2287 #line 2288 "configparser.c" /* yacc.c:1646  */
   2288     break;
   2289 
   2290   case 109:
   2291 #line 534 "configparser.y" /* yacc.c:1646  */
   2292     {
   2293 		OUTYY(("\nP(remote-control:)\n"));
   2294 	}
   2295 #line 2296 "configparser.c" /* yacc.c:1646  */
   2296     break;
   2297 
   2298   case 119:
   2299 #line 545 "configparser.y" /* yacc.c:1646  */
   2300     {
   2301 		OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
   2302 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2303 			yyerror("expected yes or no.");
   2304 		else cfg_parser->opt->control_enable = (strcmp((yyvsp[0].str), "yes")==0);
   2305 	}
   2306 #line 2307 "configparser.c" /* yacc.c:1646  */
   2307     break;
   2308 
   2309   case 120:
   2310 #line 553 "configparser.y" /* yacc.c:1646  */
   2311     {
   2312 		OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
   2313 		if(atoi((yyvsp[0].str)) == 0)
   2314 			yyerror("control port number expected");
   2315 		else cfg_parser->opt->control_port = atoi((yyvsp[0].str));
   2316 	}
   2317 #line 2318 "configparser.c" /* yacc.c:1646  */
   2318     break;
   2319 
   2320   case 121:
   2321 #line 561 "configparser.y" /* yacc.c:1646  */
   2322     {
   2323 		ip_address_option_type* last = NULL;
   2324 		ip_address_option_type* o = (ip_address_option_type*)region_alloc(
   2325 			cfg_parser->opt->region, sizeof(ip_address_option_type));
   2326 		OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
   2327 		/* append at end */
   2328 		last = cfg_parser->opt->control_interface;
   2329 		while(last && last->next)
   2330 			last = last->next;
   2331 		if(last == NULL)
   2332 			cfg_parser->opt->control_interface = o;
   2333 		else	last->next = o;
   2334 		o->next = NULL;
   2335 		o->address = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2336 	}
   2337 #line 2338 "configparser.c" /* yacc.c:1646  */
   2338     break;
   2339 
   2340   case 122:
   2341 #line 578 "configparser.y" /* yacc.c:1646  */
   2342     {
   2343 	OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
   2344 	cfg_parser->opt->server_key_file = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2345 	}
   2346 #line 2347 "configparser.c" /* yacc.c:1646  */
   2347     break;
   2348 
   2349   case 123:
   2350 #line 584 "configparser.y" /* yacc.c:1646  */
   2351     {
   2352 	OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
   2353 	cfg_parser->opt->server_cert_file = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2354 	}
   2355 #line 2356 "configparser.c" /* yacc.c:1646  */
   2356     break;
   2357 
   2358   case 124:
   2359 #line 590 "configparser.y" /* yacc.c:1646  */
   2360     {
   2361 	OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
   2362 	cfg_parser->opt->control_key_file = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2363 	}
   2364 #line 2365 "configparser.c" /* yacc.c:1646  */
   2365     break;
   2366 
   2367   case 125:
   2368 #line 596 "configparser.y" /* yacc.c:1646  */
   2369     {
   2370 	OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
   2371 	cfg_parser->opt->control_cert_file = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2372 	}
   2373 #line 2374 "configparser.c" /* yacc.c:1646  */
   2374     break;
   2375 
   2376   case 126:
   2377 #line 604 "configparser.y" /* yacc.c:1646  */
   2378     {
   2379 		OUTYY(("\nP(dnstap:)\n"));
   2380 	}
   2381 #line 2382 "configparser.c" /* yacc.c:1646  */
   2382     break;
   2383 
   2384   case 137:
   2385 #line 617 "configparser.y" /* yacc.c:1646  */
   2386     {
   2387 		OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
   2388 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2389 			yyerror("expected yes or no.");
   2390 		else cfg_parser->opt->dnstap_enable = (strcmp((yyvsp[0].str), "yes")==0);
   2391 	}
   2392 #line 2393 "configparser.c" /* yacc.c:1646  */
   2393     break;
   2394 
   2395   case 138:
   2396 #line 625 "configparser.y" /* yacc.c:1646  */
   2397     {
   2398 		OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
   2399 		cfg_parser->opt->dnstap_socket_path = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2400 	}
   2401 #line 2402 "configparser.c" /* yacc.c:1646  */
   2402     break;
   2403 
   2404   case 139:
   2405 #line 631 "configparser.y" /* yacc.c:1646  */
   2406     {
   2407 		OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
   2408 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2409 			yyerror("expected yes or no.");
   2410 		else cfg_parser->opt->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
   2411 	}
   2412 #line 2413 "configparser.c" /* yacc.c:1646  */
   2413     break;
   2414 
   2415   case 140:
   2416 #line 639 "configparser.y" /* yacc.c:1646  */
   2417     {
   2418 		OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
   2419 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2420 			yyerror("expected yes or no.");
   2421 		else cfg_parser->opt->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
   2422 	}
   2423 #line 2424 "configparser.c" /* yacc.c:1646  */
   2424     break;
   2425 
   2426   case 141:
   2427 #line 647 "configparser.y" /* yacc.c:1646  */
   2428     {
   2429 		OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
   2430 		cfg_parser->opt->dnstap_identity = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2431 	}
   2432 #line 2433 "configparser.c" /* yacc.c:1646  */
   2433     break;
   2434 
   2435   case 142:
   2436 #line 653 "configparser.y" /* yacc.c:1646  */
   2437     {
   2438 		OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
   2439 		cfg_parser->opt->dnstap_version = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2440 	}
   2441 #line 2442 "configparser.c" /* yacc.c:1646  */
   2442     break;
   2443 
   2444   case 143:
   2445 #line 659 "configparser.y" /* yacc.c:1646  */
   2446     {
   2447 		OUTYY(("P(dt_dnstap_log_auth_query_messages:%s)\n", (yyvsp[0].str)));
   2448 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2449 			yyerror("expected yes or no.");
   2450 		else cfg_parser->opt->dnstap_log_auth_query_messages = (strcmp((yyvsp[0].str), "yes")==0);
   2451 	}
   2452 #line 2453 "configparser.c" /* yacc.c:1646  */
   2453     break;
   2454 
   2455   case 144:
   2456 #line 667 "configparser.y" /* yacc.c:1646  */
   2457     {
   2458 		OUTYY(("P(dt_dnstap_log_auth_response_messages:%s)\n", (yyvsp[0].str)));
   2459 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2460 			yyerror("expected yes or no.");
   2461 		else cfg_parser->opt->dnstap_log_auth_response_messages = (strcmp((yyvsp[0].str), "yes")==0);
   2462 	}
   2463 #line 2464 "configparser.c" /* yacc.c:1646  */
   2464     break;
   2465 
   2466   case 145:
   2467 #line 677 "configparser.y" /* yacc.c:1646  */
   2468     {
   2469 		OUTYY(("\nP(pattern:)\n"));
   2470 		if(cfg_parser->current_zone) {
   2471 			if(!cfg_parser->current_zone->name)
   2472 				c_error("previous zone has no name");
   2473 			else {
   2474 				if(!nsd_options_insert_zone(cfg_parser->opt,
   2475 					cfg_parser->current_zone))
   2476 					c_error("duplicate zone");
   2477 			}
   2478 			if(!cfg_parser->current_zone->pattern)
   2479 				c_error("previous zone has no pattern");
   2480 			cfg_parser->current_zone = NULL;
   2481 		}
   2482 		if(cfg_parser->current_pattern) {
   2483 			if(!cfg_parser->current_pattern->pname)
   2484 				c_error("previous pattern has no name");
   2485 			else {
   2486 				if(!nsd_options_insert_pattern(cfg_parser->opt,
   2487 					cfg_parser->current_pattern))
   2488 					c_error_msg("duplicate pattern %s",
   2489 						cfg_parser->current_pattern->pname);
   2490 			}
   2491 		}
   2492 		cfg_parser->current_pattern = pattern_options_create(
   2493 			cfg_parser->opt->region);
   2494 		cfg_parser->current_allow_notify = 0;
   2495 		cfg_parser->current_request_xfr = 0;
   2496 		cfg_parser->current_notify = 0;
   2497 		cfg_parser->current_provide_xfr = 0;
   2498 		cfg_parser->current_outgoing_interface = 0;
   2499 	}
   2500 #line 2501 "configparser.c" /* yacc.c:1646  */
   2501     break;
   2502 
   2503   case 167:
   2504 #line 719 "configparser.y" /* yacc.c:1646  */
   2505     {
   2506 		OUTYY(("P(pattern_name:%s)\n", (yyvsp[0].str)));
   2507 #ifndef NDEBUG
   2508 		assert(cfg_parser->current_pattern);
   2509 #endif
   2510 		if(strchr((yyvsp[0].str), ' '))
   2511 			c_error_msg("space is not allowed in pattern name: "
   2512 				"'%s'", (yyvsp[0].str));
   2513 		cfg_parser->current_pattern->pname = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2514 	}
   2515 #line 2516 "configparser.c" /* yacc.c:1646  */
   2516     break;
   2517 
   2518   case 168:
   2519 #line 731 "configparser.y" /* yacc.c:1646  */
   2520     {
   2521 		OUTYY(("P(include-pattern:%s)\n", (yyvsp[0].str)));
   2522 #ifndef NDEBUG
   2523 		assert(cfg_parser->current_pattern);
   2524 #endif
   2525 		config_apply_pattern((yyvsp[0].str));
   2526 	}
   2527 #line 2528 "configparser.c" /* yacc.c:1646  */
   2528     break;
   2529 
   2530   case 169:
   2531 #line 742 "configparser.y" /* yacc.c:1646  */
   2532     {
   2533 		OUTYY(("\nP(zone:)\n"));
   2534 		if(cfg_parser->current_zone) {
   2535 			if(!cfg_parser->current_zone->name)
   2536 				c_error("previous zone has no name");
   2537 			else {
   2538 				if(!nsd_options_insert_zone(cfg_parser->opt,
   2539 					cfg_parser->current_zone))
   2540 					c_error("duplicate zone");
   2541 			}
   2542 			if(!cfg_parser->current_zone->pattern)
   2543 				c_error("previous zone has no pattern");
   2544 		}
   2545 		if(cfg_parser->current_pattern) {
   2546 			if(!cfg_parser->current_pattern->pname)
   2547 				c_error("previous pattern has no name");
   2548 			else {
   2549 				if(!nsd_options_insert_pattern(cfg_parser->opt,
   2550 					cfg_parser->current_pattern))
   2551 					c_error_msg("duplicate pattern %s",
   2552 						cfg_parser->current_pattern->pname);
   2553 			}
   2554 		}
   2555 		cfg_parser->current_zone = zone_options_create(cfg_parser->opt->region);
   2556 		cfg_parser->current_zone->part_of_config = 1;
   2557 		cfg_parser->current_pattern = pattern_options_create(
   2558 			cfg_parser->opt->region);
   2559 		cfg_parser->current_pattern->implicit = 1;
   2560 		cfg_parser->current_zone->pattern = cfg_parser->current_pattern;
   2561 		cfg_parser->current_allow_notify = 0;
   2562 		cfg_parser->current_request_xfr = 0;
   2563 		cfg_parser->current_notify = 0;
   2564 		cfg_parser->current_provide_xfr = 0;
   2565 		cfg_parser->current_outgoing_interface = 0;
   2566 	}
   2567 #line 2568 "configparser.c" /* yacc.c:1646  */
   2568     break;
   2569 
   2570   case 174:
   2571 #line 781 "configparser.y" /* yacc.c:1646  */
   2572     {
   2573 		char* s;
   2574 		OUTYY(("P(zone_name:%s)\n", (yyvsp[0].str)));
   2575 #ifndef NDEBUG
   2576 		assert(cfg_parser->current_zone);
   2577 		assert(cfg_parser->current_pattern);
   2578 #endif
   2579 		cfg_parser->current_zone->name = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2580 		s = (char*)region_alloc(cfg_parser->opt->region,
   2581 			strlen((yyvsp[0].str))+strlen(PATTERN_IMPLICIT_MARKER)+1);
   2582 		memmove(s, PATTERN_IMPLICIT_MARKER,
   2583 			strlen(PATTERN_IMPLICIT_MARKER));
   2584 		memmove(s+strlen(PATTERN_IMPLICIT_MARKER), (yyvsp[0].str), strlen((yyvsp[0].str))+1);
   2585 		if(pattern_options_find(cfg_parser->opt, s))
   2586 			c_error_msg("zone %s cannot be created because "
   2587 				"implicit pattern %s already exists", (yyvsp[0].str), s);
   2588 		cfg_parser->current_pattern->pname = s;
   2589 	}
   2590 #line 2591 "configparser.c" /* yacc.c:1646  */
   2591     break;
   2592 
   2593   case 175:
   2594 #line 801 "configparser.y" /* yacc.c:1646  */
   2595     {
   2596 		OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
   2597 #ifndef NDEBUG
   2598 		assert(cfg_parser->current_pattern);
   2599 #endif
   2600 		cfg_parser->current_pattern->zonefile = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2601 	}
   2602 #line 2603 "configparser.c" /* yacc.c:1646  */
   2603     break;
   2604 
   2605   case 176:
   2606 #line 810 "configparser.y" /* yacc.c:1646  */
   2607     {
   2608 		OUTYY(("P(zonestats:%s)\n", (yyvsp[0].str)));
   2609 #ifndef NDEBUG
   2610 		assert(cfg_parser->current_pattern);
   2611 #endif
   2612 		cfg_parser->current_pattern->zonestats = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2613 	}
   2614 #line 2615 "configparser.c" /* yacc.c:1646  */
   2615     break;
   2616 
   2617   case 177:
   2618 #line 819 "configparser.y" /* yacc.c:1646  */
   2619     {
   2620 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[-1].str), (yyvsp[0].str));
   2621 		OUTYY(("P(allow_notify:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
   2622 		if(cfg_parser->current_allow_notify)
   2623 			cfg_parser->current_allow_notify->next = acl;
   2624 		else
   2625 			cfg_parser->current_pattern->allow_notify = acl;
   2626 		cfg_parser->current_allow_notify = acl;
   2627 	}
   2628 #line 2629 "configparser.c" /* yacc.c:1646  */
   2629     break;
   2630 
   2631   case 178:
   2632 #line 830 "configparser.y" /* yacc.c:1646  */
   2633     {
   2634 	}
   2635 #line 2636 "configparser.c" /* yacc.c:1646  */
   2636     break;
   2637 
   2638   case 179:
   2639 #line 834 "configparser.y" /* yacc.c:1646  */
   2640     {
   2641 		OUTYY(("P(size_limit_xfr:%s)\n", (yyvsp[0].str)));
   2642 		if(atoll((yyvsp[0].str)) < 0)
   2643 			yyerror("number >= 0 expected");
   2644 		else cfg_parser->current_pattern->size_limit_xfr = atoll((yyvsp[0].str));
   2645 	}
   2646 #line 2647 "configparser.c" /* yacc.c:1646  */
   2647     break;
   2648 
   2649   case 180:
   2650 #line 842 "configparser.y" /* yacc.c:1646  */
   2651     {
   2652 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[-1].str), (yyvsp[0].str));
   2653 		OUTYY(("P(request_xfr:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
   2654 		if(acl->blocked) c_error("blocked address used for request-xfr");
   2655 		if(acl->rangetype!=acl_range_single) c_error("address range used for request-xfr");
   2656 		if(cfg_parser->current_request_xfr)
   2657 			cfg_parser->current_request_xfr->next = acl;
   2658 		else
   2659 			cfg_parser->current_pattern->request_xfr = acl;
   2660 		cfg_parser->current_request_xfr = acl;
   2661 	}
   2662 #line 2663 "configparser.c" /* yacc.c:1646  */
   2663     break;
   2664 
   2665   case 181:
   2666 #line 854 "configparser.y" /* yacc.c:1646  */
   2667     {
   2668 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[-1].str), (yyvsp[0].str));
   2669 		acl->use_axfr_only = 1;
   2670 		OUTYY(("P(request_xfr:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
   2671 		if(acl->blocked) c_error("blocked address used for request-xfr");
   2672 		if(acl->rangetype!=acl_range_single) c_error("address range used for request-xfr");
   2673 		if(cfg_parser->current_request_xfr)
   2674 			cfg_parser->current_request_xfr->next = acl;
   2675 		else
   2676 			cfg_parser->current_pattern->request_xfr = acl;
   2677 		cfg_parser->current_request_xfr = acl;
   2678 	}
   2679 #line 2680 "configparser.c" /* yacc.c:1646  */
   2680     break;
   2681 
   2682   case 182:
   2683 #line 867 "configparser.y" /* yacc.c:1646  */
   2684     {
   2685 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[-1].str), (yyvsp[0].str));
   2686 		acl->allow_udp = 1;
   2687 		OUTYY(("P(request_xfr:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
   2688 		if(acl->blocked) c_error("blocked address used for request-xfr");
   2689 		if(acl->rangetype!=acl_range_single) c_error("address range used for request-xfr");
   2690 		if(cfg_parser->current_request_xfr)
   2691 			cfg_parser->current_request_xfr->next = acl;
   2692 		else
   2693 			cfg_parser->current_pattern->request_xfr = acl;
   2694 		cfg_parser->current_request_xfr = acl;
   2695 	}
   2696 #line 2697 "configparser.c" /* yacc.c:1646  */
   2697     break;
   2698 
   2699   case 183:
   2700 #line 881 "configparser.y" /* yacc.c:1646  */
   2701     {
   2702 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[-1].str), (yyvsp[0].str));
   2703 		OUTYY(("P(notify:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
   2704 		if(acl->blocked) c_error("blocked address used for notify");
   2705 		if(acl->rangetype!=acl_range_single) c_error("address range used for notify");
   2706 		if(cfg_parser->current_notify)
   2707 			cfg_parser->current_notify->next = acl;
   2708 		else
   2709 			cfg_parser->current_pattern->notify = acl;
   2710 		cfg_parser->current_notify = acl;
   2711 	}
   2712 #line 2713 "configparser.c" /* yacc.c:1646  */
   2713     break;
   2714 
   2715   case 184:
   2716 #line 894 "configparser.y" /* yacc.c:1646  */
   2717     {
   2718 		OUTYY(("P(notify_retry:%s)\n", (yyvsp[0].str)));
   2719 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2720 			yyerror("number expected");
   2721 		else {
   2722 			cfg_parser->current_pattern->notify_retry = atoi((yyvsp[0].str));
   2723 			cfg_parser->current_pattern->notify_retry_is_default=0;
   2724 		}
   2725 	}
   2726 #line 2727 "configparser.c" /* yacc.c:1646  */
   2727     break;
   2728 
   2729   case 185:
   2730 #line 905 "configparser.y" /* yacc.c:1646  */
   2731     {
   2732 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[-1].str), (yyvsp[0].str));
   2733 		OUTYY(("P(provide_xfr:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
   2734 		if(cfg_parser->current_provide_xfr)
   2735 			cfg_parser->current_provide_xfr->next = acl;
   2736 		else
   2737 			cfg_parser->current_pattern->provide_xfr = acl;
   2738 		cfg_parser->current_provide_xfr = acl;
   2739 	}
   2740 #line 2741 "configparser.c" /* yacc.c:1646  */
   2741     break;
   2742 
   2743   case 186:
   2744 #line 916 "configparser.y" /* yacc.c:1646  */
   2745     {
   2746 		acl_options_type* acl = parse_acl_info(cfg_parser->opt->region, (yyvsp[0].str), "NOKEY");
   2747 		OUTYY(("P(outgoing_interface:%s)\n", (yyvsp[0].str)));
   2748 		if(acl->rangetype!=acl_range_single) c_error("address range used for outgoing interface");
   2749 		if(cfg_parser->current_outgoing_interface)
   2750 			cfg_parser->current_outgoing_interface->next = acl;
   2751 		else
   2752 			cfg_parser->current_pattern->outgoing_interface = acl;
   2753 		cfg_parser->current_outgoing_interface = acl;
   2754 	}
   2755 #line 2756 "configparser.c" /* yacc.c:1646  */
   2756     break;
   2757 
   2758   case 187:
   2759 #line 928 "configparser.y" /* yacc.c:1646  */
   2760     {
   2761 		OUTYY(("P(allow_axfr_fallback:%s)\n", (yyvsp[0].str)));
   2762 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2763 			yyerror("expected yes or no.");
   2764 		else {
   2765 			cfg_parser->current_pattern->allow_axfr_fallback = (strcmp((yyvsp[0].str), "yes")==0);
   2766 			cfg_parser->current_pattern->allow_axfr_fallback_is_default = 0;
   2767 		}
   2768 	}
   2769 #line 2770 "configparser.c" /* yacc.c:1646  */
   2770     break;
   2771 
   2772   case 188:
   2773 #line 939 "configparser.y" /* yacc.c:1646  */
   2774     {
   2775 		OUTYY(("P(zone_rrl_whitelist:%s)\n", (yyvsp[0].str)));
   2776 #ifdef RATELIMIT
   2777 		cfg_parser->current_pattern->rrl_whitelist |= rrlstr2type((yyvsp[0].str));
   2778 #endif
   2779 	}
   2780 #line 2781 "configparser.c" /* yacc.c:1646  */
   2781     break;
   2782 
   2783   case 189:
   2784 #line 947 "configparser.y" /* yacc.c:1646  */
   2785     {
   2786 	OUTYY(("P(zone_max_refresh_time:%s)\n", (yyvsp[0].str)));
   2787 	if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2788 		yyerror("number expected");
   2789 	else {
   2790 		cfg_parser->current_pattern->max_refresh_time = atoi((yyvsp[0].str));
   2791 		cfg_parser->current_pattern->max_refresh_time_is_default = 0;
   2792 	}
   2793 }
   2794 #line 2795 "configparser.c" /* yacc.c:1646  */
   2795     break;
   2796 
   2797   case 190:
   2798 #line 957 "configparser.y" /* yacc.c:1646  */
   2799     {
   2800 	OUTYY(("P(zone_min_refresh_time:%s)\n", (yyvsp[0].str)));
   2801 	if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2802 		yyerror("number expected");
   2803 	else {
   2804 		cfg_parser->current_pattern->min_refresh_time = atoi((yyvsp[0].str));
   2805 		cfg_parser->current_pattern->min_refresh_time_is_default = 0;
   2806 	}
   2807 }
   2808 #line 2809 "configparser.c" /* yacc.c:1646  */
   2809     break;
   2810 
   2811   case 191:
   2812 #line 967 "configparser.y" /* yacc.c:1646  */
   2813     {
   2814 	OUTYY(("P(zone_max_retry_time:%s)\n", (yyvsp[0].str)));
   2815 	if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2816 		yyerror("number expected");
   2817 	else {
   2818 		cfg_parser->current_pattern->max_retry_time = atoi((yyvsp[0].str));
   2819 		cfg_parser->current_pattern->max_retry_time_is_default = 0;
   2820 	}
   2821 }
   2822 #line 2823 "configparser.c" /* yacc.c:1646  */
   2823     break;
   2824 
   2825   case 192:
   2826 #line 977 "configparser.y" /* yacc.c:1646  */
   2827     {
   2828 	OUTYY(("P(zone_min_retry_time:%s)\n", (yyvsp[0].str)));
   2829 	if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
   2830 		yyerror("number expected");
   2831 	else {
   2832 		cfg_parser->current_pattern->min_retry_time = atoi((yyvsp[0].str));
   2833 		cfg_parser->current_pattern->min_retry_time_is_default = 0;
   2834 	}
   2835 }
   2836 #line 2837 "configparser.c" /* yacc.c:1646  */
   2837     break;
   2838 
   2839   case 193:
   2840 #line 987 "configparser.y" /* yacc.c:1646  */
   2841     {
   2842 		OUTYY(("P(zone_multi_master_check:%s)\n", (yyvsp[0].str)));
   2843 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
   2844 			yyerror("expected yes or no.");
   2845 		else cfg_parser->current_pattern->multi_master_check = (strcmp((yyvsp[0].str), "yes")==0);
   2846 	}
   2847 #line 2848 "configparser.c" /* yacc.c:1646  */
   2848     break;
   2849 
   2850   case 194:
   2851 #line 996 "configparser.y" /* yacc.c:1646  */
   2852     {
   2853 		OUTYY(("\nP(key:)\n"));
   2854 		if(cfg_parser->current_key) {
   2855 			if(!cfg_parser->current_key->name) c_error("previous key has no name");
   2856 			if(!cfg_parser->current_key->algorithm) c_error("previous key has no algorithm");
   2857 			if(!cfg_parser->current_key->secret) c_error("previous key has no secret blob");
   2858 			key_options_insert(cfg_parser->opt, cfg_parser->current_key);
   2859 		}
   2860 		cfg_parser->current_key = key_options_create(cfg_parser->opt->region);
   2861 		cfg_parser->current_key->algorithm = region_strdup(cfg_parser->opt->region, "sha256");
   2862 	}
   2863 #line 2864 "configparser.c" /* yacc.c:1646  */
   2864     break;
   2865 
   2866   case 200:
   2867 #line 1011 "configparser.y" /* yacc.c:1646  */
   2868     {
   2869 		const dname_type* d;
   2870 		OUTYY(("P(key_name:%s)\n", (yyvsp[0].str)));
   2871 #ifndef NDEBUG
   2872 		assert(cfg_parser->current_key);
   2873 #endif
   2874 		cfg_parser->current_key->name = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2875 		d = dname_parse(cfg_parser->opt->region, (yyvsp[0].str));
   2876 		if(!d)	c_error_msg("Failed to parse tsig key name %s", (yyvsp[0].str));
   2877 		else	region_recycle(cfg_parser->opt->region, (void*)d,
   2878 				dname_total_size(d));
   2879 	}
   2880 #line 2881 "configparser.c" /* yacc.c:1646  */
   2881     break;
   2882 
   2883   case 201:
   2884 #line 1025 "configparser.y" /* yacc.c:1646  */
   2885     {
   2886 		OUTYY(("P(key_algorithm:%s)\n", (yyvsp[0].str)));
   2887 #ifndef NDEBUG
   2888 		assert(cfg_parser->current_key);
   2889 #endif
   2890 		if(cfg_parser->current_key->algorithm)
   2891 			region_recycle(cfg_parser->opt->region, cfg_parser->current_key->algorithm, strlen(cfg_parser->current_key->algorithm)+1);
   2892 		cfg_parser->current_key->algorithm = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2893 		if(tsig_get_algorithm_by_name((yyvsp[0].str)) == NULL)
   2894 			c_error_msg("Bad tsig algorithm %s", (yyvsp[0].str));
   2895 	}
   2896 #line 2897 "configparser.c" /* yacc.c:1646  */
   2897     break;
   2898 
   2899   case 202:
   2900 #line 1038 "configparser.y" /* yacc.c:1646  */
   2901     {
   2902 		uint8_t data[16384];
   2903 		int size;
   2904 		OUTYY(("key_secret:%s)\n", (yyvsp[0].str)));
   2905 #ifndef NDEBUG
   2906 		assert(cfg_parser->current_key);
   2907 #endif
   2908 		cfg_parser->current_key->secret = region_strdup(cfg_parser->opt->region, (yyvsp[0].str));
   2909 		size = b64_pton((yyvsp[0].str), data, sizeof(data));
   2910 		if(size == -1) {
   2911 			c_error_msg("Cannot base64 decode tsig secret %s",
   2912 				cfg_parser->current_key->name?
   2913 				cfg_parser->current_key->name:"");
   2914 		} else if(size != 0) {
   2915 			memset(data, 0xdd, size); /* wipe secret */
   2916 		}
   2917 	}
   2918 #line 2919 "configparser.c" /* yacc.c:1646  */
   2919     break;
   2920 
   2921 
   2922 #line 2923 "configparser.c" /* yacc.c:1646  */
   2923       default: break;
   2924     }
   2925   /* User semantic actions sometimes alter yychar, and that requires
   2926      that yytoken be updated with the new translation.  We take the
   2927      approach of translating immediately before every use of yytoken.
   2928      One alternative is translating here after every semantic action,
   2929      but that translation would be missed if the semantic action invokes
   2930      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
   2931      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
   2932      incorrect destructor might then be invoked immediately.  In the
   2933      case of YYERROR or YYBACKUP, subsequent parser actions might lead
   2934      to an incorrect destructor call or verbose syntax error message
   2935      before the lookahead is translated.  */
   2936   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
   2937 
   2938   YYPOPSTACK (yylen);
   2939   yylen = 0;
   2940   YY_STACK_PRINT (yyss, yyssp);
   2941 
   2942   *++yyvsp = yyval;
   2943 
   2944   /* Now 'shift' the result of the reduction.  Determine what state
   2945      that goes to, based on the state we popped back to and the rule
   2946      number reduced by.  */
   2947 
   2948   yyn = yyr1[yyn];
   2949 
   2950   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
   2951   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
   2952     yystate = yytable[yystate];
   2953   else
   2954     yystate = yydefgoto[yyn - YYNTOKENS];
   2955 
   2956   goto yynewstate;
   2957 
   2958 
   2959 /*--------------------------------------.
   2960 | yyerrlab -- here on detecting error.  |
   2961 `--------------------------------------*/
   2962 yyerrlab:
   2963   /* Make sure we have latest lookahead translation.  See comments at
   2964      user semantic actions for why this is necessary.  */
   2965   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
   2966 
   2967   /* If not already recovering from an error, report this error.  */
   2968   if (!yyerrstatus)
   2969     {
   2970       ++yynerrs;
   2971 #if ! YYERROR_VERBOSE
   2972       yyerror (YY_("syntax error"));
   2973 #else
   2974 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
   2975                                         yyssp, yytoken)
   2976       {
   2977         char const *yymsgp = YY_("syntax error");
   2978         int yysyntax_error_status;
   2979         yysyntax_error_status = YYSYNTAX_ERROR;
   2980         if (yysyntax_error_status == 0)
   2981           yymsgp = yymsg;
   2982         else if (yysyntax_error_status == 1)
   2983           {
   2984             if (yymsg != yymsgbuf)
   2985               YYSTACK_FREE (yymsg);
   2986             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
   2987             if (!yymsg)
   2988               {
   2989                 yymsg = yymsgbuf;
   2990                 yymsg_alloc = sizeof yymsgbuf;
   2991                 yysyntax_error_status = 2;
   2992               }
   2993             else
   2994               {
   2995                 yysyntax_error_status = YYSYNTAX_ERROR;
   2996                 yymsgp = yymsg;
   2997               }
   2998           }
   2999         yyerror (yymsgp);
   3000         if (yysyntax_error_status == 2)
   3001           goto yyexhaustedlab;
   3002       }
   3003 # undef YYSYNTAX_ERROR
   3004 #endif
   3005     }
   3006 
   3007 
   3008 
   3009   if (yyerrstatus == 3)
   3010     {
   3011       /* If just tried and failed to reuse lookahead token after an
   3012          error, discard it.  */
   3013 
   3014       if (yychar <= YYEOF)
   3015         {
   3016           /* Return failure if at end of input.  */
   3017           if (yychar == YYEOF)
   3018             YYABORT;
   3019         }
   3020       else
   3021         {
   3022           yydestruct ("Error: discarding",
   3023                       yytoken, &yylval);
   3024           yychar = YYEMPTY;
   3025         }
   3026     }
   3027 
   3028   /* Else will try to reuse lookahead token after shifting the error
   3029      token.  */
   3030   goto yyerrlab1;
   3031 
   3032 
   3033 /*---------------------------------------------------.
   3034 | yyerrorlab -- error raised explicitly by YYERROR.  |
   3035 `---------------------------------------------------*/
   3036 yyerrorlab:
   3037 
   3038   /* Pacify compilers like GCC when the user code never invokes
   3039      YYERROR and the label yyerrorlab therefore never appears in user
   3040      code.  */
   3041   if (/*CONSTCOND*/ 0)
   3042      goto yyerrorlab;
   3043 
   3044   /* Do not reclaim the symbols of the rule whose action triggered
   3045      this YYERROR.  */
   3046   YYPOPSTACK (yylen);
   3047   yylen = 0;
   3048   YY_STACK_PRINT (yyss, yyssp);
   3049   yystate = *yyssp;
   3050   goto yyerrlab1;
   3051 
   3052 
   3053 /*-------------------------------------------------------------.
   3054 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   3055 `-------------------------------------------------------------*/
   3056 yyerrlab1:
   3057   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
   3058 
   3059   for (;;)
   3060     {
   3061       yyn = yypact[yystate];
   3062       if (!yypact_value_is_default (yyn))
   3063         {
   3064           yyn += YYTERROR;
   3065           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
   3066             {
   3067               yyn = yytable[yyn];
   3068               if (0 < yyn)
   3069                 break;
   3070             }
   3071         }
   3072 
   3073       /* Pop the current state because it cannot handle the error token.  */
   3074       if (yyssp == yyss)
   3075         YYABORT;
   3076 
   3077 
   3078       yydestruct ("Error: popping",
   3079                   yystos[yystate], yyvsp);
   3080       YYPOPSTACK (1);
   3081       yystate = *yyssp;
   3082       YY_STACK_PRINT (yyss, yyssp);
   3083     }
   3084 
   3085   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   3086   *++yyvsp = yylval;
   3087   YY_IGNORE_MAYBE_UNINITIALIZED_END
   3088 
   3089 
   3090   /* Shift the error token.  */
   3091   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
   3092 
   3093   yystate = yyn;
   3094   goto yynewstate;
   3095 
   3096 
   3097 /*-------------------------------------.
   3098 | yyacceptlab -- YYACCEPT comes here.  |
   3099 `-------------------------------------*/
   3100 yyacceptlab:
   3101   yyresult = 0;
   3102   goto yyreturn;
   3103 
   3104 /*-----------------------------------.
   3105 | yyabortlab -- YYABORT comes here.  |
   3106 `-----------------------------------*/
   3107 yyabortlab:
   3108   yyresult = 1;
   3109   goto yyreturn;
   3110 
   3111 #if !defined yyoverflow || YYERROR_VERBOSE
   3112 /*-------------------------------------------------.
   3113 | yyexhaustedlab -- memory exhaustion comes here.  |
   3114 `-------------------------------------------------*/
   3115 yyexhaustedlab:
   3116   yyerror (YY_("memory exhausted"));
   3117   yyresult = 2;
   3118   /* Fall through.  */
   3119 #endif
   3120 
   3121 yyreturn:
   3122   if (yychar != YYEMPTY)
   3123     {
   3124       /* Make sure we have latest lookahead translation.  See comments at
   3125          user semantic actions for why this is necessary.  */
   3126       yytoken = YYTRANSLATE (yychar);
   3127       yydestruct ("Cleanup: discarding lookahead",
   3128                   yytoken, &yylval);
   3129     }
   3130   /* Do not reclaim the symbols of the rule whose action triggered
   3131      this YYABORT or YYACCEPT.  */
   3132   YYPOPSTACK (yylen);
   3133   YY_STACK_PRINT (yyss, yyssp);
   3134   while (yyssp != yyss)
   3135     {
   3136       yydestruct ("Cleanup: popping",
   3137                   yystos[*yyssp], yyvsp);
   3138       YYPOPSTACK (1);
   3139     }
   3140 #ifndef yyoverflow
   3141   if (yyss != yyssa)
   3142     YYSTACK_FREE (yyss);
   3143 #endif
   3144 #if YYERROR_VERBOSE
   3145   if (yymsg != yymsgbuf)
   3146     YYSTACK_FREE (yymsg);
   3147 #endif
   3148   return yyresult;
   3149 }
   3150 #line 1057 "configparser.y" /* yacc.c:1906  */
   3151 
   3152 
   3153 /* parse helper routines could be here */
   3154