Coverage Report

Created: 2026-01-09 06:30

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/unbound/util/configparser.c
Line
Count
Source
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
#include "sldns/str2wire.h"
83
84
int ub_c_lex(void);
85
void ub_c_error(const char *message);
86
87
static void validate_respip_action(const char* action);
88
static void validate_acl_action(const char* action);
89
90
/* these need to be global, otherwise they cannot be used inside yacc */
91
extern struct config_parser_state* cfg_parser;
92
93
#if 0
94
#define OUTYY(s)  printf s /* used ONLY when debugging */
95
#else
96
#define OUTYY(s)
97
#endif
98
99
100
#line 101 "util/configparser.c"
101
102
# ifndef YY_CAST
103
#  ifdef __cplusplus
104
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
105
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
106
#  else
107
0
#   define YY_CAST(Type, Val) ((Type) (Val))
108
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
109
#  endif
110
# endif
111
# ifndef YY_NULLPTR
112
#  if defined __cplusplus
113
#   if 201103L <= __cplusplus
114
#    define YY_NULLPTR nullptr
115
#   else
116
#    define YY_NULLPTR 0
117
#   endif
118
#  else
119
#   define YY_NULLPTR ((void*)0)
120
#  endif
121
# endif
122
123
/* Enabling verbose error messages.  */
124
#ifdef YYERROR_VERBOSE
125
# undef YYERROR_VERBOSE
126
# define YYERROR_VERBOSE 1
127
#else
128
# define YYERROR_VERBOSE 0
129
#endif
130
131
/* Use api.header.include to #include this header
132
   instead of duplicating it here.  */
133
#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
134
# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
135
/* Debug traces.  */
136
#ifndef YYDEBUG
137
# define YYDEBUG 0
138
#endif
139
#if YYDEBUG
140
extern int yydebug;
141
#endif
142
143
/* Token type.  */
144
#ifndef YYTOKENTYPE
145
# define YYTOKENTYPE
146
  enum yytokentype
147
  {
148
    SPACE = 258,
149
    LETTER = 259,
150
    NEWLINE = 260,
151
    COMMENT = 261,
152
    COLON = 262,
153
    ANY = 263,
154
    ZONESTR = 264,
155
    STRING_ARG = 265,
156
    VAR_FORCE_TOPLEVEL = 266,
157
    VAR_SERVER = 267,
158
    VAR_VERBOSITY = 268,
159
    VAR_NUM_THREADS = 269,
160
    VAR_PORT = 270,
161
    VAR_OUTGOING_RANGE = 271,
162
    VAR_INTERFACE = 272,
163
    VAR_PREFER_IP4 = 273,
164
    VAR_DO_IP4 = 274,
165
    VAR_DO_IP6 = 275,
166
    VAR_DO_NAT64 = 276,
167
    VAR_PREFER_IP6 = 277,
168
    VAR_DO_UDP = 278,
169
    VAR_DO_TCP = 279,
170
    VAR_TCP_MSS = 280,
171
    VAR_OUTGOING_TCP_MSS = 281,
172
    VAR_TCP_IDLE_TIMEOUT = 282,
173
    VAR_EDNS_TCP_KEEPALIVE = 283,
174
    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 284,
175
    VAR_SOCK_QUEUE_TIMEOUT = 285,
176
    VAR_CHROOT = 286,
177
    VAR_USERNAME = 287,
178
    VAR_DIRECTORY = 288,
179
    VAR_LOGFILE = 289,
180
    VAR_PIDFILE = 290,
181
    VAR_MSG_CACHE_SIZE = 291,
182
    VAR_MSG_CACHE_SLABS = 292,
183
    VAR_NUM_QUERIES_PER_THREAD = 293,
184
    VAR_RRSET_CACHE_SIZE = 294,
185
    VAR_RRSET_CACHE_SLABS = 295,
186
    VAR_OUTGOING_NUM_TCP = 296,
187
    VAR_INFRA_HOST_TTL = 297,
188
    VAR_INFRA_LAME_TTL = 298,
189
    VAR_INFRA_CACHE_SLABS = 299,
190
    VAR_INFRA_CACHE_NUMHOSTS = 300,
191
    VAR_INFRA_CACHE_LAME_SIZE = 301,
192
    VAR_NAME = 302,
193
    VAR_STUB_ZONE = 303,
194
    VAR_STUB_HOST = 304,
195
    VAR_STUB_ADDR = 305,
196
    VAR_TARGET_FETCH_POLICY = 306,
197
    VAR_HARDEN_SHORT_BUFSIZE = 307,
198
    VAR_HARDEN_LARGE_QUERIES = 308,
199
    VAR_FORWARD_ZONE = 309,
200
    VAR_FORWARD_HOST = 310,
201
    VAR_FORWARD_ADDR = 311,
202
    VAR_DO_NOT_QUERY_ADDRESS = 312,
203
    VAR_HIDE_IDENTITY = 313,
204
    VAR_HIDE_VERSION = 314,
205
    VAR_IDENTITY = 315,
206
    VAR_VERSION = 316,
207
    VAR_HARDEN_GLUE = 317,
208
    VAR_MODULE_CONF = 318,
209
    VAR_TRUST_ANCHOR_FILE = 319,
210
    VAR_TRUST_ANCHOR = 320,
211
    VAR_VAL_OVERRIDE_DATE = 321,
212
    VAR_BOGUS_TTL = 322,
213
    VAR_VAL_CLEAN_ADDITIONAL = 323,
214
    VAR_VAL_PERMISSIVE_MODE = 324,
215
    VAR_INCOMING_NUM_TCP = 325,
216
    VAR_MSG_BUFFER_SIZE = 326,
217
    VAR_KEY_CACHE_SIZE = 327,
218
    VAR_KEY_CACHE_SLABS = 328,
219
    VAR_TRUSTED_KEYS_FILE = 329,
220
    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 330,
221
    VAR_USE_SYSLOG = 331,
222
    VAR_OUTGOING_INTERFACE = 332,
223
    VAR_ROOT_HINTS = 333,
224
    VAR_DO_NOT_QUERY_LOCALHOST = 334,
225
    VAR_CACHE_MAX_TTL = 335,
226
    VAR_HARDEN_DNSSEC_STRIPPED = 336,
227
    VAR_ACCESS_CONTROL = 337,
228
    VAR_LOCAL_ZONE = 338,
229
    VAR_LOCAL_DATA = 339,
230
    VAR_INTERFACE_AUTOMATIC = 340,
231
    VAR_STATISTICS_INTERVAL = 341,
232
    VAR_DO_DAEMONIZE = 342,
233
    VAR_USE_CAPS_FOR_ID = 343,
234
    VAR_STATISTICS_CUMULATIVE = 344,
235
    VAR_OUTGOING_PORT_PERMIT = 345,
236
    VAR_OUTGOING_PORT_AVOID = 346,
237
    VAR_DLV_ANCHOR_FILE = 347,
238
    VAR_DLV_ANCHOR = 348,
239
    VAR_NEG_CACHE_SIZE = 349,
240
    VAR_HARDEN_REFERRAL_PATH = 350,
241
    VAR_PRIVATE_ADDRESS = 351,
242
    VAR_PRIVATE_DOMAIN = 352,
243
    VAR_REMOTE_CONTROL = 353,
244
    VAR_CONTROL_ENABLE = 354,
245
    VAR_CONTROL_INTERFACE = 355,
246
    VAR_CONTROL_PORT = 356,
247
    VAR_SERVER_KEY_FILE = 357,
248
    VAR_SERVER_CERT_FILE = 358,
249
    VAR_CONTROL_KEY_FILE = 359,
250
    VAR_CONTROL_CERT_FILE = 360,
251
    VAR_CONTROL_USE_CERT = 361,
252
    VAR_TCP_REUSE_TIMEOUT = 362,
253
    VAR_MAX_REUSE_TCP_QUERIES = 363,
254
    VAR_EXTENDED_STATISTICS = 364,
255
    VAR_LOCAL_DATA_PTR = 365,
256
    VAR_JOSTLE_TIMEOUT = 366,
257
    VAR_STUB_PRIME = 367,
258
    VAR_UNWANTED_REPLY_THRESHOLD = 368,
259
    VAR_LOG_TIME_ASCII = 369,
260
    VAR_DOMAIN_INSECURE = 370,
261
    VAR_PYTHON = 371,
262
    VAR_PYTHON_SCRIPT = 372,
263
    VAR_VAL_SIG_SKEW_MIN = 373,
264
    VAR_VAL_SIG_SKEW_MAX = 374,
265
    VAR_VAL_MAX_RESTART = 375,
266
    VAR_CACHE_MIN_TTL = 376,
267
    VAR_VAL_LOG_LEVEL = 377,
268
    VAR_AUTO_TRUST_ANCHOR_FILE = 378,
269
    VAR_KEEP_MISSING = 379,
270
    VAR_ADD_HOLDDOWN = 380,
271
    VAR_DEL_HOLDDOWN = 381,
272
    VAR_SO_RCVBUF = 382,
273
    VAR_EDNS_BUFFER_SIZE = 383,
274
    VAR_PREFETCH = 384,
275
    VAR_PREFETCH_KEY = 385,
276
    VAR_SO_SNDBUF = 386,
277
    VAR_SO_REUSEPORT = 387,
278
    VAR_HARDEN_BELOW_NXDOMAIN = 388,
279
    VAR_IGNORE_CD_FLAG = 389,
280
    VAR_LOG_QUERIES = 390,
281
    VAR_LOG_REPLIES = 391,
282
    VAR_LOG_LOCAL_ACTIONS = 392,
283
    VAR_TCP_UPSTREAM = 393,
284
    VAR_SSL_UPSTREAM = 394,
285
    VAR_TCP_AUTH_QUERY_TIMEOUT = 395,
286
    VAR_SSL_SERVICE_KEY = 396,
287
    VAR_SSL_SERVICE_PEM = 397,
288
    VAR_SSL_PORT = 398,
289
    VAR_FORWARD_FIRST = 399,
290
    VAR_STUB_SSL_UPSTREAM = 400,
291
    VAR_FORWARD_SSL_UPSTREAM = 401,
292
    VAR_TLS_CERT_BUNDLE = 402,
293
    VAR_STUB_TCP_UPSTREAM = 403,
294
    VAR_FORWARD_TCP_UPSTREAM = 404,
295
    VAR_HTTPS_PORT = 405,
296
    VAR_HTTP_ENDPOINT = 406,
297
    VAR_HTTP_MAX_STREAMS = 407,
298
    VAR_HTTP_QUERY_BUFFER_SIZE = 408,
299
    VAR_HTTP_RESPONSE_BUFFER_SIZE = 409,
300
    VAR_HTTP_NODELAY = 410,
301
    VAR_HTTP_NOTLS_DOWNSTREAM = 411,
302
    VAR_STUB_FIRST = 412,
303
    VAR_MINIMAL_RESPONSES = 413,
304
    VAR_RRSET_ROUNDROBIN = 414,
305
    VAR_MAX_UDP_SIZE = 415,
306
    VAR_DELAY_CLOSE = 416,
307
    VAR_UDP_CONNECT = 417,
308
    VAR_UNBLOCK_LAN_ZONES = 418,
309
    VAR_INSECURE_LAN_ZONES = 419,
310
    VAR_INFRA_CACHE_MIN_RTT = 420,
311
    VAR_INFRA_CACHE_MAX_RTT = 421,
312
    VAR_INFRA_KEEP_PROBING = 422,
313
    VAR_DNS64_PREFIX = 423,
314
    VAR_DNS64_SYNTHALL = 424,
315
    VAR_DNS64_IGNORE_AAAA = 425,
316
    VAR_NAT64_PREFIX = 426,
317
    VAR_DNSTAP = 427,
318
    VAR_DNSTAP_ENABLE = 428,
319
    VAR_DNSTAP_SOCKET_PATH = 429,
320
    VAR_DNSTAP_IP = 430,
321
    VAR_DNSTAP_TLS = 431,
322
    VAR_DNSTAP_TLS_SERVER_NAME = 432,
323
    VAR_DNSTAP_TLS_CERT_BUNDLE = 433,
324
    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 434,
325
    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 435,
326
    VAR_DNSTAP_SEND_IDENTITY = 436,
327
    VAR_DNSTAP_SEND_VERSION = 437,
328
    VAR_DNSTAP_BIDIRECTIONAL = 438,
329
    VAR_DNSTAP_IDENTITY = 439,
330
    VAR_DNSTAP_VERSION = 440,
331
    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 441,
332
    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 442,
333
    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 443,
334
    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 444,
335
    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 445,
336
    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 446,
337
    VAR_DNSTAP_SAMPLE_RATE = 447,
338
    VAR_RESPONSE_IP_TAG = 448,
339
    VAR_RESPONSE_IP = 449,
340
    VAR_RESPONSE_IP_DATA = 450,
341
    VAR_HARDEN_ALGO_DOWNGRADE = 451,
342
    VAR_IP_TRANSPARENT = 452,
343
    VAR_IP_DSCP = 453,
344
    VAR_DISABLE_DNSSEC_LAME_CHECK = 454,
345
    VAR_IP_RATELIMIT = 455,
346
    VAR_IP_RATELIMIT_SLABS = 456,
347
    VAR_IP_RATELIMIT_SIZE = 457,
348
    VAR_RATELIMIT = 458,
349
    VAR_RATELIMIT_SLABS = 459,
350
    VAR_RATELIMIT_SIZE = 460,
351
    VAR_OUTBOUND_MSG_RETRY = 461,
352
    VAR_MAX_SENT_COUNT = 462,
353
    VAR_MAX_QUERY_RESTARTS = 463,
354
    VAR_RATELIMIT_FOR_DOMAIN = 464,
355
    VAR_RATELIMIT_BELOW_DOMAIN = 465,
356
    VAR_IP_RATELIMIT_FACTOR = 466,
357
    VAR_RATELIMIT_FACTOR = 467,
358
    VAR_IP_RATELIMIT_BACKOFF = 468,
359
    VAR_RATELIMIT_BACKOFF = 469,
360
    VAR_SEND_CLIENT_SUBNET = 470,
361
    VAR_CLIENT_SUBNET_ZONE = 471,
362
    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 472,
363
    VAR_CLIENT_SUBNET_OPCODE = 473,
364
    VAR_MAX_CLIENT_SUBNET_IPV4 = 474,
365
    VAR_MAX_CLIENT_SUBNET_IPV6 = 475,
366
    VAR_MIN_CLIENT_SUBNET_IPV4 = 476,
367
    VAR_MIN_CLIENT_SUBNET_IPV6 = 477,
368
    VAR_MAX_ECS_TREE_SIZE_IPV4 = 478,
369
    VAR_MAX_ECS_TREE_SIZE_IPV6 = 479,
370
    VAR_CAPS_WHITELIST = 480,
371
    VAR_CACHE_MAX_NEGATIVE_TTL = 481,
372
    VAR_PERMIT_SMALL_HOLDDOWN = 482,
373
    VAR_CACHE_MIN_NEGATIVE_TTL = 483,
374
    VAR_QNAME_MINIMISATION = 484,
375
    VAR_QNAME_MINIMISATION_STRICT = 485,
376
    VAR_IP_FREEBIND = 486,
377
    VAR_DEFINE_TAG = 487,
378
    VAR_LOCAL_ZONE_TAG = 488,
379
    VAR_ACCESS_CONTROL_TAG = 489,
380
    VAR_LOCAL_ZONE_OVERRIDE = 490,
381
    VAR_ACCESS_CONTROL_TAG_ACTION = 491,
382
    VAR_ACCESS_CONTROL_TAG_DATA = 492,
383
    VAR_VIEW = 493,
384
    VAR_ACCESS_CONTROL_VIEW = 494,
385
    VAR_VIEW_FIRST = 495,
386
    VAR_SERVE_EXPIRED = 496,
387
    VAR_SERVE_EXPIRED_TTL = 497,
388
    VAR_SERVE_EXPIRED_TTL_RESET = 498,
389
    VAR_SERVE_EXPIRED_REPLY_TTL = 499,
390
    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 500,
391
    VAR_EDE_SERVE_EXPIRED = 501,
392
    VAR_SERVE_ORIGINAL_TTL = 502,
393
    VAR_FAKE_DSA = 503,
394
    VAR_FAKE_SHA1 = 504,
395
    VAR_LOG_IDENTITY = 505,
396
    VAR_HIDE_TRUSTANCHOR = 506,
397
    VAR_HIDE_HTTP_USER_AGENT = 507,
398
    VAR_HTTP_USER_AGENT = 508,
399
    VAR_TRUST_ANCHOR_SIGNALING = 509,
400
    VAR_AGGRESSIVE_NSEC = 510,
401
    VAR_USE_SYSTEMD = 511,
402
    VAR_SHM_ENABLE = 512,
403
    VAR_SHM_KEY = 513,
404
    VAR_ROOT_KEY_SENTINEL = 514,
405
    VAR_DNSCRYPT = 515,
406
    VAR_DNSCRYPT_ENABLE = 516,
407
    VAR_DNSCRYPT_PORT = 517,
408
    VAR_DNSCRYPT_PROVIDER = 518,
409
    VAR_DNSCRYPT_SECRET_KEY = 519,
410
    VAR_DNSCRYPT_PROVIDER_CERT = 520,
411
    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 521,
412
    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 522,
413
    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 523,
414
    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 524,
415
    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 525,
416
    VAR_PAD_RESPONSES = 526,
417
    VAR_PAD_RESPONSES_BLOCK_SIZE = 527,
418
    VAR_PAD_QUERIES = 528,
419
    VAR_PAD_QUERIES_BLOCK_SIZE = 529,
420
    VAR_IPSECMOD_ENABLED = 530,
421
    VAR_IPSECMOD_HOOK = 531,
422
    VAR_IPSECMOD_IGNORE_BOGUS = 532,
423
    VAR_IPSECMOD_MAX_TTL = 533,
424
    VAR_IPSECMOD_WHITELIST = 534,
425
    VAR_IPSECMOD_STRICT = 535,
426
    VAR_CACHEDB = 536,
427
    VAR_CACHEDB_BACKEND = 537,
428
    VAR_CACHEDB_SECRETSEED = 538,
429
    VAR_CACHEDB_REDISHOST = 539,
430
    VAR_CACHEDB_REDISREPLICAHOST = 540,
431
    VAR_CACHEDB_REDISPORT = 541,
432
    VAR_CACHEDB_REDISREPLICAPORT = 542,
433
    VAR_CACHEDB_REDISTIMEOUT = 543,
434
    VAR_CACHEDB_REDISREPLICATIMEOUT = 544,
435
    VAR_CACHEDB_REDISEXPIRERECORDS = 545,
436
    VAR_CACHEDB_REDISPATH = 546,
437
    VAR_CACHEDB_REDISREPLICAPATH = 547,
438
    VAR_CACHEDB_REDISPASSWORD = 548,
439
    VAR_CACHEDB_REDISREPLICAPASSWORD = 549,
440
    VAR_CACHEDB_REDISLOGICALDB = 550,
441
    VAR_CACHEDB_REDISREPLICALOGICALDB = 551,
442
    VAR_CACHEDB_REDISCOMMANDTIMEOUT = 552,
443
    VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT = 553,
444
    VAR_CACHEDB_REDISCONNECTTIMEOUT = 554,
445
    VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT = 555,
446
    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 556,
447
    VAR_FOR_UPSTREAM = 557,
448
    VAR_AUTH_ZONE = 558,
449
    VAR_ZONEFILE = 559,
450
    VAR_MASTER = 560,
451
    VAR_URL = 561,
452
    VAR_FOR_DOWNSTREAM = 562,
453
    VAR_FALLBACK_ENABLED = 563,
454
    VAR_TLS_ADDITIONAL_PORT = 564,
455
    VAR_LOW_RTT = 565,
456
    VAR_LOW_RTT_PERMIL = 566,
457
    VAR_FAST_SERVER_PERMIL = 567,
458
    VAR_FAST_SERVER_NUM = 568,
459
    VAR_ALLOW_NOTIFY = 569,
460
    VAR_TLS_WIN_CERT = 570,
461
    VAR_TCP_CONNECTION_LIMIT = 571,
462
    VAR_ANSWER_COOKIE = 572,
463
    VAR_COOKIE_SECRET = 573,
464
    VAR_IP_RATELIMIT_COOKIE = 574,
465
    VAR_FORWARD_NO_CACHE = 575,
466
    VAR_STUB_NO_CACHE = 576,
467
    VAR_LOG_SERVFAIL = 577,
468
    VAR_DENY_ANY = 578,
469
    VAR_UNKNOWN_SERVER_TIME_LIMIT = 579,
470
    VAR_LOG_TAG_QUERYREPLY = 580,
471
    VAR_DISCARD_TIMEOUT = 581,
472
    VAR_WAIT_LIMIT = 582,
473
    VAR_WAIT_LIMIT_COOKIE = 583,
474
    VAR_WAIT_LIMIT_NETBLOCK = 584,
475
    VAR_WAIT_LIMIT_COOKIE_NETBLOCK = 585,
476
    VAR_STREAM_WAIT_SIZE = 586,
477
    VAR_TLS_CIPHERS = 587,
478
    VAR_TLS_CIPHERSUITES = 588,
479
    VAR_TLS_USE_SNI = 589,
480
    VAR_TLS_USE_SYSTEM_POLICY_VERSIONS = 590,
481
    VAR_IPSET = 591,
482
    VAR_IPSET_NAME_V4 = 592,
483
    VAR_IPSET_NAME_V6 = 593,
484
    VAR_TLS_SESSION_TICKET_KEYS = 594,
485
    VAR_RPZ = 595,
486
    VAR_TAGS = 596,
487
    VAR_RPZ_ACTION_OVERRIDE = 597,
488
    VAR_RPZ_CNAME_OVERRIDE = 598,
489
    VAR_RPZ_LOG = 599,
490
    VAR_RPZ_LOG_NAME = 600,
491
    VAR_DYNLIB = 601,
492
    VAR_DYNLIB_FILE = 602,
493
    VAR_EDNS_CLIENT_STRING = 603,
494
    VAR_EDNS_CLIENT_STRING_OPCODE = 604,
495
    VAR_NSID = 605,
496
    VAR_ZONEMD_PERMISSIVE_MODE = 606,
497
    VAR_ZONEMD_CHECK = 607,
498
    VAR_ZONEMD_REJECT_ABSENCE = 608,
499
    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 609,
500
    VAR_INTERFACE_AUTOMATIC_PORTS = 610,
501
    VAR_EDE = 611,
502
    VAR_DNS_ERROR_REPORTING = 612,
503
    VAR_INTERFACE_ACTION = 613,
504
    VAR_INTERFACE_VIEW = 614,
505
    VAR_INTERFACE_TAG = 615,
506
    VAR_INTERFACE_TAG_ACTION = 616,
507
    VAR_INTERFACE_TAG_DATA = 617,
508
    VAR_QUIC_PORT = 618,
509
    VAR_QUIC_SIZE = 619,
510
    VAR_PROXY_PROTOCOL_PORT = 620,
511
    VAR_STATISTICS_INHIBIT_ZERO = 621,
512
    VAR_HARDEN_UNKNOWN_ADDITIONAL = 622,
513
    VAR_DISABLE_EDNS_DO = 623,
514
    VAR_CACHEDB_NO_STORE = 624,
515
    VAR_LOG_DESTADDR = 625,
516
    VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED = 626,
517
    VAR_COOKIE_SECRET_FILE = 627,
518
    VAR_ITER_SCRUB_NS = 628,
519
    VAR_ITER_SCRUB_CNAME = 629,
520
    VAR_MAX_GLOBAL_QUOTA = 630,
521
    VAR_HARDEN_UNVERIFIED_GLUE = 631,
522
    VAR_LOG_TIME_ISO = 632,
523
    VAR_ITER_SCRUB_PROMISCUOUS = 633
524
  };
525
#endif
526
/* Tokens.  */
527
#define SPACE 258
528
#define LETTER 259
529
#define NEWLINE 260
530
#define COMMENT 261
531
#define COLON 262
532
#define ANY 263
533
#define ZONESTR 264
534
#define STRING_ARG 265
535
#define VAR_FORCE_TOPLEVEL 266
536
#define VAR_SERVER 267
537
#define VAR_VERBOSITY 268
538
#define VAR_NUM_THREADS 269
539
#define VAR_PORT 270
540
#define VAR_OUTGOING_RANGE 271
541
#define VAR_INTERFACE 272
542
#define VAR_PREFER_IP4 273
543
#define VAR_DO_IP4 274
544
#define VAR_DO_IP6 275
545
#define VAR_DO_NAT64 276
546
#define VAR_PREFER_IP6 277
547
#define VAR_DO_UDP 278
548
#define VAR_DO_TCP 279
549
#define VAR_TCP_MSS 280
550
#define VAR_OUTGOING_TCP_MSS 281
551
#define VAR_TCP_IDLE_TIMEOUT 282
552
#define VAR_EDNS_TCP_KEEPALIVE 283
553
#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 284
554
#define VAR_SOCK_QUEUE_TIMEOUT 285
555
#define VAR_CHROOT 286
556
#define VAR_USERNAME 287
557
#define VAR_DIRECTORY 288
558
#define VAR_LOGFILE 289
559
#define VAR_PIDFILE 290
560
#define VAR_MSG_CACHE_SIZE 291
561
#define VAR_MSG_CACHE_SLABS 292
562
#define VAR_NUM_QUERIES_PER_THREAD 293
563
#define VAR_RRSET_CACHE_SIZE 294
564
#define VAR_RRSET_CACHE_SLABS 295
565
#define VAR_OUTGOING_NUM_TCP 296
566
#define VAR_INFRA_HOST_TTL 297
567
#define VAR_INFRA_LAME_TTL 298
568
#define VAR_INFRA_CACHE_SLABS 299
569
#define VAR_INFRA_CACHE_NUMHOSTS 300
570
#define VAR_INFRA_CACHE_LAME_SIZE 301
571
#define VAR_NAME 302
572
#define VAR_STUB_ZONE 303
573
#define VAR_STUB_HOST 304
574
#define VAR_STUB_ADDR 305
575
#define VAR_TARGET_FETCH_POLICY 306
576
#define VAR_HARDEN_SHORT_BUFSIZE 307
577
#define VAR_HARDEN_LARGE_QUERIES 308
578
#define VAR_FORWARD_ZONE 309
579
#define VAR_FORWARD_HOST 310
580
#define VAR_FORWARD_ADDR 311
581
#define VAR_DO_NOT_QUERY_ADDRESS 312
582
#define VAR_HIDE_IDENTITY 313
583
#define VAR_HIDE_VERSION 314
584
#define VAR_IDENTITY 315
585
#define VAR_VERSION 316
586
#define VAR_HARDEN_GLUE 317
587
#define VAR_MODULE_CONF 318
588
#define VAR_TRUST_ANCHOR_FILE 319
589
#define VAR_TRUST_ANCHOR 320
590
#define VAR_VAL_OVERRIDE_DATE 321
591
#define VAR_BOGUS_TTL 322
592
#define VAR_VAL_CLEAN_ADDITIONAL 323
593
#define VAR_VAL_PERMISSIVE_MODE 324
594
#define VAR_INCOMING_NUM_TCP 325
595
#define VAR_MSG_BUFFER_SIZE 326
596
#define VAR_KEY_CACHE_SIZE 327
597
#define VAR_KEY_CACHE_SLABS 328
598
#define VAR_TRUSTED_KEYS_FILE 329
599
#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 330
600
#define VAR_USE_SYSLOG 331
601
#define VAR_OUTGOING_INTERFACE 332
602
#define VAR_ROOT_HINTS 333
603
#define VAR_DO_NOT_QUERY_LOCALHOST 334
604
#define VAR_CACHE_MAX_TTL 335
605
#define VAR_HARDEN_DNSSEC_STRIPPED 336
606
#define VAR_ACCESS_CONTROL 337
607
#define VAR_LOCAL_ZONE 338
608
#define VAR_LOCAL_DATA 339
609
#define VAR_INTERFACE_AUTOMATIC 340
610
#define VAR_STATISTICS_INTERVAL 341
611
#define VAR_DO_DAEMONIZE 342
612
#define VAR_USE_CAPS_FOR_ID 343
613
#define VAR_STATISTICS_CUMULATIVE 344
614
#define VAR_OUTGOING_PORT_PERMIT 345
615
#define VAR_OUTGOING_PORT_AVOID 346
616
#define VAR_DLV_ANCHOR_FILE 347
617
#define VAR_DLV_ANCHOR 348
618
#define VAR_NEG_CACHE_SIZE 349
619
#define VAR_HARDEN_REFERRAL_PATH 350
620
#define VAR_PRIVATE_ADDRESS 351
621
#define VAR_PRIVATE_DOMAIN 352
622
#define VAR_REMOTE_CONTROL 353
623
#define VAR_CONTROL_ENABLE 354
624
#define VAR_CONTROL_INTERFACE 355
625
#define VAR_CONTROL_PORT 356
626
#define VAR_SERVER_KEY_FILE 357
627
#define VAR_SERVER_CERT_FILE 358
628
#define VAR_CONTROL_KEY_FILE 359
629
#define VAR_CONTROL_CERT_FILE 360
630
#define VAR_CONTROL_USE_CERT 361
631
#define VAR_TCP_REUSE_TIMEOUT 362
632
#define VAR_MAX_REUSE_TCP_QUERIES 363
633
#define VAR_EXTENDED_STATISTICS 364
634
#define VAR_LOCAL_DATA_PTR 365
635
#define VAR_JOSTLE_TIMEOUT 366
636
#define VAR_STUB_PRIME 367
637
#define VAR_UNWANTED_REPLY_THRESHOLD 368
638
#define VAR_LOG_TIME_ASCII 369
639
#define VAR_DOMAIN_INSECURE 370
640
#define VAR_PYTHON 371
641
#define VAR_PYTHON_SCRIPT 372
642
#define VAR_VAL_SIG_SKEW_MIN 373
643
#define VAR_VAL_SIG_SKEW_MAX 374
644
#define VAR_VAL_MAX_RESTART 375
645
#define VAR_CACHE_MIN_TTL 376
646
#define VAR_VAL_LOG_LEVEL 377
647
#define VAR_AUTO_TRUST_ANCHOR_FILE 378
648
#define VAR_KEEP_MISSING 379
649
#define VAR_ADD_HOLDDOWN 380
650
#define VAR_DEL_HOLDDOWN 381
651
#define VAR_SO_RCVBUF 382
652
#define VAR_EDNS_BUFFER_SIZE 383
653
#define VAR_PREFETCH 384
654
#define VAR_PREFETCH_KEY 385
655
#define VAR_SO_SNDBUF 386
656
#define VAR_SO_REUSEPORT 387
657
#define VAR_HARDEN_BELOW_NXDOMAIN 388
658
#define VAR_IGNORE_CD_FLAG 389
659
#define VAR_LOG_QUERIES 390
660
#define VAR_LOG_REPLIES 391
661
#define VAR_LOG_LOCAL_ACTIONS 392
662
#define VAR_TCP_UPSTREAM 393
663
#define VAR_SSL_UPSTREAM 394
664
#define VAR_TCP_AUTH_QUERY_TIMEOUT 395
665
#define VAR_SSL_SERVICE_KEY 396
666
#define VAR_SSL_SERVICE_PEM 397
667
#define VAR_SSL_PORT 398
668
#define VAR_FORWARD_FIRST 399
669
#define VAR_STUB_SSL_UPSTREAM 400
670
#define VAR_FORWARD_SSL_UPSTREAM 401
671
#define VAR_TLS_CERT_BUNDLE 402
672
#define VAR_STUB_TCP_UPSTREAM 403
673
#define VAR_FORWARD_TCP_UPSTREAM 404
674
#define VAR_HTTPS_PORT 405
675
#define VAR_HTTP_ENDPOINT 406
676
#define VAR_HTTP_MAX_STREAMS 407
677
#define VAR_HTTP_QUERY_BUFFER_SIZE 408
678
#define VAR_HTTP_RESPONSE_BUFFER_SIZE 409
679
#define VAR_HTTP_NODELAY 410
680
#define VAR_HTTP_NOTLS_DOWNSTREAM 411
681
#define VAR_STUB_FIRST 412
682
#define VAR_MINIMAL_RESPONSES 413
683
#define VAR_RRSET_ROUNDROBIN 414
684
#define VAR_MAX_UDP_SIZE 415
685
#define VAR_DELAY_CLOSE 416
686
#define VAR_UDP_CONNECT 417
687
#define VAR_UNBLOCK_LAN_ZONES 418
688
#define VAR_INSECURE_LAN_ZONES 419
689
#define VAR_INFRA_CACHE_MIN_RTT 420
690
#define VAR_INFRA_CACHE_MAX_RTT 421
691
#define VAR_INFRA_KEEP_PROBING 422
692
#define VAR_DNS64_PREFIX 423
693
#define VAR_DNS64_SYNTHALL 424
694
#define VAR_DNS64_IGNORE_AAAA 425
695
#define VAR_NAT64_PREFIX 426
696
#define VAR_DNSTAP 427
697
#define VAR_DNSTAP_ENABLE 428
698
#define VAR_DNSTAP_SOCKET_PATH 429
699
#define VAR_DNSTAP_IP 430
700
#define VAR_DNSTAP_TLS 431
701
#define VAR_DNSTAP_TLS_SERVER_NAME 432
702
#define VAR_DNSTAP_TLS_CERT_BUNDLE 433
703
#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 434
704
#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 435
705
#define VAR_DNSTAP_SEND_IDENTITY 436
706
#define VAR_DNSTAP_SEND_VERSION 437
707
#define VAR_DNSTAP_BIDIRECTIONAL 438
708
#define VAR_DNSTAP_IDENTITY 439
709
#define VAR_DNSTAP_VERSION 440
710
#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 441
711
#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 442
712
#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 443
713
#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 444
714
#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 445
715
#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 446
716
#define VAR_DNSTAP_SAMPLE_RATE 447
717
#define VAR_RESPONSE_IP_TAG 448
718
#define VAR_RESPONSE_IP 449
719
#define VAR_RESPONSE_IP_DATA 450
720
#define VAR_HARDEN_ALGO_DOWNGRADE 451
721
#define VAR_IP_TRANSPARENT 452
722
#define VAR_IP_DSCP 453
723
#define VAR_DISABLE_DNSSEC_LAME_CHECK 454
724
#define VAR_IP_RATELIMIT 455
725
#define VAR_IP_RATELIMIT_SLABS 456
726
#define VAR_IP_RATELIMIT_SIZE 457
727
#define VAR_RATELIMIT 458
728
#define VAR_RATELIMIT_SLABS 459
729
#define VAR_RATELIMIT_SIZE 460
730
#define VAR_OUTBOUND_MSG_RETRY 461
731
#define VAR_MAX_SENT_COUNT 462
732
#define VAR_MAX_QUERY_RESTARTS 463
733
#define VAR_RATELIMIT_FOR_DOMAIN 464
734
#define VAR_RATELIMIT_BELOW_DOMAIN 465
735
#define VAR_IP_RATELIMIT_FACTOR 466
736
#define VAR_RATELIMIT_FACTOR 467
737
#define VAR_IP_RATELIMIT_BACKOFF 468
738
#define VAR_RATELIMIT_BACKOFF 469
739
#define VAR_SEND_CLIENT_SUBNET 470
740
#define VAR_CLIENT_SUBNET_ZONE 471
741
#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 472
742
#define VAR_CLIENT_SUBNET_OPCODE 473
743
#define VAR_MAX_CLIENT_SUBNET_IPV4 474
744
#define VAR_MAX_CLIENT_SUBNET_IPV6 475
745
#define VAR_MIN_CLIENT_SUBNET_IPV4 476
746
#define VAR_MIN_CLIENT_SUBNET_IPV6 477
747
#define VAR_MAX_ECS_TREE_SIZE_IPV4 478
748
#define VAR_MAX_ECS_TREE_SIZE_IPV6 479
749
#define VAR_CAPS_WHITELIST 480
750
#define VAR_CACHE_MAX_NEGATIVE_TTL 481
751
#define VAR_PERMIT_SMALL_HOLDDOWN 482
752
#define VAR_CACHE_MIN_NEGATIVE_TTL 483
753
#define VAR_QNAME_MINIMISATION 484
754
#define VAR_QNAME_MINIMISATION_STRICT 485
755
#define VAR_IP_FREEBIND 486
756
#define VAR_DEFINE_TAG 487
757
#define VAR_LOCAL_ZONE_TAG 488
758
#define VAR_ACCESS_CONTROL_TAG 489
759
#define VAR_LOCAL_ZONE_OVERRIDE 490
760
#define VAR_ACCESS_CONTROL_TAG_ACTION 491
761
#define VAR_ACCESS_CONTROL_TAG_DATA 492
762
#define VAR_VIEW 493
763
#define VAR_ACCESS_CONTROL_VIEW 494
764
#define VAR_VIEW_FIRST 495
765
#define VAR_SERVE_EXPIRED 496
766
#define VAR_SERVE_EXPIRED_TTL 497
767
#define VAR_SERVE_EXPIRED_TTL_RESET 498
768
#define VAR_SERVE_EXPIRED_REPLY_TTL 499
769
#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 500
770
#define VAR_EDE_SERVE_EXPIRED 501
771
#define VAR_SERVE_ORIGINAL_TTL 502
772
#define VAR_FAKE_DSA 503
773
#define VAR_FAKE_SHA1 504
774
#define VAR_LOG_IDENTITY 505
775
#define VAR_HIDE_TRUSTANCHOR 506
776
#define VAR_HIDE_HTTP_USER_AGENT 507
777
#define VAR_HTTP_USER_AGENT 508
778
#define VAR_TRUST_ANCHOR_SIGNALING 509
779
#define VAR_AGGRESSIVE_NSEC 510
780
#define VAR_USE_SYSTEMD 511
781
#define VAR_SHM_ENABLE 512
782
#define VAR_SHM_KEY 513
783
#define VAR_ROOT_KEY_SENTINEL 514
784
#define VAR_DNSCRYPT 515
785
#define VAR_DNSCRYPT_ENABLE 516
786
#define VAR_DNSCRYPT_PORT 517
787
#define VAR_DNSCRYPT_PROVIDER 518
788
#define VAR_DNSCRYPT_SECRET_KEY 519
789
#define VAR_DNSCRYPT_PROVIDER_CERT 520
790
#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 521
791
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 522
792
#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 523
793
#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 524
794
#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 525
795
#define VAR_PAD_RESPONSES 526
796
#define VAR_PAD_RESPONSES_BLOCK_SIZE 527
797
#define VAR_PAD_QUERIES 528
798
#define VAR_PAD_QUERIES_BLOCK_SIZE 529
799
#define VAR_IPSECMOD_ENABLED 530
800
#define VAR_IPSECMOD_HOOK 531
801
#define VAR_IPSECMOD_IGNORE_BOGUS 532
802
#define VAR_IPSECMOD_MAX_TTL 533
803
#define VAR_IPSECMOD_WHITELIST 534
804
#define VAR_IPSECMOD_STRICT 535
805
#define VAR_CACHEDB 536
806
#define VAR_CACHEDB_BACKEND 537
807
#define VAR_CACHEDB_SECRETSEED 538
808
#define VAR_CACHEDB_REDISHOST 539
809
#define VAR_CACHEDB_REDISREPLICAHOST 540
810
#define VAR_CACHEDB_REDISPORT 541
811
#define VAR_CACHEDB_REDISREPLICAPORT 542
812
#define VAR_CACHEDB_REDISTIMEOUT 543
813
#define VAR_CACHEDB_REDISREPLICATIMEOUT 544
814
#define VAR_CACHEDB_REDISEXPIRERECORDS 545
815
#define VAR_CACHEDB_REDISPATH 546
816
#define VAR_CACHEDB_REDISREPLICAPATH 547
817
#define VAR_CACHEDB_REDISPASSWORD 548
818
#define VAR_CACHEDB_REDISREPLICAPASSWORD 549
819
#define VAR_CACHEDB_REDISLOGICALDB 550
820
#define VAR_CACHEDB_REDISREPLICALOGICALDB 551
821
#define VAR_CACHEDB_REDISCOMMANDTIMEOUT 552
822
#define VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT 553
823
#define VAR_CACHEDB_REDISCONNECTTIMEOUT 554
824
#define VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT 555
825
#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 556
826
#define VAR_FOR_UPSTREAM 557
827
#define VAR_AUTH_ZONE 558
828
#define VAR_ZONEFILE 559
829
#define VAR_MASTER 560
830
#define VAR_URL 561
831
#define VAR_FOR_DOWNSTREAM 562
832
#define VAR_FALLBACK_ENABLED 563
833
#define VAR_TLS_ADDITIONAL_PORT 564
834
#define VAR_LOW_RTT 565
835
#define VAR_LOW_RTT_PERMIL 566
836
#define VAR_FAST_SERVER_PERMIL 567
837
#define VAR_FAST_SERVER_NUM 568
838
#define VAR_ALLOW_NOTIFY 569
839
#define VAR_TLS_WIN_CERT 570
840
#define VAR_TCP_CONNECTION_LIMIT 571
841
#define VAR_ANSWER_COOKIE 572
842
#define VAR_COOKIE_SECRET 573
843
#define VAR_IP_RATELIMIT_COOKIE 574
844
#define VAR_FORWARD_NO_CACHE 575
845
#define VAR_STUB_NO_CACHE 576
846
#define VAR_LOG_SERVFAIL 577
847
#define VAR_DENY_ANY 578
848
#define VAR_UNKNOWN_SERVER_TIME_LIMIT 579
849
#define VAR_LOG_TAG_QUERYREPLY 580
850
#define VAR_DISCARD_TIMEOUT 581
851
#define VAR_WAIT_LIMIT 582
852
#define VAR_WAIT_LIMIT_COOKIE 583
853
#define VAR_WAIT_LIMIT_NETBLOCK 584
854
#define VAR_WAIT_LIMIT_COOKIE_NETBLOCK 585
855
#define VAR_STREAM_WAIT_SIZE 586
856
#define VAR_TLS_CIPHERS 587
857
#define VAR_TLS_CIPHERSUITES 588
858
#define VAR_TLS_USE_SNI 589
859
#define VAR_TLS_USE_SYSTEM_POLICY_VERSIONS 590
860
#define VAR_IPSET 591
861
#define VAR_IPSET_NAME_V4 592
862
#define VAR_IPSET_NAME_V6 593
863
#define VAR_TLS_SESSION_TICKET_KEYS 594
864
#define VAR_RPZ 595
865
#define VAR_TAGS 596
866
#define VAR_RPZ_ACTION_OVERRIDE 597
867
#define VAR_RPZ_CNAME_OVERRIDE 598
868
#define VAR_RPZ_LOG 599
869
#define VAR_RPZ_LOG_NAME 600
870
#define VAR_DYNLIB 601
871
#define VAR_DYNLIB_FILE 602
872
#define VAR_EDNS_CLIENT_STRING 603
873
#define VAR_EDNS_CLIENT_STRING_OPCODE 604
874
#define VAR_NSID 605
875
#define VAR_ZONEMD_PERMISSIVE_MODE 606
876
#define VAR_ZONEMD_CHECK 607
877
#define VAR_ZONEMD_REJECT_ABSENCE 608
878
#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 609
879
#define VAR_INTERFACE_AUTOMATIC_PORTS 610
880
#define VAR_EDE 611
881
#define VAR_DNS_ERROR_REPORTING 612
882
#define VAR_INTERFACE_ACTION 613
883
#define VAR_INTERFACE_VIEW 614
884
#define VAR_INTERFACE_TAG 615
885
#define VAR_INTERFACE_TAG_ACTION 616
886
#define VAR_INTERFACE_TAG_DATA 617
887
#define VAR_QUIC_PORT 618
888
#define VAR_QUIC_SIZE 619
889
#define VAR_PROXY_PROTOCOL_PORT 620
890
#define VAR_STATISTICS_INHIBIT_ZERO 621
891
#define VAR_HARDEN_UNKNOWN_ADDITIONAL 622
892
#define VAR_DISABLE_EDNS_DO 623
893
#define VAR_CACHEDB_NO_STORE 624
894
#define VAR_LOG_DESTADDR 625
895
#define VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED 626
896
#define VAR_COOKIE_SECRET_FILE 627
897
#define VAR_ITER_SCRUB_NS 628
898
#define VAR_ITER_SCRUB_CNAME 629
899
#define VAR_MAX_GLOBAL_QUOTA 630
900
#define VAR_HARDEN_UNVERIFIED_GLUE 631
901
#define VAR_LOG_TIME_ISO 632
902
#define VAR_ITER_SCRUB_PROMISCUOUS 633
903
904
/* Value type.  */
905
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
906
union YYSTYPE
907
{
908
#line 68 "./util/configparser.y"
909
910
  char* str;
911
912
#line 913 "util/configparser.c"
913
914
};
915
typedef union YYSTYPE YYSTYPE;
916
# define YYSTYPE_IS_TRIVIAL 1
917
# define YYSTYPE_IS_DECLARED 1
918
#endif
919
920
921
extern YYSTYPE yylval;
922
923
int yyparse (void);
924
925
#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
926
927
928
929
#ifdef short
930
# undef short
931
#endif
932
933
/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
934
   <limits.h> and (if available) <stdint.h> are included
