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