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