935
   so that the code can choose integer types of a good width.  */
936
937
#ifndef __PTRDIFF_MAX__
938
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
939
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
940
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
941
#  define YY_STDINT_H
942
# endif
943
#endif
944
945
/* Narrow types that promote to a signed type and that can represent a
946
   signed or unsigned integer of at least N bits.  In tables they can
947
   save space and decrease cache pressure.  Promoting to a signed type
948
   helps avoid bugs in integer arithmetic.  */
949
950
#ifdef __INT_LEAST8_MAX__
951
typedef __INT_LEAST8_TYPE__ yytype_int8;
952
#elif defined YY_STDINT_H
953
typedef int_least8_t yytype_int8;
954
#else
955
typedef signed char yytype_int8;
956
#endif
957
958
#ifdef __INT_LEAST16_MAX__
959
typedef __INT_LEAST16_TYPE__ yytype_int16;
960
#elif defined YY_STDINT_H
961
typedef int_least16_t yytype_int16;
962
#else
963
typedef short yytype_int16;
964
#endif
965
966
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
967
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
968
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
969
       && UINT_LEAST8_MAX <= INT_MAX)
970
typedef uint_least8_t yytype_uint8;
971
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
972
typedef unsigned char yytype_uint8;
973
#else
974
typedef short yytype_uint8;
975
#endif
976
977
#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
978
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
979
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
980
       && UINT_LEAST16_MAX <= INT_MAX)
981
typedef uint_least16_t yytype_uint16;
982
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
983
typedef unsigned short yytype_uint16;
984
#else
985
typedef int yytype_uint16;
986
#endif
987
988
#ifndef YYPTRDIFF_T
989
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
990
0
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
991
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
992
# elif defined PTRDIFF_MAX
993
#  ifndef ptrdiff_t
994
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
995
#  endif
996
#  define YYPTRDIFF_T ptrdiff_t
997
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
998
# else
999
#  define YYPTRDIFF_T long
1000
#  define YYPTRDIFF_MAXIMUM LONG_MAX
1001
# endif
1002
#endif
1003
1004
#ifndef YYSIZE_T
1005
# ifdef __SIZE_TYPE__
1006
#  define YYSIZE_T __SIZE_TYPE__
1007
# elif defined size_t
1008
#  define YYSIZE_T size_t
1009
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1010
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1011
#  define YYSIZE_T size_t
1012
# else
1013
#  define YYSIZE_T unsigned
1014
# endif
1015
#endif
1016
1017
#define YYSIZE_MAXIMUM                                  \
1018
  YY_CAST (YYPTRDIFF_T,                                 \
1019
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
1020
            ? YYPTRDIFF_MAXIMUM                         \
1021
            : YY_CAST (YYSIZE_T, -1)))
1022
1023
0
#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1024
1025
/* Stored state numbers (used for stacks). */
1026
typedef yytype_int16 yy_state_t;
1027
1028
/* State numbers in computations.  */
1029
typedef int yy_state_fast_t;
1030
1031
#ifndef YY_
1032
# if defined YYENABLE_NLS && YYENABLE_NLS
1033
#  if ENABLE_NLS
1034
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1035
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1036
#  endif
1037
# endif
1038
# ifndef YY_
1039
0
#  define YY_(Msgid) Msgid
1040
# endif
1041
#endif
1042
1043
#ifndef YY_ATTRIBUTE_PURE
1044
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1045
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1046
# else
1047
#  define YY_ATTRIBUTE_PURE
1048
# endif
1049
#endif
1050
1051
#ifndef YY_ATTRIBUTE_UNUSED
1052
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1053
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1054
# else
1055
#  define YY_ATTRIBUTE_UNUSED
1056
# endif
1057
#endif
1058
1059
/* Suppress unused-variable warnings by "using" E.  */
1060
#if ! defined lint || defined __GNUC__
1061
0
# define YYUSE(E) ((void) (E))
1062
#else
1063
# define YYUSE(E) /* empty */
1064
#endif
1065
1066
#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1067
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
1068
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
1069
    _Pragma ("GCC diagnostic push")                                     \
1070
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
1071
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1072
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
1073
    _Pragma ("GCC diagnostic pop")
1074
#else
1075
# define YY_INITIAL_VALUE(Value) Value
1076
#endif
1077
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1078
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1079
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1080
#endif
1081
#ifndef YY_INITIAL_VALUE
1082
# define YY_INITIAL_VALUE(Value) /* Nothing. */
1083
#endif
1084
1085
#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1086
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
1087
    _Pragma ("GCC diagnostic push")                            \
1088
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1089
# define YY_IGNORE_USELESS_CAST_END            \
1090
    _Pragma ("GCC diagnostic pop")
1091
#endif
1092
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1093
# define YY_IGNORE_USELESS_CAST_BEGIN
1094
# define YY_IGNORE_USELESS_CAST_END
1095
#endif
1096
1097
1098
0
#define YY_ASSERT(E) ((void) (0 && (E)))
1099
1100
#if ! defined yyoverflow || YYERROR_VERBOSE
1101
1102
/* The parser invokes alloca or malloc; define the necessary symbols.  */
1103
1104
# ifdef YYSTACK_USE_ALLOCA
1105
#  if YYSTACK_USE_ALLOCA
1106
#   ifdef __GNUC__
1107
#    define YYSTACK_ALLOC __builtin_alloca
1108
#   elif defined __BUILTIN_VA_ARG_INCR
1109
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1110
#   elif defined _AIX
1111
#    define YYSTACK_ALLOC __alloca
1112
#   elif defined _MSC_VER
1113
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1114
#    define alloca _alloca
1115
#   else
1116
#    define YYSTACK_ALLOC alloca
1117
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1118
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1119
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
1120
#     ifndef EXIT_SUCCESS
1121
#      define EXIT_SUCCESS 0
1122
#     endif
1123
#    endif
1124
#   endif
1125
#  endif
1126
# endif
1127
1128
# ifdef YYSTACK_ALLOC
1129
   /* Pacify GCC's 'empty if-body' warning.  */
1130
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1131
#  ifndef YYSTACK_ALLOC_MAXIMUM
1132
    /* The OS might guarantee only one guard page at the bottom of the stack,
1133
       and a page size can be as small as 4096 bytes.  So we cannot safely
1134
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1135
       to allow for a few compiler-allocated temporary stack slots.  */
1136
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1137
#  endif
1138
# else
1139
#  define YYSTACK_ALLOC YYMALLOC
1140
0
#  define YYSTACK_FREE YYFREE
1141
#  ifndef YYSTACK_ALLOC_MAXIMUM
1142
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1143
#  endif
1144
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1145
       && ! ((defined YYMALLOC || defined malloc) \
1146
             && (defined YYFREE || defined free)))
1147
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1148
#   ifndef EXIT_SUCCESS
1149
#    define EXIT_SUCCESS 0
1150
#   endif
1151
#  endif
1152
#  ifndef YYMALLOC
1153
#   define YYMALLOC malloc
1154
#   if ! defined malloc && ! defined EXIT_SUCCESS
1155
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1156
#   endif
1157
#  endif
1158
#  ifndef YYFREE
1159
0
#   define YYFREE free
1160
#   if ! defined free && ! defined EXIT_SUCCESS
1161
void free (void *); /* INFRINGES ON USER NAME SPACE */
1162
#   endif
1163
#  endif
1164
# endif
1165
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
1166
1167
1168
#if (! defined yyoverflow \
1169
     && (! defined __cplusplus \
1170
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1171
1172
/* A type that is properly aligned for any stack member.  */
1173
union yyalloc
1174
{
1175
  yy_state_t yyss_alloc;
1176
  YYSTYPE yyvs_alloc;
1177
};
1178
1179
/* The size of the maximum gap between one aligned stack and the next.  */
1180
0
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1181
1182
/* The size of an array large to enough to hold all stacks, each with
1183
   N elements.  */
1184
# define YYSTACK_BYTES(N) \
1185
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1186
      + YYSTACK_GAP_MAXIMUM)
1187
1188
# define YYCOPY_NEEDED 1
1189
1190
/* Relocate STACK from its old location to the new one.  The
1191
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
1192
   elements in the stack, and YYPTR gives the new location of the
1193
   stack.  Advance YYPTR to a properly aligned location for the next
1194
   stack.  */
1195
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
1196
0
    do                                                                  \
1197
0
      {                                                                 \
1198
0
        YYPTRDIFF_T yynewbytes;                                         \
1199
0
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
1200
0
        Stack = &yyptr->Stack_alloc;                                    \
1201
0
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1202
0
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
1203
0
      }                                                                 \
1204
0
    while (0)
1205
1206
#endif
1207
1208
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1209
/* Copy COUNT objects from SRC to DST.  The source and destination do
1210
   not overlap.  */
1211
# ifndef YYCOPY
1212
#  if defined __GNUC__ && 1 < __GNUC__
1213
#   define YYCOPY(Dst, Src, Count) \
1214
0
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1215
#  else
1216
#   define YYCOPY(Dst, Src, Count)              \
1217
      do                                        \
1218
        {                                       \
1219
          YYPTRDIFF_T yyi;                      \
1220
          for (yyi = 0; yyi < (Count); yyi++)   \
1221
            (Dst)[yyi] = (Src)[yyi];            \
1222
        }                                       \
1223
      while (0)
1224
#  endif
1225
# endif
1226
#endif /* !YYCOPY_NEEDED */
1227
1228
/* YYFINAL -- State number of the termination state.  */
1229
0
#define YYFINAL  2
1230
/* YYLAST -- Last index in YYTABLE.  */
1231
0
#define YYLAST   809
1232
1233
/* YYNTOKENS -- Number of terminals.  */
1234
0
#define YYNTOKENS  379
1235
/* YYNNTS -- Number of nonterminals.  */
1236
#define YYNNTS  407
1237
/* YYNRULES -- Number of rules.  */
1238
#define YYNRULES  788
1239
/* YYNSTATES -- Number of states.  */
1240
#define YYNSTATES  1180
1241
1242
0
#define YYUNDEFTOK  2
1243
0
#define YYMAXUTOK   633
1244
1245
1246
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1247
   as returned by yylex, with out-of-bounds checking.  */
1248
#define YYTRANSLATE(YYX)                                                \
1249
0
  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1250
1251
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1252
   as returned by yylex.  */
1253
static const yytype_int16 yytranslate[] =
1254
{
1255
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1256
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1257
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1258
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1259
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1260
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1261
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1262
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1263
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1264
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1265
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1266
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1267
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1268
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1269
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1270
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1271
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1272
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1273
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1274
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1275
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1276
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1278
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1279
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1280
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1281
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1282
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1283
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1284
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1285
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1286
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1287
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1288
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1289
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1290
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1291
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1292
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1293
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
1294
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
1295
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
1296
     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1297
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1298
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1299
     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1300
     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1301
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1302
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1303
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1304
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1305
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1306
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1307
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1308
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1309
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1310
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1311
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1312
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1313
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1314
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1315
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1316
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1317
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1318
     375,   376,   377,   378
1319
};
1320
1321
#if YYDEBUG
1322
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1323
static const yytype_int16 yyrline[] =
1324
{
1325
       0,   222,   222,   222,   223,   223,   224,   224,   225,   225,
1326
     225,   226,   226,   227,   227,   228,   228,   229,   231,   238,
1327
     244,   245,   246,   246,   246,   247,   247,   248,   248,   248,
1328
     249,   249,   249,   250,   250,   250,   251,   251,   252,   253,
1329
     253,   253,   254,   254,   254,   255,   255,   256,   256,   257,
1330
     257,   258,   258,   259,   259,   260,   260,   261,   261,   262,
1331
     262,   263,   263,   263,   264,   264,   265,   265,   265,   266,
1332
     266,   266,   267,   267,   268,   268,   269,   269,   270,   270,
1333
     271,   271,   271,   272,   272,   273,   273,   274,   274,   274,
1334
     275,   275,   276,   276,   277,   277,   278,   278,   278,   279,
1335
     279,   280,   280,   281,   281,   282,   282,   283,   283,   284,
1336
     284,   285,   285,   286,   286,   287,   287,   287,   288,   288,
1337
     288,   289,   289,   289,   290,   290,   290,   290,   291,   292,
1338
     292,   292,   293,   293,   293,   294,   294,   295,   295,   296,
1339
     296,   296,   297,   297,   297,   298,   298,   299,   299,   299,
1340
     300,   301,   301,   301,   302,   302,   302,   303,   303,   304,
1341
     304,   305,   305,   306,   307,   307,   308,   308,   309,   309,
1342
     310,   310,   311,   311,   312,   312,   313,   313,   314,   314,
1343
     315,   315,   316,   316,   317,   318,   318,   319,   319,   319,
1344
     320,   320,   321,   321,   322,   322,   323,   323,   323,   324,
1345
     324,   325,   326,   326,   327,   327,   328,   329,   329,   330,
1346
     330,   331,   331,   331,   332,   332,   333,   333,   333,   334,
1347
     334,   334,   335,   335,   336,   337,   337,   338,   338,   339,
1348
     339,   340,   340,   341,   341,   341,   342,   342,   342,   343,
1349
     343,   343,   344,   344,   345,   345,   345,   346,   346,   347,
1350
     347,   348,   348,   349,   349,   349,   350,   350,   351,   352,
1351
     352,   353,   353,   354,   354,   355,   355,   356,   356,   357,
1352
     358,   358,   359,   359,   360,   360,   361,   361,   361,   362,
1353
     362,   362,   364,   372,   386,   387,   388,   388,   388,   388,
1354
     388,   389,   389,   389,   391,   399,   413,   414,   415,   415,
1355
     415,   415,   416,   416,   416,   418,   426,   440,   441,   442,
1356
     442,   442,   442,   443,   443,   443,   445,   466,   467,   468,
1357
     468,   468,   468,   469,   469,   469,   470,   470,   470,   473,
1358
     492,   509,   517,   527,   534,   544,   563,   564,   565,   565,
1359
     565,   565,   565,   566,   566,   566,   567,   567,   567,   567,
1360
     569,   578,   587,   598,   607,   616,   625,   634,   645,   654,
1361
     666,   680,   695,   706,   723,   740,   757,   774,   789,   804,
1362
     817,   832,   841,   850,   859,   868,   877,   886,   893,   902,
1363
     911,   920,   929,   938,   947,   956,   965,   974,   987,   998,
1364
    1009,  1020,  1029,  1042,  1055,  1064,  1073,  1082,  1089,  1096,
1365
    1105,  1112,  1121,  1129,  1136,  1143,  1151,  1160,  1169,  1177,
1366
    1195,  1203,  1211,  1219,  1227,  1235,  1251,  1258,  1267,  1276,
1367
    1290,  1299,  1308,  1317,  1326,  1335,  1344,  1353,  1362,  1369,
1368
    1376,  1402,  1410,  1417,  1424,  1431,  1438,  1446,  1454,  1462,
1369
    1469,  1480,  1491,  1498,  1507,  1516,  1525,  1534,  1541,  1548,
1370
    1555,  1571,  1579,  1587,  1597,  1607,  1617,  1631,  1639,  1652,
1371
    1663,  1671,  1684,  1693,  1702,  1711,  1720,  1730,  1740,  1748,
1372
    1761,  1770,  1778,  1787,  1795,  1808,  1817,  1826,  1836,  1843,
1373
    1853,  1863,  1873,  1883,  1893,  1903,  1913,  1923,  1933,  1943,
1374
    1950,  1957,  1964,  1973,  1982,  1991,  2000,  2007,  2017,  2025,
1375
    2034,  2041,  2059,  2072,  2085,  2098,  2107,  2116,  2125,  2134,
1376
    2143,  2153,  2163,  2174,  2183,  2192,  2201,  2210,  2219,  2228,
1377
    2237,  2246,  2255,  2268,  2281,  2290,  2297,  2306,  2315,  2324,
1378
    2333,  2343,  2351,  2364,  2372,  2428,  2435,  2450,  2460,  2470,
1379
    2477,  2484,  2491,  2498,  2513,  2528,  2535,  2542,  2551,  2559,
1380
    2566,  2580,  2601,  2622,  2634,  2646,  2658,  2667,  2688,  2700,
1381
    2712,  2721,  2742,  2751,  2760,  2769,  2777,  2785,  2798,  2811,
1382
    2826,  2841,  2850,  2859,  2869,  2879,  2888,  2897,  2906,  2912,
1383
    2921,  2930,  2940,  2950,  2960,  2969,  2979,  2988,  3001,  3014,
1384
    3026,  3040,  3052,  3066,  3075,  3086,  3095,  3104,  3111,  3121,
1385
    3128,  3135,  3144,  3153,  3163,  3173,  3183,  3193,  3200,  3207,
1386
    3216,  3225,  3235,  3245,  3255,  3262,  3269,  3276,  3284,  3294,
1387
    3304,  3314,  3324,  3334,  3344,  3400,  3410,  3418,  3426,  3441,
1388
    3450,  3456,  3457,  3458,  3458,  3458,  3459,  3459,  3459,  3460,
1389
    3460,  3462,  3472,  3481,  3488,  3495,  3502,  3509,  3516,  3523,
1390
    3529,  3530,  3531,  3531,  3531,  3532,  3532,  3532,  3533,  3534,
1391
    3534,  3535,  3535,  3536,  3536,  3537,  3538,  3539,  3540,  3541,
1392
    3542,  3543,  3545,  3554,  3564,  3571,  3578,  3587,  3594,  3601,
1393
    3608,  3615,  3624,  3633,  3640,  3647,  3657,  3667,  3677,  3687,
1394
    3697,  3707,  3718,  3724,  3725,  3726,  3728,  3735,  3741,  3742,
1395
    3743,  3745,  3752,  3762,  3769,  3778,  3786,  3792,  3793,  3795,
1396
    3795,  3795,  3796,  3796,  3797,  3798,  3799,  3800,  3801,  3803,
1397
    3812,  3821,  3828,  3837,  3844,  3853,  3861,  3874,  3882,  3895,
1398
    3901,  3902,  3903,  3903,  3904,  3904,  3905,  3905,  3906,  3906,
1399
    3907,  3907,  3908,  3908,  3909,  3909,  3910,  3910,  3911,  3911,
1400
    3912,  3912,  3913,  3915,  3927,  3939,  3952,  3965,  3977,  3989,
1401
    4004,  4019,  4031,  4043,  4055,  4067,  4080,  4093,  4106,  4119,
1402
    4132,  4145,  4158,  4173,  4188,  4199,  4208,  4224,  4231,  4240,
1403
    4249,  4258,  4268,  4274,  4275,  4276,  4276,  4278,  4293
1404
};
1405
#endif
1406
1407
#if YYDEBUG || YYERROR_VERBOSE || 0
1408
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1409
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1410
static const char *const yytname[] =
1411
{
1412
  "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
1413
  "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL",
1414
  "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT",
1415
  "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4",
1416
  "VAR_DO_IP6", "VAR_DO_NAT64", "VAR_PREFER_IP6", "VAR_DO_UDP",
1417
  "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
1418
  "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
1419
  "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_SOCK_QUEUE_TIMEOUT", "VAR_CHROOT",
1420
  "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1421
  "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1422
  "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1423
  "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1424
  "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1425
  "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1426
  "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1427
  "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1428
  "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1429
  "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1430
  "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1431
  "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1432
  "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1433
  "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1434
  "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1435
  "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1436
  "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1437
  "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1438
  "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1439
  "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1440
  "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1441
  "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1442
  "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1443
  "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1444
  "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1445
  "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1446
  "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1447
  "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1448
  "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1449
  "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1450
  "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1451
  "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1452
  "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1453
  "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1454
  "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1455
  "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1456
  "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1457
  "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1458
  "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
1459
  "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
1460
  "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
1461
  "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
1462
  "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
1463
  "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
1464
  "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
1465
  "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
1466
  "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
1467
  "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
1468
  "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT",
1469
  "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1470
  "VAR_DNS64_IGNORE_AAAA", "VAR_NAT64_PREFIX", "VAR_DNSTAP",
1471
  "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
1472
  "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
1473
  "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
1474
  "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
1475
  "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
1476
  "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1477
  "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1478
  "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1479
  "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1480
  "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1481
  "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1482
  "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_DNSTAP_SAMPLE_RATE",
1483
  "VAR_RESPONSE_IP_TAG", "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA",
1484
  "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_IP_DSCP",
1485
  "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT",
1486
  "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT",
1487
  "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_OUTBOUND_MSG_RETRY",
1488
  "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS",
1489
  "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1490
  "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1491
  "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF",
1492
  "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1493
  "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1494
  "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1495
  "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1496
  "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1497
  "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1498
  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_CACHE_MIN_NEGATIVE_TTL",
1499
  "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
1500
  "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
1501
  "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
1502
  "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
1503
  "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
1504
  "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1505
  "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1506
  "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
1507
  "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1508
  "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
1509
  "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
1510
  "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1511
  "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1512
  "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1513
  "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1514
  "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1515
  "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1516
  "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1517
  "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1518
  "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
1519
  "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
1520
  "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
1521
  "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
1522
  "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
1523
  "VAR_CACHEDB_REDISREPLICAHOST", "VAR_CACHEDB_REDISPORT",
1524
  "VAR_CACHEDB_REDISREPLICAPORT", "VAR_CACHEDB_REDISTIMEOUT",
1525
  "VAR_CACHEDB_REDISREPLICATIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS",
1526
  "VAR_CACHEDB_REDISPATH", "VAR_CACHEDB_REDISREPLICAPATH",
1527
  "VAR_CACHEDB_REDISPASSWORD", "VAR_CACHEDB_REDISREPLICAPASSWORD",
1528
  "VAR_CACHEDB_REDISLOGICALDB", "VAR_CACHEDB_REDISREPLICALOGICALDB",
1529
  "VAR_CACHEDB_REDISCOMMANDTIMEOUT",
1530
  "VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT",
1531
  "VAR_CACHEDB_REDISCONNECTTIMEOUT",
1532
  "VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT",
1533
  "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM",
1534
  "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL",
1535
  "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT",
1536
  "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL",
1537
  "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT",
1538
  "VAR_TCP_CONNECTION_LIMIT", "VAR_ANSWER_COOKIE", "VAR_COOKIE_SECRET",
1539
  "VAR_IP_RATELIMIT_COOKIE", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE",
1540
  "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT",
1541
  "VAR_LOG_TAG_QUERYREPLY", "VAR_DISCARD_TIMEOUT", "VAR_WAIT_LIMIT",
1542
  "VAR_WAIT_LIMIT_COOKIE", "VAR_WAIT_LIMIT_NETBLOCK",
1543
  "VAR_WAIT_LIMIT_COOKIE_NETBLOCK", "VAR_STREAM_WAIT_SIZE",
1544
  "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI",
1545
  "VAR_TLS_USE_SYSTEM_POLICY_VERSIONS", "VAR_IPSET", "VAR_IPSET_NAME_V4",
1546
  "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ",
1547
  "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE",
1548
  "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
1549
  "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
1550
  "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
1551
  "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1552
  "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_DNS_ERROR_REPORTING",
1553
  "VAR_INTERFACE_ACTION", "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG",
1554
  "VAR_INTERFACE_TAG_ACTION", "VAR_INTERFACE_TAG_DATA", "VAR_QUIC_PORT",
1555
  "VAR_QUIC_SIZE", "VAR_PROXY_PROTOCOL_PORT",
1556
  "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL",
1557
  "VAR_DISABLE_EDNS_DO", "VAR_CACHEDB_NO_STORE", "VAR_LOG_DESTADDR",
1558
  "VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED", "VAR_COOKIE_SECRET_FILE",
1559
  "VAR_ITER_SCRUB_NS", "VAR_ITER_SCRUB_CNAME", "VAR_MAX_GLOBAL_QUOTA",
1560
  "VAR_HARDEN_UNVERIFIED_GLUE", "VAR_LOG_TIME_ISO",
1561
  "VAR_ITER_SCRUB_PROMISCUOUS", "$accept", "toplevelvars", "toplevelvar",
1562
  "force_toplevel", "serverstart", "contents_server", "content_server",
1563
  "stub_clause", "stubstart", "contents_stub", "content_stub",
1564
  "forward_clause", "forwardstart", "contents_forward", "content_forward",
1565
  "view_clause", "viewstart", "contents_view", "content_view", "authstart",
1566
  "contents_auth", "content_auth", "rpz_tag", "rpz_action_override",
1567
  "rpz_cname_override", "rpz_log", "rpz_log_name",
1568
  "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz",
1569
  "server_num_threads", "server_verbosity", "server_statistics_interval",
1570
  "server_statistics_cumulative", "server_extended_statistics",
1571
  "server_statistics_inhibit_zero", "server_shm_enable", "server_shm_key",
1572
  "server_port", "server_send_client_subnet", "server_client_subnet_zone",
1573
  "server_client_subnet_always_forward", "server_client_subnet_opcode",
1574
  "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1575
  "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1576
  "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1577
  "server_interface", "server_outgoing_interface", "server_outgoing_range",
1578
  "server_outgoing_port_permit", "server_outgoing_port_avoid",
1579
  "server_outgoing_num_tcp", "server_incoming_num_tcp",
1580
  "server_interface_automatic", "server_interface_automatic_ports",
1581
  "server_do_ip4", "server_do_ip6", "server_do_nat64", "server_do_udp",
1582
  "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6",
1583
  "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
1584
  "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
1585
  "server_tcp_auth_query_timeout", "server_tcp_keepalive",
1586
  "server_tcp_keepalive_timeout", "server_sock_queue_timeout",
1587
  "server_tcp_upstream", "server_udp_upstream_without_downstream",
1588
  "server_ssl_upstream", "server_ssl_service_key",
1589
  "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
1590
  "server_tls_win_cert", "server_tls_additional_port",
1591
  "server_tls_ciphers", "server_tls_ciphersuites",
1592
  "server_tls_session_ticket_keys", "server_tls_use_sni",
1593
  "server_tls_use_system_policy_versions", "server_https_port",
1594
  "server_http_endpoint", "server_http_max_streams",
1595
  "server_http_query_buffer_size", "server_http_response_buffer_size",
1596
  "server_http_nodelay", "server_http_notls_downstream",
1597
  "server_quic_port", "server_quic_size", "server_use_systemd",
1598
  "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
1599
  "server_log_time_iso", "server_log_queries", "server_log_replies",
1600
  "server_log_tag_queryreply", "server_log_servfail",
1601
  "server_log_destaddr", "server_log_local_actions", "server_chroot",
1602
  "server_username", "server_directory", "server_logfile",
1603
  "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
1604
  "server_dlv_anchor", "server_auto_trust_anchor_file",
1605
  "server_trust_anchor_file", "server_trusted_keys_file",
1606
  "server_trust_anchor", "server_trust_anchor_signaling",
1607
  "server_root_key_sentinel", "server_domain_insecure",
1608
  "server_hide_identity", "server_hide_version", "server_hide_trustanchor",
1609
  "server_hide_http_user_agent", "server_identity", "server_version",
1610
  "server_http_user_agent", "server_nsid", "server_so_rcvbuf",
1611
  "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
1612
  "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size",
1613
  "server_edns_buffer_size", "server_msg_buffer_size",
1614
  "server_msg_cache_size", "server_msg_cache_slabs",
1615
  "server_num_queries_per_thread", "server_jostle_timeout",
1616
  "server_delay_close", "server_udp_connect", "server_unblock_lan_zones",
1617
  "server_insecure_lan_zones", "server_rrset_cache_size",
1618
  "server_rrset_cache_slabs", "server_infra_host_ttl",
1619
  "server_infra_lame_ttl", "server_infra_cache_numhosts",
1620
  "server_infra_cache_lame_size", "server_infra_cache_slabs",
1621
  "server_infra_cache_min_rtt", "server_infra_cache_max_rtt",
1622
  "server_infra_keep_probing", "server_target_fetch_policy",
1623
  "server_harden_short_bufsize", "server_harden_large_queries",
1624
  "server_harden_glue", "server_harden_unverified_glue",
1625
  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
1626
  "server_harden_referral_path", "server_harden_algo_downgrade",
1627
  "server_harden_unknown_additional", "server_use_caps_for_id",
1628
  "server_caps_whitelist", "server_private_address",
1629
  "server_private_domain", "server_prefetch", "server_prefetch_key",
1630
  "server_deny_any", "server_unwanted_reply_threshold",
1631
  "server_do_not_query_address", "server_do_not_query_localhost",
1632
  "server_access_control", "server_interface_action", "server_module_conf",
1633
  "server_val_override_date", "server_val_sig_skew_min",
1634
  "server_val_sig_skew_max", "server_val_max_restart",
1635
  "server_cache_max_ttl", "server_cache_max_negative_ttl",
1636
  "server_cache_min_negative_ttl", "server_cache_min_ttl",
1637
  "server_bogus_ttl", "server_val_clean_additional",
1638
  "server_val_permissive_mode", "server_aggressive_nsec",
1639
  "server_ignore_cd_flag", "server_disable_edns_do",
1640
  "server_serve_expired", "server_serve_expired_ttl",
1641
  "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1642
  "server_serve_expired_client_timeout", "server_ede_serve_expired",
1643
  "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
1644
  "server_val_log_level", "server_val_nsec3_keysize_iterations",
1645
  "server_zonemd_permissive_mode", "server_add_holddown",
1646
  "server_del_holddown", "server_keep_missing",
1647
  "server_permit_small_holddown", "server_key_cache_size",
1648
  "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1649
  "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1650
  "server_rrset_roundrobin", "server_unknown_server_time_limit",
1651
  "server_discard_timeout", "server_wait_limit",
1652
  "server_wait_limit_cookie", "server_wait_limit_netblock",
1653
  "server_wait_limit_cookie_netblock", "server_max_udp_size",
1654
  "server_dns64_prefix", "server_dns64_synthall",
1655
  "server_dns64_ignore_aaaa", "server_nat64_prefix", "server_define_tag",
1656
  "server_local_zone_tag", "server_access_control_tag",
1657
  "server_access_control_tag_action", "server_access_control_tag_data",
1658
  "server_local_zone_override", "server_access_control_view",
1659
  "server_interface_tag", "server_interface_tag_action",
1660
  "server_interface_tag_data", "server_interface_view",
1661
  "server_response_ip_tag", "server_ip_ratelimit",
1662
  "server_ip_ratelimit_cookie", "server_ratelimit",
1663
  "server_ip_ratelimit_size", "server_ratelimit_size",
1664
  "server_ip_ratelimit_slabs", "server_ratelimit_slabs",
1665
  "server_ratelimit_for_domain", "server_ratelimit_below_domain",
1666
  "server_ip_ratelimit_factor", "server_ratelimit_factor",
1667
  "server_ip_ratelimit_backoff", "server_ratelimit_backoff",
1668
  "server_outbound_msg_retry", "server_max_sent_count",
1669
  "server_max_query_restarts", "server_low_rtt", "server_fast_server_num",
1670
  "server_fast_server_permil", "server_qname_minimisation",
1671
  "server_qname_minimisation_strict", "server_pad_responses",
1672
  "server_pad_responses_block_size", "server_pad_queries",
1673
  "server_pad_queries_block_size", "server_ipsecmod_enabled",
1674
  "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1675
  "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1676
  "server_ipsecmod_strict", "server_edns_client_string",
1677
  "server_edns_client_string_opcode", "server_ede",
1678
  "server_dns_error_reporting", "server_proxy_protocol_port", "stub_name",
1679
  "stub_host", "stub_addr", "stub_first", "stub_no_cache",
1680
  "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name",
1681
  "forward_host", "forward_addr", "forward_first", "forward_no_cache",
1682
  "forward_ssl_upstream", "forward_tcp_upstream", "auth_name",
1683
  "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
1684
  "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream",
1685
  "auth_for_upstream", "auth_fallback_enabled", "view_name",
1686
  "view_local_zone", "view_response_ip", "view_response_ip_data",
1687
  "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
1688
  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
1689
  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
1690
  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
1691
  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
1692
  "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
1693
  "dt_dnstap_tls", "dt_dnstap_tls_server_name",
1694
  "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
1695
  "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
1696
  "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
1697
  "dt_dnstap_log_resolver_query_messages",
1698
  "dt_dnstap_log_resolver_response_messages",
1699
  "dt_dnstap_log_client_query_messages",
1700
  "dt_dnstap_log_client_response_messages",
1701
  "dt_dnstap_log_forwarder_query_messages",
1702
  "dt_dnstap_log_forwarder_response_messages", "dt_dnstap_sample_rate",
1703
  "pythonstart", "contents_py", "content_py", "py_script", "dynlibstart",
1704
  "contents_dl", "content_dl", "dl_file",
1705
  "server_disable_dnssec_lame_check", "server_log_identity",
1706
  "server_response_ip", "server_response_ip_data", "dnscstart",
1707
  "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1708
  "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1709
  "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1710
  "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1711
  "dnsc_dnscrypt_shared_secret_cache_slabs",
1712
  "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1713
  "cachedbstart", "contents_cachedb", "content_cachedb",
1714
  "cachedb_backend_name", "cachedb_secret_seed", "cachedb_no_store",
1715
  "cachedb_check_when_serve_expired", "redis_server_host",
1716
  "redis_replica_server_host", "redis_server_port",
1717
  "redis_replica_server_port", "redis_server_path",
1718
  "redis_replica_server_path", "redis_server_password",
1719
  "redis_replica_server_password", "redis_timeout",
1720
  "redis_replica_timeout", "redis_command_timeout",
1721
  "redis_replica_command_timeout", "redis_connect_timeout",
1722
  "redis_replica_connect_timeout", "redis_expire_records",
1723
  "redis_logical_db", "redis_replica_logical_db",
1724
  "server_tcp_connection_limit", "server_answer_cookie",
1725
  "server_cookie_secret", "server_cookie_secret_file",
1726
  "server_iter_scrub_ns", "server_iter_scrub_cname",
1727
  "server_max_global_quota", "server_iter_scrub_promiscuous", "ipsetstart",
1728
  "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
1729
};
1730
#endif
1731
1732
# ifdef YYPRINT
1733
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
1734
   (internal) symbol number NUM (which must be that of a token).  */
