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