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