1735
static const yytype_int16 yytoknum[] =
1736
{
1737
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1738
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1739
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1740
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1741
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1742
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1743
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1744
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1745
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1746
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1747
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1748
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1749
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1750
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1751
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1752
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1753
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1754
     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1755
     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1756
     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1757
     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1758
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1759
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1760
     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
1761
     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
1762
     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
1763
     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
1764
     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
1765
     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
1766
     545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
1767
     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
1768
     565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
1769
     575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
1770
     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
1771
     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
1772
     605,   606,   607,   608,   609,   610,   611,   612,   613,   614,
1773
     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
1774
     625,   626,   627,   628,   629,   630,   631,   632,   633
1775
};
1776
# endif
1777
1778
0
#define YYPACT_NINF (-311)
1779
1780
#define yypact_value_is_default(Yyn) \
1781
0
  ((Yyn) == YYPACT_NINF)
1782
1783
#define YYTABLE_NINF (-1)
1784
1785
#define yytable_value_is_error(Yyn) \
1786
0
  0
1787
1788
  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1789
     STATE-NUM.  */
1790
static const yytype_int16 yypact[] =
1791
{
1792
    -311,   275,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1793
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1794
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1795
    -311,  -311,  -311,  -311,  -311,   -13,   221,   226,   293,   112,
1796
      88,   -14,   294,   -81,  -310,   118,  -122,  -303,    31,    32,
1797
      33,    83,    89,    93,    94,   121,   122,   123,   126,   134,
1798
     169,   215,   217,   238,   240,   241,   242,   243,   244,   245,
1799
     246,   247,   259,   262,   264,   266,   267,   268,   269,   270,
1800
     273,   274,   279,   280,   281,   282,   283,   284,   285,   288,
1801
     291,   297,   298,   314,   315,   317,   318,   320,   321,   322,
1802
     324,   329,   331,   346,   348,   357,   358,   361,   364,   379,
1803
     380,   386,   387,   388,   389,   390,   391,   394,   395,   396,
1804
     397,   398,   399,   400,   401,   402,   403,   405,   411,   412,
1805
     413,   414,   415,   417,   418,   424,   425,   426,   427,   428,
1806
     429,   430,   431,   433,   434,   435,   436,   438,   439,   440,
1807
     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
1808
     451,   452,   453,   456,   479,   480,   481,   482,   483,   484,
1809
     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
1810
     495,   496,   497,   498,   499,   500,   501,   502,   504,   505,
1811
     506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
1812
     516,   517,   518,   519,   520,   521,   522,   524,   526,   527,
1813
     528,   529,   530,   531,   533,   534,   535,   537,   538,   539,
1814
     540,   541,   542,   543,   544,   545,   547,   548,   549,   550,
1815
     551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
1816
     561,   562,   563,   564,   565,   566,   567,   569,   570,   571,
1817
     572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
1818
     582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
1819
     592,   593,   594,   595,   596,   597,   598,   599,   600,   602,
1820
     603,   604,   606,   607,   608,   609,   610,   612,   613,   614,
1821
     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
1822
     625,   626,   627,   628,   629,   630,   631,   632,  -311,  -311,
1823
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1824
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1825
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1826
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1827
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1828
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1829
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1830
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1831
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1832
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1833
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1834
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1835
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1836
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1837
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1838
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1839
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1840
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1841
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1842
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1843
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1844
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1845
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1846
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1847
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1848
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,   633,
1849
     634,   635,   636,   637,   638,   639,   640,  -311,  -311,  -311,
1850
    -311,  -311,  -311,  -311,  -311,  -311,   641,   642,   643,   644,
1851
     645,   646,   647,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1852
    -311,   648,   649,   650,   651,   652,   653,   654,  -311,  -311,
1853
    -311,  -311,  -311,  -311,  -311,  -311,   655,   656,   657,   658,
1854
     659,   660,   661,   662,   663,   664,  -311,  -311,  -311,  -311,
1855
    -311,  -311,  -311,  -311,  -311,  -311,  -311,   665,   666,   667,
1856
     668,   669,   670,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1857
    -311,  -311,  -311,  -311,  -311,  -311,   671,   672,   673,   674,
1858
     675,   676,   677,   678,  -311,  -311,  -311,  -311,  -311,  -311,
1859
    -311,  -311,  -311,   679,   680,   681,   682,   683,   684,   685,
1860
     686,   687,   688,   689,   690,   691,   692,   693,   694,   695,
1861
     696,   697,   698,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1862
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1863
    -311,  -311,  -311,  -311,   699,  -311,  -311,   700,  -311,  -311,
1864
     701,   702,   703,   704,   705,   706,   707,   708,   709,   710,
1865
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1866
    -311,   711,   712,   713,   714,   715,   716,   717,   718,   719,
1867
     720,   721,   722,   723,   724,   725,   726,   727,   728,   729,
1868
     730,   731,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1869
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1870
    -311,  -311,  -311,  -311,   732,   733,  -311,  -311,  -311,  -311,
1871
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1872
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1873
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1874
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1875
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1876
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1877
    -311,   734,   735,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1878
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1879
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1880
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1881
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1882
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1883
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1884
    -311,  -311,  -311,   736,   737,   738,  -311,  -311,  -311,  -311,
1885
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,   739,
1886
     740,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1887
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1888
    -311,  -311,  -311,   741,   742,   743,   744,   745,   746,  -311,
1889
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1890
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1891
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1892
    -311,  -311,  -311,  -311,   747,  -311,  -311,  -311,  -311,  -311,
1893
    -311,  -311,  -311,  -311,  -311,   748,   749,  -311,  -311,  -311,
1894
    -311,  -311,  -311,   750,  -311,  -311,  -311,  -311,  -311,  -311,
1895
     751,   752,   753,   754,   755,  -311,  -311,  -311,  -311,  -311,
1896
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1897
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1898
    -311,  -311,  -311,  -311,  -311,   756,  -311,  -311,   757,   758,
1899
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1900
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1901
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1902
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1903
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1904
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1905
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1906
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1907
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,   759,
1908
     760,   761,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
1909
     762,   763,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311
1910
};
1911
1912
  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1913
     Performed when YYTABLE does not specify something else to do.  Zero
1914
     means the default is an error.  */
1915
static const yytype_int16 yydefact[] =
1916
{
1917
       2,     0,     1,    18,    19,   283,   295,   630,   692,   649,
1918
     306,   706,   729,   316,   782,   335,   697,     3,    17,    21,
1919
       5,   285,     6,   297,    10,   308,   318,   337,   632,   651,
1920
     694,   699,   708,   731,   784,     4,   282,   294,   305,    14,
1921
      15,     8,     9,     7,    16,    11,    12,    13,     0,     0,
1922
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1923
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1924
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1925
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1926
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1927
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1928
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1929
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1930
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1931
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1932
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1933
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1934
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1935
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1936
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1937
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1938
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1939
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1940
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1941
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1942
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1943
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1944
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1945
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1946
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1947
       0,     0,     0,     0,     0,     0,     0,     0,    20,    22,
1948
      23,    90,    93,   102,   271,   219,   220,    24,   172,   173,
1949
     174,   175,   176,   177,   178,   179,   180,   181,    39,    81,
1950
      25,    94,    95,    50,    74,    89,   267,    26,    27,    28,
1951
      31,    32,    29,    30,    33,    34,    35,   262,   263,   264,
1952
      36,    37,    38,   126,   231,   127,   129,   130,   131,   233,
1953
     238,   234,   250,   251,   252,   256,   258,   132,   133,   134,
1954
     135,   136,   137,   138,   265,   266,   215,    91,    80,   106,
1955
     280,   124,   125,   243,   240,   274,   128,    40,    41,    42,
1956
      43,    44,    82,    96,    97,   113,    68,    78,    69,   223,
1957
     224,   107,    60,    61,   222,    64,    62,    63,    65,   260,
1958
     117,   121,   142,   154,   187,   157,   249,   118,    75,    45,
1959
      46,    47,   104,   143,   144,   145,   146,    48,    49,    51,
1960
      52,    54,    55,    53,   151,   152,   158,    56,    57,    58,
1961
      66,   279,    85,   122,    99,   153,   272,    92,   182,   100,
1962
     101,   119,   120,   241,   105,    59,    83,    86,   196,    67,
1963
      70,   108,   109,   110,    84,   183,   184,   111,    71,    72,
1964
      73,   232,   123,   273,   206,   207,   208,   209,   210,   211,
1965
     212,   213,   221,   112,    79,   261,   114,   115,   116,   185,
1966
      76,    77,    98,    87,    88,   103,   139,   140,   242,   244,
1967
     245,   246,   247,   248,   141,   147,   148,   149,   150,   188,
1968
     189,   191,   193,   194,   192,   195,   198,   199,   200,   197,
1969
     216,   155,   255,   156,   161,   162,   159,   160,   163,   164,
1970
     166,   165,   168,   167,   169,   170,   171,   235,   237,   236,
1971
     186,   201,   202,   203,   204,   205,   225,   227,   226,   228,
1972
     229,   230,   257,   259,   268,   269,   270,   190,   214,   217,
1973
     218,   239,   253,   254,   275,   276,   277,   278,   281,     0,
1974
       0,     0,     0,     0,     0,     0,     0,   284,   286,   287,
1975
     288,   290,   291,   292,   293,   289,     0,     0,     0,     0,
1976
       0,     0,     0,   296,   298,   299,   300,   301,   302,   303,
1977
     304,     0,     0,     0,     0,     0,     0,     0,   307,   309,
1978
     310,   313,   314,   311,   315,   312,     0,     0,     0,     0,
1979
       0,     0,     0,     0,     0,     0,   317,   319,   320,   321,
1980
     322,   326,   327,   328,   323,   324,   325,     0,     0,     0,
1981
       0,     0,     0,   340,   344,   345,   346,   347,   348,   336,
1982
     338,   339,   341,   342,   343,   349,     0,     0,     0,     0,
1983
       0,     0,     0,     0,   631,   633,   635,   634,   640,   636,
1984
     637,   638,   639,     0,     0,     0,     0,     0,     0,     0,
1985
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1986
       0,     0,     0,   650,   652,   654,   653,   655,   656,   657,
1987
     658,   659,   660,   661,   662,   663,   664,   665,   666,   667,
1988
     668,   669,   670,   671,     0,   693,   695,     0,   698,   700,
1989
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1990
     707,   709,   710,   711,   713,   714,   712,   715,   716,   717,
1991
     718,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1992
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1993
       0,     0,   730,   732,   733,   750,   752,   734,   735,   736,
1994
     737,   744,   745,   746,   747,   738,   739,   740,   741,   742,
1995
     743,   751,   748,   749,     0,     0,   783,   785,   786,   351,
1996
     350,   358,   371,   369,   383,   378,   379,   380,   384,   381,
1997
     382,   385,   386,   387,   391,   392,   393,   428,   429,   430,
1998
     431,   432,   460,   461,   462,   468,   469,   374,   470,   471,
1999
     474,   472,   473,   478,   479,   480,   496,   443,   444,   447,
2000
     448,   481,   500,   437,   439,   501,   509,   510,   511,   375,
2001
     459,   531,   532,   438,   525,   419,   370,   433,   497,   505,
2002
     483,     0,     0,   535,   376,   352,   418,   488,   353,   372,
2003
     373,   434,   435,   533,   485,   490,   491,   389,   388,   354,
2004
     536,   463,   495,   420,   442,   502,   503,   504,   508,   524,
2005
     436,   529,   527,   528,   451,   458,   492,   493,   452,   453,
2006
     484,   513,   422,   423,   427,   394,   396,   390,   397,   398,
2007
     399,   400,   408,   409,   410,   411,   412,   413,   414,   537,
2008
     538,   545,   464,   465,   466,   467,   475,   476,   477,   546,
2009
     547,   548,   549,     0,     0,     0,   486,   454,   456,   702,
2010
     562,   567,   565,   564,   568,   566,   575,   576,   577,     0,
2011
       0,   571,   572,   573,   574,   359,   360,   361,   362,   363,
2012
     364,   365,   366,   367,   368,   489,   506,   530,   507,   581,
2013
     582,   455,   550,     0,     0,     0,     0,     0,     0,   515,
2014
     516,   517,   518,   519,   520,   521,   522,   523,   703,   445,
2015
     446,   449,   440,   512,   417,   356,   357,   441,   583,   584,
2016
     585,   586,   587,   589,   588,   590,   591,   592,   395,   402,
2017
     578,   580,   579,   401,     0,   775,   776,   563,   425,   494,
2018
     539,   424,   540,   541,   542,     0,     0,   457,   403,   404,
2019
     406,   407,   405,     0,   594,   450,   526,   377,   595,   596,
2020
       0,     0,     0,     0,     0,   415,   416,   597,   355,   487,
2021
     514,   426,   777,   778,   779,   780,   482,   421,   781,   598,
2022
     599,   600,   605,   603,   604,   601,   602,   606,   607,   608,
2023
     609,   611,   612,   610,   623,     0,   627,   628,     0,     0,
2024
     629,   613,   621,   614,   615,   616,   620,   622,   617,   618,
2025
     619,   329,   330,   331,   332,   333,   334,   641,   643,   642,
2026
     645,   646,   647,   648,   644,   672,   674,   675,   676,   677,
2027
     678,   679,   680,   681,   682,   673,   683,   684,   685,   686,
2028
     687,   688,   689,   690,   691,   696,   701,   719,   720,   721,
2029
     724,   722,   723,   725,   726,   727,   728,   753,   754,   757,
2030
     758,   759,   760,   765,   766,   771,   761,   762,   763,   764,
2031
     772,   773,   767,   768,   769,   770,   755,   756,   787,   788,
2032
     498,   534,   561,   704,   705,   569,   570,   551,   552,     0,
2033
       0,     0,   556,   774,   543,   544,   593,   499,   560,   557,
2034
       0,     0,   624,   625,   626,   555,   553,   554,   558,   559
2035
};
2036
2037
  /* YYPGOTO[NTERM-NUM].  */
2038
static const yytype_int16 yypgoto[] =
2039
{
2040
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2041
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2042
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2043
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2044
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2045
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2046
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2047
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2048
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2049
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2050
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2051
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2052
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2053
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2054
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2055
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2056
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2057
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2058
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2059
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2060
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2061
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2062
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2063
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2064
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2065
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2066
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2067
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2068
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2069
    -311,  -311,  -311,  -311,   764,   765,   766,   767,   768,  -311,
2070
    -311,   769,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2071
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2072
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2073
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2074
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2075
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2076
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2077
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2078
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2079
    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
2080
    -311,  -311,  -311,  -311,  -311,  -311,  -311
2081
};
2082
2083
  /* YYDEFGOTO[NTERM-NUM].  */
2084
static const yytype_int16 yydefgoto[] =
2085
{
2086
      -1,     1,    17,    18,    19,    35,   308,    20,    21,    36,
2087
     577,    22,    23,    37,   593,    24,    25,    38,   608,    26,
2088
      39,   626,   643,   644,   645,   646,   647,   648,    27,    40,
2089
     649,   309,   310,   311,   312,   313,   314,   315,   316,   317,
2090
     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
2091
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
2092
     338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
2093
     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
2094
     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
2095
     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
2096
     378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
2097
     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
2098
     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
2099
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
2100
     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
2101
     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
2102
     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
2103
     448,   449,   450,   451,   452,   453,   454,   455,   456,   457,
2104
     458,   459,   460,   461,   462,   463,   464,   465,   466,   467,
2105
     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
2106
     478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
2107
     488,   489,   490,   491,   492,   493,   494,   495,   496,   497,
2108
     498,   499,   500,   501,   502,   503,   504,   505,   506,   507,
2109
     508,   509,   510,   511,   512,   513,   514,   515,   516,   517,
2110
     518,   519,   520,   521,   522,   523,   524,   525,   526,   527,
2111
     528,   529,   530,   531,   532,   533,   534,   535,   536,   537,
2112
     538,   539,   540,   541,   542,   543,   544,   545,   546,   547,
2113
     548,   549,   550,   551,   552,   553,   554,   555,   556,   578,
2114
     579,   580,   581,   582,   583,   584,   585,   594,   595,   596,
2115
     597,   598,   599,   600,   627,   628,   629,   630,   631,   632,
2116
     633,   634,   635,   636,   609,   610,   611,   612,   613,   614,
2117
     615,    28,    41,   664,   665,   666,   667,   668,   669,   670,
2118
     671,   672,    29,    42,   693,   694,   695,   696,   697,   698,
2119
     699,   700,   701,   702,   703,   704,   705,   706,   707,   708,
2120
     709,   710,   711,   712,   713,    30,    43,   715,   716,    31,
2121
      44,   718,   719,   557,   558,   559,   560,    32,    45,   730,
2122
     731,   732,   733,   734,   735,   736,   737,   738,   739,   740,
2123
      33,    46,   762,   763,   764,   765,   766,   767,   768,   769,
2124
     770,   771,   772,   773,   774,   775,   776,   777,   778,   779,
2125
     780,   781,   782,   783,   561,   562,   563,   564,   565,   566,
2126
     567,   568,    34,    47,   786,   787,   788
2127
};
2128
2129
  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2130
     positive, shift that token.  If negative, reduce the rule whose
2131
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
2132
static const yytype_int16 yytable[] =
2133
{
2134
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
2135
      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
2136
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
2137
      78,    79,    80,    81,   784,   785,   714,   717,    82,    83,
2138
      84,   789,   790,   791,    85,    86,    87,    88,    89,    90,
2139
      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
2140
     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
2141
     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
2142
     121,   122,   123,   124,   125,   656,   657,   658,   659,   660,
2143
     661,   662,   663,   792,   126,   127,   128,   129,   130,   793,
2144
     131,   132,   133,   794,   795,   134,   135,   136,   137,   138,
2145
     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
2146
     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
2147
     159,   796,   797,   798,   160,   616,   799,   161,   162,   163,
2148
     164,   165,   166,   167,   800,   168,   169,   170,   171,   172,
2149
     173,   174,   175,   176,   177,   178,   179,   180,   181,   616,
2150
     741,   742,   743,   744,   745,   746,   747,   748,   749,   750,
2151
     751,   752,   753,   754,   755,   756,   757,   758,   759,   801,
2152
     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
2153
     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
2154
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
2155
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
2156
     222,   223,   224,   225,   226,   802,   227,   803,   228,   229,
2157
     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
2158
     240,   241,   242,   243,   244,   245,   246,   760,   804,   761,
2159
     805,   806,   807,   808,   809,   810,   811,   812,   247,   248,
2160
     249,   250,   251,   252,   253,   254,   255,   256,   569,   813,
2161
     570,   571,   814,   586,   815,     2,   816,   817,   818,   819,
2162
     820,   587,   588,   821,   822,     0,     3,     4,   257,   823,
2163
     824,   825,   826,   827,   828,   829,   258,   259,   830,   260,
2164
     261,   831,   262,   263,   264,   265,   266,   832,   833,   267,
2165
     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
2166
     278,   279,   280,     5,   834,   835,   281,   836,   837,     6,
2167
     838,   839,   840,   572,   841,   282,   283,   284,   285,   842,
2168
     601,   843,   286,   287,   288,   289,   290,   291,   292,   293,
2169
     294,   295,   296,   297,   298,   299,   844,   300,   845,   301,
2170
     302,   303,   304,   305,   306,   307,   573,   846,   847,   574,
2171
     589,   848,   590,     7,   849,   591,   602,   603,   575,   720,
2172
     721,   722,   723,   724,   725,   726,   727,   728,   729,   850,
2173
     851,     8,   618,   619,   620,   621,   852,   853,   854,   855,
2174
     856,   857,   623,   604,   858,   859,   860,   861,   862,   863,
2175
     864,   865,   866,   867,   617,   868,   618,   619,   620,   621,
2176
     622,   869,   870,   871,   872,   873,   623,   874,   875,   637,
2177
     638,   639,   640,   641,   876,   877,   878,   879,   880,   881,
2178
     882,   883,   642,   884,   885,   886,   887,     9,   888,   889,
2179
     890,   891,   892,   893,   894,   895,   896,   897,   898,   899,
2180
     900,   901,   902,   903,   624,   625,   904,   673,   674,   675,
2181
     676,   677,   678,   679,   680,   681,   682,   683,   684,   685,
2182
     686,   687,   688,   689,   690,   691,   692,   605,   606,   905,
2183
     906,   907,   908,   909,   910,   911,   912,   913,   914,   915,
2184
     916,   917,   918,   919,   920,   921,   922,   923,   924,   925,
2185
     926,   927,   928,    10,   929,   930,   931,   932,   933,   934,
2186
     935,   936,   937,   938,   939,   940,   941,   942,   943,   944,
2187
     945,   946,   947,   607,   948,    11,   949,   950,   951,   952,
2188
     953,   954,   576,   955,   956,   957,   592,   958,   959,   960,
2189
     961,   962,   963,   964,   965,   966,    12,   967,   968,   969,
2190
     970,   971,   972,   973,   974,   975,   976,   977,   978,   979,
2191
     980,   981,   982,   983,   984,   985,   986,   987,    13,   988,
2192
     989,   990,   991,   992,   993,   994,   995,   996,   997,   998,
2193
     999,  1000,  1001,  1002,  1003,  1004,  1005,  1006,  1007,  1008,
2194
    1009,  1010,  1011,  1012,  1013,  1014,  1015,  1016,  1017,  1018,
2195
    1019,    14,  1020,  1021,  1022,    15,  1023,  1024,  1025,  1026,
2196
    1027,    16,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
2197
    1036,  1037,  1038,  1039,  1040,  1041,  1042,  1043,  1044,  1045,
2198
    1046,  1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,  1055,
2199
    1056,  1057,  1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,
2200
    1066,  1067,  1068,  1069,  1070,  1071,  1072,  1073,  1074,  1075,
2201
    1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
2202
    1086,  1087,  1088,  1089,  1090,  1091,  1092,  1093,  1094,  1095,
2203
    1096,  1097,  1098,  1099,  1100,  1101,  1102,  1103,  1104,  1105,
2204
    1106,  1107,  1108,  1109,  1110,  1111,  1112,  1113,  1114,  1115,
2205
    1116,  1117,  1118,  1119,  1120,  1121,  1122,  1123,  1124,  1125,
2206
    1126,  1127,  1128,  1129,  1130,  1131,  1132,  1133,  1134,  1135,
2207
    1136,  1137,  1138,  1139,  1140,  1141,  1142,  1143,  1144,  1145,
2208
    1146,  1147,  1148,  1149,  1150,  1151,  1152,  1153,  1154,  1155,
2209
    1156,  1157,  1158,  1159,  1160,  1161,  1162,  1163,  1164,  1165,
2210
    1166,  1167,  1168,  1169,  1170,  1171,  1172,  1173,  1174,  1175,
2211
    1176,  1177,  1178,  1179,     0,     0,     0,     0,     0,     0,
2212
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2213
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2214
       0,     0,     0,     0,   650,   651,   652,   653,   654,   655
2215
};
2216
2217
static const yytype_int16 yycheck[] =
2218
{
2219
      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2220
      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
2221
      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
2222
      43,    44,    45,    46,   337,   338,   117,   347,    51,    52,
2223
      53,    10,    10,    10,    57,    58,    59,    60,    61,    62,
2224
      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
2225
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
2226
      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
2227
      93,    94,    95,    96,    97,    99,   100,   101,   102,   103,
2228
     104,   105,   106,    10,   107,   108,   109,   110,   111,    10,
2229
     113,   114,   115,    10,    10,   118,   119,   120,   121,   122,
2230
     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
2231
     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
2232
     143,    10,    10,    10,   147,    47,    10,   150,   151,   152,
2233
     153,   154,   155,   156,    10,   158,   159,   160,   161,   162,
2234
     163,   164,   165,   166,   167,   168,   169,   170,   171,    47,
2235
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
2236
     292,   293,   294,   295,   296,   297,   298,   299,   300,    10,
2237
     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
2238
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
2239
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
2240
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
2241
     233,   234,   235,   236,   237,    10,   239,    10,   241,   242,
2242
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2243
     253,   254,   255,   256,   257,   258,   259,   369,    10,   371,
2244
      10,    10,    10,    10,    10,    10,    10,    10,   271,   272,
2245
     273,   274,   275,   276,   277,   278,   279,   280,    47,    10,
2246
      49,    50,    10,    47,    10,     0,    10,    10,    10,    10,
2247
      10,    55,    56,    10,    10,    -1,    11,    12,   301,    10,
2248
      10,    10,    10,    10,    10,    10,   309,   310,    10,   312,
2249
     313,    10,   315,   316,   317,   318,   319,    10,    10,   322,
2250
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
2251
     333,   334,   335,    48,    10,    10,   339,    10,    10,    54,
2252
      10,    10,    10,   112,    10,   348,   349,   350,   351,    10,
2253
      47,    10,   355,   356,   357,   358,   359,   360,   361,   362,
2254
     363,   364,   365,   366,   367,   368,    10,   370,    10,   372,
2255
     373,   374,   375,   376,   377,   378,   145,    10,    10,   148,
2256
     144,    10,   146,    98,    10,   149,    83,    84,   157,   261,
2257
     262,   263,   264,   265,   266,   267,   268,   269,   270,    10,
2258
      10,   116,   304,   305,   306,   307,    10,    10,    10,    10,
2259
      10,    10,   314,   110,    10,    10,    10,    10,    10,    10,
2260
      10,    10,    10,    10,   302,    10,   304,   305,   306,   307,
2261
     308,    10,    10,    10,    10,    10,   314,    10,    10,   341,
2262
     342,   343,   344,   345,    10,    10,    10,    10,    10,    10,
2263
      10,    10,   354,    10,    10,    10,    10,   172,    10,    10,
2264
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2265
      10,    10,    10,    10,   352,   353,    10,   173,   174,   175,
2266
     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
2267
     186,   187,   188,   189,   190,   191,   192,   194,   195,    10,
2268
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2269
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2270
      10,    10,    10,   238,    10,    10,    10,    10,    10,    10,
2271
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2272
      10,    10,    10,   240,    10,   260,    10,    10,    10,    10,
2273
      10,    10,   321,    10,    10,    10,   320,    10,    10,    10,
2274
      10,    10,    10,    10,    10,    10,   281,    10,    10,    10,
2275
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2276
      10,    10,    10,    10,    10,    10,    10,    10,   303,    10,
2277
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2278
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2279
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2280
      10,   336,    10,    10,    10,   340,    10,    10,    10,    10,
2281
      10,   346,    10,    10,    10,    10,    10,    10,    10,    10,
2282
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2283
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2284
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2285
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2286
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2287
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2288
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2289
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2290
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2291
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2292
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2293
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2294
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2295
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2296
      10,    10,    10,    10,    -1,    -1,    -1,    -1,    -1,    -1,
2297
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2298
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2299
      -1,    -1,    -1,    -1,    40,    40,    40,    40,    40,    40
2300
};
2301
2302
  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2303
     symbol of state STATE-NUM.  */
2304
static const yytype_int16 yystos[] =
2305
{
2306
       0,   380,     0,    11,    12,    48,    54,    98,   116,   172,
2307
     238,   260,   281,   303,   336,   340,   346,   381,   382,   383,
2308
     386,   387,   390,   391,   394,   395,   398,   407,   690,   701,
2309
     724,   728,   736,   749,   781,   384,   388,   392,   396,   399,
2310
     408,   691,   702,   725,   729,   737,   750,   782,    13,    14,
2311
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2312
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
2313
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
2314
      45,    46,    51,    52,    53,    57,    58,    59,    60,    61,
2315
      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
2316
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
2317
      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
2318
      92,    93,    94,    95,    96,    97,   107,   108,   109,   110,
2319
     111,   113,   114,   115,   118,   119,   120,   121,   122,   123,
2320
     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
2321
     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
2322
     147,   150,   151,   152,   153,   154,   155,   156,   158,   159,
2323
     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
2324
     170,   171,   193,   194,   195,   196,   197,   198,   199,   200,
2325
     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
2326
     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
2327
     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
2328
     231,   232,   233,   234,   235,   236,   237,   239,   241,   242,
2329
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2330
     253,   254,   255,   256,   257,   258,   259,   271,   272,   273,
2331
     274,   275,   276,   277,   278,   279,   280,   301,   309,   310,
2332
     312,   313,   315,   316,   317,   318,   319,   322,   323,   324,
2333
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
2334
     335,   339,   348,   349,   350,   351,   355,   356,   357,   358,
2335
     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
2336
     370,   372,   373,   374,   375,   376,   377,   378,   385,   410,
2337
     411,   412,   413,   414,   415,   416,   417,   418,   419,   420,
2338
     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
2339
     431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
2340
     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
2341
     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
2342
     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
2343
     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
2344
     481,   482,   483,   484,   485,   486,   487,   488,   489,   490,
2345
     491,   492,   493,   494,   495,   496,   497,   498,   499,   500,
2346
     501,   502,   503,   504,   505,   506,   507,   508,   509,   510,
2347
     511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
2348
     521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
2349
     531,   532,   533,   534,   535,   536,   537,   538,   539,   540,
2350
     541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
2351
     551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
2352
     561,   562,   563,   564,   565,   566,   567,   568,   569,   570,
2353
     571,   572,   573,   574,   575,   576,   577,   578,   579,   580,
2354
     581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
2355
     591,   592,   593,   594,   595,   596,   597,   598,   599,   600,
2356
     601,   602,   603,   604,   605,   606,   607,   608,   609,   610,
2357
     611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
2358
     621,   622,   623,   624,   625,   626,   627,   628,   629,   630,
2359
     631,   632,   633,   634,   635,   636,   637,   638,   639,   640,
2360
     641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
2361
     651,   652,   653,   654,   655,   656,   657,   732,   733,   734,
2362
     735,   773,   774,   775,   776,   777,   778,   779,   780,    47,
2363
      49,    50,   112,   145,   148,   157,   321,   389,   658,   659,
2364
     660,   661,   662,   663,   664,   665,    47,    55,    56,   144,
2365
     146,   149,   320,   393,   666,   667,   668,   669,   670,   671,
2366
     672,    47,    83,    84,   110,   194,   195,   240,   397,   683,
2367
     684,   685,   686,   687,   688,   689,    47,   302,   304,   305,
2368
     306,   307,   308,   314,   352,   353,   400,   673,   674,   675,
2369
     676,   677,   678,   679,   680,   681,   682,   341,   342,   343,
2370
     344,   345,   354,   401,   402,   403,   404,   405,   406,   409,
2371
     673,   674,   675,   676,   677,   680,    99,   100,   101,   102,
2372
     103,   104,   105,   106,   692,   693,   694,   695,   696,   697,
2373
     698,   699,   700,   173,   174,   175,   176,   177,   178,   179,
2374
     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
2375
     190,   191,   192,   703,   704,   705,   706,   707,   708,   709,
2376
     710,   711,   712,   713,   714,   715,   716,   717,   718,   719,
2377
     720,   721,   722,   723,   117,   726,   727,   347,   730,   731,
2378
     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
2379
     738,   739,   740,   741,   742,   743,   744,   745,   746,   747,
2380
     748,   282,   283,   284,   285,   286,   287,   288,   289,   290,
2381
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
2382
     369,   371,   751,   752,   753,   754,   755,   756,   757,   758,
2383
     759,   760,   761,   762,   763,   764,   765,   766,   767,   768,
2384
     769,   770,   771,   772,   337,   338,   783,   784,   785,    10,
2385
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2386
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2387
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2388
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2389
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2390
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2391
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2392
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2393
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2394
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2395
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2396
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2397
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2398
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2399
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2400
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2401
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2402
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2403
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2404
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2405
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2406
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2407
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2408
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2409
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2410
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2411
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2412
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2413
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2414
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2415
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2416
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2417
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2418
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2419
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2420
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2421
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2422
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2423
      10,    10,    10,    10,    10,    10,    10,    10,    10,    10
2424
};
2425
2426
  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2427
static const yytype_int16 yyr1[] =
2428
{
2429
       0,   379,   380,   380,   381,   381,   381,   381,   381,   381,
2430
     381,   381,   381,   381,   381,   381,   381,   381,   382,   383,
2431
     384,   384,   385,   385,   385,   385,   385,   385,   385,   385,
2432
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2433
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2434
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2435
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2436
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2437
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2438
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2439
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2440
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2441
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2442
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2443
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2444
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2445
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2446
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2447
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2448
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2449
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2450
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2451
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2452
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2453
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2454
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2455
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2456
     385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
2457
     385,   385,   386,   387,   388,   388,   389,   389,   389,   389,
2458
     389,   389,   389,   389,   390,   391,   392,   392,   393,   393,
2459
     393,   393,   393,   393,   393,   394,   395,   396,   396,   397,
2460
     397,   397,   397,   397,   397,   397,   398,   399,   399,   400,
2461
     400,   400,   400,   400,   400,   400,   400,   400,   400,   401,
2462
     402,   403,   404,   405,   406,   407,   408,   408,   409,   409,
2463
     409,   409,   409,   409,   409,   409,   409,   409,   409,   409,
2464
     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
2465
     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
2466
     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
2467
     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
2468
     450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
2469
     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
2470
     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
2471
     480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
2472
     490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
2473
     500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
2474
     510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
2475
     520,   521,   522,   523,   524,   525,   526,   527,   528,   529,
2476
     530,   531,   532,   533,   534,   535,   536,   537,   538,   539,
2477
     540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
2478
     550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
2479
     560,   561,   562,   563,   564,   565,   566,   567,   568,   569,
2480
     570,   571,   572,   573,   574,   575,   576,   577,   578,   579,
2481
     580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
2482
     590,   591,   592,   593,   594,   595,   596,   597,   598,   599,
2483
     600,   601,   602,   603,   604,   605,   606,   607,   608,   609,
2484
     610,   611,   612,   613,   614,   615,   616,   617,   618,   619,
2485
     620,   621,   622,   623,   624,   625,   626,   627,   628,   629,
2486
     630,   631,   632,   633,   634,   635,   636,   637,   638,   639,
2487
     640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
2488
     650,   651,   652,   653,   654,   655,   656,   657,   658,   659,
2489
     660,   661,   662,   663,   664,   665,   666,   667,   668,   669,
2490
     670,   671,   672,   673,   674,   675,   676,   677,   678,   679,
2491
     680,   681,   682,   683,   684,   685,   686,   687,   688,   689,
2492
     690,   691,   691,   692,   692,   692,   692,   692,   692,   692,
2493
     692,   693,   694,   695,   696,   697,   698,   699,   700,   701,
2494
     702,   702,   703,   703,   703,   703,   703,   703,   703,   703,
2495
     703,   703,   703,   703,   703,   703,   703,   703,   703,   703,
2496
     703,   703,   704,   705,   706,   707,   708,   709,   710,   711,
2497
     712,   713,   714,   715,   716,   717,   718,   719,   720,   721,
2498
     722,   723,   724,   725,   725,   726,   727,   728,   729,   729,
2499
     730,   731,   732,   733,   734,   735,   736,   737,   737,   738,
2500
     738,   738,   738,   738,   738,   738,   738,   738,   738,   739,
2501
     740,   741,   742,   743,   744,   745,   746,   747,   748,   749,
2502
     750,   750,   751,   751,   751,   751,   751,   751,   751,   751,
2503
     751,   751,   751,   751,   751,   751,   751,   751,   751,   751,
2504
     751,   751,   751,   752,   753,   754,   755,   756,   757,   758,
2505
     759,   760,   761,   762,   763,   764,   765,   766,   767,   768,
2506
     769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
2507
     779,   780,   781,   782,   782,   783,   783,   784,   785
2508
};
2509
2510
  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2511
static const yytype_int8 yyr2[] =
2512
{
2513
       0,     2,     0,     2,     2,     1,     1,     2,     2,     2,
2514
       1,     2,     2,     2,     2,     2,     2,     1,     1,     1,
2515
       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2516
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2517
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2518
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2519
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2520
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2521
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2522
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2523
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2524
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2525
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2526
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2527
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2528
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2529
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2530
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2531
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2532
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2533
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2534
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2535
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2536
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2537
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2538
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2539
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2540
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2541
       1,     1,     2,     1,     2,     0,     1,     1,     1,     1,
2542
       1,     1,     1,     1,     2,     1,     2,     0,     1,     1,
2543
       1,     1,     1,     1,     1,     2,     1,     2,     0,     1,
2544
       1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
2545
       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
2546
       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
2547
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2548
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2549
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2550
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2551
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2552
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2553
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2554
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2555
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2556
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2557
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2558
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2559
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2560
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2561
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2562
       2,     2,     2,     2,     2,     2,     2,     2,     3,     3,
2563
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2564
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2565
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2566
       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
2567
       2,     2,     2,     3,     3,     2,     2,     2,     2,     2,
2568
       2,     3,     3,     4,     4,     4,     3,     3,     4,     4,
2569
       3,     3,     2,     2,     2,     2,     2,     2,     2,     3,
2570
       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2571
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2572
       2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
2573
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2574
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2575
       2,     2,     2,     2,     3,     3,     3,     2,     2,     2,
2576
       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
2577
       1,     2,     2,     2,     2,     2,     2,     2,     2,     1,
2578
       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2579
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2580
       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
2581
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2582
       2,     2,     1,     2,     0,     1,     2,     1,     2,     0,
2583
       1,     2,     2,     2,     3,     3,     1,     2,     0,     1,
2584
       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
2585
       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
2586
       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2587
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2588
       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
2589
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2590
       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
2591
       2,     2,     1,     2,     0,     1,     1,     2,     2
2592
};
2593
2594
2595
#define yyerrok         (yyerrstatus = 0)
2596
#define yyclearin       (yychar = YYEMPTY)
2597
0
#define YYEMPTY         (-2)
2598
0
#define YYEOF           0
2599
2600
0
#define YYACCEPT        goto yyacceptlab
2601
0
#define YYABORT         goto yyabortlab
2602
0
#define YYERROR         goto yyerrorlab
2603
2604
2605
#define YYRECOVERING()  (!!yyerrstatus)
2606
2607
#define YYBACKUP(Token, Value)                                    \
2608
  do                                                              \
2609
    if (yychar == YYEMPTY)                                        \
2610
      {                                                           \
2611
        yychar = (Token);                                         \
2612
        yylval = (Value);                                         \
2613
        YYPOPSTACK (yylen);                                       \
2614
        yystate = *yyssp;                                         \
2615
        goto yybackup;                                            \
2616
      }                                                           \
2617
    else                                                          \
2618
      {                                                           \
2619
        yyerror (YY_("syntax error: cannot back up")); \
2620
        YYERROR;                                                  \
2621
      }                                                           \
2622
  while (0)
