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