Coverage Report

Created: 2023-06-07 06:25

/src/unbound/util/configparser.c
Line
Count
Source (jump to first uncovered line)
1
/* A Bison parser, made by GNU Bison 3.5.1.  */
2
3
/* Bison implementation for Yacc-like parsers in C
4
5
   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6
   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 3 of the License, or
11
   (at your option) 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, see <http://www.gnu.org/licenses/>.  */
20
21
/* As a special exception, you may create a larger work that contains
22
   part or all of the Bison parser skeleton and distribute that work
23
   under terms of your choice, so long as that work isn't itself a
24
   parser generator using the skeleton or a modified version thereof
25
   as a parser skeleton.  Alternatively, if you modify or redistribute
26
   the parser skeleton itself, you may (at your option) remove this
27
   special exception, which will cause the skeleton and the resulting
28
   Bison output files to be licensed under the GNU General Public
29
   License without this special exception.
30
31
   This special exception was added by the Free Software Foundation in
32
   version 2.2 of Bison.  */
33
34
/* C LALR(1) parser skeleton written by Richard Stallman, by
35
   simplifying the original so-called "semantic" parser.  */
36
37
/* All symbols defined below should begin with yy or YY, to avoid
38
   infringing on user name space.  This should be done even for local
39
   variables, as they might otherwise be expanded by user macros.
40
   There are some unavoidable exceptions within include files to
41
   define necessary library symbols; they are noted "INFRINGES ON
42
   USER NAME SPACE" below.  */
43
44
/* Undocumented macros, especially those whose name start with YY_,
45
   are private implementation details.  Do not rely on them.  */
46
47
/* Identify Bison output.  */
48
#define YYBISON 1
49
50
/* Bison version.  */
51
#define YYBISON_VERSION "3.5.1"
52
53
/* Skeleton name.  */
54
#define YYSKELETON_NAME "yacc.c"
55
56
/* Pure parsers.  */
57
#define YYPURE 0
58
59
/* Push parsers.  */
60
#define YYPUSH 0
61
62
/* Pull parsers.  */
63
#define YYPULL 1
64
65
66
67
68
/* First part of user prologue.  */
69
#line 38 "./util/configparser.y"
70
71
#include "config.h"
72
73
#include <stdarg.h>
74
#include <stdio.h>
75
#include <string.h>
76
#include <stdlib.h>
77
#include <assert.h>
78
79
#include "util/configyyrename.h"
80
#include "util/config_file.h"
81
#include "util/net_help.h"
82
83
int ub_c_lex(void);
84
void ub_c_error(const char *message);
85
86
static void validate_respip_action(const char* action);
87
static void validate_acl_action(const char* action);
88
89
/* these need to be global, otherwise they cannot be used inside yacc */
90
extern struct config_parser_state* cfg_parser;
91
92
#if 0
93
#define OUTYY(s)  printf s /* used ONLY when debugging */
94
#else
95
#define OUTYY(s)
96
#endif
97
98
99
#line 100 "util/configparser.c"
100
101
# ifndef YY_CAST
102
#  ifdef __cplusplus
103
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
104
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
105
#  else
106
0
#   define YY_CAST(Type, Val) ((Type) (Val))
107
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
108
#  endif
109
# endif
110
# ifndef YY_NULLPTR
111
#  if defined __cplusplus
112
#   if 201103L <= __cplusplus
113
#    define YY_NULLPTR nullptr
114
#   else
115
#    define YY_NULLPTR 0
116
#   endif
117
#  else
118
#   define YY_NULLPTR ((void*)0)
119
#  endif
120
# endif
121
122
/* Enabling verbose error messages.  */
123
#ifdef YYERROR_VERBOSE
124
# undef YYERROR_VERBOSE
125
# define YYERROR_VERBOSE 1
126
#else
127
# define YYERROR_VERBOSE 0
128
#endif
129
130
/* Use api.header.include to #include this header
131
   instead of duplicating it here.  */
132
#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
133
# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
134
/* Debug traces.  */
135
#ifndef YYDEBUG
136
# define YYDEBUG 0
137
#endif
138
#if YYDEBUG
139
extern int yydebug;
140
#endif
141
142
/* Token type.  */
143
#ifndef YYTOKENTYPE
144
# define YYTOKENTYPE
145
  enum yytokentype
146
  {
147
    SPACE = 258,
148
    LETTER = 259,
149
    NEWLINE = 260,
150
    COMMENT = 261,
151
    COLON = 262,
152
    ANY = 263,
153
    ZONESTR = 264,
154
    STRING_ARG = 265,
155
    VAR_FORCE_TOPLEVEL = 266,
156
    VAR_SERVER = 267,
157
    VAR_VERBOSITY = 268,
158
    VAR_NUM_THREADS = 269,
159
    VAR_PORT = 270,
160
    VAR_OUTGOING_RANGE = 271,
161
    VAR_INTERFACE = 272,
162
    VAR_PREFER_IP4 = 273,
163
    VAR_DO_IP4 = 274,
164
    VAR_DO_IP6 = 275,
165
    VAR_DO_NAT64 = 276,
166
    VAR_PREFER_IP6 = 277,
167
    VAR_DO_UDP = 278,
168
    VAR_DO_TCP = 279,
169
    VAR_TCP_MSS = 280,
170
    VAR_OUTGOING_TCP_MSS = 281,
171
    VAR_TCP_IDLE_TIMEOUT = 282,
172
    VAR_EDNS_TCP_KEEPALIVE = 283,
173
    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 284,
174
    VAR_SOCK_QUEUE_TIMEOUT = 285,
175
    VAR_CHROOT = 286,
176
    VAR_USERNAME = 287,
177
    VAR_DIRECTORY = 288,
178
    VAR_LOGFILE = 289,
179
    VAR_PIDFILE = 290,
180
    VAR_MSG_CACHE_SIZE = 291,
181
    VAR_MSG_CACHE_SLABS = 292,
182
    VAR_NUM_QUERIES_PER_THREAD = 293,
183
    VAR_RRSET_CACHE_SIZE = 294,
184
    VAR_RRSET_CACHE_SLABS = 295,
185
    VAR_OUTGOING_NUM_TCP = 296,
186
    VAR_INFRA_HOST_TTL = 297,
187
    VAR_INFRA_LAME_TTL = 298,
188
    VAR_INFRA_CACHE_SLABS = 299,
189
    VAR_INFRA_CACHE_NUMHOSTS = 300,
190
    VAR_INFRA_CACHE_LAME_SIZE = 301,
191
    VAR_NAME = 302,
192
    VAR_STUB_ZONE = 303,
193
    VAR_STUB_HOST = 304,
194
    VAR_STUB_ADDR = 305,
195
    VAR_TARGET_FETCH_POLICY = 306,
196
    VAR_HARDEN_SHORT_BUFSIZE = 307,
197
    VAR_HARDEN_LARGE_QUERIES = 308,
198
    VAR_FORWARD_ZONE = 309,
199
    VAR_FORWARD_HOST = 310,
200
    VAR_FORWARD_ADDR = 311,
201
    VAR_DO_NOT_QUERY_ADDRESS = 312,
202
    VAR_HIDE_IDENTITY = 313,
203
    VAR_HIDE_VERSION = 314,
204
    VAR_IDENTITY = 315,
205
    VAR_VERSION = 316,
206
    VAR_HARDEN_GLUE = 317,
207
    VAR_MODULE_CONF = 318,
208
    VAR_TRUST_ANCHOR_FILE = 319,
209
    VAR_TRUST_ANCHOR = 320,
210
    VAR_VAL_OVERRIDE_DATE = 321,
211
    VAR_BOGUS_TTL = 322,
212
    VAR_VAL_CLEAN_ADDITIONAL = 323,
213
    VAR_VAL_PERMISSIVE_MODE = 324,
214
    VAR_INCOMING_NUM_TCP = 325,
215
    VAR_MSG_BUFFER_SIZE = 326,
216
    VAR_KEY_CACHE_SIZE = 327,
217
    VAR_KEY_CACHE_SLABS = 328,
218
    VAR_TRUSTED_KEYS_FILE = 329,
219
    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 330,
220
    VAR_USE_SYSLOG = 331,
221
    VAR_OUTGOING_INTERFACE = 332,
222
    VAR_ROOT_HINTS = 333,
223
    VAR_DO_NOT_QUERY_LOCALHOST = 334,
224
    VAR_CACHE_MAX_TTL = 335,
225
    VAR_HARDEN_DNSSEC_STRIPPED = 336,
226
    VAR_ACCESS_CONTROL = 337,
227
    VAR_LOCAL_ZONE = 338,
228
    VAR_LOCAL_DATA = 339,
229
    VAR_INTERFACE_AUTOMATIC = 340,
230
    VAR_STATISTICS_INTERVAL = 341,
231
    VAR_DO_DAEMONIZE = 342,
232
    VAR_USE_CAPS_FOR_ID = 343,
233
    VAR_STATISTICS_CUMULATIVE = 344,
234
    VAR_OUTGOING_PORT_PERMIT = 345,
235
    VAR_OUTGOING_PORT_AVOID = 346,
236
    VAR_DLV_ANCHOR_FILE = 347,
237
    VAR_DLV_ANCHOR = 348,
238
    VAR_NEG_CACHE_SIZE = 349,
239
    VAR_HARDEN_REFERRAL_PATH = 350,
240
    VAR_PRIVATE_ADDRESS = 351,
241
    VAR_PRIVATE_DOMAIN = 352,
242
    VAR_REMOTE_CONTROL = 353,
243
    VAR_CONTROL_ENABLE = 354,
244
    VAR_CONTROL_INTERFACE = 355,
245
    VAR_CONTROL_PORT = 356,
246
    VAR_SERVER_KEY_FILE = 357,
247
    VAR_SERVER_CERT_FILE = 358,
248
    VAR_CONTROL_KEY_FILE = 359,
249
    VAR_CONTROL_CERT_FILE = 360,
250
    VAR_CONTROL_USE_CERT = 361,
251
    VAR_TCP_REUSE_TIMEOUT = 362,
252
    VAR_MAX_REUSE_TCP_QUERIES = 363,
253
    VAR_EXTENDED_STATISTICS = 364,
254
    VAR_LOCAL_DATA_PTR = 365,
255
    VAR_JOSTLE_TIMEOUT = 366,
256
    VAR_STUB_PRIME = 367,
257
    VAR_UNWANTED_REPLY_THRESHOLD = 368,
258
    VAR_LOG_TIME_ASCII = 369,
259
    VAR_DOMAIN_INSECURE = 370,
260
    VAR_PYTHON = 371,
261
    VAR_PYTHON_SCRIPT = 372,
262
    VAR_VAL_SIG_SKEW_MIN = 373,
263
    VAR_VAL_SIG_SKEW_MAX = 374,
264
    VAR_VAL_MAX_RESTART = 375,
265
    VAR_CACHE_MIN_TTL = 376,
266
    VAR_VAL_LOG_LEVEL = 377,
267
    VAR_AUTO_TRUST_ANCHOR_FILE = 378,
268
    VAR_KEEP_MISSING = 379,
269
    VAR_ADD_HOLDDOWN = 380,
270
    VAR_DEL_HOLDDOWN = 381,
271
    VAR_SO_RCVBUF = 382,
272
    VAR_EDNS_BUFFER_SIZE = 383,
273
    VAR_PREFETCH = 384,
274
    VAR_PREFETCH_KEY = 385,
275
    VAR_SO_SNDBUF = 386,
276
    VAR_SO_REUSEPORT = 387,
277
    VAR_HARDEN_BELOW_NXDOMAIN = 388,
278
    VAR_IGNORE_CD_FLAG = 389,
279
    VAR_LOG_QUERIES = 390,
280
    VAR_LOG_REPLIES = 391,
281
    VAR_LOG_LOCAL_ACTIONS = 392,
282
    VAR_TCP_UPSTREAM = 393,
283
    VAR_SSL_UPSTREAM = 394,
284
    VAR_TCP_AUTH_QUERY_TIMEOUT = 395,
285
    VAR_SSL_SERVICE_KEY = 396,
286
    VAR_SSL_SERVICE_PEM = 397,
287
    VAR_SSL_PORT = 398,
288
    VAR_FORWARD_FIRST = 399,
289
    VAR_STUB_SSL_UPSTREAM = 400,
290
    VAR_FORWARD_SSL_UPSTREAM = 401,
291
    VAR_TLS_CERT_BUNDLE = 402,
292
    VAR_STUB_TCP_UPSTREAM = 403,
293
    VAR_FORWARD_TCP_UPSTREAM = 404,
294
    VAR_HTTPS_PORT = 405,
295
    VAR_HTTP_ENDPOINT = 406,
296
    VAR_HTTP_MAX_STREAMS = 407,
297
    VAR_HTTP_QUERY_BUFFER_SIZE = 408,
298
    VAR_HTTP_RESPONSE_BUFFER_SIZE = 409,
299
    VAR_HTTP_NODELAY = 410,
300
    VAR_HTTP_NOTLS_DOWNSTREAM = 411,
301
    VAR_STUB_FIRST = 412,
302
    VAR_MINIMAL_RESPONSES = 413,
303
    VAR_RRSET_ROUNDROBIN = 414,
304
    VAR_MAX_UDP_SIZE = 415,
305
    VAR_DELAY_CLOSE = 416,
306
    VAR_UDP_CONNECT = 417,
307
    VAR_UNBLOCK_LAN_ZONES = 418,
308
    VAR_INSECURE_LAN_ZONES = 419,
309
    VAR_INFRA_CACHE_MIN_RTT = 420,
310
    VAR_INFRA_CACHE_MAX_RTT = 421,
311
    VAR_INFRA_KEEP_PROBING = 422,
312
    VAR_DNS64_PREFIX = 423,
313
    VAR_DNS64_SYNTHALL = 424,
314
    VAR_DNS64_IGNORE_AAAA = 425,
315
    VAR_NAT64_PREFIX = 426,
316
    VAR_DNSTAP = 427,
317
    VAR_DNSTAP_ENABLE = 428,
318
    VAR_DNSTAP_SOCKET_PATH = 429,
319
    VAR_DNSTAP_IP = 430,
320
    VAR_DNSTAP_TLS = 431,
321
    VAR_DNSTAP_TLS_SERVER_NAME = 432,
322
    VAR_DNSTAP_TLS_CERT_BUNDLE = 433,
323
    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 434,
324
    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 435,
325
    VAR_DNSTAP_SEND_IDENTITY = 436,
326
    VAR_DNSTAP_SEND_VERSION = 437,
327
    VAR_DNSTAP_BIDIRECTIONAL = 438,
328
    VAR_DNSTAP_IDENTITY = 439,
329
    VAR_DNSTAP_VERSION = 440,
330
    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 441,
331
    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 442,
332
    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 443,
333
    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 444,
334
    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 445,
335
    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 446,
336
    VAR_RESPONSE_IP_TAG = 447,
337
    VAR_RESPONSE_IP = 448,
338
    VAR_RESPONSE_IP_DATA = 449,
339
    VAR_HARDEN_ALGO_DOWNGRADE = 450,
340
    VAR_IP_TRANSPARENT = 451,
341
    VAR_IP_DSCP = 452,
342
    VAR_DISABLE_DNSSEC_LAME_CHECK = 453,
343
    VAR_IP_RATELIMIT = 454,
344
    VAR_IP_RATELIMIT_SLABS = 455,
345
    VAR_IP_RATELIMIT_SIZE = 456,
346
    VAR_RATELIMIT = 457,
347
    VAR_RATELIMIT_SLABS = 458,
348
    VAR_RATELIMIT_SIZE = 459,
349
    VAR_OUTBOUND_MSG_RETRY = 460,
350
    VAR_MAX_SENT_COUNT = 461,
351
    VAR_MAX_QUERY_RESTARTS = 462,
352
    VAR_RATELIMIT_FOR_DOMAIN = 463,
353
    VAR_RATELIMIT_BELOW_DOMAIN = 464,
354
    VAR_IP_RATELIMIT_FACTOR = 465,
355
    VAR_RATELIMIT_FACTOR = 466,
356
    VAR_IP_RATELIMIT_BACKOFF = 467,
357
    VAR_RATELIMIT_BACKOFF = 468,
358
    VAR_SEND_CLIENT_SUBNET = 469,
359
    VAR_CLIENT_SUBNET_ZONE = 470,
360
    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 471,
361
    VAR_CLIENT_SUBNET_OPCODE = 472,
362
    VAR_MAX_CLIENT_SUBNET_IPV4 = 473,
363
    VAR_MAX_CLIENT_SUBNET_IPV6 = 474,
364
    VAR_MIN_CLIENT_SUBNET_IPV4 = 475,
365
    VAR_MIN_CLIENT_SUBNET_IPV6 = 476,
366
    VAR_MAX_ECS_TREE_SIZE_IPV4 = 477,
367
    VAR_MAX_ECS_TREE_SIZE_IPV6 = 478,
368
    VAR_CAPS_WHITELIST = 479,
369
    VAR_CACHE_MAX_NEGATIVE_TTL = 480,
370
    VAR_PERMIT_SMALL_HOLDDOWN = 481,
371
    VAR_QNAME_MINIMISATION = 482,
372
    VAR_QNAME_MINIMISATION_STRICT = 483,
373
    VAR_IP_FREEBIND = 484,
374
    VAR_DEFINE_TAG = 485,
375
    VAR_LOCAL_ZONE_TAG = 486,
376
    VAR_ACCESS_CONTROL_TAG = 487,
377
    VAR_LOCAL_ZONE_OVERRIDE = 488,
378
    VAR_ACCESS_CONTROL_TAG_ACTION = 489,
379
    VAR_ACCESS_CONTROL_TAG_DATA = 490,
380
    VAR_VIEW = 491,
381
    VAR_ACCESS_CONTROL_VIEW = 492,
382
    VAR_VIEW_FIRST = 493,
383
    VAR_SERVE_EXPIRED = 494,
384
    VAR_SERVE_EXPIRED_TTL = 495,
385
    VAR_SERVE_EXPIRED_TTL_RESET = 496,
386
    VAR_SERVE_EXPIRED_REPLY_TTL = 497,
387
    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 498,
388
    VAR_EDE_SERVE_EXPIRED = 499,
389
    VAR_SERVE_ORIGINAL_TTL = 500,
390
    VAR_FAKE_DSA = 501,
391
    VAR_FAKE_SHA1 = 502,
392
    VAR_LOG_IDENTITY = 503,
393
    VAR_HIDE_TRUSTANCHOR = 504,
394
    VAR_HIDE_HTTP_USER_AGENT = 505,
395
    VAR_HTTP_USER_AGENT = 506,
396
    VAR_TRUST_ANCHOR_SIGNALING = 507,
397
    VAR_AGGRESSIVE_NSEC = 508,
398
    VAR_USE_SYSTEMD = 509,
399
    VAR_SHM_ENABLE = 510,
400
    VAR_SHM_KEY = 511,
401
    VAR_ROOT_KEY_SENTINEL = 512,
402
    VAR_DNSCRYPT = 513,
403
    VAR_DNSCRYPT_ENABLE = 514,
404
    VAR_DNSCRYPT_PORT = 515,
405
    VAR_DNSCRYPT_PROVIDER = 516,
406
    VAR_DNSCRYPT_SECRET_KEY = 517,
407
    VAR_DNSCRYPT_PROVIDER_CERT = 518,
408
    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 519,
409
    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 520,
410
    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 521,
411
    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 522,
412
    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 523,
413
    VAR_PAD_RESPONSES = 524,
414
    VAR_PAD_RESPONSES_BLOCK_SIZE = 525,
415
    VAR_PAD_QUERIES = 526,
416
    VAR_PAD_QUERIES_BLOCK_SIZE = 527,
417
    VAR_IPSECMOD_ENABLED = 528,
418
    VAR_IPSECMOD_HOOK = 529,
419
    VAR_IPSECMOD_IGNORE_BOGUS = 530,
420
    VAR_IPSECMOD_MAX_TTL = 531,
421
    VAR_IPSECMOD_WHITELIST = 532,
422
    VAR_IPSECMOD_STRICT = 533,
423
    VAR_CACHEDB = 534,
424
    VAR_CACHEDB_BACKEND = 535,
425
    VAR_CACHEDB_SECRETSEED = 536,
426
    VAR_CACHEDB_REDISHOST = 537,
427
    VAR_CACHEDB_REDISPORT = 538,
428
    VAR_CACHEDB_REDISTIMEOUT = 539,
429
    VAR_CACHEDB_REDISEXPIRERECORDS = 540,
430
    VAR_CACHEDB_REDISPATH = 541,
431
    VAR_CACHEDB_REDISPASSWORD = 542,
432
    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 543,
433
    VAR_FOR_UPSTREAM = 544,
434
    VAR_AUTH_ZONE = 545,
435
    VAR_ZONEFILE = 546,
436
    VAR_MASTER = 547,
437
    VAR_URL = 548,
438
    VAR_FOR_DOWNSTREAM = 549,
439
    VAR_FALLBACK_ENABLED = 550,
440
    VAR_TLS_ADDITIONAL_PORT = 551,
441
    VAR_LOW_RTT = 552,
442
    VAR_LOW_RTT_PERMIL = 553,
443
    VAR_FAST_SERVER_PERMIL = 554,
444
    VAR_FAST_SERVER_NUM = 555,
445
    VAR_ALLOW_NOTIFY = 556,
446
    VAR_TLS_WIN_CERT = 557,
447
    VAR_TCP_CONNECTION_LIMIT = 558,
448
    VAR_FORWARD_NO_CACHE = 559,
449
    VAR_STUB_NO_CACHE = 560,
450
    VAR_LOG_SERVFAIL = 561,
451
    VAR_DENY_ANY = 562,
452
    VAR_UNKNOWN_SERVER_TIME_LIMIT = 563,
453
    VAR_LOG_TAG_QUERYREPLY = 564,
454
    VAR_STREAM_WAIT_SIZE = 565,
455
    VAR_TLS_CIPHERS = 566,
456
    VAR_TLS_CIPHERSUITES = 567,
457
    VAR_TLS_USE_SNI = 568,
458
    VAR_IPSET = 569,
459
    VAR_IPSET_NAME_V4 = 570,
460
    VAR_IPSET_NAME_V6 = 571,
461
    VAR_TLS_SESSION_TICKET_KEYS = 572,
462
    VAR_RPZ = 573,
463
    VAR_TAGS = 574,
464
    VAR_RPZ_ACTION_OVERRIDE = 575,
465
    VAR_RPZ_CNAME_OVERRIDE = 576,
466
    VAR_RPZ_LOG = 577,
467
    VAR_RPZ_LOG_NAME = 578,
468
    VAR_DYNLIB = 579,
469
    VAR_DYNLIB_FILE = 580,
470
    VAR_EDNS_CLIENT_STRING = 581,
471
    VAR_EDNS_CLIENT_STRING_OPCODE = 582,
472
    VAR_NSID = 583,
473
    VAR_ZONEMD_PERMISSIVE_MODE = 584,
474
    VAR_ZONEMD_CHECK = 585,
475
    VAR_ZONEMD_REJECT_ABSENCE = 586,
476
    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 587,
477
    VAR_INTERFACE_AUTOMATIC_PORTS = 588,
478
    VAR_EDE = 589,
479
    VAR_INTERFACE_ACTION = 590,
480
    VAR_INTERFACE_VIEW = 591,
481
    VAR_INTERFACE_TAG = 592,
482
    VAR_INTERFACE_TAG_ACTION = 593,
483
    VAR_INTERFACE_TAG_DATA = 594,
484
    VAR_PROXY_PROTOCOL_PORT = 595,
485
    VAR_STATISTICS_INHIBIT_ZERO = 596,
486
    VAR_HARDEN_UNKNOWN_ADDITIONAL = 597
487
  };
488
#endif
489
/* Tokens.  */
490
#define SPACE 258
491
#define LETTER 259
492
#define NEWLINE 260
493
#define COMMENT 261
494
#define COLON 262
495
#define ANY 263
496
#define ZONESTR 264
497
#define STRING_ARG 265
498
#define VAR_FORCE_TOPLEVEL 266
499
#define VAR_SERVER 267
500
#define VAR_VERBOSITY 268
501
#define VAR_NUM_THREADS 269
502
#define VAR_PORT 270
503
#define VAR_OUTGOING_RANGE 271
504
#define VAR_INTERFACE 272
505
#define VAR_PREFER_IP4 273
506
#define VAR_DO_IP4 274
507
#define VAR_DO_IP6 275
508
#define VAR_DO_NAT64 276
509
#define VAR_PREFER_IP6 277
510
#define VAR_DO_UDP 278
511
#define VAR_DO_TCP 279
512
#define VAR_TCP_MSS 280
513
#define VAR_OUTGOING_TCP_MSS 281
514
#define VAR_TCP_IDLE_TIMEOUT 282
515
#define VAR_EDNS_TCP_KEEPALIVE 283
516
#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 284
517
#define VAR_SOCK_QUEUE_TIMEOUT 285
518
#define VAR_CHROOT 286
519
#define VAR_USERNAME 287
520
#define VAR_DIRECTORY 288
521
#define VAR_LOGFILE 289
522
#define VAR_PIDFILE 290
523
#define VAR_MSG_CACHE_SIZE 291
524
#define VAR_MSG_CACHE_SLABS 292
525
#define VAR_NUM_QUERIES_PER_THREAD 293
526
#define VAR_RRSET_CACHE_SIZE 294
527
#define VAR_RRSET_CACHE_SLABS 295
528
#define VAR_OUTGOING_NUM_TCP 296
529
#define VAR_INFRA_HOST_TTL 297
530
#define VAR_INFRA_LAME_TTL 298
531
#define VAR_INFRA_CACHE_SLABS 299
532
#define VAR_INFRA_CACHE_NUMHOSTS 300
533
#define VAR_INFRA_CACHE_LAME_SIZE 301
534
#define VAR_NAME 302
535
#define VAR_STUB_ZONE 303
536
#define VAR_STUB_HOST 304
537
#define VAR_STUB_ADDR 305
538
#define VAR_TARGET_FETCH_POLICY 306
539
#define VAR_HARDEN_SHORT_BUFSIZE 307
540
#define VAR_HARDEN_LARGE_QUERIES 308
541
#define VAR_FORWARD_ZONE 309
542
#define VAR_FORWARD_HOST 310
543
#define VAR_FORWARD_ADDR 311
544
#define VAR_DO_NOT_QUERY_ADDRESS 312
545
#define VAR_HIDE_IDENTITY 313
546
#define VAR_HIDE_VERSION 314
547
#define VAR_IDENTITY 315
548
#define VAR_VERSION 316
549
#define VAR_HARDEN_GLUE 317
550
#define VAR_MODULE_CONF 318
551
#define VAR_TRUST_ANCHOR_FILE 319
552
#define VAR_TRUST_ANCHOR 320
553
#define VAR_VAL_OVERRIDE_DATE 321
554
#define VAR_BOGUS_TTL 322
555
#define VAR_VAL_CLEAN_ADDITIONAL 323
556
#define VAR_VAL_PERMISSIVE_MODE 324
557
#define VAR_INCOMING_NUM_TCP 325
558
#define VAR_MSG_BUFFER_SIZE 326
559
#define VAR_KEY_CACHE_SIZE 327
560
#define VAR_KEY_CACHE_SLABS 328
561
#define VAR_TRUSTED_KEYS_FILE 329
562
#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 330
563
#define VAR_USE_SYSLOG 331
564
#define VAR_OUTGOING_INTERFACE 332
565
#define VAR_ROOT_HINTS 333
566
#define VAR_DO_NOT_QUERY_LOCALHOST 334
567
#define VAR_CACHE_MAX_TTL 335
568
#define VAR_HARDEN_DNSSEC_STRIPPED 336
569
#define VAR_ACCESS_CONTROL 337
570
#define VAR_LOCAL_ZONE 338
571
#define VAR_LOCAL_DATA 339
572
#define VAR_INTERFACE_AUTOMATIC 340
573
#define VAR_STATISTICS_INTERVAL 341
574
#define VAR_DO_DAEMONIZE 342
575
#define VAR_USE_CAPS_FOR_ID 343
576
#define VAR_STATISTICS_CUMULATIVE 344
577
#define VAR_OUTGOING_PORT_PERMIT 345
578
#define VAR_OUTGOING_PORT_AVOID 346
579
#define VAR_DLV_ANCHOR_FILE 347
580
#define VAR_DLV_ANCHOR 348
581
#define VAR_NEG_CACHE_SIZE 349
582
#define VAR_HARDEN_REFERRAL_PATH 350
583
#define VAR_PRIVATE_ADDRESS 351
584
#define VAR_PRIVATE_DOMAIN 352
585
#define VAR_REMOTE_CONTROL 353
586
#define VAR_CONTROL_ENABLE 354
587
#define VAR_CONTROL_INTERFACE 355
588
#define VAR_CONTROL_PORT 356
589
#define VAR_SERVER_KEY_FILE 357
590
#define VAR_SERVER_CERT_FILE 358
591
#define VAR_CONTROL_KEY_FILE 359
592
#define VAR_CONTROL_CERT_FILE 360
593
#define VAR_CONTROL_USE_CERT 361
594
#define VAR_TCP_REUSE_TIMEOUT 362
595
#define VAR_MAX_REUSE_TCP_QUERIES 363
596
#define VAR_EXTENDED_STATISTICS 364
597
#define VAR_LOCAL_DATA_PTR 365
598
#define VAR_JOSTLE_TIMEOUT 366
599
#define VAR_STUB_PRIME 367
600
#define VAR_UNWANTED_REPLY_THRESHOLD 368
601
#define VAR_LOG_TIME_ASCII 369
602
#define VAR_DOMAIN_INSECURE 370
603
#define VAR_PYTHON 371
604
#define VAR_PYTHON_SCRIPT 372
605
#define VAR_VAL_SIG_SKEW_MIN 373
606
#define VAR_VAL_SIG_SKEW_MAX 374
607
#define VAR_VAL_MAX_RESTART 375
608
#define VAR_CACHE_MIN_TTL 376
609
#define VAR_VAL_LOG_LEVEL 377
610
#define VAR_AUTO_TRUST_ANCHOR_FILE 378
611
#define VAR_KEEP_MISSING 379
612
#define VAR_ADD_HOLDDOWN 380
613
#define VAR_DEL_HOLDDOWN 381
614
#define VAR_SO_RCVBUF 382
615
#define VAR_EDNS_BUFFER_SIZE 383
616
#define VAR_PREFETCH 384
617
#define VAR_PREFETCH_KEY 385
618
#define VAR_SO_SNDBUF 386
619
#define VAR_SO_REUSEPORT 387
620
#define VAR_HARDEN_BELOW_NXDOMAIN 388
621
#define VAR_IGNORE_CD_FLAG 389
622
#define VAR_LOG_QUERIES 390
623
#define VAR_LOG_REPLIES 391
624
#define VAR_LOG_LOCAL_ACTIONS 392
625
#define VAR_TCP_UPSTREAM 393
626
#define VAR_SSL_UPSTREAM 394
627
#define VAR_TCP_AUTH_QUERY_TIMEOUT 395
628
#define VAR_SSL_SERVICE_KEY 396
629
#define VAR_SSL_SERVICE_PEM 397
630
#define VAR_SSL_PORT 398
631
#define VAR_FORWARD_FIRST 399
632
#define VAR_STUB_SSL_UPSTREAM 400
633
#define VAR_FORWARD_SSL_UPSTREAM 401
634
#define VAR_TLS_CERT_BUNDLE 402
635
#define VAR_STUB_TCP_UPSTREAM 403
636
#define VAR_FORWARD_TCP_UPSTREAM 404
637
#define VAR_HTTPS_PORT 405
638
#define VAR_HTTP_ENDPOINT 406
639
#define VAR_HTTP_MAX_STREAMS 407
640
#define VAR_HTTP_QUERY_BUFFER_SIZE 408
641
#define VAR_HTTP_RESPONSE_BUFFER_SIZE 409
642
#define VAR_HTTP_NODELAY 410
643
#define VAR_HTTP_NOTLS_DOWNSTREAM 411
644
#define VAR_STUB_FIRST 412
645
#define VAR_MINIMAL_RESPONSES 413
646
#define VAR_RRSET_ROUNDROBIN 414
647
#define VAR_MAX_UDP_SIZE 415
648
#define VAR_DELAY_CLOSE 416
649
#define VAR_UDP_CONNECT 417
650
#define VAR_UNBLOCK_LAN_ZONES 418
651
#define VAR_INSECURE_LAN_ZONES 419
652
#define VAR_INFRA_CACHE_MIN_RTT 420
653
#define VAR_INFRA_CACHE_MAX_RTT 421
654
#define VAR_INFRA_KEEP_PROBING 422
655
#define VAR_DNS64_PREFIX 423
656
#define VAR_DNS64_SYNTHALL 424
657
#define VAR_DNS64_IGNORE_AAAA 425
658
#define VAR_NAT64_PREFIX 426
659
#define VAR_DNSTAP 427
660
#define VAR_DNSTAP_ENABLE 428
661
#define VAR_DNSTAP_SOCKET_PATH 429
662
#define VAR_DNSTAP_IP 430
663
#define VAR_DNSTAP_TLS 431
664
#define VAR_DNSTAP_TLS_SERVER_NAME 432
665
#define VAR_DNSTAP_TLS_CERT_BUNDLE 433
666
#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 434
667
#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 435
668
#define VAR_DNSTAP_SEND_IDENTITY 436
669
#define VAR_DNSTAP_SEND_VERSION 437
670
#define VAR_DNSTAP_BIDIRECTIONAL 438
671
#define VAR_DNSTAP_IDENTITY 439
672
#define VAR_DNSTAP_VERSION 440
673
#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 441
674
#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 442
675
#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 443
676
#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 444
677
#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 445
678
#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 446
679
#define VAR_RESPONSE_IP_TAG 447
680
#define VAR_RESPONSE_IP 448
681
#define VAR_RESPONSE_IP_DATA 449
682
#define VAR_HARDEN_ALGO_DOWNGRADE 450
683
#define VAR_IP_TRANSPARENT 451
684
#define VAR_IP_DSCP 452
685
#define VAR_DISABLE_DNSSEC_LAME_CHECK 453
686
#define VAR_IP_RATELIMIT 454
687
#define VAR_IP_RATELIMIT_SLABS 455
688
#define VAR_IP_RATELIMIT_SIZE 456
689
#define VAR_RATELIMIT 457
690
#define VAR_RATELIMIT_SLABS 458
691
#define VAR_RATELIMIT_SIZE 459
692
#define VAR_OUTBOUND_MSG_RETRY 460
693
#define VAR_MAX_SENT_COUNT 461
694
#define VAR_MAX_QUERY_RESTARTS 462
695
#define VAR_RATELIMIT_FOR_DOMAIN 463
696
#define VAR_RATELIMIT_BELOW_DOMAIN 464
697
#define VAR_IP_RATELIMIT_FACTOR 465
698
#define VAR_RATELIMIT_FACTOR 466
699
#define VAR_IP_RATELIMIT_BACKOFF 467
700
#define VAR_RATELIMIT_BACKOFF 468
701
#define VAR_SEND_CLIENT_SUBNET 469
702
#define VAR_CLIENT_SUBNET_ZONE 470
703
#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 471
704
#define VAR_CLIENT_SUBNET_OPCODE 472
705
#define VAR_MAX_CLIENT_SUBNET_IPV4 473
706
#define VAR_MAX_CLIENT_SUBNET_IPV6 474
707
#define VAR_MIN_CLIENT_SUBNET_IPV4 475
708
#define VAR_MIN_CLIENT_SUBNET_IPV6 476
709
#define VAR_MAX_ECS_TREE_SIZE_IPV4 477
710
#define VAR_MAX_ECS_TREE_SIZE_IPV6 478
711
#define VAR_CAPS_WHITELIST 479
712
#define VAR_CACHE_MAX_NEGATIVE_TTL 480
713
#define VAR_PERMIT_SMALL_HOLDDOWN 481
714
#define VAR_QNAME_MINIMISATION 482
715
#define VAR_QNAME_MINIMISATION_STRICT 483
716
#define VAR_IP_FREEBIND 484
717
#define VAR_DEFINE_TAG 485
718
#define VAR_LOCAL_ZONE_TAG 486
719
#define VAR_ACCESS_CONTROL_TAG 487
720
#define VAR_LOCAL_ZONE_OVERRIDE 488
721
#define VAR_ACCESS_CONTROL_TAG_ACTION 489
722
#define VAR_ACCESS_CONTROL_TAG_DATA 490
723
#define VAR_VIEW 491
724
#define VAR_ACCESS_CONTROL_VIEW 492
725
#define VAR_VIEW_FIRST 493
726
#define VAR_SERVE_EXPIRED 494
727
#define VAR_SERVE_EXPIRED_TTL 495
728
#define VAR_SERVE_EXPIRED_TTL_RESET 496
729
#define VAR_SERVE_EXPIRED_REPLY_TTL 497
730
#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 498
731
#define VAR_EDE_SERVE_EXPIRED 499
732
#define VAR_SERVE_ORIGINAL_TTL 500
733
#define VAR_FAKE_DSA 501
734
#define VAR_FAKE_SHA1 502
735
#define VAR_LOG_IDENTITY 503
736
#define VAR_HIDE_TRUSTANCHOR 504
737
#define VAR_HIDE_HTTP_USER_AGENT 505
738
#define VAR_HTTP_USER_AGENT 506
739
#define VAR_TRUST_ANCHOR_SIGNALING 507
740
#define VAR_AGGRESSIVE_NSEC 508
741
#define VAR_USE_SYSTEMD 509
742
#define VAR_SHM_ENABLE 510
743
#define VAR_SHM_KEY 511
744
#define VAR_ROOT_KEY_SENTINEL 512
745
#define VAR_DNSCRYPT 513
746
#define VAR_DNSCRYPT_ENABLE 514
747
#define VAR_DNSCRYPT_PORT 515
748
#define VAR_DNSCRYPT_PROVIDER 516
749
#define VAR_DNSCRYPT_SECRET_KEY 517
750
#define VAR_DNSCRYPT_PROVIDER_CERT 518
751
#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 519
752
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 520
753
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 521
754
#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 522
755
#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 523
756
#define VAR_PAD_RESPONSES 524
757
#define VAR_PAD_RESPONSES_BLOCK_SIZE 525
758
#define VAR_PAD_QUERIES 526
759
#define VAR_PAD_QUERIES_BLOCK_SIZE 527
760
#define VAR_IPSECMOD_ENABLED 528
761
#define VAR_IPSECMOD_HOOK 529
762
#define VAR_IPSECMOD_IGNORE_BOGUS 530
763
#define VAR_IPSECMOD_MAX_TTL 531
764
#define VAR_IPSECMOD_WHITELIST 532
765
#define VAR_IPSECMOD_STRICT 533
766
#define VAR_CACHEDB 534
767
#define VAR_CACHEDB_BACKEND 535
768
#define VAR_CACHEDB_SECRETSEED 536
769
#define VAR_CACHEDB_REDISHOST 537
770
#define VAR_CACHEDB_REDISPORT 538
771
#define VAR_CACHEDB_REDISTIMEOUT 539
772
#define VAR_CACHEDB_REDISEXPIRERECORDS 540
773
#define VAR_CACHEDB_REDISPATH 541
774
#define VAR_CACHEDB_REDISPASSWORD 542
775
#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 543
776
#define VAR_FOR_UPSTREAM 544
777
#define VAR_AUTH_ZONE 545
778
#define VAR_ZONEFILE 546
779
#define VAR_MASTER 547
780
#define VAR_URL 548
781
#define VAR_FOR_DOWNSTREAM 549
782
#define VAR_FALLBACK_ENABLED 550
783
#define VAR_TLS_ADDITIONAL_PORT 551
784
#define VAR_LOW_RTT 552
785
#define VAR_LOW_RTT_PERMIL 553
786
#define VAR_FAST_SERVER_PERMIL 554
787
#define VAR_FAST_SERVER_NUM 555
788
#define VAR_ALLOW_NOTIFY 556
789
#define VAR_TLS_WIN_CERT 557
790
#define VAR_TCP_CONNECTION_LIMIT 558
791
#define VAR_FORWARD_NO_CACHE 559
792
#define VAR_STUB_NO_CACHE 560
793
#define VAR_LOG_SERVFAIL 561
794
#define VAR_DENY_ANY 562
795
#define VAR_UNKNOWN_SERVER_TIME_LIMIT 563
796
#define VAR_LOG_TAG_QUERYREPLY 564
797
#define VAR_STREAM_WAIT_SIZE 565
798
#define VAR_TLS_CIPHERS 566
799
#define VAR_TLS_CIPHERSUITES 567
800
#define VAR_TLS_USE_SNI 568
801
#define VAR_IPSET 569
802
#define VAR_IPSET_NAME_V4 570
803
#define VAR_IPSET_NAME_V6 571
804
#define VAR_TLS_SESSION_TICKET_KEYS 572
805
#define VAR_RPZ 573
806
#define VAR_TAGS 574
807
#define VAR_RPZ_ACTION_OVERRIDE 575
808
#define VAR_RPZ_CNAME_OVERRIDE 576
809
#define VAR_RPZ_LOG 577
810
#define VAR_RPZ_LOG_NAME 578
811
#define VAR_DYNLIB 579
812
#define VAR_DYNLIB_FILE 580
813
#define VAR_EDNS_CLIENT_STRING 581
814
#define VAR_EDNS_CLIENT_STRING_OPCODE 582
815
#define VAR_NSID 583
816
#define VAR_ZONEMD_PERMISSIVE_MODE 584
817
#define VAR_ZONEMD_CHECK 585
818
#define VAR_ZONEMD_REJECT_ABSENCE 586
819
#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 587
820
#define VAR_INTERFACE_AUTOMATIC_PORTS 588
821
#define VAR_EDE 589
822
#define VAR_INTERFACE_ACTION 590
823
#define VAR_INTERFACE_VIEW 591
824
#define VAR_INTERFACE_TAG 592
825
#define VAR_INTERFACE_TAG_ACTION 593
826
#define VAR_INTERFACE_TAG_DATA 594
827
#define VAR_PROXY_PROTOCOL_PORT 595
828
#define VAR_STATISTICS_INHIBIT_ZERO 596
829
#define VAR_HARDEN_UNKNOWN_ADDITIONAL 597
830
831
/* Value type.  */
832
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
833
union YYSTYPE
834
{
835
#line 67 "./util/configparser.y"
836
837
  char* str;
838
839
#line 840 "util/configparser.c"
840
841
};
842
typedef union YYSTYPE YYSTYPE;
843
# define YYSTYPE_IS_TRIVIAL 1
844
# define YYSTYPE_IS_DECLARED 1
845
#endif
846
847
848
extern YYSTYPE yylval;
849
850
int yyparse (void);
851
852
#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
853
854
855
856
#ifdef short
857
# undef short
858
#endif
859
860
/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
861
   <limits.h> and (if available) <stdint.h> are included
