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