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