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