862
   so that the code can choose integer types of a good width.  */
863
864
#ifndef __PTRDIFF_MAX__
865
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
866
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
867
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
868
#  define YY_STDINT_H
869
# endif
870
#endif
871
872
/* Narrow types that promote to a signed type and that can represent a
873
   signed or unsigned integer of at least N bits.  In tables they can
874
   save space and decrease cache pressure.  Promoting to a signed type
875
   helps avoid bugs in integer arithmetic.  */
876
877
#ifdef __INT_LEAST8_MAX__
878
typedef __INT_LEAST8_TYPE__ yytype_int8;
879
#elif defined YY_STDINT_H
880
typedef int_least8_t yytype_int8;
881
#else
882
typedef signed char yytype_int8;
883
#endif
884
885
#ifdef __INT_LEAST16_MAX__
886
typedef __INT_LEAST16_TYPE__ yytype_int16;
887
#elif defined YY_STDINT_H
888
typedef int_least16_t yytype_int16;
889
#else
890
typedef short yytype_int16;
891
#endif
892
893
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
894
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
895
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
896
       && UINT_LEAST8_MAX <= INT_MAX)
897
typedef uint_least8_t yytype_uint8;
898
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
899
typedef unsigned char yytype_uint8;
900
#else
901
typedef short yytype_uint8;
902
#endif
903
904
#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
905
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
906
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
907
       && UINT_LEAST16_MAX <= INT_MAX)
908
typedef uint_least16_t yytype_uint16;
909
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
910
typedef unsigned short yytype_uint16;
911
#else
912
typedef int yytype_uint16;
913
#endif
914
915
#ifndef YYPTRDIFF_T
916
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
917
0
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
918
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
919
# elif defined PTRDIFF_MAX
920
#  ifndef ptrdiff_t
921
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
922
#  endif
923
#  define YYPTRDIFF_T ptrdiff_t
924
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
925
# else
926
#  define YYPTRDIFF_T long
927
#  define YYPTRDIFF_MAXIMUM LONG_MAX
928
# endif
929
#endif
930
931
#ifndef YYSIZE_T
932
# ifdef __SIZE_TYPE__
933
#  define YYSIZE_T __SIZE_TYPE__
934
# elif defined size_t
935
#  define YYSIZE_T size_t
936
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
937
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
938
#  define YYSIZE_T size_t
939
# else
940
#  define YYSIZE_T unsigned
941
# endif
942
#endif
943
944
#define YYSIZE_MAXIMUM                                  \
945
  YY_CAST (YYPTRDIFF_T,                                 \
946
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
947
            ? YYPTRDIFF_MAXIMUM                         \
948
            : YY_CAST (YYSIZE_T, -1)))
949
950
0
#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
951
952
/* Stored state numbers (used for stacks). */
953
typedef yytype_int16 yy_state_t;
954
955
/* State numbers in computations.  */
956
typedef int yy_state_fast_t;
957
958
#ifndef YY_
959
# if defined YYENABLE_NLS && YYENABLE_NLS
960
#  if ENABLE_NLS
961
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
962
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
963
#  endif
964
# endif
965
# ifndef YY_
966
0
#  define YY_(Msgid) Msgid
967
# endif
968
#endif
969
970
#ifndef YY_ATTRIBUTE_PURE
971
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
972
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
973
# else
974
#  define YY_ATTRIBUTE_PURE
975
# endif
976
#endif
977
978
#ifndef YY_ATTRIBUTE_UNUSED
979
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
980
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
981
# else
982
#  define YY_ATTRIBUTE_UNUSED
983
# endif
984
#endif
985
986
/* Suppress unused-variable warnings by "using" E.  */
987
#if ! defined lint || defined __GNUC__
988
0
# define YYUSE(E) ((void) (E))
989
#else
990
# define YYUSE(E) /* empty */
991
#endif
992
993
#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
994
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
995
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
996
    _Pragma ("GCC diagnostic push")                                     \
997
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
998
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
999
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
1000
    _Pragma ("GCC diagnostic pop")
1001
#else
1002
# define YY_INITIAL_VALUE(Value) Value
1003
#endif
1004
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1005
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1006
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1007
#endif
1008
#ifndef YY_INITIAL_VALUE
1009
# define YY_INITIAL_VALUE(Value) /* Nothing. */
1010
#endif
1011
1012
#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1013
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
1014
    _Pragma ("GCC diagnostic push")                            \
1015
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1016
# define YY_IGNORE_USELESS_CAST_END            \
1017
    _Pragma ("GCC diagnostic pop")
1018
#endif
1019
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1020
# define YY_IGNORE_USELESS_CAST_BEGIN
1021
# define YY_IGNORE_USELESS_CAST_END
1022
#endif
1023
1024
1025
0
#define YY_ASSERT(E) ((void) (0 && (E)))
1026
1027
#if ! defined yyoverflow || YYERROR_VERBOSE
1028
1029
/* The parser invokes alloca or malloc; define the necessary symbols.  */
1030
1031
# ifdef YYSTACK_USE_ALLOCA
1032
#  if YYSTACK_USE_ALLOCA
1033
#   ifdef __GNUC__
1034
#    define YYSTACK_ALLOC __builtin_alloca
1035
#   elif defined __BUILTIN_VA_ARG_INCR
1036
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1037
#   elif defined _AIX
1038
#    define YYSTACK_ALLOC __alloca
1039
#   elif defined _MSC_VER
1040
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1041
#    define alloca _alloca
1042
#   else
1043
#    define YYSTACK_ALLOC alloca
1044
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1045
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1046
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
1047
#     ifndef EXIT_SUCCESS
1048
#      define EXIT_SUCCESS 0
1049
#     endif
1050
#    endif
1051
#   endif
1052
#  endif
1053
# endif
1054
1055
# ifdef YYSTACK_ALLOC
1056
   /* Pacify GCC's 'empty if-body' warning.  */
1057
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1058
#  ifndef YYSTACK_ALLOC_MAXIMUM
1059
    /* The OS might guarantee only one guard page at the bottom of the stack,
1060
       and a page size can be as small as 4096 bytes.  So we cannot safely
1061
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1062
       to allow for a few compiler-allocated temporary stack slots.  */
1063
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1064
#  endif
1065
# else
1066
#  define YYSTACK_ALLOC YYMALLOC
1067
0
#  define YYSTACK_FREE YYFREE
1068
#  ifndef YYSTACK_ALLOC_MAXIMUM
1069
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1070
#  endif
1071
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1072
       && ! ((defined YYMALLOC || defined malloc) \
1073
             && (defined YYFREE || defined free)))
1074
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1075
#   ifndef EXIT_SUCCESS
1076
#    define EXIT_SUCCESS 0
1077
#   endif
1078
#  endif
1079
#  ifndef YYMALLOC
1080
#   define YYMALLOC malloc
1081
#   if ! defined malloc && ! defined EXIT_SUCCESS
1082
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1083
#   endif
1084
#  endif
1085
#  ifndef YYFREE
1086
0
#   define YYFREE free
1087
#   if ! defined free && ! defined EXIT_SUCCESS
1088
void free (void *); /* INFRINGES ON USER NAME SPACE */
1089
#   endif
1090
#  endif
1091
# endif
1092
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
1093
1094
1095
#if (! defined yyoverflow \
1096
     && (! defined __cplusplus \
1097
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1098
1099
/* A type that is properly aligned for any stack member.  */
1100
union yyalloc
1101
{
1102
  yy_state_t yyss_alloc;
1103
  YYSTYPE yyvs_alloc;
1104
};
1105
1106
/* The size of the maximum gap between one aligned stack and the next.  */
1107
0
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1108
1109
/* The size of an array large to enough to hold all stacks, each with
1110
   N elements.  */
1111
# define YYSTACK_BYTES(N) \
1112
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1113
      + YYSTACK_GAP_MAXIMUM)
1114
1115
# define YYCOPY_NEEDED 1
1116
1117
/* Relocate STACK from its old location to the new one.  The
1118
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
1119
   elements in the stack, and YYPTR gives the new location of the
1120
   stack.  Advance YYPTR to a properly aligned location for the next
1121
   stack.  */
1122
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
1123
0
    do                                                                  \
1124
0
      {                                                                 \
1125
0
        YYPTRDIFF_T yynewbytes;                                         \
1126
0
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
1127
0
        Stack = &yyptr->Stack_alloc;                                    \
1128
0
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1129
0
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
1130
0
      }                                                                 \
1131
0
    while (0)
1132
1133
#endif
1134
1135
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1136
/* Copy COUNT objects from SRC to DST.  The source and destination do
1137
   not overlap.  */
1138
# ifndef YYCOPY
1139
#  if defined __GNUC__ && 1 < __GNUC__
1140
#   define YYCOPY(Dst, Src, Count) \
1141
0
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1142
#  else
1143
#   define YYCOPY(Dst, Src, Count)              \
1144
      do                                        \
1145
        {                                       \
1146
          YYPTRDIFF_T yyi;                      \
1147
          for (yyi = 0; yyi < (Count); yyi++)   \
1148
            (Dst)[yyi] = (Src)[yyi];            \
1149
        }                                       \
1150
      while (0)
1151
#  endif
1152
# endif
1153
#endif /* !YYCOPY_NEEDED */
1154
1155
/* YYFINAL -- State number of the termination state.  */
1156
0
#define YYFINAL  2
1157
/* YYLAST -- Last index in YYTABLE.  */
1158
0
#define YYLAST   731
1159
1160
/* YYNTOKENS -- Number of terminals.  */
1161
0
#define YYNTOKENS  343
1162
/* YYNNTS -- Number of nonterminals.  */
1163
#define YYNNTS  368
1164
/* YYNRULES -- Number of rules.  */
1165
#define YYNRULES  713
1166
/* YYNSTATES -- Number of states.  */
1167
#define YYNSTATES  1067
1168
1169
0
#define YYUNDEFTOK  2
1170
0
#define YYMAXUTOK   597
1171
1172
1173
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1174
   as returned by yylex, with out-of-bounds checking.  */
1175
#define YYTRANSLATE(YYX)                                                \
1176
0
  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1177
1178
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1179
   as returned by yylex.  */
1180
static const yytype_int16 yytranslate[] =
1181
{
1182
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1183
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1184
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1185
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1186
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1187
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1188
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1189
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1190
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1191
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1192
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1193
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1194
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1195
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1196
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1197
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1198
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1199
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1200
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1201
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1202
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1203
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1204
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1205
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1206
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1207
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1208
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1209
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1210
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1211
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1212
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1213
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1214
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1215
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1216
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1217
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1218
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1219
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1220
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
1221
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
1222
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
1223
     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1224
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1225
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1226
     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1227
     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1228
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1229
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1230
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1231
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1232
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1233
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1234
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1235
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1236
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1237
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1238
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1239
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1240
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1241
     335,   336,   337,   338,   339,   340,   341,   342
1242
};
1243
1244
#if YYDEBUG
1245
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1246
static const yytype_int16 yyrline[] =
1247
{
1248
       0,   202,   202,   202,   203,   203,   204,   204,   205,   205,
1249
     205,   206,   206,   207,   207,   208,   208,   209,   211,   218,
1250
     224,   225,   226,   226,   226,   227,   227,   228,   228,   228,
1251
     229,   229,   229,   230,   230,   230,   231,   231,   232,   233,
1252
     233,   233,   234,   234,   234,   235,   235,   236,   236,   237,
1253
     237,   238,   238,   239,   239,   240,   240,   241,   241,   242,
1254
     242,   243,   243,   243,   244,   244,   245,   245,   245,   246,
1255
     246,   246,   247,   247,   248,   248,   249,   249,   250,   250,
1256
     251,   251,   251,   252,   252,   253,   253,   254,   254,   254,
1257
     255,   255,   256,   256,   257,   257,   258,   258,   258,   259,
1258
     259,   260,   260,   261,   261,   262,   262,   263,   263,   264,
1259
     264,   265,   265,   266,   266,   267,   267,   267,   268,   268,
1260
     268,   269,   269,   269,   270,   270,   270,   270,   271,   272,
1261
     272,   272,   273,   273,   273,   274,   274,   275,   275,   276,
1262
     276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
1263
     280,   281,   281,   281,   282,   282,   282,   283,   283,   284,
1264
     284,   285,   285,   286,   287,   287,   288,   288,   289,   289,
1265
     290,   290,   291,   291,   292,   292,   293,   293,   294,   294,
1266
     295,   295,   296,   296,   297,   297,   298,   298,   298,   299,
1267
     299,   300,   300,   301,   301,   302,   302,   302,   303,   303,
1268
     304,   305,   305,   306,   306,   307,   308,   308,   309,   309,
1269
     310,   310,   310,   311,   311,   312,   312,   312,   313,   313,
1270
     313,   314,   314,   315,   316,   316,   317,   317,   318,   318,
1271
     319,   319,   320,   320,   320,   321,   321,   321,   322,   322,
1272
     322,   323,   323,   324,   324,   325,   325,   326,   326,   327,
1273
     327,   328,   328,   329,   329,   330,   330,   331,   331,   332,
1274
     334,   348,   349,   350,   350,   350,   350,   350,   351,   351,
1275
     351,   353,   367,   368,   369,   369,   369,   369,   370,   370,
1276
     370,   372,   388,   389,   390,   390,   390,   390,   391,   391,
1277
     391,   393,   414,   415,   416,   416,   416,   416,   417,   417,
1278
     417,   418,   418,   418,   421,   440,   457,   465,   475,   482,
1279
     492,   511,   512,   513,   513,   513,   513,   513,   514,   514,
1280
     514,   515,   515,   515,   515,   517,   526,   535,   546,   555,
1281
     564,   573,   582,   593,   602,   614,   628,   643,   654,   671,
1282
     688,   705,   722,   737,   752,   765,   780,   789,   798,   807,
1283
     816,   825,   834,   841,   850,   859,   868,   877,   886,   895,
1284
     904,   913,   922,   935,   946,   957,   968,   977,   990,  1003,
1285
    1012,  1021,  1030,  1037,  1044,  1053,  1060,  1069,  1077,  1084,
1286
    1091,  1099,  1108,  1116,  1132,  1140,  1148,  1156,  1164,  1172,
1287
    1181,  1190,  1204,  1213,  1222,  1231,  1240,  1249,  1258,  1265,
1288
    1272,  1298,  1306,  1313,  1320,  1327,  1334,  1342,  1350,  1358,
1289
    1365,  1376,  1387,  1394,  1403,  1412,  1421,  1430,  1437,  1444,
1290
    1451,  1467,  1475,  1483,  1493,  1503,  1513,  1527,  1535,  1548,
1291
    1559,  1567,  1580,  1589,  1598,  1607,  1616,  1626,  1636,  1644,
1292
    1657,  1666,  1674,  1683,  1691,  1704,  1713,  1722,  1732,  1739,
1293
    1749,  1759,  1769,  1779,  1789,  1799,  1809,  1819,  1829,  1836,
1294
    1843,  1850,  1859,  1868,  1877,  1886,  1893,  1903,  1911,  1920,
1295
    1927,  1945,  1958,  1971,  1984,  1993,  2002,  2011,  2020,  2030,
1296
    2040,  2051,  2060,  2069,  2078,  2087,  2096,  2105,  2114,  2123,
1297
    2136,  2149,  2158,  2165,  2174,  2183,  2192,  2201,  2210,  2218,
1298
    2231,  2239,  2295,  2302,  2317,  2327,  2337,  2344,  2351,  2358,
1299
    2367,  2375,  2382,  2396,  2417,  2438,  2450,  2462,  2474,  2483,
1300
    2504,  2516,  2528,  2537,  2558,  2567,  2576,  2584,  2592,  2605,
1301
    2618,  2633,  2648,  2657,  2666,  2676,  2686,  2695,  2704,  2713,
1302
    2719,  2728,  2737,  2747,  2757,  2767,  2776,  2786,  2795,  2808,
1303
    2821,  2833,  2847,  2859,  2873,  2882,  2893,  2902,  2909,  2919,
1304
    2926,  2933,  2942,  2951,  2961,  2971,  2981,  2991,  2998,  3005,
1305
    3014,  3023,  3033,  3043,  3053,  3060,  3067,  3074,  3082,  3092,
1306
    3102,  3112,  3122,  3132,  3142,  3198,  3208,  3216,  3224,  3239,
1307
    3248,  3254,  3255,  3256,  3256,  3256,  3257,  3257,  3257,  3258,
1308
    3258,  3260,  3270,  3279,  3286,  3293,  3300,  3307,  3314,  3321,
1309
    3327,  3328,  3329,  3329,  3329,  3330,  3330,  3330,  3331,  3332,
1310
    3332,  3333,  3333,  3334,  3334,  3335,  3336,  3337,  3338,  3339,
1311
    3340,  3342,  3351,  3361,  3368,  3375,  3384,  3391,  3398,  3405,
1312
    3412,  3421,  3430,  3437,  3444,  3454,  3464,  3474,  3484,  3494,
1313
    3504,  3510,  3511,  3512,  3514,  3520,  3526,  3527,  3528,  3530,
1314
    3536,  3546,  3553,  3562,  3570,  3576,  3577,  3579,  3579,  3579,
1315
    3580,  3580,  3581,  3582,  3583,  3584,  3585,  3587,  3597,  3606,
1316
    3613,  3622,  3629,  3638,  3646,  3659,  3667,  3680,  3686,  3687,
1317
    3688,  3688,  3689,  3689,  3689,  3690,  3690,  3690,  3692,  3704,
1318
    3716,  3728,  3743,  3755,  3767,  3780,  3793,  3804,  3810,  3811,
1319
    3812,  3812,  3814,  3829
1320
};
1321
#endif
1322
1323
#if YYDEBUG || YYERROR_VERBOSE || 0
1324
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1325
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1326
static const char *const yytname[] =
1327
{
1328
  "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
1329
  "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL",
1330
  "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT",
1331
  "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4",
1332
  "VAR_DO_IP6", "VAR_DO_NAT64", "VAR_PREFER_IP6", "VAR_DO_UDP",
1333
  "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
1334
  "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
1335
  "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_SOCK_QUEUE_TIMEOUT", "VAR_CHROOT",
1336
  "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1337
  "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1338
  "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1339
  "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1340
  "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1341
  "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1342
  "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1343
  "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1344
  "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1345
  "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1346
  "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1347
  "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1348
  "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1349
  "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1350
  "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1351
  "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1352
  "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1353
  "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1354
  "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1355
  "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1356
  "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1357
  "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1358
  "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1359
  "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1360
  "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1361
  "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1362
  "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1363
  "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1364
  "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1365
  "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1366
  "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1367
  "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1368
  "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1369
  "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1370
  "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1371
  "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1372
  "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1373
  "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1374
  "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
1375
  "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
1376
  "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
1377
  "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
1378
  "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
1379
  "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
1380
  "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
1381
  "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
1382
  "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
1383
  "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
1384
  "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT",
1385
  "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1386
  "VAR_DNS64_IGNORE_AAAA", "VAR_NAT64_PREFIX", "VAR_DNSTAP",
1387
  "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
1388
  "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
1389
  "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
1390
  "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
1391
  "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
1392
  "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1393
  "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1394
  "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1395
  "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1396
  "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1397
  "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1398
  "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG",
1399
  "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE",
1400
  "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK",
1401
  "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE",
1402
  "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE",
1403
  "VAR_OUTBOUND_MSG_RETRY", "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS",
1404
  "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1405
  "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1406
  "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF",
1407
  "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1408
  "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1409
  "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1410
  "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1411
  "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1412
  "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1413
  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION",
1414
  "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG",
1415
  "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
1416
  "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION",
1417
  "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW",
1418
  "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1419
  "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1420
  "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
1421
  "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1422
  "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
1423
  "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
1424
  "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1425
  "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1426
  "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1427
  "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1428
  "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1429
  "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1430
  "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1431
  "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1432
  "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
1433
  "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
1434
  "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
1435
  "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
1436
  "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
1437
  "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT",
1438
  "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_CACHEDB_REDISPATH",
1439
  "VAR_CACHEDB_REDISPASSWORD", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM",
1440
  "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER",
1441
  "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED",
1442
  "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL",
1443
  "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY",
1444
  "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE",
1445
  "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY",
1446
  "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY",
1447
  "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES",
1448
  "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6",
1449
  "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS",
1450
  "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG",
1451
  "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
1452
  "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
1453
  "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
1454
  "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1455
  "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION",
1456
  "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG", "VAR_INTERFACE_TAG_ACTION",
1457
  "VAR_INTERFACE_TAG_DATA", "VAR_PROXY_PROTOCOL_PORT",
1458
  "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL",
1459
  "$accept", "toplevelvars", "toplevelvar", "force_toplevel",
1460
  "serverstart", "contents_server", "content_server", "stubstart",
1461
  "contents_stub", "content_stub", "forwardstart", "contents_forward",
1462
  "content_forward", "viewstart", "contents_view", "content_view",
1463
  "authstart", "contents_auth", "content_auth", "rpz_tag",
1464
  "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name",
1465
  "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz",
1466
  "server_num_threads", "server_verbosity", "server_statistics_interval",
1467
  "server_statistics_cumulative", "server_extended_statistics",
1468
  "server_statistics_inhibit_zero", "server_shm_enable", "server_shm_key",
1469
  "server_port", "server_send_client_subnet", "server_client_subnet_zone",
1470
  "server_client_subnet_always_forward", "server_client_subnet_opcode",
1471
  "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1472
  "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1473
  "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1474
  "server_interface", "server_outgoing_interface", "server_outgoing_range",
1475
  "server_outgoing_port_permit", "server_outgoing_port_avoid",
1476
  "server_outgoing_num_tcp", "server_incoming_num_tcp",
1477
  "server_interface_automatic", "server_interface_automatic_ports",
1478
  "server_do_ip4", "server_do_ip6", "server_do_nat64", "server_do_udp",
1479
  "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6",
1480
  "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
1481
  "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
1482
  "server_tcp_auth_query_timeout", "server_tcp_keepalive",
1483
  "server_tcp_keepalive_timeout", "server_sock_queue_timeout",
1484
  "server_tcp_upstream", "server_udp_upstream_without_downstream",
1485
  "server_ssl_upstream", "server_ssl_service_key",
1486
  "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
1487
  "server_tls_win_cert", "server_tls_additional_port",
1488
  "server_tls_ciphers", "server_tls_ciphersuites",
1489
  "server_tls_session_ticket_keys", "server_tls_use_sni",
1490
  "server_https_port", "server_http_endpoint", "server_http_max_streams",
1491
  "server_http_query_buffer_size", "server_http_response_buffer_size",
1492
  "server_http_nodelay", "server_http_notls_downstream",
1493
  "server_use_systemd", "server_do_daemonize", "server_use_syslog",
1494
  "server_log_time_ascii", "server_log_queries", "server_log_replies",
1495
  "server_log_tag_queryreply", "server_log_servfail",
1496
  "server_log_local_actions", "server_chroot", "server_username",
1497
  "server_directory", "server_logfile", "server_pidfile",
1498
  "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
1499
  "server_auto_trust_anchor_file", "server_trust_anchor_file",
1500
  "server_trusted_keys_file", "server_trust_anchor",
1501
  "server_trust_anchor_signaling", "server_root_key_sentinel",
1502
  "server_domain_insecure", "server_hide_identity", "server_hide_version",
1503
  "server_hide_trustanchor", "server_hide_http_user_agent",
1504
  "server_identity", "server_version", "server_http_user_agent",
1505
  "server_nsid", "server_so_rcvbuf", "server_so_sndbuf",
1506
  "server_so_reuseport", "server_ip_transparent", "server_ip_freebind",
1507
  "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size",
1508
  "server_msg_buffer_size", "server_msg_cache_size",
1509
  "server_msg_cache_slabs", "server_num_queries_per_thread",
1510
  "server_jostle_timeout", "server_delay_close", "server_udp_connect",
1511
  "server_unblock_lan_zones", "server_insecure_lan_zones",
1512
  "server_rrset_cache_size", "server_rrset_cache_slabs",
1513
  "server_infra_host_ttl", "server_infra_lame_ttl",
1514
  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
1515
  "server_infra_cache_slabs", "server_infra_cache_min_rtt",
1516
  "server_infra_cache_max_rtt", "server_infra_keep_probing",
1517
  "server_target_fetch_policy", "server_harden_short_bufsize",
1518
  "server_harden_large_queries", "server_harden_glue",
1519
  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
1520
  "server_harden_referral_path", "server_harden_algo_downgrade",
1521
  "server_harden_unknown_additional", "server_use_caps_for_id",
1522
  "server_caps_whitelist", "server_private_address",
1523
  "server_private_domain", "server_prefetch", "server_prefetch_key",
1524
  "server_deny_any", "server_unwanted_reply_threshold",
1525
  "server_do_not_query_address", "server_do_not_query_localhost",
1526
  "server_access_control", "server_interface_action", "server_module_conf",
1527
  "server_val_override_date", "server_val_sig_skew_min",
1528
  "server_val_sig_skew_max", "server_val_max_restart",
1529
  "server_cache_max_ttl", "server_cache_max_negative_ttl",
1530
  "server_cache_min_ttl", "server_bogus_ttl",
1531
  "server_val_clean_additional", "server_val_permissive_mode",
1532
  "server_aggressive_nsec", "server_ignore_cd_flag",
1533
  "server_serve_expired", "server_serve_expired_ttl",
1534
  "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1535
  "server_serve_expired_client_timeout", "server_ede_serve_expired",
1536
  "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
1537
  "server_val_log_level", "server_val_nsec3_keysize_iterations",
1538
  "server_zonemd_permissive_mode", "server_add_holddown",
1539
  "server_del_holddown", "server_keep_missing",
1540
  "server_permit_small_holddown", "server_key_cache_size",
1541
  "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1542
  "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1543
  "server_rrset_roundrobin", "server_unknown_server_time_limit",
1544
  "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall",
1545
  "server_dns64_ignore_aaaa", "server_nat64_prefix", "server_define_tag",
1546
  "server_local_zone_tag", "server_access_control_tag",
1547
  "server_access_control_tag_action", "server_access_control_tag_data",
1548
  "server_local_zone_override", "server_access_control_view",
1549
  "server_interface_tag", "server_interface_tag_action",
1550
  "server_interface_tag_data", "server_interface_view",
1551
  "server_response_ip_tag", "server_ip_ratelimit", "server_ratelimit",
1552
  "server_ip_ratelimit_size", "server_ratelimit_size",
1553
  "server_ip_ratelimit_slabs", "server_ratelimit_slabs",
1554
  "server_ratelimit_for_domain", "server_ratelimit_below_domain",
1555
  "server_ip_ratelimit_factor", "server_ratelimit_factor",
1556
  "server_ip_ratelimit_backoff", "server_ratelimit_backoff",
1557
  "server_outbound_msg_retry", "server_max_sent_count",
1558
  "server_max_query_restarts", "server_low_rtt", "server_fast_server_num",
1559
  "server_fast_server_permil", "server_qname_minimisation",
1560
  "server_qname_minimisation_strict", "server_pad_responses",
1561
  "server_pad_responses_block_size", "server_pad_queries",
1562
  "server_pad_queries_block_size", "server_ipsecmod_enabled",
1563
  "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1564
  "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1565
  "server_ipsecmod_strict", "server_edns_client_string",
1566
  "server_edns_client_string_opcode", "server_ede",
1567
  "server_proxy_protocol_port", "stub_name", "stub_host", "stub_addr",
1568
  "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream",
1569
  "stub_prime", "forward_name", "forward_host", "forward_addr",
1570
  "forward_first", "forward_no_cache", "forward_ssl_upstream",
1571
  "forward_tcp_upstream", "auth_name", "auth_zonefile", "auth_master",
1572
  "auth_url", "auth_allow_notify", "auth_zonemd_check",
1573
  "auth_zonemd_reject_absence", "auth_for_downstream", "auth_for_upstream",
1574
  "auth_fallback_enabled", "view_name", "view_local_zone",
1575
  "view_response_ip", "view_response_ip_data", "view_local_data",
1576
  "view_local_data_ptr", "view_first", "rcstart", "contents_rc",
1577
  "content_rc", "rc_control_enable", "rc_control_port",
1578
  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
1579
  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
1580
  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
1581
  "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
1582
  "dt_dnstap_tls", "dt_dnstap_tls_server_name",
1583
  "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
1584
  "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
1585
  "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
1586
  "dt_dnstap_log_resolver_query_messages",
1587
  "dt_dnstap_log_resolver_response_messages",
1588
  "dt_dnstap_log_client_query_messages",
1589
  "dt_dnstap_log_client_response_messages",
1590
  "dt_dnstap_log_forwarder_query_messages",
1591
  "dt_dnstap_log_forwarder_response_messages", "pythonstart",
1592
  "contents_py", "content_py", "py_script", "dynlibstart", "contents_dl",
1593
  "content_dl", "dl_file", "server_disable_dnssec_lame_check",
1594
  "server_log_identity", "server_response_ip", "server_response_ip_data",
1595
  "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1596
  "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1597
  "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1598
  "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1599
  "dnsc_dnscrypt_shared_secret_cache_slabs",
1600
  "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1601
  "cachedbstart", "contents_cachedb", "content_cachedb",
1602
  "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host",
1603
  "redis_server_port", "redis_server_path", "redis_server_password",
1604
  "redis_timeout", "redis_expire_records", "server_tcp_connection_limit",
1605
  "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4",
1606
  "ipset_name_v6", YY_NULLPTR
1607
};
1608
#endif
1609
1610
# ifdef YYPRINT
1611
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
1612
   (internal) symbol number NUM (which must be that of a token).  */
