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