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