1613
static const yytype_int16 yytoknum[] =
1614
{
1615
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1616
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1617
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1618
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1619
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1620
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1621
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1622
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1623
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1624
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1625
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1626
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1627
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1628
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1629
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1630
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1631
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1632
     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1633
     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1634
     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1635
     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1636
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1637
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1638
     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
1639
     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
1640
     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
1641
     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
1642
     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
1643
     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
1644
     545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
1645
     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
1646
     565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
1647
     575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
1648
     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
1649
     595,   596,   597
1650
};
1651
# endif
1652
1653
0
#define YYPACT_NINF (-289)
1654
1655
#define yypact_value_is_default(Yyn) \
1656
0
  ((Yyn) == YYPACT_NINF)
1657
1658
#define YYTABLE_NINF (-1)
1659
1660
#define yytable_value_is_error(Yyn) \
1661
0
  0
1662
1663
  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1664
     STATE-NUM.  */
1665
static const yytype_int16 yypact[] =
1666
{
1667
    -289,   255,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1668
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1669
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1670
    -289,  -289,   -13,   198,   221,   254,    56,    40,   289,   -14,
1671
     -81,  -288,   114,   116,  -281,    31,    32,    33,    75,    76,
1672
      78,    79,    80,    81,    82,    83,    89,    94,   121,   122,
1673
     123,   125,   126,   134,   168,   213,   215,   236,   239,   240,
1674
     241,   242,   243,   244,   259,   260,   261,   262,   263,   264,
1675
     268,   269,   270,   271,   272,   275,   278,   281,   282,   292,
1676
     295,   296,   297,   298,   301,   302,   307,   308,   309,   320,
1677
     325,   326,   329,   330,   332,   334,   342,   344,   346,   348,
1678
     356,   358,   359,   373,   374,   375,   394,   395,   396,   397,
1679
     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
1680
     408,   409,   410,   411,   412,   413,   414,   415,   416,   418,
1681
     419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
1682
     429,   430,   431,   432,   433,   434,   435,   436,   439,   440,
1683
     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
1684
     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
1685
     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
1686
     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
1687
     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
1688
     494,   495,   496,   497,   498,   499,   500,   501,   502,   504,
1689
     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
1690
     516,   517,   518,   519,   520,   521,   522,   523,   525,   526,
1691
     527,   528,   529,   530,   531,   532,   533,   534,   536,   537,
1692
     538,   539,   540,   541,   542,   543,   544,   545,   546,   547,
1693
     548,   549,   550,   551,   552,   553,   554,   555,   556,   557,
1694
     558,   560,   561,   562,   564,   565,   566,   567,   568,   570,
1695
     571,   572,   573,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1696
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1697
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1698
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1699
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1700
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1701
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1702
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1703
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1704
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1705
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1706
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1707
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1708
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1709
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1710
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1711
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1712
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1713
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1714
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1715
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1716
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1717
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1718
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1719
    -289,  -289,   574,   575,   576,   577,   578,   579,   580,   581,
1720
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   582,
1721
     583,   584,   585,   586,   587,   588,  -289,  -289,  -289,  -289,
1722
    -289,  -289,  -289,  -289,   589,   590,   591,   592,   593,   594,
1723
     595,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   596,
1724
     597,   598,   599,   600,   601,   602,   603,   604,   605,  -289,
1725
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1726
     606,   607,   608,   609,   610,   611,  -289,  -289,  -289,  -289,
1727
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   612,
1728
     613,   614,   615,   616,   617,   618,   619,  -289,  -289,  -289,
1729
    -289,  -289,  -289,  -289,  -289,  -289,   620,   621,   622,   623,
1730
     624,   625,   626,   627,   628,   629,   630,   631,   632,   633,
1731
     634,   635,   636,   637,   638,  -289,  -289,  -289,  -289,  -289,
1732
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1733
    -289,  -289,  -289,  -289,  -289,   639,  -289,  -289,   640,  -289,
1734
    -289,   641,   642,   643,   644,   645,   646,   647,   648,   649,
1735
     650,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1736
    -289,  -289,   651,   652,   653,   654,   655,   656,   657,   658,
1737
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   659,
1738
     660,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1739
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1740
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1741
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1742
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1743
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1744
    -289,  -289,  -289,  -289,  -289,  -289,   661,   662,  -289,  -289,
1745
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1746
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1747
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1748
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1749
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1750
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1751
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   663,   664,
1752
     665,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1753
    -289,  -289,  -289,  -289,   666,   667,  -289,  -289,  -289,  -289,
1754
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1755
    -289,  -289,  -289,  -289,  -289,  -289,  -289,   668,   669,   670,
1756
     671,   672,   673,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1757
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1758
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1759
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   674,  -289,
1760
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   675,  -289,
1761
    -289,  -289,  -289,  -289,   676,   677,   678,   679,   680,  -289,
1762
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1763
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   681,  -289,
1764
    -289,   682,   683,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1765
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1766
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1767
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1768
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1769
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1770
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1771
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,   684,   685,
1772
     686,  -289,  -289,  -289,  -289,  -289,  -289,   687,   688,  -289,
1773
    -289,  -289,  -289,  -289,  -289,  -289,  -289
1774
};
1775
1776
  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1777
     Performed when YYTABLE does not specify something else to do.  Zero
1778
     means the default is an error.  */
1779
static const yytype_int16 yydefact[] =
1780
{
1781
       2,     0,     1,    18,    19,   260,   271,   590,   650,   609,
1782
     281,   664,   687,   291,   707,   310,   655,     3,    17,    21,
1783
     262,   273,   283,   293,   312,   592,   611,   652,   657,   666,
1784
     689,   709,     4,     5,     6,    10,    14,    15,     8,     9,
1785
       7,    16,    11,    12,    13,     0,     0,     0,     0,     0,
1786
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1787
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1788
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1789
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1790
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1791
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1792
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1793
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1794
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1795
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1796
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1797
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1798
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1799
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1800
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1801
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1802
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1803
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1804
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1805
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1806
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1807
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1808
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1809
       0,     0,     0,    20,    22,    23,    90,    93,   102,   258,
1810
     218,   219,    24,   172,   173,   174,   175,   176,   177,   178,
1811
     179,   180,   181,    39,    81,    25,    94,    95,    50,    74,
1812
      89,   255,    26,    27,    28,    31,    32,    29,    30,    33,
1813
      34,    35,   252,   253,   254,    36,    37,    38,   126,   230,
1814
     127,   129,   130,   131,   232,   237,   233,   244,   245,   246,
1815
     247,   132,   133,   134,   135,   136,   137,   138,   214,    91,
1816
      80,   106,   124,   125,   242,   239,   128,    40,    41,    42,
1817
      43,    44,    82,    96,    97,   113,    68,    78,    69,   222,
1818
     223,   107,    60,    61,   221,    64,    62,    63,    65,   250,
1819
     117,   121,   142,   154,   186,   157,   243,   118,    75,    45,
1820
      46,    47,   104,   143,   144,   145,   146,    48,    49,    51,
1821
      52,    54,    55,    53,   151,   152,   158,    56,    57,    58,
1822
      66,    85,   122,    99,   153,   259,    92,   182,   100,   101,
1823
     119,   120,   240,   105,    59,    83,    86,   195,    67,    70,
1824
     108,   109,   110,    84,   183,   111,    71,    72,    73,   231,
1825
     123,   205,   206,   207,   208,   209,   210,   211,   212,   220,
1826
     112,    79,   251,   114,   115,   116,   184,    76,    77,    98,
1827
      87,    88,   103,   139,   140,   241,   141,   147,   148,   149,
1828
     150,   187,   188,   190,   192,   193,   191,   194,   197,   198,
1829
     199,   196,   215,   155,   156,   161,   162,   159,   160,   163,
1830
     164,   166,   165,   168,   167,   169,   170,   171,   234,   236,
1831
     235,   185,   200,   201,   202,   203,   204,   224,   226,   225,
1832
     227,   228,   229,   248,   249,   256,   257,   189,   213,   216,
1833
     217,   238,     0,     0,     0,     0,     0,     0,     0,     0,
1834
     261,   263,   264,   265,   267,   268,   269,   270,   266,     0,
1835
       0,     0,     0,     0,     0,     0,   272,   274,   275,   276,
1836
     277,   278,   279,   280,     0,     0,     0,     0,     0,     0,
1837
       0,   282,   284,   285,   288,   289,   286,   290,   287,     0,
1838
       0,     0,     0,     0,     0,     0,     0,     0,     0,   292,
1839
     294,   295,   296,   297,   301,   302,   303,   298,   299,   300,
1840
       0,     0,     0,     0,     0,     0,   315,   319,   320,   321,
1841
     322,   323,   311,   313,   314,   316,   317,   318,   324,     0,
1842
       0,     0,     0,     0,     0,     0,     0,   591,   593,   595,
1843
     594,   600,   596,   597,   598,   599,     0,     0,     0,     0,
1844
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1845
       0,     0,     0,     0,     0,   610,   612,   614,   613,   615,
1846
     616,   617,   618,   619,   620,   621,   622,   623,   624,   625,
1847
     626,   627,   628,   629,   630,     0,   651,   653,     0,   656,
1848
     658,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1849
       0,   665,   667,   668,   669,   671,   672,   670,   673,   674,
1850
     675,   676,     0,     0,     0,     0,     0,     0,     0,     0,
1851
     688,   690,   691,   692,   693,   696,   697,   694,   695,     0,
1852
       0,   708,   710,   711,   326,   325,   333,   346,   344,   358,
1853
     353,   354,   355,   359,   356,   357,   360,   361,   362,   366,
1854
     367,   368,   398,   399,   400,   401,   402,   430,   431,   432,
1855
     438,   439,   349,   440,   441,   444,   442,   443,   448,   449,
1856
     450,   465,   413,   414,   417,   418,   451,   469,   407,   409,
1857
     470,   477,   478,   479,   350,   429,   498,   499,   408,   492,
1858
     391,   345,   403,   466,   474,   452,     0,     0,   502,   351,
1859
     327,   390,   457,   328,   347,   348,   404,   405,   500,   454,
1860
     459,   460,   364,   363,   329,   503,   433,   464,   392,   412,
1861
     471,   472,   473,   476,   491,   406,   496,   494,   495,   421,
1862
     428,   461,   462,   422,   423,   453,   481,   393,   394,   397,
1863
     369,   371,   365,   372,   373,   374,   375,   382,   383,   384,
1864
     385,   386,   387,   388,   504,   505,   507,   434,   435,   436,
1865
     437,   445,   446,   447,   508,   509,   510,   511,     0,     0,
1866
       0,   455,   424,   426,   660,   524,   528,   526,   525,   529,
1867
     527,   536,   537,   538,     0,     0,   532,   533,   534,   535,
1868
     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
1869
     458,   475,   497,   542,   543,   425,   512,     0,     0,     0,
1870
       0,     0,     0,   482,   483,   484,   485,   486,   487,   488,
1871
     489,   490,   661,   415,   416,   419,   410,   480,   389,   331,
1872
     332,   411,   544,   545,   546,   547,   548,   550,   549,   551,
1873
     552,   553,   370,   377,   539,   541,   540,   376,     0,   396,
1874
     463,   506,   395,   427,   378,   379,   381,   380,     0,   555,
1875
     420,   493,   352,   556,     0,     0,     0,     0,     0,   557,
1876
     330,   456,   558,   559,   560,   565,   563,   564,   561,   562,
1877
     566,   567,   568,   569,   571,   572,   570,   583,     0,   587,
1878
     588,     0,     0,   589,   573,   581,   574,   575,   576,   580,
1879
     582,   577,   578,   579,   304,   305,   306,   307,   308,   309,
1880
     601,   603,   602,   605,   606,   607,   608,   604,   631,   633,
1881
     634,   635,   636,   637,   638,   639,   640,   641,   632,   642,
1882
     643,   644,   645,   646,   647,   648,   649,   654,   659,   677,
1883
     678,   679,   682,   680,   681,   683,   684,   685,   686,   698,
1884
     699,   700,   701,   704,   705,   702,   703,   712,   713,   467,
1885
     501,   523,   662,   663,   530,   531,   513,   514,     0,     0,
1886
       0,   518,   706,   554,   468,   522,   519,     0,     0,   584,
1887
     585,   586,   517,   515,   516,   520,   521
1888
};
1889
1890
  /* YYPGOTO[NTERM-NUM].  */
1891
static const yytype_int16 yypgoto[] =
1892
{
1893
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1894
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1895
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1896
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1897
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1898
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1899
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1900
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1901
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1902
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1903
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1904
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1905
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1906
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1907
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1908
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1909
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1910
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1911
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1912
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1913
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1914
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1915
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1916
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1917
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1918
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1919
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1920
    -289,  -289,  -289,  -289,  -289,  -289,   689,   690,   691,   692,
1921
     693,  -289,  -289,   694,  -289,  -289,  -289,  -289,  -289,  -289,
1922
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1923
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1924
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1925
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1926
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1927
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1928
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,
1929
    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289
1930
};
1931
1932
  /* YYDEFGOTO[NTERM-NUM].  */
1933
static const yytype_int16 yydefgoto[] =
1934
{
1935
      -1,     1,    17,    18,    19,    32,   283,    20,    33,   530,
1936
      21,    34,   546,    22,    35,   561,    23,    36,   579,   596,
1937
     597,   598,   599,   600,   601,    24,    37,   602,   284,   285,
1938
     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
1939
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
1940
     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
1941
     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
1942
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
1943
     336,   337,   338,   339,   340,   341,   342,   343,   344,   345,
1944
     346,   347,   348,   349,   350,   351,   352,   353,   354,   355,
1945
     356,   357,   358,   359,   360,   361,   362,   363,   364,   365,
1946
     366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
1947
     376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
1948
     386,   387,   388,   389,   390,   391,   392,   393,   394,   395,
1949
     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
1950
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
1951
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
1952
     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
1953
     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
1954
     446,   447,   448,   449,   450,   451,   452,   453,   454,   455,
1955
     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
1956
     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
1957
     476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
1958
     486,   487,   488,   489,   490,   491,   492,   493,   494,   495,
1959
     496,   497,   498,   499,   500,   501,   502,   503,   504,   505,
1960
     506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
1961
     516,   531,   532,   533,   534,   535,   536,   537,   538,   547,
1962
     548,   549,   550,   551,   552,   553,   580,   581,   582,   583,
1963
     584,   585,   586,   587,   588,   589,   562,   563,   564,   565,
1964
     566,   567,   568,    25,    38,   617,   618,   619,   620,   621,
1965
     622,   623,   624,   625,    26,    39,   645,   646,   647,   648,
1966
     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
1967
     659,   660,   661,   662,   663,   664,    27,    40,   666,   667,
1968
      28,    41,   669,   670,   517,   518,   519,   520,    29,    42,
1969
     681,   682,   683,   684,   685,   686,   687,   688,   689,   690,
1970
     691,    30,    43,   700,   701,   702,   703,   704,   705,   706,
1971
     707,   708,   521,    31,    44,   711,   712,   713
1972
};
1973
1974
  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1975
     positive, shift that token.  If negative, reduce the rule whose
1976
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
1977
static const yytype_int16 yytable[] =
1978
{
1979
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1980
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1981
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1982
      75,    76,    77,    78,   709,   710,   665,   668,    79,    80,
1983
      81,   714,   715,   716,    82,    83,    84,    85,    86,    87,
1984
      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1985
      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
1986
     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
1987
     118,   119,   120,   121,   122,   717,   718,   569,   719,   720,
1988
     721,   722,   723,   724,   123,   124,   125,   126,   127,   725,
1989
     128,   129,   130,   569,   726,   131,   132,   133,   134,   135,
1990
     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
1991
     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
1992
     156,   727,   728,   729,   157,   730,   731,   158,   159,   160,
1993
     161,   162,   163,   164,   732,   165,   166,   167,   168,   169,
1994
     170,   171,   172,   173,   174,   175,   176,   177,   178,   626,
1995
     627,   628,   629,   630,   631,   632,   633,   634,   635,   636,
1996
     637,   638,   639,   640,   641,   642,   643,   644,   733,   179,
1997
     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
1998
     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
1999
     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
2000
     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
2001
     220,   221,   222,   734,   223,   735,   224,   225,   226,   227,
2002
     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
2003
     238,   239,   240,   241,   242,   522,   736,   523,   524,   737,
2004
     738,   739,   740,   741,   742,     2,   243,   244,   245,   246,
2005
     247,   248,   249,   250,   251,   252,     3,     4,   539,   743,
2006
     744,   745,   746,   747,   748,   253,   540,   541,   749,   750,
2007
     751,   752,   753,   254,   255,   754,   256,   257,   755,   258,
2008
     259,   756,   757,   260,   261,   262,   263,   264,   265,   266,
2009
     267,   554,   758,     5,   268,   759,   760,   761,   762,     6,
2010
     525,   763,   764,   269,   270,   271,   272,   765,   766,   767,
2011
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
2012
     768,   571,   572,   573,   574,   769,   770,   555,   556,   771,
2013
     772,   576,   773,   526,   774,   570,   527,   571,   572,   573,
2014
     574,   575,   775,     7,   776,   528,   777,   576,   778,   590,
2015
     591,   592,   593,   594,   557,   542,   779,   543,   780,   781,
2016
     544,     8,   595,   671,   672,   673,   674,   675,   676,   677,
2017
     678,   679,   680,   782,   783,   784,   577,   578,   609,   610,
2018
     611,   612,   613,   614,   615,   616,   692,   693,   694,   695,
2019
     696,   697,   698,   699,   785,   786,   787,   788,   789,   790,
2020
     791,   792,   793,   794,   795,   796,   797,   798,   799,   800,
2021
     801,   802,   803,   804,   805,   806,   807,     9,   808,   809,
2022
     810,   811,   812,   813,   814,   815,   816,   817,   818,   819,
2023
     820,   821,   822,   823,   824,   825,   826,   558,   559,   827,
2024
     828,   829,   830,   831,   832,   833,   834,   835,   836,   837,
2025
     838,   839,   840,   841,   842,   843,   844,   845,   846,   847,
2026
     848,   849,   850,   851,   852,   853,   854,   855,   856,   857,
2027
     858,   859,   860,   861,   862,   863,   864,   865,   866,   867,
2028
     868,    10,   560,   869,   870,   871,   872,   873,   874,   875,
2029
     876,   877,   878,   529,   879,   880,   881,   882,   883,   884,
2030
     885,   886,   887,    11,   888,   889,   890,   891,   892,   893,
2031
     894,   895,   896,   897,   898,   545,   899,   900,   901,   902,
2032
     903,   904,   905,   906,    12,   907,   908,   909,   910,   911,
2033
     912,   913,   914,   915,   916,    13,   917,   918,   919,   920,
2034
     921,   922,   923,   924,   925,   926,   927,   928,   929,   930,
2035
     931,   932,   933,   934,   935,   936,   937,   938,   939,    14,
2036
     940,   941,   942,    15,   943,   944,   945,   946,   947,    16,
2037
     948,   949,   950,   951,   952,   953,   954,   955,   956,   957,
2038
     958,   959,   960,   961,   962,   963,   964,   965,   966,   967,
2039
     968,   969,   970,   971,   972,   973,   974,   975,   976,   977,
2040
     978,   979,   980,   981,   982,   983,   984,   985,   986,   987,
2041
     988,   989,   990,   991,   992,   993,   994,   995,   996,   997,
2042
     998,   999,  1000,  1001,  1002,  1003,  1004,  1005,  1006,  1007,
2043
    1008,  1009,  1010,  1011,  1012,  1013,  1014,  1015,  1016,  1017,
2044
    1018,  1019,  1020,  1021,  1022,  1023,  1024,  1025,  1026,  1027,
2045
    1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,  1036,  1037,
2046
    1038,  1039,  1040,  1041,  1042,  1043,  1044,  1045,  1046,  1047,
2047
    1048,  1049,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
2048
    1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,  1066,     0,
2049
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2050
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2051
       0,     0,     0,     0,     0,     0,   603,   604,   605,   606,
2052
     607,   608
2053
};
2054
2055
static const yytype_int16 yycheck[] =
2056
{
2057
      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2058
      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
2059
      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
2060
      43,    44,    45,    46,   315,   316,   117,   325,    51,    52,
2061
      53,    10,    10,    10,    57,    58,    59,    60,    61,    62,
2062
      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
2063
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
2064
      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
2065
      93,    94,    95,    96,    97,    10,    10,    47,    10,    10,
2066
      10,    10,    10,    10,   107,   108,   109,   110,   111,    10,
2067
     113,   114,   115,    47,    10,   118,   119,   120,   121,   122,
2068
     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
2069
     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
2070
     143,    10,    10,    10,   147,    10,    10,   150,   151,   152,
2071
     153,   154,   155,   156,    10,   158,   159,   160,   161,   162,
2072
     163,   164,   165,   166,   167,   168,   169,   170,   171,   173,
2073
     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
2074
     184,   185,   186,   187,   188,   189,   190,   191,    10,   192,
2075
     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
2076
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
2077
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
2078
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
2079
     233,   234,   235,    10,   237,    10,   239,   240,   241,   242,
2080
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2081
     253,   254,   255,   256,   257,    47,    10,    49,    50,    10,
2082
      10,    10,    10,    10,    10,     0,   269,   270,   271,   272,
2083
     273,   274,   275,   276,   277,   278,    11,    12,    47,    10,
2084
      10,    10,    10,    10,    10,   288,    55,    56,    10,    10,
2085
      10,    10,    10,   296,   297,    10,   299,   300,    10,   302,
2086
     303,    10,    10,   306,   307,   308,   309,   310,   311,   312,
2087
     313,    47,    10,    48,   317,    10,    10,    10,    10,    54,
2088
     112,    10,    10,   326,   327,   328,   329,    10,    10,    10,
2089
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
2090
      10,   291,   292,   293,   294,    10,    10,    83,    84,    10,
2091
      10,   301,    10,   145,    10,   289,   148,   291,   292,   293,
2092
     294,   295,    10,    98,    10,   157,    10,   301,    10,   319,
2093
     320,   321,   322,   323,   110,   144,    10,   146,    10,    10,
2094
     149,   116,   332,   259,   260,   261,   262,   263,   264,   265,
2095
     266,   267,   268,    10,    10,    10,   330,   331,    99,   100,
2096
     101,   102,   103,   104,   105,   106,   280,   281,   282,   283,
2097
     284,   285,   286,   287,    10,    10,    10,    10,    10,    10,
2098
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2099
      10,    10,    10,    10,    10,    10,    10,   172,    10,    10,
2100
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2101
      10,    10,    10,    10,    10,    10,    10,   193,   194,    10,
2102
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2103
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2104
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2105
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2106
      10,   236,   238,    10,    10,    10,    10,    10,    10,    10,
2107
      10,    10,    10,   305,    10,    10,    10,    10,    10,    10,
2108
      10,    10,    10,   258,    10,    10,    10,    10,    10,    10,
2109
      10,    10,    10,    10,    10,   304,    10,    10,    10,    10,
2110
      10,    10,    10,    10,   279,    10,    10,    10,    10,    10,
2111
      10,    10,    10,    10,    10,   290,    10,    10,    10,    10,
2112
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2113
      10,    10,    10,    10,    10,    10,    10,    10,    10,   314,
2114
      10,    10,    10,   318,    10,    10,    10,    10,    10,   324,
2115
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2116
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2117
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2118
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2119
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2120
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2121
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2122
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2123
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2124
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2125
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2126
      10,    10,    10,    10,    10,    10,    10,    10,    10,    -1,
2127
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2128
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2129
      -1,    -1,    -1,    -1,    -1,    -1,    37,    37,    37,    37,
2130
      37,    37
2131
};
2132
2133
  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2134
     symbol of state STATE-NUM.  */
2135
static const yytype_int16 yystos[] =
2136
{
2137
       0,   344,     0,    11,    12,    48,    54,    98,   116,   172,
2138
     236,   258,   279,   290,   314,   318,   324,   345,   346,   347,
2139
     350,   353,   356,   359,   368,   636,   647,   669,   673,   681,
2140
     694,   706,   348,   351,   354,   357,   360,   369,   637,   648,
2141
     670,   674,   682,   695,   707,    13,    14,    15,    16,    17,
2142
      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
2143
      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
2144
      38,    39,    40,    41,    42,    43,    44,    45,    46,    51,
2145
      52,    53,    57,    58,    59,    60,    61,    62,    63,    64,
2146
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
2147
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
2148
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
2149
      95,    96,    97,   107,   108,   109,   110,   111,   113,   114,
2150
     115,   118,   119,   120,   121,   122,   123,   124,   125,   126,
2151
     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
2152
     137,   138,   139,   140,   141,   142,   143,   147,   150,   151,
2153
     152,   153,   154,   155,   156,   158,   159,   160,   161,   162,
2154
     163,   164,   165,   166,   167,   168,   169,   170,   171,   192,
2155
     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
2156
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
2157
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
2158
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
2159
     233,   234,   235,   237,   239,   240,   241,   242,   243,   244,
2160
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
2161
     255,   256,   257,   269,   270,   271,   272,   273,   274,   275,
2162
     276,   277,   278,   288,   296,   297,   299,   300,   302,   303,
2163
     306,   307,   308,   309,   310,   311,   312,   313,   317,   326,
2164
     327,   328,   329,   333,   334,   335,   336,   337,   338,   339,
2165
     340,   341,   342,   349,   371,   372,   373,   374,   375,   376,
2166
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
2167
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
2168
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
2169
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
2170
     417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
2171
     427,   428,   429,   430,   431,   432,   433,   434,   435,   436,
2172
     437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
2173
     447,   448,   449,   450,   451,   452,   453,   454,   455,   456,
2174
     457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
2175
     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
2176
     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
2177
     487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
2178
     497,   498,   499,   500,   501,   502,   503,   504,   505,   506,
2179
     507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
2180
     517,   518,   519,   520,   521,   522,   523,   524,   525,   526,
2181
     527,   528,   529,   530,   531,   532,   533,   534,   535,   536,
2182
     537,   538,   539,   540,   541,   542,   543,   544,   545,   546,
2183
     547,   548,   549,   550,   551,   552,   553,   554,   555,   556,
2184
     557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
2185
     567,   568,   569,   570,   571,   572,   573,   574,   575,   576,
2186
     577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
2187
     587,   588,   589,   590,   591,   592,   593,   594,   595,   596,
2188
     597,   598,   599,   600,   601,   602,   603,   677,   678,   679,
2189
     680,   705,    47,    49,    50,   112,   145,   148,   157,   305,
2190
     352,   604,   605,   606,   607,   608,   609,   610,   611,    47,
2191
      55,    56,   144,   146,   149,   304,   355,   612,   613,   614,
2192
     615,   616,   617,   618,    47,    83,    84,   110,   193,   194,
2193
     238,   358,   629,   630,   631,   632,   633,   634,   635,    47,
2194
     289,   291,   292,   293,   294,   295,   301,   330,   331,   361,
2195
     619,   620,   621,   622,   623,   624,   625,   626,   627,   628,
2196
     319,   320,   321,   322,   323,   332,   362,   363,   364,   365,
2197
     366,   367,   370,   619,   620,   621,   622,   623,   626,    99,
2198
     100,   101,   102,   103,   104,   105,   106,   638,   639,   640,
2199
     641,   642,   643,   644,   645,   646,   173,   174,   175,   176,
2200
     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
2201
     187,   188,   189,   190,   191,   649,   650,   651,   652,   653,
2202
     654,   655,   656,   657,   658,   659,   660,   661,   662,   663,
2203
     664,   665,   666,   667,   668,   117,   671,   672,   325,   675,
2204
     676,   259,   260,   261,   262,   263,   264,   265,   266,   267,
2205
     268,   683,   684,   685,   686,   687,   688,   689,   690,   691,
2206
     692,   693,   280,   281,   282,   283,   284,   285,   286,   287,
2207
     696,   697,   698,   699,   700,   701,   702,   703,   704,   315,
2208
     316,   708,   709,   710,    10,    10,    10,    10,    10,    10,
2209
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2210
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2211
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2212
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2213
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2214
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2215
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2216
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2217
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2218
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2219
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2220
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2221
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2222
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2223
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2224
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2225
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2226
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2227
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2228
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2229
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2230
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2231
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2232
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2233
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2234
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2235
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2236
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2237
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2238
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2239
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2240
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2241
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2242
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2243
      10,    10,    10,    10,    10,    10,    10
2244
};
2245
2246
  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2247
static const yytype_int16 yyr1[] =
2248
{
2249
       0,   343,   344,   344,   345,   345,   345,   345,   345,   345,
2250
     345,   345,   345,   345,   345,   345,   345,   345,   346,   347,
2251
     348,   348,   349,   349,   349,   349,   349,   349,   349,   349,
2252
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2253
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2254
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2255
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2256
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2257
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2258
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2259
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2260
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2261
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2262
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2263
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2264
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2265
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2266
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2267
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2268
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2269
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2270
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2271
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2272
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2273
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2274
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2275
     350,   351,   351,   352,   352,   352,   352,   352,   352,   352,
2276
     352,   353,   354,   354,   355,   355,   355,   355,   355,   355,
2277
     355,   356,   357,   357,   358,   358,   358,   358,   358,   358,
2278
     358,   359,   360,   360,   361,   361,   361,   361,   361,   361,
2279
     361,   361,   361,   361,   362,   363,   364,   365,   366,   367,
2280
     368,   369,   369,   370,   370,   370,   370,   370,   370,   370,
2281
     370,   370,   370,   370,   370,   371,   372,   373,   374,   375,
2282
     376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
2283
     386,   387,   388,   389,   390,   391,   392,   393,   394,   395,
2284
     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
2285
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
2286
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
2287
     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
2288
     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
2289
     446,   447,   448,   449,   450,   451,   452,   453,   454,   455,
2290
     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
2291
     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
2292
     476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
2293
     486,   487,   488,   489,   490,   491,   492,   493,   494,   495,
2294
     496,   497,   498,   499,   500,   501,   502,   503,   504,   505,
2295
     506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
2296
     516,   517,   518,   519,   520,   521,   522,   523,   524,   525,
2297
     526,   527,   528,   529,   530,   531,   532,   533,   534,   535,
2298
     536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
2299
     546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
2300
     556,   557,   558,   559,   560,   561,   562,   563,   564,   565,
2301
     566,   567,   568,   569,   570,   571,   572,   573,   574,   575,
2302
     576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
2303
     586,   587,   588,   589,   590,   591,   592,   593,   594,   595,
2304
     596,   597,   598,   599,   600,   601,   602,   603,   604,   605,
2305
     606,   607,   608,   609,   610,   611,   612,   613,   614,   615,
2306
     616,   617,   618,   619,   620,   621,   622,   623,   624,   625,
2307
     626,   627,   628,   629,   630,   631,   632,   633,   634,   635,
2308
     636,   637,   637,   638,   638,   638,   638,   638,   638,   638,
2309
     638,   639,   640,   641,   642,   643,   644,   645,   646,   647,
2310
     648,   648,   649,   649,   649,   649,   649,   649,   649,   649,
2311
     649,   649,   649,   649,   649,   649,   649,   649,   649,   649,
2312
     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
2313
     659,   660,   661,   662,   663,   664,   665,   666,   667,   668,
2314
     669,   670,   670,   671,   672,   673,   674,   674,   675,   676,
2315
     677,   678,   679,   680,   681,   682,   682,   683,   683,   683,
2316
     683,   683,   683,   683,   683,   683,   683,   684,   685,   686,
2317
     687,   688,   689,   690,   691,   692,   693,   694,   695,   695,
2318
     696,   696,   696,   696,   696,   696,   696,   696,   697,   698,
2319
     699,   700,   701,   702,   703,   704,   705,   706,   707,   707,
2320
     708,   708,   709,   710
2321
};
2322
2323
  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2324
static const yytype_int8 yyr2[] =
2325
{
2326
       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
2327
       2,     2,     2,     2,     2,     2,     2,     1,     1,     1,
2328
       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2329
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2330
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2331
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2332
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2333
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2334
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2335
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2336
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2337
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2338
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2339
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2340
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2341
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2342
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2343
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2344
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2345
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2346
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2347
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2348
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2349
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2350
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2351
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2352
       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
2353
       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
2354
       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
2355
       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
2356
       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
2357
       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
2358
       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
2359
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2360
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2361
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2362
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2363
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2364
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2365
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2366
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2367
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2368
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2369
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2370
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2371
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2372
       2,     2,     2,     2,     2,     2,     2,     3,     3,     2,
2373
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2374
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2375
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2376
       2,     3,     2,     2,     2,     2,     2,     2,     2,     2,
2377
       2,     2,     2,     3,     3,     4,     4,     4,     3,     3,
2378
       4,     4,     3,     3,     2,     2,     2,     2,     2,     2,
2379
       3,     3,     2,     2,     2,     2,     2,     2,     2,     2,
2380
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2381
       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
2382
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2383
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2384
       2,     2,     2,     2,     3,     3,     3,     2,     2,     2,
2385
       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
2386
       1,     2,     2,     2,     2,     2,     2,     2,     2,     1,
2387
       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2388
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2389
       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2390
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2391
       1,     2,     0,     1,     2,     1,     2,     0,     1,     2,
2392
       2,     2,     3,     3,     1,     2,     0,     1,     1,     1,
2393
       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
2394
       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
2395
       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
2396
       2,     2,     2,     2,     2,     2,     3,     1,     2,     0,
2397
       1,     1,     2,     2
2398
};
2399
2400
2401
#define yyerrok         (yyerrstatus = 0)
2402
#define yyclearin       (yychar = YYEMPTY)
2403
0
#define YYEMPTY         (-2)
2404
0
#define YYEOF           0
2405
2406
0
#define YYACCEPT        goto yyacceptlab
2407
0
#define YYABORT         goto yyabortlab
2408
0
#define YYERROR         goto yyerrorlab
2409
2410
2411
#define YYRECOVERING()  (!!yyerrstatus)
2412
2413
#define YYBACKUP(Token, Value)                                    \
2414
  do                                                              \
