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