2623
2624
/* Error token number */
2625
0
#define YYTERROR        1
2626
#define YYERRCODE       256
2627
2628
2629
2630
/* Enable debugging if requested.  */
2631
#if YYDEBUG
2632
2633
# ifndef YYFPRINTF
2634
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2635
#  define YYFPRINTF fprintf
2636
# endif
2637
2638
# define YYDPRINTF(Args)                        \
2639
do {                                            \
2640
  if (yydebug)                                  \
2641
    YYFPRINTF Args;                             \
2642
} while (0)
2643
2644
/* This macro is provided for backward compatibility. */
2645
#ifndef YY_LOCATION_PRINT
2646
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2647
#endif
2648
2649
2650
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2651
do {                                                                      \
2652
  if (yydebug)                                                            \
2653
    {                                                                     \
2654
      YYFPRINTF (stderr, "%s ", Title);                                   \
2655
      yy_symbol_print (stderr,                                            \
2656
                  Type, Value); \
2657
      YYFPRINTF (stderr, "\n");                                           \
2658
    }                                                                     \
2659
} while (0)
2660
2661
2662
/*-----------------------------------.
2663
| Print this symbol's value on YYO.  |
2664
`-----------------------------------*/
2665
2666
static void
2667
yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2668
{
2669
  FILE *yyoutput = yyo;
2670
  YYUSE (yyoutput);
2671
  if (!yyvaluep)
2672
    return;
2673
# ifdef YYPRINT
2674
  if (yytype < YYNTOKENS)
2675
    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
2676
# endif
2677
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2678
  YYUSE (yytype);
2679
  YY_IGNORE_MAYBE_UNINITIALIZED_END
2680
}
2681
2682
2683
/*---------------------------.
2684
| Print this symbol on YYO.  |
2685
`---------------------------*/
2686
2687
static void
2688
yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
2689
{
2690
  YYFPRINTF (yyo, "%s %s (",
2691
             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2692
2693
  yy_symbol_value_print (yyo, yytype, yyvaluep);
2694
  YYFPRINTF (yyo, ")");
2695
}
2696
2697
/*------------------------------------------------------------------.
2698
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
2699
| TOP (included).                                                   |
2700
`------------------------------------------------------------------*/
2701
2702
static void
2703
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2704
{
2705
  YYFPRINTF (stderr, "Stack now");
2706
  for (; yybottom <= yytop; yybottom++)
2707
    {
2708
      int yybot = *yybottom;
2709
      YYFPRINTF (stderr, " %d", yybot);
2710
    }
2711
  YYFPRINTF (stderr, "\n");
2712
}
2713
2714
# define YY_STACK_PRINT(Bottom, Top)                            \
2715
do {                                                            \
2716
  if (yydebug)                                                  \
2717
    yy_stack_print ((Bottom), (Top));                           \
2718
} while (0)
2719
2720
2721
/*------------------------------------------------.
2722
| Report that the YYRULE is going to be reduced.  |
2723
`------------------------------------------------*/
2724
2725
static void
2726
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
2727
{
2728
  int yylno = yyrline[yyrule];
2729
  int yynrhs = yyr2[yyrule];
2730
  int yyi;
2731
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2732
             yyrule - 1, yylno);
2733
  /* The symbols being reduced.  */
2734
  for (yyi = 0; yyi < yynrhs; yyi++)
2735
    {
2736
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2737
      yy_symbol_print (stderr,
2738
                       yystos[+yyssp[yyi + 1 - yynrhs]],
2739
                       &yyvsp[(yyi + 1) - (yynrhs)]
2740
                                              );
2741
      YYFPRINTF (stderr, "\n");
2742
    }
2743
}
2744
2745
# define YY_REDUCE_PRINT(Rule)          \
2746
do {                                    \
2747
  if (yydebug)                          \
2748
    yy_reduce_print (yyssp, yyvsp, Rule); \
2749
} while (0)
2750
2751
/* Nonzero means print parse trace.  It is left uninitialized so that
2752
   multiple parsers can coexist.  */
2753
int yydebug;
2754
#else /* !YYDEBUG */
2755
# define YYDPRINTF(Args)
2756
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2757
# define YY_STACK_PRINT(Bottom, Top)
2758
# define YY_REDUCE_PRINT(Rule)
2759
#endif /* !YYDEBUG */
2760
2761
2762
/* YYINITDEPTH -- initial size of the parser's stacks.  */
2763
#ifndef YYINITDEPTH
2764
0
# define YYINITDEPTH 200
2765
#endif
2766
2767
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2768
   if the built-in stack extension method is used).
2769
2770
   Do not make this value too large; the results are undefined if
2771
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2772
   evaluated with infinite-precision integer arithmetic.  */
2773
2774
#ifndef YYMAXDEPTH
2775
0
# define YYMAXDEPTH 10000
2776
#endif
2777
2778
2779
#if YYERROR_VERBOSE
2780
2781
# ifndef yystrlen
2782
#  if defined __GLIBC__ && defined _STRING_H
2783
#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2784
#  else
2785
/* Return the length of YYSTR.  */
2786
static YYPTRDIFF_T
2787
yystrlen (const char *yystr)
2788
{
2789
  YYPTRDIFF_T yylen;
2790
  for (yylen = 0; yystr[yylen]; yylen++)
2791
    continue;
2792
  return yylen;
2793
}
2794
#  endif
2795
# endif
2796
2797
# ifndef yystpcpy
2798
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2799
#   define yystpcpy stpcpy
2800
#  else
2801
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2802
   YYDEST.  */
2803
static char *
2804
yystpcpy (char *yydest, const char *yysrc)
2805
{
2806
  char *yyd = yydest;
2807
  const char *yys = yysrc;
2808
2809
  while ((*yyd++ = *yys++) != '\0')
2810
    continue;
2811
2812
  return yyd - 1;
2813
}
2814
#  endif
2815
# endif
2816
2817
# ifndef yytnamerr
2818
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2819
   quotes and backslashes, so that it's suitable for yyerror.  The
2820
   heuristic is that double-quoting is unnecessary unless the string
2821
   contains an apostrophe, a comma, or backslash (other than
2822
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2823
   null, do not copy; instead, return the length of what the result
2824
   would have been.  */
2825
static YYPTRDIFF_T
2826
yytnamerr (char *yyres, const char *yystr)
2827
{
2828
  if (*yystr == '"')
2829
    {
2830
      YYPTRDIFF_T yyn = 0;
2831
      char const *yyp = yystr;
2832
2833
      for (;;)
2834
        switch (*++yyp)
2835
          {
2836
          case '\'':
2837
          case ',':
2838
            goto do_not_strip_quotes;
2839
2840
          case '\\':
2841
            if (*++yyp != '\\')
2842
              goto do_not_strip_quotes;
2843
            else
2844
              goto append;
2845
2846
          append:
2847
          default:
2848
            if (yyres)
2849
              yyres[yyn] = *yyp;
2850
            yyn++;
2851
            break;
2852
2853
          case '"':
2854
            if (yyres)
2855
              yyres[yyn] = '\0';
2856
            return yyn;
2857
          }
2858
    do_not_strip_quotes: ;
2859
    }
2860
2861
  if (yyres)
2862
    return yystpcpy (yyres, yystr) - yyres;
2863
  else
2864
    return yystrlen (yystr);
2865
}
2866
# endif
2867
2868
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2869
   about the unexpected token YYTOKEN for the state stack whose top is
2870
   YYSSP.
2871
2872
   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
2873
   not large enough to hold the message.  In that case, also set
2874
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
2875
   required number of bytes is too large to store.  */
2876
static int
2877
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2878
                yy_state_t *yyssp, int yytoken)
2879
{
2880
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2881
  /* Internationalized format string. */
2882
  const char *yyformat = YY_NULLPTR;
2883
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
2884
     one per "expected"). */
2885
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2886
  /* Actual size of YYARG. */
2887
  int yycount = 0;
2888
  /* Cumulated lengths of YYARG.  */
2889
  YYPTRDIFF_T yysize = 0;
2890
2891
  /* There are many possibilities here to consider:
2892
     - If this state is a consistent state with a default action, then
2893
       the only way this function was invoked is if the default action
2894
       is an error action.  In that case, don't check for expected
2895
       tokens because there are none.
2896
     - The only way there can be no lookahead present (in yychar) is if
2897
       this state is a consistent state with a default action.  Thus,
2898
       detecting the absence of a lookahead is sufficient to determine
2899
       that there is no unexpected or expected token to report.  In that
2900
       case, just report a simple "syntax error".
2901
     - Don't assume there isn't a lookahead just because this state is a
2902
       consistent state with a default action.  There might have been a
2903
       previous inconsistent state, consistent state with a non-default
2904
       action, or user semantic action that manipulated yychar.
2905
     - Of course, the expected token list depends on states to have
2906
       correct lookahead information, and it depends on the parser not
2907
       to perform extra reductions after fetching a lookahead from the
2908
       scanner and before detecting a syntax error.  Thus, state merging
2909
       (from LALR or IELR) and default reductions corrupt the expected
2910
       token list.  However, the list is correct for canonical LR with
2911
       one exception: it will still contain any token that will not be
2912
       accepted due to an error action in a later state.
2913
  */
2914
  if (yytoken != YYEMPTY)
2915
    {
2916
      int yyn = yypact[+*yyssp];
2917
      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2918
      yysize = yysize0;
2919
      yyarg[yycount++] = yytname[yytoken];
2920
      if (!yypact_value_is_default (yyn))
2921
        {
2922
          /* Start YYX at -YYN if negative to avoid negative indexes in
2923
             YYCHECK.  In other words, skip the first -YYN actions for
2924
             this state because they are default actions.  */
2925
          int yyxbegin = yyn < 0 ? -yyn : 0;
2926
          /* Stay within bounds of both yycheck and yytname.  */
2927
          int yychecklim = YYLAST - yyn + 1;
2928
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2929
          int yyx;
2930
2931
          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2932
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2933
                && !yytable_value_is_error (yytable[yyx + yyn]))
2934
              {
2935
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2936
                  {
2937
                    yycount = 1;
2938
                    yysize = yysize0;
2939
                    break;
2940
                  }
2941
                yyarg[yycount++] = yytname[yyx];
2942
                {
2943
                  YYPTRDIFF_T yysize1
2944
                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2945
                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2946
                    yysize = yysize1;
2947
                  else
2948
                    return 2;
2949
                }
2950
              }
2951
        }
2952
    }
2953
2954
  switch (yycount)
2955
    {
2956
# define YYCASE_(N, S)                      \
2957
      case N:                               \
2958
        yyformat = S;                       \
2959
      break
2960
    default: /* Avoid compiler warnings. */
2961
      YYCASE_(0, YY_("syntax error"));
2962
      YYCASE_(1, YY_("syntax error, unexpected %s"));
2963
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2964
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2965
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2966
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2967
# undef YYCASE_
2968
    }
2969
2970
  {
2971
    /* Don't count the "%s"s in the final size, but reserve room for
2972
       the terminator.  */
2973
    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
2974
    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2975
      yysize = yysize1;
2976
    else
2977
      return 2;
2978
  }
2979
2980
  if (*yymsg_alloc < yysize)
2981
    {
2982
      *yymsg_alloc = 2 * yysize;
2983
      if (! (yysize <= *yymsg_alloc
2984
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2985
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2986
      return 1;
2987
    }
2988
2989
  /* Avoid sprintf, as that infringes on the user's name space.
2990
     Don't have undefined behavior even if the translation
2991
     produced a string with the wrong number of "%s"s.  */
2992
  {
2993
    char *yyp = *yymsg;
2994
    int yyi = 0;
2995
    while ((*yyp = *yyformat) != '\0')
2996
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2997
        {
2998
          yyp += yytnamerr (yyp, yyarg[yyi++]);
2999
          yyformat += 2;
3000
        }
3001
      else
3002
        {
3003
          ++yyp;
3004
          ++yyformat;
3005
        }
3006
  }
3007
  return 0;
3008
}
3009
#endif /* YYERROR_VERBOSE */
3010
3011
/*-----------------------------------------------.
3012
| Release the memory associated to this symbol.  |
3013
`-----------------------------------------------*/
3014
3015
static void
3016
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3017
0
{
3018
0
  YYUSE (yyvaluep);
3019
0
  if (!yymsg)
3020
0
    yymsg = "Deleting";
3021
0
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3022
3023
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3024
0
  YYUSE (yytype);
3025
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
3026
0
}
3027
3028
3029
3030
3031
/* The lookahead symbol.  */
3032
int yychar;
3033
3034
/* The semantic value of the lookahead symbol.  */
3035
YYSTYPE yylval;
3036
/* Number of syntax errors so far.  */
3037
int yynerrs;
3038
3039
3040
/*----------.
3041
| yyparse.  |
3042
`----------*/
3043
3044
int
3045
yyparse (void)
3046
0
{
3047
0
    yy_state_fast_t yystate;
3048
    /* Number of tokens to shift before error messages enabled.  */
3049
0
    int yyerrstatus;
3050
3051
    /* The stacks and their tools:
3052
       'yyss': related to states.
3053
       'yyvs': related to semantic values.
3054
3055
       Refer to the stacks through separate pointers, to allow yyoverflow
3056
       to reallocate them elsewhere.  */
3057
3058
    /* The state stack.  */
3059
0
    yy_state_t yyssa[YYINITDEPTH];
3060
0
    yy_state_t *yyss;
3061
0
    yy_state_t *yyssp;
3062
3063
    /* The semantic value stack.  */
3064
0
    YYSTYPE yyvsa[YYINITDEPTH];
3065
0
    YYSTYPE *yyvs;
3066
0
    YYSTYPE *yyvsp;
3067
3068
0
    YYPTRDIFF_T yystacksize;
3069
3070
0
  int yyn;
3071
0
  int yyresult;
3072
  /* Lookahead token as an internal (translated) token number.  */
3073
0
  int yytoken = 0;
3074
  /* The variables used to return semantic value and location from the
3075
     action routines.  */
3076
0
  YYSTYPE yyval;
3077
3078
#if YYERROR_VERBOSE
3079
  /* Buffer for error messages, and its allocated size.  */
3080
  char yymsgbuf[128];
3081
  char *yymsg = yymsgbuf;
3082
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
3083
#endif
3084
3085
0
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
3086
3087
  /* The number of symbols on the RHS of the reduced rule.
3088
     Keep to zero when no symbol should be popped.  */
3089
0
  int yylen = 0;
3090
3091
0
  yyssp = yyss = yyssa;
3092
0
  yyvsp = yyvs = yyvsa;
3093
0
  yystacksize = YYINITDEPTH;
3094
3095
0
  YYDPRINTF ((stderr, "Starting parse\n"));
3096
3097
0
  yystate = 0;
3098
0
  yyerrstatus = 0;
3099
0
  yynerrs = 0;
3100
0
  yychar = YYEMPTY; /* Cause a token to be read.  */
3101
0
  goto yysetstate;
3102
3103
3104
/*------------------------------------------------------------.
3105
| yynewstate -- push a new state, which is found in yystate.  |
3106
`------------------------------------------------------------*/
3107
0
yynewstate:
3108
  /* In all cases, when you get here, the value and location stacks
3109
     have just been pushed.  So pushing a state here evens the stacks.  */
3110
0
  yyssp++;
3111
3112
3113
/*--------------------------------------------------------------------.
3114
| yysetstate -- set current state (the top of the stack) to yystate.  |
3115
`--------------------------------------------------------------------*/
3116
0
yysetstate:
3117
0
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3118
0
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3119
0
  YY_IGNORE_USELESS_CAST_BEGIN
3120
0
  *yyssp = YY_CAST (yy_state_t, yystate);
3121
0
  YY_IGNORE_USELESS_CAST_END
3122
3123
0
  if (yyss + yystacksize - 1 <= yyssp)
3124
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
3125
    goto yyexhaustedlab;
3126
#else
3127
0
    {
3128
      /* Get the current used size of the three stacks, in elements.  */
3129
0
      YYPTRDIFF_T yysize = yyssp - yyss + 1;
3130
3131
# if defined yyoverflow
3132
      {
3133
        /* Give user a chance to reallocate the stack.  Use copies of
3134
           these so that the &'s don't force the real ones into
3135
           memory.  */
3136
        yy_state_t *yyss1 = yyss;
3137
        YYSTYPE *yyvs1 = yyvs;
3138
3139
        /* Each stack pointer address is followed by the size of the
3140
           data in use in that stack, in bytes.  This used to be a
3141
           conditional around just the two extra args, but that might
3142
           be undefined if yyoverflow is a macro.  */
3143
        yyoverflow (YY_("memory exhausted"),
3144
                    &yyss1, yysize * YYSIZEOF (*yyssp),
3145
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
3146
                    &yystacksize);
3147
        yyss = yyss1;
3148
        yyvs = yyvs1;
3149
      }
3150
# else /* defined YYSTACK_RELOCATE */
3151
      /* Extend the stack our own way.  */
3152
0
      if (YYMAXDEPTH <= yystacksize)
3153
0
        goto yyexhaustedlab;
3154
0
      yystacksize *= 2;
3155
0
      if (YYMAXDEPTH < yystacksize)
3156
0
        yystacksize = YYMAXDEPTH;
3157
3158
0
      {
3159
0
        yy_state_t *yyss1 = yyss;
3160
0
        union yyalloc *yyptr =
3161
0
          YY_CAST (union yyalloc *,
3162
0
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3163
0
        if (! yyptr)
3164
0
          goto yyexhaustedlab;
3165
0
        YYSTACK_RELOCATE (yyss_alloc, yyss);
3166
0
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3167
0
# undef YYSTACK_RELOCATE
3168
0
        if (yyss1 != yyssa)
3169
0
          YYSTACK_FREE (yyss1);
3170
0
      }
3171
0
# endif
3172
3173
0
      yyssp = yyss + yysize - 1;
3174
0
      yyvsp = yyvs + yysize - 1;
3175
3176
0
      YY_IGNORE_USELESS_CAST_BEGIN
3177
0
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3178
0
                  YY_CAST (long, yystacksize)));
3179
0
      YY_IGNORE_USELESS_CAST_END
3180
3181
0
      if (yyss + yystacksize - 1 <= yyssp)
3182
0
        YYABORT;
3183
0
    }
3184
0
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3185
3186
0
  if (yystate == YYFINAL)
3187
0
    YYACCEPT;
3188
3189
0
  goto yybackup;
3190
3191
3192
/*-----------.
3193
| yybackup.  |
3194
`-----------*/
3195
0
yybackup:
3196
  /* Do appropriate processing given the current state.  Read a
3197
     lookahead token if we need one and don't already have one.  */
3198
3199
  /* First try to decide what to do without reference to lookahead token.  */
3200
0
  yyn = yypact[yystate];
3201
0
  if (yypact_value_is_default (yyn))
3202
0
    goto yydefault;
3203
3204
  /* Not known => get a lookahead token if don't already have one.  */
3205
3206
  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
3207
0
  if (yychar == YYEMPTY)
3208
0
    {
3209
0
      YYDPRINTF ((stderr, "Reading a token: "));
3210
0
      yychar = yylex ();
3211
0
    }
3212
3213
0
  if (yychar <= YYEOF)
3214
0
    {
3215
0
      yychar = yytoken = YYEOF;
3216
0
      YYDPRINTF ((stderr, "Now at end of input.\n"));
3217
0
    }
3218
0
  else
3219
0
    {
3220
0
      yytoken = YYTRANSLATE (yychar);
3221
0
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3222
0
    }
3223
3224
  /* If the proper action on seeing token YYTOKEN is to reduce or to
3225
     detect an error, take that action.  */
3226
0
  yyn += yytoken;
3227
0
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3228
0
    goto yydefault;
3229
0
  yyn = yytable[yyn];
3230
0
  if (yyn <= 0)
3231
0
    {
3232
0
      if (yytable_value_is_error (yyn))
3233
0
        goto yyerrlab;
3234
0
      yyn = -yyn;
3235
0
      goto yyreduce;
3236
0
    }
3237
3238
  /* Count tokens shifted since error; after three, turn off error
3239
     status.  */
3240
0
  if (yyerrstatus)
3241
0
    yyerrstatus--;
3242
3243
  /* Shift the lookahead token.  */
3244
0
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3245
0
  yystate = yyn;
3246
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3247
0
  *++yyvsp = yylval;
3248
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
3249
3250
  /* Discard the shifted token.  */
3251
0
  yychar = YYEMPTY;
3252
0
  goto yynewstate;
3253
3254
3255
/*-----------------------------------------------------------.
3256
| yydefault -- do the default action for the current state.  |
3257
`-----------------------------------------------------------*/
3258
0
yydefault:
3259
0
  yyn = yydefact[yystate];
3260
0
  if (yyn == 0)
3261
0
    goto yyerrlab;
3262
0
  goto yyreduce;
3263
3264
3265
/*-----------------------------.
3266
| yyreduce -- do a reduction.  |
3267
`-----------------------------*/
3268
0
yyreduce:
3269
  /* yyn is the number of a rule to reduce with.  */
3270
0
  yylen = yyr2[yyn];
3271
3272
  /* If YYLEN is nonzero, implement the default value of the action:
3273
     '$$ = $1'.
3274
3275
     Otherwise, the following line sets YYVAL to garbage.
3276
     This behavior is undocumented and Bison
3277
     users should not rely upon it.  Assigning to YYVAL
3278
     unconditionally makes the parser a bit smaller, and it avoids a
3279
     GCC warning that YYVAL may be used uninitialized.  */
3280
0
  yyval = yyvsp[1-yylen];
3281
3282
3283
0
  YY_REDUCE_PRINT (yyn);
3284
0
  switch (yyn)
3285
0
    {
3286
0
  case 18:
3287
0
#line 232 "./util/configparser.y"
3288
0
        {
3289
0
    OUTYY(("\nP(force-toplevel)\n"));
3290
0
    cfg_parser->started_toplevel = 0;
3291
0
  }
3292
0
#line 3293 "util/configparser.c"
3293
0
    break;
3294
3295
0
  case 19:
3296
0
#line 239 "./util/configparser.y"
3297
0
        {
3298
0
    OUTYY(("\nP(server:)\n"));
3299
0
    cfg_parser->started_toplevel = 1;
3300
0
  }
3301
0
#line 3302 "util/configparser.c"
3302
0
    break;
3303
3304
0
  case 282:
3305
0
#line 365 "./util/configparser.y"
3306
0
        {
3307
    /* stub end */
3308
0
    if(cfg_parser->cfg->stubs &&
3309
0
      !cfg_parser->cfg->stubs->name)
3310
0
      yyerror("stub-zone without name");
3311
0
  }
3312
0
#line 3313 "util/configparser.c"
3313
0
    break;
3314
3315
0
  case 283:
3316
0
#line 373 "./util/configparser.y"
3317
0
        {
3318
0
    struct config_stub* s;
3319
0
    OUTYY(("\nP(stub_zone:)\n"));
3320
0
    cfg_parser->started_toplevel = 1;
3321
0
    s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3322
0
    if(s) {
3323
0
      s->next = cfg_parser->cfg->stubs;
3324
0
      cfg_parser->cfg->stubs = s;
3325
0
    } else {
3326
0
      yyerror("out of memory");
3327
0
    }
3328
0
  }
3329
0
#line 3330 "util/configparser.c"
3330
0
    break;
3331
3332
0
  case 294:
3333
0
#line 392 "./util/configparser.y"
3334
0
        {
3335
    /* forward end */
3336
0
    if(cfg_parser->cfg->forwards &&
3337
0
      !cfg_parser->cfg->forwards->name)
3338
0
      yyerror("forward-zone without name");
3339
0
  }
3340
0
#line 3341 "util/configparser.c"
3341
0
    break;
3342
3343
0
  case 295:
3344
0
#line 400 "./util/configparser.y"
3345
0
        {
3346
0
    struct config_stub* s;
3347
0
    OUTYY(("\nP(forward_zone:)\n"));
3348
0
    cfg_parser->started_toplevel = 1;
3349
0
    s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3350
0
    if(s) {
3351
0
      s->next = cfg_parser->cfg->forwards;
3352
0
      cfg_parser->cfg->forwards = s;
3353
0
    } else {
3354
0
      yyerror("out of memory");
3355
0
    }
3356
0
  }
3357
0
#line 3358 "util/configparser.c"
3358
0
    break;
3359
3360
0
  case 305:
3361
0
#line 419 "./util/configparser.y"
3362
0
        {
3363
    /* view end */
3364
0
    if(cfg_parser->cfg->views &&
3365
0
      !cfg_parser->cfg->views->name)
3366
0
      yyerror("view without name");
3367
0
  }
3368
0
#line 3369 "util/configparser.c"
3369
0
    break;
3370
3371
0
  case 306:
3372
0
#line 427 "./util/configparser.y"
3373
0
        {
3374
0
    struct config_view* s;
3375
0
    OUTYY(("\nP(view:)\n"));
3376
0
    cfg_parser->started_toplevel = 1;
3377
0
    s = (struct config_view*)calloc(1, sizeof(struct config_view));
3378
0
    if(s) {
3379
0
      s->next = cfg_parser->cfg->views;
3380
0
      cfg_parser->cfg->views = s;
3381
0
    } else {
3382
0
      yyerror("out of memory");
3383
0
    }
3384
0
  }
3385
0
#line 3386 "util/configparser.c"
3386
0
    break;
3387
3388
0
  case 316:
3389
0
#line 446 "./util/configparser.y"
3390
0
        {
3391
0
    struct config_auth* s;
3392
0
    OUTYY(("\nP(auth_zone:)\n"));
3393
0
    cfg_parser->started_toplevel = 1;
3394
0
    s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3395
0
    if(s) {
3396
0
      s->next = cfg_parser->cfg->auths;
3397
0
      cfg_parser->cfg->auths = s;
3398
      /* defaults for auth zone */
3399
0
      s->for_downstream = 1;
3400
0
      s->for_upstream = 1;
3401
0
      s->fallback_enabled = 0;
3402
0
      s->zonemd_check = 0;
3403
0
      s->zonemd_reject_absence = 0;
3404
0
      s->isrpz = 0;
3405
0
    } else {
3406
0
      yyerror("out of memory");
3407
0
    }
3408
0
  }
3409
0
#line 3410 "util/configparser.c"
3410
0
    break;
3411
3412
0
  case 329:
3413
0
#line 474 "./util/configparser.y"
3414
0
        {
3415
0
    uint8_t* bitlist;
3416
0
    size_t len = 0;
3417
0
    OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3418
0
    bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3419
0
      &len);
3420
0
    free((yyvsp[0].str));
3421
0
    if(!bitlist) {
3422
0
      yyerror("could not parse tags, (define-tag them first)");
3423
0
    }
3424
0
    if(bitlist) {
3425
0
      cfg_parser->cfg->auths->rpz_taglist = bitlist;
3426
0
      cfg_parser->cfg->auths->rpz_taglistlen = len;
3427
3428
0
    }
3429
0
  }
3430
0
#line 3431 "util/configparser.c"
3431
0
    break;
3432
3433
0
  case 330:
3434
0
#line 493 "./util/configparser.y"
3435
0
        {
3436
0
    OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3437
0
    if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3438
0
       strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3439
0
       strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3440
0
      yyerror("rpz-action-override action: expected nxdomain, "
3441
0
        "nodata, passthru, drop, cname or disabled");
3442
0
      free((yyvsp[0].str));
3443
0
      cfg_parser->cfg->auths->rpz_action_override = NULL;
3444
0
    }
3445
0
    else {
3446
0
      cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3447
0
    }
3448
0
  }
3449
0
#line 3450 "util/configparser.c"
3450
0
    break;
3451
3452
0
  case 331:
3453
0
#line 510 "./util/configparser.y"
3454
0
        {
3455
0
    OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3456
0
    free(cfg_parser->cfg->auths->rpz_cname);
3457
0
    cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3458
0
  }
3459
0
#line 3460 "util/configparser.c"
3460
0
    break;
3461
3462
0
  case 332:
3463
0
#line 518 "./util/configparser.y"
3464
0
        {
3465
0
    OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3466
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3467
0
      yyerror("expected yes or no.");
3468
0
    else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3469
0
    free((yyvsp[0].str));
3470
0
  }
3471
0
#line 3472 "util/configparser.c"
3472
0
    break;
3473
3474
0
  case 333:
3475
0
#line 528 "./util/configparser.y"
3476
0
        {
3477
0
    OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3478
0
    free(cfg_parser->cfg->auths->rpz_log_name);
3479
0
    cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3480
0
  }
3481
0
#line 3482 "util/configparser.c"
3482
0
    break;
3483
3484
0
  case 334:
3485
0
#line 535 "./util/configparser.y"
3486
0
        {
3487
0
    OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
3488
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3489
0
      yyerror("expected yes or no.");
3490
0
    else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
3491
0
    free((yyvsp[0].str));
3492
0
  }
3493
0
#line 3494 "util/configparser.c"
3494
0
    break;
3495
3496
0
  case 335:
3497
0
#line 545 "./util/configparser.y"
3498
0
        {
3499
0
    struct config_auth* s;
3500
0
    OUTYY(("\nP(rpz:)\n"));
3501
0
    cfg_parser->started_toplevel = 1;
3502
0
    s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3503
0
    if(s) {
3504
0
      s->next = cfg_parser->cfg->auths;
3505
0
      cfg_parser->cfg->auths = s;
3506
      /* defaults for RPZ auth zone */
3507
0
      s->for_downstream = 0;
3508
0
      s->for_upstream = 0;
3509
0
      s->fallback_enabled = 0;
3510
0
      s->isrpz = 1;
3511
0
    } else {
3512
0
      yyerror("out of memory");
3513
0
    }
3514
0
  }
3515
0
#line 3516 "util/configparser.c"
3516
0
    break;
3517
3518
0
  case 350:
3519
0
#line 570 "./util/configparser.y"
3520
0
        {
3521
0
    OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3522
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3523
0
      yyerror("number expected");
3524
0
    else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3525
0
    free((yyvsp[0].str));
3526
0
  }
3527
0
#line 3528 "util/configparser.c"
3528
0
    break;
3529
3530
0
  case 351:
3531
0
#line 579 "./util/configparser.y"
3532
0
        {
3533
0
    OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3534
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3535
0
      yyerror("number expected");
3536
0
    else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3537
0
    free((yyvsp[0].str));
3538
0
  }
3539
0
#line 3540 "util/configparser.c"
3540
0
    break;
3541
3542
0
  case 352:
3543
0
#line 588 "./util/configparser.y"
3544
0
        {
3545
0
    OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3546
0
    if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3547
0
      cfg_parser->cfg->stat_interval = 0;
3548
0
    else if(atoi((yyvsp[0].str)) == 0)
3549
0
      yyerror("number expected");
3550
0
    else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3551
0
    free((yyvsp[0].str));
3552
0
  }
3553
0
#line 3554 "util/configparser.c"
3554
0
    break;
3555
3556
0
  case 353:
3557
0
#line 599 "./util/configparser.y"
3558
0
        {
3559
0
    OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3560
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3561
0
      yyerror("expected yes or no.");
3562
0
    else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3563
0
    free((yyvsp[0].str));
3564
0
  }
3565
0
#line 3566 "util/configparser.c"
3566
0
    break;
3567
3568
0
  case 354:
3569
0
#line 608 "./util/configparser.y"
3570
0
        {
3571
0
    OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3572
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3573
0
      yyerror("expected yes or no.");
3574
0
    else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3575
0
    free((yyvsp[0].str));
3576
0
  }
3577
0
#line 3578 "util/configparser.c"
3578
0
    break;
3579
3580
0
  case 355:
3581
0
#line 617 "./util/configparser.y"
3582
0
        {
3583
0
    OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str)));
3584
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3585
0
      yyerror("expected yes or no.");
3586
0
    else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0);
3587
0
    free((yyvsp[0].str));
3588
0
  }
3589
0
#line 3590 "util/configparser.c"
3590
0
    break;
3591
3592
0
  case 356:
3593
0
#line 626 "./util/configparser.y"
3594
0
        {
3595
0
    OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3596
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3597
0
      yyerror("expected yes or no.");
3598
0
    else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3599
0
    free((yyvsp[0].str));
3600
0
  }
3601
0
#line 3602 "util/configparser.c"
3602
0
    break;
3603
3604
0
  case 357:
3605
0
#line 635 "./util/configparser.y"
3606
0
        {
3607
0
    OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3608
0
    if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3609
0
      cfg_parser->cfg->shm_key = 0;
3610
0
    else if(atoi((yyvsp[0].str)) == 0)
3611
0
      yyerror("number expected");
3612
0
    else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3613
0
    free((yyvsp[0].str));
3614
0
  }
3615
0
#line 3616 "util/configparser.c"
3616
0
    break;
3617
3618
0
  case 358:
3619
0
#line 646 "./util/configparser.y"
3620
0
        {
3621
0
    OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3622
0
    if(atoi((yyvsp[0].str)) == 0)
3623
0
      yyerror("port number expected");
3624
0
    else cfg_parser->cfg->port = 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 359:
3631
0
#line 655 "./util/configparser.y"
3632
0
        {
3633
  #ifdef CLIENT_SUBNET
3634
    OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3635
    if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3636
      fatal_exit("out of memory adding client-subnet");
3637
  #else
3638
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3639
0
    free((yyvsp[0].str));
3640
0
  #endif
3641
0
  }
3642
0
#line 3643 "util/configparser.c"
3643
0
    break;
3644
3645
0
  case 360:
3646
0
#line 667 "./util/configparser.y"
3647
0
        {
3648
  #ifdef CLIENT_SUBNET
3649
    OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3650
    if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3651
      (yyvsp[0].str)))
3652
      fatal_exit("out of memory adding client-subnet-zone");
3653
  #else
3654
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3655
0
    free((yyvsp[0].str));
3656
0
  #endif
3657
0
  }
3658
0
#line 3659 "util/configparser.c"
3659
0
    break;
3660
3661
0
  case 361:
3662
0
#line 681 "./util/configparser.y"
3663
0
        {
3664
  #ifdef CLIENT_SUBNET
3665
    OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3666
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3667
      yyerror("expected yes or no.");
3668
    else
3669
      cfg_parser->cfg->client_subnet_always_forward =
3670
        (strcmp((yyvsp[0].str), "yes")==0);
3671
  #else
3672
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3673
0
  #endif
3674
0
    free((yyvsp[0].str));
3675
0
  }
3676
0
#line 3677 "util/configparser.c"
3677
0
    break;
3678
3679
0
  case 362:
3680
0
#line 696 "./util/configparser.y"
3681
0
        {
3682
  #ifdef CLIENT_SUBNET
3683
    OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3684
    OUTYY(("P(Deprecated option, ignoring)\n"));
3685
  #else
3686
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3687
0
  #endif
3688
0
    free((yyvsp[0].str));
3689
0
  }
3690
0
#line 3691 "util/configparser.c"
3691
0
    break;
3692
3693
0
  case 363:
3694
0
#line 707 "./util/configparser.y"
3695
0
        {
3696
  #ifdef CLIENT_SUBNET
3697
    OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3698
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3699
      yyerror("IPv4 subnet length expected");
3700
    else if (atoi((yyvsp[0].str)) > 32)
3701
      cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3702
    else if (atoi((yyvsp[0].str)) < 0)
3703
      cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3704
    else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3705
  #else
3706
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3707
0
  #endif
3708
0
    free((yyvsp[0].str));
3709
0
  }
3710
0
#line 3711 "util/configparser.c"
3711
0
    break;
3712
3713
0
  case 364:
3714
0
#line 724 "./util/configparser.y"
3715
0
        {
3716
  #ifdef CLIENT_SUBNET
3717
    OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3718
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3719
      yyerror("Ipv6 subnet length expected");
3720
    else if (atoi((yyvsp[0].str)) > 128)
3721
      cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3722
    else if (atoi((yyvsp[0].str)) < 0)
3723
      cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3724
    else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3725
  #else
3726
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3727
0
  #endif
3728
0
    free((yyvsp[0].str));
3729
0
  }
3730
0
#line 3731 "util/configparser.c"
3731
0
    break;
3732
3733
0
  case 365:
3734
0
#line 741 "./util/configparser.y"
3735
0
        {
3736
  #ifdef CLIENT_SUBNET
3737
    OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3738
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3739
      yyerror("IPv4 subnet length expected");
3740
    else if (atoi((yyvsp[0].str)) > 32)
3741
      cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3742
    else if (atoi((yyvsp[0].str)) < 0)
3743
      cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3744
    else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3745
  #else
3746
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3747
0
  #endif
3748
0
    free((yyvsp[0].str));
3749
0
  }
3750
0
#line 3751 "util/configparser.c"
3751
0
    break;
3752
3753
0
  case 366:
3754
0
#line 758 "./util/configparser.y"
3755
0
        {
3756
  #ifdef CLIENT_SUBNET
3757
    OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3758
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3759
      yyerror("Ipv6 subnet length expected");
3760
    else if (atoi((yyvsp[0].str)) > 128)
3761
      cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3762
    else if (atoi((yyvsp[0].str)) < 0)
3763
      cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3764
    else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3765
  #else
3766
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3767
0
  #endif
3768
0
    free((yyvsp[0].str));
3769
0
  }
3770
0
#line 3771 "util/configparser.c"
3771
0
    break;
3772
3773
0
  case 367:
3774
0
#line 775 "./util/configparser.y"
3775
0
        {
3776
  #ifdef CLIENT_SUBNET
3777
    OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3778
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3779
      yyerror("IPv4 ECS tree size expected");
3780
    else if (atoi((yyvsp[0].str)) < 0)
3781
      cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3782
    else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3783
  #else
3784
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3785
0
  #endif
3786
0
    free((yyvsp[0].str));
3787
0
  }
3788
0
#line 3789 "util/configparser.c"
3789
0
    break;
3790
3791
0
  case 368:
3792
0
#line 790 "./util/configparser.y"
3793
0
        {
3794
  #ifdef CLIENT_SUBNET
3795
    OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3796
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3797
      yyerror("IPv6 ECS tree size expected");
3798
    else if (atoi((yyvsp[0].str)) < 0)
3799
      cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3800
    else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3801
  #else
3802
0
    OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3803
0
  #endif
3804
0
    free((yyvsp[0].str));
3805
0
  }
3806
0
#line 3807 "util/configparser.c"
3807
0
    break;
3808
3809
0
  case 369:
3810
0
#line 805 "./util/configparser.y"
3811
0
        {
3812
0
    OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3813
0
    if(cfg_parser->cfg->num_ifs == 0)
3814
0
      cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3815
0
    else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3816
0
        (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3817
0
    if(!cfg_parser->cfg->ifs)
3818
0
      yyerror("out of memory");
3819
0
    else
3820
0
      cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3821
0
  }
3822
0
#line 3823 "util/configparser.c"
3823
0
    break;
3824
3825
0
  case 370:
3826
0
#line 818 "./util/configparser.y"
3827
0
        {
3828
0
    OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3829
0
    if(cfg_parser->cfg->num_out_ifs == 0)
3830
0
      cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3831
0
    else cfg_parser->cfg->out_ifs = realloc(
3832
0
      cfg_parser->cfg->out_ifs,
3833
0
      (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3834
0
    if(!cfg_parser->cfg->out_ifs)
3835
0
      yyerror("out of memory");
3836
0
    else
3837
0
      cfg_parser->cfg->out_ifs[
3838
0
        cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3839
0
  }
3840
0
#line 3841 "util/configparser.c"
3841
0
    break;
3842
3843
0
  case 371:
3844
0
#line 833 "./util/configparser.y"
3845
0
        {
3846
0
    OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3847
0
    if(atoi((yyvsp[0].str)) == 0)
3848
0
      yyerror("number expected");
3849
0
    else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3850
0
    free((yyvsp[0].str));
3851
0
  }
3852
0
#line 3853 "util/configparser.c"
3853
0
    break;
3854
3855
0
  case 372:
3856
0
#line 842 "./util/configparser.y"
3857
0
        {
3858
0
    OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3859
0
    if(!cfg_mark_ports((yyvsp[0].str), 1,
3860
0
      cfg_parser->cfg->outgoing_avail_ports, 65536))
3861
0
      yyerror("port number or range (\"low-high\") expected");
3862
0
    free((yyvsp[0].str));
3863
0
  }
3864
0
#line 3865 "util/configparser.c"
3865
0
    break;
3866
3867
0
  case 373:
3868
0
#line 851 "./util/configparser.y"
3869
0
        {
3870
0
    OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3871
0
    if(!cfg_mark_ports((yyvsp[0].str), 0,
3872
0
      cfg_parser->cfg->outgoing_avail_ports, 65536))
3873
0
      yyerror("port number or range (\"low-high\") expected");
3874
0
    free((yyvsp[0].str));
3875
0
  }
3876
0
#line 3877 "util/configparser.c"
3877
0
    break;
3878
3879
0
  case 374:
3880
0
#line 860 "./util/configparser.y"
3881
0
        {
3882
0
    OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3883
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3884
0
      yyerror("number expected");
3885
0
    else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3886
0
    free((yyvsp[0].str));
3887
0
  }
3888
0
#line 3889 "util/configparser.c"
3889
0
    break;
3890
3891
0
  case 375:
3892
0
#line 869 "./util/configparser.y"
3893
0
        {
3894
0
    OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3895
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3896
0
      yyerror("number expected");
3897
0
    else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3898
0
    free((yyvsp[0].str));
3899
0
  }
3900
0
#line 3901 "util/configparser.c"
3901
0
    break;
3902
3903
0
  case 376:
3904
0
#line 878 "./util/configparser.y"
3905
0
        {
3906
0
    OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3907
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3908
0
      yyerror("expected yes or no.");
3909
0
    else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3910
0
    free((yyvsp[0].str));
3911
0
  }
3912
0
#line 3913 "util/configparser.c"
3913
0
    break;
3914
3915
0
  case 377:
3916
0
#line 887 "./util/configparser.y"
3917
0
        {
3918
0
    OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
3919
0
    free(cfg_parser->cfg->if_automatic_ports);
3920
0
    cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
3921
0
  }
3922
0
#line 3923 "util/configparser.c"
3923
0
    break;
3924
3925
0
  case 378:
3926
0
#line 894 "./util/configparser.y"
3927
0
        {
3928
0
    OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3929
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3930
0
      yyerror("expected yes or no.");
3931
0
    else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3932
0
    free((yyvsp[0].str));
3933
0
  }
3934
0
#line 3935 "util/configparser.c"
3935
0
    break;
3936
3937
0
  case 379:
3938
0
#line 903 "./util/configparser.y"
3939
0
        {
3940
0
    OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3941
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3942
0
      yyerror("expected yes or no.");
3943
0
    else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3944
0
    free((yyvsp[0].str));
3945
0
  }
3946
0
#line 3947 "util/configparser.c"
3947
0
    break;
3948
3949
0
  case 380:
3950
0
#line 912 "./util/configparser.y"
3951
0
        {
3952
0
    OUTYY(("P(server_do_nat64:%s)\n", (yyvsp[0].str)));
3953
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3954
0
      yyerror("expected yes or no.");
3955
0
    else cfg_parser->cfg->do_nat64 = (strcmp((yyvsp[0].str), "yes")==0);
3956
0
    free((yyvsp[0].str));
3957
0
  }
3958
0
#line 3959 "util/configparser.c"
3959
0
    break;
3960
3961
0
  case 381:
3962
0
#line 921 "./util/configparser.y"
3963
0
        {
3964
0
    OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3965
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3966
0
      yyerror("expected yes or no.");
3967
0
    else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3968
0
    free((yyvsp[0].str));
3969
0
  }
3970
0
#line 3971 "util/configparser.c"
3971
0
    break;
3972
3973
0
  case 382:
3974
0
#line 930 "./util/configparser.y"
3975
0
        {
3976
0
    OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3977
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3978
0
      yyerror("expected yes or no.");
3979
0
    else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3980
0
    free((yyvsp[0].str));
3981
0
  }
3982
0
#line 3983 "util/configparser.c"
3983
0
    break;
3984
3985
0
  case 383:
3986
0
#line 939 "./util/configparser.y"
3987
0
        {
3988
0
    OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3989
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3990
0
      yyerror("expected yes or no.");
3991
0
    else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3992
0
    free((yyvsp[0].str));
3993
0
  }
3994
0
#line 3995 "util/configparser.c"
3995
0
    break;
3996
3997
0
  case 384:
3998
0
#line 948 "./util/configparser.y"
3999
0
        {
4000
0
    OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
4001
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4002
0
      yyerror("expected yes or no.");
4003
0
    else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
4004
0
    free((yyvsp[0].str));
4005
0
  }
4006
0
#line 4007 "util/configparser.c"
4007
0
    break;
4008
4009
0
  case 385:
4010
0
#line 957 "./util/configparser.y"
4011
0
        {
4012
0
    OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
4013
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4014
0
      yyerror("number expected");
4015
0
    else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
4016
0
    free((yyvsp[0].str));
4017
0
  }
4018
0
#line 4019 "util/configparser.c"
4019
0
    break;
4020
4021
0
  case 386:
4022
0
#line 966 "./util/configparser.y"
4023
0
        {
4024
0
    OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
4025
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4026
0
      yyerror("number expected");
4027
0
    else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
4028
0
    free((yyvsp[0].str));
4029
0
  }
4030
0
#line 4031 "util/configparser.c"
4031
0
    break;
4032
4033
0
  case 387:
4034
0
#line 975 "./util/configparser.y"
4035
0
        {
4036
0
    OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
4037
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4038
0
      yyerror("number expected");
4039
0
    else if (atoi((yyvsp[0].str)) > 120000)
4040
0
      cfg_parser->cfg->tcp_idle_timeout = 120000;
4041
0
    else if (atoi((yyvsp[0].str)) < 1)
4042
0
      cfg_parser->cfg->tcp_idle_timeout = 1;
4043
0
    else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
4044
0
    free((yyvsp[0].str));
4045
0
  }
4046
0
#line 4047 "util/configparser.c"
4047
0
    break;
4048
4049
0
  case 388:
4050
0
#line 988 "./util/configparser.y"
4051
0
        {
4052
0
    OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
4053
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4054
0
      yyerror("number expected");
4055
0
    else if (atoi((yyvsp[0].str)) < 1)
4056
0
      cfg_parser->cfg->max_reuse_tcp_queries = 0;
4057
0
    else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
4058
0
    free((yyvsp[0].str));
4059
0
  }
4060
0
#line 4061 "util/configparser.c"
4061
0
    break;
4062
4063
0
  case 389:
4064
0
#line 999 "./util/configparser.y"
4065
0
        {
4066
0
    OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
4067
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4068
0
      yyerror("number expected");
4069
0
    else if (atoi((yyvsp[0].str)) < 1)
4070
0
      cfg_parser->cfg->tcp_reuse_timeout = 0;
4071
0
    else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
4072
0
    free((yyvsp[0].str));
4073
0
  }
4074
0
#line 4075 "util/configparser.c"
4075
0
    break;
4076
4077
0
  case 390:
4078
0
#line 1010 "./util/configparser.y"
4079
0
        {
4080
0
    OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
4081
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4082
0
      yyerror("number expected");
4083
0
    else if (atoi((yyvsp[0].str)) < 1)
4084
0
      cfg_parser->cfg->tcp_auth_query_timeout = 0;
4085
0
    else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
4086
0
    free((yyvsp[0].str));
4087
0
  }
4088
0
#line 4089 "util/configparser.c"
4089
0
    break;
4090
4091
0
  case 391:
4092
0
#line 1021 "./util/configparser.y"
4093
0
        {
4094
0
    OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
4095
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4096
0
      yyerror("expected yes or no.");
4097
0
    else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
4098
0
    free((yyvsp[0].str));
4099
0
  }
4100
0
#line 4101 "util/configparser.c"
4101
0
    break;
4102
4103
0
  case 392:
4104
0
#line 1030 "./util/configparser.y"
4105
0
        {
4106
0
    OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
4107
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4108
0
      yyerror("number expected");
4109
0
    else if (atoi((yyvsp[0].str)) > 6553500)
4110
0
      cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
4111
0
    else if (atoi((yyvsp[0].str)) < 1)
4112
0
      cfg_parser->cfg->tcp_keepalive_timeout = 0;
4113
0
    else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
4114
0
    free((yyvsp[0].str));
4115
0
  }
4116
0
#line 4117 "util/configparser.c"
4117
0
    break;
4118
4119
0
  case 393:
4120
0
#line 1043 "./util/configparser.y"
4121
0
        {
4122
0
    OUTYY(("P(server_sock_queue_timeout:%s)\n", (yyvsp[0].str)));
4123
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4124
0
      yyerror("number expected");
4125
0
    else if (atoi((yyvsp[0].str)) > 6553500)
4126
0
      cfg_parser->cfg->sock_queue_timeout = 6553500;
4127
0
    else if (atoi((yyvsp[0].str)) < 1)
4128
0
      cfg_parser->cfg->sock_queue_timeout = 0;
4129
0
    else cfg_parser->cfg->sock_queue_timeout = atoi((yyvsp[0].str));
4130
0
    free((yyvsp[0].str));
4131
0
  }
4132
0
#line 4133 "util/configparser.c"
4133
0
    break;
4134
4135
0
  case 394:
4136
0
#line 1056 "./util/configparser.y"
4137
0
        {
4138
0
    OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
4139
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4140
0
      yyerror("expected yes or no.");
4141
0
    else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
4142
0
    free((yyvsp[0].str));
4143
0
  }
4144
0
#line 4145 "util/configparser.c"
4145
0
    break;
4146
4147
0
  case 395:
4148
0
#line 1065 "./util/configparser.y"
4149
0
        {
4150
0
    OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
4151
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4152
0
      yyerror("expected yes or no.");
4153
0
    else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4154
0
    free((yyvsp[0].str));
4155
0
  }
4156
0
#line 4157 "util/configparser.c"
4157
0
    break;
4158
4159
0
  case 396:
4160
0
#line 1074 "./util/configparser.y"
4161
0
        {
4162
0
    OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
4163
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4164
0
      yyerror("expected yes or no.");
4165
0
    else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
4166
0
    free((yyvsp[0].str));
4167
0
  }
4168
0
#line 4169 "util/configparser.c"
4169
0
    break;
4170
4171
0
  case 397:
4172
0
#line 1083 "./util/configparser.y"
4173
0
        {
4174
0
    OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
4175
0
    free(cfg_parser->cfg->ssl_service_key);
4176
0
    cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
4177
0
  }
4178
0
#line 4179 "util/configparser.c"
4179
0
    break;
4180
4181
0
  case 398:
4182
0
#line 1090 "./util/configparser.y"
4183
0
        {
4184
0
    OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
4185
0
    free(cfg_parser->cfg->ssl_service_pem);
4186
0
    cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
4187
0
  }
4188
0
#line 4189 "util/configparser.c"
4189
0
    break;
4190
4191
0
  case 399:
4192
0
#line 1097 "./util/configparser.y"
4193
0
        {
4194
0
    OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
4195
0
    if(atoi((yyvsp[0].str)) == 0)
4196
0
      yyerror("port number expected");
4197
0
    else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
4198
0
    free((yyvsp[0].str));
4199
0
  }
4200
0
#line 4201 "util/configparser.c"
4201
0
    break;
4202
4203
0
  case 400:
4204
0
#line 1106 "./util/configparser.y"
4205
0
        {
4206
0
    OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
4207
0
    free(cfg_parser->cfg->tls_cert_bundle);
4208
0
    cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
4209
0
  }
4210
0
#line 4211 "util/configparser.c"
4211
0
    break;
4212
4213
0
  case 401:
4214
0
#line 1113 "./util/configparser.y"
4215
0
        {
4216
0
    OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
4217
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4218
0
      yyerror("expected yes or no.");
4219
0
    else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
4220
0
    free((yyvsp[0].str));
4221
0
  }
4222
0
#line 4223 "util/configparser.c"
4223
0
    break;
4224
4225
0
  case 402:
4226
0
#line 1122 "./util/configparser.y"
4227
0
        {
4228
0
    OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
4229
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
4230
0
      (yyvsp[0].str)))
4231
0
      yyerror("out of memory");
4232
0
  }
4233
0
#line 4234 "util/configparser.c"
4234
0
    break;
4235
4236
0
  case 403:
4237
0
#line 1130 "./util/configparser.y"
4238
0
        {
4239
0
    OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
4240
0
    free(cfg_parser->cfg->tls_ciphers);
4241
0
    cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
4242
0
  }
4243
0
#line 4244 "util/configparser.c"
4244
0
    break;
4245
4246
0
  case 404:
4247
0
#line 1137 "./util/configparser.y"
4248
0
        {
4249
0
    OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
4250
0
    free(cfg_parser->cfg->tls_ciphersuites);
4251
0
    cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
4252
0
  }
4253
0
#line 4254 "util/configparser.c"
4254
0
    break;
4255
4256
0
  case 405:
4257
0
#line 1144 "./util/configparser.y"
4258
0
        {
4259
0
    OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
4260
0
    if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
4261
0
      (yyvsp[0].str)))
4262
0
      yyerror("out of memory");
4263
0
  }
4264
0
#line 4265 "util/configparser.c"
4265
0
    break;
4266
4267
0
  case 406:
4268
0
#line 1152 "./util/configparser.y"
4269
0
        {
4270
0
    OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4271
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4272
0
      yyerror("expected yes or no.");
4273
0
    else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4274
0
    free((yyvsp[0].str));
4275
0
  }
4276
0
#line 4277 "util/configparser.c"
4277
0
    break;
4278
4279
0
  case 407:
4280
0
#line 1161 "./util/configparser.y"
4281
0
        {
4282
0
    OUTYY(("P(server_tls_use_system_policy_versions:%s)\n", (yyvsp[0].str)));
4283
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4284
0
      yyerror("expected yes or no.");
4285
0
    else cfg_parser->cfg->tls_use_system_policy_versions = (strcmp((yyvsp[0].str), "yes")==0);
4286
0
    free((yyvsp[0].str));
4287
0
  }
4288
0
#line 4289 "util/configparser.c"
4289
0
    break;
4290
4291
0
  case 408:
4292
0
#line 1170 "./util/configparser.y"
4293
0
        {
4294
0
    OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4295
0
    if(atoi((yyvsp[0].str)) == 0)
4296
0
      yyerror("port number expected");
4297
0
    else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4298
0
    free((yyvsp[0].str));
4299
0
  }
4300
0
#line 4301 "util/configparser.c"
4301
0
    break;
4302
4303
0
  case 409:
4304
0
#line 1178 "./util/configparser.y"
4305
0
        {
4306
0
    OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4307
0
    free(cfg_parser->cfg->http_endpoint);
4308
0
    if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4309
0
      cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4310
0
      if(cfg_parser->cfg->http_endpoint) {
4311
0
        cfg_parser->cfg->http_endpoint[0] = '/';
4312
0
        memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4313
0
          strlen((yyvsp[0].str))+1);
4314
0
      } else {
4315
0
        yyerror("out of memory");
4316
0
      }
4317
0
      free((yyvsp[0].str));
4318
0
    } else {
4319
0
      cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4320
0
    }
4321
0
  }
4322
0
#line 4323 "util/configparser.c"
4323
0
    break;
4324
4325
0
  case 410:
4326
0
#line 1196 "./util/configparser.y"
4327
0
        {
4328
0
    OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4329
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4330
0
      yyerror("number expected");
4331
0
    else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4332
0
    free((yyvsp[0].str));
4333
0
  }
4334
0
#line 4335 "util/configparser.c"
4335
0
    break;
4336
4337
0
  case 411:
4338
0
#line 1204 "./util/configparser.y"
4339
0
        {
4340
0
    OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4341
0
    if(!cfg_parse_memsize((yyvsp[0].str),
4342
0
      &cfg_parser->cfg->http_query_buffer_size))
4343
0
      yyerror("memory size expected");
4344
0
    free((yyvsp[0].str));
4345
0
  }
4346
0
#line 4347 "util/configparser.c"
4347
0
    break;
4348
4349
0
  case 412:
4350
0
#line 1212 "./util/configparser.y"
4351
0
        {
4352
0
    OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4353
0
    if(!cfg_parse_memsize((yyvsp[0].str),
4354
0
      &cfg_parser->cfg->http_response_buffer_size))
4355
0
      yyerror("memory size expected");
4356
0
    free((yyvsp[0].str));
4357
0
  }
4358
0
#line 4359 "util/configparser.c"
4359
0
    break;
4360
4361
0
  case 413:
4362
0
#line 1220 "./util/configparser.y"
4363
0
        {
4364
0
    OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4365
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4366
0
      yyerror("expected yes or no.");
4367
0
    else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4368
0
    free((yyvsp[0].str));
4369
0
  }
4370
0
#line 4371 "util/configparser.c"
4371
0
    break;
4372
4373
0
  case 414:
4374
0
#line 1228 "./util/configparser.y"
4375
0
        {
4376
0
    OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4377
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4378
0
      yyerror("expected yes or no.");
4379
0
    else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4380
0
    free((yyvsp[0].str));
4381
0
  }
4382
0
#line 4383 "util/configparser.c"
4383
0
    break;
4384
4385
0
  case 415:
4386
0
#line 1236 "./util/configparser.y"
4387
0
        {
4388
0
    OUTYY(("P(server_quic_port:%s)\n", (yyvsp[0].str)));
4389
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str),"0")!=0)
4390
0
      yyerror("port number expected");
4391
0
    else {
4392
0
      cfg_parser->cfg->quic_port = atoi((yyvsp[0].str));
4393
0
#ifndef HAVE_NGTCP2
4394
0
      if (cfg_parser->cfg->quic_port != 0)
4395
0
        log_warn("%s:%d: Unbound is not compiled with "
4396
0
          "ngtcp2. This is required to use DNS "
4397
0
          "over QUIC.", cfg_parser->filename, cfg_parser->line);
4398
0
#endif
4399
0
    }
4400
0
    free((yyvsp[0].str));
4401
0
  }
4402
0
#line 4403 "util/configparser.c"
4403
0
    break;
4404
4405
0
  case 416:
4406
0
#line 1252 "./util/configparser.y"
4407
0
        {
4408
0
    OUTYY(("P(server_quic_size:%s)\n", (yyvsp[0].str)));
4409
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->quic_size))
4410
0
      yyerror("memory size expected");
4411
0
    free((yyvsp[0].str));
4412
0
  }
4413
0
#line 4414 "util/configparser.c"
4414
0
    break;
4415
4416
0
  case 417:
4417
0
#line 1259 "./util/configparser.y"
4418
0
        {
4419
0
    OUTYY(("P(server_use_systemd:%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 cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4423
0
    free((yyvsp[0].str));
4424
0
  }
4425
0
#line 4426 "util/configparser.c"
4426
0
    break;
4427
4428
0
  case 418:
4429
0
#line 1268 "./util/configparser.y"
4430
0
        {
4431
0
    OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4432
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4433
0
      yyerror("expected yes or no.");
4434
0
    else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4435
0
    free((yyvsp[0].str));
4436
0
  }
4437
0
#line 4438 "util/configparser.c"
4438
0
    break;
4439
4440
0
  case 419:
4441
0
#line 1277 "./util/configparser.y"
4442
0
        {
4443
0
    OUTYY(("P(server_use_syslog:%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->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4447
#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4448
    if(strcmp((yyvsp[0].str), "yes") == 0)
4449
      yyerror("no syslog services are available. "
4450
        "(reconfigure and compile to add)");
4451
#endif
4452
0
    free((yyvsp[0].str));
4453
0
  }
4454
0
#line 4455 "util/configparser.c"
4455
0
    break;
4456
4457
0
  case 420:
4458
0
#line 1291 "./util/configparser.y"
4459
0
        {
4460
0
    OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4461
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4462
0
      yyerror("expected yes or no.");
4463
0
    else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4464
0
    free((yyvsp[0].str));
4465
0
  }
4466
0
#line 4467 "util/configparser.c"
4467
0
    break;
4468
4469
0
  case 421:
4470
0
#line 1300 "./util/configparser.y"
4471
0
        {
4472
0
    OUTYY(("P(server_log_time_iso:%s)\n", (yyvsp[0].str)));
4473
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4474
0
      yyerror("expected yes or no.");
4475
0
    else cfg_parser->cfg->log_time_iso = (strcmp((yyvsp[0].str), "yes")==0);
4476
0
    free((yyvsp[0].str));
4477
0
  }
4478
0
#line 4479 "util/configparser.c"
4479
0
    break;
4480
4481
0
  case 422:
4482
0
#line 1309 "./util/configparser.y"
4483
0
        {
4484
0
    OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4485
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4486
0
      yyerror("expected yes or no.");
4487
0
    else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4488
0
    free((yyvsp[0].str));
4489
0
  }
4490
0
#line 4491 "util/configparser.c"
4491
0
    break;
4492
4493
0
  case 423:
4494
0
#line 1318 "./util/configparser.y"
4495
0
        {
4496
0
    OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4497
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4498
0
      yyerror("expected yes or no.");
4499
0
    else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4500
0
    free((yyvsp[0].str));
4501
0
  }
4502
0
#line 4503 "util/configparser.c"
4503
0
    break;
4504
4505
0
  case 424:
4506
0
#line 1327 "./util/configparser.y"
4507
0
        {
4508
0
    OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4509
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4510
0
      yyerror("expected yes or no.");
4511
0
    else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4512
0
    free((yyvsp[0].str));
4513
0
  }
4514
0
#line 4515 "util/configparser.c"
4515
0
    break;
4516
4517
0
  case 425:
4518
0
#line 1336 "./util/configparser.y"
4519
0
        {
4520
0
    OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4521
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4522
0
      yyerror("expected yes or no.");
4523
0
    else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4524
0
    free((yyvsp[0].str));
4525
0
  }
4526
0
#line 4527 "util/configparser.c"
4527
0
    break;
4528
4529
0
  case 426:
4530
0
#line 1345 "./util/configparser.y"
4531
0
        {
4532
0
    OUTYY(("P(server_log_destaddr:%s)\n", (yyvsp[0].str)));
4533
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4534
0
      yyerror("expected yes or no.");
4535
0
    else cfg_parser->cfg->log_destaddr = (strcmp((yyvsp[0].str), "yes")==0);
4536
0
    free((yyvsp[0].str));
4537
0
  }
4538
0
#line 4539 "util/configparser.c"
4539
0
    break;
4540
4541
0
  case 427:
4542
0
#line 1354 "./util/configparser.y"
4543
0
        {
4544
0
    OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4545
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4546
0
      yyerror("expected yes or no.");
4547
0
    else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4548
0
    free((yyvsp[0].str));
4549
0
  }
4550
0
#line 4551 "util/configparser.c"
4551
0
    break;
4552
4553
0
  case 428:
4554
0
#line 1363 "./util/configparser.y"
4555
0
        {
4556
0
    OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4557
0
    free(cfg_parser->cfg->chrootdir);
4558
0
    cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4559
0
  }
4560
0
#line 4561 "util/configparser.c"
4561
0
    break;
4562
4563
0
  case 429:
4564
0
#line 1370 "./util/configparser.y"
4565
0
        {
4566
0
    OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4567
0
    free(cfg_parser->cfg->username);
4568
0
    cfg_parser->cfg->username = (yyvsp[0].str);
4569
0
  }
4570
0
#line 4571 "util/configparser.c"
4571
0
    break;
4572
4573
0
  case 430:
4574
0
#line 1377 "./util/configparser.y"
4575
0
        {
4576
0
    OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4577
0
    free(cfg_parser->cfg->directory);
4578
0
    cfg_parser->cfg->directory = (yyvsp[0].str);
4579
    /* change there right away for includes relative to this */
4580
0
    if((yyvsp[0].str)[0]) {
4581
0
      char* d;
4582
#ifdef UB_ON_WINDOWS
4583
      w_config_adjust_directory(cfg_parser->cfg);
4584
#endif
4585
0
      d = cfg_parser->cfg->directory;
4586
      /* adjust directory if we have already chroot,
4587
       * like, we reread after sighup */
4588
0
      if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4589
0
        strncmp(d, cfg_parser->chroot, strlen(
4590
0
        cfg_parser->chroot)) == 0)
4591
0
        d += strlen(cfg_parser->chroot);
4592
0
      if(d[0]) {
4593
0
        if(chdir(d))
4594
0
        log_err("cannot chdir to directory: %s (%s)",
4595
0
          d, strerror(errno));
4596
0
      }
4597
0
    }
4598
0
  }
4599
0
#line 4600 "util/configparser.c"
4600
0
    break;
4601
4602
0
  case 431:
4603
0
#line 1403 "./util/configparser.y"
4604
0
        {
4605
0
    OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4606
0
    free(cfg_parser->cfg->logfile);
4607
0
    cfg_parser->cfg->logfile = (yyvsp[0].str);
4608
0
    cfg_parser->cfg->use_syslog = 0;
4609
0
  }
4610
0
#line 4611 "util/configparser.c"
4611
0
    break;
4612
4613
0
  case 432:
4614
0
#line 1411 "./util/configparser.y"
4615
0
        {
4616
0
    OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4617
0
    free(cfg_parser->cfg->pidfile);
4618
0
    cfg_parser->cfg->pidfile = (yyvsp[0].str);
4619
0
  }
4620
0
#line 4621 "util/configparser.c"
4621
0
    break;
4622
4623
0
  case 433:
4624
0
#line 1418 "./util/configparser.y"
4625
0
        {
4626
0
    OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4627
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4628
0
      yyerror("out of memory");
4629
0
  }
4630
0
#line 4631 "util/configparser.c"
4631
0
    break;
4632
4633
0
  case 434:
4634
0
#line 1425 "./util/configparser.y"
4635
0
        {
4636
0
    OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4637
0
    log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4638
0
    free((yyvsp[0].str));
4639
0
  }
4640
0
#line 4641 "util/configparser.c"
4641
0
    break;
4642
4643
0
  case 435:
4644
0
#line 1432 "./util/configparser.y"
4645
0
        {
4646
0
    OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4647
0
    log_warn("option dlv-anchor ignored: DLV is decommissioned");
4648
0
    free((yyvsp[0].str));
4649
0
  }
4650
0
#line 4651 "util/configparser.c"
4651
0
    break;
4652
4653
0
  case 436:
4654
0
#line 1439 "./util/configparser.y"
4655
0
        {
4656
0
    OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4657
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->
4658
0
      auto_trust_anchor_file_list, (yyvsp[0].str)))
4659
0
      yyerror("out of memory");
4660
0
  }
4661
0
#line 4662 "util/configparser.c"
4662
0
    break;
4663
4664
0
  case 437:
4665
0
#line 1447 "./util/configparser.y"
4666
0
        {
4667
0
    OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4668
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->
4669
0
      trust_anchor_file_list, (yyvsp[0].str)))
4670
0
      yyerror("out of memory");
4671
0
  }
4672
0
#line 4673 "util/configparser.c"
4673
0
    break;
4674
4675
0
  case 438:
4676
0
#line 1455 "./util/configparser.y"
4677
0
        {
4678
0
    OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4679
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->
4680
0
      trusted_keys_file_list, (yyvsp[0].str)))
4681
0
      yyerror("out of memory");
4682
0
  }
4683
0
#line 4684 "util/configparser.c"
4684
0
    break;
4685
4686
0
  case 439:
4687
0
#line 1463 "./util/configparser.y"
4688
0
        {
4689
0
    OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4690
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4691
0
      yyerror("out of memory");
4692
0
  }
4693
0
#line 4694 "util/configparser.c"
4694
0
    break;
4695
4696
0
  case 440:
4697
0
#line 1470 "./util/configparser.y"
4698
0
        {
4699
0
    OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4700
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4701
0
      yyerror("expected yes or no.");
4702
0
    else
4703
0
      cfg_parser->cfg->trust_anchor_signaling =
4704
0
        (strcmp((yyvsp[0].str), "yes")==0);
4705
0
    free((yyvsp[0].str));
4706
0
  }
4707
0
#line 4708 "util/configparser.c"
4708
0
    break;
4709
4710
0
  case 441:
4711
0
#line 1481 "./util/configparser.y"
4712
0
        {
4713
0
    OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4714
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4715
0
      yyerror("expected yes or no.");
4716
0
    else
4717
0
      cfg_parser->cfg->root_key_sentinel =
4718
0
        (strcmp((yyvsp[0].str), "yes")==0);
4719
0
    free((yyvsp[0].str));
4720
0
  }
4721
0
#line 4722 "util/configparser.c"
4722
0
    break;
4723
4724
0
  case 442:
4725
0
#line 1492 "./util/configparser.y"
4726
0
        {
4727
0
    OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4728
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4729
0
      yyerror("out of memory");
4730
0
  }
4731
0
#line 4732 "util/configparser.c"
4732
0
    break;
4733
4734
0
  case 443:
4735
0
#line 1499 "./util/configparser.y"
4736
0
        {
4737
0
    OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4738
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4739
0
      yyerror("expected yes or no.");
4740
0
    else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4741
0
    free((yyvsp[0].str));
4742
0
  }
4743
0
#line 4744 "util/configparser.c"
4744
0
    break;
4745
4746
0
  case 444:
4747
0
#line 1508 "./util/configparser.y"
4748
0
        {
4749
0
    OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4750
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4751
0
      yyerror("expected yes or no.");
4752
0
    else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4753
0
    free((yyvsp[0].str));
4754
0
  }
4755
0
#line 4756 "util/configparser.c"
4756
0
    break;
4757
4758
0
  case 445:
4759
0
#line 1517 "./util/configparser.y"
4760
0
        {
4761
0
    OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4762
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4763
0
      yyerror("expected yes or no.");
4764
0
    else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4765
0
    free((yyvsp[0].str));
4766
0
  }
4767
0
#line 4768 "util/configparser.c"
4768
0
    break;
4769
4770
0
  case 446:
4771
0
#line 1526 "./util/configparser.y"
4772
0
        {
4773
0
    OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4774
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4775
0
      yyerror("expected yes or no.");
4776
0
    else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4777
0
    free((yyvsp[0].str));
4778
0
  }
4779
0
#line 4780 "util/configparser.c"
4780
0
    break;
4781
4782
0
  case 447:
4783
0
#line 1535 "./util/configparser.y"
4784
0
        {
4785
0
    OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4786
0
    free(cfg_parser->cfg->identity);
4787
0
    cfg_parser->cfg->identity = (yyvsp[0].str);
4788
0
  }
4789
0
#line 4790 "util/configparser.c"
4790
0
    break;
4791
4792
0
  case 448:
4793
0
#line 1542 "./util/configparser.y"
4794
0
        {
4795
0
    OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4796
0
    free(cfg_parser->cfg->version);
4797
0
    cfg_parser->cfg->version = (yyvsp[0].str);
4798
0
  }
4799
0
#line 4800 "util/configparser.c"
4800
0
    break;
4801
4802
0
  case 449:
4803
0
#line 1549 "./util/configparser.y"
4804
0
        {
4805
0
    OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4806
0
    free(cfg_parser->cfg->http_user_agent);
4807
0
    cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4808
0
  }
4809
0
#line 4810 "util/configparser.c"
4810
0
    break;
4811
4812
0
  case 450:
4813
0
#line 1556 "./util/configparser.y"
4814
0
        {
4815
0
    OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4816
0
    free(cfg_parser->cfg->nsid_cfg_str);
4817
0
    cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4818
0
    free(cfg_parser->cfg->nsid);
4819
0
    cfg_parser->cfg->nsid = NULL;
4820
0
    cfg_parser->cfg->nsid_len = 0;
4821
0
    if (*(yyvsp[0].str) == 0)
4822
0
      ; /* pass; empty string is not setting nsid */
4823
0
    else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4824
0
          (yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4825
0
      yyerror("the NSID must be either a hex string or an "
4826
0
          "ascii character string prepended with ascii_.");
4827
0
  }
4828
0
#line 4829 "util/configparser.c"
4829
0
    break;
4830
4831
0
  case 451:
4832
0
#line 1572 "./util/configparser.y"
4833
0
        {
4834
0
    OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4835
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4836
0
      yyerror("buffer size expected");
4837
0
    free((yyvsp[0].str));
4838
0
  }
4839
0
#line 4840 "util/configparser.c"
4840
0
    break;
4841
4842
0
  case 452:
4843
0
#line 1580 "./util/configparser.y"
4844
0
        {
4845
0
    OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4846
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4847
0
      yyerror("buffer size expected");
4848
0
    free((yyvsp[0].str));
4849
0
  }
4850
0
#line 4851 "util/configparser.c"
4851
0
    break;
4852
4853
0
  case 453:
4854
0
#line 1588 "./util/configparser.y"
4855
0
        {
4856
0
    OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4857
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4858
0
      yyerror("expected yes or no.");
4859
0
    else cfg_parser->cfg->so_reuseport =
4860
0
      (strcmp((yyvsp[0].str), "yes")==0);
4861
0
    free((yyvsp[0].str));
4862
0
  }
4863
0
#line 4864 "util/configparser.c"
4864
0
    break;
4865
4866
0
  case 454:
4867
0
#line 1598 "./util/configparser.y"
4868
0
        {
4869
0
    OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4870
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4871
0
      yyerror("expected yes or no.");
4872
0
    else cfg_parser->cfg->ip_transparent =
4873
0
      (strcmp((yyvsp[0].str), "yes")==0);
4874
0
    free((yyvsp[0].str));
4875
0
  }
4876
0
#line 4877 "util/configparser.c"
4877
0
    break;
4878
4879
0
  case 455:
4880
0
#line 1608 "./util/configparser.y"
4881
0
        {
4882
0
    OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4883
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4884
0
      yyerror("expected yes or no.");
4885
0
    else cfg_parser->cfg->ip_freebind =
4886
0
      (strcmp((yyvsp[0].str), "yes")==0);
4887
0
    free((yyvsp[0].str));
4888
0
  }
4889
0
#line 4890 "util/configparser.c"
4890
0
    break;
4891
4892
0
  case 456:
4893
0
#line 1618 "./util/configparser.y"
4894
0
        {
4895
0
    OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4896
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4897
0
      yyerror("number expected");
4898
0
    else if (atoi((yyvsp[0].str)) > 63)
4899
0
      yyerror("value too large (max 63)");
4900
0
    else if (atoi((yyvsp[0].str)) < 0)
4901
0
      yyerror("value too small (min 0)");
4902
0
    else
4903
0
      cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4904
0
    free((yyvsp[0].str));
4905
0
  }
4906
0
#line 4907 "util/configparser.c"
4907
0
    break;
4908
4909
0
  case 457:
4910
0
#line 1632 "./util/configparser.y"
4911
0
        {
4912
0
    OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4913
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4914
0
      yyerror("memory size expected");
4915
0
    free((yyvsp[0].str));
4916
0
  }
4917
0
#line 4918 "util/configparser.c"
4918
0
    break;
4919
4920
0
  case 458:
4921
0
#line 1640 "./util/configparser.y"
4922
0
        {
4923
0
    OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4924
0
    if(atoi((yyvsp[0].str)) == 0)
4925
0
      yyerror("number expected");
4926
0
    else if (atoi((yyvsp[0].str)) < 12)
4927
0
      yyerror("edns buffer size too small");
4928
0
    else if (atoi((yyvsp[0].str)) > 65535)
4929
0
      cfg_parser->cfg->edns_buffer_size = 65535;
4930
0
    else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4931
0
    free((yyvsp[0].str));
4932
0
  }
4933
0
#line 4934 "util/configparser.c"
4934
0
    break;
4935
4936
0
  case 459:
4937
0
#line 1653 "./util/configparser.y"
4938
0
        {
4939
0
    OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4940
0
    if(atoi((yyvsp[0].str)) == 0)
4941
0
      yyerror("number expected");
4942
0
    else if (atoi((yyvsp[0].str)) < 4096)
4943
0
      yyerror("message buffer size too small (use 4096)");
4944
0
    else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4945
0
    free((yyvsp[0].str));
4946
0
  }
4947
0
#line 4948 "util/configparser.c"
4948
0
    break;
4949
4950
0
  case 460:
4951
0
#line 1664 "./util/configparser.y"
4952
0
        {
4953
0
    OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4954
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4955
0
      yyerror("memory size expected");
4956
0
    free((yyvsp[0].str));
4957
0
  }
4958
0
#line 4959 "util/configparser.c"
4959
0
    break;
4960
4961
0
  case 461:
4962
0
#line 1672 "./util/configparser.y"
4963
0
        {
4964
0
    OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4965
0
    if(atoi((yyvsp[0].str)) == 0) {
4966
0
      yyerror("number expected");
4967
0
    } else {
4968
0
      cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4969
0
      if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4970
0
        yyerror("must be a power of 2");
4971
0
    }
4972
0
    free((yyvsp[0].str));
4973
0
  }
4974
0
#line 4975 "util/configparser.c"
4975
0
    break;
4976
4977
0
  case 462:
4978
0
#line 1685 "./util/configparser.y"
4979
0
        {
4980
0
    OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4981
0
    if(atoi((yyvsp[0].str)) == 0)
4982
0
      yyerror("number expected");
4983
0
    else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4984
0
    free((yyvsp[0].str));
4985
0
  }
4986
0
#line 4987 "util/configparser.c"
4987
0
    break;
4988
4989
0
  case 463:
4990
0
#line 1694 "./util/configparser.y"
4991
0
        {
4992
0
    OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4993
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4994
0
      yyerror("number expected");
4995
0
    else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4996
0
    free((yyvsp[0].str));
4997
0
  }
4998
0
#line 4999 "util/configparser.c"
4999
0
    break;
5000
5001
0
  case 464:
5002
0
#line 1703 "./util/configparser.y"
5003
0
        {
5004
0
    OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
5005
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5006
0
      yyerror("number expected");
5007
0
    else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
5008
0
    free((yyvsp[0].str));
5009
0
  }
5010
0
#line 5011 "util/configparser.c"
5011
0
    break;
5012
5013
0
  case 465:
5014
0
#line 1712 "./util/configparser.y"
5015
0
        {
5016
0
    OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
5017
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5018
0
      yyerror("expected yes or no.");
5019
0
    else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
5020
0
    free((yyvsp[0].str));
5021
0
  }
5022
0
#line 5023 "util/configparser.c"
5023
0
    break;
5024
5025
0
  case 466:
5026
0
#line 1721 "./util/configparser.y"
5027
0
        {
5028
0
    OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
5029
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5030
0
      yyerror("expected yes or no.");
5031
0
    else cfg_parser->cfg->unblock_lan_zones =
5032
0
      (strcmp((yyvsp[0].str), "yes")==0);
5033
0
    free((yyvsp[0].str));
5034
0
  }
5035
0
#line 5036 "util/configparser.c"
5036
0
    break;
5037
5038
0
  case 467:
5039
0
#line 1731 "./util/configparser.y"
5040
0
        {
5041
0
    OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
5042
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5043
0
      yyerror("expected yes or no.");
5044
0
    else cfg_parser->cfg->insecure_lan_zones =
5045
0
      (strcmp((yyvsp[0].str), "yes")==0);
5046
0
    free((yyvsp[0].str));
5047
0
  }
5048
0
#line 5049 "util/configparser.c"
5049
0
    break;
5050
5051
0
  case 468:
5052
0
#line 1741 "./util/configparser.y"
5053
0
        {
5054
0
    OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
5055
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
5056
0
      yyerror("memory size expected");
5057
0
    free((yyvsp[0].str));
5058
0
  }
5059
0
#line 5060 "util/configparser.c"
5060
0
    break;
5061
5062
0
  case 469:
5063
0
#line 1749 "./util/configparser.y"
5064
0
        {
5065
0
    OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
5066
0
    if(atoi((yyvsp[0].str)) == 0) {
5067
0
      yyerror("number expected");
5068
0
    } else {
5069
0
      cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
5070
0
      if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
5071
0
        yyerror("must be a power of 2");
5072
0
    }
5073
0
    free((yyvsp[0].str));
5074
0
  }
5075
0
#line 5076 "util/configparser.c"
5076
0
    break;
5077
5078
0
  case 470:
5079
0
#line 1762 "./util/configparser.y"
5080
0
        {
5081
0
    OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
5082
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5083
0
      yyerror("number expected");
5084
0
    else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
5085
0
    free((yyvsp[0].str));
5086
0
  }
5087
0
#line 5088 "util/configparser.c"
5088
0
    break;
5089
5090
0
  case 471:
5091
0
#line 1771 "./util/configparser.y"
5092
0
        {
5093
0
    OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
5094
0
    verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
5095
0
      "removed, use infra-host-ttl)", (yyvsp[0].str));
5096
0
    free((yyvsp[0].str));
5097
0
  }