2415
    if (yychar == YYEMPTY)                                        \
2416
      {                                                           \
2417
        yychar = (Token);                                         \
2418
        yylval = (Value);                                         \
2419
        YYPOPSTACK (yylen);                                       \
2420
        yystate = *yyssp;                                         \
2421
        goto yybackup;                                            \
2422
      }                                                           \
2423
    else                                                          \
2424
      {                                                           \
2425
        yyerror (YY_("syntax error: cannot back up")); \
2426
        YYERROR;                                                  \
2427
      }                                                           \
2428
  while (0)
2429
2430
/* Error token number */
2431
0
#define YYTERROR        1
2432
#define YYERRCODE       256
2433
2434
2435
2436
/* Enable debugging if requested.  */
2437
#if YYDEBUG
2438
2439
# ifndef YYFPRINTF
2440
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2441
#  define YYFPRINTF fprintf
2442
# endif
2443
2444
# define YYDPRINTF(Args)                        \
2445
do {                                            \
2446
  if (yydebug)                                  \
2447
    YYFPRINTF Args;                             \
2448
} while (0)
2449
2450
/* This macro is provided for backward compatibility. */
2451
#ifndef YY_LOCATION_PRINT
2452
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2453
#endif
2454
2455
2456
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2457
do {                                                                      \
2458
  if (yydebug)                                                            \
2459
    {                                                                     \
2460
      YYFPRINTF (stderr, "%s ", Title);                                   \
2461
      yy_symbol_print (stderr,                                            \
2462
                  Type, Value); \
2463
      YYFPRINTF (stderr, "\n");                                           \
2464
    }                                                                     \
2465
} while (0)
2466
2467
2468
/*-----------------------------------.
2469
| Print this symbol's value on YYO.  |
2470
`-----------------------------------*/
2471
2472
static void
2473
yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2474
{
2475
  FILE *yyoutput = yyo;
2476
  YYUSE (yyoutput);
2477
  if (!yyvaluep)
2478
    return;
2479
# ifdef YYPRINT
2480
  if (yytype < YYNTOKENS)
2481
    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
2482
# endif
2483
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2484
  YYUSE (yytype);
2485
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2486
}
2487
2488
2489
/*---------------------------.
2490
| Print this symbol on YYO.  |
2491
`---------------------------*/
2492
2493
static void
2494
yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2495
{
2496
  YYFPRINTF (yyo, "%s %s (",
2497
             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2498
2499
  yy_symbol_value_print (yyo, yytype, yyvaluep);
2500
  YYFPRINTF (yyo, ")");
2501
}
2502
2503
/*------------------------------------------------------------------.
2504
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
2505
| TOP (included).                                                   |
2506
`------------------------------------------------------------------*/
2507
2508
static void
2509
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2510
{
2511
  YYFPRINTF (stderr, "Stack now");
2512
  for (; yybottom <= yytop; yybottom++)
2513
    {
2514
      int yybot = *yybottom;
2515
      YYFPRINTF (stderr, " %d", yybot);
2516
    }
2517
  YYFPRINTF (stderr, "\n");
2518
}
2519
2520
# define YY_STACK_PRINT(Bottom, Top)                            \
2521
do {                                                            \
2522
  if (yydebug)                                                  \
2523
    yy_stack_print ((Bottom), (Top));                           \
2524
} while (0)
2525
2526
2527
/*------------------------------------------------.
2528
| Report that the YYRULE is going to be reduced.  |
2529
`------------------------------------------------*/
2530
2531
static void
2532
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
2533
{
2534
  int yylno = yyrline[yyrule];
2535
  int yynrhs = yyr2[yyrule];
2536
  int yyi;
2537
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2538
             yyrule - 1, yylno);
2539
  /* The symbols being reduced.  */
2540
  for (yyi = 0; yyi < yynrhs; yyi++)
2541
    {
2542
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2543
      yy_symbol_print (stderr,
2544
                       yystos[+yyssp[yyi + 1 - yynrhs]],
2545
                       &yyvsp[(yyi + 1) - (yynrhs)]
2546
                                              );
2547
      YYFPRINTF (stderr, "\n");
2548
    }
2549
}
2550
2551
# define YY_REDUCE_PRINT(Rule)          \
2552
do {                                    \
2553
  if (yydebug)                          \
2554
    yy_reduce_print (yyssp, yyvsp, Rule); \
2555
} while (0)
2556
2557
/* Nonzero means print parse trace.  It is left uninitialized so that
2558
   multiple parsers can coexist.  */
2559
int yydebug;
2560
#else /* !YYDEBUG */
2561
# define YYDPRINTF(Args)
2562
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2563
# define YY_STACK_PRINT(Bottom, Top)
2564
# define YY_REDUCE_PRINT(Rule)
2565
#endif /* !YYDEBUG */
2566
2567
2568
/* YYINITDEPTH -- initial size of the parser's stacks.  */
2569
#ifndef YYINITDEPTH
2570
0
# define YYINITDEPTH 200
2571
#endif
2572
2573
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2574
   if the built-in stack extension method is used).
2575
2576
   Do not make this value too large; the results are undefined if
2577
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2578
   evaluated with infinite-precision integer arithmetic.  */
2579
2580
#ifndef YYMAXDEPTH
2581
0
# define YYMAXDEPTH 10000
2582
#endif
2583
2584
2585
#if YYERROR_VERBOSE
2586
2587
# ifndef yystrlen
2588
#  if defined __GLIBC__ && defined _STRING_H
2589
#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2590
#  else
2591
/* Return the length of YYSTR.  */
2592
static YYPTRDIFF_T
2593
yystrlen (const char *yystr)
2594
{
2595
  YYPTRDIFF_T yylen;
2596
  for (yylen = 0; yystr[yylen]; yylen++)
2597
    continue;
2598
  return yylen;
2599
}
2600
#  endif
2601
# endif
2602
2603
# ifndef yystpcpy
2604
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2605
#   define yystpcpy stpcpy
2606
#  else
2607
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2608
   YYDEST.  */
2609
static char *
2610
yystpcpy (char *yydest, const char *yysrc)
2611
{
2612
  char *yyd = yydest;
2613
  const char *yys = yysrc;
2614
2615
  while ((*yyd++ = *yys++) != '\0')
2616
    continue;
2617
2618
  return yyd - 1;
2619
}
2620
#  endif
2621
# endif
2622
2623
# ifndef yytnamerr
2624
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2625
   quotes and backslashes, so that it's suitable for yyerror.  The
2626
   heuristic is that double-quoting is unnecessary unless the string
2627
   contains an apostrophe, a comma, or backslash (other than
2628
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2629
   null, do not copy; instead, return the length of what the result
2630
   would have been.  */
2631
static YYPTRDIFF_T
2632
yytnamerr (char *yyres, const char *yystr)
2633
{
2634
  if (*yystr == '"')
2635
    {
2636
      YYPTRDIFF_T yyn = 0;
2637
      char const *yyp = yystr;
2638
2639
      for (;;)
2640
        switch (*++yyp)
2641
          {
2642
          case '\'':
2643
          case ',':
2644
            goto do_not_strip_quotes;
2645
2646
          case '\\':
2647
            if (*++yyp != '\\')
2648
              goto do_not_strip_quotes;
2649
            else
2650
              goto append;
2651
2652
          append:
2653
          default:
2654
            if (yyres)
2655
              yyres[yyn] = *yyp;
2656
            yyn++;
2657
            break;
2658
2659
          case '"':
2660
            if (yyres)
2661
              yyres[yyn] = '\0';
2662
            return yyn;
2663
          }
2664
    do_not_strip_quotes: ;
2665
    }
2666
2667
  if (yyres)
2668
    return yystpcpy (yyres, yystr) - yyres;
2669
  else
2670
    return yystrlen (yystr);
2671
}
2672
# endif
2673
2674
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2675
   about the unexpected token YYTOKEN for the state stack whose top is
2676
   YYSSP.
2677
2678
   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
2679
   not large enough to hold the message.  In that case, also set
2680
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
2681
   required number of bytes is too large to store.  */
2682
static int
2683
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2684
                yy_state_t *yyssp, int yytoken)
2685
{
2686
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2687
  /* Internationalized format string. */
2688
  const char *yyformat = YY_NULLPTR;
2689
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
2690
     one per "expected"). */
2691
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2692
  /* Actual size of YYARG. */
2693
  int yycount = 0;
2694
  /* Cumulated lengths of YYARG.  */
2695
  YYPTRDIFF_T yysize = 0;
2696
2697
  /* There are many possibilities here to consider:
2698
     - If this state is a consistent state with a default action, then
2699
       the only way this function was invoked is if the default action
2700
       is an error action.  In that case, don't check for expected
2701
       tokens because there are none.
2702
     - The only way there can be no lookahead present (in yychar) is if
2703
       this state is a consistent state with a default action.  Thus,
2704
       detecting the absence of a lookahead is sufficient to determine
2705
       that there is no unexpected or expected token to report.  In that
2706
       case, just report a simple "syntax error".
2707
     - Don't assume there isn't a lookahead just because this state is a
2708
       consistent state with a default action.  There might have been a
2709
       previous inconsistent state, consistent state with a non-default
2710
       action, or user semantic action that manipulated yychar.
2711
     - Of course, the expected token list depends on states to have
2712
       correct lookahead information, and it depends on the parser not
2713
       to perform extra reductions after fetching a lookahead from the
2714
       scanner and before detecting a syntax error.  Thus, state merging
2715
       (from LALR or IELR) and default reductions corrupt the expected
2716
       token list.  However, the list is correct for canonical LR with
2717
       one exception: it will still contain any token that will not be
2718
       accepted due to an error action in a later state.
2719
  */
2720
  if (yytoken != YYEMPTY)
2721
    {
2722
      int yyn = yypact[+*yyssp];
2723
      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2724
      yysize = yysize0;
2725
      yyarg[yycount++] = yytname[yytoken];
2726
      if (!yypact_value_is_default (yyn))
2727
        {
2728
          /* Start YYX at -YYN if negative to avoid negative indexes in
2729
             YYCHECK.  In other words, skip the first -YYN actions for
2730
             this state because they are default actions.  */
2731
          int yyxbegin = yyn < 0 ? -yyn : 0;
2732
          /* Stay within bounds of both yycheck and yytname.  */
2733
          int yychecklim = YYLAST - yyn + 1;
2734
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2735
          int yyx;
2736
2737
          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2738
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2739
                && !yytable_value_is_error (yytable[yyx + yyn]))
2740
              {
2741
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2742
                  {
2743
                    yycount = 1;
2744
                    yysize = yysize0;
2745
                    break;
2746
                  }
2747
                yyarg[yycount++] = yytname[yyx];
2748
                {
2749
                  YYPTRDIFF_T yysize1
2750
                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2751
                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2752
                    yysize = yysize1;
2753
                  else
2754
                    return 2;
2755
                }
2756
              }
2757
        }
2758
    }
2759
2760
  switch (yycount)
2761
    {
2762
# define YYCASE_(N, S)                      \
2763
      case N:                               \
2764
        yyformat = S;                       \
2765
      break
2766
    default: /* Avoid compiler warnings. */
2767
      YYCASE_(0, YY_("syntax error"));
2768
      YYCASE_(1, YY_("syntax error, unexpected %s"));
2769
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2770
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2771
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2772
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2773
# undef YYCASE_
2774
    }
2775
2776
  {
2777
    /* Don't count the "%s"s in the final size, but reserve room for
2778
       the terminator.  */
2779
    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
2780
    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2781
      yysize = yysize1;
2782
    else
2783
      return 2;
2784
  }
2785
2786
  if (*yymsg_alloc < yysize)
2787
    {
2788
      *yymsg_alloc = 2 * yysize;
2789
      if (! (yysize <= *yymsg_alloc
2790
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2791
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2792
      return 1;
2793
    }
2794
2795
  /* Avoid sprintf, as that infringes on the user's name space.
2796
     Don't have undefined behavior even if the translation
2797
     produced a string with the wrong number of "%s"s.  */
2798
  {
2799
    char *yyp = *yymsg;
2800
    int yyi = 0;
2801
    while ((*yyp = *yyformat) != '\0')
2802
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2803
        {
2804
          yyp += yytnamerr (yyp, yyarg[yyi++]);
2805
          yyformat += 2;
2806
        }
2807
      else
2808
        {
2809
          ++yyp;
2810
          ++yyformat;
2811
        }
2812
  }
2813
  return 0;
2814
}
2815
#endif /* YYERROR_VERBOSE */
2816
2817
/*-----------------------------------------------.
2818
| Release the memory associated to this symbol.  |
2819
`-----------------------------------------------*/
2820
2821
static void
2822
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2823
0
{
2824
0
  YYUSE (yyvaluep);
2825
0
  if (!yymsg)
2826
0
    yymsg = "Deleting";
2827
0
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2828
2829
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2830
0
  YYUSE (yytype);
2831
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2832
0
}
2833
2834
2835
2836
2837
/* The lookahead symbol.  */
2838
int yychar;
2839
2840
/* The semantic value of the lookahead symbol.  */
2841
YYSTYPE yylval;
2842
/* Number of syntax errors so far.  */
2843
int yynerrs;
2844
2845
2846
/*----------.
2847
| yyparse.  |
2848
`----------*/
2849
2850
int
2851
yyparse (void)
2852
0
{
2853
0
    yy_state_fast_t yystate;
2854
    /* Number of tokens to shift before error messages enabled.  */
2855
0
    int yyerrstatus;
2856
2857
    /* The stacks and their tools:
2858
       'yyss': related to states.
2859
       'yyvs': related to semantic values.
2860
2861
       Refer to the stacks through separate pointers, to allow yyoverflow
2862
       to reallocate them elsewhere.  */
2863
2864
    /* The state stack.  */
2865
0
    yy_state_t yyssa[YYINITDEPTH];
2866
0
    yy_state_t *yyss;
2867
0
    yy_state_t *yyssp;
2868
2869
    /* The semantic value stack.  */
2870
0
    YYSTYPE yyvsa[YYINITDEPTH];
2871
0
    YYSTYPE *yyvs;
2872
0
    YYSTYPE *yyvsp;
2873
2874
0
    YYPTRDIFF_T yystacksize;
2875
2876
0
  int yyn;
2877
0
  int yyresult;
2878
  /* Lookahead token as an internal (translated) token number.  */
2879
0
  int yytoken = 0;
2880
  /* The variables used to return semantic value and location from the
2881
     action routines.  */
2882
0
  YYSTYPE yyval;
2883
2884
#if YYERROR_VERBOSE
2885
  /* Buffer for error messages, and its allocated size.  */
2886
  char yymsgbuf[128];
2887
  char *yymsg = yymsgbuf;
2888
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
2889
#endif
2890
2891
0
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2892
2893
  /* The number of symbols on the RHS of the reduced rule.
2894
     Keep to zero when no symbol should be popped.  */
2895
0
  int yylen = 0;
2896
2897
0
  yyssp = yyss = yyssa;
2898
0
  yyvsp = yyvs = yyvsa;
2899
0
  yystacksize = YYINITDEPTH;
2900
2901
0
  YYDPRINTF ((stderr, "Starting parse\n"));
2902
2903
0
  yystate = 0;
2904
0
  yyerrstatus = 0;
2905
0
  yynerrs = 0;
2906
0
  yychar = YYEMPTY; /* Cause a token to be read.  */
2907
0
  goto yysetstate;
2908
2909
2910
/*------------------------------------------------------------.
2911
| yynewstate -- push a new state, which is found in yystate.  |
2912
`------------------------------------------------------------*/
2913
0
yynewstate:
2914
  /* In all cases, when you get here, the value and location stacks
2915
     have just been pushed.  So pushing a state here evens the stacks.  */
2916
0
  yyssp++;
2917
2918
2919
/*--------------------------------------------------------------------.
2920
| yysetstate -- set current state (the top of the stack) to yystate.  |
2921
`--------------------------------------------------------------------*/
2922
0
yysetstate:
2923
0
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2924
0
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2925
0
  YY_IGNORE_USELESS_CAST_BEGIN
2926
0
  *yyssp = YY_CAST (yy_state_t, yystate);
2927
0
  YY_IGNORE_USELESS_CAST_END
2928
2929
0
  if (yyss + yystacksize - 1 <= yyssp)
2930
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
2931
    goto yyexhaustedlab;
2932
#else
2933
0
    {
2934
      /* Get the current used size of the three stacks, in elements.  */
2935
0
      YYPTRDIFF_T yysize = yyssp - yyss + 1;
2936
2937
# if defined yyoverflow
2938
      {
2939
        /* Give user a chance to reallocate the stack.  Use copies of
2940
           these so that the &'s don't force the real ones into
2941
           memory.  */
2942
        yy_state_t *yyss1 = yyss;
2943
        YYSTYPE *yyvs1 = yyvs;
2944
2945
        /* Each stack pointer address is followed by the size of the
2946
           data in use in that stack, in bytes.  This used to be a
2947
           conditional around just the two extra args, but that might
2948
           be undefined if yyoverflow is a macro.  */
2949
        yyoverflow (YY_("memory exhausted"),
2950
                    &yyss1, yysize * YYSIZEOF (*yyssp),
2951
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
2952
                    &yystacksize);
2953
        yyss = yyss1;
2954
        yyvs = yyvs1;
2955
      }
2956
# else /* defined YYSTACK_RELOCATE */
2957
      /* Extend the stack our own way.  */
2958
0
      if (YYMAXDEPTH <= yystacksize)
2959
0
        goto yyexhaustedlab;
2960
0
      yystacksize *= 2;
2961
0
      if (YYMAXDEPTH < yystacksize)
2962
0
        yystacksize = YYMAXDEPTH;
2963
2964
0
      {
2965
0
        yy_state_t *yyss1 = yyss;
2966
0
        union yyalloc *yyptr =
2967
0
          YY_CAST (union yyalloc *,
2968
0
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2969
0
        if (! yyptr)
2970
0
          goto yyexhaustedlab;
2971
0
        YYSTACK_RELOCATE (yyss_alloc, yyss);
2972
0
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2973
0
# undef YYSTACK_RELOCATE
2974
0
        if (yyss1 != yyssa)
2975
0
          YYSTACK_FREE (yyss1);
2976
0
      }
2977
0
# endif
2978
2979
0
      yyssp = yyss + yysize - 1;
2980
0
      yyvsp = yyvs + yysize - 1;
2981
2982
0
      YY_IGNORE_USELESS_CAST_BEGIN
2983
0
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2984
0
                  YY_CAST (long, yystacksize)));
2985
0
      YY_IGNORE_USELESS_CAST_END
2986
2987
0
      if (yyss + yystacksize - 1 <= yyssp)
2988
0
        YYABORT;
2989
0
    }
2990
0
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2991
2992
0
  if (yystate == YYFINAL)
2993
0
    YYACCEPT;
2994
2995
0
  goto yybackup;
2996
2997
2998
/*-----------.
2999
| yybackup.  |
3000
`-----------*/
3001
0
yybackup:
3002
  /* Do appropriate processing given the current state.  Read a
3003
     lookahead token if we need one and don't already have one.  */
3004
3005
  /* First try to decide what to do without reference to lookahead token.  */
3006
0
  yyn = yypact[yystate];
3007
0
  if (yypact_value_is_default (yyn))
3008
0
    goto yydefault;
3009
3010
  /* Not known => get a lookahead token if don't already have one.  */
3011
3012
  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
3013
0
  if (yychar == YYEMPTY)
3014
0
    {
3015
0
      YYDPRINTF ((stderr, "Reading a token: "));
3016
0
      yychar = yylex ();
3017
0
    }
3018
3019
0
  if (yychar <= YYEOF)
3020
0
    {
3021
0
      yychar = yytoken = YYEOF;
3022
0
      YYDPRINTF ((stderr, "Now at end of input.\n"));
3023
0
    }
3024
0
  else
3025
0
    {
3026
0
      yytoken = YYTRANSLATE (yychar);
3027
0
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3028
0
    }
3029
3030
  /* If the proper action on seeing token YYTOKEN is to reduce or to
3031
     detect an error, take that action.  */
3032
0
  yyn += yytoken;
3033
0
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3034
0
    goto yydefault;
3035
0
  yyn = yytable[yyn];
3036
0
  if (yyn <= 0)
3037
0
    {
3038
0
      if (yytable_value_is_error (yyn))
3039
0
        goto yyerrlab;
3040
0
      yyn = -yyn;
3041
0
      goto yyreduce;
3042
0
    }
3043
3044
  /* Count tokens shifted since error; after three, turn off error
3045
     status.  */
3046
0
  if (yyerrstatus)
3047
0
    yyerrstatus--;
3048
3049
  /* Shift the lookahead token.  */
3050
0
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3051
0
  yystate = yyn;
3052
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3053
0
  *++yyvsp = yylval;
3054
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
3055
3056
  /* Discard the shifted token.  */
3057
0
  yychar = YYEMPTY;
3058
0
  goto yynewstate;
3059
3060
3061
/*-----------------------------------------------------------.
3062
| yydefault -- do the default action for the current state.  |
3063
`-----------------------------------------------------------*/
3064
0
yydefault:
3065
0
  yyn = yydefact[yystate];
3066
0
  if (yyn == 0)
3067
0
    goto yyerrlab;
3068
0
  goto yyreduce;
3069
3070
3071
/*-----------------------------.
3072
| yyreduce -- do a reduction.  |
3073
`-----------------------------*/
3074
0
yyreduce:
3075
  /* yyn is the number of a rule to reduce with.  */
3076
0
  yylen = yyr2[yyn];
3077
3078
  /* If YYLEN is nonzero, implement the default value of the action:
3079
     '$$ = $1'.
3080
3081
     Otherwise, the following line sets YYVAL to garbage.
3082
     This behavior is undocumented and Bison
3083
     users should not rely upon it.  Assigning to YYVAL
3084
     unconditionally makes the parser a bit smaller, and it avoids a
3085
     GCC warning that YYVAL may be used uninitialized.  */
3086
0
  yyval = yyvsp[1-yylen];
3087
3088
3089
0
  YY_REDUCE_PRINT (yyn);
3090
0
  switch (yyn)
3091
0
    {
3092
0
  case 18:
3093
0
#line 212 "./util/configparser.y"
3094
0
        {
3095
0
    OUTYY(("\nP(force-toplevel)\n"));
3096
0
    cfg_parser->started_toplevel = 0;
3097
0
  }
3098
0
#line 3099 "util/configparser.c"
3099
0
    break;
3100
3101
0
  case 19:
3102
0
#line 219 "./util/configparser.y"
3103
0
        {
3104
0
    OUTYY(("\nP(server:)\n"));
3105
0
    cfg_parser->started_toplevel = 1;
3106
0
  }
3107
0
#line 3108 "util/configparser.c"
3108
0
    break;
3109
3110
0
  case 260:
3111
0
#line 335 "./util/configparser.y"
3112
0
        {
3113
0
    struct config_stub* s;
3114
0
    OUTYY(("\nP(stub_zone:)\n"));
3115
0
    cfg_parser->started_toplevel = 1;
3116
0
    s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3117
0
    if(s) {
3118
0
      s->next = cfg_parser->cfg->stubs;
3119
0
      cfg_parser->cfg->stubs = s;
3120
0
    } else {
3121
0
      yyerror("out of memory");
3122
0
    }
3123
0
  }
3124
0
#line 3125 "util/configparser.c"
3125
0
    break;
3126
3127
0
  case 271:
3128
0
#line 354 "./util/configparser.y"
3129
0
        {
3130
0
    struct config_stub* s;
3131
0
    OUTYY(("\nP(forward_zone:)\n"));
3132
0
    cfg_parser->started_toplevel = 1;
3133
0
    s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3134
0
    if(s) {
3135
0
      s->next = cfg_parser->cfg->forwards;
3136
0
      cfg_parser->cfg->forwards = s;
3137
0
    } else {
3138
0
      yyerror("out of memory");
3139
0
    }
3140
0
  }
3141
0
#line 3142 "util/configparser.c"
3142
0
    break;
3143
3144
0
  case 281:
3145
0
#line 373 "./util/configparser.y"
3146
0
        {
3147
0
    struct config_view* s;
3148
0
    OUTYY(("\nP(view:)\n"));
3149
0
    cfg_parser->started_toplevel = 1;
3150
0
    s = (struct config_view*)calloc(1, sizeof(struct config_view));
3151
0
    if(s) {
3152
0
      s->next = cfg_parser->cfg->views;
3153
0
      if(s->next && !s->next->name)
3154
0
        yyerror("view without name");
3155
0
      cfg_parser->cfg->views = s;
3156
0
    } else {
3157
0
      yyerror("out of memory");
3158
0
    }
3159
0
  }
3160
0
#line 3161 "util/configparser.c"
3161
0
    break;
3162
3163
0
  case 291:
3164
0
#line 394 "./util/configparser.y"
3165
0
        {
3166
0
    struct config_auth* s;
3167
0
    OUTYY(("\nP(auth_zone:)\n"));
3168
0
    cfg_parser->started_toplevel = 1;
3169
0
    s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3170
0
    if(s) {
3171
0
      s->next = cfg_parser->cfg->auths;
3172
0
      cfg_parser->cfg->auths = s;
3173
      /* defaults for auth zone */
3174
0
      s->for_downstream = 1;
3175
0
      s->for_upstream = 1;
3176
0
      s->fallback_enabled = 0;
3177
0
      s->zonemd_check = 0;
3178
0
      s->zonemd_reject_absence = 0;
3179
0
      s->isrpz = 0;
3180
0
    } else {
3181
0
      yyerror("out of memory");
3182
0
    }
3183
0
  }
3184
0
#line 3185 "util/configparser.c"
3185
0
    break;
3186
3187
0
  case 304:
3188
0
#line 422 "./util/configparser.y"
3189
0
        {
3190
0
    uint8_t* bitlist;
3191
0
    size_t len = 0;
3192
0
    OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3193
0
    bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3194
0
      &len);
3195
0
    free((yyvsp[0].str));
3196
0
    if(!bitlist) {
3197
0
      yyerror("could not parse tags, (define-tag them first)");
3198
0
    }
3199
0
    if(bitlist) {
3200
0
      cfg_parser->cfg->auths->rpz_taglist = bitlist;
3201
0
      cfg_parser->cfg->auths->rpz_taglistlen = len;
3202
3203
0
    }
3204
0
  }
3205
0
#line 3206 "util/configparser.c"
3206
0
    break;
3207
3208
0
  case 305:
3209
0
#line 441 "./util/configparser.y"
3210
0
        {
3211
0
    OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3212
0
    if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3213
0
       strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3214
0
       strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3215
0
      yyerror("rpz-action-override action: expected nxdomain, "
3216
0
        "nodata, passthru, drop, cname or disabled");
3217
0
      free((yyvsp[0].str));
3218
0
      cfg_parser->cfg->auths->rpz_action_override = NULL;
3219
0
    }
3220
0
    else {
3221
0
      cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3222
0
    }
3223
0
  }
3224
0
#line 3225 "util/configparser.c"
3225
0
    break;
3226
3227
0
  case 306:
3228
0
#line 458 "./util/configparser.y"
3229
0
        {
3230
0
    OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3231
0
    free(cfg_parser->cfg->auths->rpz_cname);
3232
0
    cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3233
0
  }
3234
0
#line 3235 "util/configparser.c"
3235
0
    break;
3236
3237
0
  case 307:
3238
0
#line 466 "./util/configparser.y"
3239
0
        {
3240
0
    OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3241
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3242
0
      yyerror("expected yes or no.");
3243
0
    else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3244
0
    free((yyvsp[0].str));
3245
0
  }
3246
0
#line 3247 "util/configparser.c"
3247
0
    break;
3248
3249
0
  case 308:
3250
0
#line 476 "./util/configparser.y"
3251
0
        {
3252
0
    OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3253
0
    free(cfg_parser->cfg->auths->rpz_log_name);
3254
0
    cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3255
0
  }
3256
0
#line 3257 "util/configparser.c"
3257
0
    break;
3258
3259
0
  case 309:
3260
0
#line 483 "./util/configparser.y"
3261
0
        {
3262
0
    OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
3263
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3264
0
      yyerror("expected yes or no.");
3265
0
    else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
3266
0
    free((yyvsp[0].str));
3267
0
  }
3268
0
#line 3269 "util/configparser.c"
3269
0
    break;
3270
3271
0
  case 310:
3272
0
#line 493 "./util/configparser.y"
3273
0
        {
3274
0
    struct config_auth* s;
3275
0
    OUTYY(("\nP(rpz:)\n"));
3276
0
    cfg_parser->started_toplevel = 1;
3277
0
    s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3278
0
    if(s) {
3279
0
      s->next = cfg_parser->cfg->auths;
3280
0
      cfg_parser->cfg->auths = s;
3281
      /* defaults for RPZ auth zone */
3282
0
      s->for_downstream = 0;
3283
0
      s->for_upstream = 0;
3284
0
      s->fallback_enabled = 0;
3285
0
      s->isrpz = 1;
3286
0
    } else {
3287
0
      yyerror("out of memory");
3288
0
    }
3289
0
  }
3290
0
#line 3291 "util/configparser.c"
3291
0
    break;
3292
3293
0
  case 325:
3294
0
#line 518 "./util/configparser.y"
3295
0
        {
3296
0
    OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3297
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3298
0
      yyerror("number expected");
3299
0
    else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3300
0
    free((yyvsp[0].str));
3301
0
  }
3302
0
#line 3303 "util/configparser.c"
3303
0
    break;
3304
3305
0
  case 326:
3306
0
#line 527 "./util/configparser.y"
3307
0
        {
3308
0
    OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3309
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3310
0
      yyerror("number expected");
3311
0
    else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3312
0
    free((yyvsp[0].str));
3313
0
  }
3314
0
#line 3315 "util/configparser.c"
3315
0
    break;
3316
3317
0
  case 327:
3318
0
#line 536 "./util/configparser.y"
3319
0
        {
3320
0
    OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3321
0
    if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3322
0
      cfg_parser->cfg->stat_interval = 0;
3323
0
    else if(atoi((yyvsp[0].str)) == 0)
3324
0
      yyerror("number expected");
3325
0
    else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3326
0
    free((yyvsp[0].str));
3327
0
  }
3328
0
#line 3329 "util/configparser.c"
3329
0
    break;
3330
3331
0
  case 328:
3332
0
#line 547 "./util/configparser.y"
3333
0
        {
3334
0
    OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3335
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3336
0
      yyerror("expected yes or no.");
3337
0
    else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3338
0
    free((yyvsp[0].str));
3339
0
  }
3340
0
#line 3341 "util/configparser.c"
3341
0
    break;
3342
3343
0
  case 329:
3344
0
#line 556 "./util/configparser.y"
3345
0
        {
3346
0
    OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3347
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3348
0
      yyerror("expected yes or no.");
3349
0
    else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3350
0
    free((yyvsp[0].str));
3351
0
  }
3352
0
#line 3353 "util/configparser.c"
3353
0
    break;
3354
3355
0
  case 330:
3356
0
#line 565 "./util/configparser.y"
3357
0
        {
3358
0
    OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str)));
3359
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3360
0
      yyerror("expected yes or no.");
3361
0
    else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0);
3362
0
    free((yyvsp[0].str));
3363
0
  }
3364
0
#line 3365 "util/configparser.c"
3365
0
    break;
3366
3367
0
  case 331:
3368
0
#line 574 "./util/configparser.y"
3369
0
        {
3370
0
    OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3371
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3372
0
      yyerror("expected yes or no.");
3373
0
    else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3374
0
    free((yyvsp[0].str));
3375
0
  }
3376
0
#line 3377 "util/configparser.c"
3377
0
    break;
3378
3379
0
  case 332:
3380
0
#line 583 "./util/configparser.y"
3381
0
        {
3382
0
    OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3383
0
    if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3384
0
      cfg_parser->cfg->shm_key = 0;
3385
0
    else if(atoi((yyvsp[0].str)) == 0)
3386
0
      yyerror("number expected");
3387
0
    else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3388
0
    free((yyvsp[0].str));
3389
0
  }
3390
0
#line 3391 "util/configparser.c"
3391
0
    break;
3392
3393
0
  case 333:
3394
0
#line 594 "./util/configparser.y"
3395
0
        {
3396
0
    OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3397
0
    if(atoi((yyvsp[0].str)) == 0)
3398
0
      yyerror("port number expected");
3399
0
    else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3400
0
    free((yyvsp[0].str));
3401
0
  }
3402
0
#line 3403 "util/configparser.c"
3403
0
    break;
3404
3405
0
  case 334:
3406
0
#line 603 "./util/configparser.y"
3407
0
        {
3408
  #ifdef CLIENT_SUBNET
3409
    OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3410
    if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3411
      fatal_exit("out of memory adding client-subnet");
3412
  #else
3413
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3414
0
    free((yyvsp[0].str));
3415
0
  #endif
3416
0
  }
3417
0
#line 3418 "util/configparser.c"
3418
0
    break;
3419
3420
0
  case 335:
3421
0
#line 615 "./util/configparser.y"
3422
0
        {
3423
  #ifdef CLIENT_SUBNET
3424
    OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3425
    if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3426
      (yyvsp[0].str)))
3427
      fatal_exit("out of memory adding client-subnet-zone");
3428
  #else
3429
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3430
0
    free((yyvsp[0].str));
3431
0
  #endif
3432
0
  }
3433
0
#line 3434 "util/configparser.c"
3434
0
    break;
3435
3436
0
  case 336:
3437
0
#line 629 "./util/configparser.y"
3438
0
        {
3439
  #ifdef CLIENT_SUBNET
3440
    OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3441
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3442
      yyerror("expected yes or no.");
3443
    else
3444
      cfg_parser->cfg->client_subnet_always_forward =
3445
        (strcmp((yyvsp[0].str), "yes")==0);
3446
  #else
3447
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3448
0
  #endif
3449
0
    free((yyvsp[0].str));
3450
0
  }
3451
0
#line 3452 "util/configparser.c"
3452
0
    break;
3453
3454
0
  case 337:
3455
0
#line 644 "./util/configparser.y"
3456
0
        {
3457
  #ifdef CLIENT_SUBNET
3458
    OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3459
    OUTYY(("P(Deprecated option, ignoring)\n"));
3460
  #else
3461
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3462
0
  #endif
3463
0
    free((yyvsp[0].str));
3464
0
  }
3465
0
#line 3466 "util/configparser.c"
3466
0
    break;
3467
3468
0
  case 338:
