Bug Summary

File:src/sbin/unwind/obj/configparser.c
Warning:line 2267, column 26
Use of memory allocated with size zero

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple amd64-unknown-openbsd7.4 -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name configparser.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/sbin/unwind/obj -resource-dir /usr/local/llvm16/lib/clang/16 -I /usr/src/sbin/unwind -I /usr/src/sbin/unwind -I /usr/src/sbin/unwind/libunbound/libunbound -I /usr/src/sbin/unwind/libunbound -internal-isystem /usr/local/llvm16/lib/clang/16/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/sbin/unwind/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fcf-protection=branch -fno-jump-tables -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/scan/2024-01-11-140451-98009-1 -x c configparser.c
1#include <stdlib.h>
2#include <string.h>
3#define YYBYACC1 1
4#define YYMAJOR1 1
5#define YYMINOR9 9
6#define YYLEXub_c_lex() yylexub_c_lex()
7#define YYEMPTY-1 -1
8#define yyclearin(ub_c_char=(-1)) (yycharub_c_char=(YYEMPTY-1))
9#define yyerrok(ub_c_errflag=0) (yyerrflagub_c_errflag=0)
10#define YYRECOVERING()(ub_c_errflag!=0) (yyerrflagub_c_errflag!=0)
11#define YYPREFIX"yy" "yy"
12#line 39 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
13#include "config.h"
14
15#include <stdarg.h>
16#include <stdio.h>
17#include <string.h>
18#include <stdlib.h>
19#include <assert.h>
20
21#include "util/configyyrename.h"
22#include "util/config_file.h"
23#include "util/net_help.h"
24#include "sldns/str2wire.h"
25
26int ub_c_lex(void);
27void ub_c_error(const char *message);
28
29static void validate_respip_action(const char* action);
30static void validate_acl_action(const char* action);
31
32/* these need to be global, otherwise they cannot be used inside yacc */
33extern struct config_parser_state* cfg_parser;
34
35#if 0
36#define OUTYY(s) printf s /* used ONLY when debugging */
37#else
38#define OUTYY(s)
39#endif
40
41#line 68 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
42#ifndef YYSTYPE_DEFINED
43#define YYSTYPE_DEFINED
44typedef union {
45 char* str;
46} YYSTYPE;
47#endif /* YYSTYPE_DEFINED */
48#line 49 "configparser.c"
49#define SPACE257 257
50#define LETTER258 258
51#define NEWLINE259 259
52#define COMMENT260 260
53#define COLON261 261
54#define ANY262 262
55#define ZONESTR263 263
56#define STRING_ARG264 264
57#define VAR_FORCE_TOPLEVEL265 265
58#define VAR_SERVER266 266
59#define VAR_VERBOSITY267 267
60#define VAR_NUM_THREADS268 268
61#define VAR_PORT269 269
62#define VAR_OUTGOING_RANGE270 270
63#define VAR_INTERFACE271 271
64#define VAR_PREFER_IP4272 272
65#define VAR_DO_IP4273 273
66#define VAR_DO_IP6274 274
67#define VAR_DO_NAT64275 275
68#define VAR_PREFER_IP6276 276
69#define VAR_DO_UDP277 277
70#define VAR_DO_TCP278 278
71#define VAR_TCP_MSS279 279
72#define VAR_OUTGOING_TCP_MSS280 280
73#define VAR_TCP_IDLE_TIMEOUT281 281
74#define VAR_EDNS_TCP_KEEPALIVE282 282
75#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT283 283
76#define VAR_SOCK_QUEUE_TIMEOUT284 284
77#define VAR_CHROOT285 285
78#define VAR_USERNAME286 286
79#define VAR_DIRECTORY287 287
80#define VAR_LOGFILE288 288
81#define VAR_PIDFILE289 289
82#define VAR_MSG_CACHE_SIZE290 290
83#define VAR_MSG_CACHE_SLABS291 291
84#define VAR_NUM_QUERIES_PER_THREAD292 292
85#define VAR_RRSET_CACHE_SIZE293 293
86#define VAR_RRSET_CACHE_SLABS294 294
87#define VAR_OUTGOING_NUM_TCP295 295
88#define VAR_INFRA_HOST_TTL296 296
89#define VAR_INFRA_LAME_TTL297 297
90#define VAR_INFRA_CACHE_SLABS298 298
91#define VAR_INFRA_CACHE_NUMHOSTS299 299
92#define VAR_INFRA_CACHE_LAME_SIZE300 300
93#define VAR_NAME301 301
94#define VAR_STUB_ZONE302 302
95#define VAR_STUB_HOST303 303
96#define VAR_STUB_ADDR304 304
97#define VAR_TARGET_FETCH_POLICY305 305
98#define VAR_HARDEN_SHORT_BUFSIZE306 306
99#define VAR_HARDEN_LARGE_QUERIES307 307
100#define VAR_FORWARD_ZONE308 308
101#define VAR_FORWARD_HOST309 309
102#define VAR_FORWARD_ADDR310 310
103#define VAR_DO_NOT_QUERY_ADDRESS311 311
104#define VAR_HIDE_IDENTITY312 312
105#define VAR_HIDE_VERSION313 313
106#define VAR_IDENTITY314 314
107#define VAR_VERSION315 315
108#define VAR_HARDEN_GLUE316 316
109#define VAR_MODULE_CONF317 317
110#define VAR_TRUST_ANCHOR_FILE318 318
111#define VAR_TRUST_ANCHOR319 319
112#define VAR_VAL_OVERRIDE_DATE320 320
113#define VAR_BOGUS_TTL321 321
114#define VAR_VAL_CLEAN_ADDITIONAL322 322
115#define VAR_VAL_PERMISSIVE_MODE323 323
116#define VAR_INCOMING_NUM_TCP324 324
117#define VAR_MSG_BUFFER_SIZE325 325
118#define VAR_KEY_CACHE_SIZE326 326
119#define VAR_KEY_CACHE_SLABS327 327
120#define VAR_TRUSTED_KEYS_FILE328 328
121#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS329 329
122#define VAR_USE_SYSLOG330 330
123#define VAR_OUTGOING_INTERFACE331 331
124#define VAR_ROOT_HINTS332 332
125#define VAR_DO_NOT_QUERY_LOCALHOST333 333
126#define VAR_CACHE_MAX_TTL334 334
127#define VAR_HARDEN_DNSSEC_STRIPPED335 335
128#define VAR_ACCESS_CONTROL336 336
129#define VAR_LOCAL_ZONE337 337
130#define VAR_LOCAL_DATA338 338
131#define VAR_INTERFACE_AUTOMATIC339 339
132#define VAR_STATISTICS_INTERVAL340 340
133#define VAR_DO_DAEMONIZE341 341
134#define VAR_USE_CAPS_FOR_ID342 342
135#define VAR_STATISTICS_CUMULATIVE343 343
136#define VAR_OUTGOING_PORT_PERMIT344 344
137#define VAR_OUTGOING_PORT_AVOID345 345
138#define VAR_DLV_ANCHOR_FILE346 346
139#define VAR_DLV_ANCHOR347 347
140#define VAR_NEG_CACHE_SIZE348 348
141#define VAR_HARDEN_REFERRAL_PATH349 349
142#define VAR_PRIVATE_ADDRESS350 350
143#define VAR_PRIVATE_DOMAIN351 351
144#define VAR_REMOTE_CONTROL352 352
145#define VAR_CONTROL_ENABLE353 353
146#define VAR_CONTROL_INTERFACE354 354
147#define VAR_CONTROL_PORT355 355
148#define VAR_SERVER_KEY_FILE356 356
149#define VAR_SERVER_CERT_FILE357 357
150#define VAR_CONTROL_KEY_FILE358 358
151#define VAR_CONTROL_CERT_FILE359 359
152#define VAR_CONTROL_USE_CERT360 360
153#define VAR_TCP_REUSE_TIMEOUT361 361
154#define VAR_MAX_REUSE_TCP_QUERIES362 362
155#define VAR_EXTENDED_STATISTICS363 363
156#define VAR_LOCAL_DATA_PTR364 364
157#define VAR_JOSTLE_TIMEOUT365 365
158#define VAR_STUB_PRIME366 366
159#define VAR_UNWANTED_REPLY_THRESHOLD367 367
160#define VAR_LOG_TIME_ASCII368 368
161#define VAR_DOMAIN_INSECURE369 369
162#define VAR_PYTHON370 370
163#define VAR_PYTHON_SCRIPT371 371
164#define VAR_VAL_SIG_SKEW_MIN372 372
165#define VAR_VAL_SIG_SKEW_MAX373 373
166#define VAR_VAL_MAX_RESTART374 374
167#define VAR_CACHE_MIN_TTL375 375
168#define VAR_VAL_LOG_LEVEL376 376
169#define VAR_AUTO_TRUST_ANCHOR_FILE377 377
170#define VAR_KEEP_MISSING378 378
171#define VAR_ADD_HOLDDOWN379 379
172#define VAR_DEL_HOLDDOWN380 380
173#define VAR_SO_RCVBUF381 381
174#define VAR_EDNS_BUFFER_SIZE382 382
175#define VAR_PREFETCH383 383
176#define VAR_PREFETCH_KEY384 384
177#define VAR_SO_SNDBUF385 385
178#define VAR_SO_REUSEPORT386 386
179#define VAR_HARDEN_BELOW_NXDOMAIN387 387
180#define VAR_IGNORE_CD_FLAG388 388
181#define VAR_LOG_QUERIES389 389
182#define VAR_LOG_REPLIES390 390
183#define VAR_LOG_LOCAL_ACTIONS391 391
184#define VAR_TCP_UPSTREAM392 392
185#define VAR_SSL_UPSTREAM393 393
186#define VAR_TCP_AUTH_QUERY_TIMEOUT394 394
187#define VAR_SSL_SERVICE_KEY395 395
188#define VAR_SSL_SERVICE_PEM396 396
189#define VAR_SSL_PORT397 397
190#define VAR_FORWARD_FIRST398 398
191#define VAR_STUB_SSL_UPSTREAM399 399
192#define VAR_FORWARD_SSL_UPSTREAM400 400
193#define VAR_TLS_CERT_BUNDLE401 401
194#define VAR_STUB_TCP_UPSTREAM402 402
195#define VAR_FORWARD_TCP_UPSTREAM403 403
196#define VAR_HTTPS_PORT404 404
197#define VAR_HTTP_ENDPOINT405 405
198#define VAR_HTTP_MAX_STREAMS406 406
199#define VAR_HTTP_QUERY_BUFFER_SIZE407 407
200#define VAR_HTTP_RESPONSE_BUFFER_SIZE408 408
201#define VAR_HTTP_NODELAY409 409
202#define VAR_HTTP_NOTLS_DOWNSTREAM410 410
203#define VAR_STUB_FIRST411 411
204#define VAR_MINIMAL_RESPONSES412 412
205#define VAR_RRSET_ROUNDROBIN413 413
206#define VAR_MAX_UDP_SIZE414 414
207#define VAR_DELAY_CLOSE415 415
208#define VAR_UDP_CONNECT416 416
209#define VAR_UNBLOCK_LAN_ZONES417 417
210#define VAR_INSECURE_LAN_ZONES418 418
211#define VAR_INFRA_CACHE_MIN_RTT419 419
212#define VAR_INFRA_CACHE_MAX_RTT420 420
213#define VAR_INFRA_KEEP_PROBING421 421
214#define VAR_DNS64_PREFIX422 422
215#define VAR_DNS64_SYNTHALL423 423
216#define VAR_DNS64_IGNORE_AAAA424 424
217#define VAR_NAT64_PREFIX425 425
218#define VAR_DNSTAP426 426
219#define VAR_DNSTAP_ENABLE427 427
220#define VAR_DNSTAP_SOCKET_PATH428 428
221#define VAR_DNSTAP_IP429 429
222#define VAR_DNSTAP_TLS430 430
223#define VAR_DNSTAP_TLS_SERVER_NAME431 431
224#define VAR_DNSTAP_TLS_CERT_BUNDLE432 432
225#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE433 433
226#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE434 434
227#define VAR_DNSTAP_SEND_IDENTITY435 435
228#define VAR_DNSTAP_SEND_VERSION436 436
229#define VAR_DNSTAP_BIDIRECTIONAL437 437
230#define VAR_DNSTAP_IDENTITY438 438
231#define VAR_DNSTAP_VERSION439 439
232#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES440 440
233#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES441 441
234#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES442 442
235#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES443 443
236#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES444 444
237#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES445 445
238#define VAR_RESPONSE_IP_TAG446 446
239#define VAR_RESPONSE_IP447 447
240#define VAR_RESPONSE_IP_DATA448 448
241#define VAR_HARDEN_ALGO_DOWNGRADE449 449
242#define VAR_IP_TRANSPARENT450 450
243#define VAR_IP_DSCP451 451
244#define VAR_DISABLE_DNSSEC_LAME_CHECK452 452
245#define VAR_IP_RATELIMIT453 453
246#define VAR_IP_RATELIMIT_SLABS454 454
247#define VAR_IP_RATELIMIT_SIZE455 455
248#define VAR_RATELIMIT456 456
249#define VAR_RATELIMIT_SLABS457 457
250#define VAR_RATELIMIT_SIZE458 458
251#define VAR_OUTBOUND_MSG_RETRY459 459
252#define VAR_MAX_SENT_COUNT460 460
253#define VAR_MAX_QUERY_RESTARTS461 461
254#define VAR_RATELIMIT_FOR_DOMAIN462 462
255#define VAR_RATELIMIT_BELOW_DOMAIN463 463
256#define VAR_IP_RATELIMIT_FACTOR464 464
257#define VAR_RATELIMIT_FACTOR465 465
258#define VAR_IP_RATELIMIT_BACKOFF466 466
259#define VAR_RATELIMIT_BACKOFF467 467
260#define VAR_SEND_CLIENT_SUBNET468 468
261#define VAR_CLIENT_SUBNET_ZONE469 469
262#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD470 470
263#define VAR_CLIENT_SUBNET_OPCODE471 471
264#define VAR_MAX_CLIENT_SUBNET_IPV4472 472
265#define VAR_MAX_CLIENT_SUBNET_IPV6473 473
266#define VAR_MIN_CLIENT_SUBNET_IPV4474 474
267#define VAR_MIN_CLIENT_SUBNET_IPV6475 475
268#define VAR_MAX_ECS_TREE_SIZE_IPV4476 476
269#define VAR_MAX_ECS_TREE_SIZE_IPV6477 477
270#define VAR_CAPS_WHITELIST478 478
271#define VAR_CACHE_MAX_NEGATIVE_TTL479 479
272#define VAR_PERMIT_SMALL_HOLDDOWN480 480
273#define VAR_QNAME_MINIMISATION481 481
274#define VAR_QNAME_MINIMISATION_STRICT482 482
275#define VAR_IP_FREEBIND483 483
276#define VAR_DEFINE_TAG484 484
277#define VAR_LOCAL_ZONE_TAG485 485
278#define VAR_ACCESS_CONTROL_TAG486 486
279#define VAR_LOCAL_ZONE_OVERRIDE487 487
280#define VAR_ACCESS_CONTROL_TAG_ACTION488 488
281#define VAR_ACCESS_CONTROL_TAG_DATA489 489
282#define VAR_VIEW490 490
283#define VAR_ACCESS_CONTROL_VIEW491 491
284#define VAR_VIEW_FIRST492 492
285#define VAR_SERVE_EXPIRED493 493
286#define VAR_SERVE_EXPIRED_TTL494 494
287#define VAR_SERVE_EXPIRED_TTL_RESET495 495
288#define VAR_SERVE_EXPIRED_REPLY_TTL496 496
289#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT497 497
290#define VAR_EDE_SERVE_EXPIRED498 498
291#define VAR_SERVE_ORIGINAL_TTL499 499
292#define VAR_FAKE_DSA500 500
293#define VAR_FAKE_SHA1501 501
294#define VAR_LOG_IDENTITY502 502
295#define VAR_HIDE_TRUSTANCHOR503 503
296#define VAR_HIDE_HTTP_USER_AGENT504 504
297#define VAR_HTTP_USER_AGENT505 505
298#define VAR_TRUST_ANCHOR_SIGNALING506 506
299#define VAR_AGGRESSIVE_NSEC507 507
300#define VAR_USE_SYSTEMD508 508
301#define VAR_SHM_ENABLE509 509
302#define VAR_SHM_KEY510 510
303#define VAR_ROOT_KEY_SENTINEL511 511
304#define VAR_DNSCRYPT512 512
305#define VAR_DNSCRYPT_ENABLE513 513
306#define VAR_DNSCRYPT_PORT514 514
307#define VAR_DNSCRYPT_PROVIDER515 515
308#define VAR_DNSCRYPT_SECRET_KEY516 516
309#define VAR_DNSCRYPT_PROVIDER_CERT517 517
310#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED518 518
311#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE519 519
312#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS520 520
313#define VAR_DNSCRYPT_NONCE_CACHE_SIZE521 521
314#define VAR_DNSCRYPT_NONCE_CACHE_SLABS522 522
315#define VAR_PAD_RESPONSES523 523
316#define VAR_PAD_RESPONSES_BLOCK_SIZE524 524
317#define VAR_PAD_QUERIES525 525
318#define VAR_PAD_QUERIES_BLOCK_SIZE526 526
319#define VAR_IPSECMOD_ENABLED527 527
320#define VAR_IPSECMOD_HOOK528 528
321#define VAR_IPSECMOD_IGNORE_BOGUS529 529
322#define VAR_IPSECMOD_MAX_TTL530 530
323#define VAR_IPSECMOD_WHITELIST531 531
324#define VAR_IPSECMOD_STRICT532 532
325#define VAR_CACHEDB533 533
326#define VAR_CACHEDB_BACKEND534 534
327#define VAR_CACHEDB_SECRETSEED535 535
328#define VAR_CACHEDB_REDISHOST536 536
329#define VAR_CACHEDB_REDISPORT537 537
330#define VAR_CACHEDB_REDISTIMEOUT538 538
331#define VAR_CACHEDB_REDISEXPIRERECORDS539 539
332#define VAR_CACHEDB_REDISPATH540 540
333#define VAR_CACHEDB_REDISPASSWORD541 541
334#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM542 542
335#define VAR_FOR_UPSTREAM543 543
336#define VAR_AUTH_ZONE544 544
337#define VAR_ZONEFILE545 545
338#define VAR_MASTER546 546
339#define VAR_URL547 547
340#define VAR_FOR_DOWNSTREAM548 548
341#define VAR_FALLBACK_ENABLED549 549
342#define VAR_TLS_ADDITIONAL_PORT550 550
343#define VAR_LOW_RTT551 551
344#define VAR_LOW_RTT_PERMIL552 552
345#define VAR_FAST_SERVER_PERMIL553 553
346#define VAR_FAST_SERVER_NUM554 554
347#define VAR_ALLOW_NOTIFY555 555
348#define VAR_TLS_WIN_CERT556 556
349#define VAR_TCP_CONNECTION_LIMIT557 557
350#define VAR_ANSWER_COOKIE558 558
351#define VAR_COOKIE_SECRET559 559
352#define VAR_IP_RATELIMIT_COOKIE560 560
353#define VAR_FORWARD_NO_CACHE561 561
354#define VAR_STUB_NO_CACHE562 562
355#define VAR_LOG_SERVFAIL563 563
356#define VAR_DENY_ANY564 564
357#define VAR_UNKNOWN_SERVER_TIME_LIMIT565 565
358#define VAR_LOG_TAG_QUERYREPLY566 566
359#define VAR_STREAM_WAIT_SIZE567 567
360#define VAR_TLS_CIPHERS568 568
361#define VAR_TLS_CIPHERSUITES569 569
362#define VAR_TLS_USE_SNI570 570
363#define VAR_IPSET571 571
364#define VAR_IPSET_NAME_V4572 572
365#define VAR_IPSET_NAME_V6573 573
366#define VAR_TLS_SESSION_TICKET_KEYS574 574
367#define VAR_RPZ575 575
368#define VAR_TAGS576 576
369#define VAR_RPZ_ACTION_OVERRIDE577 577
370#define VAR_RPZ_CNAME_OVERRIDE578 578
371#define VAR_RPZ_LOG579 579
372#define VAR_RPZ_LOG_NAME580 580
373#define VAR_DYNLIB581 581
374#define VAR_DYNLIB_FILE582 582
375#define VAR_EDNS_CLIENT_STRING583 583
376#define VAR_EDNS_CLIENT_STRING_OPCODE584 584
377#define VAR_NSID585 585
378#define VAR_ZONEMD_PERMISSIVE_MODE586 586
379#define VAR_ZONEMD_CHECK587 587
380#define VAR_ZONEMD_REJECT_ABSENCE588 588
381#define VAR_RPZ_SIGNAL_NXDOMAIN_RA589 589
382#define VAR_INTERFACE_AUTOMATIC_PORTS590 590
383#define VAR_EDE591 591
384#define VAR_INTERFACE_ACTION592 592
385#define VAR_INTERFACE_VIEW593 593
386#define VAR_INTERFACE_TAG594 594
387#define VAR_INTERFACE_TAG_ACTION595 595
388#define VAR_INTERFACE_TAG_DATA596 596
389#define VAR_PROXY_PROTOCOL_PORT597 597
390#define VAR_STATISTICS_INHIBIT_ZERO598 598
391#define VAR_HARDEN_UNKNOWN_ADDITIONAL599 599
392#define YYERRCODE256 256
393const short yylhsub_c_yylhs[] =
394 { -1,
395 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
396 1, 1, 1, 1, 1, 1, 28, 2, 3, 3,
397 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
398 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
399 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
400 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
401 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
402 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
403 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
404 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
405 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
406 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
407 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
408 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
409 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
410 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
411 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
412 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
413 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
414 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
415 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
416 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
417 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
418 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
419 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
420 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
421 29, 4, 5, 5, 271, 271, 271, 271, 271, 271,
422 271, 271, 6, 7, 7, 280, 280, 280, 280, 280,
423 280, 280, 14, 15, 15, 288, 288, 288, 288, 288,
424 288, 288, 22, 23, 23, 296, 296, 296, 296, 296,
425 296, 296, 296, 296, 296, 307, 308, 309, 310, 311,
426 312, 24, 25, 25, 313, 313, 313, 313, 313, 313,
427 313, 313, 313, 313, 313, 313, 30, 31, 98, 101,
428 110, 269, 226, 227, 32, 180, 181, 182, 183, 184,
429 185, 186, 187, 188, 189, 47, 89, 33, 102, 103,
430 58, 82, 97, 266, 34, 35, 36, 39, 40, 37,
431 38, 41, 42, 43, 263, 264, 265, 44, 45, 46,
432 134, 238, 135, 137, 138, 139, 240, 245, 241, 252,
433 253, 254, 258, 140, 141, 142, 143, 144, 145, 146,
434 222, 99, 88, 114, 132, 133, 250, 247, 136, 48,
435 49, 50, 51, 52, 90, 104, 105, 121, 76, 86,
436 77, 230, 231, 115, 68, 69, 229, 72, 70, 71,
437 73, 261, 125, 129, 150, 162, 194, 165, 251, 126,
438 83, 53, 54, 55, 112, 151, 152, 153, 154, 56,
439 57, 59, 60, 62, 63, 61, 159, 160, 166, 64,
440 65, 66, 74, 93, 130, 107, 161, 270, 100, 190,
441 108, 109, 127, 128, 248, 113, 67, 91, 94, 203,
442 75, 78, 116, 117, 118, 92, 191, 119, 79, 80,
443 81, 239, 131, 213, 214, 215, 216, 217, 218, 219,
444 220, 228, 120, 87, 262, 122, 123, 124, 192, 84,
445 85, 106, 95, 96, 111, 147, 148, 249, 149, 155,
446 156, 157, 158, 195, 196, 198, 200, 201, 199, 202,
447 205, 206, 207, 204, 223, 163, 257, 164, 169, 170,
448 167, 168, 171, 172, 174, 173, 176, 175, 177, 178,
449 179, 242, 244, 243, 193, 208, 209, 210, 211, 212,
450 232, 234, 233, 235, 236, 237, 259, 260, 267, 268,
451 272, 273, 274, 276, 277, 278, 279, 275, 281, 282,
452 283, 284, 285, 286, 287, 297, 298, 299, 300, 304,
453 305, 306, 301, 302, 303, 289, 290, 293, 294, 291,
454 295, 292, 10, 11, 11, 314, 314, 314, 314, 314,
455 314, 314, 314, 315, 317, 316, 322, 318, 319, 320,
456 321, 12, 13, 13, 323, 323, 323, 323, 323, 323,
457 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
458 323, 323, 323, 324, 326, 325, 327, 328, 329, 330,
459 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
460 341, 342, 8, 9, 9, 343, 344, 26, 27, 27,
461 345, 346, 197, 221, 224, 225, 16, 17, 17, 347,
462 347, 347, 347, 347, 347, 347, 347, 347, 347, 348,
463 349, 350, 352, 353, 351, 354, 355, 356, 357, 18,
464 19, 19, 358, 358, 358, 358, 358, 358, 358, 358,
465 359, 360, 361, 362, 365, 366, 363, 364, 246, 255,
466 256, 20, 21, 21, 367, 367, 368, 369,
467};
468const short yylenub_c_yylen[] =
469 { 2,
470 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471 2, 2, 2, 2, 2, 1, 1, 1, 2, 0,
472 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
478 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
481 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
482 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
484 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
487 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
488 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
492 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
493 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
494 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
495 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
496 1, 1, 2, 0, 1, 1, 1, 1, 1, 1,
497 1, 1, 1, 2, 0, 1, 1, 1, 1, 1,
498 1, 1, 1, 2, 0, 1, 1, 1, 1, 1,
499 1, 1, 1, 2, 0, 1, 1, 1, 1, 1,
500 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
501 2, 1, 2, 0, 1, 1, 1, 1, 1, 1,
502 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
516 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
519 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
520 2, 2, 3, 2, 2, 2, 2, 2, 2, 2,
521 2, 2, 2, 2, 3, 3, 4, 4, 4, 3,
522 3, 4, 4, 3, 3, 2, 2, 2, 2, 2,
523 2, 2, 3, 3, 2, 2, 2, 2, 2, 2,
524 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
525 2, 2, 2, 2, 2, 2, 3, 2, 2, 2,
526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
528 2, 2, 2, 2, 2, 2, 3, 3, 3, 2,
529 2, 2, 1, 2, 0, 1, 1, 1, 1, 1,
530 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
531 2, 1, 2, 0, 1, 1, 1, 1, 1, 1,
532 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
533 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
534 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
535 2, 2, 1, 2, 0, 1, 2, 1, 2, 0,
536 1, 2, 2, 2, 3, 3, 1, 2, 0, 1,
537 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
538 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
539 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
540 2, 2, 2, 2, 2, 2, 2, 2, 3, 2,
541 2, 1, 2, 0, 1, 1, 2, 2,
542};
543const short yydefredub_c_yydefred[] =
544 { 1,
545 0, 17, 18, 262, 273, 593, 653, 612, 283, 667,
546 690, 293, 712, 312, 658, 2, 20, 264, 275, 655,
547 595, 614, 285, 669, 692, 714, 295, 314, 660, 16,
548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 19, 21, 22, 23, 24, 25,
574 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
575 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
576 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
577 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
578 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
579 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
580 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
581 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
582 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
583 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
584 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
585 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
586 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
587 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
588 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
589 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
590 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
591 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
592 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
593 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
594 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
595 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
596 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
597 256, 257, 258, 259, 260, 261, 0, 0, 0, 0,
598 0, 0, 0, 0, 263, 265, 266, 267, 268, 269,
599 270, 271, 272, 0, 0, 0, 0, 0, 0, 0,
600 274, 276, 277, 278, 279, 280, 281, 282, 0, 654,
601 656, 0, 0, 0, 0, 0, 0, 0, 0, 594,
602 596, 597, 598, 599, 600, 601, 602, 603, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 613, 615, 616,
605 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
606 627, 628, 629, 630, 631, 632, 633, 0, 0, 0,
607 0, 0, 0, 0, 284, 286, 287, 288, 289, 290,
608 291, 292, 0, 0, 0, 0, 0, 0, 0, 0,
609 0, 0, 668, 670, 671, 672, 673, 674, 675, 676,
610 677, 678, 679, 0, 0, 0, 0, 0, 0, 0,
611 0, 691, 693, 694, 695, 696, 697, 698, 699, 700,
612 0, 0, 713, 715, 716, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 294, 296, 297, 298, 299,
614 300, 301, 302, 303, 304, 305, 0, 0, 0, 0,
615 0, 0, 315, 316, 318, 319, 326, 320, 317, 321,
616 322, 323, 324, 325, 313, 0, 659, 661, 328, 327,
617 335, 348, 346, 360, 355, 356, 357, 361, 358, 359,
618 362, 363, 364, 368, 369, 370, 400, 401, 402, 403,
619 404, 432, 433, 434, 440, 441, 351, 442, 443, 446,
620 444, 445, 450, 451, 452, 467, 415, 416, 419, 420,
621 453, 471, 409, 411, 472, 479, 480, 481, 352, 431,
622 500, 501, 410, 494, 393, 347, 405, 468, 476, 454,
623 0, 0, 504, 353, 329, 392, 459, 330, 349, 350,
624 406, 407, 502, 456, 461, 462, 366, 365, 331, 505,
625 435, 466, 394, 414, 473, 474, 475, 478, 493, 408,
626 498, 496, 497, 423, 430, 463, 464, 424, 425, 455,
627 483, 395, 396, 399, 371, 373, 367, 374, 375, 376,
628 377, 384, 385, 386, 387, 388, 389, 390, 506, 507,
629 509, 436, 437, 438, 439, 447, 448, 449, 510, 511,
630 512, 513, 0, 0, 0, 457, 426, 428, 663, 526,
631 531, 529, 528, 532, 530, 539, 540, 541, 0, 0,
632 535, 536, 537, 538, 336, 337, 338, 339, 340, 341,
633 342, 343, 344, 345, 460, 477, 499, 545, 546, 427,
634 514, 0, 0, 0, 0, 0, 0, 484, 485, 486,
635 487, 488, 489, 490, 491, 492, 664, 417, 418, 421,
636 412, 482, 391, 333, 334, 413, 547, 548, 549, 550,
637 551, 553, 552, 554, 555, 556, 372, 379, 542, 544,
638 543, 378, 0, 710, 711, 527, 398, 465, 508, 397,
639 429, 380, 381, 383, 382, 0, 558, 422, 495, 354,
640 559, 0, 0, 0, 0, 0, 560, 332, 458, 561,
641 562, 563, 568, 566, 567, 564, 565, 569, 570, 571,
642 572, 574, 575, 573, 657, 604, 606, 605, 608, 609,
643 610, 611, 607, 634, 636, 637, 638, 639, 640, 641,
644 642, 643, 644, 635, 645, 646, 647, 648, 649, 650,
645 651, 652, 586, 0, 590, 591, 0, 0, 592, 680,
646 681, 682, 685, 683, 684, 686, 687, 688, 689, 701,
647 702, 703, 704, 707, 708, 705, 706, 717, 718, 576,
648 584, 577, 578, 579, 583, 585, 580, 581, 582, 306,
649 307, 308, 309, 310, 311, 662, 469, 503, 525, 665,
650 666, 533, 534, 515, 516, 0, 0, 0, 520, 709,
651 557, 470, 524, 521, 0, 0, 587, 588, 589, 519,
652 517, 518, 522, 523,
653};
654const short yydgotoub_c_yydgoto[] =
655 { 1,
656 16, 17, 31, 18, 32, 19, 33, 20, 34, 21,
657 35, 22, 36, 23, 37, 24, 38, 25, 39, 26,
658 40, 27, 41, 28, 42, 29, 43, 30, 285, 286,
659 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
660 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
661 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
662 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
663 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
664 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
665 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
666 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
667 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
668 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
669 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
670 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
671 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
672 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
673 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
674 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
675 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
676 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
677 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
678 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
679 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
680 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
681 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
682 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
683 535, 536, 537, 538, 539, 540, 541, 542, 543, 551,
684 552, 553, 554, 555, 556, 557, 558, 625, 626, 627,
685 628, 629, 630, 631, 632, 686, 687, 688, 689, 690,
686 691, 692, 693, 694, 695, 696, 709, 710, 711, 712,
687 713, 714, 715, 570, 571, 572, 573, 574, 575, 576,
688 577, 578, 598, 599, 600, 601, 602, 603, 604, 605,
689 606, 607, 608, 609, 610, 611, 612, 613, 614, 615,
690 616, 617, 560, 561, 717, 718, 643, 644, 645, 646,
691 647, 648, 649, 650, 651, 652, 653, 662, 663, 664,
692 665, 666, 667, 668, 669, 670, 673, 674, 675,
693};
694const short yysindexub_c_yysindex[] =
695 { 0,
696 -183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
699 616, -299, -277, -359, -319, -228, -294, -468, -450, -563,
700 -290, -301, -569, -250, -248, -247, -246, -245, -243, -242,
701 -241, -239, -238, -237, -236, -235, -234, -233, -222, -209,
702 -208, -207, -206, -205, -204, -202, -201, -200, -199, -198,
703 -196, -195, -193, -192, -190, -189, -188, -187, -186, -185,
704 -184, -172, -171, -170, -169, -168, -167, -166, -165, -163,
705 -162, -160, -159, -158, -157, -156, -155, -154, -153, -151,
706 -149, -148, -147, -146, -144, -142, -140, -137, -136, -135,
707 -134, -133, -132, -131, -129, -128, -127, -126, -125, -124,
708 -123, -122, -121, -120, -119, -118, -117, -116, -115, -114,
709 -113, -112, -109, -108, -107, -106, -105, -104, -103, -102,
710 -101, -100, -99, -98, -97, -96, -94, -93, -92, -91,
711 -89, -88, -87, -86, -85, -84, -83, -82, -81, -80,
712 -79, -78, -76, -75, -74, -73, -72, -71, -70, -69,
713 -68, -67, -46, -45, -44, -43, -42, -41, -40, -39,
714 -38, -37, -36, -35, -34, -33, -32, -31, -30, -29,
715 -28, -27, -26, -25, -24, -23, -22, -16, -15, -14,
716 -13, -12, -4, -3, -2, 18, 19, 23, 25, 26,
717 27, 28, 29, 30, 31, 32, 35, 36, 38, 40,
718 42, 48, 49, 51, 54, 55, 56, 57, 60, 66,
719 67, 68, 69, 70, 71, 72, 76, 77, 78, 79,
720 80, 84, 85, 87, 88, 90, 92, 93, 95, 98,
721 100, 101, 102, 104, 106, 110, 113, 118, 120, 122,
722 123, 127, 129, 130, 131, 132, 133, 137, 138, 139,
723 140, 141, 142, 143, 144, 145, 146, 147, 148, 150,
724 151, 153, 154, 155, 0, 0, 0, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
748 0, 0, 0, 0, 0, 0, 156, 157, 159, 160,
749 162, 164, 166, 171, 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 173, 180, 181, 183, 184, 185, 186,
751 0, 0, 0, 0, 0, 0, 0, 0, 188, 0,
752 0, 189, 190, 191, 192, 193, 194, 195, 196, 0,
753 0, 0, 0, 0, 0, 0, 0, 0, 197, 198,
754 199, 200, 201, 203, 204, 205, 206, 207, 208, 209,
755 210, 211, 213, 214, 215, 216, 217, 0, 0, 0,
756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
757 0, 0, 0, 0, 0, 0, 0, 219, 221, 224,
758 225, 226, 228, 230, 0, 0, 0, 0, 0, 0,
759 0, 0, 231, 233, 236, 237, 238, 239, 242, 244,
760 245, 247, 0, 0, 0, 0, 0, 0, 0, 0,
761 0, 0, 0, 248, 250, 252, 253, 255, 257, 258,
762 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
763 260, 261, 0, 0, 0, 264, 265, 266, 267, 269,
764 271, 273, 274, 278, 279, 0, 0, 0, 0, 0,
765 0, 0, 0, 0, 0, 0, 282, 285, 290, 291,
766 292, 293, 0, 0, 0, 0, 0, 0, 0, 0,
767 0, 0, 0, 0, 0, 294, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774 297, 298, 0, 0, 0, 0, 0, 0, 0, 0,
775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781 0, 0, 304, 305, 306, 0, 0, 0, 0, 0,
782 0, 0, 0, 0, 0, 0, 0, 0, 311, 316,
783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
785 0, 324, 328, 333, 334, 335, 338, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
789 0, 0, 343, 0, 0, 0, 0, 0, 0, 0,
790 0, 0, 0, 0, 0, 344, 0, 0, 0, 0,
791 0, 346, 347, 348, 349, 351, 0, 0, 0, 0,
792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 352, 0, 0, 354, 355, 0, 0,
797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
801 0, 0, 0, 0, 0, 356, 357, 358, 0, 0,
802 0, 0, 0, 0, 359, 363, 0, 0, 0, 0,
803 0, 0, 0, 0,};
804const short yyrindexub_c_yyrindex[] =
805 { 0,
806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
809 1, 3, 6, 8, 15, 20, 61, 73, 81, 114,
810 134, 174, 301, 0, 0, 0, 0, 0, 0, 0,
811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
827 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
829 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
913 0, 0, 0, 0,};
914const short yygindexub_c_yygindex[] =
915 { 0,
916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945 0, 0, 0, 0, 0, 0, 222, 283, 295, 303,
946 396, 0, 0, 523, 0, 0, 0, 0, 0, 0,
947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
952 0, 0, 0, 0, 0, 0, 0, 0, 0,
953};
954#define YYTABLESIZE1215 1215
955const short yytableub_c_yytable[] =
956 { 676,
957 3, 527, 4, 528, 529, 5, 618, 6, 671, 672,
958 676, 559, 716, 719, 7, 720, 721, 722, 723, 8,
959 724, 725, 726, 544, 727, 728, 729, 730, 731, 732,
960 733, 545, 546, 562, 563, 564, 565, 566, 567, 568,
961 569, 734, 619, 620, 633, 634, 635, 636, 637, 638,
962 639, 640, 641, 642, 735, 736, 737, 738, 739, 740,
963 9, 741, 742, 743, 744, 745, 530, 746, 747, 621,
964 748, 749, 10, 750, 751, 752, 753, 754, 755, 756,
965 11, 2, 3, 654, 655, 656, 657, 658, 659, 660,
966 661, 757, 758, 759, 760, 761, 762, 763, 764, 531,
967 765, 766, 532, 767, 768, 769, 770, 771, 772, 773,
968 774, 533, 775, 12, 776, 777, 778, 779, 4, 780,
969 547, 781, 548, 782, 5, 549, 783, 784, 785, 786,
970 787, 788, 789, 13, 790, 791, 792, 793, 794, 795,
971 796, 797, 798, 799, 800, 801, 802, 803, 804, 805,
972 806, 807, 622, 623, 808, 809, 810, 811, 812, 813,
973 814, 815, 816, 817, 818, 819, 820, 821, 6, 822,
974 823, 824, 825, 14, 826, 827, 828, 829, 830, 831,
975 832, 833, 834, 835, 836, 837, 7, 838, 839, 840,
976 841, 842, 843, 844, 845, 846, 847, 624, 579, 580,
977 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
978 591, 592, 593, 594, 595, 596, 597, 848, 849, 850,
979 851, 852, 853, 854, 855, 856, 857, 858, 859, 860,
980 861, 862, 863, 864, 865, 866, 867, 868, 869, 870,
981 871, 872, 8, 678, 679, 680, 681, 873, 874, 875,
982 876, 877, 677, 683, 678, 679, 680, 681, 682, 878,
983 879, 880, 534, 703, 683, 3, 3, 4, 4, 0,
984 5, 5, 6, 6, 697, 698, 699, 700, 701, 7,
985 7, 881, 882, 550, 8, 8, 883, 702, 884, 885,
986 886, 887, 888, 889, 890, 891, 684, 685, 892, 893,
987 15, 894, 3, 895, 4, 896, 9, 5, 3, 6,
988 4, 897, 898, 5, 899, 6, 7, 900, 901, 902,
989 903, 8, 7, 904, 704, 9, 9, 8, 10, 905,
990 906, 907, 908, 909, 910, 911, 705, 10, 10, 912,
991 913, 914, 915, 916, 706, 11, 11, 917, 918, 11,
992 919, 920, 3, 921, 4, 922, 923, 5, 924, 6,
993 12, 925, 9, 926, 927, 928, 7, 929, 9, 930,
994 3, 8, 4, 931, 10, 5, 932, 6, 12, 12,
995 10, 933, 11, 934, 7, 935, 936, 13, 11, 8,
996 937, 14, 938, 939, 940, 941, 942, 15, 13, 13,
997 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,
998 953, 954, 9, 955, 956, 12, 957, 958, 959, 960,
999 961, 12, 962, 963, 10, 964, 3, 965, 4, 966,
1000 9, 5, 11, 6, 967, 13, 968, 707, 14, 14,
1001 7, 13, 10, 969, 970, 8, 971, 972, 973, 974,
1002 11, 975, 976, 977, 978, 979, 980, 981, 982, 983,
1003 984, 985, 986, 987, 988, 12, 989, 990, 991, 992,
1004 993, 994, 995, 996, 997, 14, 998, 999, 1000, 1001,
1005 1002, 14, 1003, 12, 1004, 13, 9, 1005, 1006, 1007,
1006 3, 1008, 4, 1009, 1010, 5, 1011, 6, 10, 1012,
1007 1013, 1014, 1015, 13, 7, 1016, 11, 1017, 1018, 8,
1008 1019, 1020, 3, 1021, 4, 1022, 1023, 5, 1024, 6,
1009 1025, 1026, 1027, 1028, 1029, 14, 7, 1030, 1031, 1032,
1010 1033, 8, 1034, 3, 1035, 4, 1036, 1037, 5, 12,
1011 6, 1038, 1039, 14, 3, 1040, 4, 7, 1041, 5,
1012 9, 6, 8, 1042, 1043, 1044, 1045, 1046, 7, 13,
1013 1047, 1048, 10, 8, 708, 15, 15, 1049, 1050, 1051,
1014 11, 3, 9, 4, 1052, 3, 5, 4, 6, 1053,
1015 5, 3, 6, 4, 10, 7, 5, 1054, 6, 7,
1016 8, 1055, 11, 9, 8, 7, 1056, 1057, 1058, 14,
1017 8, 1059, 15, 12, 9, 10, 1060, 1061, 15, 1062,
1018 1063, 1064, 1065, 11, 1066, 1067, 10, 1068, 1069, 1070,
1019 1071, 1072, 1073, 13, 11, 12, 1074, 0, 0, 0,
1020 0, 9, 0, 0, 0, 9, 0, 0, 0, 0,
1021 0, 9, 0, 10, 0, 13, 12, 10, 0, 0,
1022 0, 11, 15, 10, 0, 11, 0, 12, 0, 0,
1023 0, 11, 0, 14, 0, 0, 13, 0, 0, 0,
1024 15, 0, 0, 0, 0, 0, 0, 13, 0, 0,
1025 0, 0, 0, 0, 12, 14, 0, 0, 12, 0,
1026 0, 0, 0, 0, 12, 0, 0, 0, 0, 0,
1027 0, 0, 0, 0, 13, 0, 14, 0, 13, 0,
1028 0, 0, 0, 0, 13, 0, 0, 14, 0, 0,
1029 0, 0, 0, 0, 0, 0, 15, 0, 0, 0,
1030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1031 0, 0, 0, 0, 14, 0, 0, 0, 14, 0,
1032 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
1033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1036 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1038 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,
1039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1040 0, 0, 0, 15, 0, 0, 0, 0, 0, 0,
1041 0, 0, 0, 0, 15, 0, 0, 0, 0, 0,
1042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1044 0, 15, 0, 0, 0, 15, 0, 0, 0, 0,
1045 0, 15, 44, 45, 46, 47, 48, 49, 50, 51,
1046 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1047 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1048 72, 73, 74, 75, 76, 77, 0, 0, 0, 0,
1049 78, 79, 80, 0, 0, 0, 81, 82, 83, 84,
1050 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1051 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1052 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1053 115, 116, 117, 118, 119, 120, 121, 0, 0, 0,
1054 0, 0, 0, 0, 0, 0, 122, 123, 124, 125,
1055 126, 0, 127, 128, 129, 0, 0, 130, 131, 132,
1056 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
1057 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
1058 153, 154, 155, 0, 0, 0, 156, 0, 0, 157,
1059 158, 159, 160, 161, 162, 163, 0, 164, 165, 166,
1060 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
1061 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1063 0, 178, 179, 180, 181, 182, 183, 184, 185, 186,
1064 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
1065 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
1066 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
1067 217, 218, 219, 220, 221, 0, 222, 0, 223, 224,
1068 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1069 235, 236, 237, 238, 239, 240, 241, 0, 0, 0,
1070 0, 0, 0, 0, 0, 0, 0, 0, 242, 243,
1071 244, 245, 246, 247, 248, 249, 250, 251, 0, 0,
1072 0, 0, 0, 0, 0, 0, 0, 252, 0, 0,
1073 0, 0, 0, 0, 0, 253, 254, 0, 255, 256,
1074 0, 257, 258, 259, 260, 261, 0, 0, 262, 263,
1075 264, 265, 266, 267, 268, 269, 0, 0, 0, 270,
1076 0, 0, 0, 0, 0, 0, 0, 0, 271, 272,
1077 273, 274, 0, 0, 0, 275, 276, 277, 278, 279,
1078 280, 281, 282, 283, 284,
1079};
1080const short yycheckub_c_yycheck[] =
1081 { 301,
1082 0, 301, 0, 303, 304, 0, 301, 0, 572, 573,
1083 301, 371, 582, 264, 0, 264, 264, 264, 264, 0,
1084 264, 264, 264, 301, 264, 264, 264, 264, 264, 264,
1085 264, 309, 310, 353, 354, 355, 356, 357, 358, 359,
1086 360, 264, 337, 338, 513, 514, 515, 516, 517, 518,
1087 519, 520, 521, 522, 264, 264, 264, 264, 264, 264,
1088 0, 264, 264, 264, 264, 264, 366, 264, 264, 364,
1089 264, 264, 0, 264, 264, 264, 264, 264, 264, 264,
1090 0, 265, 266, 534, 535, 536, 537, 538, 539, 540,
1091 541, 264, 264, 264, 264, 264, 264, 264, 264, 399,
1092 264, 264, 402, 264, 264, 264, 264, 264, 264, 264,
1093 264, 411, 264, 0, 264, 264, 264, 264, 302, 264,
1094 398, 264, 400, 264, 308, 403, 264, 264, 264, 264,
1095 264, 264, 264, 0, 264, 264, 264, 264, 264, 264,
1096 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
1097 264, 264, 447, 448, 264, 264, 264, 264, 264, 264,
1098 264, 264, 264, 264, 264, 264, 264, 264, 352, 264,
1099 264, 264, 264, 0, 264, 264, 264, 264, 264, 264,
1100 264, 264, 264, 264, 264, 264, 370, 264, 264, 264,
1101 264, 264, 264, 264, 264, 264, 264, 492, 427, 428,
1102 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
1103 439, 440, 441, 442, 443, 444, 445, 264, 264, 264,
1104 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
1105 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
1106 264, 264, 426, 545, 546, 547, 548, 264, 264, 264,
1107 264, 264, 543, 555, 545, 546, 547, 548, 549, 264,
1108 264, 264, 562, 42, 555, 265, 266, 265, 266, -1,
1109 265, 266, 265, 266, 576, 577, 578, 579, 580, 265,
1110 266, 264, 264, 561, 265, 266, 264, 589, 264, 264,
1111 264, 264, 264, 264, 264, 264, 587, 588, 264, 264,
1112 0, 264, 302, 264, 302, 264, 490, 302, 308, 302,
1113 308, 264, 264, 308, 264, 308, 302, 264, 264, 264,
1114 264, 302, 308, 264, 42, 265, 266, 308, 512, 264,
1115 264, 264, 264, 264, 264, 264, 42, 265, 266, 264,
1116 264, 264, 264, 264, 42, 265, 266, 264, 264, 533,
1117 264, 264, 352, 264, 352, 264, 264, 352, 264, 352,
1118 544, 264, 302, 264, 264, 264, 352, 264, 308, 264,
1119 370, 352, 370, 264, 302, 370, 264, 370, 265, 266,
1120 308, 264, 302, 264, 370, 264, 264, 571, 308, 370,
1121 264, 575, 264, 264, 264, 264, 264, 581, 265, 266,
1122 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
1123 264, 264, 352, 264, 264, 302, 264, 264, 264, 264,
1124 264, 308, 264, 264, 352, 264, 426, 264, 426, 264,
1125 370, 426, 352, 426, 264, 302, 264, 42, 265, 266,
1126 426, 308, 370, 264, 264, 426, 264, 264, 264, 264,
1127 370, 264, 264, 264, 264, 264, 264, 264, 264, 264,
1128 264, 264, 264, 264, 264, 352, 264, 264, 264, 264,
1129 264, 264, 264, 264, 264, 302, 264, 264, 264, 264,
1130 264, 308, 264, 370, 264, 352, 426, 264, 264, 264,
1131 490, 264, 490, 264, 264, 490, 264, 490, 426, 264,
1132 264, 264, 264, 370, 490, 264, 426, 264, 264, 490,
1133 264, 264, 512, 264, 512, 264, 264, 512, 264, 512,
1134 264, 264, 264, 264, 264, 352, 512, 264, 264, 264,
1135 264, 512, 264, 533, 264, 533, 264, 264, 533, 426,
1136 533, 264, 264, 370, 544, 264, 544, 533, 264, 544,
1137 490, 544, 533, 264, 264, 264, 264, 264, 544, 426,
1138 264, 264, 490, 544, 42, 265, 266, 264, 264, 264,
1139 490, 571, 512, 571, 264, 575, 571, 575, 571, 264,
1140 575, 581, 575, 581, 512, 571, 581, 264, 581, 575,
1141 571, 264, 512, 533, 575, 581, 264, 264, 264, 426,
1142 581, 264, 302, 490, 544, 533, 264, 264, 308, 264,
1143 264, 264, 264, 533, 264, 264, 544, 264, 264, 264,
1144 264, 264, 264, 490, 544, 512, 264, -1, -1, -1,
1145 -1, 571, -1, -1, -1, 575, -1, -1, -1, -1,
1146 -1, 581, -1, 571, -1, 512, 533, 575, -1, -1,
1147 -1, 571, 352, 581, -1, 575, -1, 544, -1, -1,
1148 -1, 581, -1, 490, -1, -1, 533, -1, -1, -1,
1149 370, -1, -1, -1, -1, -1, -1, 544, -1, -1,
1150 -1, -1, -1, -1, 571, 512, -1, -1, 575, -1,
1151 -1, -1, -1, -1, 581, -1, -1, -1, -1, -1,
1152 -1, -1, -1, -1, 571, -1, 533, -1, 575, -1,
1153 -1, -1, -1, -1, 581, -1, -1, 544, -1, -1,
1154 -1, -1, -1, -1, -1, -1, 426, -1, -1, -1,
1155 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1156 -1, -1, -1, -1, 571, -1, -1, -1, 575, -1,
1157 -1, -1, -1, -1, 581, -1, -1, -1, -1, -1,
1158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1161 490, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1162 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1163 -1, -1, 512, -1, -1, -1, -1, -1, -1, -1,
1164 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1165 -1, -1, -1, 533, -1, -1, -1, -1, -1, -1,
1166 -1, -1, -1, -1, 544, -1, -1, -1, -1, -1,
1167 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1169 -1, 571, -1, -1, -1, 575, -1, -1, -1, -1,
1170 -1, 581, 267, 268, 269, 270, 271, 272, 273, 274,
1171 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1172 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1173 295, 296, 297, 298, 299, 300, -1, -1, -1, -1,
1174 305, 306, 307, -1, -1, -1, 311, 312, 313, 314,
1175 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1176 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1177 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1178 345, 346, 347, 348, 349, 350, 351, -1, -1, -1,
1179 -1, -1, -1, -1, -1, -1, 361, 362, 363, 364,
1180 365, -1, 367, 368, 369, -1, -1, 372, 373, 374,
1181 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1182 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1183 395, 396, 397, -1, -1, -1, 401, -1, -1, 404,
1184 405, 406, 407, 408, 409, 410, -1, 412, 413, 414,
1185 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1186 425, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1187 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1188 -1, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1189 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1190 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1191 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1192 485, 486, 487, 488, 489, -1, 491, -1, 493, 494,
1193 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1194 505, 506, 507, 508, 509, 510, 511, -1, -1, -1,
1195 -1, -1, -1, -1, -1, -1, -1, -1, 523, 524,
1196 525, 526, 527, 528, 529, 530, 531, 532, -1, -1,
1197 -1, -1, -1, -1, -1, -1, -1, 542, -1, -1,
1198 -1, -1, -1, -1, -1, 550, 551, -1, 553, 554,
1199 -1, 556, 557, 558, 559, 560, -1, -1, 563, 564,
1200 565, 566, 567, 568, 569, 570, -1, -1, -1, 574,
1201 -1, -1, -1, -1, -1, -1, -1, -1, 583, 584,
1202 585, 586, -1, -1, -1, 590, 591, 592, 593, 594,
1203 595, 596, 597, 598, 599,
1204};
1205#define YYFINAL1 1
1206#ifndef YYDEBUG0
1207#define YYDEBUG0 0
1208#endif
1209#define YYMAXTOKEN599 599
1210#if YYDEBUG0
1211const char * const yynameub_c_yyname[] =
1212 {
1213"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE",
1220"COMMENT","COLON","ANY","ZONESTR","STRING_ARG","VAR_FORCE_TOPLEVEL",
1221"VAR_SERVER","VAR_VERBOSITY","VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE",
1222"VAR_INTERFACE","VAR_PREFER_IP4","VAR_DO_IP4","VAR_DO_IP6","VAR_DO_NAT64",
1223"VAR_PREFER_IP6","VAR_DO_UDP","VAR_DO_TCP","VAR_TCP_MSS","VAR_OUTGOING_TCP_MSS",
1224"VAR_TCP_IDLE_TIMEOUT","VAR_EDNS_TCP_KEEPALIVE",
1225"VAR_EDNS_TCP_KEEPALIVE_TIMEOUT","VAR_SOCK_QUEUE_TIMEOUT","VAR_CHROOT",
1226"VAR_USERNAME","VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE",
1227"VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE",
1228"VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL",
1229"VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS",
1230"VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST",
1231"VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE",
1232"VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST",
1233"VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY",
1234"VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE",
1235"VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR",
1236"VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL",
1237"VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE",
1238"VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE",
1239"VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE",
1240"VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL",
1241"VAR_HARDEN_DNSSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE",
1242"VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL",
1243"VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE",
1244"VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE",
1245"VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH",
1246"VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL",
1247"VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT",
1248"VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE",
1249"VAR_CONTROL_CERT_FILE","VAR_CONTROL_USE_CERT","VAR_TCP_REUSE_TIMEOUT",
1250"VAR_MAX_REUSE_TCP_QUERIES","VAR_EXTENDED_STATISTICS","VAR_LOCAL_DATA_PTR",
1251"VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME","VAR_UNWANTED_REPLY_THRESHOLD",
1252"VAR_LOG_TIME_ASCII","VAR_DOMAIN_INSECURE","VAR_PYTHON","VAR_PYTHON_SCRIPT",
1253"VAR_VAL_SIG_SKEW_MIN","VAR_VAL_SIG_SKEW_MAX","VAR_VAL_MAX_RESTART",
1254"VAR_CACHE_MIN_TTL","VAR_VAL_LOG_LEVEL","VAR_AUTO_TRUST_ANCHOR_FILE",
1255"VAR_KEEP_MISSING","VAR_ADD_HOLDDOWN","VAR_DEL_HOLDDOWN","VAR_SO_RCVBUF",
1256"VAR_EDNS_BUFFER_SIZE","VAR_PREFETCH","VAR_PREFETCH_KEY","VAR_SO_SNDBUF",
1257"VAR_SO_REUSEPORT","VAR_HARDEN_BELOW_NXDOMAIN","VAR_IGNORE_CD_FLAG",
1258"VAR_LOG_QUERIES","VAR_LOG_REPLIES","VAR_LOG_LOCAL_ACTIONS","VAR_TCP_UPSTREAM",
1259"VAR_SSL_UPSTREAM","VAR_TCP_AUTH_QUERY_TIMEOUT","VAR_SSL_SERVICE_KEY",
1260"VAR_SSL_SERVICE_PEM","VAR_SSL_PORT","VAR_FORWARD_FIRST",
1261"VAR_STUB_SSL_UPSTREAM","VAR_FORWARD_SSL_UPSTREAM","VAR_TLS_CERT_BUNDLE",
1262"VAR_STUB_TCP_UPSTREAM","VAR_FORWARD_TCP_UPSTREAM","VAR_HTTPS_PORT",
1263"VAR_HTTP_ENDPOINT","VAR_HTTP_MAX_STREAMS","VAR_HTTP_QUERY_BUFFER_SIZE",
1264"VAR_HTTP_RESPONSE_BUFFER_SIZE","VAR_HTTP_NODELAY","VAR_HTTP_NOTLS_DOWNSTREAM",
1265"VAR_STUB_FIRST","VAR_MINIMAL_RESPONSES","VAR_RRSET_ROUNDROBIN",
1266"VAR_MAX_UDP_SIZE","VAR_DELAY_CLOSE","VAR_UDP_CONNECT","VAR_UNBLOCK_LAN_ZONES",
1267"VAR_INSECURE_LAN_ZONES","VAR_INFRA_CACHE_MIN_RTT","VAR_INFRA_CACHE_MAX_RTT",
1268"VAR_INFRA_KEEP_PROBING","VAR_DNS64_PREFIX","VAR_DNS64_SYNTHALL",
1269"VAR_DNS64_IGNORE_AAAA","VAR_NAT64_PREFIX","VAR_DNSTAP","VAR_DNSTAP_ENABLE",
1270"VAR_DNSTAP_SOCKET_PATH","VAR_DNSTAP_IP","VAR_DNSTAP_TLS",
1271"VAR_DNSTAP_TLS_SERVER_NAME","VAR_DNSTAP_TLS_CERT_BUNDLE",
1272"VAR_DNSTAP_TLS_CLIENT_KEY_FILE","VAR_DNSTAP_TLS_CLIENT_CERT_FILE",
1273"VAR_DNSTAP_SEND_IDENTITY","VAR_DNSTAP_SEND_VERSION","VAR_DNSTAP_BIDIRECTIONAL",
1274"VAR_DNSTAP_IDENTITY","VAR_DNSTAP_VERSION",
1275"VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1276"VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1277"VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1278"VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1279"VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1280"VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES","VAR_RESPONSE_IP_TAG",
1281"VAR_RESPONSE_IP","VAR_RESPONSE_IP_DATA","VAR_HARDEN_ALGO_DOWNGRADE",
1282"VAR_IP_TRANSPARENT","VAR_IP_DSCP","VAR_DISABLE_DNSSEC_LAME_CHECK",
1283"VAR_IP_RATELIMIT","VAR_IP_RATELIMIT_SLABS","VAR_IP_RATELIMIT_SIZE",
1284"VAR_RATELIMIT","VAR_RATELIMIT_SLABS","VAR_RATELIMIT_SIZE",
1285"VAR_OUTBOUND_MSG_RETRY","VAR_MAX_SENT_COUNT","VAR_MAX_QUERY_RESTARTS",
1286"VAR_RATELIMIT_FOR_DOMAIN","VAR_RATELIMIT_BELOW_DOMAIN",
1287"VAR_IP_RATELIMIT_FACTOR","VAR_RATELIMIT_FACTOR","VAR_IP_RATELIMIT_BACKOFF",
1288"VAR_RATELIMIT_BACKOFF","VAR_SEND_CLIENT_SUBNET","VAR_CLIENT_SUBNET_ZONE",
1289"VAR_CLIENT_SUBNET_ALWAYS_FORWARD","VAR_CLIENT_SUBNET_OPCODE",
1290"VAR_MAX_CLIENT_SUBNET_IPV4","VAR_MAX_CLIENT_SUBNET_IPV6",
1291"VAR_MIN_CLIENT_SUBNET_IPV4","VAR_MIN_CLIENT_SUBNET_IPV6",
1292"VAR_MAX_ECS_TREE_SIZE_IPV4","VAR_MAX_ECS_TREE_SIZE_IPV6","VAR_CAPS_WHITELIST",
1293"VAR_CACHE_MAX_NEGATIVE_TTL","VAR_PERMIT_SMALL_HOLDDOWN",
1294"VAR_QNAME_MINIMISATION","VAR_QNAME_MINIMISATION_STRICT","VAR_IP_FREEBIND",
1295"VAR_DEFINE_TAG","VAR_LOCAL_ZONE_TAG","VAR_ACCESS_CONTROL_TAG",
1296"VAR_LOCAL_ZONE_OVERRIDE","VAR_ACCESS_CONTROL_TAG_ACTION",
1297"VAR_ACCESS_CONTROL_TAG_DATA","VAR_VIEW","VAR_ACCESS_CONTROL_VIEW",
1298"VAR_VIEW_FIRST","VAR_SERVE_EXPIRED","VAR_SERVE_EXPIRED_TTL",
1299"VAR_SERVE_EXPIRED_TTL_RESET","VAR_SERVE_EXPIRED_REPLY_TTL",
1300"VAR_SERVE_EXPIRED_CLIENT_TIMEOUT","VAR_EDE_SERVE_EXPIRED",
1301"VAR_SERVE_ORIGINAL_TTL","VAR_FAKE_DSA","VAR_FAKE_SHA1","VAR_LOG_IDENTITY",
1302"VAR_HIDE_TRUSTANCHOR","VAR_HIDE_HTTP_USER_AGENT","VAR_HTTP_USER_AGENT",
1303"VAR_TRUST_ANCHOR_SIGNALING","VAR_AGGRESSIVE_NSEC","VAR_USE_SYSTEMD",
1304"VAR_SHM_ENABLE","VAR_SHM_KEY","VAR_ROOT_KEY_SENTINEL","VAR_DNSCRYPT",
1305"VAR_DNSCRYPT_ENABLE","VAR_DNSCRYPT_PORT","VAR_DNSCRYPT_PROVIDER",
1306"VAR_DNSCRYPT_SECRET_KEY","VAR_DNSCRYPT_PROVIDER_CERT",
1307"VAR_DNSCRYPT_PROVIDER_CERT_ROTATED","VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1308"VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS","VAR_DNSCRYPT_NONCE_CACHE_SIZE",
1309"VAR_DNSCRYPT_NONCE_CACHE_SLABS","VAR_PAD_RESPONSES",
1310"VAR_PAD_RESPONSES_BLOCK_SIZE","VAR_PAD_QUERIES","VAR_PAD_QUERIES_BLOCK_SIZE",
1311"VAR_IPSECMOD_ENABLED","VAR_IPSECMOD_HOOK","VAR_IPSECMOD_IGNORE_BOGUS",
1312"VAR_IPSECMOD_MAX_TTL","VAR_IPSECMOD_WHITELIST","VAR_IPSECMOD_STRICT",
1313"VAR_CACHEDB","VAR_CACHEDB_BACKEND","VAR_CACHEDB_SECRETSEED",
1314"VAR_CACHEDB_REDISHOST","VAR_CACHEDB_REDISPORT","VAR_CACHEDB_REDISTIMEOUT",
1315"VAR_CACHEDB_REDISEXPIRERECORDS","VAR_CACHEDB_REDISPATH",
1316"VAR_CACHEDB_REDISPASSWORD","VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM",
1317"VAR_FOR_UPSTREAM","VAR_AUTH_ZONE","VAR_ZONEFILE","VAR_MASTER","VAR_URL",
1318"VAR_FOR_DOWNSTREAM","VAR_FALLBACK_ENABLED","VAR_TLS_ADDITIONAL_PORT",
1319"VAR_LOW_RTT","VAR_LOW_RTT_PERMIL","VAR_FAST_SERVER_PERMIL",
1320"VAR_FAST_SERVER_NUM","VAR_ALLOW_NOTIFY","VAR_TLS_WIN_CERT",
1321"VAR_TCP_CONNECTION_LIMIT","VAR_ANSWER_COOKIE","VAR_COOKIE_SECRET",
1322"VAR_IP_RATELIMIT_COOKIE","VAR_FORWARD_NO_CACHE","VAR_STUB_NO_CACHE",
1323"VAR_LOG_SERVFAIL","VAR_DENY_ANY","VAR_UNKNOWN_SERVER_TIME_LIMIT",
1324"VAR_LOG_TAG_QUERYREPLY","VAR_STREAM_WAIT_SIZE","VAR_TLS_CIPHERS",
1325"VAR_TLS_CIPHERSUITES","VAR_TLS_USE_SNI","VAR_IPSET","VAR_IPSET_NAME_V4",
1326"VAR_IPSET_NAME_V6","VAR_TLS_SESSION_TICKET_KEYS","VAR_RPZ","VAR_TAGS",
1327"VAR_RPZ_ACTION_OVERRIDE","VAR_RPZ_CNAME_OVERRIDE","VAR_RPZ_LOG",
1328"VAR_RPZ_LOG_NAME","VAR_DYNLIB","VAR_DYNLIB_FILE","VAR_EDNS_CLIENT_STRING",
1329"VAR_EDNS_CLIENT_STRING_OPCODE","VAR_NSID","VAR_ZONEMD_PERMISSIVE_MODE",
1330"VAR_ZONEMD_CHECK","VAR_ZONEMD_REJECT_ABSENCE","VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1331"VAR_INTERFACE_AUTOMATIC_PORTS","VAR_EDE","VAR_INTERFACE_ACTION",
1332"VAR_INTERFACE_VIEW","VAR_INTERFACE_TAG","VAR_INTERFACE_TAG_ACTION",
1333"VAR_INTERFACE_TAG_DATA","VAR_PROXY_PROTOCOL_PORT",
1334"VAR_STATISTICS_INHIBIT_ZERO","VAR_HARDEN_UNKNOWN_ADDITIONAL",
1335};
1336const char * const yyruleub_c_yyrule[] =
1337 {"$accept : toplevelvars",
1338"toplevelvars :",
1339"toplevelvars : toplevelvars toplevelvar",
1340"toplevelvar : serverstart contents_server",
1341"toplevelvar : stubstart contents_stub",
1342"toplevelvar : forwardstart contents_forward",
1343"toplevelvar : pythonstart contents_py",
1344"toplevelvar : rcstart contents_rc",
1345"toplevelvar : dtstart contents_dt",
1346"toplevelvar : viewstart contents_view",
1347"toplevelvar : dnscstart contents_dnsc",
1348"toplevelvar : cachedbstart contents_cachedb",
1349"toplevelvar : ipsetstart contents_ipset",
1350"toplevelvar : authstart contents_auth",
1351"toplevelvar : rpzstart contents_rpz",
1352"toplevelvar : dynlibstart contents_dl",
1353"toplevelvar : force_toplevel",
1354"force_toplevel : VAR_FORCE_TOPLEVEL",
1355"serverstart : VAR_SERVER",
1356"contents_server : contents_server content_server",
1357"contents_server :",
1358"content_server : server_num_threads",
1359"content_server : server_verbosity",
1360"content_server : server_port",
1361"content_server : server_outgoing_range",
1362"content_server : server_do_ip4",
1363"content_server : server_do_ip6",
1364"content_server : server_do_nat64",
1365"content_server : server_prefer_ip4",
1366"content_server : server_prefer_ip6",
1367"content_server : server_do_udp",
1368"content_server : server_do_tcp",
1369"content_server : server_tcp_mss",
1370"content_server : server_outgoing_tcp_mss",
1371"content_server : server_tcp_idle_timeout",
1372"content_server : server_tcp_keepalive",
1373"content_server : server_tcp_keepalive_timeout",
1374"content_server : server_sock_queue_timeout",
1375"content_server : server_interface",
1376"content_server : server_chroot",
1377"content_server : server_username",
1378"content_server : server_directory",
1379"content_server : server_logfile",
1380"content_server : server_pidfile",
1381"content_server : server_msg_cache_size",
1382"content_server : server_msg_cache_slabs",
1383"content_server : server_num_queries_per_thread",
1384"content_server : server_rrset_cache_size",
1385"content_server : server_rrset_cache_slabs",
1386"content_server : server_outgoing_num_tcp",
1387"content_server : server_infra_host_ttl",
1388"content_server : server_infra_lame_ttl",
1389"content_server : server_infra_cache_slabs",
1390"content_server : server_infra_cache_numhosts",
1391"content_server : server_infra_cache_lame_size",
1392"content_server : server_target_fetch_policy",
1393"content_server : server_harden_short_bufsize",
1394"content_server : server_harden_large_queries",
1395"content_server : server_do_not_query_address",
1396"content_server : server_hide_identity",
1397"content_server : server_hide_version",
1398"content_server : server_identity",
1399"content_server : server_version",
1400"content_server : server_hide_http_user_agent",
1401"content_server : server_http_user_agent",
1402"content_server : server_harden_glue",
1403"content_server : server_module_conf",
1404"content_server : server_trust_anchor_file",
1405"content_server : server_trust_anchor",
1406"content_server : server_val_override_date",
1407"content_server : server_bogus_ttl",
1408"content_server : server_val_clean_additional",
1409"content_server : server_val_permissive_mode",
1410"content_server : server_incoming_num_tcp",
1411"content_server : server_msg_buffer_size",
1412"content_server : server_key_cache_size",
1413"content_server : server_key_cache_slabs",
1414"content_server : server_trusted_keys_file",
1415"content_server : server_val_nsec3_keysize_iterations",
1416"content_server : server_use_syslog",
1417"content_server : server_outgoing_interface",
1418"content_server : server_root_hints",
1419"content_server : server_do_not_query_localhost",
1420"content_server : server_cache_max_ttl",
1421"content_server : server_harden_dnssec_stripped",
1422"content_server : server_access_control",
1423"content_server : server_local_zone",
1424"content_server : server_local_data",
1425"content_server : server_interface_automatic",
1426"content_server : server_statistics_interval",
1427"content_server : server_do_daemonize",
1428"content_server : server_use_caps_for_id",
1429"content_server : server_statistics_cumulative",
1430"content_server : server_outgoing_port_permit",
1431"content_server : server_outgoing_port_avoid",
1432"content_server : server_dlv_anchor_file",
1433"content_server : server_dlv_anchor",
1434"content_server : server_neg_cache_size",
1435"content_server : server_harden_referral_path",
1436"content_server : server_private_address",
1437"content_server : server_private_domain",
1438"content_server : server_extended_statistics",
1439"content_server : server_local_data_ptr",
1440"content_server : server_jostle_timeout",
1441"content_server : server_unwanted_reply_threshold",
1442"content_server : server_log_time_ascii",
1443"content_server : server_domain_insecure",
1444"content_server : server_val_sig_skew_min",
1445"content_server : server_val_sig_skew_max",
1446"content_server : server_val_max_restart",
1447"content_server : server_cache_min_ttl",
1448"content_server : server_val_log_level",
1449"content_server : server_auto_trust_anchor_file",
1450"content_server : server_add_holddown",
1451"content_server : server_del_holddown",
1452"content_server : server_keep_missing",
1453"content_server : server_so_rcvbuf",
1454"content_server : server_edns_buffer_size",
1455"content_server : server_prefetch",
1456"content_server : server_prefetch_key",
1457"content_server : server_so_sndbuf",
1458"content_server : server_harden_below_nxdomain",
1459"content_server : server_ignore_cd_flag",
1460"content_server : server_log_queries",
1461"content_server : server_log_replies",
1462"content_server : server_tcp_upstream",
1463"content_server : server_ssl_upstream",
1464"content_server : server_log_local_actions",
1465"content_server : server_ssl_service_key",
1466"content_server : server_ssl_service_pem",
1467"content_server : server_ssl_port",
1468"content_server : server_https_port",
1469"content_server : server_http_endpoint",
1470"content_server : server_http_max_streams",
1471"content_server : server_http_query_buffer_size",
1472"content_server : server_http_response_buffer_size",
1473"content_server : server_http_nodelay",
1474"content_server : server_http_notls_downstream",
1475"content_server : server_minimal_responses",
1476"content_server : server_rrset_roundrobin",
1477"content_server : server_max_udp_size",
1478"content_server : server_so_reuseport",
1479"content_server : server_delay_close",
1480"content_server : server_udp_connect",
1481"content_server : server_unblock_lan_zones",
1482"content_server : server_insecure_lan_zones",
1483"content_server : server_dns64_prefix",
1484"content_server : server_dns64_synthall",
1485"content_server : server_dns64_ignore_aaaa",
1486"content_server : server_nat64_prefix",
1487"content_server : server_infra_cache_min_rtt",
1488"content_server : server_infra_cache_max_rtt",
1489"content_server : server_harden_algo_downgrade",
1490"content_server : server_ip_transparent",
1491"content_server : server_ip_ratelimit",
1492"content_server : server_ratelimit",
1493"content_server : server_ip_dscp",
1494"content_server : server_infra_keep_probing",
1495"content_server : server_ip_ratelimit_slabs",
1496"content_server : server_ratelimit_slabs",
1497"content_server : server_ip_ratelimit_size",
1498"content_server : server_ratelimit_size",
1499"content_server : server_ratelimit_for_domain",
1500"content_server : server_ratelimit_below_domain",
1501"content_server : server_ratelimit_factor",
1502"content_server : server_ip_ratelimit_factor",
1503"content_server : server_ratelimit_backoff",
1504"content_server : server_ip_ratelimit_backoff",
1505"content_server : server_outbound_msg_retry",
1506"content_server : server_max_sent_count",
1507"content_server : server_max_query_restarts",
1508"content_server : server_send_client_subnet",
1509"content_server : server_client_subnet_zone",
1510"content_server : server_client_subnet_always_forward",
1511"content_server : server_client_subnet_opcode",
1512"content_server : server_max_client_subnet_ipv4",
1513"content_server : server_max_client_subnet_ipv6",
1514"content_server : server_min_client_subnet_ipv4",
1515"content_server : server_min_client_subnet_ipv6",
1516"content_server : server_max_ecs_tree_size_ipv4",
1517"content_server : server_max_ecs_tree_size_ipv6",
1518"content_server : server_caps_whitelist",
1519"content_server : server_cache_max_negative_ttl",
1520"content_server : server_permit_small_holddown",
1521"content_server : server_qname_minimisation",
1522"content_server : server_ip_freebind",
1523"content_server : server_define_tag",
1524"content_server : server_local_zone_tag",
1525"content_server : server_disable_dnssec_lame_check",
1526"content_server : server_access_control_tag",
1527"content_server : server_local_zone_override",
1528"content_server : server_access_control_tag_action",
1529"content_server : server_access_control_tag_data",
1530"content_server : server_access_control_view",
1531"content_server : server_interface_action",
1532"content_server : server_interface_view",
1533"content_server : server_interface_tag",
1534"content_server : server_interface_tag_action",
1535"content_server : server_interface_tag_data",
1536"content_server : server_qname_minimisation_strict",
1537"content_server : server_pad_responses",
1538"content_server : server_pad_responses_block_size",
1539"content_server : server_pad_queries",
1540"content_server : server_pad_queries_block_size",
1541"content_server : server_serve_expired",
1542"content_server : server_serve_expired_ttl",
1543"content_server : server_serve_expired_ttl_reset",
1544"content_server : server_serve_expired_reply_ttl",
1545"content_server : server_serve_expired_client_timeout",
1546"content_server : server_ede_serve_expired",
1547"content_server : server_serve_original_ttl",
1548"content_server : server_fake_dsa",
1549"content_server : server_log_identity",
1550"content_server : server_use_systemd",
1551"content_server : server_response_ip_tag",
1552"content_server : server_response_ip",
1553"content_server : server_response_ip_data",
1554"content_server : server_shm_enable",
1555"content_server : server_shm_key",
1556"content_server : server_fake_sha1",
1557"content_server : server_hide_trustanchor",
1558"content_server : server_trust_anchor_signaling",
1559"content_server : server_root_key_sentinel",
1560"content_server : server_ipsecmod_enabled",
1561"content_server : server_ipsecmod_hook",
1562"content_server : server_ipsecmod_ignore_bogus",
1563"content_server : server_ipsecmod_max_ttl",
1564"content_server : server_ipsecmod_whitelist",
1565"content_server : server_ipsecmod_strict",
1566"content_server : server_udp_upstream_without_downstream",
1567"content_server : server_aggressive_nsec",
1568"content_server : server_tls_cert_bundle",
1569"content_server : server_tls_additional_port",
1570"content_server : server_low_rtt",
1571"content_server : server_fast_server_permil",
1572"content_server : server_fast_server_num",
1573"content_server : server_tls_win_cert",
1574"content_server : server_tcp_connection_limit",
1575"content_server : server_log_servfail",
1576"content_server : server_deny_any",
1577"content_server : server_unknown_server_time_limit",
1578"content_server : server_log_tag_queryreply",
1579"content_server : server_stream_wait_size",
1580"content_server : server_tls_ciphers",
1581"content_server : server_tls_ciphersuites",
1582"content_server : server_tls_session_ticket_keys",
1583"content_server : server_answer_cookie",
1584"content_server : server_cookie_secret",
1585"content_server : server_ip_ratelimit_cookie",
1586"content_server : server_tls_use_sni",
1587"content_server : server_edns_client_string",
1588"content_server : server_edns_client_string_opcode",
1589"content_server : server_nsid",
1590"content_server : server_zonemd_permissive_mode",
1591"content_server : server_max_reuse_tcp_queries",
1592"content_server : server_tcp_reuse_timeout",
1593"content_server : server_tcp_auth_query_timeout",
1594"content_server : server_interface_automatic_ports",
1595"content_server : server_ede",
1596"content_server : server_proxy_protocol_port",
1597"content_server : server_statistics_inhibit_zero",
1598"content_server : server_harden_unknown_additional",
1599"stubstart : VAR_STUB_ZONE",
1600"contents_stub : contents_stub content_stub",
1601"contents_stub :",
1602"content_stub : stub_name",
1603"content_stub : stub_host",
1604"content_stub : stub_addr",
1605"content_stub : stub_prime",
1606"content_stub : stub_first",
1607"content_stub : stub_no_cache",
1608"content_stub : stub_ssl_upstream",
1609"content_stub : stub_tcp_upstream",
1610"forwardstart : VAR_FORWARD_ZONE",
1611"contents_forward : contents_forward content_forward",
1612"contents_forward :",
1613"content_forward : forward_name",
1614"content_forward : forward_host",
1615"content_forward : forward_addr",
1616"content_forward : forward_first",
1617"content_forward : forward_no_cache",
1618"content_forward : forward_ssl_upstream",
1619"content_forward : forward_tcp_upstream",
1620"viewstart : VAR_VIEW",
1621"contents_view : contents_view content_view",
1622"contents_view :",
1623"content_view : view_name",
1624"content_view : view_local_zone",
1625"content_view : view_local_data",
1626"content_view : view_first",
1627"content_view : view_response_ip",
1628"content_view : view_response_ip_data",
1629"content_view : view_local_data_ptr",
1630"authstart : VAR_AUTH_ZONE",
1631"contents_auth : contents_auth content_auth",
1632"contents_auth :",
1633"content_auth : auth_name",
1634"content_auth : auth_zonefile",
1635"content_auth : auth_master",
1636"content_auth : auth_url",
1637"content_auth : auth_for_downstream",
1638"content_auth : auth_for_upstream",
1639"content_auth : auth_fallback_enabled",
1640"content_auth : auth_allow_notify",
1641"content_auth : auth_zonemd_check",
1642"content_auth : auth_zonemd_reject_absence",
1643"rpz_tag : VAR_TAGS STRING_ARG",
1644"rpz_action_override : VAR_RPZ_ACTION_OVERRIDE STRING_ARG",
1645"rpz_cname_override : VAR_RPZ_CNAME_OVERRIDE STRING_ARG",
1646"rpz_log : VAR_RPZ_LOG STRING_ARG",
1647"rpz_log_name : VAR_RPZ_LOG_NAME STRING_ARG",
1648"rpz_signal_nxdomain_ra : VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG",
1649"rpzstart : VAR_RPZ",
1650"contents_rpz : contents_rpz content_rpz",
1651"contents_rpz :",
1652"content_rpz : auth_name",
1653"content_rpz : auth_zonefile",
1654"content_rpz : rpz_tag",
1655"content_rpz : auth_master",
1656"content_rpz : auth_url",
1657"content_rpz : auth_allow_notify",
1658"content_rpz : rpz_action_override",
1659"content_rpz : rpz_cname_override",
1660"content_rpz : rpz_log",
1661"content_rpz : rpz_log_name",
1662"content_rpz : rpz_signal_nxdomain_ra",
1663"content_rpz : auth_for_downstream",
1664"server_num_threads : VAR_NUM_THREADS STRING_ARG",
1665"server_verbosity : VAR_VERBOSITY STRING_ARG",
1666"server_statistics_interval : VAR_STATISTICS_INTERVAL STRING_ARG",
1667"server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING_ARG",
1668"server_extended_statistics : VAR_EXTENDED_STATISTICS STRING_ARG",
1669"server_statistics_inhibit_zero : VAR_STATISTICS_INHIBIT_ZERO STRING_ARG",
1670"server_shm_enable : VAR_SHM_ENABLE STRING_ARG",
1671"server_shm_key : VAR_SHM_KEY STRING_ARG",
1672"server_port : VAR_PORT STRING_ARG",
1673"server_send_client_subnet : VAR_SEND_CLIENT_SUBNET STRING_ARG",
1674"server_client_subnet_zone : VAR_CLIENT_SUBNET_ZONE STRING_ARG",
1675"server_client_subnet_always_forward : VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG",
1676"server_client_subnet_opcode : VAR_CLIENT_SUBNET_OPCODE STRING_ARG",
1677"server_max_client_subnet_ipv4 : VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG",
1678"server_max_client_subnet_ipv6 : VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG",
1679"server_min_client_subnet_ipv4 : VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG",
1680"server_min_client_subnet_ipv6 : VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG",
1681"server_max_ecs_tree_size_ipv4 : VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG",
1682"server_max_ecs_tree_size_ipv6 : VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG",
1683"server_interface : VAR_INTERFACE STRING_ARG",
1684"server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING_ARG",
1685"server_outgoing_range : VAR_OUTGOING_RANGE STRING_ARG",
1686"server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING_ARG",
1687"server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING_ARG",
1688"server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING_ARG",
1689"server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING_ARG",
1690"server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING_ARG",
1691"server_interface_automatic_ports : VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG",
1692"server_do_ip4 : VAR_DO_IP4 STRING_ARG",
1693"server_do_ip6 : VAR_DO_IP6 STRING_ARG",
1694"server_do_nat64 : VAR_DO_NAT64 STRING_ARG",
1695"server_do_udp : VAR_DO_UDP STRING_ARG",
1696"server_do_tcp : VAR_DO_TCP STRING_ARG",
1697"server_prefer_ip4 : VAR_PREFER_IP4 STRING_ARG",
1698"server_prefer_ip6 : VAR_PREFER_IP6 STRING_ARG",
1699"server_tcp_mss : VAR_TCP_MSS STRING_ARG",
1700"server_outgoing_tcp_mss : VAR_OUTGOING_TCP_MSS STRING_ARG",
1701"server_tcp_idle_timeout : VAR_TCP_IDLE_TIMEOUT STRING_ARG",
1702"server_max_reuse_tcp_queries : VAR_MAX_REUSE_TCP_QUERIES STRING_ARG",
1703"server_tcp_reuse_timeout : VAR_TCP_REUSE_TIMEOUT STRING_ARG",
1704"server_tcp_auth_query_timeout : VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG",
1705"server_tcp_keepalive : VAR_EDNS_TCP_KEEPALIVE STRING_ARG",
1706"server_tcp_keepalive_timeout : VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG",
1707"server_sock_queue_timeout : VAR_SOCK_QUEUE_TIMEOUT STRING_ARG",
1708"server_tcp_upstream : VAR_TCP_UPSTREAM STRING_ARG",
1709"server_udp_upstream_without_downstream : VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG",
1710"server_ssl_upstream : VAR_SSL_UPSTREAM STRING_ARG",
1711"server_ssl_service_key : VAR_SSL_SERVICE_KEY STRING_ARG",
1712"server_ssl_service_pem : VAR_SSL_SERVICE_PEM STRING_ARG",
1713"server_ssl_port : VAR_SSL_PORT STRING_ARG",
1714"server_tls_cert_bundle : VAR_TLS_CERT_BUNDLE STRING_ARG",
1715"server_tls_win_cert : VAR_TLS_WIN_CERT STRING_ARG",
1716"server_tls_additional_port : VAR_TLS_ADDITIONAL_PORT STRING_ARG",
1717"server_tls_ciphers : VAR_TLS_CIPHERS STRING_ARG",
1718"server_tls_ciphersuites : VAR_TLS_CIPHERSUITES STRING_ARG",
1719"server_tls_session_ticket_keys : VAR_TLS_SESSION_TICKET_KEYS STRING_ARG",
1720"server_tls_use_sni : VAR_TLS_USE_SNI STRING_ARG",
1721"server_https_port : VAR_HTTPS_PORT STRING_ARG",
1722"server_http_endpoint : VAR_HTTP_ENDPOINT STRING_ARG",
1723"server_http_max_streams : VAR_HTTP_MAX_STREAMS STRING_ARG",
1724"server_http_query_buffer_size : VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG",
1725"server_http_response_buffer_size : VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG",
1726"server_http_nodelay : VAR_HTTP_NODELAY STRING_ARG",
1727"server_http_notls_downstream : VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG",
1728"server_use_systemd : VAR_USE_SYSTEMD STRING_ARG",
1729"server_do_daemonize : VAR_DO_DAEMONIZE STRING_ARG",
1730"server_use_syslog : VAR_USE_SYSLOG STRING_ARG",
1731"server_log_time_ascii : VAR_LOG_TIME_ASCII STRING_ARG",
1732"server_log_queries : VAR_LOG_QUERIES STRING_ARG",
1733"server_log_replies : VAR_LOG_REPLIES STRING_ARG",
1734"server_log_tag_queryreply : VAR_LOG_TAG_QUERYREPLY STRING_ARG",
1735"server_log_servfail : VAR_LOG_SERVFAIL STRING_ARG",
1736"server_log_local_actions : VAR_LOG_LOCAL_ACTIONS STRING_ARG",
1737"server_chroot : VAR_CHROOT STRING_ARG",
1738"server_username : VAR_USERNAME STRING_ARG",
1739"server_directory : VAR_DIRECTORY STRING_ARG",
1740"server_logfile : VAR_LOGFILE STRING_ARG",
1741"server_pidfile : VAR_PIDFILE STRING_ARG",
1742"server_root_hints : VAR_ROOT_HINTS STRING_ARG",
1743"server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING_ARG",
1744"server_dlv_anchor : VAR_DLV_ANCHOR STRING_ARG",
1745"server_auto_trust_anchor_file : VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG",
1746"server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING_ARG",
1747"server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING_ARG",
1748"server_trust_anchor : VAR_TRUST_ANCHOR STRING_ARG",
1749"server_trust_anchor_signaling : VAR_TRUST_ANCHOR_SIGNALING STRING_ARG",
1750"server_root_key_sentinel : VAR_ROOT_KEY_SENTINEL STRING_ARG",
1751"server_domain_insecure : VAR_DOMAIN_INSECURE STRING_ARG",
1752"server_hide_identity : VAR_HIDE_IDENTITY STRING_ARG",
1753"server_hide_version : VAR_HIDE_VERSION STRING_ARG",
1754"server_hide_trustanchor : VAR_HIDE_TRUSTANCHOR STRING_ARG",
1755"server_hide_http_user_agent : VAR_HIDE_HTTP_USER_AGENT STRING_ARG",
1756"server_identity : VAR_IDENTITY STRING_ARG",
1757"server_version : VAR_VERSION STRING_ARG",
1758"server_http_user_agent : VAR_HTTP_USER_AGENT STRING_ARG",
1759"server_nsid : VAR_NSID STRING_ARG",
1760"server_so_rcvbuf : VAR_SO_RCVBUF STRING_ARG",
1761"server_so_sndbuf : VAR_SO_SNDBUF STRING_ARG",
1762"server_so_reuseport : VAR_SO_REUSEPORT STRING_ARG",
1763"server_ip_transparent : VAR_IP_TRANSPARENT STRING_ARG",
1764"server_ip_freebind : VAR_IP_FREEBIND STRING_ARG",
1765"server_ip_dscp : VAR_IP_DSCP STRING_ARG",
1766"server_stream_wait_size : VAR_STREAM_WAIT_SIZE STRING_ARG",
1767"server_edns_buffer_size : VAR_EDNS_BUFFER_SIZE STRING_ARG",
1768"server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING_ARG",
1769"server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING_ARG",
1770"server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING_ARG",
1771"server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING_ARG",
1772"server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING_ARG",
1773"server_delay_close : VAR_DELAY_CLOSE STRING_ARG",
1774"server_udp_connect : VAR_UDP_CONNECT STRING_ARG",
1775"server_unblock_lan_zones : VAR_UNBLOCK_LAN_ZONES STRING_ARG",
1776"server_insecure_lan_zones : VAR_INSECURE_LAN_ZONES STRING_ARG",
1777"server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING_ARG",
1778"server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING_ARG",
1779"server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING_ARG",
1780"server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING_ARG",
1781"server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING_ARG",
1782"server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING_ARG",
1783"server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING_ARG",
1784"server_infra_cache_min_rtt : VAR_INFRA_CACHE_MIN_RTT STRING_ARG",
1785"server_infra_cache_max_rtt : VAR_INFRA_CACHE_MAX_RTT STRING_ARG",
1786"server_infra_keep_probing : VAR_INFRA_KEEP_PROBING STRING_ARG",
1787"server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING_ARG",
1788"server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING_ARG",
1789"server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING_ARG",
1790"server_harden_glue : VAR_HARDEN_GLUE STRING_ARG",
1791"server_harden_dnssec_stripped : VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG",
1792"server_harden_below_nxdomain : VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG",
1793"server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING_ARG",
1794"server_harden_algo_downgrade : VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG",
1795"server_harden_unknown_additional : VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG",
1796"server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING_ARG",
1797"server_caps_whitelist : VAR_CAPS_WHITELIST STRING_ARG",
1798"server_private_address : VAR_PRIVATE_ADDRESS STRING_ARG",
1799"server_private_domain : VAR_PRIVATE_DOMAIN STRING_ARG",
1800"server_prefetch : VAR_PREFETCH STRING_ARG",
1801"server_prefetch_key : VAR_PREFETCH_KEY STRING_ARG",
1802"server_deny_any : VAR_DENY_ANY STRING_ARG",
1803"server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG",
1804"server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING_ARG",
1805"server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG",
1806"server_access_control : VAR_ACCESS_CONTROL STRING_ARG STRING_ARG",
1807"server_interface_action : VAR_INTERFACE_ACTION STRING_ARG STRING_ARG",
1808"server_module_conf : VAR_MODULE_CONF STRING_ARG",
1809"server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING_ARG",
1810"server_val_sig_skew_min : VAR_VAL_SIG_SKEW_MIN STRING_ARG",
1811"server_val_sig_skew_max : VAR_VAL_SIG_SKEW_MAX STRING_ARG",
1812"server_val_max_restart : VAR_VAL_MAX_RESTART STRING_ARG",
1813"server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING_ARG",
1814"server_cache_max_negative_ttl : VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG",
1815"server_cache_min_ttl : VAR_CACHE_MIN_TTL STRING_ARG",
1816"server_bogus_ttl : VAR_BOGUS_TTL STRING_ARG",
1817"server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING_ARG",
1818"server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING_ARG",
1819"server_aggressive_nsec : VAR_AGGRESSIVE_NSEC STRING_ARG",
1820"server_ignore_cd_flag : VAR_IGNORE_CD_FLAG STRING_ARG",
1821"server_serve_expired : VAR_SERVE_EXPIRED STRING_ARG",
1822"server_serve_expired_ttl : VAR_SERVE_EXPIRED_TTL STRING_ARG",
1823"server_serve_expired_ttl_reset : VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG",
1824"server_serve_expired_reply_ttl : VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG",
1825"server_serve_expired_client_timeout : VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG",
1826"server_ede_serve_expired : VAR_EDE_SERVE_EXPIRED STRING_ARG",
1827"server_serve_original_ttl : VAR_SERVE_ORIGINAL_TTL STRING_ARG",
1828"server_fake_dsa : VAR_FAKE_DSA STRING_ARG",
1829"server_fake_sha1 : VAR_FAKE_SHA1 STRING_ARG",
1830"server_val_log_level : VAR_VAL_LOG_LEVEL STRING_ARG",
1831"server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG",
1832"server_zonemd_permissive_mode : VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG",
1833"server_add_holddown : VAR_ADD_HOLDDOWN STRING_ARG",
1834"server_del_holddown : VAR_DEL_HOLDDOWN STRING_ARG",
1835"server_keep_missing : VAR_KEEP_MISSING STRING_ARG",
1836"server_permit_small_holddown : VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG",
1837"server_key_cache_size : VAR_KEY_CACHE_SIZE STRING_ARG",
1838"server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING_ARG",
1839"server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING_ARG",
1840"server_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG",
1841"server_local_data : VAR_LOCAL_DATA STRING_ARG",
1842"server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG",
1843"server_minimal_responses : VAR_MINIMAL_RESPONSES STRING_ARG",
1844"server_rrset_roundrobin : VAR_RRSET_ROUNDROBIN STRING_ARG",
1845"server_unknown_server_time_limit : VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG",
1846"server_max_udp_size : VAR_MAX_UDP_SIZE STRING_ARG",
1847"server_dns64_prefix : VAR_DNS64_PREFIX STRING_ARG",
1848"server_dns64_synthall : VAR_DNS64_SYNTHALL STRING_ARG",
1849"server_dns64_ignore_aaaa : VAR_DNS64_IGNORE_AAAA STRING_ARG",
1850"server_nat64_prefix : VAR_NAT64_PREFIX STRING_ARG",
1851"server_define_tag : VAR_DEFINE_TAG STRING_ARG",
1852"server_local_zone_tag : VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG",
1853"server_access_control_tag : VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG",
1854"server_access_control_tag_action : VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG",
1855"server_access_control_tag_data : VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG",
1856"server_local_zone_override : VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG",
1857"server_access_control_view : VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG",
1858"server_interface_tag : VAR_INTERFACE_TAG STRING_ARG STRING_ARG",
1859"server_interface_tag_action : VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG",
1860"server_interface_tag_data : VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG",
1861"server_interface_view : VAR_INTERFACE_VIEW STRING_ARG STRING_ARG",
1862"server_response_ip_tag : VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG",
1863"server_ip_ratelimit : VAR_IP_RATELIMIT STRING_ARG",
1864"server_ip_ratelimit_cookie : VAR_IP_RATELIMIT_COOKIE STRING_ARG",
1865"server_ratelimit : VAR_RATELIMIT STRING_ARG",
1866"server_ip_ratelimit_size : VAR_IP_RATELIMIT_SIZE STRING_ARG",
1867"server_ratelimit_size : VAR_RATELIMIT_SIZE STRING_ARG",
1868"server_ip_ratelimit_slabs : VAR_IP_RATELIMIT_SLABS STRING_ARG",
1869"server_ratelimit_slabs : VAR_RATELIMIT_SLABS STRING_ARG",
1870"server_ratelimit_for_domain : VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG",
1871"server_ratelimit_below_domain : VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG",
1872"server_ip_ratelimit_factor : VAR_IP_RATELIMIT_FACTOR STRING_ARG",
1873"server_ratelimit_factor : VAR_RATELIMIT_FACTOR STRING_ARG",
1874"server_ip_ratelimit_backoff : VAR_IP_RATELIMIT_BACKOFF STRING_ARG",
1875"server_ratelimit_backoff : VAR_RATELIMIT_BACKOFF STRING_ARG",
1876"server_outbound_msg_retry : VAR_OUTBOUND_MSG_RETRY STRING_ARG",
1877"server_max_sent_count : VAR_MAX_SENT_COUNT STRING_ARG",
1878"server_max_query_restarts : VAR_MAX_QUERY_RESTARTS STRING_ARG",
1879"server_low_rtt : VAR_LOW_RTT STRING_ARG",
1880"server_fast_server_num : VAR_FAST_SERVER_NUM STRING_ARG",
1881"server_fast_server_permil : VAR_FAST_SERVER_PERMIL STRING_ARG",
1882"server_qname_minimisation : VAR_QNAME_MINIMISATION STRING_ARG",
1883"server_qname_minimisation_strict : VAR_QNAME_MINIMISATION_STRICT STRING_ARG",
1884"server_pad_responses : VAR_PAD_RESPONSES STRING_ARG",
1885"server_pad_responses_block_size : VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG",
1886"server_pad_queries : VAR_PAD_QUERIES STRING_ARG",
1887"server_pad_queries_block_size : VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG",
1888"server_ipsecmod_enabled : VAR_IPSECMOD_ENABLED STRING_ARG",
1889"server_ipsecmod_ignore_bogus : VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG",
1890"server_ipsecmod_hook : VAR_IPSECMOD_HOOK STRING_ARG",
1891"server_ipsecmod_max_ttl : VAR_IPSECMOD_MAX_TTL STRING_ARG",
1892"server_ipsecmod_whitelist : VAR_IPSECMOD_WHITELIST STRING_ARG",
1893"server_ipsecmod_strict : VAR_IPSECMOD_STRICT STRING_ARG",
1894"server_edns_client_string : VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG",
1895"server_edns_client_string_opcode : VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG",
1896"server_ede : VAR_EDE STRING_ARG",
1897"server_proxy_protocol_port : VAR_PROXY_PROTOCOL_PORT STRING_ARG",
1898"stub_name : VAR_NAME STRING_ARG",
1899"stub_host : VAR_STUB_HOST STRING_ARG",
1900"stub_addr : VAR_STUB_ADDR STRING_ARG",
1901"stub_first : VAR_STUB_FIRST STRING_ARG",
1902"stub_no_cache : VAR_STUB_NO_CACHE STRING_ARG",
1903"stub_ssl_upstream : VAR_STUB_SSL_UPSTREAM STRING_ARG",
1904"stub_tcp_upstream : VAR_STUB_TCP_UPSTREAM STRING_ARG",
1905"stub_prime : VAR_STUB_PRIME STRING_ARG",
1906"forward_name : VAR_NAME STRING_ARG",
1907"forward_host : VAR_FORWARD_HOST STRING_ARG",
1908"forward_addr : VAR_FORWARD_ADDR STRING_ARG",
1909"forward_first : VAR_FORWARD_FIRST STRING_ARG",
1910"forward_no_cache : VAR_FORWARD_NO_CACHE STRING_ARG",
1911"forward_ssl_upstream : VAR_FORWARD_SSL_UPSTREAM STRING_ARG",
1912"forward_tcp_upstream : VAR_FORWARD_TCP_UPSTREAM STRING_ARG",
1913"auth_name : VAR_NAME STRING_ARG",
1914"auth_zonefile : VAR_ZONEFILE STRING_ARG",
1915"auth_master : VAR_MASTER STRING_ARG",
1916"auth_url : VAR_URL STRING_ARG",
1917"auth_allow_notify : VAR_ALLOW_NOTIFY STRING_ARG",
1918"auth_zonemd_check : VAR_ZONEMD_CHECK STRING_ARG",
1919"auth_zonemd_reject_absence : VAR_ZONEMD_REJECT_ABSENCE STRING_ARG",
1920"auth_for_downstream : VAR_FOR_DOWNSTREAM STRING_ARG",
1921"auth_for_upstream : VAR_FOR_UPSTREAM STRING_ARG",
1922"auth_fallback_enabled : VAR_FALLBACK_ENABLED STRING_ARG",
1923"view_name : VAR_NAME STRING_ARG",
1924"view_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG",
1925"view_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG",
1926"view_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG",
1927"view_local_data : VAR_LOCAL_DATA STRING_ARG",
1928"view_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG",
1929"view_first : VAR_VIEW_FIRST STRING_ARG",
1930"rcstart : VAR_REMOTE_CONTROL",
1931"contents_rc : contents_rc content_rc",
1932"contents_rc :",
1933"content_rc : rc_control_enable",
1934"content_rc : rc_control_interface",
1935"content_rc : rc_control_port",
1936"content_rc : rc_server_key_file",
1937"content_rc : rc_server_cert_file",
1938"content_rc : rc_control_key_file",
1939"content_rc : rc_control_cert_file",
1940"content_rc : rc_control_use_cert",
1941"rc_control_enable : VAR_CONTROL_ENABLE STRING_ARG",
1942"rc_control_port : VAR_CONTROL_PORT STRING_ARG",
1943"rc_control_interface : VAR_CONTROL_INTERFACE STRING_ARG",
1944"rc_control_use_cert : VAR_CONTROL_USE_CERT STRING_ARG",
1945"rc_server_key_file : VAR_SERVER_KEY_FILE STRING_ARG",
1946"rc_server_cert_file : VAR_SERVER_CERT_FILE STRING_ARG",
1947"rc_control_key_file : VAR_CONTROL_KEY_FILE STRING_ARG",
1948"rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING_ARG",
1949"dtstart : VAR_DNSTAP",
1950"contents_dt : contents_dt content_dt",
1951"contents_dt :",
1952"content_dt : dt_dnstap_enable",
1953"content_dt : dt_dnstap_socket_path",
1954"content_dt : dt_dnstap_bidirectional",
1955"content_dt : dt_dnstap_ip",
1956"content_dt : dt_dnstap_tls",
1957"content_dt : dt_dnstap_tls_server_name",
1958"content_dt : dt_dnstap_tls_cert_bundle",
1959"content_dt : dt_dnstap_tls_client_key_file",
1960"content_dt : dt_dnstap_tls_client_cert_file",
1961"content_dt : dt_dnstap_send_identity",
1962"content_dt : dt_dnstap_send_version",
1963"content_dt : dt_dnstap_identity",
1964"content_dt : dt_dnstap_version",
1965"content_dt : dt_dnstap_log_resolver_query_messages",
1966"content_dt : dt_dnstap_log_resolver_response_messages",
1967"content_dt : dt_dnstap_log_client_query_messages",
1968"content_dt : dt_dnstap_log_client_response_messages",
1969"content_dt : dt_dnstap_log_forwarder_query_messages",
1970"content_dt : dt_dnstap_log_forwarder_response_messages",
1971"dt_dnstap_enable : VAR_DNSTAP_ENABLE STRING_ARG",
1972"dt_dnstap_bidirectional : VAR_DNSTAP_BIDIRECTIONAL STRING_ARG",
1973"dt_dnstap_socket_path : VAR_DNSTAP_SOCKET_PATH STRING_ARG",
1974"dt_dnstap_ip : VAR_DNSTAP_IP STRING_ARG",
1975"dt_dnstap_tls : VAR_DNSTAP_TLS STRING_ARG",
1976"dt_dnstap_tls_server_name : VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG",
1977"dt_dnstap_tls_cert_bundle : VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG",
1978"dt_dnstap_tls_client_key_file : VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG",
1979"dt_dnstap_tls_client_cert_file : VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG",
1980"dt_dnstap_send_identity : VAR_DNSTAP_SEND_IDENTITY STRING_ARG",
1981"dt_dnstap_send_version : VAR_DNSTAP_SEND_VERSION STRING_ARG",
1982"dt_dnstap_identity : VAR_DNSTAP_IDENTITY STRING_ARG",
1983"dt_dnstap_version : VAR_DNSTAP_VERSION STRING_ARG",
1984"dt_dnstap_log_resolver_query_messages : VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG",
1985"dt_dnstap_log_resolver_response_messages : VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG",
1986"dt_dnstap_log_client_query_messages : VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG",
1987"dt_dnstap_log_client_response_messages : VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG",
1988"dt_dnstap_log_forwarder_query_messages : VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG",
1989"dt_dnstap_log_forwarder_response_messages : VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG",
1990"pythonstart : VAR_PYTHON",
1991"contents_py : contents_py content_py",
1992"contents_py :",
1993"content_py : py_script",
1994"py_script : VAR_PYTHON_SCRIPT STRING_ARG",
1995"dynlibstart : VAR_DYNLIB",
1996"contents_dl : contents_dl content_dl",
1997"contents_dl :",
1998"content_dl : dl_file",
1999"dl_file : VAR_DYNLIB_FILE STRING_ARG",
2000"server_disable_dnssec_lame_check : VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG",
2001"server_log_identity : VAR_LOG_IDENTITY STRING_ARG",
2002"server_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG",
2003"server_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG",
2004"dnscstart : VAR_DNSCRYPT",
2005"contents_dnsc : contents_dnsc content_dnsc",
2006"contents_dnsc :",
2007"content_dnsc : dnsc_dnscrypt_enable",
2008"content_dnsc : dnsc_dnscrypt_port",
2009"content_dnsc : dnsc_dnscrypt_provider",
2010"content_dnsc : dnsc_dnscrypt_secret_key",
2011"content_dnsc : dnsc_dnscrypt_provider_cert",
2012"content_dnsc : dnsc_dnscrypt_provider_cert_rotated",
2013"content_dnsc : dnsc_dnscrypt_shared_secret_cache_size",
2014"content_dnsc : dnsc_dnscrypt_shared_secret_cache_slabs",
2015"content_dnsc : dnsc_dnscrypt_nonce_cache_size",
2016"content_dnsc : dnsc_dnscrypt_nonce_cache_slabs",
2017"dnsc_dnscrypt_enable : VAR_DNSCRYPT_ENABLE STRING_ARG",
2018"dnsc_dnscrypt_port : VAR_DNSCRYPT_PORT STRING_ARG",
2019"dnsc_dnscrypt_provider : VAR_DNSCRYPT_PROVIDER STRING_ARG",
2020"dnsc_dnscrypt_provider_cert : VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG",
2021"dnsc_dnscrypt_provider_cert_rotated : VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG",
2022"dnsc_dnscrypt_secret_key : VAR_DNSCRYPT_SECRET_KEY STRING_ARG",
2023"dnsc_dnscrypt_shared_secret_cache_size : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG",
2024"dnsc_dnscrypt_shared_secret_cache_slabs : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG",
2025"dnsc_dnscrypt_nonce_cache_size : VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG",
2026"dnsc_dnscrypt_nonce_cache_slabs : VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG",
2027"cachedbstart : VAR_CACHEDB",
2028"contents_cachedb : contents_cachedb content_cachedb",
2029"contents_cachedb :",
2030"content_cachedb : cachedb_backend_name",
2031"content_cachedb : cachedb_secret_seed",
2032"content_cachedb : redis_server_host",
2033"content_cachedb : redis_server_port",
2034"content_cachedb : redis_timeout",
2035"content_cachedb : redis_expire_records",
2036"content_cachedb : redis_server_path",
2037"content_cachedb : redis_server_password",
2038"cachedb_backend_name : VAR_CACHEDB_BACKEND STRING_ARG",
2039"cachedb_secret_seed : VAR_CACHEDB_SECRETSEED STRING_ARG",
2040"redis_server_host : VAR_CACHEDB_REDISHOST STRING_ARG",
2041"redis_server_port : VAR_CACHEDB_REDISPORT STRING_ARG",
2042"redis_server_path : VAR_CACHEDB_REDISPATH STRING_ARG",
2043"redis_server_password : VAR_CACHEDB_REDISPASSWORD STRING_ARG",
2044"redis_timeout : VAR_CACHEDB_REDISTIMEOUT STRING_ARG",
2045"redis_expire_records : VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG",
2046"server_tcp_connection_limit : VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG",
2047"server_answer_cookie : VAR_ANSWER_COOKIE STRING_ARG",
2048"server_cookie_secret : VAR_COOKIE_SECRET STRING_ARG",
2049"ipsetstart : VAR_IPSET",
2050"contents_ipset : contents_ipset content_ipset",
2051"contents_ipset :",
2052"content_ipset : ipset_name_v4",
2053"content_ipset : ipset_name_v6",
2054"ipset_name_v4 : VAR_IPSET_NAME_V4 STRING_ARG",
2055"ipset_name_v6 : VAR_IPSET_NAME_V6 STRING_ARG",
2056};
2057#endif
2058#ifdef YYSTACKSIZE10000
2059#undef YYMAXDEPTH10000
2060#define YYMAXDEPTH10000 YYSTACKSIZE10000
2061#else
2062#ifdef YYMAXDEPTH10000
2063#define YYSTACKSIZE10000 YYMAXDEPTH10000
2064#else
2065#define YYSTACKSIZE10000 10000
2066#define YYMAXDEPTH10000 10000
2067#endif
2068#endif
2069#define YYINITSTACKSIZE200 200
2070/* LINTUSED */
2071int yydebugub_c_debug;
2072int yynerrsub_c_nerrs;
2073int yyerrflagub_c_errflag;
2074int yycharub_c_char;
2075short *yysspub_c_ssp;
2076YYSTYPE *yyvspub_c_vsp;
2077YYSTYPE yyvalub_c_val;
2078YYSTYPE yylvalub_c_lval;
2079short *yyssub_c_ss;
2080short *yysslimub_c_sslim;
2081YYSTYPE *yyvsub_c_vs;
2082unsigned int yystacksizeub_c_stacksize;
2083int yyparseub_c_parse(void);
2084#line 3884 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2085
2086/* parse helper routines could be here */
2087static void
2088validate_respip_action(const char* action)
2089{
2090 if(strcmp(action, "deny")!=0 &&
2091 strcmp(action, "redirect")!=0 &&
2092 strcmp(action, "inform")!=0 &&
2093 strcmp(action, "inform_deny")!=0 &&
2094 strcmp(action, "always_transparent")!=0 &&
2095 strcmp(action, "always_refuse")!=0 &&
2096 strcmp(action, "always_nxdomain")!=0)
2097 {
2098 yyerrorub_c_error("response-ip action: expected deny, redirect, "
2099 "inform, inform_deny, always_transparent, "
2100 "always_refuse or always_nxdomain");
2101 }
2102}
2103
2104static void
2105validate_acl_action(const char* action)
2106{
2107 if(strcmp(action, "deny")!=0 &&
2108 strcmp(action, "refuse")!=0 &&
2109 strcmp(action, "deny_non_local")!=0 &&
2110 strcmp(action, "refuse_non_local")!=0 &&
2111 strcmp(action, "allow_setrd")!=0 &&
2112 strcmp(action, "allow")!=0 &&
2113 strcmp(action, "allow_snoop")!=0 &&
2114 strcmp(action, "allow_cookie")!=0)
2115 {
2116 yyerrorub_c_error("expected deny, refuse, deny_non_local, "
2117 "refuse_non_local, allow, allow_setrd, "
2118 "allow_snoop or allow_cookie as access control action");
2119 }
2120}
2121#line 2114 "configparser.c"
2122/* allocate initial stack or double stack size, up to YYMAXDEPTH */
2123static int yygrowstack(void)
2124{
2125 unsigned int newsize;
2126 long sslen;
2127 short *newss;
2128 YYSTYPE *newvs;
2129
2130 if ((newsize = yystacksizeub_c_stacksize) == 0)
29
Assuming the condition is false
30
Taking false branch
2131 newsize = YYINITSTACKSIZE200;
2132 else if (newsize >= YYMAXDEPTH10000)
31
Assuming 'newsize' is < YYMAXDEPTH
32
Taking false branch
2133 return -1;
2134 else if ((newsize *= 2) > YYMAXDEPTH10000)
33
Assuming the condition is false
34
Taking false branch
2135 newsize = YYMAXDEPTH10000;
2136 sslen = yysspub_c_ssp - yyssub_c_ss;
2137#ifdef SIZE_MAX0xffffffffffffffffUL
2138#define YY_SIZE_MAX0xffffffffffffffffUL SIZE_MAX0xffffffffffffffffUL
2139#else
2140#define YY_SIZE_MAX0xffffffffffffffffUL 0xffffffffU
2141#endif
2142 if (newsize && YY_SIZE_MAX0xffffffffffffffffUL / newsize < sizeof *newss)
35
Assuming 'newsize' is 0
2143 goto bail;
2144 newss = (short *)realloc(yyssub_c_ss, newsize * sizeof *newss);
2145 if (newss == NULL((void *)0))
36
Assuming 'newss' is not equal to NULL
37
Taking false branch
2146 goto bail;
2147 yyssub_c_ss = newss;
2148 yysspub_c_ssp = newss + sslen;
2149 if (newsize
37.1
'newsize' is 0
&& YY_SIZE_MAX0xffffffffffffffffUL / newsize < sizeof *newvs)
2150 goto bail;
2151 newvs = (YYSTYPE *)realloc(yyvsub_c_vs, newsize * sizeof *newvs);
2152 if (newvs == NULL((void *)0))
38
Assuming 'newvs' is not equal to NULL
39
Taking false branch
2153 goto bail;
2154 yyvsub_c_vs = newvs;
2155 yyvspub_c_vsp = newvs + sslen;
2156 yystacksizeub_c_stacksize = newsize;
2157 yysslimub_c_sslim = yyssub_c_ss + newsize - 1;
2158 return 0;
2159bail:
2160 if (yyssub_c_ss)
2161 free(yyssub_c_ss);
2162 if (yyvsub_c_vs)
2163 free(yyvsub_c_vs);
2164 yyssub_c_ss = yysspub_c_ssp = NULL((void *)0);
2165 yyvsub_c_vs = yyvspub_c_vsp = NULL((void *)0);
2166 yystacksizeub_c_stacksize = 0;
2167 return -1;
2168}
2169
2170#define YYABORTgoto yyabort goto yyabort
2171#define YYREJECTgoto yyabort goto yyabort
2172#define YYACCEPTgoto yyaccept goto yyaccept
2173#define YYERRORgoto yyerrlab goto yyerrlab
2174int
2175yyparseub_c_parse(void)
2176{
2177 int yym, yyn, yystateub_c_state;
2178#if YYDEBUG0
2179 const char *yysub_c_s;
2180
2181 if ((yysub_c_s = getenv("YYDEBUG")))
2182 {
2183 yyn = *yysub_c_s;
2184 if (yyn >= '0' && yyn <= '9')
2185 yydebugub_c_debug = yyn - '0';
2186 }
2187#endif /* YYDEBUG */
2188
2189 yynerrsub_c_nerrs = 0;
2190 yyerrflagub_c_errflag = 0;
2191 yycharub_c_char = (-1);
2192
2193 if (yyssub_c_ss == NULL((void *)0) && yygrowstack()) goto yyoverflow;
1
Assuming 'ub_c_ss' is not equal to NULL
2194 yysspub_c_ssp = yyssub_c_ss;
2195 yyvspub_c_vsp = yyvsub_c_vs;
2196 *yysspub_c_ssp = yystateub_c_state = 0;
2197
2198yyloop:
2199 if ((yyn = yydefredub_c_yydefred[yystateub_c_state]) != 0) goto yyreduce;
2
Taking true branch
3
Control jumps to line 2306
13
Taking false branch
2200 if (yycharub_c_char < 0)
2201 {
2202 if ((yycharub_c_char = yylexub_c_lex()) < 0) yycharub_c_char = 0;
2203#if YYDEBUG0
2204 if (yydebugub_c_debug)
2205 {
2206 yysub_c_s = 0;
2207 if (yycharub_c_char <= YYMAXTOKEN599) yysub_c_s = yynameub_c_yyname[yycharub_c_char];
2208 if (!yysub_c_s) yysub_c_s = "illegal-symbol";
2209 printf("%sdebug: state %d, reading %d (%s)\n",
2210 YYPREFIX"yy", yystateub_c_state, yycharub_c_char, yysub_c_s);
2211 }
2212#endif
2213 }
2214 if ((yyn = yysindexub_c_yysindex[yystateub_c_state]) && (yyn += yycharub_c_char) >= 0 &&
14
Assuming 'yyn' is not equal to 0
15
Assuming the condition is false
2215 yyn <= YYTABLESIZE1215 && yycheckub_c_yycheck[yyn] == yycharub_c_char)
2216 {
2217#if YYDEBUG0
2218 if (yydebugub_c_debug)
2219 printf("%sdebug: state %d, shifting to state %d\n",
2220 YYPREFIX"yy", yystateub_c_state, yytableub_c_yytable[yyn]);
2221#endif
2222 if (yysspub_c_ssp >= yysslimub_c_sslim && yygrowstack())
2223 {
2224 goto yyoverflow;
2225 }
2226 *++yysspub_c_ssp = yystateub_c_state = yytableub_c_yytable[yyn];
2227 *++yyvspub_c_vsp = yylvalub_c_lval;
2228 yycharub_c_char = (-1);
2229 if (yyerrflagub_c_errflag > 0) --yyerrflagub_c_errflag;
2230 goto yyloop;
2231 }
2232 if ((yyn = yyrindexub_c_yyrindex[yystateub_c_state]) && (yyn += yycharub_c_char) >= 0 &&
16
Assuming 'yyn' is 0
2233 yyn <= YYTABLESIZE1215 && yycheckub_c_yycheck[yyn] == yycharub_c_char)
2234 {
2235 yyn = yytableub_c_yytable[yyn];
2236 goto yyreduce;
2237 }
2238 if (yyerrflagub_c_errflag) goto yyinrecovery;
17
Assuming 'ub_c_errflag' is 0
18
Taking false branch
2239#if defined(__GNUC__4)
2240 goto yynewerror;
19
Control jumps to line 2243
2241#endif
2242yynewerror:
2243 yyerrorub_c_error("syntax error");
2244#if defined(__GNUC__4)
2245 goto yyerrlab;
20
Control jumps to line 2248
2246#endif
2247yyerrlab:
2248 ++yynerrsub_c_nerrs;
2249yyinrecovery:
2250 if (yyerrflagub_c_errflag < 3)
21
Assuming 'ub_c_errflag' is < 3
22
Taking true branch
2251 {
2252 yyerrflagub_c_errflag = 3;
2253 for (;;)
2254 {
2255 if ((yyn = yysindexub_c_yysindex[*yysspub_c_ssp]) && (yyn += YYERRCODE256) >= 0 &&
23
Assuming 'yyn' is not equal to 0
24
Assuming the condition is true
2256 yyn <= YYTABLESIZE1215 && yycheckub_c_yycheck[yyn] == YYERRCODE256)
25
Assuming 'yyn' is <= YYTABLESIZE
26
Assuming the condition is true
2257 {
2258#if YYDEBUG0
2259 if (yydebugub_c_debug)
2260 printf("%sdebug: state %d, error recovery shifting\
2261 to state %d\n", YYPREFIX"yy", *yysspub_c_ssp, yytableub_c_yytable[yyn]);
2262#endif
2263 if (yysspub_c_ssp >= yysslimub_c_sslim && yygrowstack())
27
Assuming 'ub_c_ssp' is >= 'ub_c_sslim'
28
Calling 'yygrowstack'
40
Returning from 'yygrowstack'
41
Taking false branch
2264 {
2265 goto yyoverflow;
2266 }
2267 *++yysspub_c_ssp = yystateub_c_state = yytableub_c_yytable[yyn];
42
Use of memory allocated with size zero
2268 *++yyvspub_c_vsp = yylvalub_c_lval;
2269 goto yyloop;
2270 }
2271 else
2272 {
2273#if YYDEBUG0
2274 if (yydebugub_c_debug)
2275 printf("%sdebug: error recovery discarding state %d\n",
2276 YYPREFIX"yy", *yysspub_c_ssp);
2277#endif
2278 if (yysspub_c_ssp <= yyssub_c_ss) goto yyabort;
2279 --yysspub_c_ssp;
2280 --yyvspub_c_vsp;
2281 }
2282 }
2283 }
2284 else
2285 {
2286 if (yycharub_c_char == 0) goto yyabort;
2287#if YYDEBUG0
2288 if (yydebugub_c_debug)
2289 {
2290 yysub_c_s = 0;
2291 if (yycharub_c_char <= YYMAXTOKEN599) yysub_c_s = yynameub_c_yyname[yycharub_c_char];
2292 if (!yysub_c_s) yysub_c_s = "illegal-symbol";
2293 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2294 YYPREFIX"yy", yystateub_c_state, yycharub_c_char, yysub_c_s);
2295 }
2296#endif
2297 yycharub_c_char = (-1);
2298 goto yyloop;
2299 }
2300yyreduce:
2301#if YYDEBUG0
2302 if (yydebugub_c_debug)
2303 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2304 YYPREFIX"yy", yystateub_c_state, yyn, yyruleub_c_yyrule[yyn]);
2305#endif
2306 yym = yylenub_c_yylen[yyn];
2307 if (yym
3.1
'yym' is 0
)
4
Taking false branch
2308 yyvalub_c_val = yyvspub_c_vsp[1-yym];
2309 else
2310 memset(&yyvalub_c_val, 0, sizeof yyvalub_c_val);
2311 switch (yyn)
5
'Default' branch taken. Execution continues on line 6138
2312 {
2313case 17:
2314#line 214 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2315{
2316 OUTYY(("\nP(force-toplevel)\n"));
2317 cfg_parser->started_toplevel = 0;
2318 }
2319break;
2320case 18:
2321#line 221 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2322{
2323 OUTYY(("\nP(server:)\n"));
2324 cfg_parser->started_toplevel = 1;
2325 }
2326break;
2327case 262:
2328#line 338 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2329{
2330 struct config_stub* s;
2331 OUTYY(("\nP(stub_zone:)\n"));
2332 cfg_parser->started_toplevel = 1;
2333 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2334 if(s) {
2335 s->next = cfg_parser->cfg->stubs;
2336 cfg_parser->cfg->stubs = s;
2337 } else {
2338 yyerrorub_c_error("out of memory");
2339 }
2340 }
2341break;
2342case 273:
2343#line 357 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2344{
2345 struct config_stub* s;
2346 OUTYY(("\nP(forward_zone:)\n"));
2347 cfg_parser->started_toplevel = 1;
2348 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
2349 if(s) {
2350 s->next = cfg_parser->cfg->forwards;
2351 cfg_parser->cfg->forwards = s;
2352 } else {
2353 yyerrorub_c_error("out of memory");
2354 }
2355 }
2356break;
2357case 283:
2358#line 376 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2359{
2360 struct config_view* s;
2361 OUTYY(("\nP(view:)\n"));
2362 cfg_parser->started_toplevel = 1;
2363 s = (struct config_view*)calloc(1, sizeof(struct config_view));
2364 if(s) {
2365 s->next = cfg_parser->cfg->views;
2366 if(s->next && !s->next->name)
2367 yyerrorub_c_error("view without name");
2368 cfg_parser->cfg->views = s;
2369 } else {
2370 yyerrorub_c_error("out of memory");
2371 }
2372 }
2373break;
2374case 293:
2375#line 397 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2376{
2377 struct config_auth* s;
2378 OUTYY(("\nP(auth_zone:)\n"));
2379 cfg_parser->started_toplevel = 1;
2380 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
2381 if(s) {
2382 s->next = cfg_parser->cfg->auths;
2383 cfg_parser->cfg->auths = s;
2384 /* defaults for auth zone */
2385 s->for_downstream = 1;
2386 s->for_upstream = 1;
2387 s->fallback_enabled = 0;
2388 s->zonemd_check = 0;
2389 s->zonemd_reject_absence = 0;
2390 s->isrpz = 0;
2391 } else {
2392 yyerrorub_c_error("out of memory");
2393 }
2394 }
2395break;
2396case 306:
2397#line 425 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2398{
2399 uint8_t* bitlist;
2400 size_t len = 0;
2401 OUTYY(("P(server_local_zone_tag:%s)\n", yyvsp[0].str));
2402 bitlist = config_parse_taglist(cfg_parser->cfg, yyvspub_c_vsp[0].str,
2403 &len);
2404 free(yyvspub_c_vsp[0].str);
2405 if(!bitlist) {
2406 yyerrorub_c_error("could not parse tags, (define-tag them first)");
2407 }
2408 if(bitlist) {
2409 cfg_parser->cfg->auths->rpz_taglist = bitlist;
2410 cfg_parser->cfg->auths->rpz_taglistlen = len;
2411
2412 }
2413 }
2414break;
2415case 307:
2416#line 444 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2417{
2418 OUTYY(("P(rpz_action_override:%s)\n", yyvsp[0].str));
2419 if(strcmp(yyvspub_c_vsp[0].str, "nxdomain")!=0 && strcmp(yyvspub_c_vsp[0].str, "nodata")!=0 &&
2420 strcmp(yyvspub_c_vsp[0].str, "passthru")!=0 && strcmp(yyvspub_c_vsp[0].str, "drop")!=0 &&
2421 strcmp(yyvspub_c_vsp[0].str, "cname")!=0 && strcmp(yyvspub_c_vsp[0].str, "disabled")!=0) {
2422 yyerrorub_c_error("rpz-action-override action: expected nxdomain, "
2423 "nodata, passthru, drop, cname or disabled");
2424 free(yyvspub_c_vsp[0].str);
2425 cfg_parser->cfg->auths->rpz_action_override = NULL((void *)0);
2426 }
2427 else {
2428 cfg_parser->cfg->auths->rpz_action_override = yyvspub_c_vsp[0].str;
2429 }
2430 }
2431break;
2432case 308:
2433#line 461 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2434{
2435 OUTYY(("P(rpz_cname_override:%s)\n", yyvsp[0].str));
2436 free(cfg_parser->cfg->auths->rpz_cname);
2437 cfg_parser->cfg->auths->rpz_cname = yyvspub_c_vsp[0].str;
2438 }
2439break;
2440case 309:
2441#line 469 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2442{
2443 OUTYY(("P(rpz_log:%s)\n", yyvsp[0].str));
2444 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2445 yyerrorub_c_error("expected yes or no.");
2446 else cfg_parser->cfg->auths->rpz_log = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2447 free(yyvspub_c_vsp[0].str);
2448 }
2449break;
2450case 310:
2451#line 479 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2452{
2453 OUTYY(("P(rpz_log_name:%s)\n", yyvsp[0].str));
2454 free(cfg_parser->cfg->auths->rpz_log_name);
2455 cfg_parser->cfg->auths->rpz_log_name = yyvspub_c_vsp[0].str;
2456 }
2457break;
2458case 311:
2459#line 486 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2460{
2461 OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", yyvsp[0].str));
2462 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2463 yyerrorub_c_error("expected yes or no.");
2464 else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2465 free(yyvspub_c_vsp[0].str);
2466 }
2467break;
2468case 312:
2469#line 496 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2470{
2471 struct config_auth* s;
2472 OUTYY(("\nP(rpz:)\n"));
2473 cfg_parser->started_toplevel = 1;
2474 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
2475 if(s) {
2476 s->next = cfg_parser->cfg->auths;
2477 cfg_parser->cfg->auths = s;
2478 /* defaults for RPZ auth zone */
2479 s->for_downstream = 0;
2480 s->for_upstream = 0;
2481 s->fallback_enabled = 0;
2482 s->isrpz = 1;
2483 } else {
2484 yyerrorub_c_error("out of memory");
2485 }
2486 }
2487break;
2488case 327:
2489#line 521 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2490{
2491 OUTYY(("P(server_num_threads:%s)\n", yyvsp[0].str));
2492 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2493 yyerrorub_c_error("number expected");
2494 else cfg_parser->cfg->num_threads = atoi(yyvspub_c_vsp[0].str);
2495 free(yyvspub_c_vsp[0].str);
2496 }
2497break;
2498case 328:
2499#line 530 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2500{
2501 OUTYY(("P(server_verbosity:%s)\n", yyvsp[0].str));
2502 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2503 yyerrorub_c_error("number expected");
2504 else cfg_parser->cfg->verbosity = atoi(yyvspub_c_vsp[0].str);
2505 free(yyvspub_c_vsp[0].str);
2506 }
2507break;
2508case 329:
2509#line 539 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2510{
2511 OUTYY(("P(server_statistics_interval:%s)\n", yyvsp[0].str));
2512 if(strcmp(yyvspub_c_vsp[0].str, "") == 0 || strcmp(yyvspub_c_vsp[0].str, "0") == 0)
2513 cfg_parser->cfg->stat_interval = 0;
2514 else if(atoi(yyvspub_c_vsp[0].str) == 0)
2515 yyerrorub_c_error("number expected");
2516 else cfg_parser->cfg->stat_interval = atoi(yyvspub_c_vsp[0].str);
2517 free(yyvspub_c_vsp[0].str);
2518 }
2519break;
2520case 330:
2521#line 550 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2522{
2523 OUTYY(("P(server_statistics_cumulative:%s)\n", yyvsp[0].str));
2524 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2525 yyerrorub_c_error("expected yes or no.");
2526 else cfg_parser->cfg->stat_cumulative = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2527 free(yyvspub_c_vsp[0].str);
2528 }
2529break;
2530case 331:
2531#line 559 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2532{
2533 OUTYY(("P(server_extended_statistics:%s)\n", yyvsp[0].str));
2534 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2535 yyerrorub_c_error("expected yes or no.");
2536 else cfg_parser->cfg->stat_extended = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2537 free(yyvspub_c_vsp[0].str);
2538 }
2539break;
2540case 332:
2541#line 568 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2542{
2543 OUTYY(("P(server_statistics_inhibit_zero:%s)\n", yyvsp[0].str));
2544 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2545 yyerrorub_c_error("expected yes or no.");
2546 else cfg_parser->cfg->stat_inhibit_zero = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2547 free(yyvspub_c_vsp[0].str);
2548 }
2549break;
2550case 333:
2551#line 577 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2552{
2553 OUTYY(("P(server_shm_enable:%s)\n", yyvsp[0].str));
2554 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2555 yyerrorub_c_error("expected yes or no.");
2556 else cfg_parser->cfg->shm_enable = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2557 free(yyvspub_c_vsp[0].str);
2558 }
2559break;
2560case 334:
2561#line 586 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2562{
2563 OUTYY(("P(server_shm_key:%s)\n", yyvsp[0].str));
2564 if(strcmp(yyvspub_c_vsp[0].str, "") == 0 || strcmp(yyvspub_c_vsp[0].str, "0") == 0)
2565 cfg_parser->cfg->shm_key = 0;
2566 else if(atoi(yyvspub_c_vsp[0].str) == 0)
2567 yyerrorub_c_error("number expected");
2568 else cfg_parser->cfg->shm_key = atoi(yyvspub_c_vsp[0].str);
2569 free(yyvspub_c_vsp[0].str);
2570 }
2571break;
2572case 335:
2573#line 597 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2574{
2575 OUTYY(("P(server_port:%s)\n", yyvsp[0].str));
2576 if(atoi(yyvspub_c_vsp[0].str) == 0)
2577 yyerrorub_c_error("port number expected");
2578 else cfg_parser->cfg->port = atoi(yyvspub_c_vsp[0].str);
2579 free(yyvspub_c_vsp[0].str);
2580 }
2581break;
2582case 336:
2583#line 606 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2584{
2585 #ifdef CLIENT_SUBNET
2586 OUTYY(("P(server_send_client_subnet:%s)\n", yyvsp[0].str));
2587 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, yyvspub_c_vsp[0].str))
2588 fatal_exit("out of memory adding client-subnet");
2589 #else
2590 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2591 free(yyvspub_c_vsp[0].str);
2592 #endif
2593 }
2594break;
2595case 337:
2596#line 618 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2597{
2598 #ifdef CLIENT_SUBNET
2599 OUTYY(("P(server_client_subnet_zone:%s)\n", yyvsp[0].str));
2600 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
2601 yyvspub_c_vsp[0].str))
2602 fatal_exit("out of memory adding client-subnet-zone");
2603 #else
2604 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2605 free(yyvspub_c_vsp[0].str);
2606 #endif
2607 }
2608break;
2609case 338:
2610#line 632 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2611{
2612 #ifdef CLIENT_SUBNET
2613 OUTYY(("P(server_client_subnet_always_forward:%s)\n", yyvsp[0].str));
2614 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2615 yyerrorub_c_error("expected yes or no.");
2616 else
2617 cfg_parser->cfg->client_subnet_always_forward =
2618 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2619 #else
2620 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2621 #endif
2622 free(yyvspub_c_vsp[0].str);
2623 }
2624break;
2625case 339:
2626#line 647 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2627{
2628 #ifdef CLIENT_SUBNET
2629 OUTYY(("P(client_subnet_opcode:%s)\n", yyvsp[0].str));
2630 OUTYY(("P(Deprecated option, ignoring)\n"));
2631 #else
2632 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2633 #endif
2634 free(yyvspub_c_vsp[0].str);
2635 }
2636break;
2637case 340:
2638#line 658 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2639{
2640 #ifdef CLIENT_SUBNET
2641 OUTYY(("P(max_client_subnet_ipv4:%s)\n", yyvsp[0].str));
2642 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2643 yyerrorub_c_error("IPv4 subnet length expected");
2644 else if (atoi(yyvspub_c_vsp[0].str) > 32)
2645 cfg_parser->cfg->max_client_subnet_ipv4 = 32;
2646 else if (atoi(yyvspub_c_vsp[0].str) < 0)
2647 cfg_parser->cfg->max_client_subnet_ipv4 = 0;
2648 else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi(yyvspub_c_vsp[0].str);
2649 #else
2650 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2651 #endif
2652 free(yyvspub_c_vsp[0].str);
2653 }
2654break;
2655case 341:
2656#line 675 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2657{
2658 #ifdef CLIENT_SUBNET
2659 OUTYY(("P(max_client_subnet_ipv6:%s)\n", yyvsp[0].str));
2660 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2661 yyerrorub_c_error("Ipv6 subnet length expected");
2662 else if (atoi(yyvspub_c_vsp[0].str) > 128)
2663 cfg_parser->cfg->max_client_subnet_ipv6 = 128;
2664 else if (atoi(yyvspub_c_vsp[0].str) < 0)
2665 cfg_parser->cfg->max_client_subnet_ipv6 = 0;
2666 else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi(yyvspub_c_vsp[0].str);
2667 #else
2668 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2669 #endif
2670 free(yyvspub_c_vsp[0].str);
2671 }
2672break;
2673case 342:
2674#line 692 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2675{
2676 #ifdef CLIENT_SUBNET
2677 OUTYY(("P(min_client_subnet_ipv4:%s)\n", yyvsp[0].str));
2678 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2679 yyerrorub_c_error("IPv4 subnet length expected");
2680 else if (atoi(yyvspub_c_vsp[0].str) > 32)
2681 cfg_parser->cfg->min_client_subnet_ipv4 = 32;
2682 else if (atoi(yyvspub_c_vsp[0].str) < 0)
2683 cfg_parser->cfg->min_client_subnet_ipv4 = 0;
2684 else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi(yyvspub_c_vsp[0].str);
2685 #else
2686 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2687 #endif
2688 free(yyvspub_c_vsp[0].str);
2689 }
2690break;
2691case 343:
2692#line 709 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2693{
2694 #ifdef CLIENT_SUBNET
2695 OUTYY(("P(min_client_subnet_ipv6:%s)\n", yyvsp[0].str));
2696 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2697 yyerrorub_c_error("Ipv6 subnet length expected");
2698 else if (atoi(yyvspub_c_vsp[0].str) > 128)
2699 cfg_parser->cfg->min_client_subnet_ipv6 = 128;
2700 else if (atoi(yyvspub_c_vsp[0].str) < 0)
2701 cfg_parser->cfg->min_client_subnet_ipv6 = 0;
2702 else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi(yyvspub_c_vsp[0].str);
2703 #else
2704 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2705 #endif
2706 free(yyvspub_c_vsp[0].str);
2707 }
2708break;
2709case 344:
2710#line 726 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2711{
2712 #ifdef CLIENT_SUBNET
2713 OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", yyvsp[0].str));
2714 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2715 yyerrorub_c_error("IPv4 ECS tree size expected");
2716 else if (atoi(yyvspub_c_vsp[0].str) < 0)
2717 cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
2718 else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi(yyvspub_c_vsp[0].str);
2719 #else
2720 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2721 #endif
2722 free(yyvspub_c_vsp[0].str);
2723 }
2724break;
2725case 345:
2726#line 741 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2727{
2728 #ifdef CLIENT_SUBNET
2729 OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", yyvsp[0].str));
2730 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2731 yyerrorub_c_error("IPv6 ECS tree size expected");
2732 else if (atoi(yyvspub_c_vsp[0].str) < 0)
2733 cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
2734 else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi(yyvspub_c_vsp[0].str);
2735 #else
2736 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
2737 #endif
2738 free(yyvspub_c_vsp[0].str);
2739 }
2740break;
2741case 346:
2742#line 756 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2743{
2744 OUTYY(("P(server_interface:%s)\n", yyvsp[0].str));
2745 if(cfg_parser->cfg->num_ifs == 0)
2746 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
2747 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
2748 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
2749 if(!cfg_parser->cfg->ifs)
2750 yyerrorub_c_error("out of memory");
2751 else
2752 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yyvspub_c_vsp[0].str;
2753 }
2754break;
2755case 347:
2756#line 769 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2757{
2758 OUTYY(("P(server_outgoing_interface:%s)\n", yyvsp[0].str));
2759 if(cfg_parser->cfg->num_out_ifs == 0)
2760 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
2761 else cfg_parser->cfg->out_ifs = realloc(
2762 cfg_parser->cfg->out_ifs,
2763 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
2764 if(!cfg_parser->cfg->out_ifs)
2765 yyerrorub_c_error("out of memory");
2766 else
2767 cfg_parser->cfg->out_ifs[
2768 cfg_parser->cfg->num_out_ifs++] = yyvspub_c_vsp[0].str;
2769 }
2770break;
2771case 348:
2772#line 784 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2773{
2774 OUTYY(("P(server_outgoing_range:%s)\n", yyvsp[0].str));
2775 if(atoi(yyvspub_c_vsp[0].str) == 0)
2776 yyerrorub_c_error("number expected");
2777 else cfg_parser->cfg->outgoing_num_ports = atoi(yyvspub_c_vsp[0].str);
2778 free(yyvspub_c_vsp[0].str);
2779 }
2780break;
2781case 349:
2782#line 793 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2783{
2784 OUTYY(("P(server_outgoing_port_permit:%s)\n", yyvsp[0].str));
2785 if(!cfg_mark_ports(yyvspub_c_vsp[0].str, 1,
2786 cfg_parser->cfg->outgoing_avail_ports, 65536))
2787 yyerrorub_c_error("port number or range (\"low-high\") expected");
2788 free(yyvspub_c_vsp[0].str);
2789 }
2790break;
2791case 350:
2792#line 802 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2793{
2794 OUTYY(("P(server_outgoing_port_avoid:%s)\n", yyvsp[0].str));
2795 if(!cfg_mark_ports(yyvspub_c_vsp[0].str, 0,
2796 cfg_parser->cfg->outgoing_avail_ports, 65536))
2797 yyerrorub_c_error("port number or range (\"low-high\") expected");
2798 free(yyvspub_c_vsp[0].str);
2799 }
2800break;
2801case 351:
2802#line 811 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2803{
2804 OUTYY(("P(server_outgoing_num_tcp:%s)\n", yyvsp[0].str));
2805 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2806 yyerrorub_c_error("number expected");
2807 else cfg_parser->cfg->outgoing_num_tcp = atoi(yyvspub_c_vsp[0].str);
2808 free(yyvspub_c_vsp[0].str);
2809 }
2810break;
2811case 352:
2812#line 820 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2813{
2814 OUTYY(("P(server_incoming_num_tcp:%s)\n", yyvsp[0].str));
2815 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2816 yyerrorub_c_error("number expected");
2817 else cfg_parser->cfg->incoming_num_tcp = atoi(yyvspub_c_vsp[0].str);
2818 free(yyvspub_c_vsp[0].str);
2819 }
2820break;
2821case 353:
2822#line 829 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2823{
2824 OUTYY(("P(server_interface_automatic:%s)\n", yyvsp[0].str));
2825 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2826 yyerrorub_c_error("expected yes or no.");
2827 else cfg_parser->cfg->if_automatic = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2828 free(yyvspub_c_vsp[0].str);
2829 }
2830break;
2831case 354:
2832#line 838 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2833{
2834 OUTYY(("P(server_interface_automatic_ports:%s)\n", yyvsp[0].str));
2835 free(cfg_parser->cfg->if_automatic_ports);
2836 cfg_parser->cfg->if_automatic_ports = yyvspub_c_vsp[0].str;
2837 }
2838break;
2839case 355:
2840#line 845 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2841{
2842 OUTYY(("P(server_do_ip4:%s)\n", yyvsp[0].str));
2843 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2844 yyerrorub_c_error("expected yes or no.");
2845 else cfg_parser->cfg->do_ip4 = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2846 free(yyvspub_c_vsp[0].str);
2847 }
2848break;
2849case 356:
2850#line 854 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2851{
2852 OUTYY(("P(server_do_ip6:%s)\n", yyvsp[0].str));
2853 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2854 yyerrorub_c_error("expected yes or no.");
2855 else cfg_parser->cfg->do_ip6 = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2856 free(yyvspub_c_vsp[0].str);
2857 }
2858break;
2859case 357:
2860#line 863 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2861{
2862 OUTYY(("P(server_do_nat64:%s)\n", yyvsp[0].str));
2863 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2864 yyerrorub_c_error("expected yes or no.");
2865 else cfg_parser->cfg->do_nat64 = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2866 free(yyvspub_c_vsp[0].str);
2867 }
2868break;
2869case 358:
2870#line 872 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2871{
2872 OUTYY(("P(server_do_udp:%s)\n", yyvsp[0].str));
2873 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2874 yyerrorub_c_error("expected yes or no.");
2875 else cfg_parser->cfg->do_udp = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2876 free(yyvspub_c_vsp[0].str);
2877 }
2878break;
2879case 359:
2880#line 881 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2881{
2882 OUTYY(("P(server_do_tcp:%s)\n", yyvsp[0].str));
2883 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2884 yyerrorub_c_error("expected yes or no.");
2885 else cfg_parser->cfg->do_tcp = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2886 free(yyvspub_c_vsp[0].str);
2887 }
2888break;
2889case 360:
2890#line 890 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2891{
2892 OUTYY(("P(server_prefer_ip4:%s)\n", yyvsp[0].str));
2893 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2894 yyerrorub_c_error("expected yes or no.");
2895 else cfg_parser->cfg->prefer_ip4 = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2896 free(yyvspub_c_vsp[0].str);
2897 }
2898break;
2899case 361:
2900#line 899 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2901{
2902 OUTYY(("P(server_prefer_ip6:%s)\n", yyvsp[0].str));
2903 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2904 yyerrorub_c_error("expected yes or no.");
2905 else cfg_parser->cfg->prefer_ip6 = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2906 free(yyvspub_c_vsp[0].str);
2907 }
2908break;
2909case 362:
2910#line 908 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2911{
2912 OUTYY(("P(server_tcp_mss:%s)\n", yyvsp[0].str));
2913 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2914 yyerrorub_c_error("number expected");
2915 else cfg_parser->cfg->tcp_mss = atoi(yyvspub_c_vsp[0].str);
2916 free(yyvspub_c_vsp[0].str);
2917 }
2918break;
2919case 363:
2920#line 917 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2921{
2922 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", yyvsp[0].str));
2923 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2924 yyerrorub_c_error("number expected");
2925 else cfg_parser->cfg->outgoing_tcp_mss = atoi(yyvspub_c_vsp[0].str);
2926 free(yyvspub_c_vsp[0].str);
2927 }
2928break;
2929case 364:
2930#line 926 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2931{
2932 OUTYY(("P(server_tcp_idle_timeout:%s)\n", yyvsp[0].str));
2933 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2934 yyerrorub_c_error("number expected");
2935 else if (atoi(yyvspub_c_vsp[0].str) > 120000)
2936 cfg_parser->cfg->tcp_idle_timeout = 120000;
2937 else if (atoi(yyvspub_c_vsp[0].str) < 1)
2938 cfg_parser->cfg->tcp_idle_timeout = 1;
2939 else cfg_parser->cfg->tcp_idle_timeout = atoi(yyvspub_c_vsp[0].str);
2940 free(yyvspub_c_vsp[0].str);
2941 }
2942break;
2943case 365:
2944#line 939 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2945{
2946 OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", yyvsp[0].str));
2947 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2948 yyerrorub_c_error("number expected");
2949 else if (atoi(yyvspub_c_vsp[0].str) < 1)
2950 cfg_parser->cfg->max_reuse_tcp_queries = 0;
2951 else cfg_parser->cfg->max_reuse_tcp_queries = atoi(yyvspub_c_vsp[0].str);
2952 free(yyvspub_c_vsp[0].str);
2953 }
2954break;
2955case 366:
2956#line 950 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2957{
2958 OUTYY(("P(server_tcp_reuse_timeout:%s)\n", yyvsp[0].str));
2959 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2960 yyerrorub_c_error("number expected");
2961 else if (atoi(yyvspub_c_vsp[0].str) < 1)
2962 cfg_parser->cfg->tcp_reuse_timeout = 0;
2963 else cfg_parser->cfg->tcp_reuse_timeout = atoi(yyvspub_c_vsp[0].str);
2964 free(yyvspub_c_vsp[0].str);
2965 }
2966break;
2967case 367:
2968#line 961 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2969{
2970 OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", yyvsp[0].str));
2971 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2972 yyerrorub_c_error("number expected");
2973 else if (atoi(yyvspub_c_vsp[0].str) < 1)
2974 cfg_parser->cfg->tcp_auth_query_timeout = 0;
2975 else cfg_parser->cfg->tcp_auth_query_timeout = atoi(yyvspub_c_vsp[0].str);
2976 free(yyvspub_c_vsp[0].str);
2977 }
2978break;
2979case 368:
2980#line 972 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2981{
2982 OUTYY(("P(server_tcp_keepalive:%s)\n", yyvsp[0].str));
2983 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
2984 yyerrorub_c_error("expected yes or no.");
2985 else cfg_parser->cfg->do_tcp_keepalive = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
2986 free(yyvspub_c_vsp[0].str);
2987 }
2988break;
2989case 369:
2990#line 981 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
2991{
2992 OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", yyvsp[0].str));
2993 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
2994 yyerrorub_c_error("number expected");
2995 else if (atoi(yyvspub_c_vsp[0].str) > 6553500)
2996 cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
2997 else if (atoi(yyvspub_c_vsp[0].str) < 1)
2998 cfg_parser->cfg->tcp_keepalive_timeout = 0;
2999 else cfg_parser->cfg->tcp_keepalive_timeout = atoi(yyvspub_c_vsp[0].str);
3000 free(yyvspub_c_vsp[0].str);
3001 }
3002break;
3003case 370:
3004#line 994 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3005{
3006 OUTYY(("P(server_sock_queue_timeout:%s)\n", yyvsp[0].str));
3007 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3008 yyerrorub_c_error("number expected");
3009 else if (atoi(yyvspub_c_vsp[0].str) > 6553500)
3010 cfg_parser->cfg->sock_queue_timeout = 6553500;
3011 else if (atoi(yyvspub_c_vsp[0].str) < 1)
3012 cfg_parser->cfg->sock_queue_timeout = 0;
3013 else cfg_parser->cfg->sock_queue_timeout = atoi(yyvspub_c_vsp[0].str);
3014 free(yyvspub_c_vsp[0].str);
3015 }
3016break;
3017case 371:
3018#line 1007 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3019{
3020 OUTYY(("P(server_tcp_upstream:%s)\n", yyvsp[0].str));
3021 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3022 yyerrorub_c_error("expected yes or no.");
3023 else cfg_parser->cfg->tcp_upstream = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3024 free(yyvspub_c_vsp[0].str);
3025 }
3026break;
3027case 372:
3028#line 1016 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3029{
3030 OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", yyvsp[0].str));
3031 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3032 yyerrorub_c_error("expected yes or no.");
3033 else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3034 free(yyvspub_c_vsp[0].str);
3035 }
3036break;
3037case 373:
3038#line 1025 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3039{
3040 OUTYY(("P(server_ssl_upstream:%s)\n", yyvsp[0].str));
3041 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3042 yyerrorub_c_error("expected yes or no.");
3043 else cfg_parser->cfg->ssl_upstream = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3044 free(yyvspub_c_vsp[0].str);
3045 }
3046break;
3047case 374:
3048#line 1034 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3049{
3050 OUTYY(("P(server_ssl_service_key:%s)\n", yyvsp[0].str));
3051 free(cfg_parser->cfg->ssl_service_key);
3052 cfg_parser->cfg->ssl_service_key = yyvspub_c_vsp[0].str;
3053 }
3054break;
3055case 375:
3056#line 1041 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3057{
3058 OUTYY(("P(server_ssl_service_pem:%s)\n", yyvsp[0].str));
3059 free(cfg_parser->cfg->ssl_service_pem);
3060 cfg_parser->cfg->ssl_service_pem = yyvspub_c_vsp[0].str;
3061 }
3062break;
3063case 376:
3064#line 1048 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3065{
3066 OUTYY(("P(server_ssl_port:%s)\n", yyvsp[0].str));
3067 if(atoi(yyvspub_c_vsp[0].str) == 0)
3068 yyerrorub_c_error("port number expected");
3069 else cfg_parser->cfg->ssl_port = atoi(yyvspub_c_vsp[0].str);
3070 free(yyvspub_c_vsp[0].str);
3071 }
3072break;
3073case 377:
3074#line 1057 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3075{
3076 OUTYY(("P(server_tls_cert_bundle:%s)\n", yyvsp[0].str));
3077 free(cfg_parser->cfg->tls_cert_bundle);
3078 cfg_parser->cfg->tls_cert_bundle = yyvspub_c_vsp[0].str;
3079 }
3080break;
3081case 378:
3082#line 1064 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3083{
3084 OUTYY(("P(server_tls_win_cert:%s)\n", yyvsp[0].str));
3085 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3086 yyerrorub_c_error("expected yes or no.");
3087 else cfg_parser->cfg->tls_win_cert = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3088 free(yyvspub_c_vsp[0].str);
3089 }
3090break;
3091case 379:
3092#line 1073 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3093{
3094 OUTYY(("P(server_tls_additional_port:%s)\n", yyvsp[0].str));
3095 if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
3096 yyvspub_c_vsp[0].str))
3097 yyerrorub_c_error("out of memory");
3098 }
3099break;
3100case 380:
3101#line 1081 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3102{
3103 OUTYY(("P(server_tls_ciphers:%s)\n", yyvsp[0].str));
3104 free(cfg_parser->cfg->tls_ciphers);
3105 cfg_parser->cfg->tls_ciphers = yyvspub_c_vsp[0].str;
3106 }
3107break;
3108case 381:
3109#line 1088 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3110{
3111 OUTYY(("P(server_tls_ciphersuites:%s)\n", yyvsp[0].str));
3112 free(cfg_parser->cfg->tls_ciphersuites);
3113 cfg_parser->cfg->tls_ciphersuites = yyvspub_c_vsp[0].str;
3114 }
3115break;
3116case 382:
3117#line 1095 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3118{
3119 OUTYY(("P(server_tls_session_ticket_keys:%s)\n", yyvsp[0].str));
3120 if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
3121 yyvspub_c_vsp[0].str))
3122 yyerrorub_c_error("out of memory");
3123 }
3124break;
3125case 383:
3126#line 1103 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3127{
3128 OUTYY(("P(server_tls_use_sni:%s)\n", yyvsp[0].str));
3129 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3130 yyerrorub_c_error("expected yes or no.");
3131 else cfg_parser->cfg->tls_use_sni = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3132 free(yyvspub_c_vsp[0].str);
3133 }
3134break;
3135case 384:
3136#line 1112 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3137{
3138 OUTYY(("P(server_https_port:%s)\n", yyvsp[0].str));
3139 if(atoi(yyvspub_c_vsp[0].str) == 0)
3140 yyerrorub_c_error("port number expected");
3141 else cfg_parser->cfg->https_port = atoi(yyvspub_c_vsp[0].str);
3142 free(yyvspub_c_vsp[0].str);
3143 }
3144break;
3145case 385:
3146#line 1120 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3147{
3148 OUTYY(("P(server_http_endpoint:%s)\n", yyvsp[0].str));
3149 free(cfg_parser->cfg->http_endpoint);
3150 if(yyvspub_c_vsp[0].str && yyvspub_c_vsp[0].str[0] != '/') {
3151 cfg_parser->cfg->http_endpoint = malloc(strlen(yyvspub_c_vsp[0].str)+2);
3152 if(!cfg_parser->cfg->http_endpoint)
3153 yyerrorub_c_error("out of memory");
3154 cfg_parser->cfg->http_endpoint[0] = '/';
3155 memmove(cfg_parser->cfg->http_endpoint+1, yyvspub_c_vsp[0].str,
3156 strlen(yyvspub_c_vsp[0].str)+1);
3157 free(yyvspub_c_vsp[0].str);
3158 } else {
3159 cfg_parser->cfg->http_endpoint = yyvspub_c_vsp[0].str;
3160 }
3161 }
3162break;
3163case 386:
3164#line 1136 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3165{
3166 OUTYY(("P(server_http_max_streams:%s)\n", yyvsp[0].str));
3167 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3168 yyerrorub_c_error("number expected");
3169 else cfg_parser->cfg->http_max_streams = atoi(yyvspub_c_vsp[0].str);
3170 free(yyvspub_c_vsp[0].str);
3171 }
3172break;
3173case 387:
3174#line 1144 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3175{
3176 OUTYY(("P(server_http_query_buffer_size:%s)\n", yyvsp[0].str));
3177 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str,
3178 &cfg_parser->cfg->http_query_buffer_size))
3179 yyerrorub_c_error("memory size expected");
3180 free(yyvspub_c_vsp[0].str);
3181 }
3182break;
3183case 388:
3184#line 1152 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3185{
3186 OUTYY(("P(server_http_response_buffer_size:%s)\n", yyvsp[0].str));
3187 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str,
3188 &cfg_parser->cfg->http_response_buffer_size))
3189 yyerrorub_c_error("memory size expected");
3190 free(yyvspub_c_vsp[0].str);
3191 }
3192break;
3193case 389:
3194#line 1160 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3195{
3196 OUTYY(("P(server_http_nodelay:%s)\n", yyvsp[0].str));
3197 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3198 yyerrorub_c_error("expected yes or no.");
3199 else cfg_parser->cfg->http_nodelay = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3200 free(yyvspub_c_vsp[0].str);
3201 }
3202break;
3203case 390:
3204#line 1168 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3205{
3206 OUTYY(("P(server_http_notls_downstream:%s)\n", yyvsp[0].str));
3207 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3208 yyerrorub_c_error("expected yes or no.");
3209 else cfg_parser->cfg->http_notls_downstream = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3210 free(yyvspub_c_vsp[0].str);
3211 }
3212break;
3213case 391:
3214#line 1176 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3215{
3216 OUTYY(("P(server_use_systemd:%s)\n", yyvsp[0].str));
3217 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3218 yyerrorub_c_error("expected yes or no.");
3219 else cfg_parser->cfg->use_systemd = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3220 free(yyvspub_c_vsp[0].str);
3221 }
3222break;
3223case 392:
3224#line 1185 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3225{
3226 OUTYY(("P(server_do_daemonize:%s)\n", yyvsp[0].str));
3227 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3228 yyerrorub_c_error("expected yes or no.");
3229 else cfg_parser->cfg->do_daemonize = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3230 free(yyvspub_c_vsp[0].str);
3231 }
3232break;
3233case 393:
3234#line 1194 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3235{
3236 OUTYY(("P(server_use_syslog:%s)\n", yyvsp[0].str));
3237 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3238 yyerrorub_c_error("expected yes or no.");
3239 else cfg_parser->cfg->use_syslog = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3240#if !defined(HAVE_SYSLOG_H1) && !defined(UB_ON_WINDOWS)
3241 if(strcmp(yyvspub_c_vsp[0].str, "yes") == 0)
3242 yyerrorub_c_error("no syslog services are available. "
3243 "(reconfigure and compile to add)");
3244#endif
3245 free(yyvspub_c_vsp[0].str);
3246 }
3247break;
3248case 394:
3249#line 1208 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3250{
3251 OUTYY(("P(server_log_time_ascii:%s)\n", yyvsp[0].str));
3252 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3253 yyerrorub_c_error("expected yes or no.");
3254 else cfg_parser->cfg->log_time_ascii = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3255 free(yyvspub_c_vsp[0].str);
3256 }
3257break;
3258case 395:
3259#line 1217 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3260{
3261 OUTYY(("P(server_log_queries:%s)\n", yyvsp[0].str));
3262 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3263 yyerrorub_c_error("expected yes or no.");
3264 else cfg_parser->cfg->log_queries = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3265 free(yyvspub_c_vsp[0].str);
3266 }
3267break;
3268case 396:
3269#line 1226 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3270{
3271 OUTYY(("P(server_log_replies:%s)\n", yyvsp[0].str));
3272 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3273 yyerrorub_c_error("expected yes or no.");
3274 else cfg_parser->cfg->log_replies = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3275 free(yyvspub_c_vsp[0].str);
3276 }
3277break;
3278case 397:
3279#line 1235 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3280{
3281 OUTYY(("P(server_log_tag_queryreply:%s)\n", yyvsp[0].str));
3282 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3283 yyerrorub_c_error("expected yes or no.");
3284 else cfg_parser->cfg->log_tag_queryreply = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3285 free(yyvspub_c_vsp[0].str);
3286 }
3287break;
3288case 398:
3289#line 1244 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3290{
3291 OUTYY(("P(server_log_servfail:%s)\n", yyvsp[0].str));
3292 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3293 yyerrorub_c_error("expected yes or no.");
3294 else cfg_parser->cfg->log_servfail = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3295 free(yyvspub_c_vsp[0].str);
3296 }
3297break;
3298case 399:
3299#line 1253 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3300{
3301 OUTYY(("P(server_log_local_actions:%s)\n", yyvsp[0].str));
3302 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3303 yyerrorub_c_error("expected yes or no.");
3304 else cfg_parser->cfg->log_local_actions = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3305 free(yyvspub_c_vsp[0].str);
3306 }
3307break;
3308case 400:
3309#line 1262 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3310{
3311 OUTYY(("P(server_chroot:%s)\n", yyvsp[0].str));
3312 free(cfg_parser->cfg->chrootdir);
3313 cfg_parser->cfg->chrootdir = yyvspub_c_vsp[0].str;
3314 }
3315break;
3316case 401:
3317#line 1269 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3318{
3319 OUTYY(("P(server_username:%s)\n", yyvsp[0].str));
3320 free(cfg_parser->cfg->username);
3321 cfg_parser->cfg->username = yyvspub_c_vsp[0].str;
3322 }
3323break;
3324case 402:
3325#line 1276 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3326{
3327 OUTYY(("P(server_directory:%s)\n", yyvsp[0].str));
3328 free(cfg_parser->cfg->directory);
3329 cfg_parser->cfg->directory = yyvspub_c_vsp[0].str;
3330 /* change there right away for includes relative to this */
3331 if(yyvspub_c_vsp[0].str[0]) {
3332 char* d;
3333#ifdef UB_ON_WINDOWS
3334 w_config_adjust_directory(cfg_parser->cfg);
3335#endif
3336 d = cfg_parser->cfg->directory;
3337 /* adjust directory if we have already chroot,
3338 * like, we reread after sighup */
3339 if(cfg_parser->chroot && cfg_parser->chroot[0] &&
3340 strncmp(d, cfg_parser->chroot, strlen(
3341 cfg_parser->chroot)) == 0)
3342 d += strlen(cfg_parser->chroot);
3343 if(d[0]) {
3344 if(chdir(d))
3345 log_err("cannot chdir to directory: %s (%s)",
3346 d, strerror(errno(*__errno())));
3347 }
3348 }
3349 }
3350break;
3351case 403:
3352#line 1302 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3353{
3354 OUTYY(("P(server_logfile:%s)\n", yyvsp[0].str));
3355 free(cfg_parser->cfg->logfile);
3356 cfg_parser->cfg->logfile = yyvspub_c_vsp[0].str;
3357 cfg_parser->cfg->use_syslog = 0;
3358 }
3359break;
3360case 404:
3361#line 1310 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3362{
3363 OUTYY(("P(server_pidfile:%s)\n", yyvsp[0].str));
3364 free(cfg_parser->cfg->pidfile);
3365 cfg_parser->cfg->pidfile = yyvspub_c_vsp[0].str;
3366 }
3367break;
3368case 405:
3369#line 1317 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3370{
3371 OUTYY(("P(server_root_hints:%s)\n", yyvsp[0].str));
3372 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yyvspub_c_vsp[0].str))
3373 yyerrorub_c_error("out of memory");
3374 }
3375break;
3376case 406:
3377#line 1324 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3378{
3379 OUTYY(("P(server_dlv_anchor_file:%s)\n", yyvsp[0].str));
3380 log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
3381 free(yyvspub_c_vsp[0].str);
3382 }
3383break;
3384case 407:
3385#line 1331 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3386{
3387 OUTYY(("P(server_dlv_anchor:%s)\n", yyvsp[0].str));
3388 log_warn("option dlv-anchor ignored: DLV is decommissioned");
3389 free(yyvspub_c_vsp[0].str);
3390 }
3391break;
3392case 408:
3393#line 1338 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3394{
3395 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", yyvsp[0].str));
3396 if(!cfg_strlist_insert(&cfg_parser->cfg->
3397 auto_trust_anchor_file_list, yyvspub_c_vsp[0].str))
3398 yyerrorub_c_error("out of memory");
3399 }
3400break;
3401case 409:
3402#line 1346 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3403{
3404 OUTYY(("P(server_trust_anchor_file:%s)\n", yyvsp[0].str));
3405 if(!cfg_strlist_insert(&cfg_parser->cfg->
3406 trust_anchor_file_list, yyvspub_c_vsp[0].str))
3407 yyerrorub_c_error("out of memory");
3408 }
3409break;
3410case 410:
3411#line 1354 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3412{
3413 OUTYY(("P(server_trusted_keys_file:%s)\n", yyvsp[0].str));
3414 if(!cfg_strlist_insert(&cfg_parser->cfg->
3415 trusted_keys_file_list, yyvspub_c_vsp[0].str))
3416 yyerrorub_c_error("out of memory");
3417 }
3418break;
3419case 411:
3420#line 1362 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3421{
3422 OUTYY(("P(server_trust_anchor:%s)\n", yyvsp[0].str));
3423 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yyvspub_c_vsp[0].str))
3424 yyerrorub_c_error("out of memory");
3425 }
3426break;
3427case 412:
3428#line 1369 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3429{
3430 OUTYY(("P(server_trust_anchor_signaling:%s)\n", yyvsp[0].str));
3431 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3432 yyerrorub_c_error("expected yes or no.");
3433 else
3434 cfg_parser->cfg->trust_anchor_signaling =
3435 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3436 free(yyvspub_c_vsp[0].str);
3437 }
3438break;
3439case 413:
3440#line 1380 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3441{
3442 OUTYY(("P(server_root_key_sentinel:%s)\n", yyvsp[0].str));
3443 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3444 yyerrorub_c_error("expected yes or no.");
3445 else
3446 cfg_parser->cfg->root_key_sentinel =
3447 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3448 free(yyvspub_c_vsp[0].str);
3449 }
3450break;
3451case 414:
3452#line 1391 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3453{
3454 OUTYY(("P(server_domain_insecure:%s)\n", yyvsp[0].str));
3455 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, yyvspub_c_vsp[0].str))
3456 yyerrorub_c_error("out of memory");
3457 }
3458break;
3459case 415:
3460#line 1398 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3461{
3462 OUTYY(("P(server_hide_identity:%s)\n", yyvsp[0].str));
3463 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3464 yyerrorub_c_error("expected yes or no.");
3465 else cfg_parser->cfg->hide_identity = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3466 free(yyvspub_c_vsp[0].str);
3467 }
3468break;
3469case 416:
3470#line 1407 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3471{
3472 OUTYY(("P(server_hide_version:%s)\n", yyvsp[0].str));
3473 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3474 yyerrorub_c_error("expected yes or no.");
3475 else cfg_parser->cfg->hide_version = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3476 free(yyvspub_c_vsp[0].str);
3477 }
3478break;
3479case 417:
3480#line 1416 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3481{
3482 OUTYY(("P(server_hide_trustanchor:%s)\n", yyvsp[0].str));
3483 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3484 yyerrorub_c_error("expected yes or no.");
3485 else cfg_parser->cfg->hide_trustanchor = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3486 free(yyvspub_c_vsp[0].str);
3487 }
3488break;
3489case 418:
3490#line 1425 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3491{
3492 OUTYY(("P(server_hide_user_agent:%s)\n", yyvsp[0].str));
3493 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3494 yyerrorub_c_error("expected yes or no.");
3495 else cfg_parser->cfg->hide_http_user_agent = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3496 free(yyvspub_c_vsp[0].str);
3497 }
3498break;
3499case 419:
3500#line 1434 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3501{
3502 OUTYY(("P(server_identity:%s)\n", yyvsp[0].str));
3503 free(cfg_parser->cfg->identity);
3504 cfg_parser->cfg->identity = yyvspub_c_vsp[0].str;
3505 }
3506break;
3507case 420:
3508#line 1441 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3509{
3510 OUTYY(("P(server_version:%s)\n", yyvsp[0].str));
3511 free(cfg_parser->cfg->version);
3512 cfg_parser->cfg->version = yyvspub_c_vsp[0].str;
3513 }
3514break;
3515case 421:
3516#line 1448 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3517{
3518 OUTYY(("P(server_http_user_agent:%s)\n", yyvsp[0].str));
3519 free(cfg_parser->cfg->http_user_agent);
3520 cfg_parser->cfg->http_user_agent = yyvspub_c_vsp[0].str;
3521 }
3522break;
3523case 422:
3524#line 1455 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3525{
3526 OUTYY(("P(server_nsid:%s)\n", yyvsp[0].str));
3527 free(cfg_parser->cfg->nsid_cfg_str);
3528 cfg_parser->cfg->nsid_cfg_str = yyvspub_c_vsp[0].str;
3529 free(cfg_parser->cfg->nsid);
3530 cfg_parser->cfg->nsid = NULL((void *)0);
3531 cfg_parser->cfg->nsid_len = 0;
3532 if (*yyvspub_c_vsp[0].str == 0)
3533 ; /* pass; empty string is not setting nsid */
3534 else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
3535 yyvspub_c_vsp[0].str, &cfg_parser->cfg->nsid_len)))
3536 yyerrorub_c_error("the NSID must be either a hex string or an "
3537 "ascii character string prepended with ascii_.");
3538 }
3539break;
3540case 423:
3541#line 1471 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3542{
3543 OUTYY(("P(server_so_rcvbuf:%s)\n", yyvsp[0].str));
3544 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->so_rcvbuf))
3545 yyerrorub_c_error("buffer size expected");
3546 free(yyvspub_c_vsp[0].str);
3547 }
3548break;
3549case 424:
3550#line 1479 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3551{
3552 OUTYY(("P(server_so_sndbuf:%s)\n", yyvsp[0].str));
3553 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->so_sndbuf))
3554 yyerrorub_c_error("buffer size expected");
3555 free(yyvspub_c_vsp[0].str);
3556 }
3557break;
3558case 425:
3559#line 1487 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3560{
3561 OUTYY(("P(server_so_reuseport:%s)\n", yyvsp[0].str));
3562 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3563 yyerrorub_c_error("expected yes or no.");
3564 else cfg_parser->cfg->so_reuseport =
3565 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3566 free(yyvspub_c_vsp[0].str);
3567 }
3568break;
3569case 426:
3570#line 1497 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3571{
3572 OUTYY(("P(server_ip_transparent:%s)\n", yyvsp[0].str));
3573 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3574 yyerrorub_c_error("expected yes or no.");
3575 else cfg_parser->cfg->ip_transparent =
3576 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3577 free(yyvspub_c_vsp[0].str);
3578 }
3579break;
3580case 427:
3581#line 1507 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3582{
3583 OUTYY(("P(server_ip_freebind:%s)\n", yyvsp[0].str));
3584 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3585 yyerrorub_c_error("expected yes or no.");
3586 else cfg_parser->cfg->ip_freebind =
3587 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3588 free(yyvspub_c_vsp[0].str);
3589 }
3590break;
3591case 428:
3592#line 1517 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3593{
3594 OUTYY(("P(server_ip_dscp:%s)\n", yyvsp[0].str));
3595 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3596 yyerrorub_c_error("number expected");
3597 else if (atoi(yyvspub_c_vsp[0].str) > 63)
3598 yyerrorub_c_error("value too large (max 63)");
3599 else if (atoi(yyvspub_c_vsp[0].str) < 0)
3600 yyerrorub_c_error("value too small (min 0)");
3601 else
3602 cfg_parser->cfg->ip_dscp = atoi(yyvspub_c_vsp[0].str);
3603 free(yyvspub_c_vsp[0].str);
3604 }
3605break;
3606case 429:
3607#line 1531 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3608{
3609 OUTYY(("P(server_stream_wait_size:%s)\n", yyvsp[0].str));
3610 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->stream_wait_size))
3611 yyerrorub_c_error("memory size expected");
3612 free(yyvspub_c_vsp[0].str);
3613 }
3614break;
3615case 430:
3616#line 1539 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3617{
3618 OUTYY(("P(server_edns_buffer_size:%s)\n", yyvsp[0].str));
3619 if(atoi(yyvspub_c_vsp[0].str) == 0)
3620 yyerrorub_c_error("number expected");
3621 else if (atoi(yyvspub_c_vsp[0].str) < 12)
3622 yyerrorub_c_error("edns buffer size too small");
3623 else if (atoi(yyvspub_c_vsp[0].str) > 65535)
3624 cfg_parser->cfg->edns_buffer_size = 65535;
3625 else cfg_parser->cfg->edns_buffer_size = atoi(yyvspub_c_vsp[0].str);
3626 free(yyvspub_c_vsp[0].str);
3627 }
3628break;
3629case 431:
3630#line 1552 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3631{
3632 OUTYY(("P(server_msg_buffer_size:%s)\n", yyvsp[0].str));
3633 if(atoi(yyvspub_c_vsp[0].str) == 0)
3634 yyerrorub_c_error("number expected");
3635 else if (atoi(yyvspub_c_vsp[0].str) < 4096)
3636 yyerrorub_c_error("message buffer size too small (use 4096)");
3637 else cfg_parser->cfg->msg_buffer_size = atoi(yyvspub_c_vsp[0].str);
3638 free(yyvspub_c_vsp[0].str);
3639 }
3640break;
3641case 432:
3642#line 1563 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3643{
3644 OUTYY(("P(server_msg_cache_size:%s)\n", yyvsp[0].str));
3645 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->msg_cache_size))
3646 yyerrorub_c_error("memory size expected");
3647 free(yyvspub_c_vsp[0].str);
3648 }
3649break;
3650case 433:
3651#line 1571 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3652{
3653 OUTYY(("P(server_msg_cache_slabs:%s)\n", yyvsp[0].str));
3654 if(atoi(yyvspub_c_vsp[0].str) == 0) {
3655 yyerrorub_c_error("number expected");
3656 } else {
3657 cfg_parser->cfg->msg_cache_slabs = atoi(yyvspub_c_vsp[0].str);
3658 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
3659 yyerrorub_c_error("must be a power of 2");
3660 }
3661 free(yyvspub_c_vsp[0].str);
3662 }
3663break;
3664case 434:
3665#line 1584 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3666{
3667 OUTYY(("P(server_num_queries_per_thread:%s)\n", yyvsp[0].str));
3668 if(atoi(yyvspub_c_vsp[0].str) == 0)
3669 yyerrorub_c_error("number expected");
3670 else cfg_parser->cfg->num_queries_per_thread = atoi(yyvspub_c_vsp[0].str);
3671 free(yyvspub_c_vsp[0].str);
3672 }
3673break;
3674case 435:
3675#line 1593 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3676{
3677 OUTYY(("P(server_jostle_timeout:%s)\n", yyvsp[0].str));
3678 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3679 yyerrorub_c_error("number expected");
3680 else cfg_parser->cfg->jostle_time = atoi(yyvspub_c_vsp[0].str);
3681 free(yyvspub_c_vsp[0].str);
3682 }
3683break;
3684case 436:
3685#line 1602 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3686{
3687 OUTYY(("P(server_delay_close:%s)\n", yyvsp[0].str));
3688 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3689 yyerrorub_c_error("number expected");
3690 else cfg_parser->cfg->delay_close = atoi(yyvspub_c_vsp[0].str);
3691 free(yyvspub_c_vsp[0].str);
3692 }
3693break;
3694case 437:
3695#line 1611 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3696{
3697 OUTYY(("P(server_udp_connect:%s)\n", yyvsp[0].str));
3698 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3699 yyerrorub_c_error("expected yes or no.");
3700 else cfg_parser->cfg->udp_connect = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3701 free(yyvspub_c_vsp[0].str);
3702 }
3703break;
3704case 438:
3705#line 1620 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3706{
3707 OUTYY(("P(server_unblock_lan_zones:%s)\n", yyvsp[0].str));
3708 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3709 yyerrorub_c_error("expected yes or no.");
3710 else cfg_parser->cfg->unblock_lan_zones =
3711 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3712 free(yyvspub_c_vsp[0].str);
3713 }
3714break;
3715case 439:
3716#line 1630 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3717{
3718 OUTYY(("P(server_insecure_lan_zones:%s)\n", yyvsp[0].str));
3719 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3720 yyerrorub_c_error("expected yes or no.");
3721 else cfg_parser->cfg->insecure_lan_zones =
3722 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3723 free(yyvspub_c_vsp[0].str);
3724 }
3725break;
3726case 440:
3727#line 1640 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3728{
3729 OUTYY(("P(server_rrset_cache_size:%s)\n", yyvsp[0].str));
3730 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->rrset_cache_size))
3731 yyerrorub_c_error("memory size expected");
3732 free(yyvspub_c_vsp[0].str);
3733 }
3734break;
3735case 441:
3736#line 1648 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3737{
3738 OUTYY(("P(server_rrset_cache_slabs:%s)\n", yyvsp[0].str));
3739 if(atoi(yyvspub_c_vsp[0].str) == 0) {
3740 yyerrorub_c_error("number expected");
3741 } else {
3742 cfg_parser->cfg->rrset_cache_slabs = atoi(yyvspub_c_vsp[0].str);
3743 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
3744 yyerrorub_c_error("must be a power of 2");
3745 }
3746 free(yyvspub_c_vsp[0].str);
3747 }
3748break;
3749case 442:
3750#line 1661 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3751{
3752 OUTYY(("P(server_infra_host_ttl:%s)\n", yyvsp[0].str));
3753 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3754 yyerrorub_c_error("number expected");
3755 else cfg_parser->cfg->host_ttl = atoi(yyvspub_c_vsp[0].str);
3756 free(yyvspub_c_vsp[0].str);
3757 }
3758break;
3759case 443:
3760#line 1670 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3761{
3762 OUTYY(("P(server_infra_lame_ttl:%s)\n", yyvsp[0].str));
3763 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
3764 "removed, use infra-host-ttl)", yyvspub_c_vsp[0].str);
3765 free(yyvspub_c_vsp[0].str);
3766 }
3767break;
3768case 444:
3769#line 1678 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3770{
3771 OUTYY(("P(server_infra_cache_numhosts:%s)\n", yyvsp[0].str));
3772 if(atoi(yyvspub_c_vsp[0].str) == 0)
3773 yyerrorub_c_error("number expected");
3774 else cfg_parser->cfg->infra_cache_numhosts = atoi(yyvspub_c_vsp[0].str);
3775 free(yyvspub_c_vsp[0].str);
3776 }
3777break;
3778case 445:
3779#line 1687 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3780{
3781 OUTYY(("P(server_infra_cache_lame_size:%s)\n", yyvsp[0].str));
3782 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
3783 "(option removed, use infra-cache-numhosts)", yyvspub_c_vsp[0].str);
3784 free(yyvspub_c_vsp[0].str);
3785 }
3786break;
3787case 446:
3788#line 1695 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3789{
3790 OUTYY(("P(server_infra_cache_slabs:%s)\n", yyvsp[0].str));
3791 if(atoi(yyvspub_c_vsp[0].str) == 0) {
3792 yyerrorub_c_error("number expected");
3793 } else {
3794 cfg_parser->cfg->infra_cache_slabs = atoi(yyvspub_c_vsp[0].str);
3795 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
3796 yyerrorub_c_error("must be a power of 2");
3797 }
3798 free(yyvspub_c_vsp[0].str);
3799 }
3800break;
3801case 447:
3802#line 1708 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3803{
3804 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", yyvsp[0].str));
3805 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3806 yyerrorub_c_error("number expected");
3807 else cfg_parser->cfg->infra_cache_min_rtt = atoi(yyvspub_c_vsp[0].str);
3808 free(yyvspub_c_vsp[0].str);
3809 }
3810break;
3811case 448:
3812#line 1717 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3813{
3814 OUTYY(("P(server_infra_cache_max_rtt:%s)\n", yyvsp[0].str));
3815 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3816 yyerrorub_c_error("number expected");
3817 else cfg_parser->cfg->infra_cache_max_rtt = atoi(yyvspub_c_vsp[0].str);
3818 free(yyvspub_c_vsp[0].str);
3819 }
3820break;
3821case 449:
3822#line 1726 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3823{
3824 OUTYY(("P(server_infra_keep_probing:%s)\n", yyvsp[0].str));
3825 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3826 yyerrorub_c_error("expected yes or no.");
3827 else cfg_parser->cfg->infra_keep_probing =
3828 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3829 free(yyvspub_c_vsp[0].str);
3830 }
3831break;
3832case 450:
3833#line 1736 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3834{
3835 OUTYY(("P(server_target_fetch_policy:%s)\n", yyvsp[0].str));
3836 free(cfg_parser->cfg->target_fetch_policy);
3837 cfg_parser->cfg->target_fetch_policy = yyvspub_c_vsp[0].str;
3838 }
3839break;
3840case 451:
3841#line 1743 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3842{
3843 OUTYY(("P(server_harden_short_bufsize:%s)\n", yyvsp[0].str));
3844 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3845 yyerrorub_c_error("expected yes or no.");
3846 else cfg_parser->cfg->harden_short_bufsize =
3847 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3848 free(yyvspub_c_vsp[0].str);
3849 }
3850break;
3851case 452:
3852#line 1753 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3853{
3854 OUTYY(("P(server_harden_large_queries:%s)\n", yyvsp[0].str));
3855 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3856 yyerrorub_c_error("expected yes or no.");
3857 else cfg_parser->cfg->harden_large_queries =
3858 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3859 free(yyvspub_c_vsp[0].str);
3860 }
3861break;
3862case 453:
3863#line 1763 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3864{
3865 OUTYY(("P(server_harden_glue:%s)\n", yyvsp[0].str));
3866 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3867 yyerrorub_c_error("expected yes or no.");
3868 else cfg_parser->cfg->harden_glue =
3869 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3870 free(yyvspub_c_vsp[0].str);
3871 }
3872break;
3873case 454:
3874#line 1773 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3875{
3876 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yyvsp[0].str));
3877 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3878 yyerrorub_c_error("expected yes or no.");
3879 else cfg_parser->cfg->harden_dnssec_stripped =
3880 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3881 free(yyvspub_c_vsp[0].str);
3882 }
3883break;
3884case 455:
3885#line 1783 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3886{
3887 OUTYY(("P(server_harden_below_nxdomain:%s)\n", yyvsp[0].str));
3888 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3889 yyerrorub_c_error("expected yes or no.");
3890 else cfg_parser->cfg->harden_below_nxdomain =
3891 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3892 free(yyvspub_c_vsp[0].str);
3893 }
3894break;
3895case 456:
3896#line 1793 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3897{
3898 OUTYY(("P(server_harden_referral_path:%s)\n", yyvsp[0].str));
3899 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3900 yyerrorub_c_error("expected yes or no.");
3901 else cfg_parser->cfg->harden_referral_path =
3902 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3903 free(yyvspub_c_vsp[0].str);
3904 }
3905break;
3906case 457:
3907#line 1803 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3908{
3909 OUTYY(("P(server_harden_algo_downgrade:%s)\n", yyvsp[0].str));
3910 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3911 yyerrorub_c_error("expected yes or no.");
3912 else cfg_parser->cfg->harden_algo_downgrade =
3913 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3914 free(yyvspub_c_vsp[0].str);
3915 }
3916break;
3917case 458:
3918#line 1813 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3919{
3920 OUTYY(("P(server_harden_unknown_additional:%s)\n", yyvsp[0].str));
3921 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3922 yyerrorub_c_error("expected yes or no.");
3923 else cfg_parser->cfg->harden_unknown_additional =
3924 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3925 free(yyvspub_c_vsp[0].str);
3926 }
3927break;
3928case 459:
3929#line 1823 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3930{
3931 OUTYY(("P(server_use_caps_for_id:%s)\n", yyvsp[0].str));
3932 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3933 yyerrorub_c_error("expected yes or no.");
3934 else cfg_parser->cfg->use_caps_bits_for_id =
3935 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3936 free(yyvspub_c_vsp[0].str);
3937 }
3938break;
3939case 460:
3940#line 1833 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3941{
3942 OUTYY(("P(server_caps_whitelist:%s)\n", yyvsp[0].str));
3943 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, yyvspub_c_vsp[0].str))
3944 yyerrorub_c_error("out of memory");
3945 }
3946break;
3947case 461:
3948#line 1840 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3949{
3950 OUTYY(("P(server_private_address:%s)\n", yyvsp[0].str));
3951 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yyvspub_c_vsp[0].str))
3952 yyerrorub_c_error("out of memory");
3953 }
3954break;
3955case 462:
3956#line 1847 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3957{
3958 OUTYY(("P(server_private_domain:%s)\n", yyvsp[0].str));
3959 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yyvspub_c_vsp[0].str))
3960 yyerrorub_c_error("out of memory");
3961 }
3962break;
3963case 463:
3964#line 1854 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3965{
3966 OUTYY(("P(server_prefetch:%s)\n", yyvsp[0].str));
3967 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3968 yyerrorub_c_error("expected yes or no.");
3969 else cfg_parser->cfg->prefetch = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3970 free(yyvspub_c_vsp[0].str);
3971 }
3972break;
3973case 464:
3974#line 1863 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3975{
3976 OUTYY(("P(server_prefetch_key:%s)\n", yyvsp[0].str));
3977 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3978 yyerrorub_c_error("expected yes or no.");
3979 else cfg_parser->cfg->prefetch_key = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3980 free(yyvspub_c_vsp[0].str);
3981 }
3982break;
3983case 465:
3984#line 1872 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3985{
3986 OUTYY(("P(server_deny_any:%s)\n", yyvsp[0].str));
3987 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
3988 yyerrorub_c_error("expected yes or no.");
3989 else cfg_parser->cfg->deny_any = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
3990 free(yyvspub_c_vsp[0].str);
3991 }
3992break;
3993case 466:
3994#line 1881 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
3995{
3996 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yyvsp[0].str));
3997 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
3998 yyerrorub_c_error("number expected");
3999 else cfg_parser->cfg->unwanted_threshold = atoi(yyvspub_c_vsp[0].str);
4000 free(yyvspub_c_vsp[0].str);
4001 }
4002break;
4003case 467:
4004#line 1890 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4005{
4006 OUTYY(("P(server_do_not_query_address:%s)\n", yyvsp[0].str));
4007 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yyvspub_c_vsp[0].str))
4008 yyerrorub_c_error("out of memory");
4009 }
4010break;
4011case 468:
4012#line 1897 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4013{
4014 OUTYY(("P(server_do_not_query_localhost:%s)\n", yyvsp[0].str));
4015 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4016 yyerrorub_c_error("expected yes or no.");
4017 else cfg_parser->cfg->donotquery_localhost =
4018 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4019 free(yyvspub_c_vsp[0].str);
4020 }
4021break;
4022case 469:
4023#line 1907 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4024{
4025 OUTYY(("P(server_access_control:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4026 validate_acl_action(yyvspub_c_vsp[0].str);
4027 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
4028 fatal_exit("out of memory adding acl");
4029 }
4030break;
4031case 470:
4032#line 1915 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4033{
4034 OUTYY(("P(server_interface_action:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4035 validate_acl_action(yyvspub_c_vsp[0].str);
4036 if(!cfg_str2list_insert(
4037 &cfg_parser->cfg->interface_actions, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
4038 fatal_exit("out of memory adding acl");
4039 }
4040break;
4041case 471:
4042#line 1924 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4043{
4044 OUTYY(("P(server_module_conf:%s)\n", yyvsp[0].str));
4045 free(cfg_parser->cfg->module_conf);
4046 cfg_parser->cfg->module_conf = yyvspub_c_vsp[0].str;
4047 }
4048break;
4049case 472:
4050#line 1931 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4051{
4052 OUTYY(("P(server_val_override_date:%s)\n", yyvsp[0].str));
4053 if(*yyvspub_c_vsp[0].str == '\0' || strcmp(yyvspub_c_vsp[0].str, "0") == 0) {
4054 cfg_parser->cfg->val_date_override = 0;
4055 } else if(strlen(yyvspub_c_vsp[0].str) == 14) {
4056 cfg_parser->cfg->val_date_override =
4057 cfg_convert_timeval(yyvspub_c_vsp[0].str);
4058 if(!cfg_parser->cfg->val_date_override)
4059 yyerrorub_c_error("bad date/time specification");
4060 } else {
4061 if(atoi(yyvspub_c_vsp[0].str) == 0)
4062 yyerrorub_c_error("number expected");
4063 cfg_parser->cfg->val_date_override = atoi(yyvspub_c_vsp[0].str);
4064 }
4065 free(yyvspub_c_vsp[0].str);
4066 }
4067break;
4068case 473:
4069#line 1949 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4070{
4071 OUTYY(("P(server_val_sig_skew_min:%s)\n", yyvsp[0].str));
4072 if(*yyvspub_c_vsp[0].str == '\0' || strcmp(yyvspub_c_vsp[0].str, "0") == 0) {
4073 cfg_parser->cfg->val_sig_skew_min = 0;
4074 } else {
4075 cfg_parser->cfg->val_sig_skew_min = atoi(yyvspub_c_vsp[0].str);
4076 if(!cfg_parser->cfg->val_sig_skew_min)
4077 yyerrorub_c_error("number expected");
4078 }
4079 free(yyvspub_c_vsp[0].str);
4080 }
4081break;
4082case 474:
4083#line 1962 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4084{
4085 OUTYY(("P(server_val_sig_skew_max:%s)\n", yyvsp[0].str));
4086 if(*yyvspub_c_vsp[0].str == '\0' || strcmp(yyvspub_c_vsp[0].str, "0") == 0) {
4087 cfg_parser->cfg->val_sig_skew_max = 0;
4088 } else {
4089 cfg_parser->cfg->val_sig_skew_max = atoi(yyvspub_c_vsp[0].str);
4090 if(!cfg_parser->cfg->val_sig_skew_max)
4091 yyerrorub_c_error("number expected");
4092 }
4093 free(yyvspub_c_vsp[0].str);
4094 }
4095break;
4096case 475:
4097#line 1975 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4098{
4099 OUTYY(("P(server_val_max_restart:%s)\n", yyvsp[0].str));
4100 if(*yyvspub_c_vsp[0].str == '\0' || strcmp(yyvspub_c_vsp[0].str, "0") == 0) {
4101 cfg_parser->cfg->val_max_restart = 0;
4102 } else {
4103 cfg_parser->cfg->val_max_restart = atoi(yyvspub_c_vsp[0].str);
4104 if(!cfg_parser->cfg->val_max_restart)
4105 yyerrorub_c_error("number expected");
4106 }
4107 free(yyvspub_c_vsp[0].str);
4108 }
4109break;
4110case 476:
4111#line 1988 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4112{
4113 OUTYY(("P(server_cache_max_ttl:%s)\n", yyvsp[0].str));
4114 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4115 yyerrorub_c_error("number expected");
4116 else cfg_parser->cfg->max_ttl = atoi(yyvspub_c_vsp[0].str);
4117 free(yyvspub_c_vsp[0].str);
4118 }
4119break;
4120case 477:
4121#line 1997 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4122{
4123 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", yyvsp[0].str));
4124 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4125 yyerrorub_c_error("number expected");
4126 else cfg_parser->cfg->max_negative_ttl = atoi(yyvspub_c_vsp[0].str);
4127 free(yyvspub_c_vsp[0].str);
4128 }
4129break;
4130case 478:
4131#line 2006 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4132{
4133 OUTYY(("P(server_cache_min_ttl:%s)\n", yyvsp[0].str));
4134 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4135 yyerrorub_c_error("number expected");
4136 else cfg_parser->cfg->min_ttl = atoi(yyvspub_c_vsp[0].str);
4137 free(yyvspub_c_vsp[0].str);
4138 }
4139break;
4140case 479:
4141#line 2015 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4142{
4143 OUTYY(("P(server_bogus_ttl:%s)\n", yyvsp[0].str));
4144 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4145 yyerrorub_c_error("number expected");
4146 else cfg_parser->cfg->bogus_ttl = atoi(yyvspub_c_vsp[0].str);
4147 free(yyvspub_c_vsp[0].str);
4148 }
4149break;
4150case 480:
4151#line 2024 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4152{
4153 OUTYY(("P(server_val_clean_additional:%s)\n", yyvsp[0].str));
4154 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4155 yyerrorub_c_error("expected yes or no.");
4156 else cfg_parser->cfg->val_clean_additional =
4157 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4158 free(yyvspub_c_vsp[0].str);
4159 }
4160break;
4161case 481:
4162#line 2034 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4163{
4164 OUTYY(("P(server_val_permissive_mode:%s)\n", yyvsp[0].str));
4165 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4166 yyerrorub_c_error("expected yes or no.");
4167 else cfg_parser->cfg->val_permissive_mode =
4168 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4169 free(yyvspub_c_vsp[0].str);
4170 }
4171break;
4172case 482:
4173#line 2044 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4174{
4175 OUTYY(("P(server_aggressive_nsec:%s)\n", yyvsp[0].str));
4176 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4177 yyerrorub_c_error("expected yes or no.");
4178 else
4179 cfg_parser->cfg->aggressive_nsec =
4180 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4181 free(yyvspub_c_vsp[0].str);
4182 }
4183break;
4184case 483:
4185#line 2055 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4186{
4187 OUTYY(("P(server_ignore_cd_flag:%s)\n", yyvsp[0].str));
4188 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4189 yyerrorub_c_error("expected yes or no.");
4190 else cfg_parser->cfg->ignore_cd = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4191 free(yyvspub_c_vsp[0].str);
4192 }
4193break;
4194case 484:
4195#line 2064 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4196{
4197 OUTYY(("P(server_serve_expired:%s)\n", yyvsp[0].str));
4198 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4199 yyerrorub_c_error("expected yes or no.");
4200 else cfg_parser->cfg->serve_expired = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4201 free(yyvspub_c_vsp[0].str);
4202 }
4203break;
4204case 485:
4205#line 2073 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4206{
4207 OUTYY(("P(server_serve_expired_ttl:%s)\n", yyvsp[0].str));
4208 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4209 yyerrorub_c_error("number expected");
4210 else cfg_parser->cfg->serve_expired_ttl = atoi(yyvspub_c_vsp[0].str);
4211 free(yyvspub_c_vsp[0].str);
4212 }
4213break;
4214case 486:
4215#line 2082 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4216{
4217 OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", yyvsp[0].str));
4218 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4219 yyerrorub_c_error("expected yes or no.");
4220 else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4221 free(yyvspub_c_vsp[0].str);
4222 }
4223break;
4224case 487:
4225#line 2091 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4226{
4227 OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", yyvsp[0].str));
4228 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4229 yyerrorub_c_error("number expected");
4230 else cfg_parser->cfg->serve_expired_reply_ttl = atoi(yyvspub_c_vsp[0].str);
4231 free(yyvspub_c_vsp[0].str);
4232 }
4233break;
4234case 488:
4235#line 2100 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4236{
4237 OUTYY(("P(server_serve_expired_client_timeout:%s)\n", yyvsp[0].str));
4238 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4239 yyerrorub_c_error("number expected");
4240 else cfg_parser->cfg->serve_expired_client_timeout = atoi(yyvspub_c_vsp[0].str);
4241 free(yyvspub_c_vsp[0].str);
4242 }
4243break;
4244case 489:
4245#line 2109 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4246{
4247 OUTYY(("P(server_ede_serve_expired:%s)\n", yyvsp[0].str));
4248 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4249 yyerrorub_c_error("expected yes or no.");
4250 else cfg_parser->cfg->ede_serve_expired = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4251 free(yyvspub_c_vsp[0].str);
4252 }
4253break;
4254case 490:
4255#line 2118 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4256{
4257 OUTYY(("P(server_serve_original_ttl:%s)\n", yyvsp[0].str));
4258 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4259 yyerrorub_c_error("expected yes or no.");
4260 else cfg_parser->cfg->serve_original_ttl = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4261 free(yyvspub_c_vsp[0].str);
4262 }
4263break;
4264case 491:
4265#line 2127 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4266{
4267 OUTYY(("P(server_fake_dsa:%s)\n", yyvsp[0].str));
4268 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4269 yyerrorub_c_error("expected yes or no.");
4270#if defined(HAVE_SSL) || defined(HAVE_NETTLE)
4271 else fake_dsa = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4272 if(fake_dsa)
4273 log_warn("test option fake_dsa is enabled");
4274#endif
4275 free(yyvspub_c_vsp[0].str);
4276 }
4277break;
4278case 492:
4279#line 2140 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4280{
4281 OUTYY(("P(server_fake_sha1:%s)\n", yyvsp[0].str));
4282 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4283 yyerrorub_c_error("expected yes or no.");
4284#if defined(HAVE_SSL) || defined(HAVE_NETTLE)
4285 else fake_sha1 = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4286 if(fake_sha1)
4287 log_warn("test option fake_sha1 is enabled");
4288#endif
4289 free(yyvspub_c_vsp[0].str);
4290 }
4291break;
4292case 493:
4293#line 2153 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4294{
4295 OUTYY(("P(server_val_log_level:%s)\n", yyvsp[0].str));
4296 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4297 yyerrorub_c_error("number expected");
4298 else cfg_parser->cfg->val_log_level = atoi(yyvspub_c_vsp[0].str);
4299 free(yyvspub_c_vsp[0].str);
4300 }
4301break;
4302case 494:
4303#line 2162 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4304{
4305 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yyvsp[0].str));
4306 free(cfg_parser->cfg->val_nsec3_key_iterations);
4307 cfg_parser->cfg->val_nsec3_key_iterations = yyvspub_c_vsp[0].str;
4308 }
4309break;
4310case 495:
4311#line 2169 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4312{
4313 OUTYY(("P(server_zonemd_permissive_mode:%s)\n", yyvsp[0].str));
4314 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4315 yyerrorub_c_error("expected yes or no.");
4316 else cfg_parser->cfg->zonemd_permissive_mode = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4317 free(yyvspub_c_vsp[0].str);
4318 }
4319break;
4320case 496:
4321#line 2178 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4322{
4323 OUTYY(("P(server_add_holddown:%s)\n", yyvsp[0].str));
4324 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4325 yyerrorub_c_error("number expected");
4326 else cfg_parser->cfg->add_holddown = atoi(yyvspub_c_vsp[0].str);
4327 free(yyvspub_c_vsp[0].str);
4328 }
4329break;
4330case 497:
4331#line 2187 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4332{
4333 OUTYY(("P(server_del_holddown:%s)\n", yyvsp[0].str));
4334 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4335 yyerrorub_c_error("number expected");
4336 else cfg_parser->cfg->del_holddown = atoi(yyvspub_c_vsp[0].str);
4337 free(yyvspub_c_vsp[0].str);
4338 }
4339break;
4340case 498:
4341#line 2196 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4342{
4343 OUTYY(("P(server_keep_missing:%s)\n", yyvsp[0].str));
4344 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4345 yyerrorub_c_error("number expected");
4346 else cfg_parser->cfg->keep_missing = atoi(yyvspub_c_vsp[0].str);
4347 free(yyvspub_c_vsp[0].str);
4348 }
4349break;
4350case 499:
4351#line 2205 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4352{
4353 OUTYY(("P(server_permit_small_holddown:%s)\n", yyvsp[0].str));
4354 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4355 yyerrorub_c_error("expected yes or no.");
4356 else cfg_parser->cfg->permit_small_holddown =
4357 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4358 free(yyvspub_c_vsp[0].str);
4359 }
4360break;
4361case 500:
4362#line 2215 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4363{
4364 OUTYY(("P(server_key_cache_size:%s)\n", yyvsp[0].str));
4365 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->key_cache_size))
4366 yyerrorub_c_error("memory size expected");
4367 free(yyvspub_c_vsp[0].str);
4368 }
4369break;
4370case 501:
4371#line 2223 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4372{
4373 OUTYY(("P(server_key_cache_slabs:%s)\n", yyvsp[0].str));
4374 if(atoi(yyvspub_c_vsp[0].str) == 0) {
4375 yyerrorub_c_error("number expected");
4376 } else {
4377 cfg_parser->cfg->key_cache_slabs = atoi(yyvspub_c_vsp[0].str);
4378 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
4379 yyerrorub_c_error("must be a power of 2");
4380 }
4381 free(yyvspub_c_vsp[0].str);
4382 }
4383break;
4384case 502:
4385#line 2236 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4386{
4387 OUTYY(("P(server_neg_cache_size:%s)\n", yyvsp[0].str));
4388 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->neg_cache_size))
4389 yyerrorub_c_error("memory size expected");
4390 free(yyvspub_c_vsp[0].str);
4391 }
4392break;
4393case 503:
4394#line 2244 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4395{
4396 OUTYY(("P(server_local_zone:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4397 if(strcmp(yyvspub_c_vsp[0].str, "static")!=0 && strcmp(yyvspub_c_vsp[0].str, "deny")!=0 &&
4398 strcmp(yyvspub_c_vsp[0].str, "refuse")!=0 && strcmp(yyvspub_c_vsp[0].str, "redirect")!=0 &&
4399 strcmp(yyvspub_c_vsp[0].str, "transparent")!=0 && strcmp(yyvspub_c_vsp[0].str, "nodefault")!=0
4400 && strcmp(yyvspub_c_vsp[0].str, "typetransparent")!=0
4401 && strcmp(yyvspub_c_vsp[0].str, "always_transparent")!=0
4402 && strcmp(yyvspub_c_vsp[0].str, "block_a")!=0
4403 && strcmp(yyvspub_c_vsp[0].str, "always_refuse")!=0
4404 && strcmp(yyvspub_c_vsp[0].str, "always_nxdomain")!=0
4405 && strcmp(yyvspub_c_vsp[0].str, "always_nodata")!=0
4406 && strcmp(yyvspub_c_vsp[0].str, "always_deny")!=0
4407 && strcmp(yyvspub_c_vsp[0].str, "always_null")!=0
4408 && strcmp(yyvspub_c_vsp[0].str, "noview")!=0
4409 && strcmp(yyvspub_c_vsp[0].str, "inform")!=0 && strcmp(yyvspub_c_vsp[0].str, "inform_deny")!=0
4410 && strcmp(yyvspub_c_vsp[0].str, "inform_redirect") != 0
4411 && strcmp(yyvspub_c_vsp[0].str, "ipset") != 0) {
4412 yyerrorub_c_error("local-zone type: expected static, deny, "
4413 "refuse, redirect, transparent, "
4414 "typetransparent, inform, inform_deny, "
4415 "inform_redirect, always_transparent, block_a,"
4416 "always_refuse, always_nxdomain, "
4417 "always_nodata, always_deny, always_null, "
4418 "noview, nodefault or ipset");
4419 free(yyvspub_c_vsp[-1].str);
4420 free(yyvspub_c_vsp[0].str);
4421 } else if(strcmp(yyvspub_c_vsp[0].str, "nodefault")==0) {
4422 if(!cfg_strlist_insert(&cfg_parser->cfg->
4423 local_zones_nodefault, yyvspub_c_vsp[-1].str))
4424 fatal_exit("out of memory adding local-zone");
4425 free(yyvspub_c_vsp[0].str);
4426#ifdef USE_IPSET
4427 } else if(strcmp(yyvspub_c_vsp[0].str, "ipset")==0) {
4428 size_t len = strlen(yyvspub_c_vsp[-1].str);
4429 /* Make sure to add the trailing dot.
4430 * These are str compared to domain names. */
4431 if(yyvspub_c_vsp[-1].str[len-1] != '.') {
4432 if(!(yyvspub_c_vsp[-1].str = realloc(yyvspub_c_vsp[-1].str, len+2))) {
4433 fatal_exit("out of memory adding local-zone");
4434 }
4435 yyvspub_c_vsp[-1].str[len] = '.';
4436 yyvspub_c_vsp[-1].str[len+1] = 0;
4437 }
4438 if(!cfg_strlist_insert(&cfg_parser->cfg->
4439 local_zones_ipset, yyvspub_c_vsp[-1].str))
4440 fatal_exit("out of memory adding local-zone");
4441 free(yyvspub_c_vsp[0].str);
4442#endif
4443 } else {
4444 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
4445 yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
4446 fatal_exit("out of memory adding local-zone");
4447 }
4448 }
4449break;
4450case 504:
4451#line 2300 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4452{
4453 OUTYY(("P(server_local_data:%s)\n", yyvsp[0].str));
4454 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yyvspub_c_vsp[0].str))
4455 fatal_exit("out of memory adding local-data");
4456 }
4457break;
4458case 505:
4459#line 2307 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4460{
4461 char* ptr;
4462 OUTYY(("P(server_local_data_ptr:%s)\n", yyvsp[0].str));
4463 ptr = cfg_ptr_reverse(yyvspub_c_vsp[0].str);
4464 free(yyvspub_c_vsp[0].str);
4465 if(ptr) {
4466 if(!cfg_strlist_insert(&cfg_parser->cfg->
4467 local_data, ptr))
4468 fatal_exit("out of memory adding local-data");
4469 } else {
4470 yyerrorub_c_error("local-data-ptr could not be reversed");
4471 }
4472 }
4473break;
4474case 506:
4475#line 2322 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4476{
4477 OUTYY(("P(server_minimal_responses:%s)\n", yyvsp[0].str));
4478 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4479 yyerrorub_c_error("expected yes or no.");
4480 else cfg_parser->cfg->minimal_responses =
4481 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4482 free(yyvspub_c_vsp[0].str);
4483 }
4484break;
4485case 507:
4486#line 2332 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4487{
4488 OUTYY(("P(server_rrset_roundrobin:%s)\n", yyvsp[0].str));
4489 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4490 yyerrorub_c_error("expected yes or no.");
4491 else cfg_parser->cfg->rrset_roundrobin =
4492 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4493 free(yyvspub_c_vsp[0].str);
4494 }
4495break;
4496case 508:
4497#line 2342 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4498{
4499 OUTYY(("P(server_unknown_server_time_limit:%s)\n", yyvsp[0].str));
4500 cfg_parser->cfg->unknown_server_time_limit = atoi(yyvspub_c_vsp[0].str);
4501 free(yyvspub_c_vsp[0].str);
4502 }
4503break;
4504case 509:
4505#line 2349 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4506{
4507 OUTYY(("P(server_max_udp_size:%s)\n", yyvsp[0].str));
4508 cfg_parser->cfg->max_udp_size = atoi(yyvspub_c_vsp[0].str);
4509 free(yyvspub_c_vsp[0].str);
4510 }
4511break;
4512case 510:
4513#line 2356 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4514{
4515 OUTYY(("P(dns64_prefix:%s)\n", yyvsp[0].str));
4516 free(cfg_parser->cfg->dns64_prefix);
4517 cfg_parser->cfg->dns64_prefix = yyvspub_c_vsp[0].str;
4518 }
4519break;
4520case 511:
4521#line 2363 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4522{
4523 OUTYY(("P(server_dns64_synthall:%s)\n", yyvsp[0].str));
4524 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4525 yyerrorub_c_error("expected yes or no.");
4526 else cfg_parser->cfg->dns64_synthall = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4527 free(yyvspub_c_vsp[0].str);
4528 }
4529break;
4530case 512:
4531#line 2372 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4532{
4533 OUTYY(("P(dns64_ignore_aaaa:%s)\n", yyvsp[0].str));
4534 if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
4535 yyvspub_c_vsp[0].str))
4536 fatal_exit("out of memory adding dns64-ignore-aaaa");
4537 }
4538break;
4539case 513:
4540#line 2380 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4541{
4542 OUTYY(("P(nat64_prefix:%s)\n", yyvsp[0].str));
4543 free(cfg_parser->cfg->nat64_prefix);
4544 cfg_parser->cfg->nat64_prefix = yyvspub_c_vsp[0].str;
4545 }
4546break;
4547case 514:
4548#line 2387 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4549{
4550 char* p, *s = yyvspub_c_vsp[0].str;
4551 OUTYY(("P(server_define_tag:%s)\n", yyvsp[0].str));
4552 while((p=strsep(&s, " \t\n")) != NULL((void *)0)) {
4553 if(*p) {
4554 if(!config_add_tag(cfg_parser->cfg, p))
4555 yyerrorub_c_error("could not define-tag, "
4556 "out of memory");
4557 }
4558 }
4559 free(yyvspub_c_vsp[0].str);
4560 }
4561break;
4562case 515:
4563#line 2401 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4564{
4565 size_t len = 0;
4566 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yyvspub_c_vsp[0].str,
4567 &len);
4568 free(yyvspub_c_vsp[0].str);
4569 OUTYY(("P(server_local_zone_tag:%s)\n", yyvsp[-1].str));
4570 if(!bitlist) {
4571 yyerrorub_c_error("could not parse tags, (define-tag them first)");
4572 free(yyvspub_c_vsp[-1].str);
4573 }
4574 if(bitlist) {
4575 if(!cfg_strbytelist_insert(
4576 &cfg_parser->cfg->local_zone_tags,
4577 yyvspub_c_vsp[-1].str, bitlist, len)) {
4578 yyerrorub_c_error("out of memory");
4579 free(yyvspub_c_vsp[-1].str);
4580 }
4581 }
4582 }
4583break;
4584case 516:
4585#line 2422 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4586{
4587 size_t len = 0;
4588 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yyvspub_c_vsp[0].str,
4589 &len);
4590 free(yyvspub_c_vsp[0].str);
4591 OUTYY(("P(server_access_control_tag:%s)\n", yyvsp[-1].str));
4592 if(!bitlist) {
4593 yyerrorub_c_error("could not parse tags, (define-tag them first)");
4594 free(yyvspub_c_vsp[-1].str);
4595 }
4596 if(bitlist) {
4597 if(!cfg_strbytelist_insert(
4598 &cfg_parser->cfg->acl_tags,
4599 yyvspub_c_vsp[-1].str, bitlist, len)) {
4600 yyerrorub_c_error("out of memory");
4601 free(yyvspub_c_vsp[-1].str);
4602 }
4603 }
4604 }
4605break;
4606case 517:
4607#line 2443 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4608{
4609 OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str));
4610 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
4611 yyvspub_c_vsp[-2].str, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4612 yyerrorub_c_error("out of memory");
4613 free(yyvspub_c_vsp[-2].str);
4614 free(yyvspub_c_vsp[-1].str);
4615 free(yyvspub_c_vsp[0].str);
4616 }
4617 }
4618break;
4619case 518:
4620#line 2455 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4621{
4622 OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str));
4623 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
4624 yyvspub_c_vsp[-2].str, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4625 yyerrorub_c_error("out of memory");
4626 free(yyvspub_c_vsp[-2].str);
4627 free(yyvspub_c_vsp[-1].str);
4628 free(yyvspub_c_vsp[0].str);
4629 }
4630 }
4631break;
4632case 519:
4633#line 2467 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4634{
4635 OUTYY(("P(server_local_zone_override:%s %s %s)\n", yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str));
4636 if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
4637 yyvspub_c_vsp[-2].str, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4638 yyerrorub_c_error("out of memory");
4639 free(yyvspub_c_vsp[-2].str);
4640 free(yyvspub_c_vsp[-1].str);
4641 free(yyvspub_c_vsp[0].str);
4642 }
4643 }
4644break;
4645case 520:
4646#line 2479 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4647{
4648 OUTYY(("P(server_access_control_view:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4649 if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
4650 yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4651 yyerrorub_c_error("out of memory");
4652 }
4653 }
4654break;
4655case 521:
4656#line 2488 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4657{
4658 size_t len = 0;
4659 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yyvspub_c_vsp[0].str,
4660 &len);
4661 free(yyvspub_c_vsp[0].str);
4662 OUTYY(("P(server_interface_tag:%s)\n", yyvsp[-1].str));
4663 if(!bitlist) {
4664 yyerrorub_c_error("could not parse tags, (define-tag them first)");
4665 free(yyvspub_c_vsp[-1].str);
4666 }
4667 if(bitlist) {
4668 if(!cfg_strbytelist_insert(
4669 &cfg_parser->cfg->interface_tags,
4670 yyvspub_c_vsp[-1].str, bitlist, len)) {
4671 yyerrorub_c_error("out of memory");
4672 free(yyvspub_c_vsp[-1].str);
4673 }
4674 }
4675 }
4676break;
4677case 522:
4678#line 2509 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4679{
4680 OUTYY(("P(server_interface_tag_action:%s %s %s)\n", yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str));
4681 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
4682 yyvspub_c_vsp[-2].str, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4683 yyerrorub_c_error("out of memory");
4684 free(yyvspub_c_vsp[-2].str);
4685 free(yyvspub_c_vsp[-1].str);
4686 free(yyvspub_c_vsp[0].str);
4687 }
4688 }
4689break;
4690case 523:
4691#line 2521 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4692{
4693 OUTYY(("P(server_interface_tag_data:%s %s %s)\n", yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str));
4694 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
4695 yyvspub_c_vsp[-2].str, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4696 yyerrorub_c_error("out of memory");
4697 free(yyvspub_c_vsp[-2].str);
4698 free(yyvspub_c_vsp[-1].str);
4699 free(yyvspub_c_vsp[0].str);
4700 }
4701 }
4702break;
4703case 524:
4704#line 2533 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4705{
4706 OUTYY(("P(server_interface_view:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4707 if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
4708 yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str)) {
4709 yyerrorub_c_error("out of memory");
4710 }
4711 }
4712break;
4713case 525:
4714#line 2542 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4715{
4716 size_t len = 0;
4717 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yyvspub_c_vsp[0].str,
4718 &len);
4719 free(yyvspub_c_vsp[0].str);
4720 OUTYY(("P(response_ip_tag:%s)\n", yyvsp[-1].str));
4721 if(!bitlist) {
4722 yyerrorub_c_error("could not parse tags, (define-tag them first)");
4723 free(yyvspub_c_vsp[-1].str);
4724 }
4725 if(bitlist) {
4726 if(!cfg_strbytelist_insert(
4727 &cfg_parser->cfg->respip_tags,
4728 yyvspub_c_vsp[-1].str, bitlist, len)) {
4729 yyerrorub_c_error("out of memory");
4730 free(yyvspub_c_vsp[-1].str);
4731 }
4732 }
4733 }
4734break;
4735case 526:
4736#line 2563 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4737{
4738 OUTYY(("P(server_ip_ratelimit:%s)\n", yyvsp[0].str));
4739 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4740 yyerrorub_c_error("number expected");
4741 else cfg_parser->cfg->ip_ratelimit = atoi(yyvspub_c_vsp[0].str);
4742 free(yyvspub_c_vsp[0].str);
4743 }
4744break;
4745case 527:
4746#line 2572 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4747{
4748 OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", yyvsp[0].str));
4749 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4750 yyerrorub_c_error("number expected");
4751 else cfg_parser->cfg->ip_ratelimit_cookie = atoi(yyvspub_c_vsp[0].str);
4752 free(yyvspub_c_vsp[0].str);
4753 }
4754break;
4755case 528:
4756#line 2581 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4757{
4758 OUTYY(("P(server_ratelimit:%s)\n", yyvsp[0].str));
4759 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4760 yyerrorub_c_error("number expected");
4761 else cfg_parser->cfg->ratelimit = atoi(yyvspub_c_vsp[0].str);
4762 free(yyvspub_c_vsp[0].str);
4763 }
4764break;
4765case 529:
4766#line 2590 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4767{
4768 OUTYY(("P(server_ip_ratelimit_size:%s)\n", yyvsp[0].str));
4769 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->ip_ratelimit_size))
4770 yyerrorub_c_error("memory size expected");
4771 free(yyvspub_c_vsp[0].str);
4772 }
4773break;
4774case 530:
4775#line 2598 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4776{
4777 OUTYY(("P(server_ratelimit_size:%s)\n", yyvsp[0].str));
4778 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->ratelimit_size))
4779 yyerrorub_c_error("memory size expected");
4780 free(yyvspub_c_vsp[0].str);
4781 }
4782break;
4783case 531:
4784#line 2606 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4785{
4786 OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", yyvsp[0].str));
4787 if(atoi(yyvspub_c_vsp[0].str) == 0) {
4788 yyerrorub_c_error("number expected");
4789 } else {
4790 cfg_parser->cfg->ip_ratelimit_slabs = atoi(yyvspub_c_vsp[0].str);
4791 if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
4792 yyerrorub_c_error("must be a power of 2");
4793 }
4794 free(yyvspub_c_vsp[0].str);
4795 }
4796break;
4797case 532:
4798#line 2619 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4799{
4800 OUTYY(("P(server_ratelimit_slabs:%s)\n", yyvsp[0].str));
4801 if(atoi(yyvspub_c_vsp[0].str) == 0) {
4802 yyerrorub_c_error("number expected");
4803 } else {
4804 cfg_parser->cfg->ratelimit_slabs = atoi(yyvspub_c_vsp[0].str);
4805 if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
4806 yyerrorub_c_error("must be a power of 2");
4807 }
4808 free(yyvspub_c_vsp[0].str);
4809 }
4810break;
4811case 533:
4812#line 2632 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4813{
4814 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4815 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0) {
4816 yyerrorub_c_error("number expected");
4817 free(yyvspub_c_vsp[-1].str);
4818 free(yyvspub_c_vsp[0].str);
4819 } else {
4820 if(!cfg_str2list_insert(&cfg_parser->cfg->
4821 ratelimit_for_domain, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
4822 fatal_exit("out of memory adding "
4823 "ratelimit-for-domain");
4824 }
4825 }
4826break;
4827case 534:
4828#line 2647 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4829{
4830 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
4831 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0) {
4832 yyerrorub_c_error("number expected");
4833 free(yyvspub_c_vsp[-1].str);
4834 free(yyvspub_c_vsp[0].str);
4835 } else {
4836 if(!cfg_str2list_insert(&cfg_parser->cfg->
4837 ratelimit_below_domain, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
4838 fatal_exit("out of memory adding "
4839 "ratelimit-below-domain");
4840 }
4841 }
4842break;
4843case 535:
4844#line 2662 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4845{
4846 OUTYY(("P(server_ip_ratelimit_factor:%s)\n", yyvsp[0].str));
4847 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4848 yyerrorub_c_error("number expected");
4849 else cfg_parser->cfg->ip_ratelimit_factor = atoi(yyvspub_c_vsp[0].str);
4850 free(yyvspub_c_vsp[0].str);
4851 }
4852break;
4853case 536:
4854#line 2671 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4855{
4856 OUTYY(("P(server_ratelimit_factor:%s)\n", yyvsp[0].str));
4857 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4858 yyerrorub_c_error("number expected");
4859 else cfg_parser->cfg->ratelimit_factor = atoi(yyvspub_c_vsp[0].str);
4860 free(yyvspub_c_vsp[0].str);
4861 }
4862break;
4863case 537:
4864#line 2680 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4865{
4866 OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", yyvsp[0].str));
4867 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4868 yyerrorub_c_error("expected yes or no.");
4869 else cfg_parser->cfg->ip_ratelimit_backoff =
4870 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4871 free(yyvspub_c_vsp[0].str);
4872 }
4873break;
4874case 538:
4875#line 2690 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4876{
4877 OUTYY(("P(server_ratelimit_backoff:%s)\n", yyvsp[0].str));
4878 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4879 yyerrorub_c_error("expected yes or no.");
4880 else cfg_parser->cfg->ratelimit_backoff =
4881 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4882 free(yyvspub_c_vsp[0].str);
4883 }
4884break;
4885case 539:
4886#line 2700 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4887{
4888 OUTYY(("P(server_outbound_msg_retry:%s)\n", yyvsp[0].str));
4889 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4890 yyerrorub_c_error("number expected");
4891 else cfg_parser->cfg->outbound_msg_retry = atoi(yyvspub_c_vsp[0].str);
4892 free(yyvspub_c_vsp[0].str);
4893 }
4894break;
4895case 540:
4896#line 2709 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4897{
4898 OUTYY(("P(server_max_sent_count:%s)\n", yyvsp[0].str));
4899 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4900 yyerrorub_c_error("number expected");
4901 else cfg_parser->cfg->max_sent_count = atoi(yyvspub_c_vsp[0].str);
4902 free(yyvspub_c_vsp[0].str);
4903 }
4904break;
4905case 541:
4906#line 2718 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4907{
4908 OUTYY(("P(server_max_query_restarts:%s)\n", yyvsp[0].str));
4909 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4910 yyerrorub_c_error("number expected");
4911 else cfg_parser->cfg->max_query_restarts = atoi(yyvspub_c_vsp[0].str);
4912 free(yyvspub_c_vsp[0].str);
4913 }
4914break;
4915case 542:
4916#line 2727 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4917{
4918 OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
4919 free(yyvspub_c_vsp[0].str);
4920 }
4921break;
4922case 543:
4923#line 2733 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4924{
4925 OUTYY(("P(server_fast_server_num:%s)\n", yyvsp[0].str));
4926 if(atoi(yyvspub_c_vsp[0].str) <= 0)
4927 yyerrorub_c_error("number expected");
4928 else cfg_parser->cfg->fast_server_num = atoi(yyvspub_c_vsp[0].str);
4929 free(yyvspub_c_vsp[0].str);
4930 }
4931break;
4932case 544:
4933#line 2742 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4934{
4935 OUTYY(("P(server_fast_server_permil:%s)\n", yyvsp[0].str));
4936 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
4937 yyerrorub_c_error("number expected");
4938 else cfg_parser->cfg->fast_server_permil = atoi(yyvspub_c_vsp[0].str);
4939 free(yyvspub_c_vsp[0].str);
4940 }
4941break;
4942case 545:
4943#line 2751 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4944{
4945 OUTYY(("P(server_qname_minimisation:%s)\n", yyvsp[0].str));
4946 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4947 yyerrorub_c_error("expected yes or no.");
4948 else cfg_parser->cfg->qname_minimisation =
4949 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4950 free(yyvspub_c_vsp[0].str);
4951 }
4952break;
4953case 546:
4954#line 2761 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4955{
4956 OUTYY(("P(server_qname_minimisation_strict:%s)\n", yyvsp[0].str));
4957 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4958 yyerrorub_c_error("expected yes or no.");
4959 else cfg_parser->cfg->qname_minimisation_strict =
4960 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4961 free(yyvspub_c_vsp[0].str);
4962 }
4963break;
4964case 547:
4965#line 2771 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4966{
4967 OUTYY(("P(server_pad_responses:%s)\n", yyvsp[0].str));
4968 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4969 yyerrorub_c_error("expected yes or no.");
4970 else cfg_parser->cfg->pad_responses =
4971 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4972 free(yyvspub_c_vsp[0].str);
4973 }
4974break;
4975case 548:
4976#line 2781 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4977{
4978 OUTYY(("P(server_pad_responses_block_size:%s)\n", yyvsp[0].str));
4979 if(atoi(yyvspub_c_vsp[0].str) == 0)
4980 yyerrorub_c_error("number expected");
4981 else cfg_parser->cfg->pad_responses_block_size = atoi(yyvspub_c_vsp[0].str);
4982 free(yyvspub_c_vsp[0].str);
4983 }
4984break;
4985case 549:
4986#line 2790 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4987{
4988 OUTYY(("P(server_pad_queries:%s)\n", yyvsp[0].str));
4989 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
4990 yyerrorub_c_error("expected yes or no.");
4991 else cfg_parser->cfg->pad_queries =
4992 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
4993 free(yyvspub_c_vsp[0].str);
4994 }
4995break;
4996case 550:
4997#line 2800 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
4998{
4999 OUTYY(("P(server_pad_queries_block_size:%s)\n", yyvsp[0].str));
5000 if(atoi(yyvspub_c_vsp[0].str) == 0)
5001 yyerrorub_c_error("number expected");
5002 else cfg_parser->cfg->pad_queries_block_size = atoi(yyvspub_c_vsp[0].str);
5003 free(yyvspub_c_vsp[0].str);
5004 }
5005break;
5006case 551:
5007#line 2809 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5008{
5009 #ifdef USE_IPSECMOD
5010 OUTYY(("P(server_ipsecmod_enabled:%s)\n", yyvsp[0].str));
5011 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5012 yyerrorub_c_error("expected yes or no.");
5013 else cfg_parser->cfg->ipsecmod_enabled = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5014 #else
5015 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5016 #endif
5017 free(yyvspub_c_vsp[0].str);
5018 }
5019break;
5020case 552:
5021#line 2822 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5022{
5023 #ifdef USE_IPSECMOD
5024 OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", yyvsp[0].str));
5025 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5026 yyerrorub_c_error("expected yes or no.");
5027 else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5028 #else
5029 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5030 #endif
5031 free(yyvspub_c_vsp[0].str);
5032 }
5033break;
5034case 553:
5035#line 2835 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5036{
5037 #ifdef USE_IPSECMOD
5038 OUTYY(("P(server_ipsecmod_hook:%s)\n", yyvsp[0].str));
5039 free(cfg_parser->cfg->ipsecmod_hook);
5040 cfg_parser->cfg->ipsecmod_hook = yyvspub_c_vsp[0].str;
5041 #else
5042 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5043 free(yyvspub_c_vsp[0].str);
5044 #endif
5045 }
5046break;
5047case 554:
5048#line 2847 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5049{
5050 #ifdef USE_IPSECMOD
5051 OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", yyvsp[0].str));
5052 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
5053 yyerrorub_c_error("number expected");
5054 else cfg_parser->cfg->ipsecmod_max_ttl = atoi(yyvspub_c_vsp[0].str);
5055 free(yyvspub_c_vsp[0].str);
5056 #else
5057 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5058 free(yyvspub_c_vsp[0].str);
5059 #endif
5060 }
5061break;
5062case 555:
5063#line 2861 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5064{
5065 #ifdef USE_IPSECMOD
5066 OUTYY(("P(server_ipsecmod_whitelist:%s)\n", yyvsp[0].str));
5067 if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, yyvspub_c_vsp[0].str))
5068 yyerrorub_c_error("out of memory");
5069 #else
5070 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5071 free(yyvspub_c_vsp[0].str);
5072 #endif
5073 }
5074break;
5075case 556:
5076#line 2873 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5077{
5078 #ifdef USE_IPSECMOD
5079 OUTYY(("P(server_ipsecmod_strict:%s)\n", yyvsp[0].str));
5080 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5081 yyerrorub_c_error("expected yes or no.");
5082 else cfg_parser->cfg->ipsecmod_strict = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5083 free(yyvspub_c_vsp[0].str);
5084 #else
5085 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
5086 free(yyvspub_c_vsp[0].str);
5087 #endif
5088 }
5089break;
5090case 557:
5091#line 2887 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5092{
5093 OUTYY(("P(server_edns_client_string:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
5094 if(!cfg_str2list_insert(
5095 &cfg_parser->cfg->edns_client_strings, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
5096 fatal_exit("out of memory adding "
5097 "edns-client-string");
5098 }
5099break;
5100case 558:
5101#line 2896 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5102{
5103 OUTYY(("P(edns_client_string_opcode:%s)\n", yyvsp[0].str));
5104 if(atoi(yyvspub_c_vsp[0].str) == 0 && strcmp(yyvspub_c_vsp[0].str, "0") != 0)
5105 yyerrorub_c_error("option code expected");
5106 else if(atoi(yyvspub_c_vsp[0].str) > 65535 || atoi(yyvspub_c_vsp[0].str) < 0)
5107 yyerrorub_c_error("option code must be in interval [0, 65535]");
5108 else cfg_parser->cfg->edns_client_string_opcode = atoi(yyvspub_c_vsp[0].str);
5109 free(yyvspub_c_vsp[0].str);
5110 }
5111break;
5112case 559:
5113#line 2907 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5114{
5115 OUTYY(("P(server_ede:%s)\n", yyvsp[0].str));
5116 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5117 yyerrorub_c_error("expected yes or no.");
5118 else cfg_parser->cfg->ede = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5119 free(yyvspub_c_vsp[0].str);
5120 }
5121break;
5122case 560:
5123#line 2916 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5124{
5125 OUTYY(("P(server_proxy_protocol_port:%s)\n", yyvsp[0].str));
5126 if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, yyvspub_c_vsp[0].str))
5127 yyerrorub_c_error("out of memory");
5128 }
5129break;
5130case 561:
5131#line 2923 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5132{
5133 OUTYY(("P(name:%s)\n", yyvsp[0].str));
5134 if(cfg_parser->cfg->stubs->name)
5135 yyerrorub_c_error("stub name override, there must be one name "
5136 "for one stub-zone");
5137 free(cfg_parser->cfg->stubs->name);
5138 cfg_parser->cfg->stubs->name = yyvspub_c_vsp[0].str;
5139 }
5140break;
5141case 562:
5142#line 2933 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5143{
5144 OUTYY(("P(stub-host:%s)\n", yyvsp[0].str));
5145 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yyvspub_c_vsp[0].str))
5146 yyerrorub_c_error("out of memory");
5147 }
5148break;
5149case 563:
5150#line 2940 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5151{
5152 OUTYY(("P(stub-addr:%s)\n", yyvsp[0].str));
5153 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yyvspub_c_vsp[0].str))
5154 yyerrorub_c_error("out of memory");
5155 }
5156break;
5157case 564:
5158#line 2947 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5159{
5160 OUTYY(("P(stub-first:%s)\n", yyvsp[0].str));
5161 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5162 yyerrorub_c_error("expected yes or no.");
5163 else cfg_parser->cfg->stubs->isfirst=(strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5164 free(yyvspub_c_vsp[0].str);
5165 }
5166break;
5167case 565:
5168#line 2956 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5169{
5170 OUTYY(("P(stub-no-cache:%s)\n", yyvsp[0].str));
5171 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5172 yyerrorub_c_error("expected yes or no.");
5173 else cfg_parser->cfg->stubs->no_cache=(strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5174 free(yyvspub_c_vsp[0].str);
5175 }
5176break;
5177case 566:
5178#line 2965 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5179{
5180 OUTYY(("P(stub-ssl-upstream:%s)\n", yyvsp[0].str));
5181 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5182 yyerrorub_c_error("expected yes or no.");
5183 else cfg_parser->cfg->stubs->ssl_upstream =
5184 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5185 free(yyvspub_c_vsp[0].str);
5186 }
5187break;
5188case 567:
5189#line 2975 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5190{
5191 OUTYY(("P(stub-tcp-upstream:%s)\n", yyvsp[0].str));
5192 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5193 yyerrorub_c_error("expected yes or no.");
5194 else cfg_parser->cfg->stubs->tcp_upstream =
5195 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5196 free(yyvspub_c_vsp[0].str);
5197 }
5198break;
5199case 568:
5200#line 2985 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5201{
5202 OUTYY(("P(stub-prime:%s)\n", yyvsp[0].str));
5203 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5204 yyerrorub_c_error("expected yes or no.");
5205 else cfg_parser->cfg->stubs->isprime =
5206 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5207 free(yyvspub_c_vsp[0].str);
5208 }
5209break;
5210case 569:
5211#line 2995 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5212{
5213 OUTYY(("P(name:%s)\n", yyvsp[0].str));
5214 if(cfg_parser->cfg->forwards->name)
5215 yyerrorub_c_error("forward name override, there must be one "
5216 "name for one forward-zone");
5217 free(cfg_parser->cfg->forwards->name);
5218 cfg_parser->cfg->forwards->name = yyvspub_c_vsp[0].str;
5219 }
5220break;
5221case 570:
5222#line 3005 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5223{
5224 OUTYY(("P(forward-host:%s)\n", yyvsp[0].str));
5225 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yyvspub_c_vsp[0].str))
5226 yyerrorub_c_error("out of memory");
5227 }
5228break;
5229case 571:
5230#line 3012 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5231{
5232 OUTYY(("P(forward-addr:%s)\n", yyvsp[0].str));
5233 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yyvspub_c_vsp[0].str))
5234 yyerrorub_c_error("out of memory");
5235 }
5236break;
5237case 572:
5238#line 3019 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5239{
5240 OUTYY(("P(forward-first:%s)\n", yyvsp[0].str));
5241 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5242 yyerrorub_c_error("expected yes or no.");
5243 else cfg_parser->cfg->forwards->isfirst=(strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5244 free(yyvspub_c_vsp[0].str);
5245 }
5246break;
5247case 573:
5248#line 3028 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5249{
5250 OUTYY(("P(forward-no-cache:%s)\n", yyvsp[0].str));
5251 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5252 yyerrorub_c_error("expected yes or no.");
5253 else cfg_parser->cfg->forwards->no_cache=(strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5254 free(yyvspub_c_vsp[0].str);
5255 }
5256break;
5257case 574:
5258#line 3037 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5259{
5260 OUTYY(("P(forward-ssl-upstream:%s)\n", yyvsp[0].str));
5261 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5262 yyerrorub_c_error("expected yes or no.");
5263 else cfg_parser->cfg->forwards->ssl_upstream =
5264 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5265 free(yyvspub_c_vsp[0].str);
5266 }
5267break;
5268case 575:
5269#line 3047 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5270{
5271 OUTYY(("P(forward-tcp-upstream:%s)\n", yyvsp[0].str));
5272 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5273 yyerrorub_c_error("expected yes or no.");
5274 else cfg_parser->cfg->forwards->tcp_upstream =
5275 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5276 free(yyvspub_c_vsp[0].str);
5277 }
5278break;
5279case 576:
5280#line 3057 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5281{
5282 OUTYY(("P(name:%s)\n", yyvsp[0].str));
5283 if(cfg_parser->cfg->auths->name)
5284 yyerrorub_c_error("auth name override, there must be one name "
5285 "for one auth-zone");
5286 free(cfg_parser->cfg->auths->name);
5287 cfg_parser->cfg->auths->name = yyvspub_c_vsp[0].str;
5288 }
5289break;
5290case 577:
5291#line 3067 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5292{
5293 OUTYY(("P(zonefile:%s)\n", yyvsp[0].str));
5294 free(cfg_parser->cfg->auths->zonefile);
5295 cfg_parser->cfg->auths->zonefile = yyvspub_c_vsp[0].str;
5296 }
5297break;
5298case 578:
5299#line 3074 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5300{
5301 OUTYY(("P(master:%s)\n", yyvsp[0].str));
5302 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, yyvspub_c_vsp[0].str))
5303 yyerrorub_c_error("out of memory");
5304 }
5305break;
5306case 579:
5307#line 3081 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5308{
5309 OUTYY(("P(url:%s)\n", yyvsp[0].str));
5310 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, yyvspub_c_vsp[0].str))
5311 yyerrorub_c_error("out of memory");
5312 }
5313break;
5314case 580:
5315#line 3088 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5316{
5317 OUTYY(("P(allow-notify:%s)\n", yyvsp[0].str));
5318 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
5319 yyvspub_c_vsp[0].str))
5320 yyerrorub_c_error("out of memory");
5321 }
5322break;
5323case 581:
5324#line 3096 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5325{
5326 OUTYY(("P(zonemd-check:%s)\n", yyvsp[0].str));
5327 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5328 yyerrorub_c_error("expected yes or no.");
5329 else cfg_parser->cfg->auths->zonemd_check =
5330 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5331 free(yyvspub_c_vsp[0].str);
5332 }
5333break;
5334case 582:
5335#line 3106 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5336{
5337 OUTYY(("P(zonemd-reject-absence:%s)\n", yyvsp[0].str));
5338 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5339 yyerrorub_c_error("expected yes or no.");
5340 else cfg_parser->cfg->auths->zonemd_reject_absence =
5341 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5342 free(yyvspub_c_vsp[0].str);
5343 }
5344break;
5345case 583:
5346#line 3116 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5347{
5348 OUTYY(("P(for-downstream:%s)\n", yyvsp[0].str));
5349 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5350 yyerrorub_c_error("expected yes or no.");
5351 else cfg_parser->cfg->auths->for_downstream =
5352 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5353 free(yyvspub_c_vsp[0].str);
5354 }
5355break;
5356case 584:
5357#line 3126 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5358{
5359 OUTYY(("P(for-upstream:%s)\n", yyvsp[0].str));
5360 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5361 yyerrorub_c_error("expected yes or no.");
5362 else cfg_parser->cfg->auths->for_upstream =
5363 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5364 free(yyvspub_c_vsp[0].str);
5365 }
5366break;
5367case 585:
5368#line 3136 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5369{
5370 OUTYY(("P(fallback-enabled:%s)\n", yyvsp[0].str));
5371 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5372 yyerrorub_c_error("expected yes or no.");
5373 else cfg_parser->cfg->auths->fallback_enabled =
5374 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5375 free(yyvspub_c_vsp[0].str);
5376 }
5377break;
5378case 586:
5379#line 3146 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5380{
5381 OUTYY(("P(name:%s)\n", yyvsp[0].str));
5382 if(cfg_parser->cfg->views->name)
5383 yyerrorub_c_error("view name override, there must be one "
5384 "name for one view");
5385 free(cfg_parser->cfg->views->name);
5386 cfg_parser->cfg->views->name = yyvspub_c_vsp[0].str;
5387 }
5388break;
5389case 587:
5390#line 3156 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5391{
5392 OUTYY(("P(view_local_zone:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
5393 if(strcmp(yyvspub_c_vsp[0].str, "static")!=0 && strcmp(yyvspub_c_vsp[0].str, "deny")!=0 &&
5394 strcmp(yyvspub_c_vsp[0].str, "refuse")!=0 && strcmp(yyvspub_c_vsp[0].str, "redirect")!=0 &&
5395 strcmp(yyvspub_c_vsp[0].str, "transparent")!=0 && strcmp(yyvspub_c_vsp[0].str, "nodefault")!=0
5396 && strcmp(yyvspub_c_vsp[0].str, "typetransparent")!=0
5397 && strcmp(yyvspub_c_vsp[0].str, "always_transparent")!=0
5398 && strcmp(yyvspub_c_vsp[0].str, "always_refuse")!=0
5399 && strcmp(yyvspub_c_vsp[0].str, "always_nxdomain")!=0
5400 && strcmp(yyvspub_c_vsp[0].str, "always_nodata")!=0
5401 && strcmp(yyvspub_c_vsp[0].str, "always_deny")!=0
5402 && strcmp(yyvspub_c_vsp[0].str, "always_null")!=0
5403 && strcmp(yyvspub_c_vsp[0].str, "noview")!=0
5404 && strcmp(yyvspub_c_vsp[0].str, "inform")!=0 && strcmp(yyvspub_c_vsp[0].str, "inform_deny")!=0
5405 && strcmp(yyvspub_c_vsp[0].str, "inform_redirect") != 0
5406 && strcmp(yyvspub_c_vsp[0].str, "ipset") != 0) {
5407 yyerrorub_c_error("local-zone type: expected static, deny, "
5408 "refuse, redirect, transparent, "
5409 "typetransparent, inform, inform_deny, "
5410 "inform_redirect, always_transparent, "
5411 "always_refuse, always_nxdomain, "
5412 "always_nodata, always_deny, always_null, "
5413 "noview, nodefault or ipset");
5414 free(yyvspub_c_vsp[-1].str);
5415 free(yyvspub_c_vsp[0].str);
5416 } else if(strcmp(yyvspub_c_vsp[0].str, "nodefault")==0) {
5417 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
5418 local_zones_nodefault, yyvspub_c_vsp[-1].str))
5419 fatal_exit("out of memory adding local-zone");
5420 free(yyvspub_c_vsp[0].str);
5421#ifdef USE_IPSET
5422 } else if(strcmp(yyvspub_c_vsp[0].str, "ipset")==0) {
5423 size_t len = strlen(yyvspub_c_vsp[-1].str);
5424 /* Make sure to add the trailing dot.
5425 * These are str compared to domain names. */
5426 if(yyvspub_c_vsp[-1].str[len-1] != '.') {
5427 if(!(yyvspub_c_vsp[-1].str = realloc(yyvspub_c_vsp[-1].str, len+2))) {
5428 fatal_exit("out of memory adding local-zone");
5429 }
5430 yyvspub_c_vsp[-1].str[len] = '.';
5431 yyvspub_c_vsp[-1].str[len+1] = 0;
5432 }
5433 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
5434 local_zones_ipset, yyvspub_c_vsp[-1].str))
5435 fatal_exit("out of memory adding local-zone");
5436 free(yyvspub_c_vsp[0].str);
5437#endif
5438 } else {
5439 if(!cfg_str2list_insert(
5440 &cfg_parser->cfg->views->local_zones,
5441 yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
5442 fatal_exit("out of memory adding local-zone");
5443 }
5444 }
5445break;
5446case 588:
5447#line 3212 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5448{
5449 OUTYY(("P(view_response_ip:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
5450 validate_respip_action(yyvspub_c_vsp[0].str);
5451 if(!cfg_str2list_insert(
5452 &cfg_parser->cfg->views->respip_actions, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
5453 fatal_exit("out of memory adding per-view "
5454 "response-ip action");
5455 }
5456break;
5457case 589:
5458#line 3222 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5459{
5460 OUTYY(("P(view_response_ip_data:%s)\n", yyvsp[-1].str));
5461 if(!cfg_str2list_insert(
5462 &cfg_parser->cfg->views->respip_data, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
5463 fatal_exit("out of memory adding response-ip-data");
5464 }
5465break;
5466case 590:
5467#line 3230 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5468{
5469 OUTYY(("P(view_local_data:%s)\n", yyvsp[0].str));
5470 if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, yyvspub_c_vsp[0].str)) {
5471 fatal_exit("out of memory adding local-data");
5472 }
5473 }
5474break;
5475case 591:
5476#line 3238 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5477{
5478 char* ptr;
5479 OUTYY(("P(view_local_data_ptr:%s)\n", yyvsp[0].str));
5480 ptr = cfg_ptr_reverse(yyvspub_c_vsp[0].str);
5481 free(yyvspub_c_vsp[0].str);
5482 if(ptr) {
5483 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
5484 local_data, ptr))
5485 fatal_exit("out of memory adding local-data");
5486 } else {
5487 yyerrorub_c_error("local-data-ptr could not be reversed");
5488 }
5489 }
5490break;
5491case 592:
5492#line 3253 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5493{
5494 OUTYY(("P(view-first:%s)\n", yyvsp[0].str));
5495 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5496 yyerrorub_c_error("expected yes or no.");
5497 else cfg_parser->cfg->views->isfirst=(strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5498 free(yyvspub_c_vsp[0].str);
5499 }
5500break;
5501case 593:
5502#line 3262 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5503{
5504 OUTYY(("\nP(remote-control:)\n"));
5505 cfg_parser->started_toplevel = 1;
5506 }
5507break;
5508case 604:
5509#line 3274 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5510{
5511 OUTYY(("P(control_enable:%s)\n", yyvsp[0].str));
5512 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5513 yyerrorub_c_error("expected yes or no.");
5514 else cfg_parser->cfg->remote_control_enable =
5515 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5516 free(yyvspub_c_vsp[0].str);
5517 }
5518break;
5519case 605:
5520#line 3284 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5521{
5522 OUTYY(("P(control_port:%s)\n", yyvsp[0].str));
5523 if(atoi(yyvspub_c_vsp[0].str) == 0)
5524 yyerrorub_c_error("control port number expected");
5525 else cfg_parser->cfg->control_port = atoi(yyvspub_c_vsp[0].str);
5526 free(yyvspub_c_vsp[0].str);
5527 }
5528break;
5529case 606:
5530#line 3293 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5531{
5532 OUTYY(("P(control_interface:%s)\n", yyvsp[0].str));
5533 if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, yyvspub_c_vsp[0].str))
5534 yyerrorub_c_error("out of memory");
5535 }
5536break;
5537case 607:
5538#line 3300 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5539{
5540 OUTYY(("P(control_use_cert:%s)\n", yyvsp[0].str));
5541 cfg_parser->cfg->control_use_cert = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5542 free(yyvspub_c_vsp[0].str);
5543 }
5544break;
5545case 608:
5546#line 3307 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5547{
5548 OUTYY(("P(rc_server_key_file:%s)\n", yyvsp[0].str));
5549 free(cfg_parser->cfg->server_key_file);
5550 cfg_parser->cfg->server_key_file = yyvspub_c_vsp[0].str;
5551 }
5552break;
5553case 609:
5554#line 3314 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5555{
5556 OUTYY(("P(rc_server_cert_file:%s)\n", yyvsp[0].str));
5557 free(cfg_parser->cfg->server_cert_file);
5558 cfg_parser->cfg->server_cert_file = yyvspub_c_vsp[0].str;
5559 }
5560break;
5561case 610:
5562#line 3321 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5563{
5564 OUTYY(("P(rc_control_key_file:%s)\n", yyvsp[0].str));
5565 free(cfg_parser->cfg->control_key_file);
5566 cfg_parser->cfg->control_key_file = yyvspub_c_vsp[0].str;
5567 }
5568break;
5569case 611:
5570#line 3328 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5571{
5572 OUTYY(("P(rc_control_cert_file:%s)\n", yyvsp[0].str));
5573 free(cfg_parser->cfg->control_cert_file);
5574 cfg_parser->cfg->control_cert_file = yyvspub_c_vsp[0].str;
5575 }
5576break;
5577case 612:
5578#line 3335 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5579{
5580 OUTYY(("\nP(dnstap:)\n"));
5581 cfg_parser->started_toplevel = 1;
5582 }
5583break;
5584case 634:
5585#line 3356 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5586{
5587 OUTYY(("P(dt_dnstap_enable:%s)\n", yyvsp[0].str));
5588 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5589 yyerrorub_c_error("expected yes or no.");
5590 else cfg_parser->cfg->dnstap = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5591 free(yyvspub_c_vsp[0].str);
5592 }
5593break;
5594case 635:
5595#line 3365 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5596{
5597 OUTYY(("P(dt_dnstap_bidirectional:%s)\n", yyvsp[0].str));
5598 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5599 yyerrorub_c_error("expected yes or no.");
5600 else cfg_parser->cfg->dnstap_bidirectional =
5601 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5602 free(yyvspub_c_vsp[0].str);
5603 }
5604break;
5605case 636:
5606#line 3375 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5607{
5608 OUTYY(("P(dt_dnstap_socket_path:%s)\n", yyvsp[0].str));
5609 free(cfg_parser->cfg->dnstap_socket_path);
5610 cfg_parser->cfg->dnstap_socket_path = yyvspub_c_vsp[0].str;
5611 }
5612break;
5613case 637:
5614#line 3382 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5615{
5616 OUTYY(("P(dt_dnstap_ip:%s)\n", yyvsp[0].str));
5617 free(cfg_parser->cfg->dnstap_ip);
5618 cfg_parser->cfg->dnstap_ip = yyvspub_c_vsp[0].str;
5619 }
5620break;
5621case 638:
5622#line 3389 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5623{
5624 OUTYY(("P(dt_dnstap_tls:%s)\n", yyvsp[0].str));
5625 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5626 yyerrorub_c_error("expected yes or no.");
5627 else cfg_parser->cfg->dnstap_tls = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5628 free(yyvspub_c_vsp[0].str);
5629 }
5630break;
5631case 639:
5632#line 3398 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5633{
5634 OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", yyvsp[0].str));
5635 free(cfg_parser->cfg->dnstap_tls_server_name);
5636 cfg_parser->cfg->dnstap_tls_server_name = yyvspub_c_vsp[0].str;
5637 }
5638break;
5639case 640:
5640#line 3405 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5641{
5642 OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", yyvsp[0].str));
5643 free(cfg_parser->cfg->dnstap_tls_cert_bundle);
5644 cfg_parser->cfg->dnstap_tls_cert_bundle = yyvspub_c_vsp[0].str;
5645 }
5646break;
5647case 641:
5648#line 3412 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5649{
5650 OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", yyvsp[0].str));
5651 free(cfg_parser->cfg->dnstap_tls_client_key_file);
5652 cfg_parser->cfg->dnstap_tls_client_key_file = yyvspub_c_vsp[0].str;
5653 }
5654break;
5655case 642:
5656#line 3419 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5657{
5658 OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", yyvsp[0].str));
5659 free(cfg_parser->cfg->dnstap_tls_client_cert_file);
5660 cfg_parser->cfg->dnstap_tls_client_cert_file = yyvspub_c_vsp[0].str;
5661 }
5662break;
5663case 643:
5664#line 3426 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5665{
5666 OUTYY(("P(dt_dnstap_send_identity:%s)\n", yyvsp[0].str));
5667 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5668 yyerrorub_c_error("expected yes or no.");
5669 else cfg_parser->cfg->dnstap_send_identity = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5670 free(yyvspub_c_vsp[0].str);
5671 }
5672break;
5673case 644:
5674#line 3435 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5675{
5676 OUTYY(("P(dt_dnstap_send_version:%s)\n", yyvsp[0].str));
5677 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5678 yyerrorub_c_error("expected yes or no.");
5679 else cfg_parser->cfg->dnstap_send_version = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5680 free(yyvspub_c_vsp[0].str);
5681 }
5682break;
5683case 645:
5684#line 3444 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5685{
5686 OUTYY(("P(dt_dnstap_identity:%s)\n", yyvsp[0].str));
5687 free(cfg_parser->cfg->dnstap_identity);
5688 cfg_parser->cfg->dnstap_identity = yyvspub_c_vsp[0].str;
5689 }
5690break;
5691case 646:
5692#line 3451 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5693{
5694 OUTYY(("P(dt_dnstap_version:%s)\n", yyvsp[0].str));
5695 free(cfg_parser->cfg->dnstap_version);
5696 cfg_parser->cfg->dnstap_version = yyvspub_c_vsp[0].str;
5697 }
5698break;
5699case 647:
5700#line 3458 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5701{
5702 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", yyvsp[0].str));
5703 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5704 yyerrorub_c_error("expected yes or no.");
5705 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
5706 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5707 free(yyvspub_c_vsp[0].str);
5708 }
5709break;
5710case 648:
5711#line 3468 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5712{
5713 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", yyvsp[0].str));
5714 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5715 yyerrorub_c_error("expected yes or no.");
5716 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
5717 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5718 free(yyvspub_c_vsp[0].str);
5719 }
5720break;
5721case 649:
5722#line 3478 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5723{
5724 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", yyvsp[0].str));
5725 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5726 yyerrorub_c_error("expected yes or no.");
5727 else cfg_parser->cfg->dnstap_log_client_query_messages =
5728 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5729 free(yyvspub_c_vsp[0].str);
5730 }
5731break;
5732case 650:
5733#line 3488 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5734{
5735 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", yyvsp[0].str));
5736 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5737 yyerrorub_c_error("expected yes or no.");
5738 else cfg_parser->cfg->dnstap_log_client_response_messages =
5739 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5740 free(yyvspub_c_vsp[0].str);
5741 }
5742break;
5743case 651:
5744#line 3498 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5745{
5746 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", yyvsp[0].str));
5747 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5748 yyerrorub_c_error("expected yes or no.");
5749 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
5750 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5751 free(yyvspub_c_vsp[0].str);
5752 }
5753break;
5754case 652:
5755#line 3508 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5756{
5757 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", yyvsp[0].str));
5758 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5759 yyerrorub_c_error("expected yes or no.");
5760 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
5761 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5762 free(yyvspub_c_vsp[0].str);
5763 }
5764break;
5765case 653:
5766#line 3518 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5767{
5768 OUTYY(("\nP(python:)\n"));
5769 cfg_parser->started_toplevel = 1;
5770 }
5771break;
5772case 657:
5773#line 3528 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5774{
5775 OUTYY(("P(python-script:%s)\n", yyvsp[0].str));
5776 if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, yyvspub_c_vsp[0].str))
5777 yyerrorub_c_error("out of memory");
5778 }
5779break;
5780case 658:
5781#line 3535 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5782{
5783 OUTYY(("\nP(dynlib:)\n"));
5784 cfg_parser->started_toplevel = 1;
5785 }
5786break;
5787case 662:
5788#line 3545 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5789{
5790 OUTYY(("P(dynlib-file:%s)\n", yyvsp[0].str));
5791 if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, yyvspub_c_vsp[0].str))
5792 yyerrorub_c_error("out of memory");
5793 }
5794break;
5795case 663:
5796#line 3552 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5797{
5798 OUTYY(("P(disable_dnssec_lame_check:%s)\n", yyvsp[0].str));
5799 if (strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5800 yyerrorub_c_error("expected yes or no.");
5801 else cfg_parser->cfg->disable_dnssec_lame_check =
5802 (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5803 free(yyvspub_c_vsp[0].str);
5804 }
5805break;
5806case 664:
5807#line 3562 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5808{
5809 OUTYY(("P(server_log_identity:%s)\n", yyvsp[0].str));
5810 free(cfg_parser->cfg->log_identity);
5811 cfg_parser->cfg->log_identity = yyvspub_c_vsp[0].str;
5812 }
5813break;
5814case 665:
5815#line 3569 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5816{
5817 OUTYY(("P(server_response_ip:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
5818 validate_respip_action(yyvspub_c_vsp[0].str);
5819 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
5820 yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
5821 fatal_exit("out of memory adding response-ip");
5822 }
5823break;
5824case 666:
5825#line 3578 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5826{
5827 OUTYY(("P(server_response_ip_data:%s)\n", yyvsp[-1].str));
5828 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
5829 yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
5830 fatal_exit("out of memory adding response-ip-data");
5831 }
5832break;
5833case 667:
5834#line 3586 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5835{
5836 OUTYY(("\nP(dnscrypt:)\n"));
5837 cfg_parser->started_toplevel = 1;
5838 }
5839break;
5840case 680:
5841#line 3603 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5842{
5843 OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", yyvsp[0].str));
5844 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
5845 yyerrorub_c_error("expected yes or no.");
5846 else cfg_parser->cfg->dnscrypt = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
5847 free(yyvspub_c_vsp[0].str);
5848 }
5849break;
5850case 681:
5851#line 3612 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5852{
5853 OUTYY(("P(dnsc_dnscrypt_port:%s)\n", yyvsp[0].str));
5854 if(atoi(yyvspub_c_vsp[0].str) == 0)
5855 yyerrorub_c_error("port number expected");
5856 else cfg_parser->cfg->dnscrypt_port = atoi(yyvspub_c_vsp[0].str);
5857 free(yyvspub_c_vsp[0].str);
5858 }
5859break;
5860case 682:
5861#line 3621 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5862{
5863 OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", yyvsp[0].str));
5864 free(cfg_parser->cfg->dnscrypt_provider);
5865 cfg_parser->cfg->dnscrypt_provider = yyvspub_c_vsp[0].str;
5866 }
5867break;
5868case 683:
5869#line 3628 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5870{
5871 OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", yyvsp[0].str));
5872 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, yyvspub_c_vsp[0].str))
5873 log_warn("dnscrypt-provider-cert %s is a duplicate", yyvspub_c_vsp[0].str);
5874 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, yyvspub_c_vsp[0].str))
5875 fatal_exit("out of memory adding dnscrypt-provider-cert");
5876 }
5877break;
5878case 684:
5879#line 3637 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5880{
5881 OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", yyvsp[0].str));
5882 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, yyvspub_c_vsp[0].str))
5883 fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
5884 }
5885break;
5886case 685:
5887#line 3644 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5888{
5889 OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", yyvsp[0].str));
5890 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, yyvspub_c_vsp[0].str))
5891 log_warn("dnscrypt-secret-key: %s is a duplicate", yyvspub_c_vsp[0].str);
5892 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, yyvspub_c_vsp[0].str))
5893 fatal_exit("out of memory adding dnscrypt-secret-key");
5894 }
5895break;
5896case 686:
5897#line 3653 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5898{
5899 OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", yyvsp[0].str));
5900 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
5901 yyerrorub_c_error("memory size expected");
5902 free(yyvspub_c_vsp[0].str);
5903 }
5904break;
5905case 687:
5906#line 3661 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5907{
5908 OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", yyvsp[0].str));
5909 if(atoi(yyvspub_c_vsp[0].str) == 0) {
5910 yyerrorub_c_error("number expected");
5911 } else {
5912 cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi(yyvspub_c_vsp[0].str);
5913 if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
5914 yyerrorub_c_error("must be a power of 2");
5915 }
5916 free(yyvspub_c_vsp[0].str);
5917 }
5918break;
5919case 688:
5920#line 3674 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5921{
5922 OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", yyvsp[0].str));
5923 if(!cfg_parse_memsize(yyvspub_c_vsp[0].str, &cfg_parser->cfg->dnscrypt_nonce_cache_size))
5924 yyerrorub_c_error("memory size expected");
5925 free(yyvspub_c_vsp[0].str);
5926 }
5927break;
5928case 689:
5929#line 3682 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5930{
5931 OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", yyvsp[0].str));
5932 if(atoi(yyvspub_c_vsp[0].str) == 0) {
5933 yyerrorub_c_error("number expected");
5934 } else {
5935 cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi(yyvspub_c_vsp[0].str);
5936 if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
5937 yyerrorub_c_error("must be a power of 2");
5938 }
5939 free(yyvspub_c_vsp[0].str);
5940 }
5941break;
5942case 690:
5943#line 3695 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5944{
5945 OUTYY(("\nP(cachedb:)\n"));
5946 cfg_parser->started_toplevel = 1;
5947 }
5948break;
5949case 701:
5950#line 3707 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5951{
5952 #ifdef USE_CACHEDB
5953 OUTYY(("P(backend:%s)\n", yyvsp[0].str));
5954 free(cfg_parser->cfg->cachedb_backend);
5955 cfg_parser->cfg->cachedb_backend = yyvspub_c_vsp[0].str;
5956 #else
5957 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
5958 free(yyvspub_c_vsp[0].str);
5959 #endif
5960 }
5961break;
5962case 702:
5963#line 3719 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5964{
5965 #ifdef USE_CACHEDB
5966 OUTYY(("P(secret-seed:%s)\n", yyvsp[0].str));
5967 free(cfg_parser->cfg->cachedb_secret);
5968 cfg_parser->cfg->cachedb_secret = yyvspub_c_vsp[0].str;
5969 #else
5970 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
5971 free(yyvspub_c_vsp[0].str);
5972 #endif
5973 }
5974break;
5975case 703:
5976#line 3731 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5977{
5978 #if defined(USE_CACHEDB) && defined(USE_REDIS)
5979 OUTYY(("P(redis_server_host:%s)\n", yyvsp[0].str));
5980 free(cfg_parser->cfg->redis_server_host);
5981 cfg_parser->cfg->redis_server_host = yyvspub_c_vsp[0].str;
5982 #else
5983 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
5984 free(yyvspub_c_vsp[0].str);
5985 #endif
5986 }
5987break;
5988case 704:
5989#line 3743 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
5990{
5991 #if defined(USE_CACHEDB) && defined(USE_REDIS)
5992 int port;
5993 OUTYY(("P(redis_server_port:%s)\n", yyvsp[0].str));
5994 port = atoi(yyvspub_c_vsp[0].str);
5995 if(port == 0 || port < 0 || port > 65535)
5996 yyerrorub_c_error("valid redis server port number expected");
5997 else cfg_parser->cfg->redis_server_port = port;
5998 #else
5999 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6000 #endif
6001 free(yyvspub_c_vsp[0].str);
6002 }
6003break;
6004case 705:
6005#line 3758 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6006{
6007 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6008 OUTYY(("P(redis_server_path:%s)\n", yyvsp[0].str));
6009 free(cfg_parser->cfg->redis_server_path);
6010 cfg_parser->cfg->redis_server_path = yyvspub_c_vsp[0].str;
6011 #else
6012 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6013 free(yyvspub_c_vsp[0].str);
6014 #endif
6015 }
6016break;
6017case 706:
6018#line 3770 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6019{
6020 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6021 OUTYY(("P(redis_server_password:%s)\n", yyvsp[0].str));
6022 free(cfg_parser->cfg->redis_server_password);
6023 cfg_parser->cfg->redis_server_password = yyvspub_c_vsp[0].str;
6024 #else
6025 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6026 free(yyvspub_c_vsp[0].str);
6027 #endif
6028 }
6029break;
6030case 707:
6031#line 3782 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6032{
6033 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6034 OUTYY(("P(redis_timeout:%s)\n", yyvsp[0].str));
6035 if(atoi(yyvspub_c_vsp[0].str) == 0)
6036 yyerrorub_c_error("redis timeout value expected");
6037 else cfg_parser->cfg->redis_timeout = atoi(yyvspub_c_vsp[0].str);
6038 #else
6039 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6040 #endif
6041 free(yyvspub_c_vsp[0].str);
6042 }
6043break;
6044case 708:
6045#line 3795 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6046{
6047 #if defined(USE_CACHEDB) && defined(USE_REDIS)
6048 OUTYY(("P(redis_expire_records:%s)\n", yyvsp[0].str));
6049 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
6050 yyerrorub_c_error("expected yes or no.");
6051 else cfg_parser->cfg->redis_expire_records = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
6052 #else
6053 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
6054 #endif
6055 free(yyvspub_c_vsp[0].str);
6056 }
6057break;
6058case 709:
6059#line 3808 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6060{
6061 OUTYY(("P(server_tcp_connection_limit:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
6062 if (atoi(yyvspub_c_vsp[0].str) < 0)
6063 yyerrorub_c_error("positive number expected");
6064 else {
6065 if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, yyvspub_c_vsp[-1].str, yyvspub_c_vsp[0].str))
6066 fatal_exit("out of memory adding tcp connection limit");
6067 }
6068 }
6069break;
6070case 710:
6071#line 3819 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6072{
6073 OUTYY(("P(server_answer_cookie:%s)\n", yyvsp[0].str));
6074 if(strcmp(yyvspub_c_vsp[0].str, "yes") != 0 && strcmp(yyvspub_c_vsp[0].str, "no") != 0)
6075 yyerrorub_c_error("expected yes or no.");
6076 else cfg_parser->cfg->do_answer_cookie = (strcmp(yyvspub_c_vsp[0].str, "yes")==0);
6077 free(yyvspub_c_vsp[0].str);
6078 }
6079break;
6080case 711:
6081#line 3828 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6082{
6083 uint8_t secret[32];
6084 size_t secret_len = sizeof(secret);
6085
6086 OUTYY(("P(server_cookie_secret:%s)\n", yyvsp[0].str));
6087 if(sldns_str2wire_hex_buf(yyvspub_c_vsp[0].str, secret, &secret_len)
6088 || (secret_len != 16))
6089 yyerrorub_c_error("expected 128 bit hex string");
6090 else {
6091 cfg_parser->cfg->cookie_secret_len = secret_len;
6092 memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
6093 }
6094 free(yyvspub_c_vsp[0].str);
6095 }
6096break;
6097case 712:
6098#line 3844 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6099{
6100 OUTYY(("\nP(ipset:)\n"));
6101 cfg_parser->started_toplevel = 1;
6102 }
6103break;
6104case 717:
6105#line 3854 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6106{
6107 #ifdef USE_IPSET
6108 OUTYY(("P(name-v4:%s)\n", yyvsp[0].str));
6109 if(cfg_parser->cfg->ipset_name_v4)
6110 yyerrorub_c_error("ipset name v4 override, there must be one "
6111 "name for ip v4");
6112 free(cfg_parser->cfg->ipset_name_v4);
6113 cfg_parser->cfg->ipset_name_v4 = yyvspub_c_vsp[0].str;
6114 #else
6115 OUTYY(("P(Compiled without ipset, ignoring)\n"));
6116 free(yyvspub_c_vsp[0].str);
6117 #endif
6118 }
6119break;
6120case 718:
6121#line 3869 "/usr/src/sbin/unwind/libunbound/util/configparser.y"
6122{
6123 #ifdef USE_IPSET
6124 OUTYY(("P(name-v6:%s)\n", yyvsp[0].str));
6125 if(cfg_parser->cfg->ipset_name_v6)
6126 yyerrorub_c_error("ipset name v6 override, there must be one "
6127 "name for ip v6");
6128 free(cfg_parser->cfg->ipset_name_v6);
6129 cfg_parser->cfg->ipset_name_v6 = yyvspub_c_vsp[0].str;
6130 #else
6131 OUTYY(("P(Compiled without ipset, ignoring)\n"));
6132 free(yyvspub_c_vsp[0].str);
6133 #endif
6134 }
6135break;
6136#line 6129 "configparser.c"
6137 }
6138 yysspub_c_ssp -= yym;
6139 yystateub_c_state = *yysspub_c_ssp;
6140 yyvspub_c_vsp -= yym;
6141 yym = yylhsub_c_yylhs[yyn];
6142 if (yystateub_c_state == 0 && yym
5.2
'yym' is equal to 0
== 0)
6
Taking true branch
6143 {
6144#if YYDEBUG0
6145 if (yydebugub_c_debug)
6146 printf("%sdebug: after reduction, shifting from state 0 to\
6147 state %d\n", YYPREFIX"yy", YYFINAL1);
6148#endif
6149 yystateub_c_state = YYFINAL1;
6150 *++yysspub_c_ssp = YYFINAL1;
6151 *++yyvspub_c_vsp = yyvalub_c_val;
6152 if (yycharub_c_char < 0)
7
Taking true branch
6153 {
6154 if ((yycharub_c_char = yylexub_c_lex()) < 0) yycharub_c_char = 0;
8
Assuming the condition is false
9
Taking false branch
6155#if YYDEBUG0
6156 if (yydebugub_c_debug)
6157 {
6158 yysub_c_s = 0;
6159 if (yycharub_c_char <= YYMAXTOKEN599) yysub_c_s = yynameub_c_yyname[yycharub_c_char];
6160 if (!yysub_c_s) yysub_c_s = "illegal-symbol";
6161 printf("%sdebug: state %d, reading %d (%s)\n",
6162 YYPREFIX"yy", YYFINAL1, yycharub_c_char, yysub_c_s);
6163 }
6164#endif
6165 }
6166 if (yycharub_c_char == 0) goto yyaccept;
10
Assuming 'ub_c_char' is not equal to 0
11
Taking false branch
6167 goto yyloop;
12
Control jumps to line 2199
6168 }
6169 if ((yyn = yygindexub_c_yygindex[yym]) && (yyn += yystateub_c_state) >= 0 &&
6170 yyn <= YYTABLESIZE1215 && yycheckub_c_yycheck[yyn] == yystateub_c_state)
6171 yystateub_c_state = yytableub_c_yytable[yyn];
6172 else
6173 yystateub_c_state = yydgotoub_c_yydgoto[yym];
6174#if YYDEBUG0
6175 if (yydebugub_c_debug)
6176 printf("%sdebug: after reduction, shifting from state %d \
6177to state %d\n", YYPREFIX"yy", *yysspub_c_ssp, yystateub_c_state);
6178#endif
6179 if (yysspub_c_ssp >= yysslimub_c_sslim && yygrowstack())
6180 {
6181 goto yyoverflow;
6182 }
6183 *++yysspub_c_ssp = yystateub_c_state;
6184 *++yyvspub_c_vsp = yyvalub_c_val;
6185 goto yyloop;
6186yyoverflow:
6187 yyerrorub_c_error("yacc stack overflow");
6188yyabort:
6189 if (yyssub_c_ss)
6190 free(yyssub_c_ss);
6191 if (yyvsub_c_vs)
6192 free(yyvsub_c_vs);
6193 yyssub_c_ss = yysspub_c_ssp = NULL((void *)0);
6194 yyvsub_c_vs = yyvspub_c_vsp = NULL((void *)0);
6195 yystacksizeub_c_stacksize = 0;
6196 return (1);
6197yyaccept:
6198 if (yyssub_c_ss)
6199 free(yyssub_c_ss);
6200 if (yyvsub_c_vs)
6201 free(yyvsub_c_vs);
6202 yyssub_c_ss = yysspub_c_ssp = NULL((void *)0);
6203 yyvsub_c_vs = yyvspub_c_vsp = NULL((void *)0);
6204 yystacksizeub_c_stacksize = 0;
6205 return (0);
6206}