5098
0
#line 5099 "util/configparser.c"
5099
0
    break;
5100
5101
0
  case 472:
5102
0
#line 1779 "./util/configparser.y"
5103
0
        {
5104
0
    OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
5105
0
    if(atoi((yyvsp[0].str)) == 0)
5106
0
      yyerror("number expected");
5107
0
    else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
5108
0
    free((yyvsp[0].str));
5109
0
  }
5110
0
#line 5111 "util/configparser.c"
5111
0
    break;
5112
5113
0
  case 473:
5114
0
#line 1788 "./util/configparser.y"
5115
0
        {
5116
0
    OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
5117
0
    verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
5118
0
      "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
5119
0
    free((yyvsp[0].str));
5120
0
  }
5121
0
#line 5122 "util/configparser.c"
5122
0
    break;
5123
5124
0
  case 474:
5125
0
#line 1796 "./util/configparser.y"
5126
0
        {
5127
0
    OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
5128
0
    if(atoi((yyvsp[0].str)) == 0) {
5129
0
      yyerror("number expected");
5130
0
    } else {
5131
0
      cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
5132
0
      if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
5133
0
        yyerror("must be a power of 2");
5134
0
    }
5135
0
    free((yyvsp[0].str));
5136
0
  }
5137
0
#line 5138 "util/configparser.c"
5138
0
    break;
5139
5140
0
  case 475:
5141
0
#line 1809 "./util/configparser.y"
5142
0
        {
5143
0
    OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
5144
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5145
0
      yyerror("number expected");
5146
0
    else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
5147
0
    free((yyvsp[0].str));
5148
0
  }
5149
0
#line 5150 "util/configparser.c"
5150
0
    break;
5151
5152
0
  case 476:
5153
0
#line 1818 "./util/configparser.y"
5154
0
        {
5155
0
    OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
5156
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5157
0
      yyerror("number expected");
5158
0
    else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
5159
0
    free((yyvsp[0].str));
5160
0
  }
5161
0
#line 5162 "util/configparser.c"
5162
0
    break;
5163
5164
0
  case 477:
5165
0
#line 1827 "./util/configparser.y"
5166
0
        {
5167
0
    OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
5168
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5169
0
      yyerror("expected yes or no.");
5170
0
    else cfg_parser->cfg->infra_keep_probing =
5171
0
      (strcmp((yyvsp[0].str), "yes")==0);
5172
0
    free((yyvsp[0].str));
5173
0
  }
5174
0
#line 5175 "util/configparser.c"
5175
0
    break;
5176
5177
0
  case 478:
5178
0
#line 1837 "./util/configparser.y"
5179
0
        {
5180
0
    OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
5181
0
    free(cfg_parser->cfg->target_fetch_policy);
5182
0
    cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
5183
0
  }
5184
0
#line 5185 "util/configparser.c"
5185
0
    break;
5186
5187
0
  case 479:
5188
0
#line 1844 "./util/configparser.y"
5189
0
        {
5190
0
    OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
5191
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5192
0
      yyerror("expected yes or no.");
5193
0
    else cfg_parser->cfg->harden_short_bufsize =
5194
0
      (strcmp((yyvsp[0].str), "yes")==0);
5195
0
    free((yyvsp[0].str));
5196
0
  }
5197
0
#line 5198 "util/configparser.c"
5198
0
    break;
5199
5200
0
  case 480:
5201
0
#line 1854 "./util/configparser.y"
5202
0
        {
5203
0
    OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
5204
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5205
0
      yyerror("expected yes or no.");
5206
0
    else cfg_parser->cfg->harden_large_queries =
5207
0
      (strcmp((yyvsp[0].str), "yes")==0);
5208
0
    free((yyvsp[0].str));
5209
0
  }
5210
0
#line 5211 "util/configparser.c"
5211
0
    break;
5212
5213
0
  case 481:
5214
0
#line 1864 "./util/configparser.y"
5215
0
        {
5216
0
    OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
5217
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5218
0
      yyerror("expected yes or no.");
5219
0
    else cfg_parser->cfg->harden_glue =
5220
0
      (strcmp((yyvsp[0].str), "yes")==0);
5221
0
    free((yyvsp[0].str));
5222
0
  }
5223
0
#line 5224 "util/configparser.c"
5224
0
    break;
5225
5226
0
  case 482:
5227
0
#line 1874 "./util/configparser.y"
5228
0
       {
5229
0
               OUTYY(("P(server_harden_unverified_glue:%s)\n", (yyvsp[0].str)));
5230
0
               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5231
0
                       yyerror("expected yes or no.");
5232
0
               else cfg_parser->cfg->harden_unverified_glue =
5233
0
                       (strcmp((yyvsp[0].str), "yes")==0);
5234
0
               free((yyvsp[0].str));
5235
0
       }
5236
0
#line 5237 "util/configparser.c"
5237
0
    break;
5238
5239
0
  case 483:
5240
0
#line 1884 "./util/configparser.y"
5241
0
        {
5242
0
    OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
5243
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5244
0
      yyerror("expected yes or no.");
5245
0
    else cfg_parser->cfg->harden_dnssec_stripped =
5246
0
      (strcmp((yyvsp[0].str), "yes")==0);
5247
0
    free((yyvsp[0].str));
5248
0
  }
5249
0
#line 5250 "util/configparser.c"
5250
0
    break;
5251
5252
0
  case 484:
5253
0
#line 1894 "./util/configparser.y"
5254
0
        {
5255
0
    OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
5256
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5257
0
      yyerror("expected yes or no.");
5258
0
    else cfg_parser->cfg->harden_below_nxdomain =
5259
0
      (strcmp((yyvsp[0].str), "yes")==0);
5260
0
    free((yyvsp[0].str));
5261
0
  }
5262
0
#line 5263 "util/configparser.c"
5263
0
    break;
5264
5265
0
  case 485:
5266
0
#line 1904 "./util/configparser.y"
5267
0
        {
5268
0
    OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
5269
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5270
0
      yyerror("expected yes or no.");
5271
0
    else cfg_parser->cfg->harden_referral_path =
5272
0
      (strcmp((yyvsp[0].str), "yes")==0);
5273
0
    free((yyvsp[0].str));
5274
0
  }
5275
0
#line 5276 "util/configparser.c"
5276
0
    break;
5277
5278
0
  case 486:
5279
0
#line 1914 "./util/configparser.y"
5280
0
        {
5281
0
    OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5282
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5283
0
      yyerror("expected yes or no.");
5284
0
    else cfg_parser->cfg->harden_algo_downgrade =
5285
0
      (strcmp((yyvsp[0].str), "yes")==0);
5286
0
    free((yyvsp[0].str));
5287
0
  }
5288
0
#line 5289 "util/configparser.c"
5289
0
    break;
5290
5291
0
  case 487:
5292
0
#line 1924 "./util/configparser.y"
5293
0
        {
5294
0
    OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
5295
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5296
0
      yyerror("expected yes or no.");
5297
0
    else cfg_parser->cfg->harden_unknown_additional =
5298
0
      (strcmp((yyvsp[0].str), "yes")==0);
5299
0
    free((yyvsp[0].str));
5300
0
  }
5301
0
#line 5302 "util/configparser.c"
5302
0
    break;
5303
5304
0
  case 488:
5305
0
#line 1934 "./util/configparser.y"
5306
0
        {
5307
0
    OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5308
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5309
0
      yyerror("expected yes or no.");
5310
0
    else cfg_parser->cfg->use_caps_bits_for_id =
5311
0
      (strcmp((yyvsp[0].str), "yes")==0);
5312
0
    free((yyvsp[0].str));
5313
0
  }
5314
0
#line 5315 "util/configparser.c"
5315
0
    break;
5316
5317
0
  case 489:
5318
0
#line 1944 "./util/configparser.y"
5319
0
        {
5320
0
    OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5321
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5322
0
      yyerror("out of memory");
5323
0
  }
5324
0
#line 5325 "util/configparser.c"
5325
0
    break;
5326
5327
0
  case 490:
5328
0
#line 1951 "./util/configparser.y"
5329
0
        {
5330
0
    OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5331
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5332
0
      yyerror("out of memory");
5333
0
  }
5334
0
#line 5335 "util/configparser.c"
5335
0
    break;
5336
5337
0
  case 491:
5338
0
#line 1958 "./util/configparser.y"
5339
0
        {
5340
0
    OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5341
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5342
0
      yyerror("out of memory");
5343
0
  }
5344
0
#line 5345 "util/configparser.c"
5345
0
    break;
5346
5347
0
  case 492:
5348
0
#line 1965 "./util/configparser.y"
5349
0
        {
5350
0
    OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5351
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5352
0
      yyerror("expected yes or no.");
5353
0
    else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5354
0
    free((yyvsp[0].str));
5355
0
  }
5356
0
#line 5357 "util/configparser.c"
5357
0
    break;
5358
5359
0
  case 493:
5360
0
#line 1974 "./util/configparser.y"
5361
0
        {
5362
0
    OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5363
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5364
0
      yyerror("expected yes or no.");
5365
0
    else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5366
0
    free((yyvsp[0].str));
5367
0
  }
5368
0
#line 5369 "util/configparser.c"
5369
0
    break;
5370
5371
0
  case 494:
5372
0
#line 1983 "./util/configparser.y"
5373
0
        {
5374
0
    OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5375
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5376
0
      yyerror("expected yes or no.");
5377
0
    else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5378
0
    free((yyvsp[0].str));
5379
0
  }
5380
0
#line 5381 "util/configparser.c"
5381
0
    break;
5382
5383
0
  case 495:
5384
0
#line 1992 "./util/configparser.y"
5385
0
        {
5386
0
    OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5387
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5388
0
      yyerror("number expected");
5389
0
    else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5390
0
    free((yyvsp[0].str));
5391
0
  }
5392
0
#line 5393 "util/configparser.c"
5393
0
    break;
5394
5395
0
  case 496:
5396
0
#line 2001 "./util/configparser.y"
5397
0
        {
5398
0
    OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5399
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5400
0
      yyerror("out of memory");
5401
0
  }
5402
0
#line 5403 "util/configparser.c"
5403
0
    break;
5404
5405
0
  case 497:
5406
0
#line 2008 "./util/configparser.y"
5407
0
        {
5408
0
    OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5409
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5410
0
      yyerror("expected yes or no.");
5411
0
    else cfg_parser->cfg->donotquery_localhost =
5412
0
      (strcmp((yyvsp[0].str), "yes")==0);
5413
0
    free((yyvsp[0].str));
5414
0
  }
5415
0
#line 5416 "util/configparser.c"
5416
0
    break;
5417
5418
0
  case 498:
5419
0
#line 2018 "./util/configparser.y"
5420
0
        {
5421
0
    OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5422
0
    validate_acl_action((yyvsp[0].str));
5423
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5424
0
      fatal_exit("out of memory adding acl");
5425
0
  }
5426
0
#line 5427 "util/configparser.c"
5427
0
    break;
5428
5429
0
  case 499:
5430
0
#line 2026 "./util/configparser.y"
5431
0
        {
5432
0
    OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5433
0
    validate_acl_action((yyvsp[0].str));
5434
0
    if(!cfg_str2list_insert(
5435
0
      &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5436
0
      fatal_exit("out of memory adding acl");
5437
0
  }
5438
0
#line 5439 "util/configparser.c"
5439
0
    break;
5440
5441
0
  case 500:
5442
0
#line 2035 "./util/configparser.y"
5443
0
        {
5444
0
    OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5445
0
    free(cfg_parser->cfg->module_conf);
5446
0
    cfg_parser->cfg->module_conf = (yyvsp[0].str);
5447
0
  }
5448
0
#line 5449 "util/configparser.c"
5449
0
    break;
5450
5451
0
  case 501:
5452
0
#line 2042 "./util/configparser.y"
5453
0
        {
5454
0
    OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5455
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5456
0
      cfg_parser->cfg->val_date_override = 0;
5457
0
    } else if(strlen((yyvsp[0].str)) == 14) {
5458
0
      cfg_parser->cfg->val_date_override =
5459
0
        cfg_convert_timeval((yyvsp[0].str));
5460
0
      if(!cfg_parser->cfg->val_date_override)
5461
0
        yyerror("bad date/time specification");
5462
0
    } else {
5463
0
      if(atoi((yyvsp[0].str)) == 0)
5464
0
        yyerror("number expected");
5465
0
      cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5466
0
    }
5467
0
    free((yyvsp[0].str));
5468
0
  }
5469
0
#line 5470 "util/configparser.c"
5470
0
    break;
5471
5472
0
  case 502:
5473
0
#line 2060 "./util/configparser.y"
5474
0
        {
5475
0
    OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5476
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5477
0
      cfg_parser->cfg->val_sig_skew_min = 0;
5478
0
    } else {
5479
0
      cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5480
0
      if(!cfg_parser->cfg->val_sig_skew_min)
5481
0
        yyerror("number expected");
5482
0
    }
5483
0
    free((yyvsp[0].str));
5484
0
  }
5485
0
#line 5486 "util/configparser.c"
5486
0
    break;
5487
5488
0
  case 503:
5489
0
#line 2073 "./util/configparser.y"
5490
0
        {
5491
0
    OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5492
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5493
0
      cfg_parser->cfg->val_sig_skew_max = 0;
5494
0
    } else {
5495
0
      cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5496
0
      if(!cfg_parser->cfg->val_sig_skew_max)
5497
0
        yyerror("number expected");
5498
0
    }
5499
0
    free((yyvsp[0].str));
5500
0
  }
5501
0
#line 5502 "util/configparser.c"
5502
0
    break;
5503
5504
0
  case 504:
5505
0
#line 2086 "./util/configparser.y"
5506
0
        {
5507
0
    OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5508
0
    if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5509
0
      cfg_parser->cfg->val_max_restart = 0;
5510
0
    } else {
5511
0
      cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5512
0
      if(!cfg_parser->cfg->val_max_restart)
5513
0
        yyerror("number expected");
5514
0
    }
5515
0
    free((yyvsp[0].str));
5516
0
  }
5517
0
#line 5518 "util/configparser.c"
5518
0
    break;
5519
5520
0
  case 505:
5521
0
#line 2099 "./util/configparser.y"
5522
0
        {
5523
0
    OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5524
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5525
0
      yyerror("number expected");
5526
0
    else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5527
0
    free((yyvsp[0].str));
5528
0
  }
5529
0
#line 5530 "util/configparser.c"
5530
0
    break;
5531
5532
0
  case 506:
5533
0
#line 2108 "./util/configparser.y"
5534
0
        {
5535
0
    OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5536
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5537
0
      yyerror("number expected");
5538
0
    else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5539
0
    free((yyvsp[0].str));
5540
0
  }
5541
0
#line 5542 "util/configparser.c"
5542
0
    break;
5543
5544
0
  case 507:
5545
0
#line 2117 "./util/configparser.y"
5546
0
        {
5547
0
    OUTYY(("P(server_cache_min_negative_ttl:%s)\n", (yyvsp[0].str)));
5548
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5549
0
      yyerror("number expected");
5550
0
    else cfg_parser->cfg->min_negative_ttl = atoi((yyvsp[0].str));
5551
0
    free((yyvsp[0].str));
5552
0
  }
5553
0
#line 5554 "util/configparser.c"
5554
0
    break;
5555
5556
0
  case 508:
5557
0
#line 2126 "./util/configparser.y"
5558
0
        {
5559
0
    OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5560
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5561
0
      yyerror("number expected");
5562
0
    else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5563
0
    free((yyvsp[0].str));
5564
0
  }
5565
0
#line 5566 "util/configparser.c"
5566
0
    break;
5567
5568
0
  case 509:
5569
0
#line 2135 "./util/configparser.y"
5570
0
        {
5571
0
    OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5572
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5573
0
      yyerror("number expected");
5574
0
    else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5575
0
    free((yyvsp[0].str));
5576
0
  }
5577
0
#line 5578 "util/configparser.c"
5578
0
    break;
5579
5580
0
  case 510:
5581
0
#line 2144 "./util/configparser.y"
5582
0
        {
5583
0
    OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5584
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5585
0
      yyerror("expected yes or no.");
5586
0
    else cfg_parser->cfg->val_clean_additional =
5587
0
      (strcmp((yyvsp[0].str), "yes")==0);
5588
0
    free((yyvsp[0].str));
5589
0
  }
5590
0
#line 5591 "util/configparser.c"
5591
0
    break;
5592
5593
0
  case 511:
5594
0
#line 2154 "./util/configparser.y"
5595
0
        {
5596
0
    OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5597
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5598
0
      yyerror("expected yes or no.");
5599
0
    else cfg_parser->cfg->val_permissive_mode =
5600
0
      (strcmp((yyvsp[0].str), "yes")==0);
5601
0
    free((yyvsp[0].str));
5602
0
  }
5603
0
#line 5604 "util/configparser.c"
5604
0
    break;
5605
5606
0
  case 512:
5607
0
#line 2164 "./util/configparser.y"
5608
0
        {
5609
0
    OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5610
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5611
0
      yyerror("expected yes or no.");
5612
0
    else
5613
0
      cfg_parser->cfg->aggressive_nsec =
5614
0
        (strcmp((yyvsp[0].str), "yes")==0);
5615
0
    free((yyvsp[0].str));
5616
0
  }
5617
0
#line 5618 "util/configparser.c"
5618
0
    break;
5619
5620
0
  case 513:
5621
0
#line 2175 "./util/configparser.y"
5622
0
        {
5623
0
    OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5624
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5625
0
      yyerror("expected yes or no.");
5626
0
    else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5627
0
    free((yyvsp[0].str));
5628
0
  }
5629
0
#line 5630 "util/configparser.c"
5630
0
    break;
5631
5632
0
  case 514:
5633
0
#line 2184 "./util/configparser.y"
5634
0
        {
5635
0
    OUTYY(("P(server_disable_edns_do:%s)\n", (yyvsp[0].str)));
5636
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5637
0
      yyerror("expected yes or no.");
5638
0
    else cfg_parser->cfg->disable_edns_do = (strcmp((yyvsp[0].str), "yes")==0);
5639
0
    free((yyvsp[0].str));
5640
0
  }
5641
0
#line 5642 "util/configparser.c"
5642
0
    break;
5643
5644
0
  case 515:
5645
0
#line 2193 "./util/configparser.y"
5646
0
        {
5647
0
    OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5648
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5649
0
      yyerror("expected yes or no.");
5650
0
    else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5651
0
    free((yyvsp[0].str));
5652
0
  }
5653
0
#line 5654 "util/configparser.c"
5654
0
    break;
5655
5656
0
  case 516:
5657
0
#line 2202 "./util/configparser.y"
5658
0
        {
5659
0
    OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5660
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5661
0
      yyerror("number expected");
5662
0
    else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5663
0
    free((yyvsp[0].str));
5664
0
  }
5665
0
#line 5666 "util/configparser.c"
5666
0
    break;
5667
5668
0
  case 517:
5669
0
#line 2211 "./util/configparser.y"
5670
0
        {
5671
0
    OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5672
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5673
0
      yyerror("expected yes or no.");
5674
0
    else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5675
0
    free((yyvsp[0].str));
5676
0
  }
5677
0
#line 5678 "util/configparser.c"
5678
0
    break;
5679
5680
0
  case 518:
5681
0
#line 2220 "./util/configparser.y"
5682
0
        {
5683
0
    OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5684
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5685
0
      yyerror("number expected");
5686
0
    else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5687
0
    free((yyvsp[0].str));
5688
0
  }
5689
0
#line 5690 "util/configparser.c"
5690
0
    break;
5691
5692
0
  case 519:
5693
0
#line 2229 "./util/configparser.y"
5694
0
        {
5695
0
    OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5696
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5697
0
      yyerror("number expected");
5698
0
    else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5699
0
    free((yyvsp[0].str));
5700
0
  }
5701
0
#line 5702 "util/configparser.c"
5702
0
    break;
5703
5704
0
  case 520:
5705
0
#line 2238 "./util/configparser.y"
5706
0
        {
5707
0
    OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5708
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5709
0
      yyerror("expected yes or no.");
5710
0
    else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5711
0
    free((yyvsp[0].str));
5712
0
  }
5713
0
#line 5714 "util/configparser.c"
5714
0
    break;
5715
5716
0
  case 521:
5717
0
#line 2247 "./util/configparser.y"
5718
0
        {
5719
0
    OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5720
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5721
0
      yyerror("expected yes or no.");
5722
0
    else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5723
0
    free((yyvsp[0].str));
5724
0
  }
5725
0
#line 5726 "util/configparser.c"
5726
0
    break;
5727
5728
0
  case 522:
5729
0
#line 2256 "./util/configparser.y"
5730
0
        {
5731
0
    OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5732
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5733
0
      yyerror("expected yes or no.");
5734
0
#if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5735
0
    else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5736
0
    if(fake_dsa)
5737
0
      log_warn("test option fake_dsa is enabled");
5738
0
#endif
5739
0
    free((yyvsp[0].str));
5740
0
  }
5741
0
#line 5742 "util/configparser.c"
5742
0
    break;
5743
5744
0
  case 523:
5745
0
#line 2269 "./util/configparser.y"
5746
0
        {
5747
0
    OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5748
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5749
0
      yyerror("expected yes or no.");
5750
0
#if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5751
0
    else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5752
0
    if(fake_sha1)
5753
0
      log_warn("test option fake_sha1 is enabled");
5754
0
#endif
5755
0
    free((yyvsp[0].str));
5756
0
  }
5757
0
#line 5758 "util/configparser.c"
5758
0
    break;
5759
5760
0
  case 524:
5761
0
#line 2282 "./util/configparser.y"
5762
0
        {
5763
0
    OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5764
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5765
0
      yyerror("number expected");
5766
0
    else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5767
0
    free((yyvsp[0].str));
5768
0
  }
5769
0
#line 5770 "util/configparser.c"
5770
0
    break;
5771
5772
0
  case 525:
5773
0
#line 2291 "./util/configparser.y"
5774
0
        {
5775
0
    OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5776
0
    free(cfg_parser->cfg->val_nsec3_key_iterations);
5777
0
    cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5778
0
  }
5779
0
#line 5780 "util/configparser.c"
5780
0
    break;
5781
5782
0
  case 526:
5783
0
#line 2298 "./util/configparser.y"
5784
0
        {
5785
0
    OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5786
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5787
0
      yyerror("expected yes or no.");
5788
0
    else  cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5789
0
    free((yyvsp[0].str));
5790
0
  }
5791
0
#line 5792 "util/configparser.c"
5792
0
    break;
5793
5794
0
  case 527:
5795
0
#line 2307 "./util/configparser.y"
5796
0
        {
5797
0
    OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5798
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5799
0
      yyerror("number expected");
5800
0
    else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5801
0
    free((yyvsp[0].str));
5802
0
  }
5803
0
#line 5804 "util/configparser.c"
5804
0
    break;
5805
5806
0
  case 528:
5807
0
#line 2316 "./util/configparser.y"
5808
0
        {
5809
0
    OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5810
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5811
0
      yyerror("number expected");
5812
0
    else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5813
0
    free((yyvsp[0].str));
5814
0
  }
5815
0
#line 5816 "util/configparser.c"
5816
0
    break;
5817
5818
0
  case 529:
5819
0
#line 2325 "./util/configparser.y"
5820
0
        {
5821
0
    OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5822
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5823
0
      yyerror("number expected");
5824
0
    else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5825
0
    free((yyvsp[0].str));
5826
0
  }
5827
0
#line 5828 "util/configparser.c"
5828
0
    break;
5829
5830
0
  case 530:
5831
0
#line 2334 "./util/configparser.y"
5832
0
        {
5833
0
    OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5834
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5835
0
      yyerror("expected yes or no.");
5836
0
    else cfg_parser->cfg->permit_small_holddown =
5837
0
      (strcmp((yyvsp[0].str), "yes")==0);
5838
0
    free((yyvsp[0].str));
5839
0
  }
5840
0
#line 5841 "util/configparser.c"
5841
0
    break;
5842
5843
0
  case 531:
5844
0
#line 2344 "./util/configparser.y"
5845
0
        {
5846
0
    OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5847
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5848
0
      yyerror("memory size expected");
5849
0
    free((yyvsp[0].str));
5850
0
  }
5851
0
#line 5852 "util/configparser.c"
5852
0
    break;
5853
5854
0
  case 532:
5855
0
#line 2352 "./util/configparser.y"
5856
0
        {
5857
0
    OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5858
0
    if(atoi((yyvsp[0].str)) == 0) {
5859
0
      yyerror("number expected");
5860
0
    } else {
5861
0
      cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5862
0
      if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5863
0
        yyerror("must be a power of 2");
5864
0
    }
5865
0
    free((yyvsp[0].str));
5866
0
  }
5867
0
#line 5868 "util/configparser.c"
5868
0
    break;
5869
5870
0
  case 533:
5871
0
#line 2365 "./util/configparser.y"
5872
0
        {
5873
0
    OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5874
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5875
0
      yyerror("memory size expected");
5876
0
    free((yyvsp[0].str));
5877
0
  }
5878
0
#line 5879 "util/configparser.c"
5879
0
    break;
5880
5881
0
  case 534:
5882
0
#line 2373 "./util/configparser.y"
5883
0
        {
5884
0
    OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5885
0
    if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5886
0
       strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5887
0
       strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5888
0
       && strcmp((yyvsp[0].str), "typetransparent")!=0
5889
0
       && strcmp((yyvsp[0].str), "always_transparent")!=0
5890
0
       && strcmp((yyvsp[0].str), "block_a")!=0
5891
0
       && strcmp((yyvsp[0].str), "always_refuse")!=0
5892
0
       && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5893
0
       && strcmp((yyvsp[0].str), "always_nodata")!=0
5894
0
       && strcmp((yyvsp[0].str), "always_deny")!=0
5895
0
       && strcmp((yyvsp[0].str), "always_null")!=0
5896
0
       && strcmp((yyvsp[0].str), "noview")!=0
5897
0
       && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5898
0
       && strcmp((yyvsp[0].str), "inform_redirect") != 0
5899
0
       && strcmp((yyvsp[0].str), "ipset") != 0) {
5900
0
      yyerror("local-zone type: expected static, deny, "
5901
0
        "refuse, redirect, transparent, "
5902
0
        "typetransparent, inform, inform_deny, "
5903
0
        "inform_redirect, always_transparent, block_a,"
5904
0
        "always_refuse, always_nxdomain, "
5905
0
        "always_nodata, always_deny, always_null, "
5906
0
        "noview, nodefault or ipset");
5907
0
      free((yyvsp[-1].str));
5908
0
      free((yyvsp[0].str));
5909
0
    } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5910
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->
5911
0
        local_zones_nodefault, (yyvsp[-1].str)))
5912
0
        fatal_exit("out of memory adding local-zone");
5913
0
      free((yyvsp[0].str));
5914
#ifdef USE_IPSET
5915
    } else if(strcmp((yyvsp[0].str), "ipset")==0) {
5916
      size_t len = strlen((yyvsp[-1].str));
5917
      /* Make sure to add the trailing dot.
5918
       * These are str compared to domain names. */
5919
      if((yyvsp[-1].str)[len-1] != '.') {
5920
        if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5921
          fatal_exit("out of memory adding local-zone");
5922
        }
5923
        (yyvsp[-1].str)[len] = '.';
5924
        (yyvsp[-1].str)[len+1] = 0;
5925
      }
5926
      if(!cfg_strlist_insert(&cfg_parser->cfg->
5927
        local_zones_ipset, (yyvsp[-1].str)))
5928
        fatal_exit("out of memory adding local-zone");
5929
      free((yyvsp[0].str));
5930
#endif
5931
0
    } else {
5932
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5933
0
        (yyvsp[-1].str), (yyvsp[0].str)))
5934
0
        fatal_exit("out of memory adding local-zone");
5935
0
    }
5936
0
  }
5937
0
#line 5938 "util/configparser.c"
5938
0
    break;
5939
5940
0
  case 535:
5941
0
#line 2429 "./util/configparser.y"
5942
0
        {
5943
0
    OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5944
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5945
0
      fatal_exit("out of memory adding local-data");
5946
0
  }
5947
0
#line 5948 "util/configparser.c"
5948
0
    break;
5949
5950
0
  case 536:
5951
0
#line 2436 "./util/configparser.y"
5952
0
        {
5953
0
    char* ptr;
5954
0
    OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5955
0
    ptr = cfg_ptr_reverse((yyvsp[0].str));
5956
0
    free((yyvsp[0].str));
5957
0
    if(ptr) {
5958
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->
5959
0
        local_data, ptr))
5960
0
        fatal_exit("out of memory adding local-data");
5961
0
    } else {
5962
0
      yyerror("local-data-ptr could not be reversed");
5963
0
    }
5964
0
  }
5965
0
#line 5966 "util/configparser.c"
5966
0
    break;
5967
5968
0
  case 537:
5969
0
#line 2451 "./util/configparser.y"
5970
0
        {
5971
0
    OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5972
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5973
0
      yyerror("expected yes or no.");
5974
0
    else cfg_parser->cfg->minimal_responses =
5975
0
      (strcmp((yyvsp[0].str), "yes")==0);
5976
0
    free((yyvsp[0].str));
5977
0
  }
5978
0
#line 5979 "util/configparser.c"
5979
0
    break;
5980
5981
0
  case 538:
5982
0
#line 2461 "./util/configparser.y"
5983
0
        {
5984
0
    OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5985
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5986
0
      yyerror("expected yes or no.");
5987
0
    else cfg_parser->cfg->rrset_roundrobin =
5988
0
      (strcmp((yyvsp[0].str), "yes")==0);
5989
0
    free((yyvsp[0].str));
5990
0
  }
5991
0
#line 5992 "util/configparser.c"
5992
0
    break;
5993
5994
0
  case 539:
5995
0
#line 2471 "./util/configparser.y"
5996
0
        {
5997
0
    OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5998
0
    cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5999
0
    free((yyvsp[0].str));
6000
0
  }
6001
0
#line 6002 "util/configparser.c"
6002
0
    break;
6003
6004
0
  case 540:
6005
0
#line 2478 "./util/configparser.y"
6006
0
        {
6007
0
    OUTYY(("P(server_discard_timeout:%s)\n", (yyvsp[0].str)));
6008
0
    cfg_parser->cfg->discard_timeout = atoi((yyvsp[0].str));
6009
0
    free((yyvsp[0].str));
6010
0
  }
6011
0
#line 6012 "util/configparser.c"
6012
0
    break;
6013
6014
0
  case 541:
6015
0
#line 2485 "./util/configparser.y"
6016
0
        {
6017
0
    OUTYY(("P(server_wait_limit:%s)\n", (yyvsp[0].str)));
6018
0
    cfg_parser->cfg->wait_limit = atoi((yyvsp[0].str));
6019
0
    free((yyvsp[0].str));
6020
0
  }
6021
0
#line 6022 "util/configparser.c"
6022
0
    break;
6023
6024
0
  case 542:
6025
0
#line 2492 "./util/configparser.y"
6026
0
        {
6027
0
    OUTYY(("P(server_wait_limit_cookie:%s)\n", (yyvsp[0].str)));
6028
0
    cfg_parser->cfg->wait_limit_cookie = atoi((yyvsp[0].str));
6029
0
    free((yyvsp[0].str));
6030
0
  }
6031
0
#line 6032 "util/configparser.c"
6032
0
    break;
6033
6034
0
  case 543:
6035
0
#line 2499 "./util/configparser.y"
6036
0
        {
6037
0
    OUTYY(("P(server_wait_limit_netblock:%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
        wait_limit_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
6045
0
        fatal_exit("out of memory adding "
6046
0
          "wait-limit-netblock");
6047
0
    }
6048
0
  }
6049
0
#line 6050 "util/configparser.c"
6050
0
    break;
6051
6052
0
  case 544:
6053
0
#line 2514 "./util/configparser.y"
6054
0
        {
6055
0
    OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6056
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6057
0
      yyerror("number expected");
6058
0
      free((yyvsp[-1].str));
6059
0
      free((yyvsp[0].str));
6060
0
    } else {
6061
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->
6062
0
        wait_limit_cookie_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
6063
0
        fatal_exit("out of memory adding "
6064
0
          "wait-limit-cookie-netblock");
6065
0
    }
6066
0
  }
6067
0
#line 6068 "util/configparser.c"
6068
0
    break;
6069
6070
0
  case 545:
6071
0
#line 2529 "./util/configparser.y"
6072
0
        {
6073
0
    OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
6074
0
    cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
6075
0
    free((yyvsp[0].str));
6076
0
  }
6077
0
#line 6078 "util/configparser.c"
6078
0
    break;
6079
6080
0
  case 546:
6081
0
#line 2536 "./util/configparser.y"
6082
0
        {
6083
0
    OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
6084
0
    free(cfg_parser->cfg->dns64_prefix);
6085
0
    cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
6086
0
  }
6087
0
#line 6088 "util/configparser.c"
6088
0
    break;
6089
6090
0
  case 547:
6091
0
#line 2543 "./util/configparser.y"
6092
0
        {
6093
0
    OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
6094
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6095
0
      yyerror("expected yes or no.");
6096
0
    else cfg_parser->cfg->dns64_synthall = (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 548:
6103
0
#line 2552 "./util/configparser.y"
6104
0
        {
6105
0
    OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
6106
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
6107
0
      (yyvsp[0].str)))
6108
0
      fatal_exit("out of memory adding dns64-ignore-aaaa");
6109
0
  }
6110
0
#line 6111 "util/configparser.c"
6111
0
    break;
6112
6113
0
  case 549:
6114
0
#line 2560 "./util/configparser.y"
6115
0
        {
6116
0
    OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
6117
0
    free(cfg_parser->cfg->nat64_prefix);
6118
0
    cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
6119
0
  }
6120
0
#line 6121 "util/configparser.c"
6121
0
    break;
6122
6123
0
  case 550:
6124
0
#line 2567 "./util/configparser.y"
6125
0
        {
6126
0
    char* p, *s = (yyvsp[0].str);
6127
0
    OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
6128
0
    while((p=strsep(&s, " \t\n")) != NULL) {
6129
0
      if(*p) {
6130
0
        if(!config_add_tag(cfg_parser->cfg, p))
6131
0
          yyerror("could not define-tag, "
6132
0
            "out of memory");
6133
0
      }
6134
0
    }
6135
0
    free((yyvsp[0].str));
6136
0
  }
6137
0
#line 6138 "util/configparser.c"
6138
0
    break;
6139
6140
0
  case 551:
6141
0
#line 2581 "./util/configparser.y"
6142
0
        {
6143
0
    size_t len = 0;
6144
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6145
0
      &len);
6146
0
    free((yyvsp[0].str));
6147
0
    OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
6148
0
    if(!bitlist) {
6149
0
      yyerror("could not parse tags, (define-tag them first)");
6150
0
      free((yyvsp[-1].str));
6151
0
    }
6152
0
    if(bitlist) {
6153
0
      if(!cfg_strbytelist_insert(
6154
0
        &cfg_parser->cfg->local_zone_tags,
6155
0
        (yyvsp[-1].str), bitlist, len)) {
6156
0
        yyerror("out of memory");
6157
0
        free((yyvsp[-1].str));
6158
0
      }
6159
0
    }
6160
0
  }
6161
0
#line 6162 "util/configparser.c"
6162
0
    break;
6163
6164
0
  case 552:
6165
0
#line 2602 "./util/configparser.y"
6166
0
        {
6167
0
    size_t len = 0;
6168
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6169
0
      &len);
6170
0
    free((yyvsp[0].str));
6171
0
    OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
6172
0
    if(!bitlist) {
6173
0
      yyerror("could not parse tags, (define-tag them first)");
6174
0
      free((yyvsp[-1].str));
6175
0
    }
6176
0
    if(bitlist) {
6177
0
      if(!cfg_strbytelist_insert(
6178
0
        &cfg_parser->cfg->acl_tags,
6179
0
        (yyvsp[-1].str), bitlist, len)) {
6180
0
        yyerror("out of memory");
6181
0
        free((yyvsp[-1].str));
6182
0
      }
6183
0
    }
6184
0
  }
6185
0
#line 6186 "util/configparser.c"
6186
0
    break;
6187
6188
0
  case 553:
6189
0
#line 2623 "./util/configparser.y"
6190
0
        {
6191
0
    OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6192
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
6193
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6194
0
      yyerror("out of memory");
6195
0
      free((yyvsp[-2].str));
6196
0
      free((yyvsp[-1].str));
6197
0
      free((yyvsp[0].str));
6198
0
    }
6199
0
  }
6200
0
#line 6201 "util/configparser.c"
6201
0
    break;
6202
6203
0
  case 554:
6204
0
#line 2635 "./util/configparser.y"
6205
0
        {
6206
0
    OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6207
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
6208
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6209
0
      yyerror("out of memory");
6210
0
      free((yyvsp[-2].str));
6211
0
      free((yyvsp[-1].str));
6212
0
      free((yyvsp[0].str));
6213
0
    }
6214
0
  }
6215
0
#line 6216 "util/configparser.c"
6216
0
    break;
6217
6218
0
  case 555:
6219
0
#line 2647 "./util/configparser.y"
6220
0
        {
6221
0
    OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6222
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
6223
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6224
0
      yyerror("out of memory");
6225
0
      free((yyvsp[-2].str));
6226
0
      free((yyvsp[-1].str));
6227
0
      free((yyvsp[0].str));
6228
0
    }