3469
0
#line 655 "./util/configparser.y"
3470
0
        {
3471
  #ifdef CLIENT_SUBNET
3472
    OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3473
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3474
      yyerror("IPv4 subnet length expected");
3475
    else if (atoi((yyvsp[0].str)) > 32)
3476
      cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3477
    else if (atoi((yyvsp[0].str)) < 0)
3478
      cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3479
    else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3480
  #else
3481
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3482
0
  #endif
3483
0
    free((yyvsp[0].str));
3484
0
  }
3485
0
#line 3486 "util/configparser.c"
3486
0
    break;
3487
3488
0
  case 339:
3489
0
#line 672 "./util/configparser.y"
3490
0
        {
3491
  #ifdef CLIENT_SUBNET
3492
    OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3493
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3494
      yyerror("Ipv6 subnet length expected");
3495
    else if (atoi((yyvsp[0].str)) > 128)
3496
      cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3497
    else if (atoi((yyvsp[0].str)) < 0)
3498
      cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3499
    else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3500
  #else
3501
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3502
0
  #endif
3503
0
    free((yyvsp[0].str));
3504
0
  }
3505
0
#line 3506 "util/configparser.c"
3506
0
    break;
3507
3508
0
  case 340:
3509
0
#line 689 "./util/configparser.y"
3510
0
        {
3511
  #ifdef CLIENT_SUBNET
3512
    OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3513
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3514
      yyerror("IPv4 subnet length expected");
3515
    else if (atoi((yyvsp[0].str)) > 32)
3516
      cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3517
    else if (atoi((yyvsp[0].str)) < 0)
3518
      cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3519
    else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3520
  #else
3521
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3522
0
  #endif
3523
0
    free((yyvsp[0].str));
3524
0
  }
3525
0
#line 3526 "util/configparser.c"
3526
0
    break;
3527
3528
0
  case 341:
3529
0
#line 706 "./util/configparser.y"
3530
0
        {
3531
  #ifdef CLIENT_SUBNET
3532
    OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3533
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3534
      yyerror("Ipv6 subnet length expected");
3535
    else if (atoi((yyvsp[0].str)) > 128)
3536
      cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3537
    else if (atoi((yyvsp[0].str)) < 0)
3538
      cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3539
    else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3540
  #else
3541
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3542
0
  #endif
3543
0
    free((yyvsp[0].str));
3544
0
  }
3545
0
#line 3546 "util/configparser.c"
3546
0
    break;
3547
3548
0
  case 342:
3549
0
#line 723 "./util/configparser.y"
3550
0
        {
3551
  #ifdef CLIENT_SUBNET
3552
    OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3553
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3554
      yyerror("IPv4 ECS tree size expected");
3555
    else if (atoi((yyvsp[0].str)) < 0)
3556
      cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3557
    else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3558
  #else
3559
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3560
0
  #endif
3561
0
    free((yyvsp[0].str));
3562
0
  }
3563
0
#line 3564 "util/configparser.c"
3564
0
    break;
3565
3566
0
  case 343:
3567
0
#line 738 "./util/configparser.y"
3568
0
        {
3569
  #ifdef CLIENT_SUBNET
3570
    OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3571
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3572
      yyerror("IPv6 ECS tree size expected");
3573
    else if (atoi((yyvsp[0].str)) < 0)
3574
      cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3575
    else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3576
  #else
3577
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3578
0
  #endif
3579
0
    free((yyvsp[0].str));
3580
0
  }
3581
0
#line 3582 "util/configparser.c"
3582
0
    break;
3583
3584
0
  case 344:
3585
0
#line 753 "./util/configparser.y"
3586
0
        {
3587
0
    OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3588
0
    if(cfg_parser->cfg->num_ifs == 0)
3589
0
      cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3590
0
    else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3591
0
        (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3592
0
    if(!cfg_parser->cfg->ifs)
3593
0
      yyerror("out of memory");
3594
0
    else
3595
0
      cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3596
0
  }
3597
0
#line 3598 "util/configparser.c"
3598
0
    break;
3599
3600
0
  case 345:
3601
0
#line 766 "./util/configparser.y"
3602
0
        {
3603
0
    OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3604
0
    if(cfg_parser->cfg->num_out_ifs == 0)
3605
0
      cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3606
0
    else cfg_parser->cfg->out_ifs = realloc(
3607
0
      cfg_parser->cfg->out_ifs,
3608
0
      (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3609
0
    if(!cfg_parser->cfg->out_ifs)
3610
0
      yyerror("out of memory");
3611
0
    else
3612
0
      cfg_parser->cfg->out_ifs[
3613
0
        cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3614
0
  }
3615
0
#line 3616 "util/configparser.c"
3616
0
    break;
3617
3618
0
  case 346:
3619
0
#line 781 "./util/configparser.y"
3620
0
        {
3621
0
    OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3622
0
    if(atoi((yyvsp[0].str)) == 0)
3623
0
      yyerror("number expected");
3624
0
    else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3625
0
    free((yyvsp[0].str));
3626
0
  }
3627
0
#line 3628 "util/configparser.c"
3628
0
    break;
3629
3630
0
  case 347:
3631
0
#line 790 "./util/configparser.y"
3632
0
        {
3633
0
    OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3634
0
    if(!cfg_mark_ports((yyvsp[0].str), 1,
3635
0
      cfg_parser->cfg->outgoing_avail_ports, 65536))
3636
0
      yyerror("port number or range (\"low-high\") expected");
3637
0
    free((yyvsp[0].str));
3638
0
  }
3639
0
#line 3640 "util/configparser.c"
3640
0
    break;
3641
3642
0
  case 348:
3643
0
#line 799 "./util/configparser.y"
3644
0
        {
3645
0
    OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3646
0
    if(!cfg_mark_ports((yyvsp[0].str), 0,
3647
0
      cfg_parser->cfg->outgoing_avail_ports, 65536))
3648
0
      yyerror("port number or range (\"low-high\") expected");
3649
0
    free((yyvsp[0].str));
3650
0
  }
3651
0
#line 3652 "util/configparser.c"
3652
0
    break;
3653
3654
0
  case 349:
3655
0
#line 808 "./util/configparser.y"
3656
0
        {
3657
0
    OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3658
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3659
0
      yyerror("number expected");
3660
0
    else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3661
0
    free((yyvsp[0].str));
3662
0
  }
3663
0
#line 3664 "util/configparser.c"
3664
0
    break;
3665
3666
0
  case 350:
3667
0
#line 817 "./util/configparser.y"
3668
0
        {
3669
0
    OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3670
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3671
0
      yyerror("number expected");
3672
0
    else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3673
0
    free((yyvsp[0].str));
3674
0
  }
3675
0
#line 3676 "util/configparser.c"
3676
0
    break;
3677
3678
0
  case 351:
3679
0
#line 826 "./util/configparser.y"
3680
0
        {
3681
0
    OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3682
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3683
0
      yyerror("expected yes or no.");
3684
0
    else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3685
0
    free((yyvsp[0].str));
3686
0
  }
3687
0
#line 3688 "util/configparser.c"
3688
0
    break;
3689
3690
0
  case 352:
3691
0
#line 835 "./util/configparser.y"
3692
0
        {
3693
0
    OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
3694
0
    free(cfg_parser->cfg->if_automatic_ports);
3695
0
    cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
3696
0
  }
3697
0
#line 3698 "util/configparser.c"
3698
0
    break;
3699
3700
0
  case 353:
3701
0
#line 842 "./util/configparser.y"
3702
0
        {
3703
0
    OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3704
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3705
0
      yyerror("expected yes or no.");
3706
0
    else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3707
0
    free((yyvsp[0].str));
3708
0
  }
3709
0
#line 3710 "util/configparser.c"
3710
0
    break;
3711
3712
0
  case 354:
3713
0
#line 851 "./util/configparser.y"
3714
0
        {
3715
0
    OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3716
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3717
0
      yyerror("expected yes or no.");
3718
0
    else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3719
0
    free((yyvsp[0].str));
3720
0
  }
3721
0
#line 3722 "util/configparser.c"
3722
0
    break;
3723
3724
0
  case 355:
3725
0
#line 860 "./util/configparser.y"
3726
0
        {
3727
0
    OUTYY(("P(server_do_nat64:%s)\n", (yyvsp[0].str)));
3728
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3729
0
      yyerror("expected yes or no.");
3730
0
    else cfg_parser->cfg->do_nat64 = (strcmp((yyvsp[0].str), "yes")==0);
3731
0
    free((yyvsp[0].str));
3732
0
  }
3733
0
#line 3734 "util/configparser.c"
3734
0
    break;
3735
3736
0
  case 356:
3737
0
#line 869 "./util/configparser.y"
3738
0
        {
3739
0
    OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3740
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3741
0
      yyerror("expected yes or no.");
3742
0
    else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3743
0
    free((yyvsp[0].str));
3744
0
  }
3745
0
#line 3746 "util/configparser.c"
3746
0
    break;
3747
3748
0
  case 357:
3749
0
#line 878 "./util/configparser.y"
3750
0
        {
3751
0
    OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3752
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3753
0
      yyerror("expected yes or no.");
3754
0
    else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3755
0
    free((yyvsp[0].str));
3756
0
  }
3757
0
#line 3758 "util/configparser.c"
3758
0
    break;
3759
3760
0
  case 358:
3761
0
#line 887 "./util/configparser.y"
3762
0
        {
3763
0
    OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3764
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3765
0
      yyerror("expected yes or no.");
3766
0
    else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3767
0
    free((yyvsp[0].str));
3768
0
  }
3769
0
#line 3770 "util/configparser.c"
3770
0
    break;
3771
3772
0
  case 359:
3773
0
#line 896 "./util/configparser.y"
3774
0
        {
3775
0
    OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
3776
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3777
0
      yyerror("expected yes or no.");
3778
0
    else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3779
0
    free((yyvsp[0].str));
3780
0
  }
3781
0
#line 3782 "util/configparser.c"
3782
0
    break;
3783
3784
0
  case 360:
3785
0
#line 905 "./util/configparser.y"
3786
0
        {
3787
0
    OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
3788
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3789
0
        yyerror("number expected");
3790
0
    else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
3791
0
    free((yyvsp[0].str));
3792
0
  }
3793
0
#line 3794 "util/configparser.c"
3794
0
    break;
3795
3796
0
  case 361:
3797
0
#line 914 "./util/configparser.y"
3798
0
        {
3799
0
    OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
3800
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3801
0
      yyerror("number expected");
3802
0
    else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
3803
0
    free((yyvsp[0].str));
3804
0
  }
3805
0
#line 3806 "util/configparser.c"
3806
0
    break;
3807
3808
0
  case 362:
3809
0
#line 923 "./util/configparser.y"
3810
0
        {
3811
0
    OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
3812
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3813
0
      yyerror("number expected");
3814
0
    else if (atoi((yyvsp[0].str)) > 120000)
3815
0
      cfg_parser->cfg->tcp_idle_timeout = 120000;
3816
0
    else if (atoi((yyvsp[0].str)) < 1)
3817
0
      cfg_parser->cfg->tcp_idle_timeout = 1;
3818
0
    else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
3819
0
    free((yyvsp[0].str));
3820
0
  }
3821
0
#line 3822 "util/configparser.c"
3822
0
    break;
3823
3824
0
  case 363:
3825
0
#line 936 "./util/configparser.y"
3826
0
        {
3827
0
    OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
3828
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3829
0
      yyerror("number expected");
3830
0
    else if (atoi((yyvsp[0].str)) < 1)
3831
0
      cfg_parser->cfg->max_reuse_tcp_queries = 0;
3832
0
    else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
3833
0
    free((yyvsp[0].str));
3834
0
  }
3835
0
#line 3836 "util/configparser.c"
3836
0
    break;
3837
3838
0
  case 364:
3839
0
#line 947 "./util/configparser.y"
3840
0
        {
3841
0
    OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
3842
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3843
0
      yyerror("number expected");
3844
0
    else if (atoi((yyvsp[0].str)) < 1)
3845
0
      cfg_parser->cfg->tcp_reuse_timeout = 0;
3846
0
    else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
3847
0
    free((yyvsp[0].str));
3848
0
  }
3849
0
#line 3850 "util/configparser.c"
3850
0
    break;
3851
3852
0
  case 365:
3853
0
#line 958 "./util/configparser.y"
3854
0
        {
3855
0
    OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
3856
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3857
0
      yyerror("number expected");
3858
0
    else if (atoi((yyvsp[0].str)) < 1)
3859
0
      cfg_parser->cfg->tcp_auth_query_timeout = 0;
3860
0
    else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
3861
0
    free((yyvsp[0].str));
3862
0
  }
3863
0
#line 3864 "util/configparser.c"
3864
0
    break;
3865
3866
0
  case 366:
3867
0
#line 969 "./util/configparser.y"
3868
0
        {
3869
0
    OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
3870
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3871
0
      yyerror("expected yes or no.");
3872
0
    else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
3873
0
    free((yyvsp[0].str));
3874
0
  }
3875
0
#line 3876 "util/configparser.c"
3876
0
    break;
3877
3878
0
  case 367:
3879
0
#line 978 "./util/configparser.y"
3880
0
        {
3881
0
    OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
3882
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3883
0
      yyerror("number expected");
3884
0
    else if (atoi((yyvsp[0].str)) > 6553500)
3885
0
      cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
3886
0
    else if (atoi((yyvsp[0].str)) < 1)
3887
0
      cfg_parser->cfg->tcp_keepalive_timeout = 0;
3888
0
    else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
3889
0
    free((yyvsp[0].str));
3890
0
  }
3891
0
#line 3892 "util/configparser.c"
3892
0
    break;
3893
3894
0
  case 368:
3895
0
#line 991 "./util/configparser.y"
3896
0
        {
3897
0
    OUTYY(("P(server_sock_queue_timeout:%s)\n", (yyvsp[0].str)));
3898
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3899
0
      yyerror("number expected");
3900
0
    else if (atoi((yyvsp[0].str)) > 6553500)
3901
0
      cfg_parser->cfg->sock_queue_timeout = 6553500;
3902
0
    else if (atoi((yyvsp[0].str)) < 1)
3903
0
      cfg_parser->cfg->sock_queue_timeout = 0;
3904
0
    else cfg_parser->cfg->sock_queue_timeout = atoi((yyvsp[0].str));
3905
0
    free((yyvsp[0].str));
3906
0
  }
3907
0
#line 3908 "util/configparser.c"
3908
0
    break;
3909
3910
0
  case 369:
3911
0
#line 1004 "./util/configparser.y"
3912
0
        {
3913
0
    OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
3914
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3915
0
      yyerror("expected yes or no.");
3916
0
    else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3917
0
    free((yyvsp[0].str));
3918
0
  }
3919
0
#line 3920 "util/configparser.c"
3920
0
    break;
3921
3922
0
  case 370:
3923
0
#line 1013 "./util/configparser.y"
3924
0
        {
3925
0
    OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
3926
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3927
0
      yyerror("expected yes or no.");
3928
0
    else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3929
0
    free((yyvsp[0].str));
3930
0
  }
3931
0
#line 3932 "util/configparser.c"
3932
0
    break;
3933
3934
0
  case 371:
3935
0
#line 1022 "./util/configparser.y"
3936
0
        {
3937
0
    OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
3938
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3939
0
      yyerror("expected yes or no.");
3940
0
    else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3941
0
    free((yyvsp[0].str));
3942
0
  }
3943
0
#line 3944 "util/configparser.c"
3944
0
    break;
3945
3946
0
  case 372:
3947
0
#line 1031 "./util/configparser.y"
3948
0
        {
3949
0
    OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
3950
0
    free(cfg_parser->cfg->ssl_service_key);
3951
0
    cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
3952
0
  }
3953
0
#line 3954 "util/configparser.c"
3954
0
    break;
3955
3956
0
  case 373:
3957
0
#line 1038 "./util/configparser.y"
3958
0
        {
3959
0
    OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
3960
0
    free(cfg_parser->cfg->ssl_service_pem);
3961
0
    cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
3962
0
  }
3963
0
#line 3964 "util/configparser.c"
3964
0
    break;
3965
3966
0
  case 374:
3967
0
#line 1045 "./util/configparser.y"
3968
0
        {
3969
0
    OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
3970
0
    if(atoi((yyvsp[0].str)) == 0)
3971
0
      yyerror("port number expected");
3972
0
    else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
3973
0
    free((yyvsp[0].str));
3974
0
  }
3975
0
#line 3976 "util/configparser.c"
3976
0
    break;
3977
3978
0
  case 375:
3979
0
#line 1054 "./util/configparser.y"
3980
0
        {
3981
0
    OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
3982
0
    free(cfg_parser->cfg->tls_cert_bundle);
3983
0
    cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
3984
0
  }
3985
0
#line 3986 "util/configparser.c"
3986
0
    break;
3987
3988
0
  case 376:
3989
0
#line 1061 "./util/configparser.y"
3990
0
        {
3991
0
    OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
3992
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3993
0
      yyerror("expected yes or no.");
3994
0
    else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
3995
0
    free((yyvsp[0].str));
3996
0
  }
3997
0
#line 3998 "util/configparser.c"
3998
0
    break;
3999
4000
0
  case 377:
4001
0
#line 1070 "./util/configparser.y"
4002
0
        {
4003
0
    OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
4004
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
4005
0
      (yyvsp[0].str)))
4006
0
      yyerror("out of memory");
4007
0
  }
4008
0
#line 4009 "util/configparser.c"
4009
0
    break;
4010
4011
0
  case 378:
4012
0
#line 1078 "./util/configparser.y"
4013
0
        {
4014
0
    OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
4015
0
    free(cfg_parser->cfg->tls_ciphers);
4016
0
    cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
4017
0
  }
4018
0
#line 4019 "util/configparser.c"
4019
0
    break;
4020
4021
0
  case 379:
4022
0
#line 1085 "./util/configparser.y"
4023
0
        {
4024
0
    OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
4025
0
    free(cfg_parser->cfg->tls_ciphersuites);
4026
0
    cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
4027
0
  }
4028
0
#line 4029 "util/configparser.c"
4029
0
    break;
4030
4031
0
  case 380:
4032
0
#line 1092 "./util/configparser.y"
4033
0
        {
4034
0
    OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
4035
0
    if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
4036
0
      (yyvsp[0].str)))
4037
0
      yyerror("out of memory");
4038
0
  }
4039
0
#line 4040 "util/configparser.c"
4040
0
    break;
4041
4042
0
  case 381:
4043
0
#line 1100 "./util/configparser.y"
4044
0
        {
4045
0
    OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4046
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4047
0
      yyerror("expected yes or no.");
4048
0
    else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4049
0
    free((yyvsp[0].str));
4050
0
  }
4051
0
#line 4052 "util/configparser.c"
4052
0
    break;
4053
4054
0
  case 382:
4055
0
#line 1109 "./util/configparser.y"
4056
0
        {
4057
0
    OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4058
0
    if(atoi((yyvsp[0].str)) == 0)
4059
0
      yyerror("port number expected");
4060
0
    else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4061
0
    free((yyvsp[0].str));
4062
0
  }
4063
0
#line 4064 "util/configparser.c"
4064
0
    break;
4065
4066
0
  case 383:
4067
0
#line 1117 "./util/configparser.y"
4068
0
        {
4069
0
    OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4070
0
    free(cfg_parser->cfg->http_endpoint);
4071
0
    if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4072
0
      cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4073
0
      if(!cfg_parser->cfg->http_endpoint)
4074
0
        yyerror("out of memory");
4075
0
      cfg_parser->cfg->http_endpoint[0] = '/';
4076
0
      memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4077
0
        strlen((yyvsp[0].str))+1);
4078
0
      free((yyvsp[0].str));
4079
0
    } else {
4080
0
      cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4081
0
    }
4082
0
  }
4083
0
#line 4084 "util/configparser.c"
4084
0
    break;
4085
4086
0
  case 384:
4087
0
#line 1133 "./util/configparser.y"
4088
0
        {
4089
0
    OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4090
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4091
0
      yyerror("number expected");
4092
0
    else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4093
0
    free((yyvsp[0].str));
4094
0
  }
4095
0
#line 4096 "util/configparser.c"
4096
0
    break;
4097
4098
0
  case 385:
4099
0
#line 1141 "./util/configparser.y"
4100
0
        {
4101
0
    OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4102
0
    if(!cfg_parse_memsize((yyvsp[0].str),
4103
0
      &cfg_parser->cfg->http_query_buffer_size))
4104
0
      yyerror("memory size expected");
4105
0
    free((yyvsp[0].str));
4106
0
  }
4107
0
#line 4108 "util/configparser.c"
4108
0
    break;
4109
4110
0
  case 386:
4111
0
#line 1149 "./util/configparser.y"
4112
0
        {
4113
0
    OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4114
0
    if(!cfg_parse_memsize((yyvsp[0].str),
4115
0
      &cfg_parser->cfg->http_response_buffer_size))
4116
0
      yyerror("memory size expected");
4117
0
    free((yyvsp[0].str));
4118
0
  }
4119
0
#line 4120 "util/configparser.c"
4120
0
    break;
4121
4122
0
  case 387:
4123
0
#line 1157 "./util/configparser.y"
4124
0
        {
4125
0
    OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4126
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4127
0
      yyerror("expected yes or no.");
4128
0
    else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4129
0
    free((yyvsp[0].str));
4130
0
  }
4131
0
#line 4132 "util/configparser.c"
4132
0
    break;
4133
4134
0
  case 388:
4135
0
#line 1165 "./util/configparser.y"
4136
0
        {
4137
0
    OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4138
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4139
0
      yyerror("expected yes or no.");
4140
0
    else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4141
0
    free((yyvsp[0].str));
4142
0
  }
4143
0
#line 4144 "util/configparser.c"
4144
0
    break;
4145
4146
0
  case 389:
4147
0
#line 1173 "./util/configparser.y"
4148
0
        {
4149
0
    OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4150
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4151
0
      yyerror("expected yes or no.");
4152
0
    else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4153
0
    free((yyvsp[0].str));
4154
0
  }
4155
0
#line 4156 "util/configparser.c"
4156
0
    break;
4157
4158
0
  case 390:
4159
0
#line 1182 "./util/configparser.y"
4160
0
        {
4161
0
    OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4162
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4163
0
      yyerror("expected yes or no.");
4164
0
    else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4165
0
    free((yyvsp[0].str));
4166
0
  }
4167
0
#line 4168 "util/configparser.c"
4168
0
    break;
4169
4170
0
  case 391:
4171
0
#line 1191 "./util/configparser.y"
4172
0
        {
4173
0
    OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4174
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4175
0
      yyerror("expected yes or no.");
4176
0
    else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4177
#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4178
    if(strcmp((yyvsp[0].str), "yes") == 0)
4179
      yyerror("no syslog services are available. "
4180
        "(reconfigure and compile to add)");
4181
#endif
4182
0
    free((yyvsp[0].str));
4183
0
  }
4184
0
#line 4185 "util/configparser.c"
4185
0
    break;
4186
4187
0
  case 392:
4188
0
#line 1205 "./util/configparser.y"
4189
0
        {
4190
0
    OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4191
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4192
0
      yyerror("expected yes or no.");
4193
0
    else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4194
0
    free((yyvsp[0].str));
4195
0
  }
4196
0
#line 4197 "util/configparser.c"
4197
0
    break;
4198
4199
0
  case 393:
4200
0
#line 1214 "./util/configparser.y"
4201
0
        {
4202
0
    OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4203
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4204
0
      yyerror("expected yes or no.");
4205
0
    else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4206
0
    free((yyvsp[0].str));
4207
0
  }
4208
0
#line 4209 "util/configparser.c"
4209
0
    break;
4210
4211
0
  case 394:
4212
0
#line 1223 "./util/configparser.y"
4213
0
        {
4214
0
    OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4215
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4216
0
      yyerror("expected yes or no.");
4217
0
    else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4218
0
    free((yyvsp[0].str));
4219
0
  }
4220
0
#line 4221 "util/configparser.c"
4221
0
    break;
4222
4223
0
  case 395:
4224
0
#line 1232 "./util/configparser.y"
4225
0
        {
4226
0
    OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4227
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4228
0
      yyerror("expected yes or no.");
4229
0
    else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4230
0
    free((yyvsp[0].str));
4231
0
  }
4232
0
#line 4233 "util/configparser.c"
4233
0
    break;
4234
4235
0
  case 396:
4236
0
#line 1241 "./util/configparser.y"
4237
0
        {
4238
0
    OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4239
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4240
0
      yyerror("expected yes or no.");
4241
0
    else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4242
0
    free((yyvsp[0].str));
4243
0
  }
4244
0
#line 4245 "util/configparser.c"
4245
0
    break;
4246
4247
0
  case 397:
4248
0
#line 1250 "./util/configparser.y"
4249
0
        {
4250
0
    OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4251
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4252
0
      yyerror("expected yes or no.");
4253
0
    else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4254
0
    free((yyvsp[0].str));
4255
0
  }
4256
0
#line 4257 "util/configparser.c"
4257
0
    break;
4258
4259
0
  case 398:
4260
0
#line 1259 "./util/configparser.y"
4261
0
        {
4262
0
    OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4263
0
    free(cfg_parser->cfg->chrootdir);
4264
0
    cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4265
0
  }
4266
0
#line 4267 "util/configparser.c"
4267
0
    break;
4268
4269
0
  case 399:
4270
0
#line 1266 "./util/configparser.y"
4271
0
        {
4272
0
    OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4273
0
    free(cfg_parser->cfg->username);
4274
0
    cfg_parser->cfg->username = (yyvsp[0].str);
4275
0
  }
4276
0
#line 4277 "util/configparser.c"
4277
0
    break;
4278
4279
0
  case 400:
4280
0
#line 1273 "./util/configparser.y"
4281
0
        {
4282
0
    OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4283
0
    free(cfg_parser->cfg->directory);
4284
0
    cfg_parser->cfg->directory = (yyvsp[0].str);
4285
    /* change there right away for includes relative to this */
4286
0
    if((yyvsp[0].str)[0]) {
4287
0
      char* d;
4288
#ifdef UB_ON_WINDOWS
4289
      w_config_adjust_directory(cfg_parser->cfg);
4290
#endif
4291
0
      d = cfg_parser->cfg->directory;
4292
      /* adjust directory if we have already chroot,
4293
       * like, we reread after sighup */
4294
0
      if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4295
0
        strncmp(d, cfg_parser->chroot, strlen(
4296
0
        cfg_parser->chroot)) == 0)
4297
0
        d += strlen(cfg_parser->chroot);
4298
0
      if(d[0]) {
4299
0
        if(chdir(d))
4300
0
        log_err("cannot chdir to directory: %s (%s)",
4301
0
          d, strerror(errno));
4302
0
      }
4303
0
    }
4304
0
  }
4305
0
#line 4306 "util/configparser.c"
4306
0
    break;
4307
4308
0
  case 401:
4309
0
#line 1299 "./util/configparser.y"
4310
0
        {
4311
0
    OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4312
0
    free(cfg_parser->cfg->logfile);
4313
0
    cfg_parser->cfg->logfile = (yyvsp[0].str);
4314
0
    cfg_parser->cfg->use_syslog = 0;
4315
0
  }
4316
0
#line 4317 "util/configparser.c"
4317
0
    break;
4318
4319
0
  case 402:
4320
0
#line 1307 "./util/configparser.y"
4321
0
        {
4322
0
    OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4323
0
    free(cfg_parser->cfg->pidfile);
4324
0
    cfg_parser->cfg->pidfile = (yyvsp[0].str);
4325
0
  }
4326
0
#line 4327 "util/configparser.c"
4327
0
    break;
4328
4329
0
  case 403:
4330
0
#line 1314 "./util/configparser.y"
4331
0
        {
4332
0
    OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4333
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4334
0
      yyerror("out of memory");
4335
0
  }
4336
0
#line 4337 "util/configparser.c"
4337
0
    break;
4338
4339
0
  case 404:
4340
0
#line 1321 "./util/configparser.y"
4341
0
        {
4342
0
    OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4343
0
    log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4344
0
    free((yyvsp[0].str));
4345
0
  }
4346
0
#line 4347 "util/configparser.c"
4347
0
    break;
4348
4349
0
  case 405:
4350
0
#line 1328 "./util/configparser.y"
4351
0
        {
4352
0
    OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4353
0
    log_warn("option dlv-anchor ignored: DLV is decommissioned");
4354
0
    free((yyvsp[0].str));
4355
0
  }
4356
0
#line 4357 "util/configparser.c"
4357
0
    break;
4358
4359
0
  case 406:
4360
0
#line 1335 "./util/configparser.y"
4361
0
        {
4362
0
    OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4363
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->
4364
0
      auto_trust_anchor_file_list, (yyvsp[0].str)))
4365
0
      yyerror("out of memory");
4366
0
  }
4367
0
#line 4368 "util/configparser.c"
4368
0
    break;
4369
4370
0
  case 407:
4371
0
#line 1343 "./util/configparser.y"
4372
0
        {
4373
0
    OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4374
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->
4375
0
      trust_anchor_file_list, (yyvsp[0].str)))
4376
0
      yyerror("out of memory");
4377
0
  }
4378
0
#line 4379 "util/configparser.c"
4379
0
    break;
4380
4381
0
  case 408:
4382
0
#line 1351 "./util/configparser.y"
4383
0
        {
4384
0
    OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4385
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->
4386
0
      trusted_keys_file_list, (yyvsp[0].str)))
4387
0
      yyerror("out of memory");
4388
0
  }
4389
0
#line 4390 "util/configparser.c"
4390
0
    break;
4391
4392
0
  case 409:
4393
0
#line 1359 "./util/configparser.y"
4394
0
        {
4395
0
    OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4396
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4397
0
      yyerror("out of memory");
4398
0
  }
4399
0
#line 4400 "util/configparser.c"
4400
0
    break;
4401
4402
0
  case 410:
4403
0
#line 1366 "./util/configparser.y"
4404
0
        {
4405
0
    OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4406
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4407
0
      yyerror("expected yes or no.");
4408
0
    else
4409
0
      cfg_parser->cfg->trust_anchor_signaling =
4410
0
        (strcmp((yyvsp[0].str), "yes")==0);
4411
0
    free((yyvsp[0].str));
4412
0
  }
4413
0
#line 4414 "util/configparser.c"
4414
0
    break;
4415
4416
0
  case 411:
4417
0
#line 1377 "./util/configparser.y"
4418
0
        {
4419
0
    OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4420
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4421
0
      yyerror("expected yes or no.");
4422
0
    else
4423
0
      cfg_parser->cfg->root_key_sentinel =
4424
0
        (strcmp((yyvsp[0].str), "yes")==0);
4425
0
    free((yyvsp[0].str));
4426
0
  }
4427
0
#line 4428 "util/configparser.c"
4428
0
    break;
4429
4430
0
  case 412:
4431
0
#line 1388 "./util/configparser.y"
4432
0
        {
4433
0
    OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4434
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4435
0
      yyerror("out of memory");
4436
0
  }
4437
0
#line 4438 "util/configparser.c"
4438
0
    break;
4439
4440
0
  case 413:
4441
0
#line 1395 "./util/configparser.y"
4442
0
        {
4443
0
    OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4444
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4445
0
      yyerror("expected yes or no.");
4446
0
    else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4447
0
    free((yyvsp[0].str));
4448
0
  }
4449
0
#line 4450 "util/configparser.c"
4450
0
    break;
4451
4452
0
  case 414:
4453
0
#line 1404 "./util/configparser.y"
4454
0
        {
4455
0
    OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4456
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4457
0
      yyerror("expected yes or no.");
4458
0
    else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4459
0
    free((yyvsp[0].str));
4460
0
  }
4461
0
#line 4462 "util/configparser.c"
4462
0
    break;
4463
4464
0
  case 415:
4465
0
#line 1413 "./util/configparser.y"
4466
0
        {
4467
0
    OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4468
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4469
0
      yyerror("expected yes or no.");
4470
0
    else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4471
0
    free((yyvsp[0].str));
4472
0
  }
4473
0
#line 4474 "util/configparser.c"
4474
0
    break;
4475
4476
0
  case 416:
4477
0
#line 1422 "./util/configparser.y"
4478
0
        {
4479
0
    OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4480
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4481
0
      yyerror("expected yes or no.");
4482
0
    else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4483
0
    free((yyvsp[0].str));
4484
0
  }
4485
0
#line 4486 "util/configparser.c"
4486
0
    break;
4487
4488
0
  case 417:
4489
0
#line 1431 "./util/configparser.y"
4490
0
        {
4491
0
    OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4492
0
    free(cfg_parser->cfg->identity);
4493
0
    cfg_parser->cfg->identity = (yyvsp[0].str);
4494
0
  }
4495
0
#line 4496 "util/configparser.c"
4496
0
    break;
4497
4498
0
  case 418:
4499
0
#line 1438 "./util/configparser.y"
4500
0
        {
4501
0
    OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4502
0
    free(cfg_parser->cfg->version);
4503
0
    cfg_parser->cfg->version = (yyvsp[0].str);
4504
0
  }
4505
0
#line 4506 "util/configparser.c"
4506
0
    break;
4507
4508
0
  case 419:
4509
0
#line 1445 "./util/configparser.y"
4510
0
        {
4511
0
    OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4512
0
    free(cfg_parser->cfg->http_user_agent);
4513
0
    cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4514
0
  }
4515
0
#line 4516 "util/configparser.c"
4516
0
    break;
4517
4518
0
  case 420:
