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