6229
0
  }
6230
0
#line 6231 "util/configparser.c"
6231
0
    break;
6232
6233
0
  case 556:
6234
0
#line 2659 "./util/configparser.y"
6235
0
        {
6236
0
    OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6237
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
6238
0
      (yyvsp[-1].str), (yyvsp[0].str))) {
6239
0
      yyerror("out of memory");
6240
0
    }
6241
0
  }
6242
0
#line 6243 "util/configparser.c"
6243
0
    break;
6244
6245
0
  case 557:
6246
0
#line 2668 "./util/configparser.y"
6247
0
        {
6248
0
    size_t len = 0;
6249
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6250
0
      &len);
6251
0
    free((yyvsp[0].str));
6252
0
    OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
6253
0
    if(!bitlist) {
6254
0
      yyerror("could not parse tags, (define-tag them first)");
6255
0
      free((yyvsp[-1].str));
6256
0
    }
6257
0
    if(bitlist) {
6258
0
      if(!cfg_strbytelist_insert(
6259
0
        &cfg_parser->cfg->interface_tags,
6260
0
        (yyvsp[-1].str), bitlist, len)) {
6261
0
        yyerror("out of memory");
6262
0
        free((yyvsp[-1].str));
6263
0
      }
6264
0
    }
6265
0
  }
6266
0
#line 6267 "util/configparser.c"
6267
0
    break;
6268
6269
0
  case 558:
6270
0
#line 2689 "./util/configparser.y"
6271
0
        {
6272
0
    OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6273
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
6274
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6275
0
      yyerror("out of memory");
6276
0
      free((yyvsp[-2].str));
6277
0
      free((yyvsp[-1].str));
6278
0
      free((yyvsp[0].str));
6279
0
    }
6280
0
  }
6281
0
#line 6282 "util/configparser.c"
6282
0
    break;
6283
6284
0
  case 559:
6285
0
#line 2701 "./util/configparser.y"
6286
0
        {
6287
0
    OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6288
0
    if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
6289
0
      (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6290
0
      yyerror("out of memory");
6291
0
      free((yyvsp[-2].str));
6292
0
      free((yyvsp[-1].str));
6293
0
      free((yyvsp[0].str));
6294
0
    }
6295
0
  }
6296
0
#line 6297 "util/configparser.c"
6297
0
    break;
6298
6299
0
  case 560:
6300
0
#line 2713 "./util/configparser.y"
6301
0
        {
6302
0
    OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6303
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
6304
0
      (yyvsp[-1].str), (yyvsp[0].str))) {
6305
0
      yyerror("out of memory");
6306
0
    }
6307
0
  }
6308
0
#line 6309 "util/configparser.c"
6309
0
    break;
6310
6311
0
  case 561:
6312
0
#line 2722 "./util/configparser.y"
6313
0
        {
6314
0
    size_t len = 0;
6315
0
    uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6316
0
      &len);
6317
0
    free((yyvsp[0].str));
6318
0
    OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6319
0
    if(!bitlist) {
6320
0
      yyerror("could not parse tags, (define-tag them first)");
6321
0
      free((yyvsp[-1].str));
6322
0
    }
6323
0
    if(bitlist) {
6324
0
      if(!cfg_strbytelist_insert(
6325
0
        &cfg_parser->cfg->respip_tags,
6326
0
        (yyvsp[-1].str), bitlist, len)) {
6327
0
        yyerror("out of memory");
6328
0
        free((yyvsp[-1].str));
6329
0
      }
6330
0
    }
6331
0
  }
6332
0
#line 6333 "util/configparser.c"
6333
0
    break;
6334
6335
0
  case 562:
6336
0
#line 2743 "./util/configparser.y"
6337
0
        {
6338
0
    OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6339
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6340
0
      yyerror("number expected");
6341
0
    else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6342
0
    free((yyvsp[0].str));
6343
0
  }
6344
0
#line 6345 "util/configparser.c"
6345
0
    break;
6346
6347
0
  case 563:
6348
0
#line 2752 "./util/configparser.y"
6349
0
        {
6350
0
    OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", (yyvsp[0].str)));
6351
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6352
0
      yyerror("number expected");
6353
0
    else cfg_parser->cfg->ip_ratelimit_cookie = atoi((yyvsp[0].str));
6354
0
    free((yyvsp[0].str));
6355
0
  }
6356
0
#line 6357 "util/configparser.c"
6357
0
    break;
6358
6359
0
  case 564:
6360
0
#line 2761 "./util/configparser.y"
6361
0
        {
6362
0
    OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6363
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6364
0
      yyerror("number expected");
6365
0
    else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6366
0
    free((yyvsp[0].str));
6367
0
  }
6368
0
#line 6369 "util/configparser.c"
6369
0
    break;
6370
6371
0
  case 565:
6372
0
#line 2770 "./util/configparser.y"
6373
0
        {
6374
0
    OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6375
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6376
0
      yyerror("memory size expected");
6377
0
    free((yyvsp[0].str));
6378
0
  }
6379
0
#line 6380 "util/configparser.c"
6380
0
    break;
6381
6382
0
  case 566:
6383
0
#line 2778 "./util/configparser.y"
6384
0
        {
6385
0
    OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6386
0
    if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6387
0
      yyerror("memory size expected");
6388
0
    free((yyvsp[0].str));
6389
0
  }
6390
0
#line 6391 "util/configparser.c"
6391
0
    break;
6392
6393
0
  case 567:
6394
0
#line 2786 "./util/configparser.y"
6395
0
        {
6396
0
    OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6397
0
    if(atoi((yyvsp[0].str)) == 0) {
6398
0
      yyerror("number expected");
6399
0
    } else {
6400
0
      cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6401
0
      if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6402
0
        yyerror("must be a power of 2");
6403
0
    }
6404
0
    free((yyvsp[0].str));
6405
0
  }
6406
0
#line 6407 "util/configparser.c"
6407
0
    break;
6408
6409
0
  case 568:
6410
0
#line 2799 "./util/configparser.y"
6411
0
        {
6412
0
    OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6413
0
    if(atoi((yyvsp[0].str)) == 0) {
6414
0
      yyerror("number expected");
6415
0
    } else {
6416
0
      cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6417
0
      if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6418
0
        yyerror("must be a power of 2");
6419
0
    }
6420
0
    free((yyvsp[0].str));
6421
0
  }
6422
0
#line 6423 "util/configparser.c"
6423
0
    break;
6424
6425
0
  case 569:
6426
0
#line 2812 "./util/configparser.y"
6427
0
        {
6428
0
    OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6429
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6430
0
      yyerror("number expected");
6431
0
      free((yyvsp[-1].str));
6432
0
      free((yyvsp[0].str));
6433
0
    } else {
6434
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->
6435
0
        ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6436
0
        fatal_exit("out of memory adding "
6437
0
          "ratelimit-for-domain");
6438
0
    }
6439
0
  }
6440
0
#line 6441 "util/configparser.c"
6441
0
    break;
6442
6443
0
  case 570:
6444
0
#line 2827 "./util/configparser.y"
6445
0
        {
6446
0
    OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6447
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6448
0
      yyerror("number expected");
6449
0
      free((yyvsp[-1].str));
6450
0
      free((yyvsp[0].str));
6451
0
    } else {
6452
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->
6453
0
        ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6454
0
        fatal_exit("out of memory adding "
6455
0
          "ratelimit-below-domain");
6456
0
    }
6457
0
  }
6458
0
#line 6459 "util/configparser.c"
6459
0
    break;
6460
6461
0
  case 571:
6462
0
#line 2842 "./util/configparser.y"
6463
0
        {
6464
0
    OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6465
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6466
0
      yyerror("number expected");
6467
0
    else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6468
0
    free((yyvsp[0].str));
6469
0
  }
6470
0
#line 6471 "util/configparser.c"
6471
0
    break;
6472
6473
0
  case 572:
6474
0
#line 2851 "./util/configparser.y"
6475
0
        {
6476
0
    OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6477
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6478
0
      yyerror("number expected");
6479
0
    else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6480
0
    free((yyvsp[0].str));
6481
0
  }
6482
0
#line 6483 "util/configparser.c"
6483
0
    break;
6484
6485
0
  case 573:
6486
0
#line 2860 "./util/configparser.y"
6487
0
        {
6488
0
    OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6489
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6490
0
      yyerror("expected yes or no.");
6491
0
    else cfg_parser->cfg->ip_ratelimit_backoff =
6492
0
      (strcmp((yyvsp[0].str), "yes")==0);
6493
0
    free((yyvsp[0].str));
6494
0
  }
6495
0
#line 6496 "util/configparser.c"
6496
0
    break;
6497
6498
0
  case 574:
6499
0
#line 2870 "./util/configparser.y"
6500
0
        {
6501
0
    OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6502
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6503
0
      yyerror("expected yes or no.");
6504
0
    else cfg_parser->cfg->ratelimit_backoff =
6505
0
      (strcmp((yyvsp[0].str), "yes")==0);
6506
0
    free((yyvsp[0].str));
6507
0
  }
6508
0
#line 6509 "util/configparser.c"
6509
0
    break;
6510
6511
0
  case 575:
6512
0
#line 2880 "./util/configparser.y"
6513
0
        {
6514
0
    OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6515
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6516
0
      yyerror("number expected");
6517
0
    else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6518
0
    free((yyvsp[0].str));
6519
0
  }
6520
0
#line 6521 "util/configparser.c"
6521
0
    break;
6522
6523
0
  case 576:
6524
0
#line 2889 "./util/configparser.y"
6525
0
        {
6526
0
    OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6527
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6528
0
      yyerror("number expected");
6529
0
    else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6530
0
    free((yyvsp[0].str));
6531
0
  }
6532
0
#line 6533 "util/configparser.c"
6533
0
    break;
6534
6535
0
  case 577:
6536
0
#line 2898 "./util/configparser.y"
6537
0
        {
6538
0
    OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6539
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6540
0
      yyerror("number expected");
6541
0
    else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6542
0
    free((yyvsp[0].str));
6543
0
  }
6544
0
#line 6545 "util/configparser.c"
6545
0
    break;
6546
6547
0
  case 578:
6548
0
#line 2907 "./util/configparser.y"
6549
0
        {
6550
0
    OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6551
0
    free((yyvsp[0].str));
6552
0
  }
6553
0
#line 6554 "util/configparser.c"
6554
0
    break;
6555
6556
0
  case 579:
6557
0
#line 2913 "./util/configparser.y"
6558
0
        {
6559
0
    OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6560
0
    if(atoi((yyvsp[0].str)) <= 0)
6561
0
      yyerror("number expected");
6562
0
    else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6563
0
    free((yyvsp[0].str));
6564
0
  }
6565
0
#line 6566 "util/configparser.c"
6566
0
    break;
6567
6568
0
  case 580:
6569
0
#line 2922 "./util/configparser.y"
6570
0
        {
6571
0
    OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6572
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6573
0
      yyerror("number expected");
6574
0
    else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6575
0
    free((yyvsp[0].str));
6576
0
  }
6577
0
#line 6578 "util/configparser.c"
6578
0
    break;
6579
6580
0
  case 581:
6581
0
#line 2931 "./util/configparser.y"
6582
0
        {
6583
0
    OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6584
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6585
0
      yyerror("expected yes or no.");
6586
0
    else cfg_parser->cfg->qname_minimisation =
6587
0
      (strcmp((yyvsp[0].str), "yes")==0);
6588
0
    free((yyvsp[0].str));
6589
0
  }
6590
0
#line 6591 "util/configparser.c"
6591
0
    break;
6592
6593
0
  case 582:
6594
0
#line 2941 "./util/configparser.y"
6595
0
        {
6596
0
    OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6597
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6598
0
      yyerror("expected yes or no.");
6599
0
    else cfg_parser->cfg->qname_minimisation_strict =
6600
0
      (strcmp((yyvsp[0].str), "yes")==0);
6601
0
    free((yyvsp[0].str));
6602
0
  }
6603
0
#line 6604 "util/configparser.c"
6604
0
    break;
6605
6606
0
  case 583:
6607
0
#line 2951 "./util/configparser.y"
6608
0
        {
6609
0
    OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6610
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6611
0
      yyerror("expected yes or no.");
6612
0
    else cfg_parser->cfg->pad_responses =
6613
0
      (strcmp((yyvsp[0].str), "yes")==0);
6614
0
    free((yyvsp[0].str));
6615
0
  }
6616
0
#line 6617 "util/configparser.c"
6617
0
    break;
6618
6619
0
  case 584:
6620
0
#line 2961 "./util/configparser.y"
6621
0
        {
6622
0
    OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6623
0
    if(atoi((yyvsp[0].str)) == 0)
6624
0
      yyerror("number expected");
6625
0
    else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6626
0
    free((yyvsp[0].str));
6627
0
  }
6628
0
#line 6629 "util/configparser.c"
6629
0
    break;
6630
6631
0
  case 585:
6632
0
#line 2970 "./util/configparser.y"
6633
0
        {
6634
0
    OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6635
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6636
0
      yyerror("expected yes or no.");
6637
0
    else cfg_parser->cfg->pad_queries =
6638
0
      (strcmp((yyvsp[0].str), "yes")==0);
6639
0
    free((yyvsp[0].str));
6640
0
  }
6641
0
#line 6642 "util/configparser.c"
6642
0
    break;
6643
6644
0
  case 586:
6645
0
#line 2980 "./util/configparser.y"
6646
0
        {
6647
0
    OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6648
0
    if(atoi((yyvsp[0].str)) == 0)
6649
0
      yyerror("number expected");
6650
0
    else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6651
0
    free((yyvsp[0].str));
6652
0
  }
6653
0
#line 6654 "util/configparser.c"
6654
0
    break;
6655
6656
0
  case 587:
6657
0
#line 2989 "./util/configparser.y"
6658
0
        {
6659
  #ifdef USE_IPSECMOD
6660
    OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6661
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6662
      yyerror("expected yes or no.");
6663
    else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6664
  #else
6665
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6666
0
  #endif
6667
0
    free((yyvsp[0].str));
6668
0
  }
6669
0
#line 6670 "util/configparser.c"
6670
0
    break;
6671
6672
0
  case 588:
6673
0
#line 3002 "./util/configparser.y"
6674
0
        {
6675
  #ifdef USE_IPSECMOD
6676
    OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6677
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6678
      yyerror("expected yes or no.");
6679
    else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6680
  #else
6681
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6682
0
  #endif
6683
0
    free((yyvsp[0].str));
6684
0
  }
6685
0
#line 6686 "util/configparser.c"
6686
0
    break;
6687
6688
0
  case 589:
6689
0
#line 3015 "./util/configparser.y"
6690
0
        {
6691
  #ifdef USE_IPSECMOD
6692
    OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6693
    free(cfg_parser->cfg->ipsecmod_hook);
6694
    cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6695
  #else
6696
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6697
0
    free((yyvsp[0].str));
6698
0
  #endif
6699
0
  }
6700
0
#line 6701 "util/configparser.c"
6701
0
    break;
6702
6703
0
  case 590:
6704
0
#line 3027 "./util/configparser.y"
6705
0
        {
6706
  #ifdef USE_IPSECMOD
6707
    OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6708
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6709
      yyerror("number expected");
6710
    else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6711
    free((yyvsp[0].str));
6712
  #else
6713
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6714
0
    free((yyvsp[0].str));
6715
0
  #endif
6716
0
  }
6717
0
#line 6718 "util/configparser.c"
6718
0
    break;
6719
6720
0
  case 591:
6721
0
#line 3041 "./util/configparser.y"
6722
0
        {
6723
  #ifdef USE_IPSECMOD
6724
    OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6725
    if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6726
      yyerror("out of memory");
6727
  #else
6728
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6729
0
    free((yyvsp[0].str));
6730
0
  #endif
6731
0
  }
6732
0
#line 6733 "util/configparser.c"
6733
0
    break;
6734
6735
0
  case 592:
6736
0
#line 3053 "./util/configparser.y"
6737
0
        {
6738
  #ifdef USE_IPSECMOD
6739
    OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6740
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6741
      yyerror("expected yes or no.");
6742
    else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6743
    free((yyvsp[0].str));
6744
  #else
6745
0
    OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6746
0
    free((yyvsp[0].str));
6747
0
  #endif
6748
0
  }
6749
0
#line 6750 "util/configparser.c"
6750
0
    break;
6751
6752
0
  case 593:
6753
0
#line 3067 "./util/configparser.y"
6754
0
        {
6755
0
    OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6756
0
    if(!cfg_str2list_insert(
6757
0
      &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6758
0
      fatal_exit("out of memory adding "
6759
0
        "edns-client-string");
6760
0
  }
6761
0
#line 6762 "util/configparser.c"
6762
0
    break;
6763
6764
0
  case 594:
6765
0
#line 3076 "./util/configparser.y"
6766
0
        {
6767
0
    OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6768
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6769
0
      yyerror("option code expected");
6770
0
    else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6771
0
      yyerror("option code must be in interval [0, 65535]");
6772
0
    else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6773
0
    free((yyvsp[0].str));
6774
0
  }
6775
0
#line 6776 "util/configparser.c"
6776
0
    break;
6777
6778
0
  case 595:
6779
0
#line 3087 "./util/configparser.y"
6780
0
        {
6781
0
    OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6782
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6783
0
      yyerror("expected yes or no.");
6784
0
    else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6785
0
    free((yyvsp[0].str));
6786
0
  }
6787
0
#line 6788 "util/configparser.c"
6788
0
    break;
6789
6790
0
  case 596:
6791
0
#line 3096 "./util/configparser.y"
6792
0
        {
6793
0
    OUTYY(("P(server_dns_error_reporting:%s)\n", (yyvsp[0].str)));
6794
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6795
0
      yyerror("expected yes or no.");
6796
0
    else cfg_parser->cfg->dns_error_reporting = (strcmp((yyvsp[0].str), "yes")==0);
6797
0
    free((yyvsp[0].str));
6798
0
  }
6799
0
#line 6800 "util/configparser.c"
6800
0
    break;
6801
6802
0
  case 597:
6803
0
#line 3105 "./util/configparser.y"
6804
0
        {
6805
0
    OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6806
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6807
0
      yyerror("out of memory");
6808
0
  }
6809
0
#line 6810 "util/configparser.c"
6810
0
    break;
6811
6812
0
  case 598:
6813
0
#line 3112 "./util/configparser.y"
6814
0
        {
6815
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6816
0
    if(cfg_parser->cfg->stubs->name)
6817
0
      yyerror("stub name override, there must be one name "
6818
0
        "for one stub-zone");
6819
0
    free(cfg_parser->cfg->stubs->name);
6820
0
    cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6821
0
  }
6822
0
#line 6823 "util/configparser.c"
6823
0
    break;
6824
6825
0
  case 599:
6826
0
#line 3122 "./util/configparser.y"
6827
0
        {
6828
0
    OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6829
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6830
0
      yyerror("out of memory");
6831
0
  }
6832
0
#line 6833 "util/configparser.c"
6833
0
    break;
6834
6835
0
  case 600:
6836
0
#line 3129 "./util/configparser.y"
6837
0
        {
6838
0
    OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6839
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6840
0
      yyerror("out of memory");
6841
0
  }
6842
0
#line 6843 "util/configparser.c"
6843
0
    break;
6844
6845
0
  case 601:
6846
0
#line 3136 "./util/configparser.y"
6847
0
        {
6848
0
    OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6849
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6850
0
      yyerror("expected yes or no.");
6851
0
    else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6852
0
    free((yyvsp[0].str));
6853
0
  }
6854
0
#line 6855 "util/configparser.c"
6855
0
    break;
6856
6857
0
  case 602:
6858
0
#line 3145 "./util/configparser.y"
6859
0
        {
6860
0
    OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6861
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6862
0
      yyerror("expected yes or no.");
6863
0
    else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6864
0
    free((yyvsp[0].str));
6865
0
  }
6866
0
#line 6867 "util/configparser.c"
6867
0
    break;
6868
6869
0
  case 603:
6870
0
#line 3154 "./util/configparser.y"
6871
0
        {
6872
0
    OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6873
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6874
0
      yyerror("expected yes or no.");
6875
0
    else cfg_parser->cfg->stubs->ssl_upstream =
6876
0
      (strcmp((yyvsp[0].str), "yes")==0);
6877
0
    free((yyvsp[0].str));
6878
0
  }
6879
0
#line 6880 "util/configparser.c"
6880
0
    break;
6881
6882
0
  case 604:
6883
0
#line 3164 "./util/configparser.y"
6884
0
        {
6885
0
                OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6886
0
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6887
0
                        yyerror("expected yes or no.");
6888
0
                else cfg_parser->cfg->stubs->tcp_upstream =
6889
0
                        (strcmp((yyvsp[0].str), "yes")==0);
6890
0
                free((yyvsp[0].str));
6891
0
        }
6892
0
#line 6893 "util/configparser.c"
6893
0
    break;
6894
6895
0
  case 605:
6896
0
#line 3174 "./util/configparser.y"
6897
0
        {
6898
0
    OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6899
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6900
0
      yyerror("expected yes or no.");
6901
0
    else cfg_parser->cfg->stubs->isprime =
6902
0
      (strcmp((yyvsp[0].str), "yes")==0);
6903
0
    free((yyvsp[0].str));
6904
0
  }
6905
0
#line 6906 "util/configparser.c"
6906
0
    break;
6907
6908
0
  case 606:
6909
0
#line 3184 "./util/configparser.y"
6910
0
        {
6911
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6912
0
    if(cfg_parser->cfg->forwards->name)
6913
0
      yyerror("forward name override, there must be one "
6914
0
        "name for one forward-zone");
6915
0
    free(cfg_parser->cfg->forwards->name);
6916
0
    cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6917
0
  }
6918
0
#line 6919 "util/configparser.c"
6919
0
    break;
6920
6921
0
  case 607:
6922
0
#line 3194 "./util/configparser.y"
6923
0
        {
6924
0
    OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6925
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6926
0
      yyerror("out of memory");
6927
0
  }
6928
0
#line 6929 "util/configparser.c"
6929
0
    break;
6930
6931
0
  case 608:
6932
0
#line 3201 "./util/configparser.y"
6933
0
        {
6934
0
    OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6935
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6936
0
      yyerror("out of memory");
6937
0
  }
6938
0
#line 6939 "util/configparser.c"
6939
0
    break;
6940
6941
0
  case 609:
6942
0
#line 3208 "./util/configparser.y"
6943
0
        {
6944
0
    OUTYY(("P(forward-first:%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->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6948
0
    free((yyvsp[0].str));
6949
0
  }
6950
0
#line 6951 "util/configparser.c"
6951
0
    break;
6952
6953
0
  case 610:
6954
0
#line 3217 "./util/configparser.y"
6955
0
        {
6956
0
    OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6957
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6958
0
      yyerror("expected yes or no.");
6959
0
    else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6960
0
    free((yyvsp[0].str));
6961
0
  }
6962
0
#line 6963 "util/configparser.c"
6963
0
    break;
6964
6965
0
  case 611:
6966
0
#line 3226 "./util/configparser.y"
6967
0
        {
6968
0
    OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6969
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6970
0
      yyerror("expected yes or no.");
6971
0
    else cfg_parser->cfg->forwards->ssl_upstream =
6972
0
      (strcmp((yyvsp[0].str), "yes")==0);
6973
0
    free((yyvsp[0].str));
6974
0
  }
6975
0
#line 6976 "util/configparser.c"
6976
0
    break;
6977
6978
0
  case 612:
6979
0
#line 3236 "./util/configparser.y"
6980
0
        {
6981
0
                OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6982
0
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6983
0
                        yyerror("expected yes or no.");
6984
0
                else cfg_parser->cfg->forwards->tcp_upstream =
6985
0
                        (strcmp((yyvsp[0].str), "yes")==0);
6986
0
                free((yyvsp[0].str));
6987
0
        }
6988
0
#line 6989 "util/configparser.c"
6989
0
    break;
6990
6991
0
  case 613:
6992
0
#line 3246 "./util/configparser.y"
6993
0
        {
6994
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6995
0
    if(cfg_parser->cfg->auths->name)
6996
0
      yyerror("auth name override, there must be one name "
6997
0
        "for one auth-zone");
6998
0
    free(cfg_parser->cfg->auths->name);
6999
0
    cfg_parser->cfg->auths->name = (yyvsp[0].str);
7000
0
  }
7001
0
#line 7002 "util/configparser.c"
7002
0
    break;
7003
7004
0
  case 614:
7005
0
#line 3256 "./util/configparser.y"
7006
0
        {
7007
0
    OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
7008
0
    free(cfg_parser->cfg->auths->zonefile);
7009
0
    cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
7010
0
  }
7011
0
#line 7012 "util/configparser.c"
7012
0
    break;
7013
7014
0
  case 615:
7015
0
#line 3263 "./util/configparser.y"
7016
0
        {
7017
0
    OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
7018
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
7019
0
      yyerror("out of memory");
7020
0
  }
7021
0
#line 7022 "util/configparser.c"
7022
0
    break;
7023
7024
0
  case 616:
7025
0
#line 3270 "./util/configparser.y"
7026
0
        {
7027
0
    OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
7028
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
7029
0
      yyerror("out of memory");
7030
0
  }
7031
0
#line 7032 "util/configparser.c"
7032
0
    break;
7033
7034
0
  case 617:
7035
0
#line 3277 "./util/configparser.y"
7036
0
        {
7037
0
    OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
7038
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
7039
0
      (yyvsp[0].str)))
7040
0
      yyerror("out of memory");
7041
0
  }
7042
0
#line 7043 "util/configparser.c"
7043
0
    break;
7044
7045
0
  case 618:
7046
0
#line 3285 "./util/configparser.y"
7047
0
        {
7048
0
    OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
7049
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7050
0
      yyerror("expected yes or no.");
7051
0
    else cfg_parser->cfg->auths->zonemd_check =
7052
0
      (strcmp((yyvsp[0].str), "yes")==0);
7053
0
    free((yyvsp[0].str));
7054
0
  }
7055
0
#line 7056 "util/configparser.c"
7056
0
    break;
7057
7058
0
  case 619:
7059
0
#line 3295 "./util/configparser.y"
7060
0
        {
7061
0
    OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
7062
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7063
0
      yyerror("expected yes or no.");
7064
0
    else cfg_parser->cfg->auths->zonemd_reject_absence =
7065
0
      (strcmp((yyvsp[0].str), "yes")==0);
7066
0
    free((yyvsp[0].str));
7067
0
  }
7068
0
#line 7069 "util/configparser.c"
7069
0
    break;
7070
7071
0
  case 620:
7072
0
#line 3305 "./util/configparser.y"
7073
0
        {
7074
0
    OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
7075
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7076
0
      yyerror("expected yes or no.");
7077
0
    else cfg_parser->cfg->auths->for_downstream =
7078
0
      (strcmp((yyvsp[0].str), "yes")==0);
7079
0
    free((yyvsp[0].str));
7080
0
  }
7081
0
#line 7082 "util/configparser.c"
7082
0
    break;
7083
7084
0
  case 621:
7085
0
#line 3315 "./util/configparser.y"
7086
0
        {
7087
0
    OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
7088
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7089
0
      yyerror("expected yes or no.");
7090
0
    else cfg_parser->cfg->auths->for_upstream =
7091
0
      (strcmp((yyvsp[0].str), "yes")==0);
7092
0
    free((yyvsp[0].str));
7093
0
  }
7094
0
#line 7095 "util/configparser.c"
7095
0
    break;
7096
7097
0
  case 622:
7098
0
#line 3325 "./util/configparser.y"
7099
0
        {
7100
0
    OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
7101
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7102
0
      yyerror("expected yes or no.");
7103
0
    else cfg_parser->cfg->auths->fallback_enabled =
7104
0
      (strcmp((yyvsp[0].str), "yes")==0);
7105
0
    free((yyvsp[0].str));
7106
0
  }
7107
0
#line 7108 "util/configparser.c"
7108
0
    break;
7109
7110
0
  case 623:
7111
0
#line 3335 "./util/configparser.y"
7112
0
        {
7113
0
    OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
7114
0
    if(cfg_parser->cfg->views->name)
7115
0
      yyerror("view name override, there must be one "
7116
0
        "name for one view");
7117
0
    free(cfg_parser->cfg->views->name);
7118
0
    cfg_parser->cfg->views->name = (yyvsp[0].str);
7119
0
  }
7120
0
#line 7121 "util/configparser.c"
7121
0
    break;
7122
7123
0
  case 624:
7124
0
#line 3345 "./util/configparser.y"
7125
0
        {
7126
0
    OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7127
0
    if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
7128
0
       strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
7129
0
       strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
7130
0
       && strcmp((yyvsp[0].str), "typetransparent")!=0
7131
0
       && strcmp((yyvsp[0].str), "always_transparent")!=0
7132
0
       && strcmp((yyvsp[0].str), "always_refuse")!=0
7133
0
       && strcmp((yyvsp[0].str), "always_nxdomain")!=0
7134
0
       && strcmp((yyvsp[0].str), "always_nodata")!=0
7135
0
       && strcmp((yyvsp[0].str), "always_deny")!=0
7136
0
       && strcmp((yyvsp[0].str), "always_null")!=0
7137
0
       && strcmp((yyvsp[0].str), "noview")!=0
7138
0
       && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
7139
0
       && strcmp((yyvsp[0].str), "inform_redirect") != 0
7140
0
       && strcmp((yyvsp[0].str), "ipset") != 0) {
7141
0
      yyerror("local-zone type: expected static, deny, "
7142
0
        "refuse, redirect, transparent, "
7143
0
        "typetransparent, inform, inform_deny, "
7144
0
        "inform_redirect, always_transparent, "
7145
0
        "always_refuse, always_nxdomain, "
7146
0
        "always_nodata, always_deny, always_null, "
7147
0
        "noview, nodefault or ipset");
7148
0
      free((yyvsp[-1].str));
7149
0
      free((yyvsp[0].str));
7150
0
    } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
7151
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->views->
7152
0
        local_zones_nodefault, (yyvsp[-1].str)))
7153
0
        fatal_exit("out of memory adding local-zone");
7154
0
      free((yyvsp[0].str));
7155
#ifdef USE_IPSET
7156
    } else if(strcmp((yyvsp[0].str), "ipset")==0) {
7157
      size_t len = strlen((yyvsp[-1].str));
7158
      /* Make sure to add the trailing dot.
7159
       * These are str compared to domain names. */
7160
      if((yyvsp[-1].str)[len-1] != '.') {
7161
        if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
7162
          fatal_exit("out of memory adding local-zone");
7163
        }
7164
        (yyvsp[-1].str)[len] = '.';
7165
        (yyvsp[-1].str)[len+1] = 0;
7166
      }
7167
      if(!cfg_strlist_insert(&cfg_parser->cfg->views->
7168
        local_zones_ipset, (yyvsp[-1].str)))
7169
        fatal_exit("out of memory adding local-zone");
7170
      free((yyvsp[0].str));
7171
#endif
7172
0
    } else {
7173
0
      if(!cfg_str2list_insert(
7174
0
        &cfg_parser->cfg->views->local_zones,
7175
0
        (yyvsp[-1].str), (yyvsp[0].str)))
7176
0
        fatal_exit("out of memory adding local-zone");
7177
0
    }
7178
0
  }
7179
0
#line 7180 "util/configparser.c"
7180
0
    break;
7181
7182
0
  case 625:
7183
0
#line 3401 "./util/configparser.y"
7184
0
        {
7185
0
    OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7186
0
    validate_respip_action((yyvsp[0].str));
7187
0
    if(!cfg_str2list_insert(
7188
0
      &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
7189
0
      fatal_exit("out of memory adding per-view "
7190
0
        "response-ip action");
7191
0
  }
7192
0
#line 7193 "util/configparser.c"
7193
0
    break;
7194
7195
0
  case 626:
7196
0
#line 3411 "./util/configparser.y"
7197
0
        {
7198
0
    OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
7199
0
    if(!cfg_str2list_insert(
7200
0
      &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
7201
0
      fatal_exit("out of memory adding response-ip-data");
7202
0
  }
7203
0
#line 7204 "util/configparser.c"
7204
0
    break;
7205
7206
0
  case 627:
7207
0
#line 3419 "./util/configparser.y"
7208
0
        {
7209
0
    OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
7210
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
7211
0
      fatal_exit("out of memory adding local-data");
7212
0
    }
7213
0
  }
7214
0
#line 7215 "util/configparser.c"
7215
0
    break;
7216
7217
0
  case 628:
7218
0
#line 3427 "./util/configparser.y"
7219
0
        {
7220
0
    char* ptr;
7221
0
    OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
7222
0
    ptr = cfg_ptr_reverse((yyvsp[0].str));
7223
0
    free((yyvsp[0].str));
7224
0
    if(ptr) {
7225
0
      if(!cfg_strlist_insert(&cfg_parser->cfg->views->
7226
0
        local_data, ptr))
7227
0
        fatal_exit("out of memory adding local-data");
7228
0
    } else {
7229
0
      yyerror("local-data-ptr could not be reversed");
7230
0
    }
7231
0
  }
7232
0
#line 7233 "util/configparser.c"
7233
0
    break;
7234
7235
0
  case 629:
7236
0
#line 3442 "./util/configparser.y"
7237
0
        {
7238
0
    OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
7239
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7240
0
      yyerror("expected yes or no.");
7241
0
    else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
7242
0
    free((yyvsp[0].str));
7243
0
  }
7244
0
#line 7245 "util/configparser.c"
7245
0
    break;
7246
7247
0
  case 630:
7248
0
#line 3451 "./util/configparser.y"
7249
0
        {
7250
0
    OUTYY(("\nP(remote-control:)\n"));
7251
0
    cfg_parser->started_toplevel = 1;
7252
0
  }
7253
0
#line 7254 "util/configparser.c"
7254
0
    break;
7255
7256
0
  case 641:
7257
0
#line 3463 "./util/configparser.y"
7258
0
        {
7259
0
    OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
7260
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7261
0
      yyerror("expected yes or no.");
7262
0
    else cfg_parser->cfg->remote_control_enable =
7263
0
      (strcmp((yyvsp[0].str), "yes")==0);
7264
0
    free((yyvsp[0].str));
7265
0
  }
7266
0
#line 7267 "util/configparser.c"
7267
0
    break;
7268
7269
0
  case 642:
7270
0
#line 3473 "./util/configparser.y"
7271
0
        {
7272
0
    OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
7273
0
    if(atoi((yyvsp[0].str)) == 0)
7274
0
      yyerror("control port number expected");
7275
0
    else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
7276
0
    free((yyvsp[0].str));
7277
0
  }
7278
0
#line 7279 "util/configparser.c"
7279
0
    break;
7280
7281
0
  case 643:
7282
0
#line 3482 "./util/configparser.y"
7283
0
        {
7284
0
    OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
7285
0
    if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
7286
0
      yyerror("out of memory");
7287
0
  }
7288
0
#line 7289 "util/configparser.c"
7289
0
    break;
7290
7291
0
  case 644:
7292
0
#line 3489 "./util/configparser.y"
7293
0
        {
7294
0
    OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
7295
0
    cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
7296
0
    free((yyvsp[0].str));
7297
0
  }
7298
0
#line 7299 "util/configparser.c"
7299
0
    break;
7300
7301
0
  case 645:
7302
0
#line 3496 "./util/configparser.y"
7303
0
        {
7304
0
    OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
7305
0
    free(cfg_parser->cfg->server_key_file);
7306
0
    cfg_parser->cfg->server_key_file = (yyvsp[0].str);
7307
0
  }
7308
0
#line 7309 "util/configparser.c"
7309
0
    break;
7310
7311
0
  case 646:
7312
0
#line 3503 "./util/configparser.y"
7313
0
        {
7314
0
    OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
7315
0
    free(cfg_parser->cfg->server_cert_file);
7316
0
    cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
7317
0
  }
7318
0
#line 7319 "util/configparser.c"
7319
0
    break;
7320
7321
0
  case 647:
7322
0
#line 3510 "./util/configparser.y"
7323
0
        {
7324
0
    OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
7325
0
    free(cfg_parser->cfg->control_key_file);
7326
0
    cfg_parser->cfg->control_key_file = (yyvsp[0].str);
7327
0
  }
7328
0
#line 7329 "util/configparser.c"
7329
0
    break;
7330
7331
0
  case 648:
7332
0
#line 3517 "./util/configparser.y"
7333
0
        {
7334
0
    OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
7335
0
    free(cfg_parser->cfg->control_cert_file);
7336
0
    cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
7337
0
  }
7338
0
#line 7339 "util/configparser.c"
7339
0
    break;
7340
7341
0
  case 649:
7342
0
#line 3524 "./util/configparser.y"
7343
0
        {
7344
0
    OUTYY(("\nP(dnstap:)\n"));
7345
0
    cfg_parser->started_toplevel = 1;
7346
0
  }
7347
0
#line 7348 "util/configparser.c"
7348
0
    break;
7349
7350
0
  case 672:
7351
0
#line 3546 "./util/configparser.y"
7352
0
        {
7353
0
    OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
7354
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7355
0
      yyerror("expected yes or no.");
7356
0
    else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
7357
0
    free((yyvsp[0].str));
7358
0
  }
7359
0
#line 7360 "util/configparser.c"
7360
0
    break;
7361
7362
0
  case 673:
7363
0
#line 3555 "./util/configparser.y"
7364
0
        {
7365
0
    OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7366
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7367
0
      yyerror("expected yes or no.");
7368
0
    else cfg_parser->cfg->dnstap_bidirectional =
7369
0
      (strcmp((yyvsp[0].str), "yes")==0);
7370
0
    free((yyvsp[0].str));
7371
0
  }
7372
0
#line 7373 "util/configparser.c"
7373
0
    break;
7374
7375
0
  case 674:
7376
0
#line 3565 "./util/configparser.y"
7377
0
        {
7378
0
    OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7379
0
    free(cfg_parser->cfg->dnstap_socket_path);
7380
0
    cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7381
0
  }
7382
0
#line 7383 "util/configparser.c"
7383
0
    break;
7384
7385
0
  case 675:
7386
0
#line 3572 "./util/configparser.y"
7387
0
        {
7388
0
    OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7389
0
    free(cfg_parser->cfg->dnstap_ip);
7390
0
    cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7391
0
  }
7392
0
#line 7393 "util/configparser.c"
7393
0
    break;
7394
7395
0
  case 676:
7396
0
#line 3579 "./util/configparser.y"
7397
0
        {
7398
0
    OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7399
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7400
0
      yyerror("expected yes or no.");
7401
0
    else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7402
0
    free((yyvsp[0].str));
7403
0
  }
7404
0
#line 7405 "util/configparser.c"
7405
0
    break;
7406
7407
0
  case 677:
7408
0
#line 3588 "./util/configparser.y"
7409
0
        {
7410
0
    OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7411
0
    free(cfg_parser->cfg->dnstap_tls_server_name);
7412
0
    cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7413
0
  }
7414
0
#line 7415 "util/configparser.c"
7415
0
    break;
7416
7417
0
  case 678:
7418
0
#line 3595 "./util/configparser.y"
7419
0
        {
7420
0
    OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7421
0
    free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7422
0
    cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7423
0
  }
7424
0
#line 7425 "util/configparser.c"
7425
0
    break;
7426
7427
0
  case 679:
7428
0
#line 3602 "./util/configparser.y"
7429
0
        {
7430
0
    OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7431
0
    free(cfg_parser->cfg->dnstap_tls_client_key_file);
7432
0
    cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7433
0
  }
7434
0
#line 7435 "util/configparser.c"
7435
0
    break;
7436
7437
0
  case 680:
7438
0
#line 3609 "./util/configparser.y"
7439
0
        {
7440
0
    OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7441
0
    free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7442
0
    cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7443
0
  }
7444
0
#line 7445 "util/configparser.c"
7445
0
    break;
7446
7447
0
  case 681:
7448
0
#line 3616 "./util/configparser.y"
7449
0
        {
7450
0
    OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7451
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7452
0
      yyerror("expected yes or no.");
7453
0
    else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7454
0
    free((yyvsp[0].str));
7455
0
  }
7456
0
#line 7457 "util/configparser.c"
7457
0
    break;
7458
7459
0
  case 682:
7460
0
#line 3625 "./util/configparser.y"
7461
0
        {
7462
0
    OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7463
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7464
0
      yyerror("expected yes or no.");
7465
0
    else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7466
0
    free((yyvsp[0].str));
7467
0
  }
7468
0
#line 7469 "util/configparser.c"
7469
0
    break;
7470
7471
0
  case 683:
7472
0
#line 3634 "./util/configparser.y"
7473
0
        {
7474
0
    OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7475
0
    free(cfg_parser->cfg->dnstap_identity);
7476
0
    cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7477
0
  }
7478
0
#line 7479 "util/configparser.c"
7479
0
    break;
7480
7481
0
  case 684:
7482
0
#line 3641 "./util/configparser.y"
7483
0
        {
7484
0
    OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7485
0
    free(cfg_parser->cfg->dnstap_version);
7486
0
    cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7487
0
  }
7488
0
#line 7489 "util/configparser.c"
7489
0
    break;
7490
7491
0
  case 685:
7492
0
#line 3648 "./util/configparser.y"
7493
0
        {
7494
0
    OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7495
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7496
0
      yyerror("expected yes or no.");
7497
0
    else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7498
0
      (strcmp((yyvsp[0].str), "yes")==0);
7499
0
    free((yyvsp[0].str));
7500
0
  }
7501
0
#line 7502 "util/configparser.c"
7502
0
    break;
7503
7504
0
  case 686:
7505
0
#line 3658 "./util/configparser.y"
7506
0
        {
7507
0
    OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7508
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7509
0
      yyerror("expected yes or no.");
7510
0
    else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7511
0
      (strcmp((yyvsp[0].str), "yes")==0);
7512
0
    free((yyvsp[0].str));
7513
0
  }
7514
0
#line 7515 "util/configparser.c"
7515
0
    break;
7516
7517
0
  case 687:
7518
0
#line 3668 "./util/configparser.y"
7519
0
        {
7520
0
    OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7521
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7522
0
      yyerror("expected yes or no.");
7523
0
    else cfg_parser->cfg->dnstap_log_client_query_messages =
7524
0
      (strcmp((yyvsp[0].str), "yes")==0);
7525
0
    free((yyvsp[0].str));
7526
0
  }
7527
0
#line 7528 "util/configparser.c"
7528
0
    break;
7529
7530
0
  case 688:
7531
0
#line 3678 "./util/configparser.y"
7532
0
        {
7533
0
    OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7534
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7535
0
      yyerror("expected yes or no.");
7536
0
    else cfg_parser->cfg->dnstap_log_client_response_messages =
7537
0
      (strcmp((yyvsp[0].str), "yes")==0);
7538
0
    free((yyvsp[0].str));
7539
0
  }
7540
0
#line 7541 "util/configparser.c"
7541
0
    break;
7542
7543
0
  case 689:
7544
0
#line 3688 "./util/configparser.y"
7545
0
        {
7546
0
    OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7547
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7548
0
      yyerror("expected yes or no.");
7549
0
    else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7550
0
      (strcmp((yyvsp[0].str), "yes")==0);
7551
0
    free((yyvsp[0].str));
7552
0
  }
7553
0
#line 7554 "util/configparser.c"
7554
0
    break;
7555
7556
0
  case 690:
7557
0
#line 3698 "./util/configparser.y"
7558
0
        {
7559
0
    OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7560
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7561
0
      yyerror("expected yes or no.");
7562
0
    else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7563
0
      (strcmp((yyvsp[0].str), "yes")==0);
7564
0
    free((yyvsp[0].str));
7565
0
  }
7566
0
#line 7567 "util/configparser.c"
7567
0
    break;
7568
7569
0
  case 691:
7570
0
#line 3708 "./util/configparser.y"
7571
0
        {
7572
0
    OUTYY(("P(dt_dnstap_sample_rate:%s)\n", (yyvsp[0].str)));
7573
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7574
0
      yyerror("number expected");
7575
0
    else if(atoi((yyvsp[0].str)) < 0)
7576
0
      yyerror("dnstap sample rate too small");
7577
0
    else  cfg_parser->cfg->dnstap_sample_rate = atoi((yyvsp[0].str));
7578
0
    free((yyvsp[0].str));
7579
0
  }
7580
0
#line 7581 "util/configparser.c"
7581
0
    break;
7582
7583
0
  case 692:
7584
0
#line 3719 "./util/configparser.y"
7585
0
        {
7586
0
    OUTYY(("\nP(python:)\n"));
7587
0
    cfg_parser->started_toplevel = 1;
7588
0
  }
7589
0
#line 7590 "util/configparser.c"
7590
0
    break;
7591
7592
0
  case 696:
7593
0
#line 3729 "./util/configparser.y"
7594
0
        {
7595
0
    OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7596
0
    if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7597
0
      yyerror("out of memory");
7598
0
  }
7599
0
#line 7600 "util/configparser.c"
7600
0
    break;
7601
7602
0
  case 697:
7603
0
#line 3736 "./util/configparser.y"
7604
0
        {
7605
0
    OUTYY(("\nP(dynlib:)\n"));
7606
0
    cfg_parser->started_toplevel = 1;
7607
0
  }
7608
0
#line 7609 "util/configparser.c"
7609
0
    break;
7610
7611
0
  case 701:
7612
0
#line 3746 "./util/configparser.y"
7613
0
        {
7614
0
    OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7615
0
    if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7616
0
      yyerror("out of memory");
7617
0
  }
7618
0
#line 7619 "util/configparser.c"
7619
0
    break;
7620
7621
0
  case 702:
7622
0
#line 3753 "./util/configparser.y"
7623
0
        {
7624
0
    OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7625
0
    if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7626
0
      yyerror("expected yes or no.");
7627
0
    else cfg_parser->cfg->disable_dnssec_lame_check =
7628
0
      (strcmp((yyvsp[0].str), "yes")==0);
7629
0
    free((yyvsp[0].str));
7630
0
  }
7631
0
#line 7632 "util/configparser.c"
7632
0
    break;
7633
7634
0
  case 703:
7635
0
#line 3763 "./util/configparser.y"
7636
0
        {
7637
0
    OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7638
0
    free(cfg_parser->cfg->log_identity);
7639
0
    cfg_parser->cfg->log_identity = (yyvsp[0].str);
7640
0
  }
7641
0
#line 7642 "util/configparser.c"
7642
0
    break;
7643
7644
0
  case 704:
7645
0
#line 3770 "./util/configparser.y"
7646
0
        {
7647
0
    OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7648
0
    validate_respip_action((yyvsp[0].str));
7649
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7650
0
      (yyvsp[-1].str), (yyvsp[0].str)))
7651
0
      fatal_exit("out of memory adding response-ip");
7652
0
  }
7653
0
#line 7654 "util/configparser.c"
7654
0
    break;
7655
7656
0
  case 705:
7657
0
#line 3779 "./util/configparser.y"
7658
0
        {
7659
0
    OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7660
0
    if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7661
0
      (yyvsp[-1].str), (yyvsp[0].str)))