4519
0
#line 1452 "./util/configparser.y"
4520
0
        {
4521
0
    OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4522
0
    free(cfg_parser->cfg->nsid_cfg_str);
4523
0
    cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4524
0
    free(cfg_parser->cfg->nsid);
4525
0
    cfg_parser->cfg->nsid = NULL;
4526
0
    cfg_parser->cfg->nsid_len = 0;
4527
0
    if (*(yyvsp[0].str) == 0)
4528
0
      ; /* pass; empty string is not setting nsid */
4529
0
    else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4530
0
          (yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4531
0
      yyerror("the NSID must be either a hex string or an "
4532
0
          "ascii character string prepended with ascii_.");
4533
0
  }
4534
0
#line 4535 "util/configparser.c"
4535
0
    break;
4536
4537
0
  case 421:
4538
0
#line 1468 "./util/configparser.y"
4539
0
        {
4540
0
    OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4541
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4542
0
      yyerror("buffer size expected");
4543
0
    free((yyvsp[0].str));
4544
0
  }
4545
0
#line 4546 "util/configparser.c"
4546
0
    break;
4547
4548
0
  case 422:
4549
0
#line 1476 "./util/configparser.y"
4550
0
        {
4551
0
    OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4552
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4553
0
      yyerror("buffer size expected");
4554
0
    free((yyvsp[0].str));
4555
0
  }
4556
0
#line 4557 "util/configparser.c"
4557
0
    break;
4558
4559
0
  case 423:
4560
0
#line 1484 "./util/configparser.y"
4561
0
        {
4562
0
    OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4563
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4564
0
      yyerror("expected yes or no.");
4565
0
    else cfg_parser->cfg->so_reuseport =
4566
0
      (strcmp((yyvsp[0].str), "yes")==0);
4567
0
    free((yyvsp[0].str));
4568
0
  }
4569
0
#line 4570 "util/configparser.c"
4570
0
    break;
4571
4572
0
  case 424:
4573
0
#line 1494 "./util/configparser.y"
4574
0
        {
4575
0
    OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4576
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4577
0
      yyerror("expected yes or no.");
4578
0
    else cfg_parser->cfg->ip_transparent =
4579
0
      (strcmp((yyvsp[0].str), "yes")==0);
4580
0
    free((yyvsp[0].str));
4581
0
  }
4582
0
#line 4583 "util/configparser.c"
4583
0
    break;
4584
4585
0
  case 425:
4586
0
#line 1504 "./util/configparser.y"
4587
0
        {
4588
0
    OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4589
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4590
0
      yyerror("expected yes or no.");
4591
0
    else cfg_parser->cfg->ip_freebind =
4592
0
      (strcmp((yyvsp[0].str), "yes")==0);
4593
0
    free((yyvsp[0].str));
4594
0
  }
4595
0
#line 4596 "util/configparser.c"
4596
0
    break;
4597
4598
0
  case 426:
4599
0
#line 1514 "./util/configparser.y"
4600
0
        {
4601
0
    OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4602
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4603
0
      yyerror("number expected");
4604
0
    else if (atoi((yyvsp[0].str)) > 63)
4605
0
      yyerror("value too large (max 63)");
4606
0
    else if (atoi((yyvsp[0].str)) < 0)
4607
0
      yyerror("value too small (min 0)");
4608
0
    else
4609
0
      cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4610
0
    free((yyvsp[0].str));
4611
0
  }
4612
0
#line 4613 "util/configparser.c"
4613
0
    break;
4614
4615
0
  case 427:
4616
0
#line 1528 "./util/configparser.y"
4617
0
        {
4618
0
    OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4619
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4620
0
      yyerror("memory size expected");
4621
0
    free((yyvsp[0].str));
4622
0
  }
4623
0
#line 4624 "util/configparser.c"
4624
0
    break;
4625
4626
0
  case 428:
4627
0
#line 1536 "./util/configparser.y"
4628
0
        {
4629
0
    OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4630
0
    if(atoi((yyvsp[0].str)) == 0)
4631
0
      yyerror("number expected");
4632
0
    else if (atoi((yyvsp[0].str)) < 12)
4633
0
      yyerror("edns buffer size too small");
4634
0
    else if (atoi((yyvsp[0].str)) > 65535)
4635
0
      cfg_parser->cfg->edns_buffer_size = 65535;
4636
0
    else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4637
0
    free((yyvsp[0].str));
4638
0
  }
4639
0
#line 4640 "util/configparser.c"
4640
0
    break;
4641
4642
0
  case 429:
4643
0
#line 1549 "./util/configparser.y"
4644
0
        {
4645
0
    OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4646
0
    if(atoi((yyvsp[0].str)) == 0)
4647
0
      yyerror("number expected");
4648
0
    else if (atoi((yyvsp[0].str)) < 4096)
4649
0
      yyerror("message buffer size too small (use 4096)");
4650
0
    else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4651
0
    free((yyvsp[0].str));
4652
0
  }
4653
0
#line 4654 "util/configparser.c"
4654
0
    break;
4655
4656
0
  case 430:
4657
0
#line 1560 "./util/configparser.y"
4658
0
        {
4659
0
    OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4660
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4661
0
      yyerror("memory size expected");
4662
0
    free((yyvsp[0].str));
4663
0
  }
4664
0
#line 4665 "util/configparser.c"
4665
0
    break;
4666
4667
0
  case 431:
4668
0
#line 1568 "./util/configparser.y"
4669
0
        {
4670
0
    OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4671
0
    if(atoi((yyvsp[0].str)) == 0) {
4672
0
      yyerror("number expected");
4673
0
    } else {
4674
0
      cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4675
0
      if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4676
0
        yyerror("must be a power of 2");
4677
0
    }
4678
0
    free((yyvsp[0].str));
4679
0
  }
4680
0
#line 4681 "util/configparser.c"
4681
0
    break;
4682
4683
0
  case 432:
4684
0
#line 1581 "./util/configparser.y"
4685
0
        {
4686
0
    OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4687
0
    if(atoi((yyvsp[0].str)) == 0)
4688
0
      yyerror("number expected");
4689
0
    else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4690
0
    free((yyvsp[0].str));
4691
0
  }
4692
0
#line 4693 "util/configparser.c"
4693
0
    break;
4694
4695
0
  case 433:
4696
0
#line 1590 "./util/configparser.y"
4697
0
        {
4698
0
    OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4699
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4700
0
      yyerror("number expected");
4701
0
    else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4702
0
    free((yyvsp[0].str));
4703
0
  }
4704
0
#line 4705 "util/configparser.c"
4705
0
    break;
4706
4707
0
  case 434:
4708
0
#line 1599 "./util/configparser.y"
4709
0
        {
4710
0
    OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4711
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4712
0
      yyerror("number expected");
4713
0
    else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4714
0
    free((yyvsp[0].str));
4715
0
  }
4716
0
#line 4717 "util/configparser.c"
4717
0
    break;
4718
4719
0
  case 435:
4720
0
#line 1608 "./util/configparser.y"
4721
0
        {
4722
0
    OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4723
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4724
0
      yyerror("expected yes or no.");
4725
0
    else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4726
0
    free((yyvsp[0].str));
4727
0
  }
4728
0
#line 4729 "util/configparser.c"
4729
0
    break;
4730
4731
0
  case 436:
4732
0
#line 1617 "./util/configparser.y"
4733
0
        {
4734
0
    OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4735
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4736
0
      yyerror("expected yes or no.");
4737
0
    else cfg_parser->cfg->unblock_lan_zones =
4738
0
      (strcmp((yyvsp[0].str), "yes")==0);
4739
0
    free((yyvsp[0].str));
4740
0
  }
4741
0
#line 4742 "util/configparser.c"
4742
0
    break;
4743
4744
0
  case 437:
4745
0
#line 1627 "./util/configparser.y"
4746
0
        {
4747
0
    OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4748
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4749
0
      yyerror("expected yes or no.");
4750
0
    else cfg_parser->cfg->insecure_lan_zones =
4751
0
      (strcmp((yyvsp[0].str), "yes")==0);
4752
0
    free((yyvsp[0].str));
4753
0
  }
4754
0
#line 4755 "util/configparser.c"
4755
0
    break;
4756
4757
0
  case 438:
4758
0
#line 1637 "./util/configparser.y"
4759
0
        {
4760
0
    OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4761
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4762
0
      yyerror("memory size expected");
4763
0
    free((yyvsp[0].str));
4764
0
  }
4765
0
#line 4766 "util/configparser.c"
4766
0
    break;
4767
4768
0
  case 439:
4769
0
#line 1645 "./util/configparser.y"
4770
0
        {
4771
0
    OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4772
0
    if(atoi((yyvsp[0].str)) == 0) {
4773
0
      yyerror("number expected");
4774
0
    } else {
4775
0
      cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4776
0
      if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4777
0
        yyerror("must be a power of 2");
4778
0
    }
4779
0
    free((yyvsp[0].str));
4780
0
  }
4781
0
#line 4782 "util/configparser.c"
4782
0
    break;
4783
4784
0
  case 440:
4785
0
#line 1658 "./util/configparser.y"
4786
0
        {
4787
0
    OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4788
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4789
0
      yyerror("number expected");
4790
0
    else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4791
0
    free((yyvsp[0].str));
4792
0
  }
4793
0
#line 4794 "util/configparser.c"
4794
0
    break;
4795
4796
0
  case 441:
4797
0
#line 1667 "./util/configparser.y"
4798
0
        {
4799
0
    OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4800
0
    verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4801
0
      "removed, use infra-host-ttl)", (yyvsp[0].str));
4802
0
    free((yyvsp[0].str));
4803
0
  }
4804
0
#line 4805 "util/configparser.c"
4805
0
    break;
4806
4807
0
  case 442:
4808
0
#line 1675 "./util/configparser.y"
4809
0
        {
4810
0
    OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4811
0
    if(atoi((yyvsp[0].str)) == 0)
4812
0
      yyerror("number expected");
4813
0
    else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4814
0
    free((yyvsp[0].str));
4815
0
  }
4816
0
#line 4817 "util/configparser.c"
4817
0
    break;
4818
4819
0
  case 443:
4820
0
#line 1684 "./util/configparser.y"
4821
0
        {
4822
0
    OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4823
0
    verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4824
0
      "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4825
0
    free((yyvsp[0].str));
4826
0
  }
4827
0
#line 4828 "util/configparser.c"
4828
0
    break;
4829
4830
0
  case 444:
4831
0
#line 1692 "./util/configparser.y"
4832
0
        {
4833
0
    OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4834
0
    if(atoi((yyvsp[0].str)) == 0) {
4835
0
      yyerror("number expected");
4836
0
    } else {
4837
0
      cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4838
0
      if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4839
0
        yyerror("must be a power of 2");
4840
0
    }
4841
0
    free((yyvsp[0].str));
4842
0
  }
4843
0
#line 4844 "util/configparser.c"
4844
0
    break;
4845
4846
0
  case 445:
4847
0
#line 1705 "./util/configparser.y"
4848
0
        {
4849
0
    OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4850
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4851
0
      yyerror("number expected");
4852
0
    else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4853
0
    free((yyvsp[0].str));
4854
0
  }
4855
0
#line 4856 "util/configparser.c"
4856
0
    break;
4857
4858
0
  case 446:
4859
0
#line 1714 "./util/configparser.y"
4860
0
        {
4861
0
    OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
4862
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4863
0
      yyerror("number expected");
4864
0
    else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
4865
0
    free((yyvsp[0].str));
4866
0
  }
4867
0
#line 4868 "util/configparser.c"
4868
0
    break;
4869
4870
0
  case 447:
4871
0
#line 1723 "./util/configparser.y"
4872
0
        {
4873
0
    OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4874
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4875
0
      yyerror("expected yes or no.");
4876
0
    else cfg_parser->cfg->infra_keep_probing =
4877
0
      (strcmp((yyvsp[0].str), "yes")==0);
4878
0
    free((yyvsp[0].str));
4879
0
  }
4880
0
#line 4881 "util/configparser.c"
4881
0
    break;
4882
4883
0
  case 448:
4884
0
#line 1733 "./util/configparser.y"
4885
0
        {
4886
0
    OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4887
0
    free(cfg_parser->cfg->target_fetch_policy);
4888
0
    cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4889
0
  }
4890
0
#line 4891 "util/configparser.c"
4891
0
    break;
4892
4893
0
  case 449:
4894
0
#line 1740 "./util/configparser.y"
4895
0
        {
4896
0
    OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4897
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4898
0
      yyerror("expected yes or no.");
4899
0
    else cfg_parser->cfg->harden_short_bufsize =
4900
0
      (strcmp((yyvsp[0].str), "yes")==0);
4901
0
    free((yyvsp[0].str));
4902
0
  }
4903
0
#line 4904 "util/configparser.c"
4904
0
    break;
4905
4906
0
  case 450:
4907
0
#line 1750 "./util/configparser.y"
4908
0
        {
4909
0
    OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
4910
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4911
0
      yyerror("expected yes or no.");
4912
0
    else cfg_parser->cfg->harden_large_queries =
4913
0
      (strcmp((yyvsp[0].str), "yes")==0);
4914
0
    free((yyvsp[0].str));
4915
0
  }
4916
0
#line 4917 "util/configparser.c"
4917
0
    break;
4918
4919
0
  case 451:
4920
0
#line 1760 "./util/configparser.y"
4921
0
        {
4922
0
    OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
4923
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4924
0
      yyerror("expected yes or no.");
4925
0
    else cfg_parser->cfg->harden_glue =
4926
0
      (strcmp((yyvsp[0].str), "yes")==0);
4927
0
    free((yyvsp[0].str));
4928
0
  }
4929
0
#line 4930 "util/configparser.c"
4930
0
    break;
4931
4932
0
  case 452:
4933
0
#line 1770 "./util/configparser.y"
4934
0
        {
4935
0
    OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
4936
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4937
0
      yyerror("expected yes or no.");
4938
0
    else cfg_parser->cfg->harden_dnssec_stripped =
4939
0
      (strcmp((yyvsp[0].str), "yes")==0);
4940
0
    free((yyvsp[0].str));
4941
0
  }
4942
0
#line 4943 "util/configparser.c"
4943
0
    break;
4944
4945
0
  case 453:
4946
0
#line 1780 "./util/configparser.y"
4947
0
        {
4948
0
    OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
4949
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4950
0
      yyerror("expected yes or no.");
4951
0
    else cfg_parser->cfg->harden_below_nxdomain =
4952
0
      (strcmp((yyvsp[0].str), "yes")==0);
4953
0
    free((yyvsp[0].str));
4954
0
  }
4955
0
#line 4956 "util/configparser.c"
4956
0
    break;
4957
4958
0
  case 454:
4959
0
#line 1790 "./util/configparser.y"
4960
0
        {
4961
0
    OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
4962
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4963
0
      yyerror("expected yes or no.");
4964
0
    else cfg_parser->cfg->harden_referral_path =
4965
0
      (strcmp((yyvsp[0].str), "yes")==0);
4966
0
    free((yyvsp[0].str));
4967
0
  }
4968
0
#line 4969 "util/configparser.c"
4969
0
    break;
4970
4971
0
  case 455:
4972
0
#line 1800 "./util/configparser.y"
4973
0
        {
4974
0
    OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
4975
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4976
0
      yyerror("expected yes or no.");
4977
0
    else cfg_parser->cfg->harden_algo_downgrade =
4978
0
      (strcmp((yyvsp[0].str), "yes")==0);
4979
0
    free((yyvsp[0].str));
4980
0
  }
4981
0
#line 4982 "util/configparser.c"
4982
0
    break;
4983
4984
0
  case 456:
4985
0
#line 1810 "./util/configparser.y"
4986
0
        {
4987
0
    OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
4988
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4989
0
      yyerror("expected yes or no.");
4990
0
    else cfg_parser->cfg->harden_unknown_additional =
4991
0
      (strcmp((yyvsp[0].str), "yes")==0);
4992
0
    free((yyvsp[0].str));
4993
0
  }
4994
0
#line 4995 "util/configparser.c"
4995
0
    break;
4996
4997
0
  case 457:
4998
0
#line 1820 "./util/configparser.y"
4999
0
        {
5000
0
    OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5001
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5002
0
      yyerror("expected yes or no.");
5003
0
    else cfg_parser->cfg->use_caps_bits_for_id =
5004
0
      (strcmp((yyvsp[0].str), "yes")==0);
5005
0
    free((yyvsp[0].str));
5006
0
  }
5007
0
#line 5008 "util/configparser.c"
5008
0
    break;
5009
5010
0
  case 458:
5011
0
#line 1830 "./util/configparser.y"
5012
0
        {
5013
0
    OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5014
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5015
0
      yyerror("out of memory");
5016
0
  }
5017
0
#line 5018 "util/configparser.c"
5018
0
    break;
5019
5020
0
  case 459:
5021
0
#line 1837 "./util/configparser.y"
5022
0
        {
5023
0
    OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5024
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5025
0
      yyerror("out of memory");
5026
0
  }
5027
0
#line 5028 "util/configparser.c"
5028
0
    break;
5029
5030
0
  case 460:
5031
0
#line 1844 "./util/configparser.y"
5032
0
        {
5033
0
    OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5034
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5035
0
      yyerror("out of memory");
5036
0
  }
5037
0
#line 5038 "util/configparser.c"
5038
0
    break;
5039
5040
0
  case 461:
5041
0
#line 1851 "./util/configparser.y"
5042
0
        {
5043
0
    OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5044
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5045
0
      yyerror("expected yes or no.");
5046
0
    else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5047
0
    free((yyvsp[0].str));
5048
0
  }
5049
0
#line 5050 "util/configparser.c"
5050
0
    break;
5051
5052
0
  case 462:
5053
0
#line 1860 "./util/configparser.y"
5054
0
        {
5055
0
    OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5056
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5057
0
      yyerror("expected yes or no.");
5058
0
    else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5059
0
    free((yyvsp[0].str));
5060
0
  }
5061
0
#line 5062 "util/configparser.c"
5062
0
    break;
5063
5064
0
  case 463:
5065
0
#line 1869 "./util/configparser.y"
5066
0
        {
5067
0
    OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5068
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5069
0
      yyerror("expected yes or no.");
5070
0
    else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5071
0
    free((yyvsp[0].str));
5072
0
  }
5073
0
#line 5074 "util/configparser.c"
5074
0
    break;
5075
5076
0
  case 464:
5077
0
#line 1878 "./util/configparser.y"
5078
0
        {
5079
0
    OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5080
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5081
0
      yyerror("number expected");
5082
0
    else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5083
0
    free((yyvsp[0].str));
5084
0
  }
5085
0
#line 5086 "util/configparser.c"
5086
0
    break;
5087
5088
0
  case 465:
5089
0
#line 1887 "./util/configparser.y"
5090
0
        {
5091
0
    OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5092
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5093
0
      yyerror("out of memory");
5094
0
  }
5095
0
#line 5096 "util/configparser.c"
5096
0
    break;
5097
5098
0
  case 466:
5099
0
#line 1894 "./util/configparser.y"
5100
0
        {
5101
0
    OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5102
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5103
0
      yyerror("expected yes or no.");
5104
0
    else cfg_parser->cfg->donotquery_localhost =
5105
0
      (strcmp((yyvsp[0].str), "yes")==0);
5106
0
    free((yyvsp[0].str));
5107
0
  }
5108
0
#line 5109 "util/configparser.c"
5109
0
    break;
5110
5111
0
  case 467:
5112
0
#line 1904 "./util/configparser.y"
5113
0
        {
5114
0
    OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5115
0
    validate_acl_action((yyvsp[0].str));
5116
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5117
0
      fatal_exit("out of memory adding acl");
5118
0
  }
5119
0
#line 5120 "util/configparser.c"
5120
0
    break;
5121
5122
0
  case 468:
5123
0
#line 1912 "./util/configparser.y"
5124
0
        {
5125
0
    OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5126
0
    validate_acl_action((yyvsp[0].str));
5127
0
    if(!cfg_str2list_insert(
5128
0
      &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5129
0
      fatal_exit("out of memory adding acl");
5130
0
  }
5131
0
#line 5132 "util/configparser.c"
5132
0
    break;
5133
5134
0
  case 469:
5135
0
#line 1921 "./util/configparser.y"
5136
0
        {
5137
0
    OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5138
0
    free(cfg_parser->cfg->module_conf);
5139
0
    cfg_parser->cfg->module_conf = (yyvsp[0].str);
5140
0
  }
5141
0
#line 5142 "util/configparser.c"
5142
0
    break;
5143
5144
0
  case 470:
5145
0
#line 1928 "./util/configparser.y"
5146
0
        {
5147
0
    OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5148
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5149
0
      cfg_parser->cfg->val_date_override = 0;
5150
0
    } else if(strlen((yyvsp[0].str)) == 14) {
5151
0
      cfg_parser->cfg->val_date_override =
5152
0
        cfg_convert_timeval((yyvsp[0].str));
5153
0
      if(!cfg_parser->cfg->val_date_override)
5154
0
        yyerror("bad date/time specification");
5155
0
    } else {
5156
0
      if(atoi((yyvsp[0].str)) == 0)
5157
0
        yyerror("number expected");
5158
0
      cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5159
0
    }
5160
0
    free((yyvsp[0].str));
5161
0
  }
5162
0
#line 5163 "util/configparser.c"
5163
0
    break;
5164
5165
0
  case 471:
5166
0
#line 1946 "./util/configparser.y"
5167
0
        {
5168
0
    OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5169
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5170
0
      cfg_parser->cfg->val_sig_skew_min = 0;
5171
0
    } else {
5172
0
      cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5173
0
      if(!cfg_parser->cfg->val_sig_skew_min)
5174
0
        yyerror("number expected");
5175
0
    }
5176
0
    free((yyvsp[0].str));
5177
0
  }
5178
0
#line 5179 "util/configparser.c"
5179
0
    break;
5180
5181
0
  case 472:
5182
0
#line 1959 "./util/configparser.y"
5183
0
        {
5184
0
    OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5185
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5186
0
      cfg_parser->cfg->val_sig_skew_max = 0;
5187
0
    } else {
5188
0
      cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5189
0
      if(!cfg_parser->cfg->val_sig_skew_max)
5190
0
        yyerror("number expected");
5191
0
    }
5192
0
    free((yyvsp[0].str));
5193
0
  }
5194
0
#line 5195 "util/configparser.c"
5195
0
    break;
5196
5197
0
  case 473:
5198
0
#line 1972 "./util/configparser.y"
5199
0
        {
5200
0
    OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5201
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5202
0
      cfg_parser->cfg->val_max_restart = 0;
5203
0
    } else {
5204
0
      cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5205
0
      if(!cfg_parser->cfg->val_max_restart)
5206
0
        yyerror("number expected");
5207
0
    }
5208
0
    free((yyvsp[0].str));
5209
0
  }
5210
0
#line 5211 "util/configparser.c"
5211
0
    break;
5212
5213
0
  case 474:
5214
0
#line 1985 "./util/configparser.y"
5215
0
        {
5216
0
    OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5217
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5218
0
      yyerror("number expected");
5219
0
    else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5220
0
    free((yyvsp[0].str));
5221
0
  }
5222
0
#line 5223 "util/configparser.c"
5223
0
    break;
5224
5225
0
  case 475:
5226
0
#line 1994 "./util/configparser.y"
5227
0
        {
5228
0
    OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5229
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5230
0
      yyerror("number expected");
5231
0
    else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5232
0
    free((yyvsp[0].str));
5233
0
  }
5234
0
#line 5235 "util/configparser.c"
5235
0
    break;
5236
5237
0
  case 476:
5238
0
#line 2003 "./util/configparser.y"
5239
0
        {
5240
0
    OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5241
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5242
0
      yyerror("number expected");
5243
0
    else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5244
0
    free((yyvsp[0].str));
5245
0
  }
5246
0
#line 5247 "util/configparser.c"
5247
0
    break;
5248
5249
0
  case 477:
5250
0
#line 2012 "./util/configparser.y"
5251
0
        {
5252
0
    OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5253
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5254
0
      yyerror("number expected");
5255
0
    else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5256
0
    free((yyvsp[0].str));
5257
0
  }
5258
0
#line 5259 "util/configparser.c"
5259
0
    break;
5260
5261
0
  case 478:
5262
0
#line 2021 "./util/configparser.y"
5263
0
        {
5264
0
    OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5265
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5266
0
      yyerror("expected yes or no.");
5267
0
    else cfg_parser->cfg->val_clean_additional =
5268
0
      (strcmp((yyvsp[0].str), "yes")==0);
5269
0
    free((yyvsp[0].str));
5270
0
  }
5271
0
#line 5272 "util/configparser.c"
5272
0
    break;
5273
5274
0
  case 479:
5275
0
#line 2031 "./util/configparser.y"
5276
0
        {
5277
0
    OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5278
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5279
0
      yyerror("expected yes or no.");
5280
0
    else cfg_parser->cfg->val_permissive_mode =
5281
0
      (strcmp((yyvsp[0].str), "yes")==0);
5282
0
    free((yyvsp[0].str));
5283
0
  }
5284
0
#line 5285 "util/configparser.c"
5285
0
    break;
5286
5287
0
  case 480:
5288
0
#line 2041 "./util/configparser.y"
5289
0
        {
5290
0
    OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5291
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5292
0
      yyerror("expected yes or no.");
5293
0
    else
5294
0
      cfg_parser->cfg->aggressive_nsec =
5295
0
        (strcmp((yyvsp[0].str), "yes")==0);
5296
0
    free((yyvsp[0].str));
5297
0
  }
5298
0
#line 5299 "util/configparser.c"
5299
0
    break;
5300
5301
0
  case 481:
5302
0
#line 2052 "./util/configparser.y"
5303
0
        {
5304
0
    OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5305
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5306
0
      yyerror("expected yes or no.");
5307
0
    else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5308
0
    free((yyvsp[0].str));
5309
0
  }
5310
0
#line 5311 "util/configparser.c"
5311
0
    break;
5312
5313
0
  case 482:
5314
0
#line 2061 "./util/configparser.y"
5315
0
        {
5316
0
    OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5317
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5318
0
      yyerror("expected yes or no.");
5319
0
    else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5320
0
    free((yyvsp[0].str));
5321
0
  }
5322
0
#line 5323 "util/configparser.c"
5323
0
    break;
5324
5325
0
  case 483:
5326
0
#line 2070 "./util/configparser.y"
5327
0
        {
5328
0
    OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5329
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5330
0
      yyerror("number expected");
5331
0
    else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5332
0
    free((yyvsp[0].str));
5333
0
  }
5334
0
#line 5335 "util/configparser.c"
5335
0
    break;
5336
5337
0
  case 484:
5338
0
#line 2079 "./util/configparser.y"
5339
0
        {
5340
0
    OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5341
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5342
0
      yyerror("expected yes or no.");
5343
0
    else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5344
0
    free((yyvsp[0].str));
5345
0
  }
5346
0
#line 5347 "util/configparser.c"
5347
0
    break;
5348
5349
0
  case 485:
5350
0
#line 2088 "./util/configparser.y"
5351
0
        {
5352
0
    OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5353
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5354
0
      yyerror("number expected");
5355
0
    else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5356
0
    free((yyvsp[0].str));
5357
0
  }
5358
0
#line 5359 "util/configparser.c"
5359
0
    break;
5360
5361
0
  case 486:
5362
0
#line 2097 "./util/configparser.y"
5363
0
        {
5364
0
    OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5365
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5366
0
      yyerror("number expected");
5367
0
    else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5368
0
    free((yyvsp[0].str));
5369
0
  }
5370
0
#line 5371 "util/configparser.c"
5371
0
    break;
5372
5373
0
  case 487:
5374
0
#line 2106 "./util/configparser.y"
5375
0
        {
5376
0
    OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5377
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5378
0
      yyerror("expected yes or no.");
5379
0
    else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5380
0
    free((yyvsp[0].str));
5381
0
  }
5382
0
#line 5383 "util/configparser.c"
5383
0
    break;
5384
5385
0
  case 488:
5386
0
#line 2115 "./util/configparser.y"
5387
0
        {
5388
0
    OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5389
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5390
0
      yyerror("expected yes or no.");
5391
0
    else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5392
0
    free((yyvsp[0].str));
5393
0
  }
5394
0
#line 5395 "util/configparser.c"
5395
0
    break;
5396
5397
0
  case 489:
5398
0
#line 2124 "./util/configparser.y"
5399
0
        {
5400
0
    OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5401
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5402
0
      yyerror("expected yes or no.");
5403
0
#if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5404
0
    else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5405
0
    if(fake_dsa)
5406
0
      log_warn("test option fake_dsa is enabled");
5407
0
#endif
5408
0
    free((yyvsp[0].str));
5409
0
  }
5410
0
#line 5411 "util/configparser.c"
5411
0
    break;
5412
5413
0
  case 490:
5414
0
#line 2137 "./util/configparser.y"
5415
0
        {
5416
0
    OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5417
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5418
0
      yyerror("expected yes or no.");
5419
0
#if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5420
0
    else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5421
0
    if(fake_sha1)
5422
0
      log_warn("test option fake_sha1 is enabled");
5423
0
#endif
5424
0
    free((yyvsp[0].str));
5425
0
  }
5426
0
#line 5427 "util/configparser.c"
5427
0
    break;
5428
5429
0
  case 491:
5430
0
#line 2150 "./util/configparser.y"
5431
0
        {
5432
0
    OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5433
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5434
0
      yyerror("number expected");
5435
0
    else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5436
0
    free((yyvsp[0].str));
5437
0
  }
5438
0
#line 5439 "util/configparser.c"
5439
0
    break;
5440
5441
0
  case 492:
5442
0
#line 2159 "./util/configparser.y"
5443
0
        {
5444
0
    OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5445
0
    free(cfg_parser->cfg->val_nsec3_key_iterations);
5446
0
    cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5447
0
  }
5448
0
#line 5449 "util/configparser.c"
5449
0
    break;
5450
5451
0
  case 493:
5452
0
#line 2166 "./util/configparser.y"
5453
0
        {
5454
0
    OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5455
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5456
0
      yyerror("expected yes or no.");
5457
0
    else  cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5458
0
    free((yyvsp[0].str));
5459
0
  }
5460
0
#line 5461 "util/configparser.c"
5461
0
    break;
5462
5463
0
  case 494:
5464
0
#line 2175 "./util/configparser.y"
5465
0
        {
5466
0
    OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5467
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5468
0
      yyerror("number expected");
5469
0
    else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5470
0
    free((yyvsp[0].str));
5471
0
  }
5472
0
#line 5473 "util/configparser.c"
5473
0
    break;
5474
5475
0
  case 495:
5476
0
#line 2184 "./util/configparser.y"
5477
0
        {
5478
0
    OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5479
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5480
0
      yyerror("number expected");
5481
0
    else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5482
0
    free((yyvsp[0].str));
5483
0
  }
5484
0
#line 5485 "util/configparser.c"
5485
0
    break;
5486
5487
0
  case 496:
5488
0
#line 2193 "./util/configparser.y"
5489
0
        {
5490
0
    OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5491
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5492
0
      yyerror("number expected");
5493
0
    else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5494
0
    free((yyvsp[0].str));
5495
0
  }
5496
0
#line 5497 "util/configparser.c"
5497
0
    break;
5498
5499
0
  case 497:
5500
0
#line 2202 "./util/configparser.y"
5501
0
        {
5502
0
    OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5503
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5504
0
      yyerror("expected yes or no.");
5505
0
    else cfg_parser->cfg->permit_small_holddown =
5506
0
      (strcmp((yyvsp[0].str), "yes")==0);
5507
0
    free((yyvsp[0].str));
5508
0
  }
5509
0
#line 5510 "util/configparser.c"
5510
0
    break;
5511
5512
0
  case 498:
5513
0
#line 2211 "./util/configparser.y"
5514
0
        {
5515
0
    OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5516
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5517
0
      yyerror("memory size expected");
5518
0
    free((yyvsp[0].str));
5519
0
  }
5520
0
#line 5521 "util/configparser.c"
5521
0
    break;
5522
5523
0
  case 499:
5524
0
#line 2219 "./util/configparser.y"
5525
0
        {
5526
0
    OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5527
0
    if(atoi((yyvsp[0].str)) == 0) {
5528
0
      yyerror("number expected");
5529
0
    } else {
5530
0
      cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5531
0
      if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5532
0
        yyerror("must be a power of 2");
5533
0
    }
5534
0
    free((yyvsp[0].str));
5535
0
  }
5536
0
#line 5537 "util/configparser.c"
5537
0
    break;
5538
5539
0
  case 500:
5540
0
#line 2232 "./util/configparser.y"
5541
0
        {
5542
0
    OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5543
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5544
0
      yyerror("memory size expected");
5545
0
    free((yyvsp[0].str));
5546
0
  }
5547
0
#line 5548 "util/configparser.c"
5548
0
    break;
5549
5550
0
  case 501:
5551
0
#line 2240 "./util/configparser.y"
5552
0
        {
5553
0
    OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5554
0
    if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5555
0
       strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5556
0
       strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5557
0
       && strcmp((yyvsp[0].str), "typetransparent")!=0
5558
0
       && strcmp((yyvsp[0].str), "always_transparent")!=0
5559
0
       && strcmp((yyvsp[0].str), "block_a")!=0
5560
0
       && strcmp((yyvsp[0].str), "always_refuse")!=0
5561
0
       && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5562
0
       && strcmp((yyvsp[0].str), "always_nodata")!=0
5563
0
       && strcmp((yyvsp[0].str), "always_deny")!=0
5564
0
       && strcmp((yyvsp[0].str), "always_null")!=0
5565
0
       && strcmp((yyvsp[0].str), "noview")!=0
5566
0
       && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5567
0
       && strcmp((yyvsp[0].str), "inform_redirect") != 0
5568
0
       && strcmp((yyvsp[0].str), "ipset") != 0) {
5569
0
      yyerror("local-zone type: expected static, deny, "
5570
0
        "refuse, redirect, transparent, "
5571
0
        "typetransparent, inform, inform_deny, "
5572
0
        "inform_redirect, always_transparent, block_a,"
5573
0
        "always_refuse, always_nxdomain, "
5574
0
        "always_nodata, always_deny, always_null, "
5575
0
        "noview, nodefault or ipset");
5576
0
      free((yyvsp[-1].str));
5577
0
      free((yyvsp[0].str));
5578
0
    } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5579
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->
5580
0
        local_zones_nodefault, (yyvsp[-1].str)))
5581
0
        fatal_exit("out of memory adding local-zone");
5582
0
      free((yyvsp[0].str));
5583
#ifdef USE_IPSET
5584
    } else if(strcmp((yyvsp[0].str), "ipset")==0) {
5585
      size_t len = strlen((yyvsp[-1].str));
5586
      /* Make sure to add the trailing dot.
5587
       * These are str compared to domain names. */
5588
      if((yyvsp[-1].str)[len-1] != '.') {
5589
        if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5590
          fatal_exit("out of memory adding local-zone");
5591
        }
5592
        (yyvsp[-1].str)[len] = '.';
5593
        (yyvsp[-1].str)[len+1] = 0;
5594
      }
5595
      if(!cfg_strlist_insert(&cfg_parser->cfg->
5596
        local_zones_ipset, (yyvsp[-1].str)))
5597
        fatal_exit("out of memory adding local-zone");
5598
      free((yyvsp[0].str));
5599
#endif
5600
0
    } else {
5601
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5602
0
        (yyvsp[-1].str), (yyvsp[0].str)))
5603
0
        fatal_exit("out of memory adding local-zone");
5604
0
    }
5605
0
  }
5606
0
#line 5607 "util/configparser.c"
5607
0
    break;
5608
5609
0
  case 502:
5610
0
#line 2296 "./util/configparser.y"
5611
0
        {
5612
0
    OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5613
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5614
0
      fatal_exit("out of memory adding local-data");
5615
0
  }
5616
0
#line 5617 "util/configparser.c"
5617
0
    break;
5618
5619
0
  case 503:
5620
0
#line 2303 "./util/configparser.y"
5621
0
        {
5622
0
    char* ptr;
5623
0
    OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5624
0
    ptr = cfg_ptr_reverse((yyvsp[0].str));
5625
0
    free((yyvsp[0].str));
5626
0
    if(ptr) {
5627
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->
5628
0
        local_data, ptr))
5629
0
        fatal_exit("out of memory adding local-data");
5630
0
    } else {
5631
0
      yyerror("local-data-ptr could not be reversed");
5632
0
    }
5633
0
  }
5634
0
#line 5635 "util/configparser.c"
5635
0
    break;
5636
5637
0
  case 504:
5638
0
#line 2318 "./util/configparser.y"
5639
0
        {
5640
0
    OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5641
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5642
0
      yyerror("expected yes or no.");
5643
0
    else cfg_parser->cfg->minimal_responses =
5644
0
      (strcmp((yyvsp[0].str), "yes")==0);
5645
0
    free((yyvsp[0].str));
5646
0
  }
5647
0
#line 5648 "util/configparser.c"
5648
0
    break;
5649
5650
0
  case 505:
5651
0
#line 2328 "./util/configparser.y"
5652
0
        {
5653
0
    OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5654
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5655
0
      yyerror("expected yes or no.");
5656
0
    else cfg_parser->cfg->rrset_roundrobin =
5657
0
      (strcmp((yyvsp[0].str), "yes")==0);
5658
0
    free((yyvsp[0].str));
5659
0
  }
