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