7662
0
      fatal_exit("out of memory adding response-ip-data");
7663
0
  }
7664
0
#line 7665 "util/configparser.c"
7665
0
    break;
7666
7667
0
  case 706:
7668
0
#line 3787 "./util/configparser.y"
7669
0
        {
7670
0
    OUTYY(("\nP(dnscrypt:)\n"));
7671
0
    cfg_parser->started_toplevel = 1;
7672
0
  }
7673
0
#line 7674 "util/configparser.c"
7674
0
    break;
7675
7676
0
  case 719:
7677
0
#line 3804 "./util/configparser.y"
7678
0
        {
7679
0
    OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7680
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7681
0
      yyerror("expected yes or no.");
7682
0
    else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7683
0
    free((yyvsp[0].str));
7684
0
  }
7685
0
#line 7686 "util/configparser.c"
7686
0
    break;
7687
7688
0
  case 720:
7689
0
#line 3813 "./util/configparser.y"
7690
0
        {
7691
0
    OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7692
0
    if(atoi((yyvsp[0].str)) == 0)
7693
0
      yyerror("port number expected");
7694
0
    else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7695
0
    free((yyvsp[0].str));
7696
0
  }
7697
0
#line 7698 "util/configparser.c"
7698
0
    break;
7699
7700
0
  case 721:
7701
0
#line 3822 "./util/configparser.y"
7702
0
        {
7703
0
    OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7704
0
    free(cfg_parser->cfg->dnscrypt_provider);
7705
0
    cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7706
0
  }
7707
0
#line 7708 "util/configparser.c"
7708
0
    break;
7709
7710
0
  case 722:
7711
0
#line 3829 "./util/configparser.y"
7712
0
        {
7713
0
    OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7714
0
    if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7715
0
      log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7716
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7717
0
      fatal_exit("out of memory adding dnscrypt-provider-cert");
7718
0
  }
7719
0
#line 7720 "util/configparser.c"
7720
0
    break;
7721
7722
0
  case 723:
7723
0
#line 3838 "./util/configparser.y"
7724
0
        {
7725
0
    OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7726
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7727
0
      fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7728
0
  }
7729
0
#line 7730 "util/configparser.c"
7730
0
    break;
7731
7732
0
  case 724:
7733
0
#line 3845 "./util/configparser.y"
7734
0
        {
7735
0
    OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7736
0
    if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7737
0
      log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7738
0
    if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7739
0
      fatal_exit("out of memory adding dnscrypt-secret-key");
7740
0
  }
7741
0
#line 7742 "util/configparser.c"
7742
0
    break;
7743
7744
0
  case 725:
7745
0
#line 3854 "./util/configparser.y"
7746
0
  {
7747
0
  OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7748
0
  if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7749
0
    yyerror("memory size expected");
7750
0
  free((yyvsp[0].str));
7751
0
  }
7752
0
#line 7753 "util/configparser.c"
7753
0
    break;
7754
7755
0
  case 726:
7756
0
#line 3862 "./util/configparser.y"
7757
0
  {
7758
0
  OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7759
0
  if(atoi((yyvsp[0].str)) == 0) {
7760
0
    yyerror("number expected");
7761
0
  } else {
7762
0
    cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7763
0
    if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7764
0
      yyerror("must be a power of 2");
7765
0
  }
7766
0
  free((yyvsp[0].str));
7767
0
  }
7768
0
#line 7769 "util/configparser.c"
7769
0
    break;
7770
7771
0
  case 727:
7772
0
#line 3875 "./util/configparser.y"
7773
0
  {
7774
0
  OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7775
0
  if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7776
0
    yyerror("memory size expected");
7777
0
  free((yyvsp[0].str));
7778
0
  }
7779
0
#line 7780 "util/configparser.c"
7780
0
    break;
7781
7782
0
  case 728:
7783
0
#line 3883 "./util/configparser.y"
7784
0
  {
7785
0
  OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7786
0
  if(atoi((yyvsp[0].str)) == 0) {
7787
0
    yyerror("number expected");
7788
0
  } else {
7789
0
    cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7790
0
    if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7791
0
      yyerror("must be a power of 2");
7792
0
  }
7793
0
  free((yyvsp[0].str));
7794
0
  }
7795
0
#line 7796 "util/configparser.c"
7796
0
    break;
7797
7798
0
  case 729:
7799
0
#line 3896 "./util/configparser.y"
7800
0
        {
7801
0
    OUTYY(("\nP(cachedb:)\n"));
7802
0
    cfg_parser->started_toplevel = 1;
7803
0
  }
7804
0
#line 7805 "util/configparser.c"
7805
0
    break;
7806
7807
0
  case 753:
7808
0
#line 3916 "./util/configparser.y"
7809
0
        {
7810
  #ifdef USE_CACHEDB
7811
    OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7812
    free(cfg_parser->cfg->cachedb_backend);
7813
    cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7814
  #else
7815
0
    OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7816
0
    free((yyvsp[0].str));
7817
0
  #endif
7818
0
  }
7819
0
#line 7820 "util/configparser.c"
7820
0
    break;
7821
7822
0
  case 754:
7823
0
#line 3928 "./util/configparser.y"
7824
0
        {
7825
  #ifdef USE_CACHEDB
7826
    OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7827
    free(cfg_parser->cfg->cachedb_secret);
7828
    cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7829
  #else
7830
0
    OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7831
0
    free((yyvsp[0].str));
7832
0
  #endif
7833
0
  }
7834
0
#line 7835 "util/configparser.c"
7835
0
    break;
7836
7837
0
  case 755:
7838
0
#line 3940 "./util/configparser.y"
7839
0
        {
7840
  #ifdef USE_CACHEDB
7841
    OUTYY(("P(cachedb_no_store:%s)\n", (yyvsp[0].str)));
7842
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7843
      yyerror("expected yes or no.");
7844
    else cfg_parser->cfg->cachedb_no_store = (strcmp((yyvsp[0].str), "yes")==0);
7845
  #else
7846
0
    OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7847
0
  #endif
7848
0
    free((yyvsp[0].str));
7849
0
  }
7850
0
#line 7851 "util/configparser.c"
7851
0
    break;
7852
7853
0
  case 756:
7854
0
#line 3953 "./util/configparser.y"
7855
0
        {
7856
  #ifdef USE_CACHEDB
7857
    OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", (yyvsp[0].str)));
7858
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7859
      yyerror("expected yes or no.");
7860
    else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
7861
  #else
7862
0
    OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7863
0
  #endif
7864
0
    free((yyvsp[0].str));
7865
0
  }
7866
0
#line 7867 "util/configparser.c"
7867
0
    break;
7868
7869
0
  case 757:
7870
0
#line 3966 "./util/configparser.y"
7871
0
        {
7872
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7873
    OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7874
    free(cfg_parser->cfg->redis_server_host);
7875
    cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7876
  #else
7877
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7878
0
    free((yyvsp[0].str));
7879
0
  #endif
7880
0
  }
7881
0
#line 7882 "util/configparser.c"
7882
0
    break;
7883
7884
0
  case 758:
7885
0
#line 3978 "./util/configparser.y"
7886
0
        {
7887
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7888
    OUTYY(("P(redis_replica_server_host:%s)\n", (yyvsp[0].str)));
7889
    free(cfg_parser->cfg->redis_replica_server_host);
7890
    cfg_parser->cfg->redis_replica_server_host = (yyvsp[0].str);
7891
  #else
7892
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7893
0
    free((yyvsp[0].str));
7894
0
  #endif
7895
0
  }
7896
0
#line 7897 "util/configparser.c"
7897
0
    break;
7898
7899
0
  case 759:
7900
0
#line 3990 "./util/configparser.y"
7901
0
        {
7902
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7903
    int port;
7904
    OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7905
    port = atoi((yyvsp[0].str));
7906
    if(port == 0 || port < 0 || port > 65535)
7907
      yyerror("valid redis server port number expected");
7908
    else cfg_parser->cfg->redis_server_port = port;
7909
  #else
7910
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7911
0
  #endif
7912
0
    free((yyvsp[0].str));
7913
0
  }
7914
0
#line 7915 "util/configparser.c"
7915
0
    break;
7916
7917
0
  case 760:
7918
0
#line 4005 "./util/configparser.y"
7919
0
        {
7920
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7921
    int port;
7922
    OUTYY(("P(redis_replica_server_port:%s)\n", (yyvsp[0].str)));
7923
    port = atoi((yyvsp[0].str));
7924
    if(port == 0 || port < 0 || port > 65535)
7925
      yyerror("valid redis server port number expected");
7926
    else cfg_parser->cfg->redis_replica_server_port = port;
7927
  #else
7928
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7929
0
  #endif
7930
0
    free((yyvsp[0].str));
7931
0
  }
7932
0
#line 7933 "util/configparser.c"
7933
0
    break;
7934
7935
0
  case 761:
7936
0
#line 4020 "./util/configparser.y"
7937
0
        {
7938
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7939
    OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7940
    free(cfg_parser->cfg->redis_server_path);
7941
    cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7942
  #else
7943
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7944
0
    free((yyvsp[0].str));
7945
0
  #endif
7946
0
  }
7947
0
#line 7948 "util/configparser.c"
7948
0
    break;
7949
7950
0
  case 762:
7951
0
#line 4032 "./util/configparser.y"
7952
0
        {
7953
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7954
    OUTYY(("P(redis_replica_server_path:%s)\n", (yyvsp[0].str)));
7955
    free(cfg_parser->cfg->redis_replica_server_path);
7956
    cfg_parser->cfg->redis_replica_server_path = (yyvsp[0].str);
7957
  #else
7958
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7959
0
    free((yyvsp[0].str));
7960
0
  #endif
7961
0
  }
7962
0
#line 7963 "util/configparser.c"
7963
0
    break;
7964
7965
0
  case 763:
7966
0
#line 4044 "./util/configparser.y"
7967
0
        {
7968
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7969
    OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7970
    free(cfg_parser->cfg->redis_server_password);
7971
    cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7972
  #else
7973
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7974
0
    free((yyvsp[0].str));
7975
0
  #endif
7976
0
  }
7977
0
#line 7978 "util/configparser.c"
7978
0
    break;
7979
7980
0
  case 764:
7981
0
#line 4056 "./util/configparser.y"
7982
0
        {
7983
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7984
    OUTYY(("P(redis_replica_server_password:%s)\n", (yyvsp[0].str)));
7985
    free(cfg_parser->cfg->redis_replica_server_password);
7986
    cfg_parser->cfg->redis_replica_server_password = (yyvsp[0].str);
7987
  #else
7988
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7989
0
    free((yyvsp[0].str));
7990
0
  #endif
7991
0
  }
7992
0
#line 7993 "util/configparser.c"
7993
0
    break;
7994
7995
0
  case 765:
7996
0
#line 4068 "./util/configparser.y"
7997
0
        {
7998
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
7999
    OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
8000
    if(atoi((yyvsp[0].str)) == 0)
8001
      yyerror("redis timeout value expected");
8002
    else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
8003
  #else
8004
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8005
0
  #endif
8006
0
    free((yyvsp[0].str));
8007
0
  }
8008
0
#line 8009 "util/configparser.c"
8009
0
    break;
8010
8011
0
  case 766:
8012
0
#line 4081 "./util/configparser.y"
8013
0
        {
8014
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8015
    OUTYY(("P(redis_replica_timeout:%s)\n", (yyvsp[0].str)));
8016
    if(atoi((yyvsp[0].str)) == 0)
8017
      yyerror("redis timeout value expected");
8018
    else cfg_parser->cfg->redis_replica_timeout = atoi((yyvsp[0].str));
8019
  #else
8020
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8021
0
  #endif
8022
0
    free((yyvsp[0].str));
8023
0
  }
8024
0
#line 8025 "util/configparser.c"
8025
0
    break;
8026
8027
0
  case 767:
8028
0
#line 4094 "./util/configparser.y"
8029
0
        {
8030
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8031
    OUTYY(("P(redis_command_timeout:%s)\n", (yyvsp[0].str)));
8032
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8033
      yyerror("redis command timeout value expected");
8034
    else cfg_parser->cfg->redis_command_timeout = atoi((yyvsp[0].str));
8035
  #else
8036
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8037
0
  #endif
8038
0
    free((yyvsp[0].str));
8039
0
  }
8040
0
#line 8041 "util/configparser.c"
8041
0
    break;
8042
8043
0
  case 768:
8044
0
#line 4107 "./util/configparser.y"
8045
0
        {
8046
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8047
    OUTYY(("P(redis_replica_command_timeout:%s)\n", (yyvsp[0].str)));
8048
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8049
      yyerror("redis command timeout value expected");
8050
    else cfg_parser->cfg->redis_replica_command_timeout = atoi((yyvsp[0].str));
8051
  #else
8052
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8053
0
  #endif
8054
0
    free((yyvsp[0].str));
8055
0
  }
8056
0
#line 8057 "util/configparser.c"
8057
0
    break;
8058
8059
0
  case 769:
8060
0
#line 4120 "./util/configparser.y"
8061
0
        {
8062
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8063
    OUTYY(("P(redis_connect_timeout:%s)\n", (yyvsp[0].str)));
8064
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8065
      yyerror("redis connect timeout value expected");
8066
    else cfg_parser->cfg->redis_connect_timeout = atoi((yyvsp[0].str));
8067
  #else
8068
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8069
0
  #endif
8070
0
    free((yyvsp[0].str));
8071
0
  }
8072
0
#line 8073 "util/configparser.c"
8073
0
    break;
8074
8075
0
  case 770:
8076
0
#line 4133 "./util/configparser.y"
8077
0
        {
8078
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8079
    OUTYY(("P(redis_replica_connect_timeout:%s)\n", (yyvsp[0].str)));
8080
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8081
      yyerror("redis connect timeout value expected");
8082
    else cfg_parser->cfg->redis_replica_connect_timeout = atoi((yyvsp[0].str));
8083
  #else
8084
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8085
0
  #endif
8086
0
    free((yyvsp[0].str));
8087
0
  }
8088
0
#line 8089 "util/configparser.c"
8089
0
    break;
8090
8091
0
  case 771:
8092
0
#line 4146 "./util/configparser.y"
8093
0
        {
8094
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8095
    OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
8096
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
8097
      yyerror("expected yes or no.");
8098
    else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
8099
  #else
8100
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8101
0
  #endif
8102
0
    free((yyvsp[0].str));
8103
0
  }
8104
0
#line 8105 "util/configparser.c"
8105
0
    break;
8106
8107
0
  case 772:
8108
0
#line 4159 "./util/configparser.y"
8109
0
        {
8110
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8111
    int db;
8112
    OUTYY(("P(redis_logical_db:%s)\n", (yyvsp[0].str)));
8113
    db = atoi((yyvsp[0].str));
8114
    if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
8115
      yyerror("valid redis logical database index expected");
8116
    else cfg_parser->cfg->redis_logical_db = db;
8117
  #else
8118
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8119
0
  #endif
8120
0
    free((yyvsp[0].str));
8121
0
  }
8122
0
#line 8123 "util/configparser.c"
8123
0
    break;
8124
8125
0
  case 773:
8126
0
#line 4174 "./util/configparser.y"
8127
0
        {
8128
  #if defined(USE_CACHEDB) && defined(USE_REDIS)
8129
    int db;
8130
    OUTYY(("P(redis_replica_logical_db:%s)\n", (yyvsp[0].str)));
8131
    db = atoi((yyvsp[0].str));
8132
    if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
8133
      yyerror("valid redis logical database index expected");
8134
    else cfg_parser->cfg->redis_replica_logical_db = db;
8135
  #else
8136
0
    OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
8137
0
  #endif
8138
0
    free((yyvsp[0].str));
8139
0
  }
8140
0
#line 8141 "util/configparser.c"
8141
0
    break;
8142
8143
0
  case 774:
8144
0
#line 4189 "./util/configparser.y"
8145
0
        {
8146
0
    OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
8147
0
    if (atoi((yyvsp[0].str)) < 0)
8148
0
      yyerror("positive number expected");
8149
0
    else {
8150
0
      if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
8151
0
        fatal_exit("out of memory adding tcp connection limit");
8152
0
    }
8153
0
  }
8154
0
#line 8155 "util/configparser.c"
8155
0
    break;
8156
8157
0
  case 775:
8158
0
#line 4200 "./util/configparser.y"
8159
0
        {
8160
0
    OUTYY(("P(server_answer_cookie:%s)\n", (yyvsp[0].str)));
8161
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
8162
0
      yyerror("expected yes or no.");
8163
0
    else cfg_parser->cfg->do_answer_cookie = (strcmp((yyvsp[0].str), "yes")==0);
8164
0
    free((yyvsp[0].str));
8165
0
  }
8166
0
#line 8167 "util/configparser.c"
8167
0
    break;
8168
8169
0
  case 776:
8170
0
#line 4209 "./util/configparser.y"
8171
0
        {
8172
0
    uint8_t secret[32];
8173
0
    size_t secret_len = sizeof(secret);
8174
8175
0
    OUTYY(("P(server_cookie_secret:%s)\n", (yyvsp[0].str)));
8176
0
    if(sldns_str2wire_hex_buf((yyvsp[0].str), secret, &secret_len)
8177
0
    || (secret_len != 16))
8178
0
      yyerror("expected 128 bit hex string");
8179
0
    else {
8180
0
      cfg_parser->cfg->cookie_secret_len = secret_len;
8181
0
      memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
8182
0
    }
8183
0
    free((yyvsp[0].str));
8184
0
  }
8185
0
#line 8186 "util/configparser.c"
8186
0
    break;
8187
8188
0
  case 777:
8189
0
#line 4225 "./util/configparser.y"
8190
0
        {
8191
0
    OUTYY(("P(cookie_secret_file:%s)\n", (yyvsp[0].str)));
8192
0
    free(cfg_parser->cfg->cookie_secret_file);
8193
0
    cfg_parser->cfg->cookie_secret_file = (yyvsp[0].str);
8194
0
  }
8195
0
#line 8196 "util/configparser.c"
8196
0
    break;
8197
8198
0
  case 778:
8199
0
#line 4232 "./util/configparser.y"
8200
0
        {
8201
0
    OUTYY(("P(server_iter_scrub_ns:%s)\n", (yyvsp[0].str)));
8202
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8203
0
      yyerror("number expected");
8204
0
    else cfg_parser->cfg->iter_scrub_ns = atoi((yyvsp[0].str));
8205
0
    free((yyvsp[0].str));
8206
0
  }
8207
0
#line 8208 "util/configparser.c"
8208
0
    break;
8209
8210
0
  case 779:
8211
0
#line 4241 "./util/configparser.y"
8212
0
        {
8213
0
    OUTYY(("P(server_iter_scrub_cname:%s)\n", (yyvsp[0].str)));
8214
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8215
0
      yyerror("number expected");
8216
0
    else cfg_parser->cfg->iter_scrub_cname = atoi((yyvsp[0].str));
8217
0
    free((yyvsp[0].str));
8218
0
  }
8219
0
#line 8220 "util/configparser.c"
8220
0
    break;
8221
8222
0
  case 780:
8223
0
#line 4250 "./util/configparser.y"
8224
0
        {
8225
0
    OUTYY(("P(server_max_global_quota:%s)\n", (yyvsp[0].str)));
8226
0
    if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8227
0
      yyerror("number expected");
8228
0
    else cfg_parser->cfg->max_global_quota = atoi((yyvsp[0].str));
8229
0
    free((yyvsp[0].str));
8230
0
  }
8231
0
#line 8232 "util/configparser.c"
8232
0
    break;
8233
8234
0
  case 781:
8235
0
#line 4259 "./util/configparser.y"
8236
0
        {
8237
0
    OUTYY(("P(server_iter_scrub_promiscuous:%s)\n", (yyvsp[0].str)));
8238
0
    if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
8239
0
      yyerror("expected yes or no.");
8240
0
    else cfg_parser->cfg->iter_scrub_promiscuous =
8241
0
      (strcmp((yyvsp[0].str), "yes")==0);
8242
0
    free((yyvsp[0].str));
8243
0
  }
8244
0
#line 8245 "util/configparser.c"
8245
0
    break;
8246
8247
0
  case 782:
8248
0
#line 4269 "./util/configparser.y"
8249
0
        {
8250
0
    OUTYY(("\nP(ipset:)\n"));
8251
0
    cfg_parser->started_toplevel = 1;
8252
0
  }
8253
0
#line 8254 "util/configparser.c"
8254
0
    break;
8255
8256
0
  case 787:
8257
0
#line 4279 "./util/configparser.y"
8258
0
        {
8259
  #ifdef USE_IPSET
8260
    OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
8261
    if(cfg_parser->cfg->ipset_name_v4)
8262
      yyerror("ipset name v4 override, there must be one "
8263
        "name for ip v4");
8264
    free(cfg_parser->cfg->ipset_name_v4);
8265
    cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
8266
  #else
8267
0
    OUTYY(("P(Compiled without ipset, ignoring)\n"));
8268
0
    free((yyvsp[0].str));
8269
0
  #endif
8270
0
  }
8271
0
#line 8272 "util/configparser.c"
8272
0
    break;
8273
8274
0
  case 788:
8275
0
#line 4294 "./util/configparser.y"
8276
0
        {
8277
  #ifdef USE_IPSET
8278
    OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
8279
    if(cfg_parser->cfg->ipset_name_v6)
8280
      yyerror("ipset name v6 override, there must be one "
8281
        "name for ip v6");
8282
    free(cfg_parser->cfg->ipset_name_v6);
8283
    cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
8284
  #else
8285
0
    OUTYY(("P(Compiled without ipset, ignoring)\n"));
8286
0
    free((yyvsp[0].str));
8287
0
  #endif
8288
0
  }
8289
0
#line 8290 "util/configparser.c"
8290
0
    break;
8291
8292
8293
0
#line 8294 "util/configparser.c"
8294
8295
0
      default: break;
8296
0
    }
8297
  /* User semantic actions sometimes alter yychar, and that requires
8298
     that yytoken be updated with the new translation.  We take the
8299
     approach of translating immediately before every use of yytoken.
8300
     One alternative is translating here after every semantic action,
8301
     but that translation would be missed if the semantic action invokes
8302
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8303
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
8304
     incorrect destructor might then be invoked immediately.  In the
8305
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
8306
     to an incorrect destructor call or verbose syntax error message
8307
     before the lookahead is translated.  */
8308
0
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8309
8310
0
  YYPOPSTACK (yylen);
8311
0
  yylen = 0;
8312
0
  YY_STACK_PRINT (yyss, yyssp);
8313
8314
0
  *++yyvsp = yyval;
8315
8316
  /* Now 'shift' the result of the reduction.  Determine what state
8317
     that goes to, based on the state we popped back to and the rule
8318
     number reduced by.  */
8319
0
  {
8320
0
    const int yylhs = yyr1[yyn] - YYNTOKENS;
8321
0
    const int yyi = yypgoto[yylhs] + *yyssp;
8322
0
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
8323
0
               ? yytable[yyi]
8324
0
               : yydefgoto[yylhs]);
8325
0
  }
8326
8327
0
  goto yynewstate;
8328
8329
8330
/*--------------------------------------.
8331
| yyerrlab -- here on detecting error.  |
8332
`--------------------------------------*/
8333
0
yyerrlab:
8334
  /* Make sure we have latest lookahead translation.  See comments at
8335
     user semantic actions for why this is necessary.  */
8336
0
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
8337
8338
  /* If not already recovering from an error, report this error.  */
8339
0
  if (!yyerrstatus)
8340
0
    {
8341
0
      ++yynerrs;
8342
0
#if ! YYERROR_VERBOSE
8343
0
      yyerror (YY_("syntax error"));
8344
#else
8345
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
8346
                                        yyssp, yytoken)
8347
      {
8348
        char const *yymsgp = YY_("syntax error");
8349
        int yysyntax_error_status;
8350
        yysyntax_error_status = YYSYNTAX_ERROR;
8351
        if (yysyntax_error_status == 0)
8352
          yymsgp = yymsg;
8353
        else if (yysyntax_error_status == 1)
8354
          {
8355
            if (yymsg != yymsgbuf)
8356
              YYSTACK_FREE (yymsg);
8357
            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
8358
            if (!yymsg)
8359
              {
8360
                yymsg = yymsgbuf;
8361
                yymsg_alloc = sizeof yymsgbuf;
8362
                yysyntax_error_status = 2;
8363
              }
8364
            else
8365
              {
8366
                yysyntax_error_status = YYSYNTAX_ERROR;
8367
                yymsgp = yymsg;
8368
              }
8369
          }
8370
        yyerror (yymsgp);
8371
        if (yysyntax_error_status == 2)
8372
          goto yyexhaustedlab;
8373
      }
8374
# undef YYSYNTAX_ERROR
8375
#endif
8376
0
    }
8377
8378
8379
8380
0
  if (yyerrstatus == 3)
8381
0
    {
8382
      /* If just tried and failed to reuse lookahead token after an
8383
         error, discard it.  */
8384
8385
0
      if (yychar <= YYEOF)
8386
0
        {
8387
          /* Return failure if at end of input.  */
8388
0
          if (yychar == YYEOF)
8389
0
            YYABORT;
8390
0
        }
8391
0
      else
8392
0
        {
8393
0
          yydestruct ("Error: discarding",
8394
0
                      yytoken, &yylval);
8395
0
          yychar = YYEMPTY;
8396
0
        }
8397
0
    }
8398
8399
  /* Else will try to reuse lookahead token after shifting the error
8400
     token.  */
8401
0
  goto yyerrlab1;
8402
8403
8404
/*---------------------------------------------------.
8405
| yyerrorlab -- error raised explicitly by YYERROR.  |
8406
`---------------------------------------------------*/
8407
0
yyerrorlab:
8408
  /* Pacify compilers when the user code never invokes YYERROR and the
8409
     label yyerrorlab therefore never appears in user code.  */
8410
0
  if (0)
8411
0
    YYERROR;
8412
8413
  /* Do not reclaim the symbols of the rule whose action triggered
8414
     this YYERROR.  */
8415
0
  YYPOPSTACK (yylen);
8416
0
  yylen = 0;
8417
0
  YY_STACK_PRINT (yyss, yyssp);
8418
0
  yystate = *yyssp;
8419
0
  goto yyerrlab1;
8420
8421
8422
/*-------------------------------------------------------------.
8423
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
8424
`-------------------------------------------------------------*/
8425
0
yyerrlab1:
8426
0
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
8427
8428
0
  for (;;)
8429
0
    {
8430
0
      yyn = yypact[yystate];
8431
0
      if (!yypact_value_is_default (yyn))
8432
0
        {
8433
0
          yyn += YYTERROR;
8434
0
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8435
0
            {
8436
0
              yyn = yytable[yyn];
8437
0
              if (0 < yyn)
8438
0
                break;
8439
0
            }
8440
0
        }
8441
8442
      /* Pop the current state because it cannot handle the error token.  */
8443
0
      if (yyssp == yyss)
8444
0
        YYABORT;
8445
8446
8447
0
      yydestruct ("Error: popping",
8448
0
                  yystos[yystate], yyvsp);
8449
0
      YYPOPSTACK (1);
8450
0
      yystate = *yyssp;
8451
0
      YY_STACK_PRINT (yyss, yyssp);
8452
0
    }
8453
8454
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8455
0
  *++yyvsp = yylval;
8456
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
8457
8458
8459
  /* Shift the error token.  */
8460
0
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8461
8462
0
  yystate = yyn;
8463
0
  goto yynewstate;
8464
8465
8466
/*-------------------------------------.
8467
| yyacceptlab -- YYACCEPT comes here.  |
8468
`-------------------------------------*/
8469
0
yyacceptlab:
8470
0
  yyresult = 0;
8471
0
  goto yyreturn;
8472
8473
8474
/*-----------------------------------.
8475
| yyabortlab -- YYABORT comes here.  |
8476
`-----------------------------------*/
8477
0
yyabortlab:
8478
0
  yyresult = 1;
8479
0
  goto yyreturn;
8480
8481
8482
0
#if !defined yyoverflow || YYERROR_VERBOSE
8483
/*-------------------------------------------------.
8484
| yyexhaustedlab -- memory exhaustion comes here.  |
8485
`-------------------------------------------------*/
8486
0
yyexhaustedlab:
8487
0
  yyerror (YY_("memory exhausted"));
8488
0
  yyresult = 2;
8489
  /* Fall through.  */
8490
0
#endif
8491
8492
8493
/*-----------------------------------------------------.
8494
| yyreturn -- parsing is finished, return the result.  |
8495
`-----------------------------------------------------*/
8496
0
yyreturn:
8497
0
  if (yychar != YYEMPTY)
8498
0
    {
8499
      /* Make sure we have latest lookahead translation.  See comments at
8500
         user semantic actions for why this is necessary.  */
8501
0
      yytoken = YYTRANSLATE (yychar);
8502
0
      yydestruct ("Cleanup: discarding lookahead",
8503
0
                  yytoken, &yylval);
8504
0
    }
8505
  /* Do not reclaim the symbols of the rule whose action triggered
8506
     this YYABORT or YYACCEPT.  */
8507
0
  YYPOPSTACK (yylen);
8508
0
  YY_STACK_PRINT (yyss, yyssp);
8509
0
  while (yyssp != yyss)
8510
0
    {
8511
0
      yydestruct ("Cleanup: popping",
8512
0
                  yystos[+*yyssp], yyvsp);
8513
0
      YYPOPSTACK (1);
8514
0
    }
8515
0
#ifndef yyoverflow
8516
0
  if (yyss != yyssa)
8517
0
    YYSTACK_FREE (yyss);
8518
0
#endif
8519
#if YYERROR_VERBOSE
8520
  if (yymsg != yymsgbuf)
8521
    YYSTACK_FREE (yymsg);
8522
#endif
8523
0
  return yyresult;
8524
0
}
8525
#line 4308 "./util/configparser.y"
8526
8527
8528
/* parse helper routines could be here */
8529
static void
8530
validate_respip_action(const char* action)
8531
0
{
8532
0
  if(strcmp(action, "deny")!=0 &&
8533
0
    strcmp(action, "redirect")!=0 &&
8534
0
    strcmp(action, "inform")!=0 &&
8535
0
    strcmp(action, "inform_deny")!=0 &&
8536
0
    strcmp(action, "always_transparent")!=0 &&
8537
0
    strcmp(action, "always_refuse")!=0 &&
8538
0
    strcmp(action, "always_nxdomain")!=0)
8539
0
  {
8540
0
    yyerror("response-ip action: expected deny, redirect, "
8541
0
      "inform, inform_deny, always_transparent, "
8542
0
      "always_refuse or always_nxdomain");
8543
0
  }
8544
0
}
8545
8546
static void
8547
validate_acl_action(const char* action)
8548
0
{
8549
0
  if(strcmp(action, "deny")!=0 &&
8550
0
    strcmp(action, "refuse")!=0 &&
8551
0
    strcmp(action, "deny_non_local")!=0 &&
8552
0
    strcmp(action, "refuse_non_local")!=0 &&
8553
0
    strcmp(action, "allow_setrd")!=0 &&
8554
0
    strcmp(action, "allow")!=0 &&
8555
0
    strcmp(action, "allow_snoop")!=0 &&
8556
0
    strcmp(action, "allow_cookie")!=0)
8557
0
  {
8558
0
    yyerror("expected deny, refuse, deny_non_local, "
8559
0
      "refuse_non_local, allow, allow_setrd, "
8560
0
      "allow_snoop or allow_cookie as access control action");
8561
0
  }
8562
0
}