5660
0
#line 5661 "util/configparser.c"
5661
0
    break;
5662
5663
0
  case 506:
5664
0
#line 2338 "./util/configparser.y"
5665
0
        {
5666
0
    OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5667
0
    cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5668
0
    free((yyvsp[0].str));
5669
0
  }
5670
0
#line 5671 "util/configparser.c"
5671
0
    break;
5672
5673
0
  case 507:
5674
0
#line 2345 "./util/configparser.y"
5675
0
        {
5676
0
    OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5677
0
    cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5678
0
    free((yyvsp[0].str));
5679
0
  }
5680
0
#line 5681 "util/configparser.c"
5681
0
    break;
5682
5683
0
  case 508:
5684
0
#line 2352 "./util/configparser.y"
5685
0
        {
5686
0
    OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5687
0
    free(cfg_parser->cfg->dns64_prefix);
5688
0
    cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5689
0
  }
5690
0
#line 5691 "util/configparser.c"
5691
0
    break;
5692
5693
0
  case 509:
5694
0
#line 2359 "./util/configparser.y"
5695
0
        {
5696
0
    OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5697
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5698
0
      yyerror("expected yes or no.");
5699
0
    else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5700
0
    free((yyvsp[0].str));
5701
0
  }
5702
0
#line 5703 "util/configparser.c"
5703
0
    break;
5704
5705
0
  case 510:
5706
0
#line 2368 "./util/configparser.y"
5707
0
        {
5708
0
    OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5709
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5710
0
      (yyvsp[0].str)))
5711
0
      fatal_exit("out of memory adding dns64-ignore-aaaa");
5712
0
  }
5713
0
#line 5714 "util/configparser.c"
5714
0
    break;
5715
5716
0
  case 511:
5717
0
#line 2376 "./util/configparser.y"
5718
0
        {
5719
0
    OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
5720
0
    free(cfg_parser->cfg->nat64_prefix);
5721
0
    cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
5722
0
  }
5723
0
#line 5724 "util/configparser.c"
5724
0
    break;
5725
5726
0
  case 512:
5727
0
#line 2383 "./util/configparser.y"
5728
0
        {
5729
0
    char* p, *s = (yyvsp[0].str);
5730
0
    OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5731
0
    while((p=strsep(&s, " \t\n")) != NULL) {
5732
0
      if(*p) {
5733
0
        if(!config_add_tag(cfg_parser->cfg, p))
5734
0
          yyerror("could not define-tag, "
5735
0
            "out of memory");
5736
0
      }
5737
0
    }
5738
0
    free((yyvsp[0].str));
5739
0
  }
5740
0
#line 5741 "util/configparser.c"
5741
0
    break;
5742
5743
0
  case 513:
5744
0
#line 2397 "./util/configparser.y"
5745
0
        {
5746
0
    size_t len = 0;
5747
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5748
0
      &len);
5749
0
    free((yyvsp[0].str));
5750
0
    OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5751
0
    if(!bitlist) {
5752
0
      yyerror("could not parse tags, (define-tag them first)");
5753
0
      free((yyvsp[-1].str));
5754
0
    }
5755
0
    if(bitlist) {
5756
0
      if(!cfg_strbytelist_insert(
5757
0
        &cfg_parser->cfg->local_zone_tags,
5758
0
        (yyvsp[-1].str), bitlist, len)) {
5759
0
        yyerror("out of memory");
5760
0
        free((yyvsp[-1].str));
5761
0
      }
5762
0
    }
5763
0
  }
5764
0
#line 5765 "util/configparser.c"
5765
0
    break;
5766
5767
0
  case 514:
5768
0
#line 2418 "./util/configparser.y"
5769
0
        {
5770
0
    size_t len = 0;
5771
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5772
0
      &len);
5773
0
    free((yyvsp[0].str));
5774
0
    OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5775
0
    if(!bitlist) {
5776
0
      yyerror("could not parse tags, (define-tag them first)");
5777
0
      free((yyvsp[-1].str));
5778
0
    }
5779
0
    if(bitlist) {
5780
0
      if(!cfg_strbytelist_insert(
5781
0
        &cfg_parser->cfg->acl_tags,
5782
0
        (yyvsp[-1].str), bitlist, len)) {
5783
0
        yyerror("out of memory");
5784
0
        free((yyvsp[-1].str));
5785
0
      }
5786
0
    }
5787
0
  }
5788
0
#line 5789 "util/configparser.c"
5789
0
    break;
5790
5791
0
  case 515:
5792
0
#line 2439 "./util/configparser.y"
5793
0
        {
5794
0
    OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5795
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5796
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5797
0
      yyerror("out of memory");
5798
0
      free((yyvsp[-2].str));
5799
0
      free((yyvsp[-1].str));
5800
0
      free((yyvsp[0].str));
5801
0
    }
5802
0
  }
5803
0
#line 5804 "util/configparser.c"
5804
0
    break;
5805
5806
0
  case 516:
5807
0
#line 2451 "./util/configparser.y"
5808
0
        {
5809
0
    OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5810
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
5811
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5812
0
      yyerror("out of memory");
5813
0
      free((yyvsp[-2].str));
5814
0
      free((yyvsp[-1].str));
5815
0
      free((yyvsp[0].str));
5816
0
    }
5817
0
  }
5818
0
#line 5819 "util/configparser.c"
5819
0
    break;
5820
5821
0
  case 517:
5822
0
#line 2463 "./util/configparser.y"
5823
0
        {
5824
0
    OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5825
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
5826
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5827
0
      yyerror("out of memory");
5828
0
      free((yyvsp[-2].str));
5829
0
      free((yyvsp[-1].str));
5830
0
      free((yyvsp[0].str));
5831
0
    }
5832
0
  }
5833
0
#line 5834 "util/configparser.c"
5834
0
    break;
5835
5836
0
  case 518:
5837
0
#line 2475 "./util/configparser.y"
5838
0
        {
5839
0
    OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5840
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
5841
0
      (yyvsp[-1].str), (yyvsp[0].str))) {
5842
0
      yyerror("out of memory");
5843
0
    }
5844
0
  }
5845
0
#line 5846 "util/configparser.c"
5846
0
    break;
5847
5848
0
  case 519:
5849
0
#line 2484 "./util/configparser.y"
5850
0
        {
5851
0
    size_t len = 0;
5852
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5853
0
      &len);
5854
0
    free((yyvsp[0].str));
5855
0
    OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
5856
0
    if(!bitlist) {
5857
0
      yyerror("could not parse tags, (define-tag them first)");
5858
0
      free((yyvsp[-1].str));
5859
0
    }
5860
0
    if(bitlist) {
5861
0
      if(!cfg_strbytelist_insert(
5862
0
        &cfg_parser->cfg->interface_tags,
5863
0
        (yyvsp[-1].str), bitlist, len)) {
5864
0
        yyerror("out of memory");
5865
0
        free((yyvsp[-1].str));
5866
0
      }
5867
0
    }
5868
0
  }
5869
0
#line 5870 "util/configparser.c"
5870
0
    break;
5871
5872
0
  case 520:
5873
0
#line 2505 "./util/configparser.y"
5874
0
        {
5875
0
    OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5876
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
5877
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5878
0
      yyerror("out of memory");
5879
0
      free((yyvsp[-2].str));
5880
0
      free((yyvsp[-1].str));
5881
0
      free((yyvsp[0].str));
5882
0
    }
5883
0
  }
5884
0
#line 5885 "util/configparser.c"
5885
0
    break;
5886
5887
0
  case 521:
5888
0
#line 2517 "./util/configparser.y"
5889
0
        {
5890
0
    OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5891
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
5892
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5893
0
      yyerror("out of memory");
5894
0
      free((yyvsp[-2].str));
5895
0
      free((yyvsp[-1].str));
5896
0
      free((yyvsp[0].str));
5897
0
    }
5898
0
  }
5899
0
#line 5900 "util/configparser.c"
5900
0
    break;
5901
5902
0
  case 522:
5903
0
#line 2529 "./util/configparser.y"
5904
0
        {
5905
0
    OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5906
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
5907
0
      (yyvsp[-1].str), (yyvsp[0].str))) {
5908
0
      yyerror("out of memory");
5909
0
    }
5910
0
  }
5911
0
#line 5912 "util/configparser.c"
5912
0
    break;
5913
5914
0
  case 523:
5915
0
#line 2538 "./util/configparser.y"
5916
0
        {
5917
0
    size_t len = 0;
5918
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5919
0
      &len);
5920
0
    free((yyvsp[0].str));
5921
0
    OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
5922
0
    if(!bitlist) {
5923
0
      yyerror("could not parse tags, (define-tag them first)");
5924
0
      free((yyvsp[-1].str));
5925
0
    }
5926
0
    if(bitlist) {
5927
0
      if(!cfg_strbytelist_insert(
5928
0
        &cfg_parser->cfg->respip_tags,
5929
0
        (yyvsp[-1].str), bitlist, len)) {
5930
0
        yyerror("out of memory");
5931
0
        free((yyvsp[-1].str));
5932
0
      }
5933
0
    }
5934
0
  }
5935
0
#line 5936 "util/configparser.c"
5936
0
    break;
5937
5938
0
  case 524:
5939
0
#line 2559 "./util/configparser.y"
5940
0
        {
5941
0
    OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
5942
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5943
0
      yyerror("number expected");
5944
0
    else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
5945
0
    free((yyvsp[0].str));
5946
0
  }
5947
0
#line 5948 "util/configparser.c"
5948
0
    break;
5949
5950
0
  case 525:
5951
0
#line 2568 "./util/configparser.y"
5952
0
        {
5953
0
    OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
5954
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5955
0
      yyerror("number expected");
5956
0
    else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
5957
0
    free((yyvsp[0].str));
5958
0
  }
5959
0
#line 5960 "util/configparser.c"
5960
0
    break;
5961
5962
0
  case 526:
5963
0
#line 2577 "./util/configparser.y"
5964
0
        {
5965
0
    OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
5966
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
5967
0
      yyerror("memory size expected");
5968
0
    free((yyvsp[0].str));
5969
0
  }
5970
0
#line 5971 "util/configparser.c"
5971
0
    break;
5972
5973
0
  case 527:
5974
0
#line 2585 "./util/configparser.y"
5975
0
        {
5976
0
    OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
5977
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
5978
0
      yyerror("memory size expected");
5979
0
    free((yyvsp[0].str));
5980
0
  }
5981
0
#line 5982 "util/configparser.c"
5982
0
    break;
5983
5984
0
  case 528:
5985
0
#line 2593 "./util/configparser.y"
5986
0
        {
5987
0
    OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
5988
0
    if(atoi((yyvsp[0].str)) == 0) {
5989
0
      yyerror("number expected");
5990
0
    } else {
5991
0
      cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
5992
0
      if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
5993
0
        yyerror("must be a power of 2");
5994
0
    }
5995
0
    free((yyvsp[0].str));
5996
0
  }
5997
0
#line 5998 "util/configparser.c"
5998
0
    break;
5999
6000
0
  case 529:
6001
0
#line 2606 "./util/configparser.y"
6002
0
        {
6003
0
    OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6004
0
    if(atoi((yyvsp[0].str)) == 0) {
6005
0
      yyerror("number expected");
6006
0
    } else {
6007
0
      cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6008
0
      if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6009
0
        yyerror("must be a power of 2");
6010
0
    }
6011
0
    free((yyvsp[0].str));
6012
0
  }
6013
0
#line 6014 "util/configparser.c"
6014
0
    break;
6015
6016
0
  case 530:
6017
0
#line 2619 "./util/configparser.y"
6018
0
        {
6019
0
    OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6020
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6021
0
      yyerror("number expected");
6022
0
      free((yyvsp[-1].str));
6023
0
      free((yyvsp[0].str));
6024
0
    } else {
6025
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->
6026
0
        ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6027
0
        fatal_exit("out of memory adding "
6028
0
          "ratelimit-for-domain");
6029
0
    }
6030
0
  }
6031
0
#line 6032 "util/configparser.c"
6032
0
    break;
6033
6034
0
  case 531:
6035
0
#line 2634 "./util/configparser.y"
6036
0
        {
6037
0
    OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6038
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6039
0
      yyerror("number expected");
6040
0
      free((yyvsp[-1].str));
6041
0
      free((yyvsp[0].str));
6042
0
    } else {
6043
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->
6044
0
        ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6045
0
        fatal_exit("out of memory adding "
6046
0
          "ratelimit-below-domain");
6047
0
    }
6048
0
  }
6049
0
#line 6050 "util/configparser.c"
6050
0
    break;
6051
6052
0
  case 532:
6053
0
#line 2649 "./util/configparser.y"
6054
0
        {
6055
0
    OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6056
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6057
0
      yyerror("number expected");
6058
0
    else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6059
0
    free((yyvsp[0].str));
6060
0
  }
6061
0
#line 6062 "util/configparser.c"
6062
0
    break;
6063
6064
0
  case 533:
6065
0
#line 2658 "./util/configparser.y"
6066
0
        {
6067
0
    OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6068
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6069
0
      yyerror("number expected");
6070
0
    else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6071
0
    free((yyvsp[0].str));
6072
0
  }
6073
0
#line 6074 "util/configparser.c"
6074
0
    break;
6075
6076
0
  case 534:
6077
0
#line 2667 "./util/configparser.y"
6078
0
        {
6079
0
    OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6080
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6081
0
      yyerror("expected yes or no.");
6082
0
    else cfg_parser->cfg->ip_ratelimit_backoff =
6083
0
      (strcmp((yyvsp[0].str), "yes")==0);
6084
0
    free((yyvsp[0].str));
6085
0
  }
6086
0
#line 6087 "util/configparser.c"
6087
0
    break;
6088
6089
0
  case 535:
6090
0
#line 2677 "./util/configparser.y"
6091
0
        {
6092
0
    OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6093
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6094
0
      yyerror("expected yes or no.");
6095
0
    else cfg_parser->cfg->ratelimit_backoff =
6096
0
      (strcmp((yyvsp[0].str), "yes")==0);
6097
0
    free((yyvsp[0].str));
6098
0
  }
6099
0
#line 6100 "util/configparser.c"
6100
0
    break;
6101
6102
0
  case 536:
6103
0
#line 2687 "./util/configparser.y"
6104
0
        {
6105
0
    OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6106
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6107
0
      yyerror("number expected");
6108
0
    else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6109
0
    free((yyvsp[0].str));
6110
0
  }
6111
0
#line 6112 "util/configparser.c"
6112
0
    break;
6113
6114
0
  case 537:
6115
0
#line 2696 "./util/configparser.y"
6116
0
        {
6117
0
    OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6118
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6119
0
      yyerror("number expected");
6120
0
    else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6121
0
    free((yyvsp[0].str));
6122
0
  }
6123
0
#line 6124 "util/configparser.c"
6124
0
    break;
6125
6126
0
  case 538:
6127
0
#line 2705 "./util/configparser.y"
6128
0
        {
6129
0
    OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6130
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6131
0
      yyerror("number expected");
6132
0
    else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6133
0
    free((yyvsp[0].str));
6134
0
  }
6135
0
#line 6136 "util/configparser.c"
6136
0
    break;
6137
6138
0
  case 539:
6139
0
#line 2714 "./util/configparser.y"
6140
0
        {
6141
0
    OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6142
0
    free((yyvsp[0].str));
6143
0
  }
6144
0
#line 6145 "util/configparser.c"
6145
0
    break;
6146
6147
0
  case 540:
6148
0
#line 2720 "./util/configparser.y"
6149
0
        {
6150
0
    OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6151
0
    if(atoi((yyvsp[0].str)) <= 0)
6152
0
      yyerror("number expected");
6153
0
    else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6154
0
    free((yyvsp[0].str));
6155
0
  }
6156
0
#line 6157 "util/configparser.c"
6157
0
    break;
6158
6159
0
  case 541:
6160
0
#line 2729 "./util/configparser.y"
6161
0
        {
6162
0
    OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6163
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6164
0
      yyerror("number expected");
6165
0
    else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6166
0
    free((yyvsp[0].str));
6167
0
  }
6168
0
#line 6169 "util/configparser.c"
6169
0
    break;
6170
6171
0
  case 542:
6172
0
#line 2738 "./util/configparser.y"
6173
0
        {
6174
0
    OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6175
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6176
0
      yyerror("expected yes or no.");
6177
0
    else cfg_parser->cfg->qname_minimisation =
6178
0
      (strcmp((yyvsp[0].str), "yes")==0);
6179
0
    free((yyvsp[0].str));
6180
0
  }
6181
0
#line 6182 "util/configparser.c"
6182
0
    break;
6183
6184
0
  case 543:
6185
0
#line 2748 "./util/configparser.y"
6186
0
        {
6187
0
    OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6188
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6189
0
      yyerror("expected yes or no.");
6190
0
    else cfg_parser->cfg->qname_minimisation_strict =
6191
0
      (strcmp((yyvsp[0].str), "yes")==0);
6192
0
    free((yyvsp[0].str));
6193
0
  }
6194
0
#line 6195 "util/configparser.c"
6195
0
    break;
6196
6197
0
  case 544:
6198
0
#line 2758 "./util/configparser.y"
6199
0
        {
6200
0
    OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6201
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6202
0
      yyerror("expected yes or no.");
6203
0
    else cfg_parser->cfg->pad_responses =
6204
0
      (strcmp((yyvsp[0].str), "yes")==0);
6205
0
    free((yyvsp[0].str));
6206
0
  }
6207
0
#line 6208 "util/configparser.c"
6208
0
    break;
6209
6210
0
  case 545:
6211
0
#line 2768 "./util/configparser.y"
6212
0
        {
6213
0
    OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6214
0
    if(atoi((yyvsp[0].str)) == 0)
6215
0
      yyerror("number expected");
6216
0
    else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6217
0
    free((yyvsp[0].str));
6218
0
  }
6219
0
#line 6220 "util/configparser.c"
6220
0
    break;
6221
6222
0
  case 546:
6223
0
#line 2777 "./util/configparser.y"
6224
0
        {
6225
0
    OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6226
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6227
0
      yyerror("expected yes or no.");
6228
0
    else cfg_parser->cfg->pad_queries =
6229
0
      (strcmp((yyvsp[0].str), "yes")==0);
6230
0
    free((yyvsp[0].str));
6231
0
  }
6232
0
#line 6233 "util/configparser.c"
6233
0
    break;
6234
6235
0
  case 547:
6236
0
#line 2787 "./util/configparser.y"
6237
0
        {
6238
0
    OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6239
0
    if(atoi((yyvsp[0].str)) == 0)
6240
0
      yyerror("number expected");
6241
0
    else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6242
0
    free((yyvsp[0].str));
6243
0
  }
6244
0
#line 6245 "util/configparser.c"
6245
0
    break;
6246
6247
0
  case 548:
6248
0
#line 2796 "./util/configparser.y"
6249
0
        {
6250
  #ifdef USE_IPSECMOD
6251
    OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6252
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6253
      yyerror("expected yes or no.");
6254
    else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6255
  #else
6256
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6257
0
  #endif
6258
0
    free((yyvsp[0].str));
6259
0
  }
6260
0
#line 6261 "util/configparser.c"
6261
0
    break;
6262
6263
0
  case 549:
6264
0
#line 2809 "./util/configparser.y"
6265
0
        {
6266
  #ifdef USE_IPSECMOD
6267
    OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6268
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6269
      yyerror("expected yes or no.");
6270
    else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6271
  #else
6272
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6273
0
  #endif
6274
0
    free((yyvsp[0].str));
6275
0
  }
6276
0
#line 6277 "util/configparser.c"
6277
0
    break;
6278
6279
0
  case 550:
6280
0
#line 2822 "./util/configparser.y"
6281
0
        {
6282
  #ifdef USE_IPSECMOD
6283
    OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6284
    free(cfg_parser->cfg->ipsecmod_hook);
6285
    cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6286
  #else
6287
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6288
0
    free((yyvsp[0].str));
6289
0
  #endif
6290
0
  }
6291
0
#line 6292 "util/configparser.c"
6292
0
    break;
6293
6294
0
  case 551:
6295
0
#line 2834 "./util/configparser.y"
6296
0
        {
6297
  #ifdef USE_IPSECMOD
6298
    OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6299
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6300
      yyerror("number expected");
6301
    else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6302
    free((yyvsp[0].str));
6303
  #else
6304
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6305
0
    free((yyvsp[0].str));
6306
0
  #endif
6307
0
  }
6308
0
#line 6309 "util/configparser.c"
6309
0
    break;
6310
6311
0
  case 552:
6312
0
#line 2848 "./util/configparser.y"
6313
0
        {
6314
  #ifdef USE_IPSECMOD
6315
    OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6316
    if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6317
      yyerror("out of memory");
6318
  #else
6319
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6320
0
    free((yyvsp[0].str));
6321
0
  #endif
6322
0
  }
6323
0
#line 6324 "util/configparser.c"
6324
0
    break;
6325
6326
0
  case 553:
6327
0
#line 2860 "./util/configparser.y"
6328
0
        {
6329
  #ifdef USE_IPSECMOD
6330
    OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6331
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6332
      yyerror("expected yes or no.");
6333
    else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6334
    free((yyvsp[0].str));
6335
  #else
6336
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6337
0
    free((yyvsp[0].str));
6338
0
  #endif
6339
0
  }
6340
0
#line 6341 "util/configparser.c"
6341
0
    break;
6342
6343
0
  case 554:
6344
0
#line 2874 "./util/configparser.y"
6345
0
        {
6346
0
    OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6347
0
    if(!cfg_str2list_insert(
6348
0
      &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6349
0
      fatal_exit("out of memory adding "
6350
0
        "edns-client-string");
6351
0
  }
6352
0
#line 6353 "util/configparser.c"
6353
0
    break;
6354
6355
0
  case 555:
6356
0
#line 2883 "./util/configparser.y"
6357
0
        {
6358
0
    OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6359
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6360
0
      yyerror("option code expected");
6361
0
    else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6362
0
      yyerror("option code must be in interval [0, 65535]");
6363
0
    else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6364
0
    free((yyvsp[0].str));
6365
0
  }
6366
0
#line 6367 "util/configparser.c"
6367
0
    break;
6368
6369
0
  case 556:
6370
0
#line 2894 "./util/configparser.y"
6371
0
        {
6372
0
    OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6373
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6374
0
      yyerror("expected yes or no.");
6375
0
    else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6376
0
    free((yyvsp[0].str));
6377
0
  }
6378
0
#line 6379 "util/configparser.c"
6379
0
    break;
6380
6381
0
  case 557:
6382
0
#line 2903 "./util/configparser.y"
6383
0
        {
6384
0
    OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6385
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6386
0
      yyerror("out of memory");
6387
0
  }
6388
0
#line 6389 "util/configparser.c"
6389
0
    break;
6390
6391
0
  case 558:
6392
0
#line 2910 "./util/configparser.y"
6393
0
        {
6394
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6395
0
    if(cfg_parser->cfg->stubs->name)
6396
0
      yyerror("stub name override, there must be one name "
6397
0
        "for one stub-zone");
6398
0
    free(cfg_parser->cfg->stubs->name);
6399
0
    cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6400
0
  }
6401
0
#line 6402 "util/configparser.c"
6402
0
    break;
6403
6404
0
  case 559:
6405
0
#line 2920 "./util/configparser.y"
6406
0
        {
6407
0
    OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6408
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6409
0
      yyerror("out of memory");
6410
0
  }
6411
0
#line 6412 "util/configparser.c"
6412
0
    break;
6413
6414
0
  case 560:
6415
0
#line 2927 "./util/configparser.y"
6416
0
        {
6417
0
    OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6418
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6419
0
      yyerror("out of memory");
6420
0
  }
6421
0
#line 6422 "util/configparser.c"
6422
0
    break;
6423
6424
0
  case 561:
6425
0
#line 2934 "./util/configparser.y"
6426
0
        {
6427
0
    OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6428
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6429
0
      yyerror("expected yes or no.");
6430
0
    else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6431
0
    free((yyvsp[0].str));
6432
0
  }
6433
0
#line 6434 "util/configparser.c"
6434
0
    break;
6435
6436
0
  case 562:
6437
0
#line 2943 "./util/configparser.y"
6438
0
        {
6439
0
    OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6440
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6441
0
      yyerror("expected yes or no.");
6442
0
    else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6443
0
    free((yyvsp[0].str));
6444
0
  }
6445
0
#line 6446 "util/configparser.c"
6446
0
    break;
6447
6448
0
  case 563:
6449
0
#line 2952 "./util/configparser.y"
6450
0
        {
6451
0
    OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6452
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6453
0
      yyerror("expected yes or no.");
6454
0
    else cfg_parser->cfg->stubs->ssl_upstream =
6455
0
      (strcmp((yyvsp[0].str), "yes")==0);
6456
0
    free((yyvsp[0].str));
6457
0
  }
6458
0
#line 6459 "util/configparser.c"
6459
0
    break;
6460
6461
0
  case 564:
6462
0
#line 2962 "./util/configparser.y"
6463
0
        {
6464
0
                OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6465
0
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6466
0
                        yyerror("expected yes or no.");
6467
0
                else cfg_parser->cfg->stubs->tcp_upstream =
6468
0
                        (strcmp((yyvsp[0].str), "yes")==0);
6469
0
                free((yyvsp[0].str));
6470
0
        }
6471
0
#line 6472 "util/configparser.c"
6472
0
    break;
6473
6474
0
  case 565:
6475
0
#line 2972 "./util/configparser.y"
6476
0
        {
6477
0
    OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6478
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6479
0
      yyerror("expected yes or no.");
6480
0
    else cfg_parser->cfg->stubs->isprime =
6481
0
      (strcmp((yyvsp[0].str), "yes")==0);
6482
0
    free((yyvsp[0].str));
6483
0
  }
6484
0
#line 6485 "util/configparser.c"
6485
0
    break;
6486
6487
0
  case 566:
6488
0
#line 2982 "./util/configparser.y"
6489
0
        {
6490
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6491
0
    if(cfg_parser->cfg->forwards->name)
6492
0
      yyerror("forward name override, there must be one "
6493
0
        "name for one forward-zone");
6494
0
    free(cfg_parser->cfg->forwards->name);
6495
0
    cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6496
0
  }
6497
0
#line 6498 "util/configparser.c"
6498
0
    break;
6499
6500
0
  case 567:
6501
0
#line 2992 "./util/configparser.y"
6502
0
        {
6503
0
    OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6504
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6505
0
      yyerror("out of memory");
6506
0
  }
6507
0
#line 6508 "util/configparser.c"
6508
0
    break;
6509
6510
0
  case 568:
6511
0
#line 2999 "./util/configparser.y"
6512
0
        {
6513
0
    OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6514
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6515
0
      yyerror("out of memory");
6516
0
  }
6517
0
#line 6518 "util/configparser.c"
6518
0
    break;
6519
6520
0
  case 569:
6521
0
#line 3006 "./util/configparser.y"
6522
0
        {
6523
0
    OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6524
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6525
0
      yyerror("expected yes or no.");
6526
0
    else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6527
0
    free((yyvsp[0].str));
6528
0
  }
6529
0
#line 6530 "util/configparser.c"
6530
0
    break;
6531
6532
0
  case 570:
6533
0
#line 3015 "./util/configparser.y"
6534
0
        {
6535
0
    OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6536
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6537
0
      yyerror("expected yes or no.");
6538
0
    else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6539
0
    free((yyvsp[0].str));
6540
0
  }
6541
0
#line 6542 "util/configparser.c"
6542
0
    break;
6543
6544
0
  case 571:
6545
0
#line 3024 "./util/configparser.y"
6546
0
        {
6547
0
    OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6548
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6549
0
      yyerror("expected yes or no.");
6550
0
    else cfg_parser->cfg->forwards->ssl_upstream =
6551
0
      (strcmp((yyvsp[0].str), "yes")==0);
6552
0
    free((yyvsp[0].str));
6553
0
  }
6554
0
#line 6555 "util/configparser.c"
6555
0
    break;
6556
6557
0
  case 572:
6558
0
#line 3034 "./util/configparser.y"
6559
0
        {
6560
0
                OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6561
0
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6562
0
                        yyerror("expected yes or no.");
6563
0
                else cfg_parser->cfg->forwards->tcp_upstream =
6564
0
                        (strcmp((yyvsp[0].str), "yes")==0);
6565
0
                free((yyvsp[0].str));
6566
0
        }
6567
0
#line 6568 "util/configparser.c"
6568
0
    break;
6569
6570
0
  case 573:
6571
0
#line 3044 "./util/configparser.y"
6572
0
        {
6573
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6574
0
    if(cfg_parser->cfg->auths->name)
6575
0
      yyerror("auth name override, there must be one name "
6576
0
        "for one auth-zone");
6577
0
    free(cfg_parser->cfg->auths->name);
6578
0
    cfg_parser->cfg->auths->name = (yyvsp[0].str);
6579
0
  }
6580
0
#line 6581 "util/configparser.c"
6581
0
    break;
6582
6583
0
  case 574:
6584
0
#line 3054 "./util/configparser.y"
6585
0
        {
6586
0
    OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6587
0
    free(cfg_parser->cfg->auths->zonefile);
6588
0
    cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6589
0
  }
6590
0
#line 6591 "util/configparser.c"
6591
0
    break;
6592
6593
0
  case 575:
6594
0
#line 3061 "./util/configparser.y"
6595
0
        {
6596
0
    OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6597
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6598
0
      yyerror("out of memory");
6599
0
  }
6600
0
#line 6601 "util/configparser.c"
6601
0
    break;
6602
6603
0
  case 576:
6604
0
#line 3068 "./util/configparser.y"
6605
0
        {
6606
0
    OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6607
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6608
0
      yyerror("out of memory");
6609
0
  }
6610
0
#line 6611 "util/configparser.c"
6611
0
    break;
6612
6613
0
  case 577:
6614
0
#line 3075 "./util/configparser.y"
6615
0
        {
6616
0
    OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6617
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6618
0
      (yyvsp[0].str)))
6619
0
      yyerror("out of memory");
6620
0
  }
6621
0
#line 6622 "util/configparser.c"
6622
0
    break;
6623
6624
0
  case 578:
6625
0
#line 3083 "./util/configparser.y"
6626
0
        {
6627
0
    OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6628
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6629
0
      yyerror("expected yes or no.");
6630
0
    else cfg_parser->cfg->auths->zonemd_check =
6631
0
      (strcmp((yyvsp[0].str), "yes")==0);
6632
0
    free((yyvsp[0].str));
6633
0
  }
6634
0
#line 6635 "util/configparser.c"
6635
0
    break;
6636
6637
0
  case 579:
6638
0
#line 3093 "./util/configparser.y"
6639
0
        {
6640
0
    OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6641
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6642
0
      yyerror("expected yes or no.");
6643
0
    else cfg_parser->cfg->auths->zonemd_reject_absence =
6644
0
      (strcmp((yyvsp[0].str), "yes")==0);
6645
0
    free((yyvsp[0].str));
6646
0
  }
6647
0
#line 6648 "util/configparser.c"
6648
0
    break;
6649
6650
0
  case 580:
6651
0
#line 3103 "./util/configparser.y"
6652
0
        {
6653
0
    OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6654
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6655
0
      yyerror("expected yes or no.");
6656
0
    else cfg_parser->cfg->auths->for_downstream =
6657
0
      (strcmp((yyvsp[0].str), "yes")==0);
6658
0
    free((yyvsp[0].str));
6659
0
  }
6660
0
#line 6661 "util/configparser.c"
6661
0
    break;
6662
6663
0
  case 581:
6664
0
#line 3113 "./util/configparser.y"
6665
0
        {
6666
0
    OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6667
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6668
0
      yyerror("expected yes or no.");
6669
0
    else cfg_parser->cfg->auths->for_upstream =
6670
0
      (strcmp((yyvsp[0].str), "yes")==0);
6671
0
    free((yyvsp[0].str));
6672
0
  }
6673
0
#line 6674 "util/configparser.c"
6674
0
    break;
6675
6676
0
  case 582:
6677
0
#line 3123 "./util/configparser.y"
6678
0
        {
6679
0
    OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6680
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6681
0
      yyerror("expected yes or no.");
6682
0
    else cfg_parser->cfg->auths->fallback_enabled =
6683
0
      (strcmp((yyvsp[0].str), "yes")==0);
6684
0
    free((yyvsp[0].str));
6685
0
  }
6686
0
#line 6687 "util/configparser.c"
6687
0
    break;
6688
6689
0
  case 583:
6690
0
#line 3133 "./util/configparser.y"
6691
0
        {
6692
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6693
0
    if(cfg_parser->cfg->views->name)
6694
0
      yyerror("view name override, there must be one "
6695
0
        "name for one view");
6696
0
    free(cfg_parser->cfg->views->name);
6697
0
    cfg_parser->cfg->views->name = (yyvsp[0].str);
6698
0
  }
6699
0
#line 6700 "util/configparser.c"
6700
0
    break;
6701
6702
0
  case 584:
6703
0
#line 3143 "./util/configparser.y"
6704
0
        {
6705
0
    OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6706
0
    if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6707
0
       strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6708
0
       strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6709
0
       && strcmp((yyvsp[0].str), "typetransparent")!=0
6710
0
       && strcmp((yyvsp[0].str), "always_transparent")!=0
6711
0
       && strcmp((yyvsp[0].str), "always_refuse")!=0
6712
0
       && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6713
0
       && strcmp((yyvsp[0].str), "always_nodata")!=0
6714
0
       && strcmp((yyvsp[0].str), "always_deny")!=0
6715
0
       && strcmp((yyvsp[0].str), "always_null")!=0
6716
0
       && strcmp((yyvsp[0].str), "noview")!=0
6717
0
       && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6718
0
       && strcmp((yyvsp[0].str), "inform_redirect") != 0
6719
0
       && strcmp((yyvsp[0].str), "ipset") != 0) {
6720
0
      yyerror("local-zone type: expected static, deny, "
6721
0
        "refuse, redirect, transparent, "
6722
0
        "typetransparent, inform, inform_deny, "
6723
0
        "inform_redirect, always_transparent, "
6724
0
        "always_refuse, always_nxdomain, "
6725
0
        "always_nodata, always_deny, always_null, "
6726
0
        "noview, nodefault or ipset");
6727
0
      free((yyvsp[-1].str));
6728
0
      free((yyvsp[0].str));
6729
0
    } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6730
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6731
0
        local_zones_nodefault, (yyvsp[-1].str)))
6732
0
        fatal_exit("out of memory adding local-zone");
6733
0
      free((yyvsp[0].str));
6734
#ifdef USE_IPSET
6735
    } else if(strcmp((yyvsp[0].str), "ipset")==0) {
6736
      size_t len = strlen((yyvsp[-1].str));
6737
      /* Make sure to add the trailing dot.
6738
       * These are str compared to domain names. */
6739
      if((yyvsp[-1].str)[len-1] != '.') {
6740
        if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
6741
          fatal_exit("out of memory adding local-zone");
6742
        }
6743
        (yyvsp[-1].str)[len] = '.';
6744
        (yyvsp[-1].str)[len+1] = 0;
6745
      }
6746
      if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6747
        local_zones_ipset, (yyvsp[-1].str)))
6748
        fatal_exit("out of memory adding local-zone");
6749
      free((yyvsp[0].str));
6750
#endif
6751
0
    } else {
6752
0
      if(!cfg_str2list_insert(
6753
0
        &cfg_parser->cfg->views->local_zones,
6754
0
        (yyvsp[-1].str), (yyvsp[0].str)))
6755
0
        fatal_exit("out of memory adding local-zone");
6756
0
    }
6757
0
  }
6758
0
#line 6759 "util/configparser.c"
6759
0
    break;
6760
6761
0
  case 585:
6762
0
#line 3199 "./util/configparser.y"
6763
0
        {
6764
0
    OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6765
0
    validate_respip_action((yyvsp[0].str));
6766
0
    if(!cfg_str2list_insert(
6767
0
      &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
6768
0
      fatal_exit("out of memory adding per-view "
6769
0
        "response-ip action");
6770
0
  }
6771
0
#line 6772 "util/configparser.c"
6772
0
    break;
6773
6774
0
  case 586:
6775
0
#line 3209 "./util/configparser.y"
6776
0
        {
6777
0
    OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
6778
0
    if(!cfg_str2list_insert(
6779
0
      &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
6780
0
      fatal_exit("out of memory adding response-ip-data");
6781
0
  }
6782
0
#line 6783 "util/configparser.c"
6783
0
    break;
6784
6785
0
  case 587:
6786
0
#line 3217 "./util/configparser.y"
6787
0
        {
6788
0
    OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
6789
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
6790
0
      fatal_exit("out of memory adding local-data");
6791
0
    }
6792
0
  }
6793
0
#line 6794 "util/configparser.c"
6794
0
    break;
6795
6796
0
  case 588:
6797
0
#line 3225 "./util/configparser.y"
6798
0
        {
6799
0
    char* ptr;
6800
0
    OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
6801
0
    ptr = cfg_ptr_reverse((yyvsp[0].str));
6802
0
    free((yyvsp[0].str));
6803
0
    if(ptr) {
6804
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6805
0
        local_data, ptr))
6806
0
        fatal_exit("out of memory adding local-data");
6807
0
    } else {
6808
0
      yyerror("local-data-ptr could not be reversed");
6809
0
    }
6810
0
  }
6811
0
#line 6812 "util/configparser.c"
6812
0
    break;
6813
6814
0
  case 589:
6815
0
#line 3240 "./util/configparser.y"
6816
0
        {
6817
0
    OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
6818
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6819
0
      yyerror("expected yes or no.");
6820
0
    else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6821
0
    free((yyvsp[0].str));
6822
0
  }
6823
0
#line 6824 "util/configparser.c"
6824
0
    break;
6825
6826
0
  case 590:
6827
0
#line 3249 "./util/configparser.y"
6828
0
        {
6829
0
    OUTYY(("\nP(remote-control:)\n"));
6830
0
    cfg_parser->started_toplevel = 1;
6831
0
  }
6832
0
#line 6833 "util/configparser.c"
6833
0
    break;
6834
6835
0
  case 601:
6836
0
#line 3261 "./util/configparser.y"
6837
0
        {
6838
0
    OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
6839
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6840
0
      yyerror("expected yes or no.");
6841
0
    else cfg_parser->cfg->remote_control_enable =
6842
0
      (strcmp((yyvsp[0].str), "yes")==0);
6843
0
    free((yyvsp[0].str));
6844
0
  }
6845
0
#line 6846 "util/configparser.c"
6846
0
    break;
6847
6848
0
  case 602:
6849
0
#line 3271 "./util/configparser.y"
6850
0
        {
6851
0
    OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
6852
0
    if(atoi((yyvsp[0].str)) == 0)
6853
0
      yyerror("control port number expected");
6854
0
    else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
6855
0
    free((yyvsp[0].str));
6856
0
  }
6857
0
#line 6858 "util/configparser.c"
6858
0
    break;
6859
6860
0
  case 603:
6861
0
#line 3280 "./util/configparser.y"
6862
0
        {
6863
0
    OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
6864
0
    if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
6865
0
      yyerror("out of memory");
6866
0
  }
6867
0
#line 6868 "util/configparser.c"
6868
0
    break;
6869
6870
0
  case 604:
6871
0
#line 3287 "./util/configparser.y"
6872
0
        {
6873
0
    OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
6874
0
    cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
6875
0
    free((yyvsp[0].str));
6876
0
  }
6877
0
#line 6878 "util/configparser.c"
6878
0
    break;
6879
6880
0
  case 605:
6881
0
#line 3294 "./util/configparser.y"
6882
0
        {
6883
0
    OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
6884
0
    free(cfg_parser->cfg->server_key_file);
6885
0
    cfg_parser->cfg->server_key_file = (yyvsp[0].str);
6886
0
  }
6887
0
#line 6888 "util/configparser.c"
6888
0
    break;
6889
6890
0
  case 606:
6891
0
#line 3301 "./util/configparser.y"
6892
0
        {
6893
0
    OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
6894
0
    free(cfg_parser->cfg->server_cert_file);
6895
0
    cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
6896
0
  }
6897
0
#line 6898 "util/configparser.c"
6898
0
    break;
6899
6900
0
  case 607:
6901
0
#line 3308 "./util/configparser.y"
6902
0
        {
6903
0
    OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
6904
0
    free(cfg_parser->cfg->control_key_file);
6905
0
    cfg_parser->cfg->control_key_file = (yyvsp[0].str);
6906
0
  }
6907
0
#line 6908 "util/configparser.c"
6908
0
    break;
6909
6910
0
  case 608:
6911
0
#line 3315 "./util/configparser.y"
6912
0
        {
6913
0
    OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
6914
0
    free(cfg_parser->cfg->control_cert_file);
6915
0
    cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
6916
0
  }
6917
0
#line 6918 "util/configparser.c"
6918
0
    break;
6919
6920
0
  case 609:
6921
0
#line 3322 "./util/configparser.y"
6922
0
        {
6923
0
    OUTYY(("\nP(dnstap:)\n"));
6924
0
    cfg_parser->started_toplevel = 1;
6925
0
  }
6926
0
#line 6927 "util/configparser.c"
6927
0
    break;
6928
6929
0
  case 631:
6930
0
#line 3343 "./util/configparser.y"
6931
0
        {
6932
0
    OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
6933
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6934
0
      yyerror("expected yes or no.");
6935
0
    else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
6936
0
    free((yyvsp[0].str));
6937
0
  }
6938
0
#line 6939 "util/configparser.c"
6939
0
    break;
6940
6941
0
  case 632:
6942
0
#line 3352 "./util/configparser.y"
6943
0
        {
6944
0
    OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
6945
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6946
0
      yyerror("expected yes or no.");
6947
0
    else cfg_parser->cfg->dnstap_bidirectional =
6948
0
      (strcmp((yyvsp[0].str), "yes")==0);
6949
0
    free((yyvsp[0].str));
6950
0
  }
6951
0
#line 6952 "util/configparser.c"
6952
0
    break;
6953
6954
0
  case 633:
6955
0
#line 3362 "./util/configparser.y"
6956
0
        {
6957
0
    OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
6958
0
    free(cfg_parser->cfg->dnstap_socket_path);
6959
0
    cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
6960
0
  }
6961
0
#line 6962 "util/configparser.c"
6962
0
    break;
6963
6964
0
  case 634:
6965
0
#line 3369 "./util/configparser.y"
6966
0
        {
6967
0
    OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
6968
0
    free(cfg_parser->cfg->dnstap_ip);
6969
0
    cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
6970
0
  }
6971
0
#line 6972 "util/configparser.c"
6972
0
    break;
6973
6974
0
  case 635:
6975
0
#line 3376 "./util/configparser.y"
6976
0
        {
6977
0
    OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
6978
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6979
0
      yyerror("expected yes or no.");
6980
0
    else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
6981
0
    free((yyvsp[0].str));
6982
0
  }
6983
0
#line 6984 "util/configparser.c"
6984
0
    break;
6985
6986
0
  case 636:
6987
0
#line 3385 "./util/configparser.y"
6988
0
        {
6989
0
    OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
6990
0
    free(cfg_parser->cfg->dnstap_tls_server_name);
6991
0
    cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
6992
0
  }
6993
0
#line 6994 "util/configparser.c"
6994
0
    break;
6995
6996
0
  case 637:
6997
0
#line 3392 "./util/configparser.y"
6998
0
        {
6999
0
    OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7000
0
    free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7001
0
    cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7002
0
  }
7003
0
#line 7004 "util/configparser.c"
7004
0
    break;
7005
7006
0
  case 638:
7007
0
#line 3399 "./util/configparser.y"
7008
0
        {
7009
0
    OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7010
0
    free(cfg_parser->cfg->dnstap_tls_client_key_file);
7011
0
    cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7012
0
  }
7013
0
#line 7014 "util/configparser.c"
7014
0
    break;
7015
7016
0
  case 639:
7017
0
#line 3406 "./util/configparser.y"
7018
0
        {
7019
0
    OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7020
0
    free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7021
0
    cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7022
0
  }
7023
0
#line 7024 "util/configparser.c"
7024
0
    break;
7025
7026
0
  case 640:
7027
0
#line 3413 "./util/configparser.y"
7028
0
        {
7029
0
    OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7030
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7031
0
      yyerror("expected yes or no.");
7032
0
    else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7033
0
    free((yyvsp[0].str));
7034
0
  }
7035
0
#line 7036 "util/configparser.c"
7036
0
    break;
7037
7038
0
  case 641:
7039
0
#line 3422 "./util/configparser.y"
7040
0
        {
7041
0
    OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7042
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7043
0
      yyerror("expected yes or no.");
7044
0
    else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7045
0
    free((yyvsp[0].str));
7046
0
  }
7047
0
#line 7048 "util/configparser.c"
7048
0
    break;
7049
7050
0
  case 642:
7051
0
#line 3431 "./util/configparser.y"
7052
0
        {
7053
0
    OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7054
0
    free(cfg_parser->cfg->dnstap_identity);
7055
0
    cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7056
0
  }
7057
0
#line 7058 "util/configparser.c"
7058
0
    break;
7059
7060
0
  case 643:
7061
0
#line 3438 "./util/configparser.y"
7062
0
        {
7063
0
    OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7064
0
    free(cfg_parser->cfg->dnstap_version);
7065
0
    cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7066
0
  }
7067
0
#line 7068 "util/configparser.c"
7068
0
    break;
7069
7070
0
  case 644:
7071
0
#line 3445 "./util/configparser.y"
7072
0
        {
7073
0
    OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7074
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7075
0
      yyerror("expected yes or no.");
7076
0
    else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7077
0
      (strcmp((yyvsp[0].str), "yes")==0);
7078
0
    free((yyvsp[0].str));
7079
0
  }
7080
0
#line 7081 "util/configparser.c"
7081
0
    break;
7082
7083
0
  case 645:
7084
0
#line 3455 "./util/configparser.y"
7085
0
        {
7086
0
    OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7087
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7088
0
      yyerror("expected yes or no.");
7089
0
    else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7090
0
      (strcmp((yyvsp[0].str), "yes")==0);
7091
0
    free((yyvsp[0].str));
7092
0
  }
7093
0
#line 7094 "util/configparser.c"
7094
0
    break;
7095
7096
0
  case 646:
7097
0
#line 3465 "./util/configparser.y"
7098
0
        {
7099
0
    OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7100
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7101
0
      yyerror("expected yes or no.");
7102
0
    else cfg_parser->cfg->dnstap_log_client_query_messages =
7103
0
      (strcmp((yyvsp[0].str), "yes")==0);
7104
0
    free((yyvsp[0].str));
7105
0
  }
7106
0
#line 7107 "util/configparser.c"
7107
0
    break;
7108
7109
0
  case 647:
7110
0
#line 3475 "./util/configparser.y"
7111
0
        {
7112
0
    OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7113
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7114
0
      yyerror("expected yes or no.");
7115
0
    else cfg_parser->cfg->dnstap_log_client_response_messages =
7116
0
      (strcmp((yyvsp[0].str), "yes")==0);
7117
0
    free((yyvsp[0].str));
7118
0
  }
7119
0
#line 7120 "util/configparser.c"
7120
0
    break;
7121
7122
0
  case 648:
7123
0
#line 3485 "./util/configparser.y"
7124
0
        {
7125
0
    OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7126
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7127
0
      yyerror("expected yes or no.");
7128
0
    else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7129
0
      (strcmp((yyvsp[0].str), "yes")==0);
7130
0
    free((yyvsp[0].str));
7131
0
  }
7132
0
#line 7133 "util/configparser.c"
7133
0
    break;
7134
7135
0
  case 649:
7136
0
#line 3495 "./util/configparser.y"
7137
0
        {
7138
0
    OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7139
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7140
0
      yyerror("expected yes or no.");
7141
0
    else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7142
0
      (strcmp((yyvsp[0].str), "yes")==0);
7143
0
    free((yyvsp[0].str));
7144
0
  }
7145
0
#line 7146 "util/configparser.c"
7146
0
    break;
7147
7148
0
  case 650:
7149
0
#line 3505 "./util/configparser.y"
7150
0
        {
7151
0
    OUTYY(("\nP(python:)\n"));
7152
0
    cfg_parser->started_toplevel = 1;
7153
0
  }
7154
0
#line 7155 "util/configparser.c"
7155
0
    break;
7156
7157
0
  case 654:
7158
0
#line 3515 "./util/configparser.y"
7159
0
        {
7160
0
    OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7161
0
    if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7162
0
      yyerror("out of memory");
7163
0
  }
7164
0
#line 7165 "util/configparser.c"
7165
0
    break;
7166
7167
0
  case 655:
7168
0
#line 3521 "./util/configparser.y"
7169
0
        {
7170
0
    OUTYY(("\nP(dynlib:)\n"));
7171
0
    cfg_parser->started_toplevel = 1;
7172
0
  }
7173
0
#line 7174 "util/configparser.c"
7174
0
    break;
7175
7176
0
  case 659:
7177
0
#line 3531 "./util/configparser.y"
7178
0
        {
7179
0
    OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7180
0
    if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7181
0
      yyerror("out of memory");
7182
0
  }
7183
0
#line 7184 "util/configparser.c"
7184
0
    break;
7185
7186
0
  case 660:
7187
0
#line 3537 "./util/configparser.y"
7188
0
        {
7189
0
    OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7190
0
    if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7191
0
      yyerror("expected yes or no.");
7192
0
    else cfg_parser->cfg->disable_dnssec_lame_check =
7193
0
      (strcmp((yyvsp[0].str), "yes")==0);
7194
0
    free((yyvsp[0].str));
7195
0
  }
7196
0
#line 7197 "util/configparser.c"
7197
0
    break;
7198
7199
0
  case 661:
7200
0
#line 3547 "./util/configparser.y"
7201
0
        {
7202
0
    OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7203
0
    free(cfg_parser->cfg->log_identity);
7204
0
    cfg_parser->cfg->log_identity = (yyvsp[0].str);
7205
0
  }
7206
0
#line 7207 "util/configparser.c"
7207
0
    break;
7208
7209
0
  case 662:
7210
0
#line 3554 "./util/configparser.y"
7211
0
        {
7212
0
    OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7213
0
    validate_respip_action((yyvsp[0].str));
7214
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7215
0
      (yyvsp[-1].str), (yyvsp[0].str)))
7216
0
      fatal_exit("out of memory adding response-ip");
7217
0
  }
7218
0
#line 7219 "util/configparser.c"
7219
0
    break;
7220
7221
0
  case 663:
7222
0
#line 3563 "./util/configparser.y"
7223
0
        {
7224
0
    OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7225
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7226
0
      (yyvsp[-1].str), (yyvsp[0].str)))
7227
0
      fatal_exit("out of memory adding response-ip-data");
7228
0
  }
7229
0
#line 7230 "util/configparser.c"
7230
0
    break;
7231
7232
0
  case 664:
7233
0
#line 3571 "./util/configparser.y"
7234
0
        {
7235
0
    OUTYY(("\nP(dnscrypt:)\n"));
7236
0
    cfg_parser->started_toplevel = 1;
7237
0
  }
7238
0
#line 7239 "util/configparser.c"
7239
0
    break;
7240
7241
0
  case 677:
7242
0
#line 3588 "./util/configparser.y"
7243
0
        {
7244
0
    OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7245
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7246
0
      yyerror("expected yes or no.");
7247
0
    else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7248
0
    free((yyvsp[0].str));
7249
0
  }
7250
0
#line 7251 "util/configparser.c"
7251
0
    break;
7252
7253
0
  case 678:
7254
0
#line 3598 "./util/configparser.y"
7255
0
        {
7256
0
    OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7257
0
    if(atoi((yyvsp[0].str)) == 0)
7258
0
      yyerror("port number expected");
7259
0
    else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7260
0
    free((yyvsp[0].str));
7261
0
  }
7262
0
#line 7263 "util/configparser.c"
7263
0
    break;
7264
7265
0
  case 679:
7266
0
#line 3607 "./util/configparser.y"
7267
0
        {
7268
0
    OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7269
0
    free(cfg_parser->cfg->dnscrypt_provider);
7270
0
    cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7271
0
  }
7272
0
#line 7273 "util/configparser.c"
7273
0
    break;
7274
7275
0
  case 680:
7276
0
#line 3614 "./util/configparser.y"
7277
0
        {
7278
0
    OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7279
0
    if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7280
0
      log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7281
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7282
0
      fatal_exit("out of memory adding dnscrypt-provider-cert");
7283
0
  }
7284
0
#line 7285 "util/configparser.c"
7285
0
    break;
7286
7287
0
  case 681:
7288
0
#line 3623 "./util/configparser.y"
7289
0
        {
7290
0
    OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7291
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7292
0
      fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7293
0
  }
7294
0
#line 7295 "util/configparser.c"
7295
0
    break;
7296
7297
0
  case 682:
7298
0
#line 3630 "./util/configparser.y"
7299
0
        {
7300
0
    OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7301
0
    if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7302
0
      log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7303
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7304
0
      fatal_exit("out of memory adding dnscrypt-secret-key");
7305
0
  }
7306
0
#line 7307 "util/configparser.c"
7307
0
    break;
7308
7309
0
  case 683:
7310
0
#line 3639 "./util/configparser.y"
7311
0
  {
7312
0
  OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7313
0
  if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7314
0
    yyerror("memory size expected");
7315
0
  free((yyvsp[0].str));
7316
0
  }
7317
0
#line 7318 "util/configparser.c"
7318
0
    break;
7319
7320
0
  case 684:
7321
0
#line 3647 "./util/configparser.y"
7322
0
  {
7323
0
  OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7324
0
  if(atoi((yyvsp[0].str)) == 0) {
7325
0
    yyerror("number expected");
7326
0
  } else {
7327
0
    cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7328
0
    if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7329
0
      yyerror("must be a power of 2");
7330
0
  }
7331
0
  free((yyvsp[0].str));
7332
0
  }
7333
0
#line 7334 "util/configparser.c"
7334
0
    break;
7335
7336
0
  case 685:
7337
0
#line 3660 "./util/configparser.y"
7338
0
  {
7339
0
  OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7340
0
  if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7341
0
    yyerror("memory size expected");
7342
0
  free((yyvsp[0].str));
7343
0
  }
7344
0
#line 7345 "util/configparser.c"
7345
0
    break;
7346
7347
0
  case 686:
7348
0
#line 3668 "./util/configparser.y"
7349
0
  {
7350
0
  OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7351
0
  if(atoi((yyvsp[0].str)) == 0) {
7352
0
    yyerror("number expected");
7353
0
  } else {
7354
0
    cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7355
0
    if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7356
0
      yyerror("must be a power of 2");
7357
0
  }
7358
0
  free((yyvsp[0].str));
7359
0
  }
7360
0
#line 7361 "util/configparser.c"
7361
0
    break;
7362
7363
0
  case 687:
7364
0
#line 3681 "./util/configparser.y"
7365
0
        {
7366
0
    OUTYY(("\nP(cachedb:)\n"));
7367
0
    cfg_parser->started_toplevel = 1;
7368
0
  }
7369
0
#line 7370 "util/configparser.c"
7370
0
    break;
7371
7372
0
  case 698:
7373
0
#line 3693 "./util/configparser.y"
7374
0
        {
7375
  #ifdef USE_CACHEDB
7376
    OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7377
    free(cfg_parser->cfg->cachedb_backend);
7378
    cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7379
  #else
7380
0
    OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7381
0
    free((yyvsp[0].str));
7382
0
  #endif
7383
0
  }
7384
0
#line 7385 "util/configparser.c"
7385
0
    break;
7386
7387
0
  case 699:
7388
0
#line 3705 "./util/configparser.y"
7389
0
        {
7390
  #ifdef USE_CACHEDB
7391
    OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7392
    free(cfg_parser->cfg->cachedb_secret);
7393
    cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7394
  #else
7395
0
    OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7396
0
    free((yyvsp[0].str));
7397
0
  #endif
7398
0
  }
7399
0
#line 7400 "util/configparser.c"
7400
0
    break;
7401
7402
0
  case 700:
7403
0
#line 3717 "./util/configparser.y"
7404
0
        {
7405
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7406
    OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7407
    free(cfg_parser->cfg->redis_server_host);
7408
    cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7409
  #else
7410
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7411
0
    free((yyvsp[0].str));
7412
0
  #endif
7413
0
  }
7414
0
#line 7415 "util/configparser.c"
7415
0
    break;
7416
7417
0
  case 701:
7418
0
#line 3729 "./util/configparser.y"
7419
0
        {
7420
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7421
    int port;
7422
    OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7423
    port = atoi((yyvsp[0].str));
7424
    if(port == 0 || port < 0 || port > 65535)
7425
      yyerror("valid redis server port number expected");
7426
    else cfg_parser->cfg->redis_server_port = port;
7427
  #else
7428
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7429
0
  #endif
7430
0
    free((yyvsp[0].str));
7431
0
  }
7432
0
#line 7433 "util/configparser.c"
7433
0
    break;
7434
7435
0
  case 702:
7436
0
#line 3744 "./util/configparser.y"
7437
0
        {
7438
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7439
    OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7440
    free(cfg_parser->cfg->redis_server_path);
7441
    cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7442
  #else
7443
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7444
0
    free((yyvsp[0].str));
7445
0
  #endif
7446
0
  }
7447
0
#line 7448 "util/configparser.c"
7448
0
    break;
7449
7450
0
  case 703:
7451
0
#line 3756 "./util/configparser.y"
7452
0
        {
7453
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7454
    OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7455
    free(cfg_parser->cfg->redis_server_password);
7456
    cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7457
  #else
7458
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7459
0
    free((yyvsp[0].str));
7460
0
  #endif
7461
0
  }
7462
0
#line 7463 "util/configparser.c"
7463
0
    break;
7464
7465
0
  case 704:
7466
0
#line 3768 "./util/configparser.y"
7467
0
        {
7468
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7469
    OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7470
    if(atoi((yyvsp[0].str)) == 0)
7471
      yyerror("redis timeout value expected");
7472
    else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7473
  #else
7474
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7475
0
  #endif
7476
0
    free((yyvsp[0].str));
7477
0
  }
7478
0
#line 7479 "util/configparser.c"
7479
0
    break;
7480
7481
0
  case 705:
7482
0
#line 3781 "./util/configparser.y"
7483
0
        {
7484
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7485
    OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7486
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7487
      yyerror("expected yes or no.");
7488
    else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7489
  #else
7490
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7491
0
  #endif
7492
0
    free((yyvsp[0].str));
7493
0
  }
7494
0
#line 7495 "util/configparser.c"
7495
0
    break;
7496
7497
0
  case 706:
7498
0
#line 3794 "./util/configparser.y"
7499
0
        {
7500
0
    OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7501
0
    if (atoi((yyvsp[0].str)) < 0)
7502
0
      yyerror("positive number expected");
7503
0
    else {
7504
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7505
0
        fatal_exit("out of memory adding tcp connection limit");
7506
0
    }
7507
0
  }
7508
0
#line 7509 "util/configparser.c"
7509
0
    break;
7510
7511
0
  case 707:
7512
0
#line 3805 "./util/configparser.y"
7513
0
                {
7514
0
      OUTYY(("\nP(ipset:)\n"));
7515
0
      cfg_parser->started_toplevel = 1;
7516
0
    }
7517
0
#line 7518 "util/configparser.c"
7518
0
    break;
7519
7520
0
  case 712:
7521
0
#line 3815 "./util/configparser.y"
7522
0
                {
7523
    #ifdef USE_IPSET
7524
      OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
7525
      if(cfg_parser->cfg->ipset_name_v4)
7526
        yyerror("ipset name v4 override, there must be one "
7527
          "name for ip v4");
7528
      free(cfg_parser->cfg->ipset_name_v4);
7529
      cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
7530
    #else
7531
0
      OUTYY(("P(Compiled without ipset, ignoring)\n"));
7532
0
      free((yyvsp[0].str));
7533
0
    #endif
7534
0
    }
7535
0
#line 7536 "util/configparser.c"
7536
0
    break;
7537
7538
0
  case 713:
7539
0
#line 3830 "./util/configparser.y"
7540
0
        {
7541
    #ifdef USE_IPSET
7542
      OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
7543
      if(cfg_parser->cfg->ipset_name_v6)
7544
        yyerror("ipset name v6 override, there must be one "
7545
          "name for ip v6");
7546
      free(cfg_parser->cfg->ipset_name_v6);
7547
      cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
7548
    #else
7549
0
      OUTYY(("P(Compiled without ipset, ignoring)\n"));
7550
0
      free((yyvsp[0].str));
7551
0
    #endif
7552
0
    }
7553
0
#line 7554 "util/configparser.c"
7554
0
    break;
7555
7556
7557
0
#line 7558 "util/configparser.c"
7558
7559
0
      default: break;
7560
0
    }
7561
  /* User semantic actions sometimes alter yychar, and that requires
7562
     that yytoken be updated with the new translation.  We take the
7563
     approach of translating immediately before every use of yytoken.
7564
     One alternative is translating here after every semantic action,
7565
     but that translation would be missed if the semantic action invokes
7566
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7567
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
7568
     incorrect destructor might then be invoked immediately.  In the
7569
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
7570
     to an incorrect destructor call or verbose syntax error message
7571
     before the lookahead is translated.  */
7572
0
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
7573
7574
0
  YYPOPSTACK (yylen);
7575
0
  yylen = 0;
7576
0
  YY_STACK_PRINT (yyss, yyssp);
7577
7578
0
  *++yyvsp = yyval;
7579
7580
  /* Now 'shift' the result of the reduction.  Determine what state
7581
     that goes to, based on the state we popped back to and the rule
7582
     number reduced by.  */
7583
0
  {
7584
0
    const int yylhs = yyr1[yyn] - YYNTOKENS;
7585
0
    const int yyi = yypgoto[yylhs] + *yyssp;
7586
0
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
7587
0
               ? yytable[yyi]
7588
0
               : yydefgoto[yylhs]);
7589
0
  }
7590
7591
0
  goto yynewstate;
7592
7593
7594
/*--------------------------------------.
7595
| yyerrlab -- here on detecting error.  |
7596
`--------------------------------------*/
7597
0
yyerrlab:
7598
  /* Make sure we have latest lookahead translation.  See comments at
7599
     user semantic actions for why this is necessary.  */
7600
0
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
7601
7602
  /* If not already recovering from an error, report this error.  */
7603
0
  if (!yyerrstatus)
7604
0
    {
7605
0
      ++yynerrs;
7606
0
#if ! YYERROR_VERBOSE
7607
0
      yyerror (YY_("syntax error"));
7608
#else
7609
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
7610
                                        yyssp, yytoken)
7611
      {
7612
        char const *yymsgp = YY_("syntax error");
7613
        int yysyntax_error_status;
7614
        yysyntax_error_status = YYSYNTAX_ERROR;
7615
        if (yysyntax_error_status == 0)
7616
          yymsgp = yymsg;
7617
        else if (yysyntax_error_status == 1)
7618
          {
7619
            if (yymsg != yymsgbuf)
7620
              YYSTACK_FREE (yymsg);
7621
            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
7622
            if (!yymsg)
7623
              {
7624
                yymsg = yymsgbuf;
7625
                yymsg_alloc = sizeof yymsgbuf;
7626
                yysyntax_error_status = 2;
7627
              }
7628
            else
7629
              {
7630
                yysyntax_error_status = YYSYNTAX_ERROR;
7631
                yymsgp = yymsg;
7632
              }
7633
          }
7634
        yyerror (yymsgp);
7635
        if (yysyntax_error_status == 2)
7636
          goto yyexhaustedlab;
7637
      }
7638
# undef YYSYNTAX_ERROR
7639
#endif
7640
0
    }
7641
7642
7643
7644
0
  if (yyerrstatus == 3)
7645
0
    {
7646
      /* If just tried and failed to reuse lookahead token after an
7647
         error, discard it.  */
7648
7649
0
      if (yychar <= YYEOF)
7650
0
        {
7651
          /* Return failure if at end of input.  */
7652
0
          if (yychar == YYEOF)
7653
0
            YYABORT;
7654
0
        }
7655
0
      else
7656
0
        {
7657
0
          yydestruct ("Error: discarding",
7658
0
                      yytoken, &yylval);
7659
0
          yychar = YYEMPTY;
7660
0
        }
7661
0
    }
7662
7663
  /* Else will try to reuse lookahead token after shifting the error
7664
     token.  */
7665
0
  goto yyerrlab1;
7666
7667
7668
/*---------------------------------------------------.
7669
| yyerrorlab -- error raised explicitly by YYERROR.  |
7670
`---------------------------------------------------*/
7671
0
yyerrorlab:
7672
  /* Pacify compilers when the user code never invokes YYERROR and the
7673
     label yyerrorlab therefore never appears in user code.  */
7674
0
  if (0)
7675
0
    YYERROR;
7676
7677
  /* Do not reclaim the symbols of the rule whose action triggered
7678
     this YYERROR.  */
7679
0
  YYPOPSTACK (yylen);
7680
0
  yylen = 0;
7681
0
  YY_STACK_PRINT (yyss, yyssp);
7682
0
  yystate = *yyssp;
7683
0
  goto yyerrlab1;
7684
7685
7686
/*-------------------------------------------------------------.
7687
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
7688
`-------------------------------------------------------------*/
7689
0
yyerrlab1:
7690
0
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
7691
7692
0
  for (;;)
7693
0
    {
7694
0
      yyn = yypact[yystate];
7695
0
      if (!yypact_value_is_default (yyn))
7696
0
        {
7697
0
          yyn += YYTERROR;
7698
0
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
7699
0
            {
7700
0
              yyn = yytable[yyn];
7701
0
              if (0 < yyn)
7702
0
                break;
7703
0
            }
7704
0
        }
7705
7706
      /* Pop the current state because it cannot handle the error token.  */
7707
0
      if (yyssp == yyss)
7708
0
        YYABORT;
7709
7710
7711
0
      yydestruct ("Error: popping",
7712
0
                  yystos[yystate], yyvsp);
7713
0
      YYPOPSTACK (1);
7714
0
      yystate = *yyssp;
7715
0
      YY_STACK_PRINT (yyss, yyssp);
7716
0
    }
7717
7718
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7719
0
  *++yyvsp = yylval;
7720
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
7721
7722
7723
  /* Shift the error token.  */
7724
0
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
7725
7726
0
  yystate = yyn;
7727
0
  goto yynewstate;
7728
7729
7730
/*-------------------------------------.
7731
| yyacceptlab -- YYACCEPT comes here.  |
7732
`-------------------------------------*/
7733
0
yyacceptlab:
7734
0
  yyresult = 0;
7735
0
  goto yyreturn;
7736
7737
7738
/*-----------------------------------.
7739
| yyabortlab -- YYABORT comes here.  |
7740
`-----------------------------------*/
7741
0
yyabortlab:
7742
0
  yyresult = 1;
7743
0
  goto yyreturn;
7744
7745
7746
0
#if !defined yyoverflow || YYERROR_VERBOSE
7747
/*-------------------------------------------------.
7748
| yyexhaustedlab -- memory exhaustion comes here.  |
7749
`-------------------------------------------------*/
7750
0
yyexhaustedlab:
7751
0
  yyerror (YY_("memory exhausted"));
7752
0
  yyresult = 2;
7753
  /* Fall through.  */
7754
0
#endif
7755
7756
7757
/*-----------------------------------------------------.
7758
| yyreturn -- parsing is finished, return the result.  |
7759
`-----------------------------------------------------*/
7760
0
yyreturn:
7761
0
  if (yychar != YYEMPTY)
7762
0
    {
7763
      /* Make sure we have latest lookahead translation.  See comments at
7764
         user semantic actions for why this is necessary.  */
7765
0
      yytoken = YYTRANSLATE (yychar);
7766
0
      yydestruct ("Cleanup: discarding lookahead",
7767
0
                  yytoken, &yylval);
7768
0
    }
7769
  /* Do not reclaim the symbols of the rule whose action triggered
7770
     this YYABORT or YYACCEPT.  */
7771
0
  YYPOPSTACK (yylen);
7772
0
  YY_STACK_PRINT (yyss, yyssp);
7773
0
  while (yyssp != yyss)
7774
0
    {
7775
0
      yydestruct ("Cleanup: popping",
7776
0
                  yystos[+*yyssp], yyvsp);
7777
0
      YYPOPSTACK (1);
7778
0
    }
7779
0
#ifndef yyoverflow
7780
0
  if (yyss != yyssa)
7781
0
    YYSTACK_FREE (yyss);
7782
0
#endif
7783
#if YYERROR_VERBOSE
7784
  if (yymsg != yymsgbuf)
7785
    YYSTACK_FREE (yymsg);
7786
#endif
7787
0
  return yyresult;
7788
0
}
7789
#line 3844 "./util/configparser.y"
7790
7791
7792
/* parse helper routines could be here */
7793
static void
7794
validate_respip_action(const char* action)
7795
0
{
7796
0
  if(strcmp(action, "deny")!=0 &&
7797
0
    strcmp(action, "redirect")!=0 &&
7798
0
    strcmp(action, "inform")!=0 &&
7799
0
    strcmp(action, "inform_deny")!=0 &&
7800
0
    strcmp(action, "always_transparent")!=0 &&
7801
0
    strcmp(action, "always_refuse")!=0 &&
7802
0
    strcmp(action, "always_nxdomain")!=0)
7803
0
  {
7804
0
    yyerror("response-ip action: expected deny, redirect, "
7805
0
      "inform, inform_deny, always_transparent, "
7806
0
      "always_refuse or always_nxdomain");
7807
0
  }
7808
0
}
7809
7810
static void
7811
validate_acl_action(const char* action)
7812
0
{
7813
0
  if(strcmp(action, "deny")!=0 &&
7814
0
    strcmp(action, "refuse")!=0 &&
7815
0
    strcmp(action, "deny_non_local")!=0 &&
7816
0
    strcmp(action, "refuse_non_local")!=0 &&
7817
0
    strcmp(action, "allow_setrd")!=0 &&
7818
0
    strcmp(action, "allow")!=0 &&
7819
0
    strcmp(action, "allow_snoop")!=0)
7820
0
  {
7821
0
    yyerror("expected deny, refuse, deny_non_local, "
7822
0
      "refuse_non_local, allow, allow_setrd or "
7823
0
      "allow_snoop as access control action");
7824
0
  }
7825
0
}