1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 0
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66
67
68
69 /* First part of user prologue. */
70 #line 38 "util/configparser.y"
71
72 #include "config.h"
73
74 #include <stdarg.h>
75 #include <stdio.h>
76 #include <string.h>
77 #include <stdlib.h>
78 #include <assert.h>
79
80 #include "util/configyyrename.h"
81 #include "util/config_file.h"
82 #include "util/net_help.h"
83 #include "sldns/str2wire.h"
84
85 int ub_c_lex(void);
86 void ub_c_error(const char *message);
87
88 static void validate_respip_action(const char* action);
89 static void validate_acl_action(const char* action);
90
91 /* these need to be global, otherwise they cannot be used inside yacc */
92 extern struct config_parser_state* cfg_parser;
93
94 #if 0
95 #define OUTYY(s) printf s /* used ONLY when debugging */
96 #else
97 #define OUTYY(s)
98 #endif
99
100
101 #line 102 "util/configparser.c"
102
103 # ifndef YY_CAST
104 # ifdef __cplusplus
105 # define YY_CAST(Type, Val) static_cast<Type> (Val)
106 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
107 # else
108 # define YY_CAST(Type, Val) ((Type) (Val))
109 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
110 # endif
111 # endif
112 # ifndef YY_NULLPTR
113 # if defined __cplusplus
114 # if 201103L <= __cplusplus
115 # define YY_NULLPTR nullptr
116 # else
117 # define YY_NULLPTR 0
118 # endif
119 # else
120 # define YY_NULLPTR ((void*)0)
121 # endif
122 # endif
123
124 #include "configparser.h"
125 /* Symbol kind. */
126 enum yysymbol_kind_t
127 {
128 YYSYMBOL_YYEMPTY = -2,
129 YYSYMBOL_YYEOF = 0, /* "end of file" */
130 YYSYMBOL_YYerror = 1, /* error */
131 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
132 YYSYMBOL_SPACE = 3, /* SPACE */
133 YYSYMBOL_LETTER = 4, /* LETTER */
134 YYSYMBOL_NEWLINE = 5, /* NEWLINE */
135 YYSYMBOL_COMMENT = 6, /* COMMENT */
136 YYSYMBOL_COLON = 7, /* COLON */
137 YYSYMBOL_ANY = 8, /* ANY */
138 YYSYMBOL_ZONESTR = 9, /* ZONESTR */
139 YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */
140 YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */
141 YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */
142 YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */
143 YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */
144 YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */
145 YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */
146 YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */
147 YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */
148 YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */
149 YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */
150 YYSYMBOL_VAR_DO_NAT64 = 21, /* VAR_DO_NAT64 */
151 YYSYMBOL_VAR_PREFER_IP6 = 22, /* VAR_PREFER_IP6 */
152 YYSYMBOL_VAR_DO_UDP = 23, /* VAR_DO_UDP */
153 YYSYMBOL_VAR_DO_TCP = 24, /* VAR_DO_TCP */
154 YYSYMBOL_VAR_TCP_MSS = 25, /* VAR_TCP_MSS */
155 YYSYMBOL_VAR_OUTGOING_TCP_MSS = 26, /* VAR_OUTGOING_TCP_MSS */
156 YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 27, /* VAR_TCP_IDLE_TIMEOUT */
157 YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 28, /* VAR_EDNS_TCP_KEEPALIVE */
158 YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 29, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */
159 YYSYMBOL_VAR_SOCK_QUEUE_TIMEOUT = 30, /* VAR_SOCK_QUEUE_TIMEOUT */
160 YYSYMBOL_VAR_CHROOT = 31, /* VAR_CHROOT */
161 YYSYMBOL_VAR_USERNAME = 32, /* VAR_USERNAME */
162 YYSYMBOL_VAR_DIRECTORY = 33, /* VAR_DIRECTORY */
163 YYSYMBOL_VAR_LOGFILE = 34, /* VAR_LOGFILE */
164 YYSYMBOL_VAR_PIDFILE = 35, /* VAR_PIDFILE */
165 YYSYMBOL_VAR_MSG_CACHE_SIZE = 36, /* VAR_MSG_CACHE_SIZE */
166 YYSYMBOL_VAR_MSG_CACHE_SLABS = 37, /* VAR_MSG_CACHE_SLABS */
167 YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 38, /* VAR_NUM_QUERIES_PER_THREAD */
168 YYSYMBOL_VAR_RRSET_CACHE_SIZE = 39, /* VAR_RRSET_CACHE_SIZE */
169 YYSYMBOL_VAR_RRSET_CACHE_SLABS = 40, /* VAR_RRSET_CACHE_SLABS */
170 YYSYMBOL_VAR_OUTGOING_NUM_TCP = 41, /* VAR_OUTGOING_NUM_TCP */
171 YYSYMBOL_VAR_INFRA_HOST_TTL = 42, /* VAR_INFRA_HOST_TTL */
172 YYSYMBOL_VAR_INFRA_LAME_TTL = 43, /* VAR_INFRA_LAME_TTL */
173 YYSYMBOL_VAR_INFRA_CACHE_SLABS = 44, /* VAR_INFRA_CACHE_SLABS */
174 YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 45, /* VAR_INFRA_CACHE_NUMHOSTS */
175 YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 46, /* VAR_INFRA_CACHE_LAME_SIZE */
176 YYSYMBOL_VAR_NAME = 47, /* VAR_NAME */
177 YYSYMBOL_VAR_STUB_ZONE = 48, /* VAR_STUB_ZONE */
178 YYSYMBOL_VAR_STUB_HOST = 49, /* VAR_STUB_HOST */
179 YYSYMBOL_VAR_STUB_ADDR = 50, /* VAR_STUB_ADDR */
180 YYSYMBOL_VAR_TARGET_FETCH_POLICY = 51, /* VAR_TARGET_FETCH_POLICY */
181 YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 52, /* VAR_HARDEN_SHORT_BUFSIZE */
182 YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 53, /* VAR_HARDEN_LARGE_QUERIES */
183 YYSYMBOL_VAR_FORWARD_ZONE = 54, /* VAR_FORWARD_ZONE */
184 YYSYMBOL_VAR_FORWARD_HOST = 55, /* VAR_FORWARD_HOST */
185 YYSYMBOL_VAR_FORWARD_ADDR = 56, /* VAR_FORWARD_ADDR */
186 YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 57, /* VAR_DO_NOT_QUERY_ADDRESS */
187 YYSYMBOL_VAR_HIDE_IDENTITY = 58, /* VAR_HIDE_IDENTITY */
188 YYSYMBOL_VAR_HIDE_VERSION = 59, /* VAR_HIDE_VERSION */
189 YYSYMBOL_VAR_IDENTITY = 60, /* VAR_IDENTITY */
190 YYSYMBOL_VAR_VERSION = 61, /* VAR_VERSION */
191 YYSYMBOL_VAR_HARDEN_GLUE = 62, /* VAR_HARDEN_GLUE */
192 YYSYMBOL_VAR_MODULE_CONF = 63, /* VAR_MODULE_CONF */
193 YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 64, /* VAR_TRUST_ANCHOR_FILE */
194 YYSYMBOL_VAR_TRUST_ANCHOR = 65, /* VAR_TRUST_ANCHOR */
195 YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 66, /* VAR_VAL_OVERRIDE_DATE */
196 YYSYMBOL_VAR_BOGUS_TTL = 67, /* VAR_BOGUS_TTL */
197 YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 68, /* VAR_VAL_CLEAN_ADDITIONAL */
198 YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 69, /* VAR_VAL_PERMISSIVE_MODE */
199 YYSYMBOL_VAR_INCOMING_NUM_TCP = 70, /* VAR_INCOMING_NUM_TCP */
200 YYSYMBOL_VAR_MSG_BUFFER_SIZE = 71, /* VAR_MSG_BUFFER_SIZE */
201 YYSYMBOL_VAR_KEY_CACHE_SIZE = 72, /* VAR_KEY_CACHE_SIZE */
202 YYSYMBOL_VAR_KEY_CACHE_SLABS = 73, /* VAR_KEY_CACHE_SLABS */
203 YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 74, /* VAR_TRUSTED_KEYS_FILE */
204 YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 75, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */
205 YYSYMBOL_VAR_USE_SYSLOG = 76, /* VAR_USE_SYSLOG */
206 YYSYMBOL_VAR_OUTGOING_INTERFACE = 77, /* VAR_OUTGOING_INTERFACE */
207 YYSYMBOL_VAR_ROOT_HINTS = 78, /* VAR_ROOT_HINTS */
208 YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 79, /* VAR_DO_NOT_QUERY_LOCALHOST */
209 YYSYMBOL_VAR_CACHE_MAX_TTL = 80, /* VAR_CACHE_MAX_TTL */
210 YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 81, /* VAR_HARDEN_DNSSEC_STRIPPED */
211 YYSYMBOL_VAR_ACCESS_CONTROL = 82, /* VAR_ACCESS_CONTROL */
212 YYSYMBOL_VAR_LOCAL_ZONE = 83, /* VAR_LOCAL_ZONE */
213 YYSYMBOL_VAR_LOCAL_DATA = 84, /* VAR_LOCAL_DATA */
214 YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 85, /* VAR_INTERFACE_AUTOMATIC */
215 YYSYMBOL_VAR_STATISTICS_INTERVAL = 86, /* VAR_STATISTICS_INTERVAL */
216 YYSYMBOL_VAR_DO_DAEMONIZE = 87, /* VAR_DO_DAEMONIZE */
217 YYSYMBOL_VAR_USE_CAPS_FOR_ID = 88, /* VAR_USE_CAPS_FOR_ID */
218 YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 89, /* VAR_STATISTICS_CUMULATIVE */
219 YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 90, /* VAR_OUTGOING_PORT_PERMIT */
220 YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 91, /* VAR_OUTGOING_PORT_AVOID */
221 YYSYMBOL_VAR_DLV_ANCHOR_FILE = 92, /* VAR_DLV_ANCHOR_FILE */
222 YYSYMBOL_VAR_DLV_ANCHOR = 93, /* VAR_DLV_ANCHOR */
223 YYSYMBOL_VAR_NEG_CACHE_SIZE = 94, /* VAR_NEG_CACHE_SIZE */
224 YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 95, /* VAR_HARDEN_REFERRAL_PATH */
225 YYSYMBOL_VAR_PRIVATE_ADDRESS = 96, /* VAR_PRIVATE_ADDRESS */
226 YYSYMBOL_VAR_PRIVATE_DOMAIN = 97, /* VAR_PRIVATE_DOMAIN */
227 YYSYMBOL_VAR_REMOTE_CONTROL = 98, /* VAR_REMOTE_CONTROL */
228 YYSYMBOL_VAR_CONTROL_ENABLE = 99, /* VAR_CONTROL_ENABLE */
229 YYSYMBOL_VAR_CONTROL_INTERFACE = 100, /* VAR_CONTROL_INTERFACE */
230 YYSYMBOL_VAR_CONTROL_PORT = 101, /* VAR_CONTROL_PORT */
231 YYSYMBOL_VAR_SERVER_KEY_FILE = 102, /* VAR_SERVER_KEY_FILE */
232 YYSYMBOL_VAR_SERVER_CERT_FILE = 103, /* VAR_SERVER_CERT_FILE */
233 YYSYMBOL_VAR_CONTROL_KEY_FILE = 104, /* VAR_CONTROL_KEY_FILE */
234 YYSYMBOL_VAR_CONTROL_CERT_FILE = 105, /* VAR_CONTROL_CERT_FILE */
235 YYSYMBOL_VAR_CONTROL_USE_CERT = 106, /* VAR_CONTROL_USE_CERT */
236 YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 107, /* VAR_TCP_REUSE_TIMEOUT */
237 YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 108, /* VAR_MAX_REUSE_TCP_QUERIES */
238 YYSYMBOL_VAR_EXTENDED_STATISTICS = 109, /* VAR_EXTENDED_STATISTICS */
239 YYSYMBOL_VAR_LOCAL_DATA_PTR = 110, /* VAR_LOCAL_DATA_PTR */
240 YYSYMBOL_VAR_JOSTLE_TIMEOUT = 111, /* VAR_JOSTLE_TIMEOUT */
241 YYSYMBOL_VAR_STUB_PRIME = 112, /* VAR_STUB_PRIME */
242 YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 113, /* VAR_UNWANTED_REPLY_THRESHOLD */
243 YYSYMBOL_VAR_LOG_TIME_ASCII = 114, /* VAR_LOG_TIME_ASCII */
244 YYSYMBOL_VAR_DOMAIN_INSECURE = 115, /* VAR_DOMAIN_INSECURE */
245 YYSYMBOL_VAR_PYTHON = 116, /* VAR_PYTHON */
246 YYSYMBOL_VAR_PYTHON_SCRIPT = 117, /* VAR_PYTHON_SCRIPT */
247 YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 118, /* VAR_VAL_SIG_SKEW_MIN */
248 YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 119, /* VAR_VAL_SIG_SKEW_MAX */
249 YYSYMBOL_VAR_VAL_MAX_RESTART = 120, /* VAR_VAL_MAX_RESTART */
250 YYSYMBOL_VAR_CACHE_MIN_TTL = 121, /* VAR_CACHE_MIN_TTL */
251 YYSYMBOL_VAR_VAL_LOG_LEVEL = 122, /* VAR_VAL_LOG_LEVEL */
252 YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 123, /* VAR_AUTO_TRUST_ANCHOR_FILE */
253 YYSYMBOL_VAR_KEEP_MISSING = 124, /* VAR_KEEP_MISSING */
254 YYSYMBOL_VAR_ADD_HOLDDOWN = 125, /* VAR_ADD_HOLDDOWN */
255 YYSYMBOL_VAR_DEL_HOLDDOWN = 126, /* VAR_DEL_HOLDDOWN */
256 YYSYMBOL_VAR_SO_RCVBUF = 127, /* VAR_SO_RCVBUF */
257 YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 128, /* VAR_EDNS_BUFFER_SIZE */
258 YYSYMBOL_VAR_PREFETCH = 129, /* VAR_PREFETCH */
259 YYSYMBOL_VAR_PREFETCH_KEY = 130, /* VAR_PREFETCH_KEY */
260 YYSYMBOL_VAR_SO_SNDBUF = 131, /* VAR_SO_SNDBUF */
261 YYSYMBOL_VAR_SO_REUSEPORT = 132, /* VAR_SO_REUSEPORT */
262 YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 133, /* VAR_HARDEN_BELOW_NXDOMAIN */
263 YYSYMBOL_VAR_IGNORE_CD_FLAG = 134, /* VAR_IGNORE_CD_FLAG */
264 YYSYMBOL_VAR_LOG_QUERIES = 135, /* VAR_LOG_QUERIES */
265 YYSYMBOL_VAR_LOG_REPLIES = 136, /* VAR_LOG_REPLIES */
266 YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 137, /* VAR_LOG_LOCAL_ACTIONS */
267 YYSYMBOL_VAR_TCP_UPSTREAM = 138, /* VAR_TCP_UPSTREAM */
268 YYSYMBOL_VAR_SSL_UPSTREAM = 139, /* VAR_SSL_UPSTREAM */
269 YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 140, /* VAR_TCP_AUTH_QUERY_TIMEOUT */
270 YYSYMBOL_VAR_SSL_SERVICE_KEY = 141, /* VAR_SSL_SERVICE_KEY */
271 YYSYMBOL_VAR_SSL_SERVICE_PEM = 142, /* VAR_SSL_SERVICE_PEM */
272 YYSYMBOL_VAR_SSL_PORT = 143, /* VAR_SSL_PORT */
273 YYSYMBOL_VAR_FORWARD_FIRST = 144, /* VAR_FORWARD_FIRST */
274 YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 145, /* VAR_STUB_SSL_UPSTREAM */
275 YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 146, /* VAR_FORWARD_SSL_UPSTREAM */
276 YYSYMBOL_VAR_TLS_CERT_BUNDLE = 147, /* VAR_TLS_CERT_BUNDLE */
277 YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 148, /* VAR_STUB_TCP_UPSTREAM */
278 YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 149, /* VAR_FORWARD_TCP_UPSTREAM */
279 YYSYMBOL_VAR_HTTPS_PORT = 150, /* VAR_HTTPS_PORT */
280 YYSYMBOL_VAR_HTTP_ENDPOINT = 151, /* VAR_HTTP_ENDPOINT */
281 YYSYMBOL_VAR_HTTP_MAX_STREAMS = 152, /* VAR_HTTP_MAX_STREAMS */
282 YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 153, /* VAR_HTTP_QUERY_BUFFER_SIZE */
283 YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 154, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */
284 YYSYMBOL_VAR_HTTP_NODELAY = 155, /* VAR_HTTP_NODELAY */
285 YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 156, /* VAR_HTTP_NOTLS_DOWNSTREAM */
286 YYSYMBOL_VAR_STUB_FIRST = 157, /* VAR_STUB_FIRST */
287 YYSYMBOL_VAR_MINIMAL_RESPONSES = 158, /* VAR_MINIMAL_RESPONSES */
288 YYSYMBOL_VAR_RRSET_ROUNDROBIN = 159, /* VAR_RRSET_ROUNDROBIN */
289 YYSYMBOL_VAR_MAX_UDP_SIZE = 160, /* VAR_MAX_UDP_SIZE */
290 YYSYMBOL_VAR_DELAY_CLOSE = 161, /* VAR_DELAY_CLOSE */
291 YYSYMBOL_VAR_UDP_CONNECT = 162, /* VAR_UDP_CONNECT */
292 YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 163, /* VAR_UNBLOCK_LAN_ZONES */
293 YYSYMBOL_VAR_INSECURE_LAN_ZONES = 164, /* VAR_INSECURE_LAN_ZONES */
294 YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 165, /* VAR_INFRA_CACHE_MIN_RTT */
295 YYSYMBOL_VAR_INFRA_CACHE_MAX_RTT = 166, /* VAR_INFRA_CACHE_MAX_RTT */
296 YYSYMBOL_VAR_INFRA_KEEP_PROBING = 167, /* VAR_INFRA_KEEP_PROBING */
297 YYSYMBOL_VAR_DNS64_PREFIX = 168, /* VAR_DNS64_PREFIX */
298 YYSYMBOL_VAR_DNS64_SYNTHALL = 169, /* VAR_DNS64_SYNTHALL */
299 YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 170, /* VAR_DNS64_IGNORE_AAAA */
300 YYSYMBOL_VAR_NAT64_PREFIX = 171, /* VAR_NAT64_PREFIX */
301 YYSYMBOL_VAR_DNSTAP = 172, /* VAR_DNSTAP */
302 YYSYMBOL_VAR_DNSTAP_ENABLE = 173, /* VAR_DNSTAP_ENABLE */
303 YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 174, /* VAR_DNSTAP_SOCKET_PATH */
304 YYSYMBOL_VAR_DNSTAP_IP = 175, /* VAR_DNSTAP_IP */
305 YYSYMBOL_VAR_DNSTAP_TLS = 176, /* VAR_DNSTAP_TLS */
306 YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 177, /* VAR_DNSTAP_TLS_SERVER_NAME */
307 YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 178, /* VAR_DNSTAP_TLS_CERT_BUNDLE */
308 YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 179, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */
309 YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 180, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */
310 YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 181, /* VAR_DNSTAP_SEND_IDENTITY */
311 YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 182, /* VAR_DNSTAP_SEND_VERSION */
312 YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 183, /* VAR_DNSTAP_BIDIRECTIONAL */
313 YYSYMBOL_VAR_DNSTAP_IDENTITY = 184, /* VAR_DNSTAP_IDENTITY */
314 YYSYMBOL_VAR_DNSTAP_VERSION = 185, /* VAR_DNSTAP_VERSION */
315 YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */
316 YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */
317 YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 188, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */
318 YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 189, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */
319 YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 190, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */
320 YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 191, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */
321 YYSYMBOL_VAR_DNSTAP_SAMPLE_RATE = 192, /* VAR_DNSTAP_SAMPLE_RATE */
322 YYSYMBOL_VAR_RESPONSE_IP_TAG = 193, /* VAR_RESPONSE_IP_TAG */
323 YYSYMBOL_VAR_RESPONSE_IP = 194, /* VAR_RESPONSE_IP */
324 YYSYMBOL_VAR_RESPONSE_IP_DATA = 195, /* VAR_RESPONSE_IP_DATA */
325 YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 196, /* VAR_HARDEN_ALGO_DOWNGRADE */
326 YYSYMBOL_VAR_IP_TRANSPARENT = 197, /* VAR_IP_TRANSPARENT */
327 YYSYMBOL_VAR_IP_DSCP = 198, /* VAR_IP_DSCP */
328 YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 199, /* VAR_DISABLE_DNSSEC_LAME_CHECK */
329 YYSYMBOL_VAR_IP_RATELIMIT = 200, /* VAR_IP_RATELIMIT */
330 YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 201, /* VAR_IP_RATELIMIT_SLABS */
331 YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 202, /* VAR_IP_RATELIMIT_SIZE */
332 YYSYMBOL_VAR_RATELIMIT = 203, /* VAR_RATELIMIT */
333 YYSYMBOL_VAR_RATELIMIT_SLABS = 204, /* VAR_RATELIMIT_SLABS */
334 YYSYMBOL_VAR_RATELIMIT_SIZE = 205, /* VAR_RATELIMIT_SIZE */
335 YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 206, /* VAR_OUTBOUND_MSG_RETRY */
336 YYSYMBOL_VAR_MAX_SENT_COUNT = 207, /* VAR_MAX_SENT_COUNT */
337 YYSYMBOL_VAR_MAX_QUERY_RESTARTS = 208, /* VAR_MAX_QUERY_RESTARTS */
338 YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 209, /* VAR_RATELIMIT_FOR_DOMAIN */
339 YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 210, /* VAR_RATELIMIT_BELOW_DOMAIN */
340 YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 211, /* VAR_IP_RATELIMIT_FACTOR */
341 YYSYMBOL_VAR_RATELIMIT_FACTOR = 212, /* VAR_RATELIMIT_FACTOR */
342 YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 213, /* VAR_IP_RATELIMIT_BACKOFF */
343 YYSYMBOL_VAR_RATELIMIT_BACKOFF = 214, /* VAR_RATELIMIT_BACKOFF */
344 YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 215, /* VAR_SEND_CLIENT_SUBNET */
345 YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 216, /* VAR_CLIENT_SUBNET_ZONE */
346 YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 217, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */
347 YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 218, /* VAR_CLIENT_SUBNET_OPCODE */
348 YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 219, /* VAR_MAX_CLIENT_SUBNET_IPV4 */
349 YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 220, /* VAR_MAX_CLIENT_SUBNET_IPV6 */
350 YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 221, /* VAR_MIN_CLIENT_SUBNET_IPV4 */
351 YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 222, /* VAR_MIN_CLIENT_SUBNET_IPV6 */
352 YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 223, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */
353 YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 224, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */
354 YYSYMBOL_VAR_CAPS_WHITELIST = 225, /* VAR_CAPS_WHITELIST */
355 YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 226, /* VAR_CACHE_MAX_NEGATIVE_TTL */
356 YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 227, /* VAR_PERMIT_SMALL_HOLDDOWN */
357 YYSYMBOL_VAR_CACHE_MIN_NEGATIVE_TTL = 228, /* VAR_CACHE_MIN_NEGATIVE_TTL */
358 YYSYMBOL_VAR_QNAME_MINIMISATION = 229, /* VAR_QNAME_MINIMISATION */
359 YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 230, /* VAR_QNAME_MINIMISATION_STRICT */
360 YYSYMBOL_VAR_IP_FREEBIND = 231, /* VAR_IP_FREEBIND */
361 YYSYMBOL_VAR_DEFINE_TAG = 232, /* VAR_DEFINE_TAG */
362 YYSYMBOL_VAR_LOCAL_ZONE_TAG = 233, /* VAR_LOCAL_ZONE_TAG */
363 YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 234, /* VAR_ACCESS_CONTROL_TAG */
364 YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 235, /* VAR_LOCAL_ZONE_OVERRIDE */
365 YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 236, /* VAR_ACCESS_CONTROL_TAG_ACTION */
366 YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 237, /* VAR_ACCESS_CONTROL_TAG_DATA */
367 YYSYMBOL_VAR_VIEW = 238, /* VAR_VIEW */
368 YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 239, /* VAR_ACCESS_CONTROL_VIEW */
369 YYSYMBOL_VAR_VIEW_FIRST = 240, /* VAR_VIEW_FIRST */
370 YYSYMBOL_VAR_SERVE_EXPIRED = 241, /* VAR_SERVE_EXPIRED */
371 YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 242, /* VAR_SERVE_EXPIRED_TTL */
372 YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 243, /* VAR_SERVE_EXPIRED_TTL_RESET */
373 YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 244, /* VAR_SERVE_EXPIRED_REPLY_TTL */
374 YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 245, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */
375 YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 246, /* VAR_EDE_SERVE_EXPIRED */
376 YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 247, /* VAR_SERVE_ORIGINAL_TTL */
377 YYSYMBOL_VAR_FAKE_DSA = 248, /* VAR_FAKE_DSA */
378 YYSYMBOL_VAR_FAKE_SHA1 = 249, /* VAR_FAKE_SHA1 */
379 YYSYMBOL_VAR_LOG_IDENTITY = 250, /* VAR_LOG_IDENTITY */
380 YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 251, /* VAR_HIDE_TRUSTANCHOR */
381 YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 252, /* VAR_HIDE_HTTP_USER_AGENT */
382 YYSYMBOL_VAR_HTTP_USER_AGENT = 253, /* VAR_HTTP_USER_AGENT */
383 YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 254, /* VAR_TRUST_ANCHOR_SIGNALING */
384 YYSYMBOL_VAR_AGGRESSIVE_NSEC = 255, /* VAR_AGGRESSIVE_NSEC */
385 YYSYMBOL_VAR_USE_SYSTEMD = 256, /* VAR_USE_SYSTEMD */
386 YYSYMBOL_VAR_SHM_ENABLE = 257, /* VAR_SHM_ENABLE */
387 YYSYMBOL_VAR_SHM_KEY = 258, /* VAR_SHM_KEY */
388 YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 259, /* VAR_ROOT_KEY_SENTINEL */
389 YYSYMBOL_VAR_DNSCRYPT = 260, /* VAR_DNSCRYPT */
390 YYSYMBOL_VAR_DNSCRYPT_ENABLE = 261, /* VAR_DNSCRYPT_ENABLE */
391 YYSYMBOL_VAR_DNSCRYPT_PORT = 262, /* VAR_DNSCRYPT_PORT */
392 YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 263, /* VAR_DNSCRYPT_PROVIDER */
393 YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 264, /* VAR_DNSCRYPT_SECRET_KEY */
394 YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 265, /* VAR_DNSCRYPT_PROVIDER_CERT */
395 YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 266, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */
396 YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 267, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */
397 YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 268, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */
398 YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 269, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */
399 YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 270, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */
400 YYSYMBOL_VAR_PAD_RESPONSES = 271, /* VAR_PAD_RESPONSES */
401 YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 272, /* VAR_PAD_RESPONSES_BLOCK_SIZE */
402 YYSYMBOL_VAR_PAD_QUERIES = 273, /* VAR_PAD_QUERIES */
403 YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 274, /* VAR_PAD_QUERIES_BLOCK_SIZE */
404 YYSYMBOL_VAR_IPSECMOD_ENABLED = 275, /* VAR_IPSECMOD_ENABLED */
405 YYSYMBOL_VAR_IPSECMOD_HOOK = 276, /* VAR_IPSECMOD_HOOK */
406 YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 277, /* VAR_IPSECMOD_IGNORE_BOGUS */
407 YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 278, /* VAR_IPSECMOD_MAX_TTL */
408 YYSYMBOL_VAR_IPSECMOD_WHITELIST = 279, /* VAR_IPSECMOD_WHITELIST */
409 YYSYMBOL_VAR_IPSECMOD_STRICT = 280, /* VAR_IPSECMOD_STRICT */
410 YYSYMBOL_VAR_CACHEDB = 281, /* VAR_CACHEDB */
411 YYSYMBOL_VAR_CACHEDB_BACKEND = 282, /* VAR_CACHEDB_BACKEND */
412 YYSYMBOL_VAR_CACHEDB_SECRETSEED = 283, /* VAR_CACHEDB_SECRETSEED */
413 YYSYMBOL_VAR_CACHEDB_REDISHOST = 284, /* VAR_CACHEDB_REDISHOST */
414 YYSYMBOL_VAR_CACHEDB_REDISREPLICAHOST = 285, /* VAR_CACHEDB_REDISREPLICAHOST */
415 YYSYMBOL_VAR_CACHEDB_REDISPORT = 286, /* VAR_CACHEDB_REDISPORT */
416 YYSYMBOL_VAR_CACHEDB_REDISREPLICAPORT = 287, /* VAR_CACHEDB_REDISREPLICAPORT */
417 YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 288, /* VAR_CACHEDB_REDISTIMEOUT */
418 YYSYMBOL_VAR_CACHEDB_REDISREPLICATIMEOUT = 289, /* VAR_CACHEDB_REDISREPLICATIMEOUT */
419 YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 290, /* VAR_CACHEDB_REDISEXPIRERECORDS */
420 YYSYMBOL_VAR_CACHEDB_REDISPATH = 291, /* VAR_CACHEDB_REDISPATH */
421 YYSYMBOL_VAR_CACHEDB_REDISREPLICAPATH = 292, /* VAR_CACHEDB_REDISREPLICAPATH */
422 YYSYMBOL_VAR_CACHEDB_REDISPASSWORD = 293, /* VAR_CACHEDB_REDISPASSWORD */
423 YYSYMBOL_VAR_CACHEDB_REDISREPLICAPASSWORD = 294, /* VAR_CACHEDB_REDISREPLICAPASSWORD */
424 YYSYMBOL_VAR_CACHEDB_REDISLOGICALDB = 295, /* VAR_CACHEDB_REDISLOGICALDB */
425 YYSYMBOL_VAR_CACHEDB_REDISREPLICALOGICALDB = 296, /* VAR_CACHEDB_REDISREPLICALOGICALDB */
426 YYSYMBOL_VAR_CACHEDB_REDISCOMMANDTIMEOUT = 297, /* VAR_CACHEDB_REDISCOMMANDTIMEOUT */
427 YYSYMBOL_VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT = 298, /* VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT */
428 YYSYMBOL_VAR_CACHEDB_REDISCONNECTTIMEOUT = 299, /* VAR_CACHEDB_REDISCONNECTTIMEOUT */
429 YYSYMBOL_VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT = 300, /* VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT */
430 YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 301, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */
431 YYSYMBOL_VAR_FOR_UPSTREAM = 302, /* VAR_FOR_UPSTREAM */
432 YYSYMBOL_VAR_AUTH_ZONE = 303, /* VAR_AUTH_ZONE */
433 YYSYMBOL_VAR_ZONEFILE = 304, /* VAR_ZONEFILE */
434 YYSYMBOL_VAR_MASTER = 305, /* VAR_MASTER */
435 YYSYMBOL_VAR_URL = 306, /* VAR_URL */
436 YYSYMBOL_VAR_FOR_DOWNSTREAM = 307, /* VAR_FOR_DOWNSTREAM */
437 YYSYMBOL_VAR_FALLBACK_ENABLED = 308, /* VAR_FALLBACK_ENABLED */
438 YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 309, /* VAR_TLS_ADDITIONAL_PORT */
439 YYSYMBOL_VAR_LOW_RTT = 310, /* VAR_LOW_RTT */
440 YYSYMBOL_VAR_LOW_RTT_PERMIL = 311, /* VAR_LOW_RTT_PERMIL */
441 YYSYMBOL_VAR_FAST_SERVER_PERMIL = 312, /* VAR_FAST_SERVER_PERMIL */
442 YYSYMBOL_VAR_FAST_SERVER_NUM = 313, /* VAR_FAST_SERVER_NUM */
443 YYSYMBOL_VAR_ALLOW_NOTIFY = 314, /* VAR_ALLOW_NOTIFY */
444 YYSYMBOL_VAR_TLS_WIN_CERT = 315, /* VAR_TLS_WIN_CERT */
445 YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 316, /* VAR_TCP_CONNECTION_LIMIT */
446 YYSYMBOL_VAR_ANSWER_COOKIE = 317, /* VAR_ANSWER_COOKIE */
447 YYSYMBOL_VAR_COOKIE_SECRET = 318, /* VAR_COOKIE_SECRET */
448 YYSYMBOL_VAR_IP_RATELIMIT_COOKIE = 319, /* VAR_IP_RATELIMIT_COOKIE */
449 YYSYMBOL_VAR_FORWARD_NO_CACHE = 320, /* VAR_FORWARD_NO_CACHE */
450 YYSYMBOL_VAR_STUB_NO_CACHE = 321, /* VAR_STUB_NO_CACHE */
451 YYSYMBOL_VAR_LOG_SERVFAIL = 322, /* VAR_LOG_SERVFAIL */
452 YYSYMBOL_VAR_DENY_ANY = 323, /* VAR_DENY_ANY */
453 YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 324, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */
454 YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 325, /* VAR_LOG_TAG_QUERYREPLY */
455 YYSYMBOL_VAR_DISCARD_TIMEOUT = 326, /* VAR_DISCARD_TIMEOUT */
456 YYSYMBOL_VAR_WAIT_LIMIT = 327, /* VAR_WAIT_LIMIT */
457 YYSYMBOL_VAR_WAIT_LIMIT_COOKIE = 328, /* VAR_WAIT_LIMIT_COOKIE */
458 YYSYMBOL_VAR_WAIT_LIMIT_NETBLOCK = 329, /* VAR_WAIT_LIMIT_NETBLOCK */
459 YYSYMBOL_VAR_WAIT_LIMIT_COOKIE_NETBLOCK = 330, /* VAR_WAIT_LIMIT_COOKIE_NETBLOCK */
460 YYSYMBOL_VAR_STREAM_WAIT_SIZE = 331, /* VAR_STREAM_WAIT_SIZE */
461 YYSYMBOL_VAR_TLS_CIPHERS = 332, /* VAR_TLS_CIPHERS */
462 YYSYMBOL_VAR_TLS_CIPHERSUITES = 333, /* VAR_TLS_CIPHERSUITES */
463 YYSYMBOL_VAR_TLS_USE_SNI = 334, /* VAR_TLS_USE_SNI */
464 YYSYMBOL_VAR_TLS_PROTOCOLS = 335, /* VAR_TLS_PROTOCOLS */
465 YYSYMBOL_VAR_IPSET = 336, /* VAR_IPSET */
466 YYSYMBOL_VAR_IPSET_NAME_V4 = 337, /* VAR_IPSET_NAME_V4 */
467 YYSYMBOL_VAR_IPSET_NAME_V6 = 338, /* VAR_IPSET_NAME_V6 */
468 YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 339, /* VAR_TLS_SESSION_TICKET_KEYS */
469 YYSYMBOL_VAR_RPZ = 340, /* VAR_RPZ */
470 YYSYMBOL_VAR_TAGS = 341, /* VAR_TAGS */
471 YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 342, /* VAR_RPZ_ACTION_OVERRIDE */
472 YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 343, /* VAR_RPZ_CNAME_OVERRIDE */
473 YYSYMBOL_VAR_RPZ_LOG = 344, /* VAR_RPZ_LOG */
474 YYSYMBOL_VAR_RPZ_LOG_NAME = 345, /* VAR_RPZ_LOG_NAME */
475 YYSYMBOL_VAR_DYNLIB = 346, /* VAR_DYNLIB */
476 YYSYMBOL_VAR_DYNLIB_FILE = 347, /* VAR_DYNLIB_FILE */
477 YYSYMBOL_VAR_EDNS_CLIENT_STRING = 348, /* VAR_EDNS_CLIENT_STRING */
478 YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 349, /* VAR_EDNS_CLIENT_STRING_OPCODE */
479 YYSYMBOL_VAR_NSID = 350, /* VAR_NSID */
480 YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 351, /* VAR_ZONEMD_PERMISSIVE_MODE */
481 YYSYMBOL_VAR_ZONEMD_CHECK = 352, /* VAR_ZONEMD_CHECK */
482 YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 353, /* VAR_ZONEMD_REJECT_ABSENCE */
483 YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 354, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */
484 YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 355, /* VAR_INTERFACE_AUTOMATIC_PORTS */
485 YYSYMBOL_VAR_EDE = 356, /* VAR_EDE */
486 YYSYMBOL_VAR_DNS_ERROR_REPORTING = 357, /* VAR_DNS_ERROR_REPORTING */
487 YYSYMBOL_VAR_INTERFACE_ACTION = 358, /* VAR_INTERFACE_ACTION */
488 YYSYMBOL_VAR_INTERFACE_VIEW = 359, /* VAR_INTERFACE_VIEW */
489 YYSYMBOL_VAR_INTERFACE_TAG = 360, /* VAR_INTERFACE_TAG */
490 YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 361, /* VAR_INTERFACE_TAG_ACTION */
491 YYSYMBOL_VAR_INTERFACE_TAG_DATA = 362, /* VAR_INTERFACE_TAG_DATA */
492 YYSYMBOL_VAR_QUIC_PORT = 363, /* VAR_QUIC_PORT */
493 YYSYMBOL_VAR_QUIC_SIZE = 364, /* VAR_QUIC_SIZE */
494 YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 365, /* VAR_PROXY_PROTOCOL_PORT */
495 YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 366, /* VAR_STATISTICS_INHIBIT_ZERO */
496 YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 367, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */
497 YYSYMBOL_VAR_DISABLE_EDNS_DO = 368, /* VAR_DISABLE_EDNS_DO */
498 YYSYMBOL_VAR_CACHEDB_NO_STORE = 369, /* VAR_CACHEDB_NO_STORE */
499 YYSYMBOL_VAR_LOG_DESTADDR = 370, /* VAR_LOG_DESTADDR */
500 YYSYMBOL_VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED = 371, /* VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED */
501 YYSYMBOL_VAR_COOKIE_SECRET_FILE = 372, /* VAR_COOKIE_SECRET_FILE */
502 YYSYMBOL_VAR_ITER_SCRUB_NS = 373, /* VAR_ITER_SCRUB_NS */
503 YYSYMBOL_VAR_ITER_SCRUB_CNAME = 374, /* VAR_ITER_SCRUB_CNAME */
504 YYSYMBOL_VAR_ITER_SCRUB_RRSIG = 375, /* VAR_ITER_SCRUB_RRSIG */
505 YYSYMBOL_VAR_MAX_TRANSFER_SIZE = 376, /* VAR_MAX_TRANSFER_SIZE */
506 YYSYMBOL_VAR_MAX_TRANSFER_TIME = 377, /* VAR_MAX_TRANSFER_TIME */
507 YYSYMBOL_VAR_MAX_GLOBAL_QUOTA = 378, /* VAR_MAX_GLOBAL_QUOTA */
508 YYSYMBOL_VAR_HARDEN_UNVERIFIED_GLUE = 379, /* VAR_HARDEN_UNVERIFIED_GLUE */
509 YYSYMBOL_VAR_LOG_TIME_ISO = 380, /* VAR_LOG_TIME_ISO */
510 YYSYMBOL_VAR_VAL_VALIDATION_ATTEMPTS = 381, /* VAR_VAL_VALIDATION_ATTEMPTS */
511 YYSYMBOL_VAR_VAL_HASH_ATTEMPTS = 382, /* VAR_VAL_HASH_ATTEMPTS */
512 YYSYMBOL_VAR_ITER_SCRUB_PROMISCUOUS = 383, /* VAR_ITER_SCRUB_PROMISCUOUS */
513 YYSYMBOL_VAR_LOG_THREAD_ID = 384, /* VAR_LOG_THREAD_ID */
514 YYSYMBOL_YYACCEPT = 385, /* $accept */
515 YYSYMBOL_toplevelvars = 386, /* toplevelvars */
516 YYSYMBOL_toplevelvar = 387, /* toplevelvar */
517 YYSYMBOL_force_toplevel = 388, /* force_toplevel */
518 YYSYMBOL_serverstart = 389, /* serverstart */
519 YYSYMBOL_contents_server = 390, /* contents_server */
520 YYSYMBOL_content_server = 391, /* content_server */
521 YYSYMBOL_stub_clause = 392, /* stub_clause */
522 YYSYMBOL_stubstart = 393, /* stubstart */
523 YYSYMBOL_contents_stub = 394, /* contents_stub */
524 YYSYMBOL_content_stub = 395, /* content_stub */
525 YYSYMBOL_forward_clause = 396, /* forward_clause */
526 YYSYMBOL_forwardstart = 397, /* forwardstart */
527 YYSYMBOL_contents_forward = 398, /* contents_forward */
528 YYSYMBOL_content_forward = 399, /* content_forward */
529 YYSYMBOL_view_clause = 400, /* view_clause */
530 YYSYMBOL_viewstart = 401, /* viewstart */
531 YYSYMBOL_contents_view = 402, /* contents_view */
532 YYSYMBOL_content_view = 403, /* content_view */
533 YYSYMBOL_authstart = 404, /* authstart */
534 YYSYMBOL_contents_auth = 405, /* contents_auth */
535 YYSYMBOL_content_auth = 406, /* content_auth */
536 YYSYMBOL_rpz_tag = 407, /* rpz_tag */
537 YYSYMBOL_rpz_action_override = 408, /* rpz_action_override */
538 YYSYMBOL_rpz_cname_override = 409, /* rpz_cname_override */
539 YYSYMBOL_rpz_log = 410, /* rpz_log */
540 YYSYMBOL_rpz_log_name = 411, /* rpz_log_name */
541 YYSYMBOL_rpz_signal_nxdomain_ra = 412, /* rpz_signal_nxdomain_ra */
542 YYSYMBOL_rpzstart = 413, /* rpzstart */
543 YYSYMBOL_contents_rpz = 414, /* contents_rpz */
544 YYSYMBOL_content_rpz = 415, /* content_rpz */
545 YYSYMBOL_server_num_threads = 416, /* server_num_threads */
546 YYSYMBOL_server_verbosity = 417, /* server_verbosity */
547 YYSYMBOL_server_statistics_interval = 418, /* server_statistics_interval */
548 YYSYMBOL_server_statistics_cumulative = 419, /* server_statistics_cumulative */
549 YYSYMBOL_server_extended_statistics = 420, /* server_extended_statistics */
550 YYSYMBOL_server_statistics_inhibit_zero = 421, /* server_statistics_inhibit_zero */
551 YYSYMBOL_server_shm_enable = 422, /* server_shm_enable */
552 YYSYMBOL_server_shm_key = 423, /* server_shm_key */
553 YYSYMBOL_server_port = 424, /* server_port */
554 YYSYMBOL_server_send_client_subnet = 425, /* server_send_client_subnet */
555 YYSYMBOL_server_client_subnet_zone = 426, /* server_client_subnet_zone */
556 YYSYMBOL_server_client_subnet_always_forward = 427, /* server_client_subnet_always_forward */
557 YYSYMBOL_server_client_subnet_opcode = 428, /* server_client_subnet_opcode */
558 YYSYMBOL_server_max_client_subnet_ipv4 = 429, /* server_max_client_subnet_ipv4 */
559 YYSYMBOL_server_max_client_subnet_ipv6 = 430, /* server_max_client_subnet_ipv6 */
560 YYSYMBOL_server_min_client_subnet_ipv4 = 431, /* server_min_client_subnet_ipv4 */
561 YYSYMBOL_server_min_client_subnet_ipv6 = 432, /* server_min_client_subnet_ipv6 */
562 YYSYMBOL_server_max_ecs_tree_size_ipv4 = 433, /* server_max_ecs_tree_size_ipv4 */
563 YYSYMBOL_server_max_ecs_tree_size_ipv6 = 434, /* server_max_ecs_tree_size_ipv6 */
564 YYSYMBOL_server_interface = 435, /* server_interface */
565 YYSYMBOL_server_outgoing_interface = 436, /* server_outgoing_interface */
566 YYSYMBOL_server_outgoing_range = 437, /* server_outgoing_range */
567 YYSYMBOL_server_outgoing_port_permit = 438, /* server_outgoing_port_permit */
568 YYSYMBOL_server_outgoing_port_avoid = 439, /* server_outgoing_port_avoid */
569 YYSYMBOL_server_outgoing_num_tcp = 440, /* server_outgoing_num_tcp */
570 YYSYMBOL_server_incoming_num_tcp = 441, /* server_incoming_num_tcp */
571 YYSYMBOL_server_interface_automatic = 442, /* server_interface_automatic */
572 YYSYMBOL_server_interface_automatic_ports = 443, /* server_interface_automatic_ports */
573 YYSYMBOL_server_do_ip4 = 444, /* server_do_ip4 */
574 YYSYMBOL_server_do_ip6 = 445, /* server_do_ip6 */
575 YYSYMBOL_server_do_nat64 = 446, /* server_do_nat64 */
576 YYSYMBOL_server_do_udp = 447, /* server_do_udp */
577 YYSYMBOL_server_do_tcp = 448, /* server_do_tcp */
578 YYSYMBOL_server_prefer_ip4 = 449, /* server_prefer_ip4 */
579 YYSYMBOL_server_prefer_ip6 = 450, /* server_prefer_ip6 */
580 YYSYMBOL_server_tcp_mss = 451, /* server_tcp_mss */
581 YYSYMBOL_server_outgoing_tcp_mss = 452, /* server_outgoing_tcp_mss */
582 YYSYMBOL_server_tcp_idle_timeout = 453, /* server_tcp_idle_timeout */
583 YYSYMBOL_server_max_reuse_tcp_queries = 454, /* server_max_reuse_tcp_queries */
584 YYSYMBOL_server_tcp_reuse_timeout = 455, /* server_tcp_reuse_timeout */
585 YYSYMBOL_server_tcp_auth_query_timeout = 456, /* server_tcp_auth_query_timeout */
586 YYSYMBOL_server_tcp_keepalive = 457, /* server_tcp_keepalive */
587 YYSYMBOL_server_tcp_keepalive_timeout = 458, /* server_tcp_keepalive_timeout */
588 YYSYMBOL_server_sock_queue_timeout = 459, /* server_sock_queue_timeout */
589 YYSYMBOL_server_tcp_upstream = 460, /* server_tcp_upstream */
590 YYSYMBOL_server_udp_upstream_without_downstream = 461, /* server_udp_upstream_without_downstream */
591 YYSYMBOL_server_ssl_upstream = 462, /* server_ssl_upstream */
592 YYSYMBOL_server_ssl_service_key = 463, /* server_ssl_service_key */
593 YYSYMBOL_server_ssl_service_pem = 464, /* server_ssl_service_pem */
594 YYSYMBOL_server_ssl_port = 465, /* server_ssl_port */
595 YYSYMBOL_server_tls_cert_bundle = 466, /* server_tls_cert_bundle */
596 YYSYMBOL_server_tls_win_cert = 467, /* server_tls_win_cert */
597 YYSYMBOL_server_tls_additional_port = 468, /* server_tls_additional_port */
598 YYSYMBOL_server_tls_ciphers = 469, /* server_tls_ciphers */
599 YYSYMBOL_server_tls_ciphersuites = 470, /* server_tls_ciphersuites */
600 YYSYMBOL_server_tls_session_ticket_keys = 471, /* server_tls_session_ticket_keys */
601 YYSYMBOL_server_tls_use_sni = 472, /* server_tls_use_sni */
602 YYSYMBOL_server_tls_protocols = 473, /* server_tls_protocols */
603 YYSYMBOL_server_https_port = 474, /* server_https_port */
604 YYSYMBOL_server_http_endpoint = 475, /* server_http_endpoint */
605 YYSYMBOL_server_http_max_streams = 476, /* server_http_max_streams */
606 YYSYMBOL_server_http_query_buffer_size = 477, /* server_http_query_buffer_size */
607 YYSYMBOL_server_http_response_buffer_size = 478, /* server_http_response_buffer_size */
608 YYSYMBOL_server_http_nodelay = 479, /* server_http_nodelay */
609 YYSYMBOL_server_http_notls_downstream = 480, /* server_http_notls_downstream */
610 YYSYMBOL_server_quic_port = 481, /* server_quic_port */
611 YYSYMBOL_server_quic_size = 482, /* server_quic_size */
612 YYSYMBOL_server_use_systemd = 483, /* server_use_systemd */
613 YYSYMBOL_server_do_daemonize = 484, /* server_do_daemonize */
614 YYSYMBOL_server_use_syslog = 485, /* server_use_syslog */
615 YYSYMBOL_server_log_time_ascii = 486, /* server_log_time_ascii */
616 YYSYMBOL_server_log_time_iso = 487, /* server_log_time_iso */
617 YYSYMBOL_server_log_queries = 488, /* server_log_queries */
618 YYSYMBOL_server_log_replies = 489, /* server_log_replies */
619 YYSYMBOL_server_log_tag_queryreply = 490, /* server_log_tag_queryreply */
620 YYSYMBOL_server_log_servfail = 491, /* server_log_servfail */
621 YYSYMBOL_server_log_destaddr = 492, /* server_log_destaddr */
622 YYSYMBOL_server_log_thread_id = 493, /* server_log_thread_id */
623 YYSYMBOL_server_log_local_actions = 494, /* server_log_local_actions */
624 YYSYMBOL_server_chroot = 495, /* server_chroot */
625 YYSYMBOL_server_username = 496, /* server_username */
626 YYSYMBOL_server_directory = 497, /* server_directory */
627 YYSYMBOL_server_logfile = 498, /* server_logfile */
628 YYSYMBOL_server_pidfile = 499, /* server_pidfile */
629 YYSYMBOL_server_root_hints = 500, /* server_root_hints */
630 YYSYMBOL_server_dlv_anchor_file = 501, /* server_dlv_anchor_file */
631 YYSYMBOL_server_dlv_anchor = 502, /* server_dlv_anchor */
632 YYSYMBOL_server_auto_trust_anchor_file = 503, /* server_auto_trust_anchor_file */
633 YYSYMBOL_server_trust_anchor_file = 504, /* server_trust_anchor_file */
634 YYSYMBOL_server_trusted_keys_file = 505, /* server_trusted_keys_file */
635 YYSYMBOL_server_trust_anchor = 506, /* server_trust_anchor */
636 YYSYMBOL_server_trust_anchor_signaling = 507, /* server_trust_anchor_signaling */
637 YYSYMBOL_server_root_key_sentinel = 508, /* server_root_key_sentinel */
638 YYSYMBOL_server_domain_insecure = 509, /* server_domain_insecure */
639 YYSYMBOL_server_hide_identity = 510, /* server_hide_identity */
640 YYSYMBOL_server_hide_version = 511, /* server_hide_version */
641 YYSYMBOL_server_hide_trustanchor = 512, /* server_hide_trustanchor */
642 YYSYMBOL_server_hide_http_user_agent = 513, /* server_hide_http_user_agent */
643 YYSYMBOL_server_identity = 514, /* server_identity */
644 YYSYMBOL_server_version = 515, /* server_version */
645 YYSYMBOL_server_http_user_agent = 516, /* server_http_user_agent */
646 YYSYMBOL_server_nsid = 517, /* server_nsid */
647 YYSYMBOL_server_so_rcvbuf = 518, /* server_so_rcvbuf */
648 YYSYMBOL_server_so_sndbuf = 519, /* server_so_sndbuf */
649 YYSYMBOL_server_so_reuseport = 520, /* server_so_reuseport */
650 YYSYMBOL_server_ip_transparent = 521, /* server_ip_transparent */
651 YYSYMBOL_server_ip_freebind = 522, /* server_ip_freebind */
652 YYSYMBOL_server_ip_dscp = 523, /* server_ip_dscp */
653 YYSYMBOL_server_stream_wait_size = 524, /* server_stream_wait_size */
654 YYSYMBOL_server_edns_buffer_size = 525, /* server_edns_buffer_size */
655 YYSYMBOL_server_msg_buffer_size = 526, /* server_msg_buffer_size */
656 YYSYMBOL_server_msg_cache_size = 527, /* server_msg_cache_size */
657 YYSYMBOL_server_msg_cache_slabs = 528, /* server_msg_cache_slabs */
658 YYSYMBOL_server_num_queries_per_thread = 529, /* server_num_queries_per_thread */
659 YYSYMBOL_server_jostle_timeout = 530, /* server_jostle_timeout */
660 YYSYMBOL_server_delay_close = 531, /* server_delay_close */
661 YYSYMBOL_server_udp_connect = 532, /* server_udp_connect */
662 YYSYMBOL_server_unblock_lan_zones = 533, /* server_unblock_lan_zones */
663 YYSYMBOL_server_insecure_lan_zones = 534, /* server_insecure_lan_zones */
664 YYSYMBOL_server_rrset_cache_size = 535, /* server_rrset_cache_size */
665 YYSYMBOL_server_rrset_cache_slabs = 536, /* server_rrset_cache_slabs */
666 YYSYMBOL_server_infra_host_ttl = 537, /* server_infra_host_ttl */
667 YYSYMBOL_server_infra_lame_ttl = 538, /* server_infra_lame_ttl */
668 YYSYMBOL_server_infra_cache_numhosts = 539, /* server_infra_cache_numhosts */
669 YYSYMBOL_server_infra_cache_lame_size = 540, /* server_infra_cache_lame_size */
670 YYSYMBOL_server_infra_cache_slabs = 541, /* server_infra_cache_slabs */
671 YYSYMBOL_server_infra_cache_min_rtt = 542, /* server_infra_cache_min_rtt */
672 YYSYMBOL_server_infra_cache_max_rtt = 543, /* server_infra_cache_max_rtt */
673 YYSYMBOL_server_infra_keep_probing = 544, /* server_infra_keep_probing */
674 YYSYMBOL_server_target_fetch_policy = 545, /* server_target_fetch_policy */
675 YYSYMBOL_server_harden_short_bufsize = 546, /* server_harden_short_bufsize */
676 YYSYMBOL_server_harden_large_queries = 547, /* server_harden_large_queries */
677 YYSYMBOL_server_harden_glue = 548, /* server_harden_glue */
678 YYSYMBOL_server_harden_unverified_glue = 549, /* server_harden_unverified_glue */
679 YYSYMBOL_server_harden_dnssec_stripped = 550, /* server_harden_dnssec_stripped */
680 YYSYMBOL_server_harden_below_nxdomain = 551, /* server_harden_below_nxdomain */
681 YYSYMBOL_server_harden_referral_path = 552, /* server_harden_referral_path */
682 YYSYMBOL_server_harden_algo_downgrade = 553, /* server_harden_algo_downgrade */
683 YYSYMBOL_server_harden_unknown_additional = 554, /* server_harden_unknown_additional */
684 YYSYMBOL_server_use_caps_for_id = 555, /* server_use_caps_for_id */
685 YYSYMBOL_server_caps_whitelist = 556, /* server_caps_whitelist */
686 YYSYMBOL_server_private_address = 557, /* server_private_address */
687 YYSYMBOL_server_private_domain = 558, /* server_private_domain */
688 YYSYMBOL_server_prefetch = 559, /* server_prefetch */
689 YYSYMBOL_server_prefetch_key = 560, /* server_prefetch_key */
690 YYSYMBOL_server_deny_any = 561, /* server_deny_any */
691 YYSYMBOL_server_unwanted_reply_threshold = 562, /* server_unwanted_reply_threshold */
692 YYSYMBOL_server_do_not_query_address = 563, /* server_do_not_query_address */
693 YYSYMBOL_server_do_not_query_localhost = 564, /* server_do_not_query_localhost */
694 YYSYMBOL_server_access_control = 565, /* server_access_control */
695 YYSYMBOL_server_interface_action = 566, /* server_interface_action */
696 YYSYMBOL_server_module_conf = 567, /* server_module_conf */
697 YYSYMBOL_server_val_override_date = 568, /* server_val_override_date */
698 YYSYMBOL_server_val_sig_skew_min = 569, /* server_val_sig_skew_min */
699 YYSYMBOL_server_val_sig_skew_max = 570, /* server_val_sig_skew_max */
700 YYSYMBOL_server_val_max_restart = 571, /* server_val_max_restart */
701 YYSYMBOL_server_cache_max_ttl = 572, /* server_cache_max_ttl */
702 YYSYMBOL_server_cache_max_negative_ttl = 573, /* server_cache_max_negative_ttl */
703 YYSYMBOL_server_cache_min_negative_ttl = 574, /* server_cache_min_negative_ttl */
704 YYSYMBOL_server_cache_min_ttl = 575, /* server_cache_min_ttl */
705 YYSYMBOL_server_bogus_ttl = 576, /* server_bogus_ttl */
706 YYSYMBOL_server_val_clean_additional = 577, /* server_val_clean_additional */
707 YYSYMBOL_server_val_permissive_mode = 578, /* server_val_permissive_mode */
708 YYSYMBOL_server_aggressive_nsec = 579, /* server_aggressive_nsec */
709 YYSYMBOL_server_ignore_cd_flag = 580, /* server_ignore_cd_flag */
710 YYSYMBOL_server_disable_edns_do = 581, /* server_disable_edns_do */
711 YYSYMBOL_server_serve_expired = 582, /* server_serve_expired */
712 YYSYMBOL_server_serve_expired_ttl = 583, /* server_serve_expired_ttl */
713 YYSYMBOL_server_serve_expired_ttl_reset = 584, /* server_serve_expired_ttl_reset */
714 YYSYMBOL_server_serve_expired_reply_ttl = 585, /* server_serve_expired_reply_ttl */
715 YYSYMBOL_server_serve_expired_client_timeout = 586, /* server_serve_expired_client_timeout */
716 YYSYMBOL_server_ede_serve_expired = 587, /* server_ede_serve_expired */
717 YYSYMBOL_server_serve_original_ttl = 588, /* server_serve_original_ttl */
718 YYSYMBOL_server_fake_dsa = 589, /* server_fake_dsa */
719 YYSYMBOL_server_fake_sha1 = 590, /* server_fake_sha1 */
720 YYSYMBOL_server_val_log_level = 591, /* server_val_log_level */
721 YYSYMBOL_server_val_nsec3_keysize_iterations = 592, /* server_val_nsec3_keysize_iterations */
722 YYSYMBOL_server_zonemd_permissive_mode = 593, /* server_zonemd_permissive_mode */
723 YYSYMBOL_server_add_holddown = 594, /* server_add_holddown */
724 YYSYMBOL_server_del_holddown = 595, /* server_del_holddown */
725 YYSYMBOL_server_keep_missing = 596, /* server_keep_missing */
726 YYSYMBOL_server_permit_small_holddown = 597, /* server_permit_small_holddown */
727 YYSYMBOL_server_key_cache_size = 598, /* server_key_cache_size */
728 YYSYMBOL_server_key_cache_slabs = 599, /* server_key_cache_slabs */
729 YYSYMBOL_server_neg_cache_size = 600, /* server_neg_cache_size */
730 YYSYMBOL_server_local_zone = 601, /* server_local_zone */
731 YYSYMBOL_server_local_data = 602, /* server_local_data */
732 YYSYMBOL_server_local_data_ptr = 603, /* server_local_data_ptr */
733 YYSYMBOL_server_minimal_responses = 604, /* server_minimal_responses */
734 YYSYMBOL_server_rrset_roundrobin = 605, /* server_rrset_roundrobin */
735 YYSYMBOL_server_unknown_server_time_limit = 606, /* server_unknown_server_time_limit */
736 YYSYMBOL_server_discard_timeout = 607, /* server_discard_timeout */
737 YYSYMBOL_server_wait_limit = 608, /* server_wait_limit */
738 YYSYMBOL_server_wait_limit_cookie = 609, /* server_wait_limit_cookie */
739 YYSYMBOL_server_wait_limit_netblock = 610, /* server_wait_limit_netblock */
740 YYSYMBOL_server_wait_limit_cookie_netblock = 611, /* server_wait_limit_cookie_netblock */
741 YYSYMBOL_server_max_udp_size = 612, /* server_max_udp_size */
742 YYSYMBOL_server_dns64_prefix = 613, /* server_dns64_prefix */
743 YYSYMBOL_server_dns64_synthall = 614, /* server_dns64_synthall */
744 YYSYMBOL_server_dns64_ignore_aaaa = 615, /* server_dns64_ignore_aaaa */
745 YYSYMBOL_server_nat64_prefix = 616, /* server_nat64_prefix */
746 YYSYMBOL_server_define_tag = 617, /* server_define_tag */
747 YYSYMBOL_server_local_zone_tag = 618, /* server_local_zone_tag */
748 YYSYMBOL_server_access_control_tag = 619, /* server_access_control_tag */
749 YYSYMBOL_server_access_control_tag_action = 620, /* server_access_control_tag_action */
750 YYSYMBOL_server_access_control_tag_data = 621, /* server_access_control_tag_data */
751 YYSYMBOL_server_local_zone_override = 622, /* server_local_zone_override */
752 YYSYMBOL_server_access_control_view = 623, /* server_access_control_view */
753 YYSYMBOL_server_interface_tag = 624, /* server_interface_tag */
754 YYSYMBOL_server_interface_tag_action = 625, /* server_interface_tag_action */
755 YYSYMBOL_server_interface_tag_data = 626, /* server_interface_tag_data */
756 YYSYMBOL_server_interface_view = 627, /* server_interface_view */
757 YYSYMBOL_server_response_ip_tag = 628, /* server_response_ip_tag */
758 YYSYMBOL_server_ip_ratelimit = 629, /* server_ip_ratelimit */
759 YYSYMBOL_server_ip_ratelimit_cookie = 630, /* server_ip_ratelimit_cookie */
760 YYSYMBOL_server_ratelimit = 631, /* server_ratelimit */
761 YYSYMBOL_server_ip_ratelimit_size = 632, /* server_ip_ratelimit_size */
762 YYSYMBOL_server_ratelimit_size = 633, /* server_ratelimit_size */
763 YYSYMBOL_server_ip_ratelimit_slabs = 634, /* server_ip_ratelimit_slabs */
764 YYSYMBOL_server_ratelimit_slabs = 635, /* server_ratelimit_slabs */
765 YYSYMBOL_server_ratelimit_for_domain = 636, /* server_ratelimit_for_domain */
766 YYSYMBOL_server_ratelimit_below_domain = 637, /* server_ratelimit_below_domain */
767 YYSYMBOL_server_ip_ratelimit_factor = 638, /* server_ip_ratelimit_factor */
768 YYSYMBOL_server_ratelimit_factor = 639, /* server_ratelimit_factor */
769 YYSYMBOL_server_ip_ratelimit_backoff = 640, /* server_ip_ratelimit_backoff */
770 YYSYMBOL_server_ratelimit_backoff = 641, /* server_ratelimit_backoff */
771 YYSYMBOL_server_outbound_msg_retry = 642, /* server_outbound_msg_retry */
772 YYSYMBOL_server_max_sent_count = 643, /* server_max_sent_count */
773 YYSYMBOL_server_max_query_restarts = 644, /* server_max_query_restarts */
774 YYSYMBOL_server_low_rtt = 645, /* server_low_rtt */
775 YYSYMBOL_server_fast_server_num = 646, /* server_fast_server_num */
776 YYSYMBOL_server_fast_server_permil = 647, /* server_fast_server_permil */
777 YYSYMBOL_server_qname_minimisation = 648, /* server_qname_minimisation */
778 YYSYMBOL_server_qname_minimisation_strict = 649, /* server_qname_minimisation_strict */
779 YYSYMBOL_server_pad_responses = 650, /* server_pad_responses */
780 YYSYMBOL_server_pad_responses_block_size = 651, /* server_pad_responses_block_size */
781 YYSYMBOL_server_pad_queries = 652, /* server_pad_queries */
782 YYSYMBOL_server_pad_queries_block_size = 653, /* server_pad_queries_block_size */
783 YYSYMBOL_server_ipsecmod_enabled = 654, /* server_ipsecmod_enabled */
784 YYSYMBOL_server_ipsecmod_ignore_bogus = 655, /* server_ipsecmod_ignore_bogus */
785 YYSYMBOL_server_ipsecmod_hook = 656, /* server_ipsecmod_hook */
786 YYSYMBOL_server_ipsecmod_max_ttl = 657, /* server_ipsecmod_max_ttl */
787 YYSYMBOL_server_ipsecmod_whitelist = 658, /* server_ipsecmod_whitelist */
788 YYSYMBOL_server_ipsecmod_strict = 659, /* server_ipsecmod_strict */
789 YYSYMBOL_server_edns_client_string = 660, /* server_edns_client_string */
790 YYSYMBOL_server_edns_client_string_opcode = 661, /* server_edns_client_string_opcode */
791 YYSYMBOL_server_ede = 662, /* server_ede */
792 YYSYMBOL_server_dns_error_reporting = 663, /* server_dns_error_reporting */
793 YYSYMBOL_server_proxy_protocol_port = 664, /* server_proxy_protocol_port */
794 YYSYMBOL_stub_name = 665, /* stub_name */
795 YYSYMBOL_stub_host = 666, /* stub_host */
796 YYSYMBOL_stub_addr = 667, /* stub_addr */
797 YYSYMBOL_stub_first = 668, /* stub_first */
798 YYSYMBOL_stub_no_cache = 669, /* stub_no_cache */
799 YYSYMBOL_stub_ssl_upstream = 670, /* stub_ssl_upstream */
800 YYSYMBOL_stub_tcp_upstream = 671, /* stub_tcp_upstream */
801 YYSYMBOL_stub_prime = 672, /* stub_prime */
802 YYSYMBOL_forward_name = 673, /* forward_name */
803 YYSYMBOL_forward_host = 674, /* forward_host */
804 YYSYMBOL_forward_addr = 675, /* forward_addr */
805 YYSYMBOL_forward_first = 676, /* forward_first */
806 YYSYMBOL_forward_no_cache = 677, /* forward_no_cache */
807 YYSYMBOL_forward_ssl_upstream = 678, /* forward_ssl_upstream */
808 YYSYMBOL_forward_tcp_upstream = 679, /* forward_tcp_upstream */
809 YYSYMBOL_auth_name = 680, /* auth_name */
810 YYSYMBOL_auth_zonefile = 681, /* auth_zonefile */
811 YYSYMBOL_auth_master = 682, /* auth_master */
812 YYSYMBOL_auth_url = 683, /* auth_url */
813 YYSYMBOL_auth_allow_notify = 684, /* auth_allow_notify */
814 YYSYMBOL_auth_zonemd_check = 685, /* auth_zonemd_check */
815 YYSYMBOL_auth_zonemd_reject_absence = 686, /* auth_zonemd_reject_absence */
816 YYSYMBOL_auth_for_downstream = 687, /* auth_for_downstream */
817 YYSYMBOL_auth_for_upstream = 688, /* auth_for_upstream */
818 YYSYMBOL_auth_fallback_enabled = 689, /* auth_fallback_enabled */
819 YYSYMBOL_auth_max_transfer_size = 690, /* auth_max_transfer_size */
820 YYSYMBOL_auth_max_transfer_time = 691, /* auth_max_transfer_time */
821 YYSYMBOL_view_name = 692, /* view_name */
822 YYSYMBOL_view_local_zone = 693, /* view_local_zone */
823 YYSYMBOL_view_response_ip = 694, /* view_response_ip */
824 YYSYMBOL_view_response_ip_data = 695, /* view_response_ip_data */
825 YYSYMBOL_view_local_data = 696, /* view_local_data */
826 YYSYMBOL_view_local_data_ptr = 697, /* view_local_data_ptr */
827 YYSYMBOL_view_first = 698, /* view_first */
828 YYSYMBOL_rcstart = 699, /* rcstart */
829 YYSYMBOL_contents_rc = 700, /* contents_rc */
830 YYSYMBOL_content_rc = 701, /* content_rc */
831 YYSYMBOL_rc_control_enable = 702, /* rc_control_enable */
832 YYSYMBOL_rc_control_port = 703, /* rc_control_port */
833 YYSYMBOL_rc_control_interface = 704, /* rc_control_interface */
834 YYSYMBOL_rc_control_use_cert = 705, /* rc_control_use_cert */
835 YYSYMBOL_rc_server_key_file = 706, /* rc_server_key_file */
836 YYSYMBOL_rc_server_cert_file = 707, /* rc_server_cert_file */
837 YYSYMBOL_rc_control_key_file = 708, /* rc_control_key_file */
838 YYSYMBOL_rc_control_cert_file = 709, /* rc_control_cert_file */
839 YYSYMBOL_dtstart = 710, /* dtstart */
840 YYSYMBOL_contents_dt = 711, /* contents_dt */
841 YYSYMBOL_content_dt = 712, /* content_dt */
842 YYSYMBOL_dt_dnstap_enable = 713, /* dt_dnstap_enable */
843 YYSYMBOL_dt_dnstap_bidirectional = 714, /* dt_dnstap_bidirectional */
844 YYSYMBOL_dt_dnstap_socket_path = 715, /* dt_dnstap_socket_path */
845 YYSYMBOL_dt_dnstap_ip = 716, /* dt_dnstap_ip */
846 YYSYMBOL_dt_dnstap_tls = 717, /* dt_dnstap_tls */
847 YYSYMBOL_dt_dnstap_tls_server_name = 718, /* dt_dnstap_tls_server_name */
848 YYSYMBOL_dt_dnstap_tls_cert_bundle = 719, /* dt_dnstap_tls_cert_bundle */
849 YYSYMBOL_dt_dnstap_tls_client_key_file = 720, /* dt_dnstap_tls_client_key_file */
850 YYSYMBOL_dt_dnstap_tls_client_cert_file = 721, /* dt_dnstap_tls_client_cert_file */
851 YYSYMBOL_dt_dnstap_send_identity = 722, /* dt_dnstap_send_identity */
852 YYSYMBOL_dt_dnstap_send_version = 723, /* dt_dnstap_send_version */
853 YYSYMBOL_dt_dnstap_identity = 724, /* dt_dnstap_identity */
854 YYSYMBOL_dt_dnstap_version = 725, /* dt_dnstap_version */
855 YYSYMBOL_dt_dnstap_log_resolver_query_messages = 726, /* dt_dnstap_log_resolver_query_messages */
856 YYSYMBOL_dt_dnstap_log_resolver_response_messages = 727, /* dt_dnstap_log_resolver_response_messages */
857 YYSYMBOL_dt_dnstap_log_client_query_messages = 728, /* dt_dnstap_log_client_query_messages */
858 YYSYMBOL_dt_dnstap_log_client_response_messages = 729, /* dt_dnstap_log_client_response_messages */
859 YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 730, /* dt_dnstap_log_forwarder_query_messages */
860 YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 731, /* dt_dnstap_log_forwarder_response_messages */
861 YYSYMBOL_dt_dnstap_sample_rate = 732, /* dt_dnstap_sample_rate */
862 YYSYMBOL_pythonstart = 733, /* pythonstart */
863 YYSYMBOL_contents_py = 734, /* contents_py */
864 YYSYMBOL_content_py = 735, /* content_py */
865 YYSYMBOL_py_script = 736, /* py_script */
866 YYSYMBOL_dynlibstart = 737, /* dynlibstart */
867 YYSYMBOL_contents_dl = 738, /* contents_dl */
868 YYSYMBOL_content_dl = 739, /* content_dl */
869 YYSYMBOL_dl_file = 740, /* dl_file */
870 YYSYMBOL_server_disable_dnssec_lame_check = 741, /* server_disable_dnssec_lame_check */
871 YYSYMBOL_server_log_identity = 742, /* server_log_identity */
872 YYSYMBOL_server_response_ip = 743, /* server_response_ip */
873 YYSYMBOL_server_response_ip_data = 744, /* server_response_ip_data */
874 YYSYMBOL_dnscstart = 745, /* dnscstart */
875 YYSYMBOL_contents_dnsc = 746, /* contents_dnsc */
876 YYSYMBOL_content_dnsc = 747, /* content_dnsc */
877 YYSYMBOL_dnsc_dnscrypt_enable = 748, /* dnsc_dnscrypt_enable */
878 YYSYMBOL_dnsc_dnscrypt_port = 749, /* dnsc_dnscrypt_port */
879 YYSYMBOL_dnsc_dnscrypt_provider = 750, /* dnsc_dnscrypt_provider */
880 YYSYMBOL_dnsc_dnscrypt_provider_cert = 751, /* dnsc_dnscrypt_provider_cert */
881 YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 752, /* dnsc_dnscrypt_provider_cert_rotated */
882 YYSYMBOL_dnsc_dnscrypt_secret_key = 753, /* dnsc_dnscrypt_secret_key */
883 YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 754, /* dnsc_dnscrypt_shared_secret_cache_size */
884 YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 755, /* dnsc_dnscrypt_shared_secret_cache_slabs */
885 YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 756, /* dnsc_dnscrypt_nonce_cache_size */
886 YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 757, /* dnsc_dnscrypt_nonce_cache_slabs */
887 YYSYMBOL_cachedbstart = 758, /* cachedbstart */
888 YYSYMBOL_contents_cachedb = 759, /* contents_cachedb */
889 YYSYMBOL_content_cachedb = 760, /* content_cachedb */
890 YYSYMBOL_cachedb_backend_name = 761, /* cachedb_backend_name */
891 YYSYMBOL_cachedb_secret_seed = 762, /* cachedb_secret_seed */
892 YYSYMBOL_cachedb_no_store = 763, /* cachedb_no_store */
893 YYSYMBOL_cachedb_check_when_serve_expired = 764, /* cachedb_check_when_serve_expired */
894 YYSYMBOL_redis_server_host = 765, /* redis_server_host */
895 YYSYMBOL_redis_replica_server_host = 766, /* redis_replica_server_host */
896 YYSYMBOL_redis_server_port = 767, /* redis_server_port */
897 YYSYMBOL_redis_replica_server_port = 768, /* redis_replica_server_port */
898 YYSYMBOL_redis_server_path = 769, /* redis_server_path */
899 YYSYMBOL_redis_replica_server_path = 770, /* redis_replica_server_path */
900 YYSYMBOL_redis_server_password = 771, /* redis_server_password */
901 YYSYMBOL_redis_replica_server_password = 772, /* redis_replica_server_password */
902 YYSYMBOL_redis_timeout = 773, /* redis_timeout */
903 YYSYMBOL_redis_replica_timeout = 774, /* redis_replica_timeout */
904 YYSYMBOL_redis_command_timeout = 775, /* redis_command_timeout */
905 YYSYMBOL_redis_replica_command_timeout = 776, /* redis_replica_command_timeout */
906 YYSYMBOL_redis_connect_timeout = 777, /* redis_connect_timeout */
907 YYSYMBOL_redis_replica_connect_timeout = 778, /* redis_replica_connect_timeout */
908 YYSYMBOL_redis_expire_records = 779, /* redis_expire_records */
909 YYSYMBOL_redis_logical_db = 780, /* redis_logical_db */
910 YYSYMBOL_redis_replica_logical_db = 781, /* redis_replica_logical_db */
911 YYSYMBOL_server_tcp_connection_limit = 782, /* server_tcp_connection_limit */
912 YYSYMBOL_server_answer_cookie = 783, /* server_answer_cookie */
913 YYSYMBOL_server_cookie_secret = 784, /* server_cookie_secret */
914 YYSYMBOL_server_cookie_secret_file = 785, /* server_cookie_secret_file */
915 YYSYMBOL_server_iter_scrub_ns = 786, /* server_iter_scrub_ns */
916 YYSYMBOL_server_iter_scrub_cname = 787, /* server_iter_scrub_cname */
917 YYSYMBOL_server_iter_scrub_rrsig = 788, /* server_iter_scrub_rrsig */
918 YYSYMBOL_server_max_global_quota = 789, /* server_max_global_quota */
919 YYSYMBOL_server_iter_scrub_promiscuous = 790, /* server_iter_scrub_promiscuous */
920 YYSYMBOL_server_val_validation_attempts = 791, /* server_val_validation_attempts */
921 YYSYMBOL_server_val_hash_attempts = 792, /* server_val_hash_attempts */
922 YYSYMBOL_ipsetstart = 793, /* ipsetstart */
923 YYSYMBOL_contents_ipset = 794, /* contents_ipset */
924 YYSYMBOL_content_ipset = 795, /* content_ipset */
925 YYSYMBOL_ipset_name_v4 = 796, /* ipset_name_v4 */
926 YYSYMBOL_ipset_name_v6 = 797 /* ipset_name_v6 */
927 };
928 typedef enum yysymbol_kind_t yysymbol_kind_t;
929
930
931
932
933 #ifdef short
934 # undef short
935 #endif
936
937 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
938 <limits.h> and (if available) <stdint.h> are included
939 so that the code can choose integer types of a good width. */
940
941 #ifndef __PTRDIFF_MAX__
942 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
943 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
944 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
945 # define YY_STDINT_H
946 # endif
947 #endif
948
949 /* Narrow types that promote to a signed type and that can represent a
950 signed or unsigned integer of at least N bits. In tables they can
951 save space and decrease cache pressure. Promoting to a signed type
952 helps avoid bugs in integer arithmetic. */
953
954 #ifdef __INT_LEAST8_MAX__
955 typedef __INT_LEAST8_TYPE__ yytype_int8;
956 #elif defined YY_STDINT_H
957 typedef int_least8_t yytype_int8;
958 #else
959 typedef signed char yytype_int8;
960 #endif
961
962 #ifdef __INT_LEAST16_MAX__
963 typedef __INT_LEAST16_TYPE__ yytype_int16;
964 #elif defined YY_STDINT_H
965 typedef int_least16_t yytype_int16;
966 #else
967 typedef short yytype_int16;
968 #endif
969
970 /* Work around bug in HP-UX 11.23, which defines these macros
971 incorrectly for preprocessor constants. This workaround can likely
972 be removed in 2023, as HPE has promised support for HP-UX 11.23
973 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
974 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
975 #ifdef __hpux
976 # undef UINT_LEAST8_MAX
977 # undef UINT_LEAST16_MAX
978 # define UINT_LEAST8_MAX 255
979 # define UINT_LEAST16_MAX 65535
980 #endif
981
982 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
983 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
984 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
985 && UINT_LEAST8_MAX <= INT_MAX)
986 typedef uint_least8_t yytype_uint8;
987 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
988 typedef unsigned char yytype_uint8;
989 #else
990 typedef short yytype_uint8;
991 #endif
992
993 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
994 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
995 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
996 && UINT_LEAST16_MAX <= INT_MAX)
997 typedef uint_least16_t yytype_uint16;
998 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
999 typedef unsigned short yytype_uint16;
1000 #else
1001 typedef int yytype_uint16;
1002 #endif
1003
1004 #ifndef YYPTRDIFF_T
1005 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1006 # define YYPTRDIFF_T __PTRDIFF_TYPE__
1007 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1008 # elif defined PTRDIFF_MAX
1009 # ifndef ptrdiff_t
1010 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1011 # endif
1012 # define YYPTRDIFF_T ptrdiff_t
1013 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1014 # else
1015 # define YYPTRDIFF_T long
1016 # define YYPTRDIFF_MAXIMUM LONG_MAX
1017 # endif
1018 #endif
1019
1020 #ifndef YYSIZE_T
1021 # ifdef __SIZE_TYPE__
1022 # define YYSIZE_T __SIZE_TYPE__
1023 # elif defined size_t
1024 # define YYSIZE_T size_t
1025 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1026 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1027 # define YYSIZE_T size_t
1028 # else
1029 # define YYSIZE_T unsigned
1030 # endif
1031 #endif
1032
1033 #define YYSIZE_MAXIMUM \
1034 YY_CAST (YYPTRDIFF_T, \
1035 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1036 ? YYPTRDIFF_MAXIMUM \
1037 : YY_CAST (YYSIZE_T, -1)))
1038
1039 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1040
1041
1042 /* Stored state numbers (used for stacks). */
1043 typedef yytype_int16 yy_state_t;
1044
1045 /* State numbers in computations. */
1046 typedef int yy_state_fast_t;
1047
1048 #ifndef YY_
1049 # if defined YYENABLE_NLS && YYENABLE_NLS
1050 # if ENABLE_NLS
1051 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1052 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1053 # endif
1054 # endif
1055 # ifndef YY_
1056 # define YY_(Msgid) Msgid
1057 # endif
1058 #endif
1059
1060
1061 #ifndef YY_ATTRIBUTE_PURE
1062 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1063 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1064 # else
1065 # define YY_ATTRIBUTE_PURE
1066 # endif
1067 #endif
1068
1069 #ifndef YY_ATTRIBUTE_UNUSED
1070 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1071 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1072 # else
1073 # define YY_ATTRIBUTE_UNUSED
1074 # endif
1075 #endif
1076
1077 /* Suppress unused-variable warnings by "using" E. */
1078 #if ! defined lint || defined __GNUC__
1079 # define YY_USE(E) ((void) (E))
1080 #else
1081 # define YY_USE(E) /* empty */
1082 #endif
1083
1084 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
1085 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1086 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1087 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1088 _Pragma ("GCC diagnostic push") \
1089 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1090 # else
1091 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1092 _Pragma ("GCC diagnostic push") \
1093 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1094 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1095 # endif
1096 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1097 _Pragma ("GCC diagnostic pop")
1098 #else
1099 # define YY_INITIAL_VALUE(Value) Value
1100 #endif
1101 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1102 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1103 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1104 #endif
1105 #ifndef YY_INITIAL_VALUE
1106 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1107 #endif
1108
1109 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1110 # define YY_IGNORE_USELESS_CAST_BEGIN \
1111 _Pragma ("GCC diagnostic push") \
1112 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1113 # define YY_IGNORE_USELESS_CAST_END \
1114 _Pragma ("GCC diagnostic pop")
1115 #endif
1116 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1117 # define YY_IGNORE_USELESS_CAST_BEGIN
1118 # define YY_IGNORE_USELESS_CAST_END
1119 #endif
1120
1121
1122 #define YY_ASSERT(E) ((void) (0 && (E)))
1123
1124 #if !defined yyoverflow
1125
1126 /* The parser invokes alloca or malloc; define the necessary symbols. */
1127
1128 # ifdef YYSTACK_USE_ALLOCA
1129 # if YYSTACK_USE_ALLOCA
1130 # ifdef __GNUC__
1131 # define YYSTACK_ALLOC __builtin_alloca
1132 # elif defined __BUILTIN_VA_ARG_INCR
1133 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1134 # elif defined _AIX
1135 # define YYSTACK_ALLOC __alloca
1136 # elif defined _MSC_VER
1137 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1138 # define alloca _alloca
1139 # else
1140 # define YYSTACK_ALLOC alloca
1141 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1142 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1143 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1144 # ifndef EXIT_SUCCESS
1145 # define EXIT_SUCCESS 0
1146 # endif
1147 # endif
1148 # endif
1149 # endif
1150 # endif
1151
1152 # ifdef YYSTACK_ALLOC
1153 /* Pacify GCC's 'empty if-body' warning. */
1154 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1155 # ifndef YYSTACK_ALLOC_MAXIMUM
1156 /* The OS might guarantee only one guard page at the bottom of the stack,
1157 and a page size can be as small as 4096 bytes. So we cannot safely
1158 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1159 to allow for a few compiler-allocated temporary stack slots. */
1160 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1161 # endif
1162 # else
1163 # define YYSTACK_ALLOC YYMALLOC
1164 # define YYSTACK_FREE YYFREE
1165 # ifndef YYSTACK_ALLOC_MAXIMUM
1166 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1167 # endif
1168 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1169 && ! ((defined YYMALLOC || defined malloc) \
1170 && (defined YYFREE || defined free)))
1171 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1172 # ifndef EXIT_SUCCESS
1173 # define EXIT_SUCCESS 0
1174 # endif
1175 # endif
1176 # ifndef YYMALLOC
1177 # define YYMALLOC malloc
1178 # if ! defined malloc && ! defined EXIT_SUCCESS
1179 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1180 # endif
1181 # endif
1182 # ifndef YYFREE
1183 # define YYFREE free
1184 # if ! defined free && ! defined EXIT_SUCCESS
1185 void free (void *); /* INFRINGES ON USER NAME SPACE */
1186 # endif
1187 # endif
1188 # endif
1189 #endif /* !defined yyoverflow */
1190
1191 #if (! defined yyoverflow \
1192 && (! defined __cplusplus \
1193 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1194
1195 /* A type that is properly aligned for any stack member. */
1196 union yyalloc
1197 {
1198 yy_state_t yyss_alloc;
1199 YYSTYPE yyvs_alloc;
1200 };
1201
1202 /* The size of the maximum gap between one aligned stack and the next. */
1203 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1204
1205 /* The size of an array large to enough to hold all stacks, each with
1206 N elements. */
1207 # define YYSTACK_BYTES(N) \
1208 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1209 + YYSTACK_GAP_MAXIMUM)
1210
1211 # define YYCOPY_NEEDED 1
1212
1213 /* Relocate STACK from its old location to the new one. The
1214 local variables YYSIZE and YYSTACKSIZE give the old and new number of
1215 elements in the stack, and YYPTR gives the new location of the
1216 stack. Advance YYPTR to a properly aligned location for the next
1217 stack. */
1218 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1219 do \
1220 { \
1221 YYPTRDIFF_T yynewbytes; \
1222 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1223 Stack = &yyptr->Stack_alloc; \
1224 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1225 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1226 } \
1227 while (0)
1228
1229 #endif
1230
1231 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1232 /* Copy COUNT objects from SRC to DST. The source and destination do
1233 not overlap. */
1234 # ifndef YYCOPY
1235 # if defined __GNUC__ && 1 < __GNUC__
1236 # define YYCOPY(Dst, Src, Count) \
1237 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1238 # else
1239 # define YYCOPY(Dst, Src, Count) \
1240 do \
1241 { \
1242 YYPTRDIFF_T yyi; \
1243 for (yyi = 0; yyi < (Count); yyi++) \
1244 (Dst)[yyi] = (Src)[yyi]; \
1245 } \
1246 while (0)
1247 # endif
1248 # endif
1249 #endif /* !YYCOPY_NEEDED */
1250
1251 /* YYFINAL -- State number of the termination state. */
1252 #define YYFINAL 2
1253 /* YYLAST -- Last index in YYTABLE. */
1254 #define YYLAST 825
1255
1256 /* YYNTOKENS -- Number of terminals. */
1257 #define YYNTOKENS 385
1258 /* YYNNTS -- Number of nonterminals. */
1259 #define YYNNTS 413
1260 /* YYNRULES -- Number of rules. */
1261 #define YYNRULES 802
1262 /* YYNSTATES -- Number of states. */
1263 #define YYNSTATES 1200
1264
1265 /* YYMAXUTOK -- Last valid token kind. */
1266 #define YYMAXUTOK 639
1267
1268
1269 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1270 as returned by yylex, with out-of-bounds checking. */
1271 #define YYTRANSLATE(YYX) \
1272 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1273 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1274 : YYSYMBOL_YYUNDEF)
1275
1276 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1277 as returned by yylex. */
1278 static const yytype_int16 yytranslate[] =
1279 {
1280 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1281 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1282 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1283 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1284 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1285 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1286 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1287 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1288 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1289 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1290 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1291 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1292 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1293 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1294 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1295 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1296 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1297 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1298 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1299 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1300 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1301 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1302 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1303 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1304 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1305 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1306 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1307 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1308 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1309 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1310 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1311 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1312 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1313 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1314 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1315 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1316 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1317 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1318 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1319 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1320 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1321 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1322 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1323 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1324 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1325 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1326 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1327 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1328 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1329 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1330 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1331 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1332 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1333 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1334 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1335 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1336 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1337 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1338 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1339 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1340 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1341 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1342 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1343 375, 376, 377, 378, 379, 380, 381, 382, 383, 384
1344 };
1345
1346 #if YYDEBUG
1347 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1348 static const yytype_int16 yyrline[] =
1349 {
1350 0, 225, 225, 225, 226, 226, 227, 227, 228, 228,
1351 228, 229, 229, 230, 230, 231, 231, 232, 234, 241,
1352 247, 248, 249, 249, 249, 250, 250, 251, 251, 251,
1353 252, 252, 252, 253, 253, 253, 254, 254, 255, 256,
1354 256, 256, 257, 257, 257, 258, 258, 259, 259, 260,
1355 260, 261, 261, 262, 262, 263, 263, 264, 264, 265,
1356 265, 266, 266, 266, 267, 267, 268, 268, 268, 269,
1357 269, 269, 270, 270, 271, 271, 272, 272, 273, 273,
1358 274, 274, 274, 275, 275, 276, 276, 277, 277, 277,
1359 278, 278, 279, 279, 280, 280, 281, 281, 281, 282,
1360 282, 283, 283, 284, 284, 285, 285, 286, 286, 287,
1361 287, 288, 288, 289, 289, 290, 290, 290, 291, 291,
1362 291, 292, 292, 292, 293, 293, 293, 293, 294, 294,
1363 295, 295, 295, 296, 296, 296, 297, 297, 298, 298,
1364 299, 299, 299, 300, 300, 300, 301, 301, 302, 302,
1365 302, 303, 304, 304, 304, 305, 305, 305, 306, 306,
1366 307, 307, 308, 308, 309, 310, 310, 311, 311, 312,
1367 312, 313, 313, 314, 314, 315, 315, 316, 316, 317,
1368 317, 318, 318, 319, 319, 320, 321, 321, 322, 322,
1369 322, 323, 323, 324, 324, 325, 325, 326, 326, 326,
1370 327, 327, 328, 329, 329, 330, 330, 331, 332, 332,
1371 333, 333, 334, 334, 334, 335, 335, 336, 336, 336,
1372 337, 337, 337, 338, 338, 339, 340, 340, 341, 341,
1373 342, 342, 343, 343, 344, 344, 344, 345, 345, 345,
1374 346, 346, 346, 347, 347, 348, 348, 348, 349, 349,
1375 350, 350, 351, 351, 352, 352, 352, 353, 353, 353,
1376 354, 354, 355, 355, 356, 356, 357, 357, 358, 358,
1377 359, 360, 360, 361, 361, 362, 362, 363, 363, 363,
1378 364, 365, 365, 366, 366, 366, 368, 376, 390, 391,
1379 392, 392, 392, 392, 392, 393, 393, 393, 395, 403,
1380 417, 418, 419, 419, 419, 419, 420, 420, 420, 422,
1381 430, 444, 445, 446, 446, 446, 446, 447, 447, 447,
1382 449, 472, 473, 474, 474, 474, 474, 475, 475, 475,
1383 476, 476, 476, 477, 477, 480, 499, 516, 524, 534,
1384 541, 551, 572, 573, 574, 574, 574, 574, 574, 575,
1385 575, 575, 576, 576, 576, 576, 577, 577, 579, 588,
1386 597, 608, 617, 626, 635, 644, 655, 664, 676, 690,
1387 705, 716, 733, 750, 767, 784, 799, 814, 827, 842,
1388 851, 860, 869, 878, 887, 896, 903, 912, 921, 930,
1389 939, 948, 957, 966, 975, 984, 997, 1008, 1019, 1030,
1390 1039, 1052, 1065, 1074, 1083, 1092, 1099, 1106, 1115, 1122,
1391 1131, 1139, 1146, 1153, 1161, 1170, 1179, 1187, 1205, 1213,
1392 1221, 1229, 1237, 1245, 1261, 1268, 1277, 1286, 1300, 1309,
1393 1318, 1327, 1336, 1345, 1354, 1363, 1372, 1381, 1388, 1395,
1394 1421, 1429, 1436, 1443, 1450, 1457, 1465, 1473, 1481, 1488,
1395 1499, 1510, 1517, 1526, 1535, 1544, 1553, 1560, 1567, 1574,
1396 1590, 1598, 1606, 1616, 1626, 1636, 1650, 1658, 1671, 1682,
1397 1690, 1703, 1712, 1721, 1730, 1739, 1749, 1759, 1767, 1780,
1398 1789, 1797, 1806, 1814, 1827, 1836, 1845, 1855, 1862, 1872,
1399 1882, 1892, 1902, 1912, 1922, 1932, 1942, 1952, 1962, 1969,
1400 1976, 1983, 1992, 2001, 2010, 2019, 2026, 2036, 2044, 2053,
1401 2060, 2078, 2091, 2104, 2117, 2126, 2135, 2144, 2153, 2162,
1402 2172, 2182, 2193, 2202, 2211, 2220, 2229, 2238, 2247, 2256,
1403 2265, 2274, 2287, 2300, 2309, 2316, 2325, 2334, 2343, 2352,
1404 2362, 2370, 2383, 2391, 2455, 2462, 2477, 2487, 2497, 2504,
1405 2511, 2518, 2525, 2539, 2553, 2560, 2567, 2576, 2584, 2591,
1406 2605, 2626, 2647, 2659, 2671, 2683, 2692, 2713, 2725, 2737,
1407 2746, 2767, 2776, 2785, 2794, 2802, 2810, 2823, 2836, 2850,
1408 2864, 2873, 2882, 2892, 2902, 2911, 2920, 2929, 2935, 2944,
1409 2953, 2963, 2973, 2983, 2992, 3002, 3011, 3024, 3037, 3049,
1410 3063, 3075, 3089, 3097, 3108, 3117, 3126, 3133, 3143, 3150,
1411 3157, 3166, 3175, 3185, 3195, 3205, 3215, 3222, 3229, 3238,
1412 3247, 3257, 3267, 3277, 3284, 3291, 3298, 3306, 3316, 3326,
1413 3336, 3346, 3356, 3364, 3373, 3383, 3442, 3451, 3459, 3467,
1414 3482, 3491, 3497, 3498, 3499, 3499, 3499, 3500, 3500, 3500,
1415 3501, 3501, 3503, 3513, 3522, 3529, 3536, 3543, 3550, 3557,
1416 3564, 3570, 3571, 3572, 3572, 3572, 3573, 3573, 3573, 3574,
1417 3575, 3575, 3576, 3576, 3577, 3577, 3578, 3579, 3580, 3581,
1418 3582, 3583, 3584, 3586, 3595, 3605, 3612, 3619, 3628, 3635,
1419 3642, 3649, 3656, 3665, 3674, 3681, 3688, 3698, 3708, 3718,
1420 3728, 3738, 3748, 3759, 3765, 3766, 3767, 3769, 3776, 3782,
1421 3783, 3784, 3786, 3793, 3803, 3810, 3819, 3827, 3833, 3834,
1422 3836, 3836, 3836, 3837, 3837, 3838, 3839, 3840, 3841, 3842,
1423 3844, 3853, 3862, 3869, 3880, 3887, 3898, 3906, 3919, 3927,
1424 3940, 3946, 3947, 3948, 3948, 3949, 3949, 3950, 3950, 3951,
1425 3951, 3952, 3952, 3953, 3953, 3954, 3954, 3955, 3955, 3956,
1426 3956, 3957, 3957, 3958, 3960, 3972, 3984, 3997, 4010, 4022,
1427 4034, 4049, 4064, 4076, 4088, 4100, 4112, 4125, 4138, 4151,
1428 4164, 4177, 4190, 4203, 4218, 4233, 4244, 4253, 4269, 4276,
1429 4285, 4294, 4303, 4312, 4322, 4331, 4340, 4346, 4347, 4348,
1430 4348, 4350, 4365
1431 };
1432 #endif
1433
1434 /** Accessing symbol of state STATE. */
1435 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1436
1437 #if YYDEBUG || 0
1438 /* The user-facing name of the symbol whose (internal) number is
1439 YYSYMBOL. No bounds checking. */
1440 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1441
1442 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1443 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1444 static const char *const yytname[] =
1445 {
1446 "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER",
1447 "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG",
1448 "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS",
1449 "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4",
1450 "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_NAT64", "VAR_PREFER_IP6",
1451 "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
1452 "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
1453 "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_SOCK_QUEUE_TIMEOUT", "VAR_CHROOT",
1454 "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1455 "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1456 "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1457 "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1458 "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1459 "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1460 "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1461 "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1462 "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1463 "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1464 "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1465 "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1466 "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1467 "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1468 "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1469 "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1470 "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1471 "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1472 "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1473 "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1474 "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1475 "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1476 "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1477 "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1478 "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1479 "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1480 "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1481 "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1482 "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1483 "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1484 "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1485 "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1486 "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1487 "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1488 "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1489 "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1490 "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1491 "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1492 "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
1493 "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
1494 "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
1495 "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
1496 "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
1497 "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
1498 "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
1499 "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
1500 "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
1501 "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
1502 "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT",
1503 "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1504 "VAR_DNS64_IGNORE_AAAA", "VAR_NAT64_PREFIX", "VAR_DNSTAP",
1505 "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
1506 "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
1507 "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
1508 "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
1509 "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
1510 "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1511 "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1512 "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1513 "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1514 "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1515 "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1516 "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_DNSTAP_SAMPLE_RATE",
1517 "VAR_RESPONSE_IP_TAG", "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA",
1518 "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_IP_DSCP",
1519 "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT",
1520 "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT",
1521 "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_OUTBOUND_MSG_RETRY",
1522 "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS",
1523 "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1524 "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1525 "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF",
1526 "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1527 "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1528 "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1529 "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1530 "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1531 "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1532 "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_CACHE_MIN_NEGATIVE_TTL",
1533 "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
1534 "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
1535 "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
1536 "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
1537 "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
1538 "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1539 "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1540 "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
1541 "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1542 "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
1543 "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
1544 "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1545 "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1546 "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1547 "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1548 "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1549 "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1550 "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1551 "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1552 "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
1553 "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
1554 "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
1555 "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
1556 "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
1557 "VAR_CACHEDB_REDISREPLICAHOST", "VAR_CACHEDB_REDISPORT",
1558 "VAR_CACHEDB_REDISREPLICAPORT", "VAR_CACHEDB_REDISTIMEOUT",
1559 "VAR_CACHEDB_REDISREPLICATIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS",
1560 "VAR_CACHEDB_REDISPATH", "VAR_CACHEDB_REDISREPLICAPATH",
1561 "VAR_CACHEDB_REDISPASSWORD", "VAR_CACHEDB_REDISREPLICAPASSWORD",
1562 "VAR_CACHEDB_REDISLOGICALDB", "VAR_CACHEDB_REDISREPLICALOGICALDB",
1563 "VAR_CACHEDB_REDISCOMMANDTIMEOUT",
1564 "VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT",
1565 "VAR_CACHEDB_REDISCONNECTTIMEOUT",
1566 "VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT",
1567 "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM",
1568 "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL",
1569 "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT",
1570 "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL",
1571 "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT",
1572 "VAR_TCP_CONNECTION_LIMIT", "VAR_ANSWER_COOKIE", "VAR_COOKIE_SECRET",
1573 "VAR_IP_RATELIMIT_COOKIE", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE",
1574 "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT",
1575 "VAR_LOG_TAG_QUERYREPLY", "VAR_DISCARD_TIMEOUT", "VAR_WAIT_LIMIT",
1576 "VAR_WAIT_LIMIT_COOKIE", "VAR_WAIT_LIMIT_NETBLOCK",
1577 "VAR_WAIT_LIMIT_COOKIE_NETBLOCK", "VAR_STREAM_WAIT_SIZE",
1578 "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI",
1579 "VAR_TLS_PROTOCOLS", "VAR_IPSET", "VAR_IPSET_NAME_V4",
1580 "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ",
1581 "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE",
1582 "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
1583 "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
1584 "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
1585 "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1586 "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_DNS_ERROR_REPORTING",
1587 "VAR_INTERFACE_ACTION", "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG",
1588 "VAR_INTERFACE_TAG_ACTION", "VAR_INTERFACE_TAG_DATA", "VAR_QUIC_PORT",
1589 "VAR_QUIC_SIZE", "VAR_PROXY_PROTOCOL_PORT",
1590 "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL",
1591 "VAR_DISABLE_EDNS_DO", "VAR_CACHEDB_NO_STORE", "VAR_LOG_DESTADDR",
1592 "VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED", "VAR_COOKIE_SECRET_FILE",
1593 "VAR_ITER_SCRUB_NS", "VAR_ITER_SCRUB_CNAME", "VAR_ITER_SCRUB_RRSIG",
1594 "VAR_MAX_TRANSFER_SIZE", "VAR_MAX_TRANSFER_TIME", "VAR_MAX_GLOBAL_QUOTA",
1595 "VAR_HARDEN_UNVERIFIED_GLUE", "VAR_LOG_TIME_ISO",
1596 "VAR_VAL_VALIDATION_ATTEMPTS", "VAR_VAL_HASH_ATTEMPTS",
1597 "VAR_ITER_SCRUB_PROMISCUOUS", "VAR_LOG_THREAD_ID", "$accept",
1598 "toplevelvars", "toplevelvar", "force_toplevel", "serverstart",
1599 "contents_server", "content_server", "stub_clause", "stubstart",
1600 "contents_stub", "content_stub", "forward_clause", "forwardstart",
1601 "contents_forward", "content_forward", "view_clause", "viewstart",
1602 "contents_view", "content_view", "authstart", "contents_auth",
1603 "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override",
1604 "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart",
1605 "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity",
1606 "server_statistics_interval", "server_statistics_cumulative",
1607 "server_extended_statistics", "server_statistics_inhibit_zero",
1608 "server_shm_enable", "server_shm_key", "server_port",
1609 "server_send_client_subnet", "server_client_subnet_zone",
1610 "server_client_subnet_always_forward", "server_client_subnet_opcode",
1611 "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1612 "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1613 "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1614 "server_interface", "server_outgoing_interface", "server_outgoing_range",
1615 "server_outgoing_port_permit", "server_outgoing_port_avoid",
1616 "server_outgoing_num_tcp", "server_incoming_num_tcp",
1617 "server_interface_automatic", "server_interface_automatic_ports",
1618 "server_do_ip4", "server_do_ip6", "server_do_nat64", "server_do_udp",
1619 "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6",
1620 "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
1621 "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
1622 "server_tcp_auth_query_timeout", "server_tcp_keepalive",
1623 "server_tcp_keepalive_timeout", "server_sock_queue_timeout",
1624 "server_tcp_upstream", "server_udp_upstream_without_downstream",
1625 "server_ssl_upstream", "server_ssl_service_key",
1626 "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
1627 "server_tls_win_cert", "server_tls_additional_port",
1628 "server_tls_ciphers", "server_tls_ciphersuites",
1629 "server_tls_session_ticket_keys", "server_tls_use_sni",
1630 "server_tls_protocols", "server_https_port", "server_http_endpoint",
1631 "server_http_max_streams", "server_http_query_buffer_size",
1632 "server_http_response_buffer_size", "server_http_nodelay",
1633 "server_http_notls_downstream", "server_quic_port", "server_quic_size",
1634 "server_use_systemd", "server_do_daemonize", "server_use_syslog",
1635 "server_log_time_ascii", "server_log_time_iso", "server_log_queries",
1636 "server_log_replies", "server_log_tag_queryreply", "server_log_servfail",
1637 "server_log_destaddr", "server_log_thread_id",
1638 "server_log_local_actions", "server_chroot", "server_username",
1639 "server_directory", "server_logfile", "server_pidfile",
1640 "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
1641 "server_auto_trust_anchor_file", "server_trust_anchor_file",
1642 "server_trusted_keys_file", "server_trust_anchor",
1643 "server_trust_anchor_signaling", "server_root_key_sentinel",
1644 "server_domain_insecure", "server_hide_identity", "server_hide_version",
1645 "server_hide_trustanchor", "server_hide_http_user_agent",
1646 "server_identity", "server_version", "server_http_user_agent",
1647 "server_nsid", "server_so_rcvbuf", "server_so_sndbuf",
1648 "server_so_reuseport", "server_ip_transparent", "server_ip_freebind",
1649 "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size",
1650 "server_msg_buffer_size", "server_msg_cache_size",
1651 "server_msg_cache_slabs", "server_num_queries_per_thread",
1652 "server_jostle_timeout", "server_delay_close", "server_udp_connect",
1653 "server_unblock_lan_zones", "server_insecure_lan_zones",
1654 "server_rrset_cache_size", "server_rrset_cache_slabs",
1655 "server_infra_host_ttl", "server_infra_lame_ttl",
1656 "server_infra_cache_numhosts", "server_infra_cache_lame_size",
1657 "server_infra_cache_slabs", "server_infra_cache_min_rtt",
1658 "server_infra_cache_max_rtt", "server_infra_keep_probing",
1659 "server_target_fetch_policy", "server_harden_short_bufsize",
1660 "server_harden_large_queries", "server_harden_glue",
1661 "server_harden_unverified_glue", "server_harden_dnssec_stripped",
1662 "server_harden_below_nxdomain", "server_harden_referral_path",
1663 "server_harden_algo_downgrade", "server_harden_unknown_additional",
1664 "server_use_caps_for_id", "server_caps_whitelist",
1665 "server_private_address", "server_private_domain", "server_prefetch",
1666 "server_prefetch_key", "server_deny_any",
1667 "server_unwanted_reply_threshold", "server_do_not_query_address",
1668 "server_do_not_query_localhost", "server_access_control",
1669 "server_interface_action", "server_module_conf",
1670 "server_val_override_date", "server_val_sig_skew_min",
1671 "server_val_sig_skew_max", "server_val_max_restart",
1672 "server_cache_max_ttl", "server_cache_max_negative_ttl",
1673 "server_cache_min_negative_ttl", "server_cache_min_ttl",
1674 "server_bogus_ttl", "server_val_clean_additional",
1675 "server_val_permissive_mode", "server_aggressive_nsec",
1676 "server_ignore_cd_flag", "server_disable_edns_do",
1677 "server_serve_expired", "server_serve_expired_ttl",
1678 "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1679 "server_serve_expired_client_timeout", "server_ede_serve_expired",
1680 "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
1681 "server_val_log_level", "server_val_nsec3_keysize_iterations",
1682 "server_zonemd_permissive_mode", "server_add_holddown",
1683 "server_del_holddown", "server_keep_missing",
1684 "server_permit_small_holddown", "server_key_cache_size",
1685 "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1686 "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1687 "server_rrset_roundrobin", "server_unknown_server_time_limit",
1688 "server_discard_timeout", "server_wait_limit",
1689 "server_wait_limit_cookie", "server_wait_limit_netblock",
1690 "server_wait_limit_cookie_netblock", "server_max_udp_size",
1691 "server_dns64_prefix", "server_dns64_synthall",
1692 "server_dns64_ignore_aaaa", "server_nat64_prefix", "server_define_tag",
1693 "server_local_zone_tag", "server_access_control_tag",
1694 "server_access_control_tag_action", "server_access_control_tag_data",
1695 "server_local_zone_override", "server_access_control_view",
1696 "server_interface_tag", "server_interface_tag_action",
1697 "server_interface_tag_data", "server_interface_view",
1698 "server_response_ip_tag", "server_ip_ratelimit",
1699 "server_ip_ratelimit_cookie", "server_ratelimit",
1700 "server_ip_ratelimit_size", "server_ratelimit_size",
1701 "server_ip_ratelimit_slabs", "server_ratelimit_slabs",
1702 "server_ratelimit_for_domain", "server_ratelimit_below_domain",
1703 "server_ip_ratelimit_factor", "server_ratelimit_factor",
1704 "server_ip_ratelimit_backoff", "server_ratelimit_backoff",
1705 "server_outbound_msg_retry", "server_max_sent_count",
1706 "server_max_query_restarts", "server_low_rtt", "server_fast_server_num",
1707 "server_fast_server_permil", "server_qname_minimisation",
1708 "server_qname_minimisation_strict", "server_pad_responses",
1709 "server_pad_responses_block_size", "server_pad_queries",
1710 "server_pad_queries_block_size", "server_ipsecmod_enabled",
1711 "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1712 "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1713 "server_ipsecmod_strict", "server_edns_client_string",
1714 "server_edns_client_string_opcode", "server_ede",
1715 "server_dns_error_reporting", "server_proxy_protocol_port", "stub_name",
1716 "stub_host", "stub_addr", "stub_first", "stub_no_cache",
1717 "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name",
1718 "forward_host", "forward_addr", "forward_first", "forward_no_cache",
1719 "forward_ssl_upstream", "forward_tcp_upstream", "auth_name",
1720 "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
1721 "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream",
1722 "auth_for_upstream", "auth_fallback_enabled", "auth_max_transfer_size",
1723 "auth_max_transfer_time", "view_name", "view_local_zone",
1724 "view_response_ip", "view_response_ip_data", "view_local_data",
1725 "view_local_data_ptr", "view_first", "rcstart", "contents_rc",
1726 "content_rc", "rc_control_enable", "rc_control_port",
1727 "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
1728 "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
1729 "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
1730 "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
1731 "dt_dnstap_tls", "dt_dnstap_tls_server_name",
1732 "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
1733 "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
1734 "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
1735 "dt_dnstap_log_resolver_query_messages",
1736 "dt_dnstap_log_resolver_response_messages",
1737 "dt_dnstap_log_client_query_messages",
1738 "dt_dnstap_log_client_response_messages",
1739 "dt_dnstap_log_forwarder_query_messages",
1740 "dt_dnstap_log_forwarder_response_messages", "dt_dnstap_sample_rate",
1741 "pythonstart", "contents_py", "content_py", "py_script", "dynlibstart",
1742 "contents_dl", "content_dl", "dl_file",
1743 "server_disable_dnssec_lame_check", "server_log_identity",
1744 "server_response_ip", "server_response_ip_data", "dnscstart",
1745 "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1746 "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1747 "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1748 "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1749 "dnsc_dnscrypt_shared_secret_cache_slabs",
1750 "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1751 "cachedbstart", "contents_cachedb", "content_cachedb",
1752 "cachedb_backend_name", "cachedb_secret_seed", "cachedb_no_store",
1753 "cachedb_check_when_serve_expired", "redis_server_host",
1754 "redis_replica_server_host", "redis_server_port",
1755 "redis_replica_server_port", "redis_server_path",
1756 "redis_replica_server_path", "redis_server_password",
1757 "redis_replica_server_password", "redis_timeout",
1758 "redis_replica_timeout", "redis_command_timeout",
1759 "redis_replica_command_timeout", "redis_connect_timeout",
1760 "redis_replica_connect_timeout", "redis_expire_records",
1761 "redis_logical_db", "redis_replica_logical_db",
1762 "server_tcp_connection_limit", "server_answer_cookie",
1763 "server_cookie_secret", "server_cookie_secret_file",
1764 "server_iter_scrub_ns", "server_iter_scrub_cname",
1765 "server_iter_scrub_rrsig", "server_max_global_quota",
1766 "server_iter_scrub_promiscuous", "server_val_validation_attempts",
1767 "server_val_hash_attempts", "ipsetstart", "contents_ipset",
1768 "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
1769 };
1770
1771 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)1772 yysymbol_name (yysymbol_kind_t yysymbol)
1773 {
1774 return yytname[yysymbol];
1775 }
1776 #endif
1777
1778 #define YYPACT_NINF (-311)
1779
1780 #define yypact_value_is_default(Yyn) \
1781 ((Yyn) == YYPACT_NINF)
1782
1783 #define YYTABLE_NINF (-1)
1784
1785 #define yytable_value_is_error(Yyn) \
1786 0
1787
1788 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1789 STATE-NUM. */
1790 static const yytype_int16 yypact[] =
1791 {
1792 -311, 275, -311, -311, -311, -311, -311, -311, -311, -311,
1793 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1794 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1795 -311, -311, -311, -311, -311, -13, 227, 234, 280, 114,
1796 88, -14, 384, -81, -310, -99, 210, -303, 31, 32,
1797 33, 83, 89, 93, 94, 121, 122, 123, 126, 134,
1798 149, 150, 162, 163, 164, 165, 166, 167, 168, 169,
1799 215, 217, 237, 238, 239, 240, 241, 242, 243, 244,
1800 245, 246, 247, 258, 259, 260, 261, 262, 263, 268,
1801 269, 270, 272, 273, 274, 281, 282, 283, 284, 285,
1802 288, 291, 297, 298, 314, 315, 318, 320, 321, 322,
1803 323, 324, 330, 331, 346, 348, 364, 366, 367, 369,
1804 371, 372, 375, 376, 377, 378, 379, 386, 387, 388,
1805 389, 390, 391, 393, 394, 395, 396, 397, 398, 399,
1806 400, 401, 402, 403, 404, 405, 407, 413, 414, 415,
1807 416, 417, 424, 425, 426, 427, 428, 429, 430, 431,
1808 433, 434, 435, 436, 438, 439, 440, 441, 442, 443,
1809 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
1810 458, 459, 460, 461, 462, 463, 466, 467, 468, 469,
1811 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
1812 501, 502, 504, 505, 506, 507, 508, 509, 511, 512,
1813 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
1814 523, 524, 526, 527, 528, 529, 530, 531, 532, 533,
1815 534, 535, 536, 537, 539, 540, 541, 542, 543, 545,
1816 567, 570, 572, 573, 574, 575, 576, 577, 578, 579,
1817 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
1818 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
1819 600, 602, 603, 604, 606, 607, 608, 609, 610, 612,
1820 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
1821 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
1822 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
1823 643, 644, -311, -311, -311, -311, -311, -311, -311, -311,
1824 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1825 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1826 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1827 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1828 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1829 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1830 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1831 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1832 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1833 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1834 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1835 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1836 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1837 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1838 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1839 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1840 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1841 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1842 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1843 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1844 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1845 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1846 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1847 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1848 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1849 -311, -311, -311, -311, -311, -311, -311, 645, 646, 647,
1850 648, 649, 650, 651, 652, -311, -311, -311, -311, -311,
1851 -311, -311, -311, -311, 653, 654, 655, 656, 657, 658,
1852 659, -311, -311, -311, -311, -311, -311, -311, -311, 660,
1853 661, 662, 663, 664, 665, 666, -311, -311, -311, -311,
1854 -311, -311, -311, -311, 667, 668, 669, 670, 671, 672,
1855 673, 674, 675, 676, 677, 678, -311, -311, -311, -311,
1856 -311, -311, -311, -311, -311, -311, -311, -311, -311, 679,
1857 680, 681, 682, 683, 684, -311, -311, -311, -311, -311,
1858 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1859 685, 686, 687, 688, 689, 690, 691, 692, -311, -311,
1860 -311, -311, -311, -311, -311, -311, -311, 693, 694, 695,
1861 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
1862 706, 707, 708, 709, 710, 711, 712, -311, -311, -311,
1863 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1864 -311, -311, -311, -311, -311, -311, -311, -311, 713, -311,
1865 -311, 714, -311, -311, 715, 716, 717, 718, 719, 720,
1866 721, 722, 723, 724, -311, -311, -311, -311, -311, -311,
1867 -311, -311, -311, -311, -311, 725, 726, 727, 728, 729,
1868 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
1869 740, 741, 742, 743, 744, 745, -311, -311, -311, -311,
1870 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1871 -311, -311, -311, -311, -311, -311, -311, -311, 746, 747,
1872 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1873 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1874 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1875 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1876 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1877 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1878 -311, -311, -311, -311, -311, 748, 749, -311, -311, -311,
1879 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1880 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1881 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1882 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1883 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1884 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1885 -311, -311, -311, -311, -311, -311, -311, 750, 751, 752,
1886 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1887 -311, -311, -311, 753, 754, -311, -311, -311, -311, -311,
1888 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1889 -311, -311, -311, -311, -311, -311, -311, 755, 756, 757,
1890 758, 759, 760, -311, -311, -311, -311, -311, -311, -311,
1891 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1892 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1893 -311, -311, -311, -311, -311, -311, -311, -311, 761, -311,
1894 -311, -311, -311, -311, -311, -311, -311, -311, -311, 762,
1895 763, -311, -311, -311, -311, -311, -311, 764, -311, -311,
1896 -311, -311, -311, -311, 765, 766, 767, 768, 769, -311,
1897 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1898 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1899 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1900 -311, -311, -311, 770, -311, -311, 771, 772, -311, -311,
1901 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1902 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1903 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1904 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1905 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1906 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1907 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1908 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
1909 -311, -311, -311, -311, -311, -311, -311, -311, -311, 773,
1910 774, 775, -311, -311, -311, -311, -311, -311, -311, -311,
1911 776, 777, -311, -311, -311, -311, -311, -311, -311, -311
1912 };
1913
1914 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1915 Performed when YYTABLE does not specify something else to do. Zero
1916 means the default is an error. */
1917 static const yytype_int16 yydefact[] =
1918 {
1919 2, 0, 1, 18, 19, 287, 299, 641, 703, 660,
1920 310, 717, 740, 320, 796, 341, 708, 3, 17, 21,
1921 5, 289, 6, 301, 10, 312, 322, 343, 643, 662,
1922 705, 710, 719, 742, 798, 4, 286, 298, 309, 14,
1923 15, 8, 9, 7, 16, 11, 12, 13, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 20, 22, 23, 90, 93, 102, 272, 220,
1951 221, 24, 173, 174, 175, 176, 177, 178, 179, 180,
1952 181, 182, 39, 81, 25, 94, 95, 50, 74, 89,
1953 268, 26, 27, 28, 31, 32, 29, 30, 33, 34,
1954 35, 263, 264, 265, 36, 37, 38, 126, 232, 127,
1955 130, 131, 132, 234, 239, 235, 251, 252, 253, 257,
1956 259, 133, 134, 135, 136, 137, 138, 139, 266, 267,
1957 216, 91, 80, 106, 284, 124, 125, 244, 241, 275,
1958 129, 128, 40, 41, 42, 43, 44, 82, 96, 97,
1959 113, 68, 78, 69, 224, 225, 107, 60, 61, 223,
1960 64, 62, 63, 65, 261, 117, 121, 143, 155, 188,
1961 158, 250, 118, 75, 45, 46, 47, 104, 144, 145,
1962 146, 147, 48, 49, 51, 52, 54, 55, 53, 152,
1963 153, 159, 56, 57, 58, 66, 283, 85, 122, 99,
1964 154, 273, 92, 183, 100, 101, 119, 120, 242, 105,
1965 59, 83, 86, 197, 67, 70, 108, 109, 110, 84,
1966 184, 185, 111, 71, 72, 73, 233, 123, 274, 207,
1967 208, 209, 210, 211, 212, 213, 214, 222, 112, 79,
1968 262, 114, 115, 116, 186, 76, 77, 98, 87, 88,
1969 103, 140, 141, 243, 245, 246, 247, 248, 249, 142,
1970 148, 149, 150, 151, 189, 190, 192, 194, 195, 193,
1971 196, 199, 200, 201, 198, 217, 156, 256, 157, 162,
1972 163, 160, 161, 164, 165, 167, 166, 169, 168, 170,
1973 171, 172, 236, 238, 237, 187, 202, 203, 204, 205,
1974 206, 226, 228, 227, 229, 230, 231, 258, 260, 269,
1975 270, 271, 191, 215, 218, 219, 240, 254, 255, 276,
1976 277, 278, 282, 279, 285, 280, 281, 0, 0, 0,
1977 0, 0, 0, 0, 0, 288, 290, 291, 292, 294,
1978 295, 296, 297, 293, 0, 0, 0, 0, 0, 0,
1979 0, 300, 302, 303, 304, 305, 306, 307, 308, 0,
1980 0, 0, 0, 0, 0, 0, 311, 313, 314, 317,
1981 318, 315, 319, 316, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 321, 323, 324, 325,
1983 326, 330, 331, 332, 327, 328, 329, 333, 334, 0,
1984 0, 0, 0, 0, 0, 346, 350, 351, 352, 353,
1985 354, 342, 344, 345, 347, 348, 349, 355, 356, 357,
1986 0, 0, 0, 0, 0, 0, 0, 0, 642, 644,
1987 646, 645, 651, 647, 648, 649, 650, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 661, 663, 665,
1990 664, 666, 667, 668, 669, 670, 671, 672, 673, 674,
1991 675, 676, 677, 678, 679, 680, 681, 682, 0, 704,
1992 706, 0, 709, 711, 0, 0, 0, 0, 0, 0,
1993 0, 0, 0, 0, 718, 720, 721, 722, 724, 725,
1994 723, 726, 727, 728, 729, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996 0, 0, 0, 0, 0, 0, 741, 743, 744, 761,
1997 763, 745, 746, 747, 748, 755, 756, 757, 758, 749,
1998 750, 751, 752, 753, 754, 762, 759, 760, 0, 0,
1999 797, 799, 800, 359, 358, 366, 379, 377, 391, 386,
2000 387, 388, 392, 389, 390, 393, 394, 395, 399, 400,
2001 401, 437, 438, 439, 440, 441, 469, 470, 471, 477,
2002 478, 382, 479, 480, 483, 481, 482, 487, 488, 489,
2003 505, 452, 453, 456, 457, 490, 509, 446, 448, 510,
2004 518, 519, 520, 383, 468, 540, 541, 447, 534, 427,
2005 378, 442, 506, 514, 492, 0, 0, 544, 384, 360,
2006 426, 497, 361, 380, 381, 443, 444, 542, 494, 499,
2007 500, 397, 396, 362, 545, 472, 504, 428, 451, 511,
2008 512, 513, 517, 533, 445, 538, 536, 537, 460, 467,
2009 501, 502, 461, 462, 493, 522, 430, 431, 436, 402,
2010 404, 398, 405, 406, 407, 408, 416, 417, 418, 419,
2011 420, 421, 422, 546, 547, 554, 473, 474, 475, 476,
2012 484, 485, 486, 555, 556, 557, 558, 0, 0, 0,
2013 495, 463, 465, 713, 571, 576, 574, 573, 577, 575,
2014 584, 585, 586, 0, 0, 580, 581, 582, 583, 367,
2015 368, 369, 370, 371, 372, 373, 374, 375, 376, 498,
2016 515, 539, 516, 590, 591, 464, 559, 0, 0, 0,
2017 0, 0, 0, 524, 525, 526, 527, 528, 529, 530,
2018 531, 532, 714, 454, 455, 458, 449, 521, 425, 364,
2019 365, 450, 592, 593, 594, 595, 596, 598, 597, 599,
2020 600, 601, 403, 410, 587, 589, 588, 409, 0, 786,
2021 787, 572, 433, 503, 548, 432, 549, 550, 551, 0,
2022 0, 466, 411, 412, 414, 415, 413, 0, 603, 459,
2023 535, 385, 604, 605, 0, 0, 0, 0, 0, 423,
2024 424, 606, 363, 496, 523, 434, 788, 789, 790, 791,
2025 792, 491, 429, 794, 795, 793, 435, 607, 608, 609,
2026 614, 612, 613, 610, 611, 615, 616, 617, 618, 620,
2027 621, 619, 634, 0, 638, 639, 0, 0, 640, 622,
2028 630, 623, 624, 625, 629, 631, 626, 627, 628, 632,
2029 633, 335, 336, 337, 338, 339, 340, 652, 654, 653,
2030 656, 657, 658, 659, 655, 683, 685, 686, 687, 688,
2031 689, 690, 691, 692, 693, 684, 694, 695, 696, 697,
2032 698, 699, 700, 701, 702, 707, 712, 730, 731, 732,
2033 735, 733, 734, 736, 737, 738, 739, 764, 765, 768,
2034 769, 770, 771, 776, 777, 782, 772, 773, 774, 775,
2035 783, 784, 778, 779, 780, 781, 766, 767, 801, 802,
2036 507, 543, 570, 715, 716, 578, 579, 560, 561, 0,
2037 0, 0, 565, 785, 552, 553, 602, 508, 569, 566,
2038 0, 0, 635, 636, 637, 564, 562, 563, 567, 568
2039 };
2040
2041 /* YYPGOTO[NTERM-NUM]. */
2042 static const yytype_int16 yypgoto[] =
2043 {
2044 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2045 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2046 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2047 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2048 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2049 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2050 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2051 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2052 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2053 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2054 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2055 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2056 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2057 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2058 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2059 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2060 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2061 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2062 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2063 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2064 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2065 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2066 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2067 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2068 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2069 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2070 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2071 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2072 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2073 -311, -311, -311, -311, -311, 778, 779, 780, 781, 782,
2074 -311, -311, 783, -311, -311, 784, 785, -311, -311, -311,
2075 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2076 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2077 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2078 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2079 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2080 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2081 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2082 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2083 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2084 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2085 -311, -311, -311
2086 };
2087
2088 /* YYDEFGOTO[NTERM-NUM]. */
2089 static const yytype_int16 yydefgoto[] =
2090 {
2091 0, 1, 17, 18, 19, 35, 312, 20, 21, 36,
2092 585, 22, 23, 37, 601, 24, 25, 38, 616, 26,
2093 39, 636, 655, 656, 657, 658, 659, 660, 27, 40,
2094 661, 313, 314, 315, 316, 317, 318, 319, 320, 321,
2095 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
2096 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2097 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
2098 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
2099 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
2100 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
2101 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
2102 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
2103 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
2104 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
2105 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
2106 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
2107 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
2108 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
2109 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
2110 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
2111 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
2112 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
2113 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
2114 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
2115 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
2116 532, 533, 534, 535, 536, 537, 538, 539, 540, 541,
2117 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
2118 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
2119 586, 587, 588, 589, 590, 591, 592, 593, 602, 603,
2120 604, 605, 606, 607, 608, 637, 638, 639, 640, 641,
2121 642, 643, 644, 645, 646, 647, 648, 617, 618, 619,
2122 620, 621, 622, 623, 28, 41, 678, 679, 680, 681,
2123 682, 683, 684, 685, 686, 29, 42, 707, 708, 709,
2124 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
2125 720, 721, 722, 723, 724, 725, 726, 727, 30, 43,
2126 729, 730, 31, 44, 732, 733, 562, 563, 564, 565,
2127 32, 45, 744, 745, 746, 747, 748, 749, 750, 751,
2128 752, 753, 754, 33, 46, 776, 777, 778, 779, 780,
2129 781, 782, 783, 784, 785, 786, 787, 788, 789, 790,
2130 791, 792, 793, 794, 795, 796, 797, 566, 567, 568,
2131 569, 570, 571, 572, 573, 574, 575, 576, 34, 47,
2132 800, 801, 802
2133 };
2134
2135 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
2136 positive, shift that token. If negative, reduce the rule whose
2137 number is the opposite. If YYTABLE_NINF, syntax error. */
2138 static const yytype_int16 yytable[] =
2139 {
2140 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2141 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
2142 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
2143 78, 79, 80, 81, 798, 799, 728, 731, 82, 83,
2144 84, 803, 804, 805, 85, 86, 87, 88, 89, 90,
2145 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
2146 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
2147 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
2148 121, 122, 123, 124, 125, 670, 671, 672, 673, 674,
2149 675, 676, 677, 806, 126, 127, 128, 129, 130, 807,
2150 131, 132, 133, 808, 809, 134, 135, 136, 137, 138,
2151 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2152 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
2153 159, 810, 811, 812, 160, 624, 813, 161, 162, 163,
2154 164, 165, 166, 167, 814, 168, 169, 170, 171, 172,
2155 173, 174, 175, 176, 177, 178, 179, 180, 181, 815,
2156 816, 624, 734, 735, 736, 737, 738, 739, 740, 741,
2157 742, 743, 817, 818, 819, 820, 821, 822, 823, 824,
2158 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
2159 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
2160 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
2161 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
2162 222, 223, 224, 225, 226, 825, 227, 826, 228, 229,
2163 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2164 240, 241, 242, 243, 244, 245, 246, 827, 828, 829,
2165 830, 831, 832, 833, 834, 835, 836, 837, 247, 248,
2166 249, 250, 251, 252, 253, 254, 255, 256, 838, 839,
2167 840, 841, 842, 843, 577, 2, 578, 579, 844, 845,
2168 846, 594, 847, 848, 849, 0, 3, 4, 257, 595,
2169 596, 850, 851, 852, 853, 854, 258, 259, 855, 260,
2170 261, 856, 262, 263, 264, 265, 266, 857, 858, 267,
2171 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
2172 278, 279, 280, 5, 859, 860, 281, 609, 861, 6,
2173 862, 863, 864, 865, 866, 282, 283, 284, 285, 580,
2174 867, 868, 286, 287, 288, 289, 290, 291, 292, 293,
2175 294, 295, 296, 297, 298, 299, 869, 300, 870, 301,
2176 302, 303, 304, 610, 611, 305, 306, 307, 308, 309,
2177 310, 311, 581, 7, 871, 582, 872, 873, 597, 874,
2178 598, 875, 876, 599, 583, 877, 878, 879, 880, 881,
2179 612, 8, 626, 627, 628, 629, 882, 883, 884, 885,
2180 886, 887, 631, 888, 889, 890, 891, 892, 893, 894,
2181 895, 896, 897, 898, 899, 900, 625, 901, 626, 627,
2182 628, 629, 630, 902, 903, 904, 905, 906, 631, 649,
2183 650, 651, 652, 653, 907, 908, 909, 910, 911, 912,
2184 913, 914, 654, 915, 916, 917, 918, 9, 919, 920,
2185 921, 922, 923, 924, 925, 926, 927, 928, 929, 930,
2186 931, 932, 933, 934, 634, 635, 632, 633, 935, 936,
2187 937, 938, 939, 940, 613, 614, 941, 942, 943, 944,
2188 945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
2189 634, 635, 755, 756, 757, 758, 759, 760, 761, 762,
2190 763, 764, 765, 766, 767, 768, 769, 770, 771, 772,
2191 773, 955, 956, 10, 957, 958, 959, 960, 961, 962,
2192 615, 963, 964, 965, 966, 967, 968, 969, 970, 971,
2193 972, 973, 974, 975, 976, 11, 977, 978, 979, 980,
2194 981, 982, 983, 984, 985, 986, 987, 988, 584, 989,
2195 990, 991, 992, 993, 600, 994, 12, 687, 688, 689,
2196 690, 691, 692, 693, 694, 695, 696, 697, 698, 699,
2197 700, 701, 702, 703, 704, 705, 706, 995, 13, 774,
2198 996, 775, 997, 998, 999, 1000, 1001, 1002, 1003, 1004,
2199 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
2200 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
2201 1025, 14, 1026, 1027, 1028, 15, 1029, 1030, 1031, 1032,
2202 1033, 16, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041,
2203 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051,
2204 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061,
2205 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
2206 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
2207 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
2208 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
2209 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
2210 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
2211 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
2212 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
2213 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
2214 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
2215 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171,
2216 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
2217 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
2218 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221 0, 0, 0, 0, 0, 0, 0, 0, 662, 663,
2222 664, 665, 666, 667, 668, 669
2223 };
2224
2225 static const yytype_int16 yycheck[] =
2226 {
2227 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
2228 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
2229 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
2230 43, 44, 45, 46, 337, 338, 117, 347, 51, 52,
2231 53, 10, 10, 10, 57, 58, 59, 60, 61, 62,
2232 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
2233 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2234 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2235 93, 94, 95, 96, 97, 99, 100, 101, 102, 103,
2236 104, 105, 106, 10, 107, 108, 109, 110, 111, 10,
2237 113, 114, 115, 10, 10, 118, 119, 120, 121, 122,
2238 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
2239 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2240 143, 10, 10, 10, 147, 47, 10, 150, 151, 152,
2241 153, 154, 155, 156, 10, 158, 159, 160, 161, 162,
2242 163, 164, 165, 166, 167, 168, 169, 170, 171, 10,
2243 10, 47, 261, 262, 263, 264, 265, 266, 267, 268,
2244 269, 270, 10, 10, 10, 10, 10, 10, 10, 10,
2245 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
2246 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
2247 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
2248 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
2249 233, 234, 235, 236, 237, 10, 239, 10, 241, 242,
2250 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
2251 253, 254, 255, 256, 257, 258, 259, 10, 10, 10,
2252 10, 10, 10, 10, 10, 10, 10, 10, 271, 272,
2253 273, 274, 275, 276, 277, 278, 279, 280, 10, 10,
2254 10, 10, 10, 10, 47, 0, 49, 50, 10, 10,
2255 10, 47, 10, 10, 10, -1, 11, 12, 301, 55,
2256 56, 10, 10, 10, 10, 10, 309, 310, 10, 312,
2257 313, 10, 315, 316, 317, 318, 319, 10, 10, 322,
2258 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
2259 333, 334, 335, 48, 10, 10, 339, 47, 10, 54,
2260 10, 10, 10, 10, 10, 348, 349, 350, 351, 112,
2261 10, 10, 355, 356, 357, 358, 359, 360, 361, 362,
2262 363, 364, 365, 366, 367, 368, 10, 370, 10, 372,
2263 373, 374, 375, 83, 84, 378, 379, 380, 381, 382,
2264 383, 384, 145, 98, 10, 148, 10, 10, 144, 10,
2265 146, 10, 10, 149, 157, 10, 10, 10, 10, 10,
2266 110, 116, 304, 305, 306, 307, 10, 10, 10, 10,
2267 10, 10, 314, 10, 10, 10, 10, 10, 10, 10,
2268 10, 10, 10, 10, 10, 10, 302, 10, 304, 305,
2269 306, 307, 308, 10, 10, 10, 10, 10, 314, 341,
2270 342, 343, 344, 345, 10, 10, 10, 10, 10, 10,
2271 10, 10, 354, 10, 10, 10, 10, 172, 10, 10,
2272 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2273 10, 10, 10, 10, 376, 377, 352, 353, 10, 10,
2274 10, 10, 10, 10, 194, 195, 10, 10, 10, 10,
2275 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2276 376, 377, 282, 283, 284, 285, 286, 287, 288, 289,
2277 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
2278 300, 10, 10, 238, 10, 10, 10, 10, 10, 10,
2279 240, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2280 10, 10, 10, 10, 10, 260, 10, 10, 10, 10,
2281 10, 10, 10, 10, 10, 10, 10, 10, 321, 10,
2282 10, 10, 10, 10, 320, 10, 281, 173, 174, 175,
2283 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
2284 186, 187, 188, 189, 190, 191, 192, 10, 303, 369,
2285 10, 371, 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, 336, 10, 10, 10, 340, 10, 10, 10, 10,
2289 10, 346, 10, 10, 10, 10, 10, 10, 10, 10,
2290 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2291 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2292 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2293 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2294 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2295 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2296 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2297 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2298 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2299 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2300 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2301 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2302 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2303 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2304 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2305 10, 10, 10, 10, 10, 10, 10, 10, -1, -1,
2306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2308 -1, -1, -1, -1, -1, -1, -1, -1, 40, 40,
2309 40, 40, 40, 40, 40, 40
2310 };
2311
2312 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2313 state STATE-NUM. */
2314 static const yytype_int16 yystos[] =
2315 {
2316 0, 386, 0, 11, 12, 48, 54, 98, 116, 172,
2317 238, 260, 281, 303, 336, 340, 346, 387, 388, 389,
2318 392, 393, 396, 397, 400, 401, 404, 413, 699, 710,
2319 733, 737, 745, 758, 793, 390, 394, 398, 402, 405,
2320 414, 700, 711, 734, 738, 746, 759, 794, 13, 14,
2321 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2322 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2323 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2324 45, 46, 51, 52, 53, 57, 58, 59, 60, 61,
2325 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
2326 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
2327 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
2328 92, 93, 94, 95, 96, 97, 107, 108, 109, 110,
2329 111, 113, 114, 115, 118, 119, 120, 121, 122, 123,
2330 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2331 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2332 147, 150, 151, 152, 153, 154, 155, 156, 158, 159,
2333 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
2334 170, 171, 193, 194, 195, 196, 197, 198, 199, 200,
2335 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
2336 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
2337 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
2338 231, 232, 233, 234, 235, 236, 237, 239, 241, 242,
2339 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
2340 253, 254, 255, 256, 257, 258, 259, 271, 272, 273,
2341 274, 275, 276, 277, 278, 279, 280, 301, 309, 310,
2342 312, 313, 315, 316, 317, 318, 319, 322, 323, 324,
2343 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2344 335, 339, 348, 349, 350, 351, 355, 356, 357, 358,
2345 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
2346 370, 372, 373, 374, 375, 378, 379, 380, 381, 382,
2347 383, 384, 391, 416, 417, 418, 419, 420, 421, 422,
2348 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
2349 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
2350 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
2351 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
2352 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
2353 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
2354 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
2355 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
2356 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
2357 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
2358 523, 524, 525, 526, 527, 528, 529, 530, 531, 532,
2359 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
2360 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
2361 553, 554, 555, 556, 557, 558, 559, 560, 561, 562,
2362 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
2363 573, 574, 575, 576, 577, 578, 579, 580, 581, 582,
2364 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
2365 593, 594, 595, 596, 597, 598, 599, 600, 601, 602,
2366 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
2367 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
2368 623, 624, 625, 626, 627, 628, 629, 630, 631, 632,
2369 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
2370 643, 644, 645, 646, 647, 648, 649, 650, 651, 652,
2371 653, 654, 655, 656, 657, 658, 659, 660, 661, 662,
2372 663, 664, 741, 742, 743, 744, 782, 783, 784, 785,
2373 786, 787, 788, 789, 790, 791, 792, 47, 49, 50,
2374 112, 145, 148, 157, 321, 395, 665, 666, 667, 668,
2375 669, 670, 671, 672, 47, 55, 56, 144, 146, 149,
2376 320, 399, 673, 674, 675, 676, 677, 678, 679, 47,
2377 83, 84, 110, 194, 195, 240, 403, 692, 693, 694,
2378 695, 696, 697, 698, 47, 302, 304, 305, 306, 307,
2379 308, 314, 352, 353, 376, 377, 406, 680, 681, 682,
2380 683, 684, 685, 686, 687, 688, 689, 690, 691, 341,
2381 342, 343, 344, 345, 354, 407, 408, 409, 410, 411,
2382 412, 415, 680, 681, 682, 683, 684, 687, 690, 691,
2383 99, 100, 101, 102, 103, 104, 105, 106, 701, 702,
2384 703, 704, 705, 706, 707, 708, 709, 173, 174, 175,
2385 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
2386 186, 187, 188, 189, 190, 191, 192, 712, 713, 714,
2387 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
2388 725, 726, 727, 728, 729, 730, 731, 732, 117, 735,
2389 736, 347, 739, 740, 261, 262, 263, 264, 265, 266,
2390 267, 268, 269, 270, 747, 748, 749, 750, 751, 752,
2391 753, 754, 755, 756, 757, 282, 283, 284, 285, 286,
2392 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
2393 297, 298, 299, 300, 369, 371, 760, 761, 762, 763,
2394 764, 765, 766, 767, 768, 769, 770, 771, 772, 773,
2395 774, 775, 776, 777, 778, 779, 780, 781, 337, 338,
2396 795, 796, 797, 10, 10, 10, 10, 10, 10, 10,
2397 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2398 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2399 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2400 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2401 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2402 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2403 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2404 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2405 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2406 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2407 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2408 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2409 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2410 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2411 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2412 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2413 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2414 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2415 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2416 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2417 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2418 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2419 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2420 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2421 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2422 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2423 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2424 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2425 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2426 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2427 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2428 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2429 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2430 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2431 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2432 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2433 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2434 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2435 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
2436 };
2437
2438 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
2439 static const yytype_int16 yyr1[] =
2440 {
2441 0, 385, 386, 386, 387, 387, 387, 387, 387, 387,
2442 387, 387, 387, 387, 387, 387, 387, 387, 388, 389,
2443 390, 390, 391, 391, 391, 391, 391, 391, 391, 391,
2444 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2445 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2446 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2447 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2448 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2449 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2450 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2451 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2452 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2453 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2454 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2455 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2456 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2457 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2458 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2459 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2460 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2461 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2462 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2463 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2464 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2465 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2466 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2467 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2468 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
2469 391, 391, 391, 391, 391, 391, 392, 393, 394, 394,
2470 395, 395, 395, 395, 395, 395, 395, 395, 396, 397,
2471 398, 398, 399, 399, 399, 399, 399, 399, 399, 400,
2472 401, 402, 402, 403, 403, 403, 403, 403, 403, 403,
2473 404, 405, 405, 406, 406, 406, 406, 406, 406, 406,
2474 406, 406, 406, 406, 406, 407, 408, 409, 410, 411,
2475 412, 413, 414, 414, 415, 415, 415, 415, 415, 415,
2476 415, 415, 415, 415, 415, 415, 415, 415, 416, 417,
2477 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
2478 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
2479 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
2480 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
2481 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
2482 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
2483 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
2484 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
2485 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
2486 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
2487 518, 519, 520, 521, 522, 523, 524, 525, 526, 527,
2488 528, 529, 530, 531, 532, 533, 534, 535, 536, 537,
2489 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
2490 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
2491 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
2492 568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
2493 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
2494 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
2495 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2496 608, 609, 610, 611, 612, 613, 614, 615, 616, 617,
2497 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
2498 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
2499 638, 639, 640, 641, 642, 643, 644, 645, 646, 647,
2500 648, 649, 650, 651, 652, 653, 654, 655, 656, 657,
2501 658, 659, 660, 661, 662, 663, 664, 665, 666, 667,
2502 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
2503 678, 679, 680, 681, 682, 683, 684, 685, 686, 687,
2504 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
2505 698, 699, 700, 700, 701, 701, 701, 701, 701, 701,
2506 701, 701, 702, 703, 704, 705, 706, 707, 708, 709,
2507 710, 711, 711, 712, 712, 712, 712, 712, 712, 712,
2508 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
2509 712, 712, 712, 713, 714, 715, 716, 717, 718, 719,
2510 720, 721, 722, 723, 724, 725, 726, 727, 728, 729,
2511 730, 731, 732, 733, 734, 734, 735, 736, 737, 738,
2512 738, 739, 740, 741, 742, 743, 744, 745, 746, 746,
2513 747, 747, 747, 747, 747, 747, 747, 747, 747, 747,
2514 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
2515 758, 759, 759, 760, 760, 760, 760, 760, 760, 760,
2516 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
2517 760, 760, 760, 760, 761, 762, 763, 764, 765, 766,
2518 767, 768, 769, 770, 771, 772, 773, 774, 775, 776,
2519 777, 778, 779, 780, 781, 782, 783, 784, 785, 786,
2520 787, 788, 789, 790, 791, 792, 793, 794, 794, 795,
2521 795, 796, 797
2522 };
2523
2524 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
2525 static const yytype_int8 yyr2[] =
2526 {
2527 0, 2, 0, 2, 2, 1, 1, 2, 2, 2,
2528 1, 2, 2, 2, 2, 2, 2, 1, 1, 1,
2529 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2530 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2531 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2532 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2533 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2534 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2540 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2541 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2555 1, 1, 1, 1, 1, 1, 2, 1, 2, 0,
2556 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
2557 2, 0, 1, 1, 1, 1, 1, 1, 1, 2,
2558 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
2559 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
2560 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
2561 2, 1, 2, 0, 1, 1, 1, 1, 1, 1,
2562 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2577 2, 2, 2, 2, 2, 2, 2, 3, 3, 2,
2578 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2581 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
2582 2, 2, 3, 3, 2, 2, 2, 2, 2, 2,
2583 3, 3, 4, 4, 4, 3, 3, 4, 4, 3,
2584 3, 2, 2, 2, 2, 2, 2, 2, 3, 3,
2585 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2586 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2587 2, 2, 3, 2, 2, 2, 2, 2, 2, 2,
2588 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2589 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2590 2, 2, 2, 2, 2, 3, 3, 3, 2, 2,
2591 2, 1, 2, 0, 1, 1, 1, 1, 1, 1,
2592 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
2593 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
2594 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2595 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2596 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2597 2, 2, 2, 1, 2, 0, 1, 2, 1, 2,
2598 0, 1, 2, 2, 2, 3, 3, 1, 2, 0,
2599 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2600 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2601 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
2602 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2603 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2604 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2605 2, 2, 2, 2, 2, 3, 2, 2, 2, 2,
2606 2, 2, 2, 2, 2, 2, 1, 2, 0, 1,
2607 1, 2, 2
2608 };
2609
2610
2611 enum { YYENOMEM = -2 };
2612
2613 #define yyerrok (yyerrstatus = 0)
2614 #define yyclearin (yychar = YYEMPTY)
2615
2616 #define YYACCEPT goto yyacceptlab
2617 #define YYABORT goto yyabortlab
2618 #define YYERROR goto yyerrorlab
2619 #define YYNOMEM goto yyexhaustedlab
2620
2621
2622 #define YYRECOVERING() (!!yyerrstatus)
2623
2624 #define YYBACKUP(Token, Value) \
2625 do \
2626 if (yychar == YYEMPTY) \
2627 { \
2628 yychar = (Token); \
2629 yylval = (Value); \
2630 YYPOPSTACK (yylen); \
2631 yystate = *yyssp; \
2632 goto yybackup; \
2633 } \
2634 else \
2635 { \
2636 yyerror (YY_("syntax error: cannot back up")); \
2637 YYERROR; \
2638 } \
2639 while (0)
2640
2641 /* Backward compatibility with an undocumented macro.
2642 Use YYerror or YYUNDEF. */
2643 #define YYERRCODE YYUNDEF
2644
2645
2646 /* Enable debugging if requested. */
2647 #if YYDEBUG
2648
2649 # ifndef YYFPRINTF
2650 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2651 # define YYFPRINTF fprintf
2652 # endif
2653
2654 # define YYDPRINTF(Args) \
2655 do { \
2656 if (yydebug) \
2657 YYFPRINTF Args; \
2658 } while (0)
2659
2660
2661
2662
2663 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2664 do { \
2665 if (yydebug) \
2666 { \
2667 YYFPRINTF (stderr, "%s ", Title); \
2668 yy_symbol_print (stderr, \
2669 Kind, Value); \
2670 YYFPRINTF (stderr, "\n"); \
2671 } \
2672 } while (0)
2673
2674
2675 /*-----------------------------------.
2676 | Print this symbol's value on YYO. |
2677 `-----------------------------------*/
2678
2679 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)2680 yy_symbol_value_print (FILE *yyo,
2681 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2682 {
2683 FILE *yyoutput = yyo;
2684 YY_USE (yyoutput);
2685 if (!yyvaluep)
2686 return;
2687 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2688 YY_USE (yykind);
2689 YY_IGNORE_MAYBE_UNINITIALIZED_END
2690 }
2691
2692
2693 /*---------------------------.
2694 | Print this symbol on YYO. |
2695 `---------------------------*/
2696
2697 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)2698 yy_symbol_print (FILE *yyo,
2699 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2700 {
2701 YYFPRINTF (yyo, "%s %s (",
2702 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2703
2704 yy_symbol_value_print (yyo, yykind, yyvaluep);
2705 YYFPRINTF (yyo, ")");
2706 }
2707
2708 /*------------------------------------------------------------------.
2709 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2710 | TOP (included). |
2711 `------------------------------------------------------------------*/
2712
2713 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2714 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2715 {
2716 YYFPRINTF (stderr, "Stack now");
2717 for (; yybottom <= yytop; yybottom++)
2718 {
2719 int yybot = *yybottom;
2720 YYFPRINTF (stderr, " %d", yybot);
2721 }
2722 YYFPRINTF (stderr, "\n");
2723 }
2724
2725 # define YY_STACK_PRINT(Bottom, Top) \
2726 do { \
2727 if (yydebug) \
2728 yy_stack_print ((Bottom), (Top)); \
2729 } while (0)
2730
2731
2732 /*------------------------------------------------.
2733 | Report that the YYRULE is going to be reduced. |
2734 `------------------------------------------------*/
2735
2736 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)2737 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
2738 int yyrule)
2739 {
2740 int yylno = yyrline[yyrule];
2741 int yynrhs = yyr2[yyrule];
2742 int yyi;
2743 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2744 yyrule - 1, yylno);
2745 /* The symbols being reduced. */
2746 for (yyi = 0; yyi < yynrhs; yyi++)
2747 {
2748 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2749 yy_symbol_print (stderr,
2750 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2751 &yyvsp[(yyi + 1) - (yynrhs)]);
2752 YYFPRINTF (stderr, "\n");
2753 }
2754 }
2755
2756 # define YY_REDUCE_PRINT(Rule) \
2757 do { \
2758 if (yydebug) \
2759 yy_reduce_print (yyssp, yyvsp, Rule); \
2760 } while (0)
2761
2762 /* Nonzero means print parse trace. It is left uninitialized so that
2763 multiple parsers can coexist. */
2764 int yydebug;
2765 #else /* !YYDEBUG */
2766 # define YYDPRINTF(Args) ((void) 0)
2767 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2768 # define YY_STACK_PRINT(Bottom, Top)
2769 # define YY_REDUCE_PRINT(Rule)
2770 #endif /* !YYDEBUG */
2771
2772
2773 /* YYINITDEPTH -- initial size of the parser's stacks. */
2774 #ifndef YYINITDEPTH
2775 # define YYINITDEPTH 200
2776 #endif
2777
2778 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2779 if the built-in stack extension method is used).
2780
2781 Do not make this value too large; the results are undefined if
2782 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2783 evaluated with infinite-precision integer arithmetic. */
2784
2785 #ifndef YYMAXDEPTH
2786 # define YYMAXDEPTH 10000
2787 #endif
2788
2789
2790
2791
2792
2793
2794 /*-----------------------------------------------.
2795 | Release the memory associated to this symbol. |
2796 `-----------------------------------------------*/
2797
2798 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)2799 yydestruct (const char *yymsg,
2800 yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
2801 {
2802 YY_USE (yyvaluep);
2803 if (!yymsg)
2804 yymsg = "Deleting";
2805 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2806
2807 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2808 YY_USE (yykind);
2809 YY_IGNORE_MAYBE_UNINITIALIZED_END
2810 }
2811
2812
2813 /* Lookahead token kind. */
2814 int yychar;
2815
2816 /* The semantic value of the lookahead symbol. */
2817 YYSTYPE yylval;
2818 /* Number of syntax errors so far. */
2819 int yynerrs;
2820
2821
2822
2823
2824 /*----------.
2825 | yyparse. |
2826 `----------*/
2827
2828 int
yyparse(void)2829 yyparse (void)
2830 {
2831 yy_state_fast_t yystate = 0;
2832 /* Number of tokens to shift before error messages enabled. */
2833 int yyerrstatus = 0;
2834
2835 /* Refer to the stacks through separate pointers, to allow yyoverflow
2836 to reallocate them elsewhere. */
2837
2838 /* Their size. */
2839 YYPTRDIFF_T yystacksize = YYINITDEPTH;
2840
2841 /* The state stack: array, bottom, top. */
2842 yy_state_t yyssa[YYINITDEPTH];
2843 yy_state_t *yyss = yyssa;
2844 yy_state_t *yyssp = yyss;
2845
2846 /* The semantic value stack: array, bottom, top. */
2847 YYSTYPE yyvsa[YYINITDEPTH];
2848 YYSTYPE *yyvs = yyvsa;
2849 YYSTYPE *yyvsp = yyvs;
2850
2851 int yyn;
2852 /* The return value of yyparse. */
2853 int yyresult;
2854 /* Lookahead symbol kind. */
2855 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2856 /* The variables used to return semantic value and location from the
2857 action routines. */
2858 YYSTYPE yyval;
2859
2860
2861
2862 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2863
2864 /* The number of symbols on the RHS of the reduced rule.
2865 Keep to zero when no symbol should be popped. */
2866 int yylen = 0;
2867
2868 YYDPRINTF ((stderr, "Starting parse\n"));
2869
2870 yychar = YYEMPTY; /* Cause a token to be read. */
2871
2872 goto yysetstate;
2873
2874
2875 /*------------------------------------------------------------.
2876 | yynewstate -- push a new state, which is found in yystate. |
2877 `------------------------------------------------------------*/
2878 yynewstate:
2879 /* In all cases, when you get here, the value and location stacks
2880 have just been pushed. So pushing a state here evens the stacks. */
2881 yyssp++;
2882
2883
2884 /*--------------------------------------------------------------------.
2885 | yysetstate -- set current state (the top of the stack) to yystate. |
2886 `--------------------------------------------------------------------*/
2887 yysetstate:
2888 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2889 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2890 YY_IGNORE_USELESS_CAST_BEGIN
2891 *yyssp = YY_CAST (yy_state_t, yystate);
2892 YY_IGNORE_USELESS_CAST_END
2893 YY_STACK_PRINT (yyss, yyssp);
2894
2895 if (yyss + yystacksize - 1 <= yyssp)
2896 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2897 YYNOMEM;
2898 #else
2899 {
2900 /* Get the current used size of the three stacks, in elements. */
2901 YYPTRDIFF_T yysize = yyssp - yyss + 1;
2902
2903 # if defined yyoverflow
2904 {
2905 /* Give user a chance to reallocate the stack. Use copies of
2906 these so that the &'s don't force the real ones into
2907 memory. */
2908 yy_state_t *yyss1 = yyss;
2909 YYSTYPE *yyvs1 = yyvs;
2910
2911 /* Each stack pointer address is followed by the size of the
2912 data in use in that stack, in bytes. This used to be a
2913 conditional around just the two extra args, but that might
2914 be undefined if yyoverflow is a macro. */
2915 yyoverflow (YY_("memory exhausted"),
2916 &yyss1, yysize * YYSIZEOF (*yyssp),
2917 &yyvs1, yysize * YYSIZEOF (*yyvsp),
2918 &yystacksize);
2919 yyss = yyss1;
2920 yyvs = yyvs1;
2921 }
2922 # else /* defined YYSTACK_RELOCATE */
2923 /* Extend the stack our own way. */
2924 if (YYMAXDEPTH <= yystacksize)
2925 YYNOMEM;
2926 yystacksize *= 2;
2927 if (YYMAXDEPTH < yystacksize)
2928 yystacksize = YYMAXDEPTH;
2929
2930 {
2931 yy_state_t *yyss1 = yyss;
2932 union yyalloc *yyptr =
2933 YY_CAST (union yyalloc *,
2934 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2935 if (! yyptr)
2936 YYNOMEM;
2937 YYSTACK_RELOCATE (yyss_alloc, yyss);
2938 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2939 # undef YYSTACK_RELOCATE
2940 if (yyss1 != yyssa)
2941 YYSTACK_FREE (yyss1);
2942 }
2943 # endif
2944
2945 yyssp = yyss + yysize - 1;
2946 yyvsp = yyvs + yysize - 1;
2947
2948 YY_IGNORE_USELESS_CAST_BEGIN
2949 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2950 YY_CAST (long, yystacksize)));
2951 YY_IGNORE_USELESS_CAST_END
2952
2953 if (yyss + yystacksize - 1 <= yyssp)
2954 YYABORT;
2955 }
2956 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2957
2958
2959 if (yystate == YYFINAL)
2960 YYACCEPT;
2961
2962 goto yybackup;
2963
2964
2965 /*-----------.
2966 | yybackup. |
2967 `-----------*/
2968 yybackup:
2969 /* Do appropriate processing given the current state. Read a
2970 lookahead token if we need one and don't already have one. */
2971
2972 /* First try to decide what to do without reference to lookahead token. */
2973 yyn = yypact[yystate];
2974 if (yypact_value_is_default (yyn))
2975 goto yydefault;
2976
2977 /* Not known => get a lookahead token if don't already have one. */
2978
2979 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
2980 if (yychar == YYEMPTY)
2981 {
2982 YYDPRINTF ((stderr, "Reading a token\n"));
2983 yychar = yylex ();
2984 }
2985
2986 if (yychar <= YYEOF)
2987 {
2988 yychar = YYEOF;
2989 yytoken = YYSYMBOL_YYEOF;
2990 YYDPRINTF ((stderr, "Now at end of input.\n"));
2991 }
2992 else if (yychar == YYerror)
2993 {
2994 /* The scanner already issued an error message, process directly
2995 to error recovery. But do not keep the error token as
2996 lookahead, it is too special and may lead us to an endless
2997 loop in error recovery. */
2998 yychar = YYUNDEF;
2999 yytoken = YYSYMBOL_YYerror;
3000 goto yyerrlab1;
3001 }
3002 else
3003 {
3004 yytoken = YYTRANSLATE (yychar);
3005 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3006 }
3007
3008 /* If the proper action on seeing token YYTOKEN is to reduce or to
3009 detect an error, take that action. */
3010 yyn += yytoken;
3011 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3012 goto yydefault;
3013 yyn = yytable[yyn];
3014 if (yyn <= 0)
3015 {
3016 if (yytable_value_is_error (yyn))
3017 goto yyerrlab;
3018 yyn = -yyn;
3019 goto yyreduce;
3020 }
3021
3022 /* Count tokens shifted since error; after three, turn off error
3023 status. */
3024 if (yyerrstatus)
3025 yyerrstatus--;
3026
3027 /* Shift the lookahead token. */
3028 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3029 yystate = yyn;
3030 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3031 *++yyvsp = yylval;
3032 YY_IGNORE_MAYBE_UNINITIALIZED_END
3033
3034 /* Discard the shifted token. */
3035 yychar = YYEMPTY;
3036 goto yynewstate;
3037
3038
3039 /*-----------------------------------------------------------.
3040 | yydefault -- do the default action for the current state. |
3041 `-----------------------------------------------------------*/
3042 yydefault:
3043 yyn = yydefact[yystate];
3044 if (yyn == 0)
3045 goto yyerrlab;
3046 goto yyreduce;
3047
3048
3049 /*-----------------------------.
3050 | yyreduce -- do a reduction. |
3051 `-----------------------------*/
3052 yyreduce:
3053 /* yyn is the number of a rule to reduce with. */
3054 yylen = yyr2[yyn];
3055
3056 /* If YYLEN is nonzero, implement the default value of the action:
3057 '$$ = $1'.
3058
3059 Otherwise, the following line sets YYVAL to garbage.
3060 This behavior is undocumented and Bison
3061 users should not rely upon it. Assigning to YYVAL
3062 unconditionally makes the parser a bit smaller, and it avoids a
3063 GCC warning that YYVAL may be used uninitialized. */
3064 yyval = yyvsp[1-yylen];
3065
3066
3067 YY_REDUCE_PRINT (yyn);
3068 switch (yyn)
3069 {
3070 case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */
3071 #line 235 "util/configparser.y"
3072 {
3073 OUTYY(("\nP(force-toplevel)\n"));
3074 cfg_parser->started_toplevel = 0;
3075 }
3076 #line 3077 "util/configparser.c"
3077 break;
3078
3079 case 19: /* serverstart: VAR_SERVER */
3080 #line 242 "util/configparser.y"
3081 {
3082 OUTYY(("\nP(server:)\n"));
3083 cfg_parser->started_toplevel = 1;
3084 }
3085 #line 3086 "util/configparser.c"
3086 break;
3087
3088 case 286: /* stub_clause: stubstart contents_stub */
3089 #line 369 "util/configparser.y"
3090 {
3091 /* stub end */
3092 if(cfg_parser->cfg->stubs &&
3093 !cfg_parser->cfg->stubs->name)
3094 yyerror("stub-zone without name");
3095 }
3096 #line 3097 "util/configparser.c"
3097 break;
3098
3099 case 287: /* stubstart: VAR_STUB_ZONE */
3100 #line 377 "util/configparser.y"
3101 {
3102 struct config_stub* s;
3103 OUTYY(("\nP(stub_zone:)\n"));
3104 cfg_parser->started_toplevel = 1;
3105 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3106 if(s) {
3107 s->next = cfg_parser->cfg->stubs;
3108 cfg_parser->cfg->stubs = s;
3109 } else {
3110 yyerror("out of memory");
3111 }
3112 }
3113 #line 3114 "util/configparser.c"
3114 break;
3115
3116 case 298: /* forward_clause: forwardstart contents_forward */
3117 #line 396 "util/configparser.y"
3118 {
3119 /* forward end */
3120 if(cfg_parser->cfg->forwards &&
3121 !cfg_parser->cfg->forwards->name)
3122 yyerror("forward-zone without name");
3123 }
3124 #line 3125 "util/configparser.c"
3125 break;
3126
3127 case 299: /* forwardstart: VAR_FORWARD_ZONE */
3128 #line 404 "util/configparser.y"
3129 {
3130 struct config_stub* s;
3131 OUTYY(("\nP(forward_zone:)\n"));
3132 cfg_parser->started_toplevel = 1;
3133 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3134 if(s) {
3135 s->next = cfg_parser->cfg->forwards;
3136 cfg_parser->cfg->forwards = s;
3137 } else {
3138 yyerror("out of memory");
3139 }
3140 }
3141 #line 3142 "util/configparser.c"
3142 break;
3143
3144 case 309: /* view_clause: viewstart contents_view */
3145 #line 423 "util/configparser.y"
3146 {
3147 /* view end */
3148 if(cfg_parser->cfg->views &&
3149 !cfg_parser->cfg->views->name)
3150 yyerror("view without name");
3151 }
3152 #line 3153 "util/configparser.c"
3153 break;
3154
3155 case 310: /* viewstart: VAR_VIEW */
3156 #line 431 "util/configparser.y"
3157 {
3158 struct config_view* s;
3159 OUTYY(("\nP(view:)\n"));
3160 cfg_parser->started_toplevel = 1;
3161 s = (struct config_view*)calloc(1, sizeof(struct config_view));
3162 if(s) {
3163 s->next = cfg_parser->cfg->views;
3164 cfg_parser->cfg->views = s;
3165 } else {
3166 yyerror("out of memory");
3167 }
3168 }
3169 #line 3170 "util/configparser.c"
3170 break;
3171
3172 case 320: /* authstart: VAR_AUTH_ZONE */
3173 #line 450 "util/configparser.y"
3174 {
3175 struct config_auth* s;
3176 OUTYY(("\nP(auth_zone:)\n"));
3177 cfg_parser->started_toplevel = 1;
3178 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3179 if(s) {
3180 s->next = cfg_parser->cfg->auths;
3181 cfg_parser->cfg->auths = s;
3182 /* defaults for auth zone */
3183 s->for_downstream = 1;
3184 s->for_upstream = 1;
3185 s->fallback_enabled = 0;
3186 s->zonemd_check = 0;
3187 s->zonemd_reject_absence = 0;
3188 s->isrpz = 0;
3189 s->max_transfer_size = 0;
3190 s->max_transfer_time = 0;
3191 } else {
3192 yyerror("out of memory");
3193 }
3194 }
3195 #line 3196 "util/configparser.c"
3196 break;
3197
3198 case 335: /* rpz_tag: VAR_TAGS STRING_ARG */
3199 #line 481 "util/configparser.y"
3200 {
3201 uint8_t* bitlist;
3202 size_t len = 0;
3203 OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3204 bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3205 &len);
3206 free((yyvsp[0].str));
3207 if(!bitlist) {
3208 yyerror("could not parse tags, (define-tag them first)");
3209 }
3210 if(bitlist) {
3211 cfg_parser->cfg->auths->rpz_taglist = bitlist;
3212 cfg_parser->cfg->auths->rpz_taglistlen = len;
3213
3214 }
3215 }
3216 #line 3217 "util/configparser.c"
3217 break;
3218
3219 case 336: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */
3220 #line 500 "util/configparser.y"
3221 {
3222 OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3223 if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3224 strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3225 strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3226 yyerror("rpz-action-override action: expected nxdomain, "
3227 "nodata, passthru, drop, cname or disabled");
3228 free((yyvsp[0].str));
3229 cfg_parser->cfg->auths->rpz_action_override = NULL;
3230 }
3231 else {
3232 cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3233 }
3234 }
3235 #line 3236 "util/configparser.c"
3236 break;
3237
3238 case 337: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */
3239 #line 517 "util/configparser.y"
3240 {
3241 OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3242 free(cfg_parser->cfg->auths->rpz_cname);
3243 cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3244 }
3245 #line 3246 "util/configparser.c"
3246 break;
3247
3248 case 338: /* rpz_log: VAR_RPZ_LOG STRING_ARG */
3249 #line 525 "util/configparser.y"
3250 {
3251 OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3252 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3253 yyerror("expected yes or no.");
3254 else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3255 free((yyvsp[0].str));
3256 }
3257 #line 3258 "util/configparser.c"
3258 break;
3259
3260 case 339: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */
3261 #line 535 "util/configparser.y"
3262 {
3263 OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3264 free(cfg_parser->cfg->auths->rpz_log_name);
3265 cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3266 }
3267 #line 3268 "util/configparser.c"
3268 break;
3269
3270 case 340: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */
3271 #line 542 "util/configparser.y"
3272 {
3273 OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
3274 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3275 yyerror("expected yes or no.");
3276 else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
3277 free((yyvsp[0].str));
3278 }
3279 #line 3280 "util/configparser.c"
3280 break;
3281
3282 case 341: /* rpzstart: VAR_RPZ */
3283 #line 552 "util/configparser.y"
3284 {
3285 struct config_auth* s;
3286 OUTYY(("\nP(rpz:)\n"));
3287 cfg_parser->started_toplevel = 1;
3288 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3289 if(s) {
3290 s->next = cfg_parser->cfg->auths;
3291 cfg_parser->cfg->auths = s;
3292 /* defaults for RPZ auth zone */
3293 s->for_downstream = 0;
3294 s->for_upstream = 0;
3295 s->fallback_enabled = 0;
3296 s->isrpz = 1;
3297 s->max_transfer_size = 0;
3298 s->max_transfer_time = 0;
3299 } else {
3300 yyerror("out of memory");
3301 }
3302 }
3303 #line 3304 "util/configparser.c"
3304 break;
3305
3306 case 358: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */
3307 #line 580 "util/configparser.y"
3308 {
3309 OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3310 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3311 yyerror("number expected");
3312 else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3313 free((yyvsp[0].str));
3314 }
3315 #line 3316 "util/configparser.c"
3316 break;
3317
3318 case 359: /* server_verbosity: VAR_VERBOSITY STRING_ARG */
3319 #line 589 "util/configparser.y"
3320 {
3321 OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3322 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3323 yyerror("number expected");
3324 else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3325 free((yyvsp[0].str));
3326 }
3327 #line 3328 "util/configparser.c"
3328 break;
3329
3330 case 360: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */
3331 #line 598 "util/configparser.y"
3332 {
3333 OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3334 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3335 cfg_parser->cfg->stat_interval = 0;
3336 else if(atoi((yyvsp[0].str)) == 0)
3337 yyerror("number expected");
3338 else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3339 free((yyvsp[0].str));
3340 }
3341 #line 3342 "util/configparser.c"
3342 break;
3343
3344 case 361: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */
3345 #line 609 "util/configparser.y"
3346 {
3347 OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3348 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3349 yyerror("expected yes or no.");
3350 else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3351 free((yyvsp[0].str));
3352 }
3353 #line 3354 "util/configparser.c"
3354 break;
3355
3356 case 362: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */
3357 #line 618 "util/configparser.y"
3358 {
3359 OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3360 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3361 yyerror("expected yes or no.");
3362 else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3363 free((yyvsp[0].str));
3364 }
3365 #line 3366 "util/configparser.c"
3366 break;
3367
3368 case 363: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */
3369 #line 627 "util/configparser.y"
3370 {
3371 OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str)));
3372 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3373 yyerror("expected yes or no.");
3374 else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0);
3375 free((yyvsp[0].str));
3376 }
3377 #line 3378 "util/configparser.c"
3378 break;
3379
3380 case 364: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */
3381 #line 636 "util/configparser.y"
3382 {
3383 OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3384 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3385 yyerror("expected yes or no.");
3386 else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3387 free((yyvsp[0].str));
3388 }
3389 #line 3390 "util/configparser.c"
3390 break;
3391
3392 case 365: /* server_shm_key: VAR_SHM_KEY STRING_ARG */
3393 #line 645 "util/configparser.y"
3394 {
3395 OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3396 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3397 cfg_parser->cfg->shm_key = 0;
3398 else if(atoi((yyvsp[0].str)) == 0)
3399 yyerror("number expected");
3400 else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3401 free((yyvsp[0].str));
3402 }
3403 #line 3404 "util/configparser.c"
3404 break;
3405
3406 case 366: /* server_port: VAR_PORT STRING_ARG */
3407 #line 656 "util/configparser.y"
3408 {
3409 OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3410 if(atoi((yyvsp[0].str)) == 0)
3411 yyerror("port number expected");
3412 else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3413 free((yyvsp[0].str));
3414 }
3415 #line 3416 "util/configparser.c"
3416 break;
3417
3418 case 367: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */
3419 #line 665 "util/configparser.y"
3420 {
3421 #ifdef CLIENT_SUBNET
3422 OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3423 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3424 yyerror("out of memory");
3425 #else
3426 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3427 free((yyvsp[0].str));
3428 #endif
3429 }
3430 #line 3431 "util/configparser.c"
3431 break;
3432
3433 case 368: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */
3434 #line 677 "util/configparser.y"
3435 {
3436 #ifdef CLIENT_SUBNET
3437 OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3438 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3439 (yyvsp[0].str)))
3440 yyerror("out of memory");
3441 #else
3442 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3443 free((yyvsp[0].str));
3444 #endif
3445 }
3446 #line 3447 "util/configparser.c"
3447 break;
3448
3449 case 369: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */
3450 #line 691 "util/configparser.y"
3451 {
3452 #ifdef CLIENT_SUBNET
3453 OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3454 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3455 yyerror("expected yes or no.");
3456 else
3457 cfg_parser->cfg->client_subnet_always_forward =
3458 (strcmp((yyvsp[0].str), "yes")==0);
3459 #else
3460 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3461 #endif
3462 free((yyvsp[0].str));
3463 }
3464 #line 3465 "util/configparser.c"
3465 break;
3466
3467 case 370: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */
3468 #line 706 "util/configparser.y"
3469 {
3470 #ifdef CLIENT_SUBNET
3471 OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3472 OUTYY(("P(Deprecated option, ignoring)\n"));
3473 #else
3474 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3475 #endif
3476 free((yyvsp[0].str));
3477 }
3478 #line 3479 "util/configparser.c"
3479 break;
3480
3481 case 371: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */
3482 #line 717 "util/configparser.y"
3483 {
3484 #ifdef CLIENT_SUBNET
3485 OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3486 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3487 yyerror("IPv4 subnet length expected");
3488 else if (atoi((yyvsp[0].str)) > 32)
3489 cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3490 else if (atoi((yyvsp[0].str)) < 0)
3491 cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3492 else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3493 #else
3494 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3495 #endif
3496 free((yyvsp[0].str));
3497 }
3498 #line 3499 "util/configparser.c"
3499 break;
3500
3501 case 372: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */
3502 #line 734 "util/configparser.y"
3503 {
3504 #ifdef CLIENT_SUBNET
3505 OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3506 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3507 yyerror("Ipv6 subnet length expected");
3508 else if (atoi((yyvsp[0].str)) > 128)
3509 cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3510 else if (atoi((yyvsp[0].str)) < 0)
3511 cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3512 else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3513 #else
3514 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3515 #endif
3516 free((yyvsp[0].str));
3517 }
3518 #line 3519 "util/configparser.c"
3519 break;
3520
3521 case 373: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */
3522 #line 751 "util/configparser.y"
3523 {
3524 #ifdef CLIENT_SUBNET
3525 OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3526 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3527 yyerror("IPv4 subnet length expected");
3528 else if (atoi((yyvsp[0].str)) > 32)
3529 cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3530 else if (atoi((yyvsp[0].str)) < 0)
3531 cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3532 else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3533 #else
3534 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3535 #endif
3536 free((yyvsp[0].str));
3537 }
3538 #line 3539 "util/configparser.c"
3539 break;
3540
3541 case 374: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */
3542 #line 768 "util/configparser.y"
3543 {
3544 #ifdef CLIENT_SUBNET
3545 OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3546 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3547 yyerror("Ipv6 subnet length expected");
3548 else if (atoi((yyvsp[0].str)) > 128)
3549 cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3550 else if (atoi((yyvsp[0].str)) < 0)
3551 cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3552 else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3553 #else
3554 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3555 #endif
3556 free((yyvsp[0].str));
3557 }
3558 #line 3559 "util/configparser.c"
3559 break;
3560
3561 case 375: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */
3562 #line 785 "util/configparser.y"
3563 {
3564 #ifdef CLIENT_SUBNET
3565 OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3566 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3567 yyerror("IPv4 ECS tree size expected");
3568 else if (atoi((yyvsp[0].str)) < 0)
3569 cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3570 else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3571 #else
3572 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3573 #endif
3574 free((yyvsp[0].str));
3575 }
3576 #line 3577 "util/configparser.c"
3577 break;
3578
3579 case 376: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */
3580 #line 800 "util/configparser.y"
3581 {
3582 #ifdef CLIENT_SUBNET
3583 OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3584 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3585 yyerror("IPv6 ECS tree size expected");
3586 else if (atoi((yyvsp[0].str)) < 0)
3587 cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3588 else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3589 #else
3590 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3591 #endif
3592 free((yyvsp[0].str));
3593 }
3594 #line 3595 "util/configparser.c"
3595 break;
3596
3597 case 377: /* server_interface: VAR_INTERFACE STRING_ARG */
3598 #line 815 "util/configparser.y"
3599 {
3600 OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3601 if(cfg_parser->cfg->num_ifs == 0)
3602 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3603 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3604 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3605 if(!cfg_parser->cfg->ifs)
3606 yyerror("out of memory");
3607 else
3608 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3609 }
3610 #line 3611 "util/configparser.c"
3611 break;
3612
3613 case 378: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */
3614 #line 828 "util/configparser.y"
3615 {
3616 OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3617 if(cfg_parser->cfg->num_out_ifs == 0)
3618 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3619 else cfg_parser->cfg->out_ifs = realloc(
3620 cfg_parser->cfg->out_ifs,
3621 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3622 if(!cfg_parser->cfg->out_ifs)
3623 yyerror("out of memory");
3624 else
3625 cfg_parser->cfg->out_ifs[
3626 cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3627 }
3628 #line 3629 "util/configparser.c"
3629 break;
3630
3631 case 379: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */
3632 #line 843 "util/configparser.y"
3633 {
3634 OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3635 if(atoi((yyvsp[0].str)) == 0)
3636 yyerror("number expected");
3637 else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3638 free((yyvsp[0].str));
3639 }
3640 #line 3641 "util/configparser.c"
3641 break;
3642
3643 case 380: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */
3644 #line 852 "util/configparser.y"
3645 {
3646 OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3647 if(!cfg_mark_ports((yyvsp[0].str), 1,
3648 cfg_parser->cfg->outgoing_avail_ports, 65536))
3649 yyerror("port number or range (\"low-high\") expected");
3650 free((yyvsp[0].str));
3651 }
3652 #line 3653 "util/configparser.c"
3653 break;
3654
3655 case 381: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */
3656 #line 861 "util/configparser.y"
3657 {
3658 OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3659 if(!cfg_mark_ports((yyvsp[0].str), 0,
3660 cfg_parser->cfg->outgoing_avail_ports, 65536))
3661 yyerror("port number or range (\"low-high\") expected");
3662 free((yyvsp[0].str));
3663 }
3664 #line 3665 "util/configparser.c"
3665 break;
3666
3667 case 382: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */
3668 #line 870 "util/configparser.y"
3669 {
3670 OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3671 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3672 yyerror("number expected");
3673 else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3674 free((yyvsp[0].str));
3675 }
3676 #line 3677 "util/configparser.c"
3677 break;
3678
3679 case 383: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */
3680 #line 879 "util/configparser.y"
3681 {
3682 OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3683 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3684 yyerror("number expected");
3685 else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3686 free((yyvsp[0].str));
3687 }
3688 #line 3689 "util/configparser.c"
3689 break;
3690
3691 case 384: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */
3692 #line 888 "util/configparser.y"
3693 {
3694 OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3695 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3696 yyerror("expected yes or no.");
3697 else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3698 free((yyvsp[0].str));
3699 }
3700 #line 3701 "util/configparser.c"
3701 break;
3702
3703 case 385: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */
3704 #line 897 "util/configparser.y"
3705 {
3706 OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
3707 free(cfg_parser->cfg->if_automatic_ports);
3708 cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
3709 }
3710 #line 3711 "util/configparser.c"
3711 break;
3712
3713 case 386: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */
3714 #line 904 "util/configparser.y"
3715 {
3716 OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3717 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3718 yyerror("expected yes or no.");
3719 else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3720 free((yyvsp[0].str));
3721 }
3722 #line 3723 "util/configparser.c"
3723 break;
3724
3725 case 387: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */
3726 #line 913 "util/configparser.y"
3727 {
3728 OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3729 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3730 yyerror("expected yes or no.");
3731 else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3732 free((yyvsp[0].str));
3733 }
3734 #line 3735 "util/configparser.c"
3735 break;
3736
3737 case 388: /* server_do_nat64: VAR_DO_NAT64 STRING_ARG */
3738 #line 922 "util/configparser.y"
3739 {
3740 OUTYY(("P(server_do_nat64:%s)\n", (yyvsp[0].str)));
3741 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3742 yyerror("expected yes or no.");
3743 else cfg_parser->cfg->do_nat64 = (strcmp((yyvsp[0].str), "yes")==0);
3744 free((yyvsp[0].str));
3745 }
3746 #line 3747 "util/configparser.c"
3747 break;
3748
3749 case 389: /* server_do_udp: VAR_DO_UDP STRING_ARG */
3750 #line 931 "util/configparser.y"
3751 {
3752 OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3753 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3754 yyerror("expected yes or no.");
3755 else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3756 free((yyvsp[0].str));
3757 }
3758 #line 3759 "util/configparser.c"
3759 break;
3760
3761 case 390: /* server_do_tcp: VAR_DO_TCP STRING_ARG */
3762 #line 940 "util/configparser.y"
3763 {
3764 OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3765 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3766 yyerror("expected yes or no.");
3767 else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3768 free((yyvsp[0].str));
3769 }
3770 #line 3771 "util/configparser.c"
3771 break;
3772
3773 case 391: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */
3774 #line 949 "util/configparser.y"
3775 {
3776 OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3777 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3778 yyerror("expected yes or no.");
3779 else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3780 free((yyvsp[0].str));
3781 }
3782 #line 3783 "util/configparser.c"
3783 break;
3784
3785 case 392: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */
3786 #line 958 "util/configparser.y"
3787 {
3788 OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
3789 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3790 yyerror("expected yes or no.");
3791 else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3792 free((yyvsp[0].str));
3793 }
3794 #line 3795 "util/configparser.c"
3795 break;
3796
3797 case 393: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */
3798 #line 967 "util/configparser.y"
3799 {
3800 OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
3801 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3802 yyerror("number expected");
3803 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
3804 free((yyvsp[0].str));
3805 }
3806 #line 3807 "util/configparser.c"
3807 break;
3808
3809 case 394: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */
3810 #line 976 "util/configparser.y"
3811 {
3812 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
3813 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3814 yyerror("number expected");
3815 else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
3816 free((yyvsp[0].str));
3817 }
3818 #line 3819 "util/configparser.c"
3819 break;
3820
3821 case 395: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */
3822 #line 985 "util/configparser.y"
3823 {
3824 OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
3825 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3826 yyerror("number expected");
3827 else if (atoi((yyvsp[0].str)) > 120000)
3828 cfg_parser->cfg->tcp_idle_timeout = 120000;
3829 else if (atoi((yyvsp[0].str)) < 1)
3830 cfg_parser->cfg->tcp_idle_timeout = 1;
3831 else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
3832 free((yyvsp[0].str));
3833 }
3834 #line 3835 "util/configparser.c"
3835 break;
3836
3837 case 396: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */
3838 #line 998 "util/configparser.y"
3839 {
3840 OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
3841 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3842 yyerror("number expected");
3843 else if (atoi((yyvsp[0].str)) < 1)
3844 cfg_parser->cfg->max_reuse_tcp_queries = 0;
3845 else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
3846 free((yyvsp[0].str));
3847 }
3848 #line 3849 "util/configparser.c"
3849 break;
3850
3851 case 397: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */
3852 #line 1009 "util/configparser.y"
3853 {
3854 OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
3855 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3856 yyerror("number expected");
3857 else if (atoi((yyvsp[0].str)) < 1)
3858 cfg_parser->cfg->tcp_reuse_timeout = 0;
3859 else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
3860 free((yyvsp[0].str));
3861 }
3862 #line 3863 "util/configparser.c"
3863 break;
3864
3865 case 398: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */
3866 #line 1020 "util/configparser.y"
3867 {
3868 OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
3869 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3870 yyerror("number expected");
3871 else if (atoi((yyvsp[0].str)) < 1)
3872 cfg_parser->cfg->tcp_auth_query_timeout = 0;
3873 else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
3874 free((yyvsp[0].str));
3875 }
3876 #line 3877 "util/configparser.c"
3877 break;
3878
3879 case 399: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */
3880 #line 1031 "util/configparser.y"
3881 {
3882 OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
3883 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3884 yyerror("expected yes or no.");
3885 else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
3886 free((yyvsp[0].str));
3887 }
3888 #line 3889 "util/configparser.c"
3889 break;
3890
3891 case 400: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */
3892 #line 1040 "util/configparser.y"
3893 {
3894 OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
3895 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3896 yyerror("number expected");
3897 else if (atoi((yyvsp[0].str)) > 6553500)
3898 cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
3899 else if (atoi((yyvsp[0].str)) < 1)
3900 cfg_parser->cfg->tcp_keepalive_timeout = 0;
3901 else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
3902 free((yyvsp[0].str));
3903 }
3904 #line 3905 "util/configparser.c"
3905 break;
3906
3907 case 401: /* server_sock_queue_timeout: VAR_SOCK_QUEUE_TIMEOUT STRING_ARG */
3908 #line 1053 "util/configparser.y"
3909 {
3910 OUTYY(("P(server_sock_queue_timeout:%s)\n", (yyvsp[0].str)));
3911 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3912 yyerror("number expected");
3913 else if (atoi((yyvsp[0].str)) > 6553500)
3914 cfg_parser->cfg->sock_queue_timeout = 6553500;
3915 else if (atoi((yyvsp[0].str)) < 1)
3916 cfg_parser->cfg->sock_queue_timeout = 0;
3917 else cfg_parser->cfg->sock_queue_timeout = atoi((yyvsp[0].str));
3918 free((yyvsp[0].str));
3919 }
3920 #line 3921 "util/configparser.c"
3921 break;
3922
3923 case 402: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */
3924 #line 1066 "util/configparser.y"
3925 {
3926 OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
3927 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3928 yyerror("expected yes or no.");
3929 else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3930 free((yyvsp[0].str));
3931 }
3932 #line 3933 "util/configparser.c"
3933 break;
3934
3935 case 403: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */
3936 #line 1075 "util/configparser.y"
3937 {
3938 OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
3939 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3940 yyerror("expected yes or no.");
3941 else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3942 free((yyvsp[0].str));
3943 }
3944 #line 3945 "util/configparser.c"
3945 break;
3946
3947 case 404: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */
3948 #line 1084 "util/configparser.y"
3949 {
3950 OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
3951 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3952 yyerror("expected yes or no.");
3953 else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3954 free((yyvsp[0].str));
3955 }
3956 #line 3957 "util/configparser.c"
3957 break;
3958
3959 case 405: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */
3960 #line 1093 "util/configparser.y"
3961 {
3962 OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
3963 free(cfg_parser->cfg->ssl_service_key);
3964 cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
3965 }
3966 #line 3967 "util/configparser.c"
3967 break;
3968
3969 case 406: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */
3970 #line 1100 "util/configparser.y"
3971 {
3972 OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
3973 free(cfg_parser->cfg->ssl_service_pem);
3974 cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
3975 }
3976 #line 3977 "util/configparser.c"
3977 break;
3978
3979 case 407: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */
3980 #line 1107 "util/configparser.y"
3981 {
3982 OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
3983 if(atoi((yyvsp[0].str)) == 0)
3984 yyerror("port number expected");
3985 else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
3986 free((yyvsp[0].str));
3987 }
3988 #line 3989 "util/configparser.c"
3989 break;
3990
3991 case 408: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */
3992 #line 1116 "util/configparser.y"
3993 {
3994 OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
3995 free(cfg_parser->cfg->tls_cert_bundle);
3996 cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
3997 }
3998 #line 3999 "util/configparser.c"
3999 break;
4000
4001 case 409: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */
4002 #line 1123 "util/configparser.y"
4003 {
4004 OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
4005 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4006 yyerror("expected yes or no.");
4007 else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
4008 free((yyvsp[0].str));
4009 }
4010 #line 4011 "util/configparser.c"
4011 break;
4012
4013 case 410: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */
4014 #line 1132 "util/configparser.y"
4015 {
4016 OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
4017 if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
4018 (yyvsp[0].str)))
4019 yyerror("out of memory");
4020 }
4021 #line 4022 "util/configparser.c"
4022 break;
4023
4024 case 411: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */
4025 #line 1140 "util/configparser.y"
4026 {
4027 OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
4028 free(cfg_parser->cfg->tls_ciphers);
4029 cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
4030 }
4031 #line 4032 "util/configparser.c"
4032 break;
4033
4034 case 412: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */
4035 #line 1147 "util/configparser.y"
4036 {
4037 OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
4038 free(cfg_parser->cfg->tls_ciphersuites);
4039 cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
4040 }
4041 #line 4042 "util/configparser.c"
4042 break;
4043
4044 case 413: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */
4045 #line 1154 "util/configparser.y"
4046 {
4047 OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
4048 if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
4049 (yyvsp[0].str)))
4050 yyerror("out of memory");
4051 }
4052 #line 4053 "util/configparser.c"
4053 break;
4054
4055 case 414: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */
4056 #line 1162 "util/configparser.y"
4057 {
4058 OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4059 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4060 yyerror("expected yes or no.");
4061 else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4062 free((yyvsp[0].str));
4063 }
4064 #line 4065 "util/configparser.c"
4065 break;
4066
4067 case 415: /* server_tls_protocols: VAR_TLS_PROTOCOLS STRING_ARG */
4068 #line 1171 "util/configparser.y"
4069 {
4070 OUTYY(("P(server_tls_protocols:%s)\n", (yyvsp[0].str)));
4071 if(!cfg_tls_protocols_is_valid((yyvsp[0].str)))
4072 yyerror("tls-protocols: valid values are 'TLSv1.2' and 'TLSv1.3'.");
4073 free(cfg_parser->cfg->tls_protocols);
4074 cfg_parser->cfg->tls_protocols = (yyvsp[0].str);
4075 }
4076 #line 4077 "util/configparser.c"
4077 break;
4078
4079 case 416: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */
4080 #line 1180 "util/configparser.y"
4081 {
4082 OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4083 if(atoi((yyvsp[0].str)) == 0)
4084 yyerror("port number expected");
4085 else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4086 free((yyvsp[0].str));
4087 }
4088 #line 4089 "util/configparser.c"
4089 break;
4090
4091 case 417: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */
4092 #line 1188 "util/configparser.y"
4093 {
4094 OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4095 free(cfg_parser->cfg->http_endpoint);
4096 if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4097 cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4098 if(cfg_parser->cfg->http_endpoint) {
4099 cfg_parser->cfg->http_endpoint[0] = '/';
4100 memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4101 strlen((yyvsp[0].str))+1);
4102 } else {
4103 yyerror("out of memory");
4104 }
4105 free((yyvsp[0].str));
4106 } else {
4107 cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4108 }
4109 }
4110 #line 4111 "util/configparser.c"
4111 break;
4112
4113 case 418: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */
4114 #line 1206 "util/configparser.y"
4115 {
4116 OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4117 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4118 yyerror("number expected");
4119 else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4120 free((yyvsp[0].str));
4121 }
4122 #line 4123 "util/configparser.c"
4123 break;
4124
4125 case 419: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */
4126 #line 1214 "util/configparser.y"
4127 {
4128 OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4129 if(!cfg_parse_memsize((yyvsp[0].str),
4130 &cfg_parser->cfg->http_query_buffer_size))
4131 yyerror("memory size expected");
4132 free((yyvsp[0].str));
4133 }
4134 #line 4135 "util/configparser.c"
4135 break;
4136
4137 case 420: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */
4138 #line 1222 "util/configparser.y"
4139 {
4140 OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4141 if(!cfg_parse_memsize((yyvsp[0].str),
4142 &cfg_parser->cfg->http_response_buffer_size))
4143 yyerror("memory size expected");
4144 free((yyvsp[0].str));
4145 }
4146 #line 4147 "util/configparser.c"
4147 break;
4148
4149 case 421: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */
4150 #line 1230 "util/configparser.y"
4151 {
4152 OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4153 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4154 yyerror("expected yes or no.");
4155 else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4156 free((yyvsp[0].str));
4157 }
4158 #line 4159 "util/configparser.c"
4159 break;
4160
4161 case 422: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */
4162 #line 1238 "util/configparser.y"
4163 {
4164 OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4165 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4166 yyerror("expected yes or no.");
4167 else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4168 free((yyvsp[0].str));
4169 }
4170 #line 4171 "util/configparser.c"
4171 break;
4172
4173 case 423: /* server_quic_port: VAR_QUIC_PORT STRING_ARG */
4174 #line 1246 "util/configparser.y"
4175 {
4176 OUTYY(("P(server_quic_port:%s)\n", (yyvsp[0].str)));
4177 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str),"0")!=0)
4178 yyerror("port number expected");
4179 else {
4180 cfg_parser->cfg->quic_port = atoi((yyvsp[0].str));
4181 #ifndef HAVE_NGTCP2
4182 if (cfg_parser->cfg->quic_port != 0)
4183 log_warn("%s:%d: Unbound is not compiled with "
4184 "ngtcp2. This is required to use DNS "
4185 "over QUIC.", cfg_parser->filename, cfg_parser->line);
4186 #endif
4187 }
4188 free((yyvsp[0].str));
4189 }
4190 #line 4191 "util/configparser.c"
4191 break;
4192
4193 case 424: /* server_quic_size: VAR_QUIC_SIZE STRING_ARG */
4194 #line 1262 "util/configparser.y"
4195 {
4196 OUTYY(("P(server_quic_size:%s)\n", (yyvsp[0].str)));
4197 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->quic_size))
4198 yyerror("memory size expected");
4199 free((yyvsp[0].str));
4200 }
4201 #line 4202 "util/configparser.c"
4202 break;
4203
4204 case 425: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */
4205 #line 1269 "util/configparser.y"
4206 {
4207 OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4208 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4209 yyerror("expected yes or no.");
4210 else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4211 free((yyvsp[0].str));
4212 }
4213 #line 4214 "util/configparser.c"
4214 break;
4215
4216 case 426: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */
4217 #line 1278 "util/configparser.y"
4218 {
4219 OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4220 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4221 yyerror("expected yes or no.");
4222 else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4223 free((yyvsp[0].str));
4224 }
4225 #line 4226 "util/configparser.c"
4226 break;
4227
4228 case 427: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */
4229 #line 1287 "util/configparser.y"
4230 {
4231 OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4232 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4233 yyerror("expected yes or no.");
4234 else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4235 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4236 if(strcmp((yyvsp[0].str), "yes") == 0)
4237 yyerror("no syslog services are available. "
4238 "(reconfigure and compile to add)");
4239 #endif
4240 free((yyvsp[0].str));
4241 }
4242 #line 4243 "util/configparser.c"
4243 break;
4244
4245 case 428: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */
4246 #line 1301 "util/configparser.y"
4247 {
4248 OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4249 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4250 yyerror("expected yes or no.");
4251 else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4252 free((yyvsp[0].str));
4253 }
4254 #line 4255 "util/configparser.c"
4255 break;
4256
4257 case 429: /* server_log_time_iso: VAR_LOG_TIME_ISO STRING_ARG */
4258 #line 1310 "util/configparser.y"
4259 {
4260 OUTYY(("P(server_log_time_iso:%s)\n", (yyvsp[0].str)));
4261 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4262 yyerror("expected yes or no.");
4263 else cfg_parser->cfg->log_time_iso = (strcmp((yyvsp[0].str), "yes")==0);
4264 free((yyvsp[0].str));
4265 }
4266 #line 4267 "util/configparser.c"
4267 break;
4268
4269 case 430: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */
4270 #line 1319 "util/configparser.y"
4271 {
4272 OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4273 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4274 yyerror("expected yes or no.");
4275 else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4276 free((yyvsp[0].str));
4277 }
4278 #line 4279 "util/configparser.c"
4279 break;
4280
4281 case 431: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */
4282 #line 1328 "util/configparser.y"
4283 {
4284 OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4285 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4286 yyerror("expected yes or no.");
4287 else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4288 free((yyvsp[0].str));
4289 }
4290 #line 4291 "util/configparser.c"
4291 break;
4292
4293 case 432: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */
4294 #line 1337 "util/configparser.y"
4295 {
4296 OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4297 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4298 yyerror("expected yes or no.");
4299 else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4300 free((yyvsp[0].str));
4301 }
4302 #line 4303 "util/configparser.c"
4303 break;
4304
4305 case 433: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */
4306 #line 1346 "util/configparser.y"
4307 {
4308 OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4309 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4310 yyerror("expected yes or no.");
4311 else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4312 free((yyvsp[0].str));
4313 }
4314 #line 4315 "util/configparser.c"
4315 break;
4316
4317 case 434: /* server_log_destaddr: VAR_LOG_DESTADDR STRING_ARG */
4318 #line 1355 "util/configparser.y"
4319 {
4320 OUTYY(("P(server_log_destaddr:%s)\n", (yyvsp[0].str)));
4321 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4322 yyerror("expected yes or no.");
4323 else cfg_parser->cfg->log_destaddr = (strcmp((yyvsp[0].str), "yes")==0);
4324 free((yyvsp[0].str));
4325 }
4326 #line 4327 "util/configparser.c"
4327 break;
4328
4329 case 435: /* server_log_thread_id: VAR_LOG_THREAD_ID STRING_ARG */
4330 #line 1364 "util/configparser.y"
4331 {
4332 OUTYY(("P(server_log_thread_id:%s)\n", (yyvsp[0].str)));
4333 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4334 yyerror("expected yes or no.");
4335 else cfg_parser->cfg->log_thread_id = (strcmp((yyvsp[0].str), "yes")==0);
4336 free((yyvsp[0].str));
4337 }
4338 #line 4339 "util/configparser.c"
4339 break;
4340
4341 case 436: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */
4342 #line 1373 "util/configparser.y"
4343 {
4344 OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4345 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4346 yyerror("expected yes or no.");
4347 else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4348 free((yyvsp[0].str));
4349 }
4350 #line 4351 "util/configparser.c"
4351 break;
4352
4353 case 437: /* server_chroot: VAR_CHROOT STRING_ARG */
4354 #line 1382 "util/configparser.y"
4355 {
4356 OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4357 free(cfg_parser->cfg->chrootdir);
4358 cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4359 }
4360 #line 4361 "util/configparser.c"
4361 break;
4362
4363 case 438: /* server_username: VAR_USERNAME STRING_ARG */
4364 #line 1389 "util/configparser.y"
4365 {
4366 OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4367 free(cfg_parser->cfg->username);
4368 cfg_parser->cfg->username = (yyvsp[0].str);
4369 }
4370 #line 4371 "util/configparser.c"
4371 break;
4372
4373 case 439: /* server_directory: VAR_DIRECTORY STRING_ARG */
4374 #line 1396 "util/configparser.y"
4375 {
4376 OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4377 free(cfg_parser->cfg->directory);
4378 cfg_parser->cfg->directory = (yyvsp[0].str);
4379 /* change there right away for includes relative to this */
4380 if((yyvsp[0].str)[0]) {
4381 char* d;
4382 #ifdef UB_ON_WINDOWS
4383 w_config_adjust_directory(cfg_parser->cfg);
4384 #endif
4385 d = cfg_parser->cfg->directory;
4386 /* adjust directory if we have already chroot,
4387 * like, we reread after sighup */
4388 if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4389 strncmp(d, cfg_parser->chroot, strlen(
4390 cfg_parser->chroot)) == 0)
4391 d += strlen(cfg_parser->chroot);
4392 if(d[0]) {
4393 if(chdir(d))
4394 log_err("cannot chdir to directory: %s (%s)",
4395 d, strerror(errno));
4396 }
4397 }
4398 }
4399 #line 4400 "util/configparser.c"
4400 break;
4401
4402 case 440: /* server_logfile: VAR_LOGFILE STRING_ARG */
4403 #line 1422 "util/configparser.y"
4404 {
4405 OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4406 free(cfg_parser->cfg->logfile);
4407 cfg_parser->cfg->logfile = (yyvsp[0].str);
4408 cfg_parser->cfg->use_syslog = 0;
4409 }
4410 #line 4411 "util/configparser.c"
4411 break;
4412
4413 case 441: /* server_pidfile: VAR_PIDFILE STRING_ARG */
4414 #line 1430 "util/configparser.y"
4415 {
4416 OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4417 free(cfg_parser->cfg->pidfile);
4418 cfg_parser->cfg->pidfile = (yyvsp[0].str);
4419 }
4420 #line 4421 "util/configparser.c"
4421 break;
4422
4423 case 442: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */
4424 #line 1437 "util/configparser.y"
4425 {
4426 OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4427 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4428 yyerror("out of memory");
4429 }
4430 #line 4431 "util/configparser.c"
4431 break;
4432
4433 case 443: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */
4434 #line 1444 "util/configparser.y"
4435 {
4436 OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4437 log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4438 free((yyvsp[0].str));
4439 }
4440 #line 4441 "util/configparser.c"
4441 break;
4442
4443 case 444: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */
4444 #line 1451 "util/configparser.y"
4445 {
4446 OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4447 log_warn("option dlv-anchor ignored: DLV is decommissioned");
4448 free((yyvsp[0].str));
4449 }
4450 #line 4451 "util/configparser.c"
4451 break;
4452
4453 case 445: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */
4454 #line 1458 "util/configparser.y"
4455 {
4456 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4457 if(!cfg_strlist_insert(&cfg_parser->cfg->
4458 auto_trust_anchor_file_list, (yyvsp[0].str)))
4459 yyerror("out of memory");
4460 }
4461 #line 4462 "util/configparser.c"
4462 break;
4463
4464 case 446: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */
4465 #line 1466 "util/configparser.y"
4466 {
4467 OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4468 if(!cfg_strlist_insert(&cfg_parser->cfg->
4469 trust_anchor_file_list, (yyvsp[0].str)))
4470 yyerror("out of memory");
4471 }
4472 #line 4473 "util/configparser.c"
4473 break;
4474
4475 case 447: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */
4476 #line 1474 "util/configparser.y"
4477 {
4478 OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4479 if(!cfg_strlist_insert(&cfg_parser->cfg->
4480 trusted_keys_file_list, (yyvsp[0].str)))
4481 yyerror("out of memory");
4482 }
4483 #line 4484 "util/configparser.c"
4484 break;
4485
4486 case 448: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */
4487 #line 1482 "util/configparser.y"
4488 {
4489 OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4490 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4491 yyerror("out of memory");
4492 }
4493 #line 4494 "util/configparser.c"
4494 break;
4495
4496 case 449: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */
4497 #line 1489 "util/configparser.y"
4498 {
4499 OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4500 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4501 yyerror("expected yes or no.");
4502 else
4503 cfg_parser->cfg->trust_anchor_signaling =
4504 (strcmp((yyvsp[0].str), "yes")==0);
4505 free((yyvsp[0].str));
4506 }
4507 #line 4508 "util/configparser.c"
4508 break;
4509
4510 case 450: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */
4511 #line 1500 "util/configparser.y"
4512 {
4513 OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4514 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4515 yyerror("expected yes or no.");
4516 else
4517 cfg_parser->cfg->root_key_sentinel =
4518 (strcmp((yyvsp[0].str), "yes")==0);
4519 free((yyvsp[0].str));
4520 }
4521 #line 4522 "util/configparser.c"
4522 break;
4523
4524 case 451: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */
4525 #line 1511 "util/configparser.y"
4526 {
4527 OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4528 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4529 yyerror("out of memory");
4530 }
4531 #line 4532 "util/configparser.c"
4532 break;
4533
4534 case 452: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */
4535 #line 1518 "util/configparser.y"
4536 {
4537 OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4538 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4539 yyerror("expected yes or no.");
4540 else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4541 free((yyvsp[0].str));
4542 }
4543 #line 4544 "util/configparser.c"
4544 break;
4545
4546 case 453: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */
4547 #line 1527 "util/configparser.y"
4548 {
4549 OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4550 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4551 yyerror("expected yes or no.");
4552 else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4553 free((yyvsp[0].str));
4554 }
4555 #line 4556 "util/configparser.c"
4556 break;
4557
4558 case 454: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */
4559 #line 1536 "util/configparser.y"
4560 {
4561 OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4562 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4563 yyerror("expected yes or no.");
4564 else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4565 free((yyvsp[0].str));
4566 }
4567 #line 4568 "util/configparser.c"
4568 break;
4569
4570 case 455: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */
4571 #line 1545 "util/configparser.y"
4572 {
4573 OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4574 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4575 yyerror("expected yes or no.");
4576 else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4577 free((yyvsp[0].str));
4578 }
4579 #line 4580 "util/configparser.c"
4580 break;
4581
4582 case 456: /* server_identity: VAR_IDENTITY STRING_ARG */
4583 #line 1554 "util/configparser.y"
4584 {
4585 OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4586 free(cfg_parser->cfg->identity);
4587 cfg_parser->cfg->identity = (yyvsp[0].str);
4588 }
4589 #line 4590 "util/configparser.c"
4590 break;
4591
4592 case 457: /* server_version: VAR_VERSION STRING_ARG */
4593 #line 1561 "util/configparser.y"
4594 {
4595 OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4596 free(cfg_parser->cfg->version);
4597 cfg_parser->cfg->version = (yyvsp[0].str);
4598 }
4599 #line 4600 "util/configparser.c"
4600 break;
4601
4602 case 458: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */
4603 #line 1568 "util/configparser.y"
4604 {
4605 OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4606 free(cfg_parser->cfg->http_user_agent);
4607 cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4608 }
4609 #line 4610 "util/configparser.c"
4610 break;
4611
4612 case 459: /* server_nsid: VAR_NSID STRING_ARG */
4613 #line 1575 "util/configparser.y"
4614 {
4615 OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4616 free(cfg_parser->cfg->nsid_cfg_str);
4617 cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4618 free(cfg_parser->cfg->nsid);
4619 cfg_parser->cfg->nsid = NULL;
4620 cfg_parser->cfg->nsid_len = 0;
4621 if (*(yyvsp[0].str) == 0)
4622 ; /* pass; empty string is not setting nsid */
4623 else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4624 (yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4625 yyerror("the NSID must be either a hex string or an "
4626 "ascii character string prepended with ascii_.");
4627 }
4628 #line 4629 "util/configparser.c"
4629 break;
4630
4631 case 460: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */
4632 #line 1591 "util/configparser.y"
4633 {
4634 OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4635 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4636 yyerror("buffer size expected");
4637 free((yyvsp[0].str));
4638 }
4639 #line 4640 "util/configparser.c"
4640 break;
4641
4642 case 461: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */
4643 #line 1599 "util/configparser.y"
4644 {
4645 OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4646 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4647 yyerror("buffer size expected");
4648 free((yyvsp[0].str));
4649 }
4650 #line 4651 "util/configparser.c"
4651 break;
4652
4653 case 462: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */
4654 #line 1607 "util/configparser.y"
4655 {
4656 OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4657 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4658 yyerror("expected yes or no.");
4659 else cfg_parser->cfg->so_reuseport =
4660 (strcmp((yyvsp[0].str), "yes")==0);
4661 free((yyvsp[0].str));
4662 }
4663 #line 4664 "util/configparser.c"
4664 break;
4665
4666 case 463: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */
4667 #line 1617 "util/configparser.y"
4668 {
4669 OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4670 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4671 yyerror("expected yes or no.");
4672 else cfg_parser->cfg->ip_transparent =
4673 (strcmp((yyvsp[0].str), "yes")==0);
4674 free((yyvsp[0].str));
4675 }
4676 #line 4677 "util/configparser.c"
4677 break;
4678
4679 case 464: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */
4680 #line 1627 "util/configparser.y"
4681 {
4682 OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4683 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4684 yyerror("expected yes or no.");
4685 else cfg_parser->cfg->ip_freebind =
4686 (strcmp((yyvsp[0].str), "yes")==0);
4687 free((yyvsp[0].str));
4688 }
4689 #line 4690 "util/configparser.c"
4690 break;
4691
4692 case 465: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */
4693 #line 1637 "util/configparser.y"
4694 {
4695 OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4696 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4697 yyerror("number expected");
4698 else if (atoi((yyvsp[0].str)) > 63)
4699 yyerror("value too large (max 63)");
4700 else if (atoi((yyvsp[0].str)) < 0)
4701 yyerror("value too small (min 0)");
4702 else
4703 cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4704 free((yyvsp[0].str));
4705 }
4706 #line 4707 "util/configparser.c"
4707 break;
4708
4709 case 466: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */
4710 #line 1651 "util/configparser.y"
4711 {
4712 OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4713 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4714 yyerror("memory size expected");
4715 free((yyvsp[0].str));
4716 }
4717 #line 4718 "util/configparser.c"
4718 break;
4719
4720 case 467: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */
4721 #line 1659 "util/configparser.y"
4722 {
4723 OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4724 if(atoi((yyvsp[0].str)) == 0)
4725 yyerror("number expected");
4726 else if (atoi((yyvsp[0].str)) < 12)
4727 yyerror("edns buffer size too small");
4728 else if (atoi((yyvsp[0].str)) > 65535)
4729 cfg_parser->cfg->edns_buffer_size = 65535;
4730 else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4731 free((yyvsp[0].str));
4732 }
4733 #line 4734 "util/configparser.c"
4734 break;
4735
4736 case 468: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */
4737 #line 1672 "util/configparser.y"
4738 {
4739 OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4740 if(atoi((yyvsp[0].str)) == 0)
4741 yyerror("number expected");
4742 else if (atoi((yyvsp[0].str)) < 4096)
4743 yyerror("message buffer size too small (use 4096)");
4744 else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4745 free((yyvsp[0].str));
4746 }
4747 #line 4748 "util/configparser.c"
4748 break;
4749
4750 case 469: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */
4751 #line 1683 "util/configparser.y"
4752 {
4753 OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4754 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4755 yyerror("memory size expected");
4756 free((yyvsp[0].str));
4757 }
4758 #line 4759 "util/configparser.c"
4759 break;
4760
4761 case 470: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */
4762 #line 1691 "util/configparser.y"
4763 {
4764 OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4765 if(atoi((yyvsp[0].str)) == 0) {
4766 yyerror("number expected");
4767 } else {
4768 cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4769 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4770 yyerror("must be a power of 2");
4771 }
4772 free((yyvsp[0].str));
4773 }
4774 #line 4775 "util/configparser.c"
4775 break;
4776
4777 case 471: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */
4778 #line 1704 "util/configparser.y"
4779 {
4780 OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4781 if(atoi((yyvsp[0].str)) == 0)
4782 yyerror("number expected");
4783 else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4784 free((yyvsp[0].str));
4785 }
4786 #line 4787 "util/configparser.c"
4787 break;
4788
4789 case 472: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */
4790 #line 1713 "util/configparser.y"
4791 {
4792 OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4793 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4794 yyerror("number expected");
4795 else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4796 free((yyvsp[0].str));
4797 }
4798 #line 4799 "util/configparser.c"
4799 break;
4800
4801 case 473: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */
4802 #line 1722 "util/configparser.y"
4803 {
4804 OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4805 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4806 yyerror("number expected");
4807 else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4808 free((yyvsp[0].str));
4809 }
4810 #line 4811 "util/configparser.c"
4811 break;
4812
4813 case 474: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */
4814 #line 1731 "util/configparser.y"
4815 {
4816 OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4817 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4818 yyerror("expected yes or no.");
4819 else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4820 free((yyvsp[0].str));
4821 }
4822 #line 4823 "util/configparser.c"
4823 break;
4824
4825 case 475: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */
4826 #line 1740 "util/configparser.y"
4827 {
4828 OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4829 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4830 yyerror("expected yes or no.");
4831 else cfg_parser->cfg->unblock_lan_zones =
4832 (strcmp((yyvsp[0].str), "yes")==0);
4833 free((yyvsp[0].str));
4834 }
4835 #line 4836 "util/configparser.c"
4836 break;
4837
4838 case 476: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */
4839 #line 1750 "util/configparser.y"
4840 {
4841 OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4842 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4843 yyerror("expected yes or no.");
4844 else cfg_parser->cfg->insecure_lan_zones =
4845 (strcmp((yyvsp[0].str), "yes")==0);
4846 free((yyvsp[0].str));
4847 }
4848 #line 4849 "util/configparser.c"
4849 break;
4850
4851 case 477: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */
4852 #line 1760 "util/configparser.y"
4853 {
4854 OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4855 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4856 yyerror("memory size expected");
4857 free((yyvsp[0].str));
4858 }
4859 #line 4860 "util/configparser.c"
4860 break;
4861
4862 case 478: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */
4863 #line 1768 "util/configparser.y"
4864 {
4865 OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4866 if(atoi((yyvsp[0].str)) == 0) {
4867 yyerror("number expected");
4868 } else {
4869 cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4870 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4871 yyerror("must be a power of 2");
4872 }
4873 free((yyvsp[0].str));
4874 }
4875 #line 4876 "util/configparser.c"
4876 break;
4877
4878 case 479: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */
4879 #line 1781 "util/configparser.y"
4880 {
4881 OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4882 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4883 yyerror("number expected");
4884 else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4885 free((yyvsp[0].str));
4886 }
4887 #line 4888 "util/configparser.c"
4888 break;
4889
4890 case 480: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */
4891 #line 1790 "util/configparser.y"
4892 {
4893 OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4894 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4895 "removed, use infra-host-ttl)", (yyvsp[0].str));
4896 free((yyvsp[0].str));
4897 }
4898 #line 4899 "util/configparser.c"
4899 break;
4900
4901 case 481: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */
4902 #line 1798 "util/configparser.y"
4903 {
4904 OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4905 if(atoi((yyvsp[0].str)) == 0)
4906 yyerror("number expected");
4907 else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4908 free((yyvsp[0].str));
4909 }
4910 #line 4911 "util/configparser.c"
4911 break;
4912
4913 case 482: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */
4914 #line 1807 "util/configparser.y"
4915 {
4916 OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4917 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4918 "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4919 free((yyvsp[0].str));
4920 }
4921 #line 4922 "util/configparser.c"
4922 break;
4923
4924 case 483: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */
4925 #line 1815 "util/configparser.y"
4926 {
4927 OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4928 if(atoi((yyvsp[0].str)) == 0) {
4929 yyerror("number expected");
4930 } else {
4931 cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4932 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4933 yyerror("must be a power of 2");
4934 }
4935 free((yyvsp[0].str));
4936 }
4937 #line 4938 "util/configparser.c"
4938 break;
4939
4940 case 484: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */
4941 #line 1828 "util/configparser.y"
4942 {
4943 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4944 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4945 yyerror("number expected");
4946 else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4947 free((yyvsp[0].str));
4948 }
4949 #line 4950 "util/configparser.c"
4950 break;
4951
4952 case 485: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */
4953 #line 1837 "util/configparser.y"
4954 {
4955 OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
4956 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4957 yyerror("number expected");
4958 else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
4959 free((yyvsp[0].str));
4960 }
4961 #line 4962 "util/configparser.c"
4962 break;
4963
4964 case 486: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */
4965 #line 1846 "util/configparser.y"
4966 {
4967 OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4968 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4969 yyerror("expected yes or no.");
4970 else cfg_parser->cfg->infra_keep_probing =
4971 (strcmp((yyvsp[0].str), "yes")==0);
4972 free((yyvsp[0].str));
4973 }
4974 #line 4975 "util/configparser.c"
4975 break;
4976
4977 case 487: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */
4978 #line 1856 "util/configparser.y"
4979 {
4980 OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4981 free(cfg_parser->cfg->target_fetch_policy);
4982 cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4983 }
4984 #line 4985 "util/configparser.c"
4985 break;
4986
4987 case 488: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */
4988 #line 1863 "util/configparser.y"
4989 {
4990 OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4991 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4992 yyerror("expected yes or no.");
4993 else cfg_parser->cfg->harden_short_bufsize =
4994 (strcmp((yyvsp[0].str), "yes")==0);
4995 free((yyvsp[0].str));
4996 }
4997 #line 4998 "util/configparser.c"
4998 break;
4999
5000 case 489: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */
5001 #line 1873 "util/configparser.y"
5002 {
5003 OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
5004 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5005 yyerror("expected yes or no.");
5006 else cfg_parser->cfg->harden_large_queries =
5007 (strcmp((yyvsp[0].str), "yes")==0);
5008 free((yyvsp[0].str));
5009 }
5010 #line 5011 "util/configparser.c"
5011 break;
5012
5013 case 490: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */
5014 #line 1883 "util/configparser.y"
5015 {
5016 OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
5017 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5018 yyerror("expected yes or no.");
5019 else cfg_parser->cfg->harden_glue =
5020 (strcmp((yyvsp[0].str), "yes")==0);
5021 free((yyvsp[0].str));
5022 }
5023 #line 5024 "util/configparser.c"
5024 break;
5025
5026 case 491: /* server_harden_unverified_glue: VAR_HARDEN_UNVERIFIED_GLUE STRING_ARG */
5027 #line 1893 "util/configparser.y"
5028 {
5029 OUTYY(("P(server_harden_unverified_glue:%s)\n", (yyvsp[0].str)));
5030 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5031 yyerror("expected yes or no.");
5032 else cfg_parser->cfg->harden_unverified_glue =
5033 (strcmp((yyvsp[0].str), "yes")==0);
5034 free((yyvsp[0].str));
5035 }
5036 #line 5037 "util/configparser.c"
5037 break;
5038
5039 case 492: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */
5040 #line 1903 "util/configparser.y"
5041 {
5042 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
5043 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5044 yyerror("expected yes or no.");
5045 else cfg_parser->cfg->harden_dnssec_stripped =
5046 (strcmp((yyvsp[0].str), "yes")==0);
5047 free((yyvsp[0].str));
5048 }
5049 #line 5050 "util/configparser.c"
5050 break;
5051
5052 case 493: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */
5053 #line 1913 "util/configparser.y"
5054 {
5055 OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
5056 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5057 yyerror("expected yes or no.");
5058 else cfg_parser->cfg->harden_below_nxdomain =
5059 (strcmp((yyvsp[0].str), "yes")==0);
5060 free((yyvsp[0].str));
5061 }
5062 #line 5063 "util/configparser.c"
5063 break;
5064
5065 case 494: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */
5066 #line 1923 "util/configparser.y"
5067 {
5068 OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
5069 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5070 yyerror("expected yes or no.");
5071 else cfg_parser->cfg->harden_referral_path =
5072 (strcmp((yyvsp[0].str), "yes")==0);
5073 free((yyvsp[0].str));
5074 }
5075 #line 5076 "util/configparser.c"
5076 break;
5077
5078 case 495: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */
5079 #line 1933 "util/configparser.y"
5080 {
5081 OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5082 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5083 yyerror("expected yes or no.");
5084 else cfg_parser->cfg->harden_algo_downgrade =
5085 (strcmp((yyvsp[0].str), "yes")==0);
5086 free((yyvsp[0].str));
5087 }
5088 #line 5089 "util/configparser.c"
5089 break;
5090
5091 case 496: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG */
5092 #line 1943 "util/configparser.y"
5093 {
5094 OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
5095 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5096 yyerror("expected yes or no.");
5097 else cfg_parser->cfg->harden_unknown_additional =
5098 (strcmp((yyvsp[0].str), "yes")==0);
5099 free((yyvsp[0].str));
5100 }
5101 #line 5102 "util/configparser.c"
5102 break;
5103
5104 case 497: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */
5105 #line 1953 "util/configparser.y"
5106 {
5107 OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5108 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5109 yyerror("expected yes or no.");
5110 else cfg_parser->cfg->use_caps_bits_for_id =
5111 (strcmp((yyvsp[0].str), "yes")==0);
5112 free((yyvsp[0].str));
5113 }
5114 #line 5115 "util/configparser.c"
5115 break;
5116
5117 case 498: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */
5118 #line 1963 "util/configparser.y"
5119 {
5120 OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5121 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5122 yyerror("out of memory");
5123 }
5124 #line 5125 "util/configparser.c"
5125 break;
5126
5127 case 499: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */
5128 #line 1970 "util/configparser.y"
5129 {
5130 OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5131 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5132 yyerror("out of memory");
5133 }
5134 #line 5135 "util/configparser.c"
5135 break;
5136
5137 case 500: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */
5138 #line 1977 "util/configparser.y"
5139 {
5140 OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5141 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5142 yyerror("out of memory");
5143 }
5144 #line 5145 "util/configparser.c"
5145 break;
5146
5147 case 501: /* server_prefetch: VAR_PREFETCH STRING_ARG */
5148 #line 1984 "util/configparser.y"
5149 {
5150 OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5151 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5152 yyerror("expected yes or no.");
5153 else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5154 free((yyvsp[0].str));
5155 }
5156 #line 5157 "util/configparser.c"
5157 break;
5158
5159 case 502: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */
5160 #line 1993 "util/configparser.y"
5161 {
5162 OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5163 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5164 yyerror("expected yes or no.");
5165 else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5166 free((yyvsp[0].str));
5167 }
5168 #line 5169 "util/configparser.c"
5169 break;
5170
5171 case 503: /* server_deny_any: VAR_DENY_ANY STRING_ARG */
5172 #line 2002 "util/configparser.y"
5173 {
5174 OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5175 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5176 yyerror("expected yes or no.");
5177 else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5178 free((yyvsp[0].str));
5179 }
5180 #line 5181 "util/configparser.c"
5181 break;
5182
5183 case 504: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */
5184 #line 2011 "util/configparser.y"
5185 {
5186 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5187 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5188 yyerror("number expected");
5189 else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5190 free((yyvsp[0].str));
5191 }
5192 #line 5193 "util/configparser.c"
5193 break;
5194
5195 case 505: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */
5196 #line 2020 "util/configparser.y"
5197 {
5198 OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5199 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5200 yyerror("out of memory");
5201 }
5202 #line 5203 "util/configparser.c"
5203 break;
5204
5205 case 506: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */
5206 #line 2027 "util/configparser.y"
5207 {
5208 OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5209 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5210 yyerror("expected yes or no.");
5211 else cfg_parser->cfg->donotquery_localhost =
5212 (strcmp((yyvsp[0].str), "yes")==0);
5213 free((yyvsp[0].str));
5214 }
5215 #line 5216 "util/configparser.c"
5216 break;
5217
5218 case 507: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */
5219 #line 2037 "util/configparser.y"
5220 {
5221 OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5222 validate_acl_action((yyvsp[0].str));
5223 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5224 yyerror("out of memory");
5225 }
5226 #line 5227 "util/configparser.c"
5227 break;
5228
5229 case 508: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */
5230 #line 2045 "util/configparser.y"
5231 {
5232 OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5233 validate_acl_action((yyvsp[0].str));
5234 if(!cfg_str2list_insert(
5235 &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5236 yyerror("out of memory");
5237 }
5238 #line 5239 "util/configparser.c"
5239 break;
5240
5241 case 509: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */
5242 #line 2054 "util/configparser.y"
5243 {
5244 OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5245 free(cfg_parser->cfg->module_conf);
5246 cfg_parser->cfg->module_conf = (yyvsp[0].str);
5247 }
5248 #line 5249 "util/configparser.c"
5249 break;
5250
5251 case 510: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */
5252 #line 2061 "util/configparser.y"
5253 {
5254 OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5255 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5256 cfg_parser->cfg->val_date_override = 0;
5257 } else if(strlen((yyvsp[0].str)) == 14) {
5258 cfg_parser->cfg->val_date_override =
5259 cfg_convert_timeval((yyvsp[0].str));
5260 if(!cfg_parser->cfg->val_date_override)
5261 yyerror("bad date/time specification");
5262 } else {
5263 if(atoi((yyvsp[0].str)) == 0)
5264 yyerror("number expected");
5265 cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5266 }
5267 free((yyvsp[0].str));
5268 }
5269 #line 5270 "util/configparser.c"
5270 break;
5271
5272 case 511: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */
5273 #line 2079 "util/configparser.y"
5274 {
5275 OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5276 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5277 cfg_parser->cfg->val_sig_skew_min = 0;
5278 } else {
5279 cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5280 if(!cfg_parser->cfg->val_sig_skew_min)
5281 yyerror("number expected");
5282 }
5283 free((yyvsp[0].str));
5284 }
5285 #line 5286 "util/configparser.c"
5286 break;
5287
5288 case 512: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */
5289 #line 2092 "util/configparser.y"
5290 {
5291 OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5292 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5293 cfg_parser->cfg->val_sig_skew_max = 0;
5294 } else {
5295 cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5296 if(!cfg_parser->cfg->val_sig_skew_max)
5297 yyerror("number expected");
5298 }
5299 free((yyvsp[0].str));
5300 }
5301 #line 5302 "util/configparser.c"
5302 break;
5303
5304 case 513: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */
5305 #line 2105 "util/configparser.y"
5306 {
5307 OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5308 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5309 cfg_parser->cfg->val_max_restart = 0;
5310 } else {
5311 cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5312 if(!cfg_parser->cfg->val_max_restart)
5313 yyerror("number expected");
5314 }
5315 free((yyvsp[0].str));
5316 }
5317 #line 5318 "util/configparser.c"
5318 break;
5319
5320 case 514: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */
5321 #line 2118 "util/configparser.y"
5322 {
5323 OUTYY(("P(server_cache_max_ttl:%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->max_ttl = atoi((yyvsp[0].str));
5327 free((yyvsp[0].str));
5328 }
5329 #line 5330 "util/configparser.c"
5330 break;
5331
5332 case 515: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */
5333 #line 2127 "util/configparser.y"
5334 {
5335 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5336 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5337 yyerror("number expected");
5338 else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5339 free((yyvsp[0].str));
5340 }
5341 #line 5342 "util/configparser.c"
5342 break;
5343
5344 case 516: /* server_cache_min_negative_ttl: VAR_CACHE_MIN_NEGATIVE_TTL STRING_ARG */
5345 #line 2136 "util/configparser.y"
5346 {
5347 OUTYY(("P(server_cache_min_negative_ttl:%s)\n", (yyvsp[0].str)));
5348 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5349 yyerror("number expected");
5350 else cfg_parser->cfg->min_negative_ttl = atoi((yyvsp[0].str));
5351 free((yyvsp[0].str));
5352 }
5353 #line 5354 "util/configparser.c"
5354 break;
5355
5356 case 517: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */
5357 #line 2145 "util/configparser.y"
5358 {
5359 OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5360 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5361 yyerror("number expected");
5362 else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5363 free((yyvsp[0].str));
5364 }
5365 #line 5366 "util/configparser.c"
5366 break;
5367
5368 case 518: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */
5369 #line 2154 "util/configparser.y"
5370 {
5371 OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5372 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5373 yyerror("number expected");
5374 else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5375 free((yyvsp[0].str));
5376 }
5377 #line 5378 "util/configparser.c"
5378 break;
5379
5380 case 519: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */
5381 #line 2163 "util/configparser.y"
5382 {
5383 OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5384 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5385 yyerror("expected yes or no.");
5386 else cfg_parser->cfg->val_clean_additional =
5387 (strcmp((yyvsp[0].str), "yes")==0);
5388 free((yyvsp[0].str));
5389 }
5390 #line 5391 "util/configparser.c"
5391 break;
5392
5393 case 520: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */
5394 #line 2173 "util/configparser.y"
5395 {
5396 OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5397 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5398 yyerror("expected yes or no.");
5399 else cfg_parser->cfg->val_permissive_mode =
5400 (strcmp((yyvsp[0].str), "yes")==0);
5401 free((yyvsp[0].str));
5402 }
5403 #line 5404 "util/configparser.c"
5404 break;
5405
5406 case 521: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */
5407 #line 2183 "util/configparser.y"
5408 {
5409 OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5410 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5411 yyerror("expected yes or no.");
5412 else
5413 cfg_parser->cfg->aggressive_nsec =
5414 (strcmp((yyvsp[0].str), "yes")==0);
5415 free((yyvsp[0].str));
5416 }
5417 #line 5418 "util/configparser.c"
5418 break;
5419
5420 case 522: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */
5421 #line 2194 "util/configparser.y"
5422 {
5423 OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5424 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5425 yyerror("expected yes or no.");
5426 else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5427 free((yyvsp[0].str));
5428 }
5429 #line 5430 "util/configparser.c"
5430 break;
5431
5432 case 523: /* server_disable_edns_do: VAR_DISABLE_EDNS_DO STRING_ARG */
5433 #line 2203 "util/configparser.y"
5434 {
5435 OUTYY(("P(server_disable_edns_do:%s)\n", (yyvsp[0].str)));
5436 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5437 yyerror("expected yes or no.");
5438 else cfg_parser->cfg->disable_edns_do = (strcmp((yyvsp[0].str), "yes")==0);
5439 free((yyvsp[0].str));
5440 }
5441 #line 5442 "util/configparser.c"
5442 break;
5443
5444 case 524: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */
5445 #line 2212 "util/configparser.y"
5446 {
5447 OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5448 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5449 yyerror("expected yes or no.");
5450 else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5451 free((yyvsp[0].str));
5452 }
5453 #line 5454 "util/configparser.c"
5454 break;
5455
5456 case 525: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */
5457 #line 2221 "util/configparser.y"
5458 {
5459 OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5460 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5461 yyerror("number expected");
5462 else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5463 free((yyvsp[0].str));
5464 }
5465 #line 5466 "util/configparser.c"
5466 break;
5467
5468 case 526: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */
5469 #line 2230 "util/configparser.y"
5470 {
5471 OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5472 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5473 yyerror("expected yes or no.");
5474 else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5475 free((yyvsp[0].str));
5476 }
5477 #line 5478 "util/configparser.c"
5478 break;
5479
5480 case 527: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */
5481 #line 2239 "util/configparser.y"
5482 {
5483 OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5484 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5485 yyerror("number expected");
5486 else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5487 free((yyvsp[0].str));
5488 }
5489 #line 5490 "util/configparser.c"
5490 break;
5491
5492 case 528: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */
5493 #line 2248 "util/configparser.y"
5494 {
5495 OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5496 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5497 yyerror("number expected");
5498 else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5499 free((yyvsp[0].str));
5500 }
5501 #line 5502 "util/configparser.c"
5502 break;
5503
5504 case 529: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */
5505 #line 2257 "util/configparser.y"
5506 {
5507 OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5508 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5509 yyerror("expected yes or no.");
5510 else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5511 free((yyvsp[0].str));
5512 }
5513 #line 5514 "util/configparser.c"
5514 break;
5515
5516 case 530: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */
5517 #line 2266 "util/configparser.y"
5518 {
5519 OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5520 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5521 yyerror("expected yes or no.");
5522 else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5523 free((yyvsp[0].str));
5524 }
5525 #line 5526 "util/configparser.c"
5526 break;
5527
5528 case 531: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */
5529 #line 2275 "util/configparser.y"
5530 {
5531 OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5532 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5533 yyerror("expected yes or no.");
5534 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5535 else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5536 if(fake_dsa)
5537 log_warn("test option fake_dsa is enabled");
5538 #endif
5539 free((yyvsp[0].str));
5540 }
5541 #line 5542 "util/configparser.c"
5542 break;
5543
5544 case 532: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */
5545 #line 2288 "util/configparser.y"
5546 {
5547 OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5548 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5549 yyerror("expected yes or no.");
5550 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5551 else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5552 if(fake_sha1)
5553 log_warn("test option fake_sha1 is enabled");
5554 #endif
5555 free((yyvsp[0].str));
5556 }
5557 #line 5558 "util/configparser.c"
5558 break;
5559
5560 case 533: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */
5561 #line 2301 "util/configparser.y"
5562 {
5563 OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5564 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5565 yyerror("number expected");
5566 else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5567 free((yyvsp[0].str));
5568 }
5569 #line 5570 "util/configparser.c"
5570 break;
5571
5572 case 534: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */
5573 #line 2310 "util/configparser.y"
5574 {
5575 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5576 free(cfg_parser->cfg->val_nsec3_key_iterations);
5577 cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5578 }
5579 #line 5580 "util/configparser.c"
5580 break;
5581
5582 case 535: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */
5583 #line 2317 "util/configparser.y"
5584 {
5585 OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5586 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5587 yyerror("expected yes or no.");
5588 else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5589 free((yyvsp[0].str));
5590 }
5591 #line 5592 "util/configparser.c"
5592 break;
5593
5594 case 536: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */
5595 #line 2326 "util/configparser.y"
5596 {
5597 OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5598 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5599 yyerror("number expected");
5600 else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5601 free((yyvsp[0].str));
5602 }
5603 #line 5604 "util/configparser.c"
5604 break;
5605
5606 case 537: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */
5607 #line 2335 "util/configparser.y"
5608 {
5609 OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5610 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5611 yyerror("number expected");
5612 else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5613 free((yyvsp[0].str));
5614 }
5615 #line 5616 "util/configparser.c"
5616 break;
5617
5618 case 538: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */
5619 #line 2344 "util/configparser.y"
5620 {
5621 OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5622 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5623 yyerror("number expected");
5624 else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5625 free((yyvsp[0].str));
5626 }
5627 #line 5628 "util/configparser.c"
5628 break;
5629
5630 case 539: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */
5631 #line 2353 "util/configparser.y"
5632 {
5633 OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5634 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5635 yyerror("expected yes or no.");
5636 else cfg_parser->cfg->permit_small_holddown =
5637 (strcmp((yyvsp[0].str), "yes")==0);
5638 free((yyvsp[0].str));
5639 }
5640 #line 5641 "util/configparser.c"
5641 break;
5642
5643 case 540: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */
5644 #line 2363 "util/configparser.y"
5645 {
5646 OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5647 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5648 yyerror("memory size expected");
5649 free((yyvsp[0].str));
5650 }
5651 #line 5652 "util/configparser.c"
5652 break;
5653
5654 case 541: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */
5655 #line 2371 "util/configparser.y"
5656 {
5657 OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5658 if(atoi((yyvsp[0].str)) == 0) {
5659 yyerror("number expected");
5660 } else {
5661 cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5662 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5663 yyerror("must be a power of 2");
5664 }
5665 free((yyvsp[0].str));
5666 }
5667 #line 5668 "util/configparser.c"
5668 break;
5669
5670 case 542: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */
5671 #line 2384 "util/configparser.y"
5672 {
5673 OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5674 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5675 yyerror("memory size expected");
5676 free((yyvsp[0].str));
5677 }
5678 #line 5679 "util/configparser.c"
5679 break;
5680
5681 case 543: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */
5682 #line 2392 "util/configparser.y"
5683 {
5684 OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5685 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5686 strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5687 strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5688 && strcmp((yyvsp[0].str), "typetransparent")!=0
5689 && strcmp((yyvsp[0].str), "always_transparent")!=0
5690 && strcmp((yyvsp[0].str), "block_a")!=0
5691 && strcmp((yyvsp[0].str), "block_aaaa")!=0
5692 && strcmp((yyvsp[0].str), "block_a_wdata")!=0
5693 && strcmp((yyvsp[0].str), "block_aaaa_wdata")!=0
5694 && strcmp((yyvsp[0].str), "always_refuse")!=0
5695 && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5696 && strcmp((yyvsp[0].str), "always_nodata")!=0
5697 && strcmp((yyvsp[0].str), "always_deny")!=0
5698 && strcmp((yyvsp[0].str), "always_null")!=0
5699 && strcmp((yyvsp[0].str), "noview")!=0
5700 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5701 && strcmp((yyvsp[0].str), "inform_redirect") != 0
5702 && strcmp((yyvsp[0].str), "ipset") != 0) {
5703 yyerror("local-zone type: expected static, deny, "
5704 "refuse, redirect, transparent, "
5705 "typetransparent, inform, inform_deny, "
5706 "inform_redirect, always_transparent, "
5707 "block_a, block_aaaa, "
5708 "block_a_wdata, block_aaaa_wdata, "
5709 "always_refuse, always_nxdomain, "
5710 "always_nodata, always_deny, always_null, "
5711 "noview, nodefault or ipset");
5712 free((yyvsp[-1].str));
5713 free((yyvsp[0].str));
5714 } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5715 if(!cfg_strlist_insert(&cfg_parser->cfg->
5716 local_zones_nodefault, (yyvsp[-1].str)))
5717 yyerror("out of memory");
5718 free((yyvsp[0].str));
5719 #ifdef USE_IPSET
5720 } else if(strcmp((yyvsp[0].str), "ipset")==0) {
5721 size_t len = strlen((yyvsp[-1].str));
5722 /* Make sure to add the trailing dot.
5723 * These are str compared to domain names. */
5724 if((yyvsp[-1].str)[len-1] != '.') {
5725 char* prev = (yyvsp[-1].str);
5726 if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5727 yyerror("out of memory");
5728 free(prev);
5729 } else {
5730 (yyvsp[-1].str)[len] = '.';
5731 (yyvsp[-1].str)[len+1] = 0;
5732 }
5733 }
5734 if(!cfg_strlist_insert(&cfg_parser->cfg->
5735 local_zones_ipset, (yyvsp[-1].str)))
5736 yyerror("out of memory");
5737 free((yyvsp[0].str));
5738 #endif
5739 } else {
5740 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5741 (yyvsp[-1].str), (yyvsp[0].str)))
5742 yyerror("out of memory");
5743 }
5744 }
5745 #line 5746 "util/configparser.c"
5746 break;
5747
5748 case 544: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */
5749 #line 2456 "util/configparser.y"
5750 {
5751 OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5752 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5753 yyerror("out of memory");
5754 }
5755 #line 5756 "util/configparser.c"
5756 break;
5757
5758 case 545: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */
5759 #line 2463 "util/configparser.y"
5760 {
5761 char* ptr;
5762 OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5763 ptr = cfg_ptr_reverse((yyvsp[0].str));
5764 free((yyvsp[0].str));
5765 if(ptr) {
5766 if(!cfg_strlist_insert(&cfg_parser->cfg->
5767 local_data, ptr))
5768 yyerror("out of memory");
5769 } else {
5770 yyerror("local-data-ptr could not be reversed");
5771 }
5772 }
5773 #line 5774 "util/configparser.c"
5774 break;
5775
5776 case 546: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */
5777 #line 2478 "util/configparser.y"
5778 {
5779 OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5780 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5781 yyerror("expected yes or no.");
5782 else cfg_parser->cfg->minimal_responses =
5783 (strcmp((yyvsp[0].str), "yes")==0);
5784 free((yyvsp[0].str));
5785 }
5786 #line 5787 "util/configparser.c"
5787 break;
5788
5789 case 547: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */
5790 #line 2488 "util/configparser.y"
5791 {
5792 OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5793 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5794 yyerror("expected yes or no.");
5795 else cfg_parser->cfg->rrset_roundrobin =
5796 (strcmp((yyvsp[0].str), "yes")==0);
5797 free((yyvsp[0].str));
5798 }
5799 #line 5800 "util/configparser.c"
5800 break;
5801
5802 case 548: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */
5803 #line 2498 "util/configparser.y"
5804 {
5805 OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5806 cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5807 free((yyvsp[0].str));
5808 }
5809 #line 5810 "util/configparser.c"
5810 break;
5811
5812 case 549: /* server_discard_timeout: VAR_DISCARD_TIMEOUT STRING_ARG */
5813 #line 2505 "util/configparser.y"
5814 {
5815 OUTYY(("P(server_discard_timeout:%s)\n", (yyvsp[0].str)));
5816 cfg_parser->cfg->discard_timeout = atoi((yyvsp[0].str));
5817 free((yyvsp[0].str));
5818 }
5819 #line 5820 "util/configparser.c"
5820 break;
5821
5822 case 550: /* server_wait_limit: VAR_WAIT_LIMIT STRING_ARG */
5823 #line 2512 "util/configparser.y"
5824 {
5825 OUTYY(("P(server_wait_limit:%s)\n", (yyvsp[0].str)));
5826 cfg_parser->cfg->wait_limit = atoi((yyvsp[0].str));
5827 free((yyvsp[0].str));
5828 }
5829 #line 5830 "util/configparser.c"
5830 break;
5831
5832 case 551: /* server_wait_limit_cookie: VAR_WAIT_LIMIT_COOKIE STRING_ARG */
5833 #line 2519 "util/configparser.y"
5834 {
5835 OUTYY(("P(server_wait_limit_cookie:%s)\n", (yyvsp[0].str)));
5836 cfg_parser->cfg->wait_limit_cookie = atoi((yyvsp[0].str));
5837 free((yyvsp[0].str));
5838 }
5839 #line 5840 "util/configparser.c"
5840 break;
5841
5842 case 552: /* server_wait_limit_netblock: VAR_WAIT_LIMIT_NETBLOCK STRING_ARG STRING_ARG */
5843 #line 2526 "util/configparser.y"
5844 {
5845 OUTYY(("P(server_wait_limit_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5846 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5847 yyerror("number expected");
5848 free((yyvsp[-1].str));
5849 free((yyvsp[0].str));
5850 } else {
5851 if(!cfg_str2list_insert(&cfg_parser->cfg->
5852 wait_limit_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5853 yyerror("out of memory");
5854 }
5855 }
5856 #line 5857 "util/configparser.c"
5857 break;
5858
5859 case 553: /* server_wait_limit_cookie_netblock: VAR_WAIT_LIMIT_COOKIE_NETBLOCK STRING_ARG STRING_ARG */
5860 #line 2540 "util/configparser.y"
5861 {
5862 OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5863 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5864 yyerror("number expected");
5865 free((yyvsp[-1].str));
5866 free((yyvsp[0].str));
5867 } else {
5868 if(!cfg_str2list_insert(&cfg_parser->cfg->
5869 wait_limit_cookie_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5870 yyerror("out of memory");
5871 }
5872 }
5873 #line 5874 "util/configparser.c"
5874 break;
5875
5876 case 554: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */
5877 #line 2554 "util/configparser.y"
5878 {
5879 OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5880 cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5881 free((yyvsp[0].str));
5882 }
5883 #line 5884 "util/configparser.c"
5884 break;
5885
5886 case 555: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */
5887 #line 2561 "util/configparser.y"
5888 {
5889 OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5890 free(cfg_parser->cfg->dns64_prefix);
5891 cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5892 }
5893 #line 5894 "util/configparser.c"
5894 break;
5895
5896 case 556: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */
5897 #line 2568 "util/configparser.y"
5898 {
5899 OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5900 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5901 yyerror("expected yes or no.");
5902 else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5903 free((yyvsp[0].str));
5904 }
5905 #line 5906 "util/configparser.c"
5906 break;
5907
5908 case 557: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */
5909 #line 2577 "util/configparser.y"
5910 {
5911 OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5912 if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5913 (yyvsp[0].str)))
5914 yyerror("out of memory");
5915 }
5916 #line 5917 "util/configparser.c"
5917 break;
5918
5919 case 558: /* server_nat64_prefix: VAR_NAT64_PREFIX STRING_ARG */
5920 #line 2585 "util/configparser.y"
5921 {
5922 OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
5923 free(cfg_parser->cfg->nat64_prefix);
5924 cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
5925 }
5926 #line 5927 "util/configparser.c"
5927 break;
5928
5929 case 559: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */
5930 #line 2592 "util/configparser.y"
5931 {
5932 char* p, *s = (yyvsp[0].str);
5933 OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5934 while((p=strsep(&s, " \t\n")) != NULL) {
5935 if(*p) {
5936 if(!config_add_tag(cfg_parser->cfg, p))
5937 yyerror("could not define-tag, "
5938 "out of memory");
5939 }
5940 }
5941 free((yyvsp[0].str));
5942 }
5943 #line 5944 "util/configparser.c"
5944 break;
5945
5946 case 560: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */
5947 #line 2606 "util/configparser.y"
5948 {
5949 size_t len = 0;
5950 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5951 &len);
5952 free((yyvsp[0].str));
5953 OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5954 if(!bitlist) {
5955 yyerror("could not parse tags, (define-tag them first)");
5956 free((yyvsp[-1].str));
5957 }
5958 if(bitlist) {
5959 if(!cfg_strbytelist_insert(
5960 &cfg_parser->cfg->local_zone_tags,
5961 (yyvsp[-1].str), bitlist, len)) {
5962 yyerror("out of memory");
5963 free((yyvsp[-1].str));
5964 }
5965 }
5966 }
5967 #line 5968 "util/configparser.c"
5968 break;
5969
5970 case 561: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */
5971 #line 2627 "util/configparser.y"
5972 {
5973 size_t len = 0;
5974 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5975 &len);
5976 free((yyvsp[0].str));
5977 OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5978 if(!bitlist) {
5979 yyerror("could not parse tags, (define-tag them first)");
5980 free((yyvsp[-1].str));
5981 }
5982 if(bitlist) {
5983 if(!cfg_strbytelist_insert(
5984 &cfg_parser->cfg->acl_tags,
5985 (yyvsp[-1].str), bitlist, len)) {
5986 yyerror("out of memory");
5987 free((yyvsp[-1].str));
5988 }
5989 }
5990 }
5991 #line 5992 "util/configparser.c"
5992 break;
5993
5994 case 562: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */
5995 #line 2648 "util/configparser.y"
5996 {
5997 OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5998 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5999 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6000 yyerror("out of memory");
6001 free((yyvsp[-2].str));
6002 free((yyvsp[-1].str));
6003 free((yyvsp[0].str));
6004 }
6005 }
6006 #line 6007 "util/configparser.c"
6007 break;
6008
6009 case 563: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */
6010 #line 2660 "util/configparser.y"
6011 {
6012 OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6013 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
6014 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6015 yyerror("out of memory");
6016 free((yyvsp[-2].str));
6017 free((yyvsp[-1].str));
6018 free((yyvsp[0].str));
6019 }
6020 }
6021 #line 6022 "util/configparser.c"
6022 break;
6023
6024 case 564: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */
6025 #line 2672 "util/configparser.y"
6026 {
6027 OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6028 if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
6029 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6030 yyerror("out of memory");
6031 free((yyvsp[-2].str));
6032 free((yyvsp[-1].str));
6033 free((yyvsp[0].str));
6034 }
6035 }
6036 #line 6037 "util/configparser.c"
6037 break;
6038
6039 case 565: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */
6040 #line 2684 "util/configparser.y"
6041 {
6042 OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6043 if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
6044 (yyvsp[-1].str), (yyvsp[0].str))) {
6045 yyerror("out of memory");
6046 }
6047 }
6048 #line 6049 "util/configparser.c"
6049 break;
6050
6051 case 566: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */
6052 #line 2693 "util/configparser.y"
6053 {
6054 size_t len = 0;
6055 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6056 &len);
6057 free((yyvsp[0].str));
6058 OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
6059 if(!bitlist) {
6060 yyerror("could not parse tags, (define-tag them first)");
6061 free((yyvsp[-1].str));
6062 }
6063 if(bitlist) {
6064 if(!cfg_strbytelist_insert(
6065 &cfg_parser->cfg->interface_tags,
6066 (yyvsp[-1].str), bitlist, len)) {
6067 yyerror("out of memory");
6068 free((yyvsp[-1].str));
6069 }
6070 }
6071 }
6072 #line 6073 "util/configparser.c"
6073 break;
6074
6075 case 567: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */
6076 #line 2714 "util/configparser.y"
6077 {
6078 OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6079 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
6080 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6081 yyerror("out of memory");
6082 free((yyvsp[-2].str));
6083 free((yyvsp[-1].str));
6084 free((yyvsp[0].str));
6085 }
6086 }
6087 #line 6088 "util/configparser.c"
6088 break;
6089
6090 case 568: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */
6091 #line 2726 "util/configparser.y"
6092 {
6093 OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6094 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
6095 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6096 yyerror("out of memory");
6097 free((yyvsp[-2].str));
6098 free((yyvsp[-1].str));
6099 free((yyvsp[0].str));
6100 }
6101 }
6102 #line 6103 "util/configparser.c"
6103 break;
6104
6105 case 569: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */
6106 #line 2738 "util/configparser.y"
6107 {
6108 OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6109 if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
6110 (yyvsp[-1].str), (yyvsp[0].str))) {
6111 yyerror("out of memory");
6112 }
6113 }
6114 #line 6115 "util/configparser.c"
6115 break;
6116
6117 case 570: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */
6118 #line 2747 "util/configparser.y"
6119 {
6120 size_t len = 0;
6121 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6122 &len);
6123 free((yyvsp[0].str));
6124 OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6125 if(!bitlist) {
6126 yyerror("could not parse tags, (define-tag them first)");
6127 free((yyvsp[-1].str));
6128 }
6129 if(bitlist) {
6130 if(!cfg_strbytelist_insert(
6131 &cfg_parser->cfg->respip_tags,
6132 (yyvsp[-1].str), bitlist, len)) {
6133 yyerror("out of memory");
6134 free((yyvsp[-1].str));
6135 }
6136 }
6137 }
6138 #line 6139 "util/configparser.c"
6139 break;
6140
6141 case 571: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */
6142 #line 2768 "util/configparser.y"
6143 {
6144 OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6145 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6146 yyerror("number expected");
6147 else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6148 free((yyvsp[0].str));
6149 }
6150 #line 6151 "util/configparser.c"
6151 break;
6152
6153 case 572: /* server_ip_ratelimit_cookie: VAR_IP_RATELIMIT_COOKIE STRING_ARG */
6154 #line 2777 "util/configparser.y"
6155 {
6156 OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", (yyvsp[0].str)));
6157 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6158 yyerror("number expected");
6159 else cfg_parser->cfg->ip_ratelimit_cookie = atoi((yyvsp[0].str));
6160 free((yyvsp[0].str));
6161 }
6162 #line 6163 "util/configparser.c"
6163 break;
6164
6165 case 573: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */
6166 #line 2786 "util/configparser.y"
6167 {
6168 OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6169 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6170 yyerror("number expected");
6171 else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6172 free((yyvsp[0].str));
6173 }
6174 #line 6175 "util/configparser.c"
6175 break;
6176
6177 case 574: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */
6178 #line 2795 "util/configparser.y"
6179 {
6180 OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6181 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6182 yyerror("memory size expected");
6183 free((yyvsp[0].str));
6184 }
6185 #line 6186 "util/configparser.c"
6186 break;
6187
6188 case 575: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */
6189 #line 2803 "util/configparser.y"
6190 {
6191 OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6192 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6193 yyerror("memory size expected");
6194 free((yyvsp[0].str));
6195 }
6196 #line 6197 "util/configparser.c"
6197 break;
6198
6199 case 576: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */
6200 #line 2811 "util/configparser.y"
6201 {
6202 OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6203 if(atoi((yyvsp[0].str)) == 0) {
6204 yyerror("number expected");
6205 } else {
6206 cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6207 if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6208 yyerror("must be a power of 2");
6209 }
6210 free((yyvsp[0].str));
6211 }
6212 #line 6213 "util/configparser.c"
6213 break;
6214
6215 case 577: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */
6216 #line 2824 "util/configparser.y"
6217 {
6218 OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6219 if(atoi((yyvsp[0].str)) == 0) {
6220 yyerror("number expected");
6221 } else {
6222 cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6223 if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6224 yyerror("must be a power of 2");
6225 }
6226 free((yyvsp[0].str));
6227 }
6228 #line 6229 "util/configparser.c"
6229 break;
6230
6231 case 578: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */
6232 #line 2837 "util/configparser.y"
6233 {
6234 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6235 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6236 yyerror("number expected");
6237 free((yyvsp[-1].str));
6238 free((yyvsp[0].str));
6239 } else {
6240 if(!cfg_str2list_insert(&cfg_parser->cfg->
6241 ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6242 yyerror("out of memory");
6243 }
6244 }
6245 #line 6246 "util/configparser.c"
6246 break;
6247
6248 case 579: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */
6249 #line 2851 "util/configparser.y"
6250 {
6251 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6252 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6253 yyerror("number expected");
6254 free((yyvsp[-1].str));
6255 free((yyvsp[0].str));
6256 } else {
6257 if(!cfg_str2list_insert(&cfg_parser->cfg->
6258 ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6259 yyerror("out of memory");
6260 }
6261 }
6262 #line 6263 "util/configparser.c"
6263 break;
6264
6265 case 580: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */
6266 #line 2865 "util/configparser.y"
6267 {
6268 OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6269 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6270 yyerror("number expected");
6271 else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6272 free((yyvsp[0].str));
6273 }
6274 #line 6275 "util/configparser.c"
6275 break;
6276
6277 case 581: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */
6278 #line 2874 "util/configparser.y"
6279 {
6280 OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6281 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6282 yyerror("number expected");
6283 else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6284 free((yyvsp[0].str));
6285 }
6286 #line 6287 "util/configparser.c"
6287 break;
6288
6289 case 582: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */
6290 #line 2883 "util/configparser.y"
6291 {
6292 OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6293 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6294 yyerror("expected yes or no.");
6295 else cfg_parser->cfg->ip_ratelimit_backoff =
6296 (strcmp((yyvsp[0].str), "yes")==0);
6297 free((yyvsp[0].str));
6298 }
6299 #line 6300 "util/configparser.c"
6300 break;
6301
6302 case 583: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */
6303 #line 2893 "util/configparser.y"
6304 {
6305 OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6306 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6307 yyerror("expected yes or no.");
6308 else cfg_parser->cfg->ratelimit_backoff =
6309 (strcmp((yyvsp[0].str), "yes")==0);
6310 free((yyvsp[0].str));
6311 }
6312 #line 6313 "util/configparser.c"
6313 break;
6314
6315 case 584: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */
6316 #line 2903 "util/configparser.y"
6317 {
6318 OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6319 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6320 yyerror("number expected");
6321 else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6322 free((yyvsp[0].str));
6323 }
6324 #line 6325 "util/configparser.c"
6325 break;
6326
6327 case 585: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */
6328 #line 2912 "util/configparser.y"
6329 {
6330 OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6331 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6332 yyerror("number expected");
6333 else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6334 free((yyvsp[0].str));
6335 }
6336 #line 6337 "util/configparser.c"
6337 break;
6338
6339 case 586: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */
6340 #line 2921 "util/configparser.y"
6341 {
6342 OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6343 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6344 yyerror("number expected");
6345 else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6346 free((yyvsp[0].str));
6347 }
6348 #line 6349 "util/configparser.c"
6349 break;
6350
6351 case 587: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */
6352 #line 2930 "util/configparser.y"
6353 {
6354 OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6355 free((yyvsp[0].str));
6356 }
6357 #line 6358 "util/configparser.c"
6358 break;
6359
6360 case 588: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */
6361 #line 2936 "util/configparser.y"
6362 {
6363 OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6364 if(atoi((yyvsp[0].str)) <= 0)
6365 yyerror("number expected");
6366 else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6367 free((yyvsp[0].str));
6368 }
6369 #line 6370 "util/configparser.c"
6370 break;
6371
6372 case 589: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */
6373 #line 2945 "util/configparser.y"
6374 {
6375 OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6376 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6377 yyerror("number expected");
6378 else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6379 free((yyvsp[0].str));
6380 }
6381 #line 6382 "util/configparser.c"
6382 break;
6383
6384 case 590: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */
6385 #line 2954 "util/configparser.y"
6386 {
6387 OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6388 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6389 yyerror("expected yes or no.");
6390 else cfg_parser->cfg->qname_minimisation =
6391 (strcmp((yyvsp[0].str), "yes")==0);
6392 free((yyvsp[0].str));
6393 }
6394 #line 6395 "util/configparser.c"
6395 break;
6396
6397 case 591: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */
6398 #line 2964 "util/configparser.y"
6399 {
6400 OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6401 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6402 yyerror("expected yes or no.");
6403 else cfg_parser->cfg->qname_minimisation_strict =
6404 (strcmp((yyvsp[0].str), "yes")==0);
6405 free((yyvsp[0].str));
6406 }
6407 #line 6408 "util/configparser.c"
6408 break;
6409
6410 case 592: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */
6411 #line 2974 "util/configparser.y"
6412 {
6413 OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6414 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6415 yyerror("expected yes or no.");
6416 else cfg_parser->cfg->pad_responses =
6417 (strcmp((yyvsp[0].str), "yes")==0);
6418 free((yyvsp[0].str));
6419 }
6420 #line 6421 "util/configparser.c"
6421 break;
6422
6423 case 593: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */
6424 #line 2984 "util/configparser.y"
6425 {
6426 OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6427 if(atoi((yyvsp[0].str)) == 0)
6428 yyerror("number expected");
6429 else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6430 free((yyvsp[0].str));
6431 }
6432 #line 6433 "util/configparser.c"
6433 break;
6434
6435 case 594: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */
6436 #line 2993 "util/configparser.y"
6437 {
6438 OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6439 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6440 yyerror("expected yes or no.");
6441 else cfg_parser->cfg->pad_queries =
6442 (strcmp((yyvsp[0].str), "yes")==0);
6443 free((yyvsp[0].str));
6444 }
6445 #line 6446 "util/configparser.c"
6446 break;
6447
6448 case 595: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */
6449 #line 3003 "util/configparser.y"
6450 {
6451 OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6452 if(atoi((yyvsp[0].str)) == 0)
6453 yyerror("number expected");
6454 else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6455 free((yyvsp[0].str));
6456 }
6457 #line 6458 "util/configparser.c"
6458 break;
6459
6460 case 596: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */
6461 #line 3012 "util/configparser.y"
6462 {
6463 #ifdef USE_IPSECMOD
6464 OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6465 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6466 yyerror("expected yes or no.");
6467 else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6468 #else
6469 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6470 #endif
6471 free((yyvsp[0].str));
6472 }
6473 #line 6474 "util/configparser.c"
6474 break;
6475
6476 case 597: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */
6477 #line 3025 "util/configparser.y"
6478 {
6479 #ifdef USE_IPSECMOD
6480 OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6481 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6482 yyerror("expected yes or no.");
6483 else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6484 #else
6485 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6486 #endif
6487 free((yyvsp[0].str));
6488 }
6489 #line 6490 "util/configparser.c"
6490 break;
6491
6492 case 598: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */
6493 #line 3038 "util/configparser.y"
6494 {
6495 #ifdef USE_IPSECMOD
6496 OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6497 free(cfg_parser->cfg->ipsecmod_hook);
6498 cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6499 #else
6500 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6501 free((yyvsp[0].str));
6502 #endif
6503 }
6504 #line 6505 "util/configparser.c"
6505 break;
6506
6507 case 599: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */
6508 #line 3050 "util/configparser.y"
6509 {
6510 #ifdef USE_IPSECMOD
6511 OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6512 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6513 yyerror("number expected");
6514 else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6515 free((yyvsp[0].str));
6516 #else
6517 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6518 free((yyvsp[0].str));
6519 #endif
6520 }
6521 #line 6522 "util/configparser.c"
6522 break;
6523
6524 case 600: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */
6525 #line 3064 "util/configparser.y"
6526 {
6527 #ifdef USE_IPSECMOD
6528 OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6529 if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6530 yyerror("out of memory");
6531 #else
6532 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6533 free((yyvsp[0].str));
6534 #endif
6535 }
6536 #line 6537 "util/configparser.c"
6537 break;
6538
6539 case 601: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */
6540 #line 3076 "util/configparser.y"
6541 {
6542 #ifdef USE_IPSECMOD
6543 OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6544 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6545 yyerror("expected yes or no.");
6546 else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6547 free((yyvsp[0].str));
6548 #else
6549 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6550 free((yyvsp[0].str));
6551 #endif
6552 }
6553 #line 6554 "util/configparser.c"
6554 break;
6555
6556 case 602: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */
6557 #line 3090 "util/configparser.y"
6558 {
6559 OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6560 if(!cfg_str2list_insert(
6561 &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6562 yyerror("out of memory");
6563 }
6564 #line 6565 "util/configparser.c"
6565 break;
6566
6567 case 603: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */
6568 #line 3098 "util/configparser.y"
6569 {
6570 OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6571 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6572 yyerror("option code expected");
6573 else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6574 yyerror("option code must be in interval [0, 65535]");
6575 else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6576 free((yyvsp[0].str));
6577 }
6578 #line 6579 "util/configparser.c"
6579 break;
6580
6581 case 604: /* server_ede: VAR_EDE STRING_ARG */
6582 #line 3109 "util/configparser.y"
6583 {
6584 OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6585 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6586 yyerror("expected yes or no.");
6587 else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6588 free((yyvsp[0].str));
6589 }
6590 #line 6591 "util/configparser.c"
6591 break;
6592
6593 case 605: /* server_dns_error_reporting: VAR_DNS_ERROR_REPORTING STRING_ARG */
6594 #line 3118 "util/configparser.y"
6595 {
6596 OUTYY(("P(server_dns_error_reporting:%s)\n", (yyvsp[0].str)));
6597 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6598 yyerror("expected yes or no.");
6599 else cfg_parser->cfg->dns_error_reporting = (strcmp((yyvsp[0].str), "yes")==0);
6600 free((yyvsp[0].str));
6601 }
6602 #line 6603 "util/configparser.c"
6603 break;
6604
6605 case 606: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */
6606 #line 3127 "util/configparser.y"
6607 {
6608 OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6609 if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6610 yyerror("out of memory");
6611 }
6612 #line 6613 "util/configparser.c"
6613 break;
6614
6615 case 607: /* stub_name: VAR_NAME STRING_ARG */
6616 #line 3134 "util/configparser.y"
6617 {
6618 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6619 if(cfg_parser->cfg->stubs->name)
6620 yyerror("stub name override, there must be one name "
6621 "for one stub-zone");
6622 free(cfg_parser->cfg->stubs->name);
6623 cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6624 }
6625 #line 6626 "util/configparser.c"
6626 break;
6627
6628 case 608: /* stub_host: VAR_STUB_HOST STRING_ARG */
6629 #line 3144 "util/configparser.y"
6630 {
6631 OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6632 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6633 yyerror("out of memory");
6634 }
6635 #line 6636 "util/configparser.c"
6636 break;
6637
6638 case 609: /* stub_addr: VAR_STUB_ADDR STRING_ARG */
6639 #line 3151 "util/configparser.y"
6640 {
6641 OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6642 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6643 yyerror("out of memory");
6644 }
6645 #line 6646 "util/configparser.c"
6646 break;
6647
6648 case 610: /* stub_first: VAR_STUB_FIRST STRING_ARG */
6649 #line 3158 "util/configparser.y"
6650 {
6651 OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6652 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6653 yyerror("expected yes or no.");
6654 else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6655 free((yyvsp[0].str));
6656 }
6657 #line 6658 "util/configparser.c"
6658 break;
6659
6660 case 611: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */
6661 #line 3167 "util/configparser.y"
6662 {
6663 OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6664 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6665 yyerror("expected yes or no.");
6666 else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6667 free((yyvsp[0].str));
6668 }
6669 #line 6670 "util/configparser.c"
6670 break;
6671
6672 case 612: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */
6673 #line 3176 "util/configparser.y"
6674 {
6675 OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6676 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6677 yyerror("expected yes or no.");
6678 else cfg_parser->cfg->stubs->ssl_upstream =
6679 (strcmp((yyvsp[0].str), "yes")==0);
6680 free((yyvsp[0].str));
6681 }
6682 #line 6683 "util/configparser.c"
6683 break;
6684
6685 case 613: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */
6686 #line 3186 "util/configparser.y"
6687 {
6688 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6689 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6690 yyerror("expected yes or no.");
6691 else cfg_parser->cfg->stubs->tcp_upstream =
6692 (strcmp((yyvsp[0].str), "yes")==0);
6693 free((yyvsp[0].str));
6694 }
6695 #line 6696 "util/configparser.c"
6696 break;
6697
6698 case 614: /* stub_prime: VAR_STUB_PRIME STRING_ARG */
6699 #line 3196 "util/configparser.y"
6700 {
6701 OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6702 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6703 yyerror("expected yes or no.");
6704 else cfg_parser->cfg->stubs->isprime =
6705 (strcmp((yyvsp[0].str), "yes")==0);
6706 free((yyvsp[0].str));
6707 }
6708 #line 6709 "util/configparser.c"
6709 break;
6710
6711 case 615: /* forward_name: VAR_NAME STRING_ARG */
6712 #line 3206 "util/configparser.y"
6713 {
6714 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6715 if(cfg_parser->cfg->forwards->name)
6716 yyerror("forward name override, there must be one "
6717 "name for one forward-zone");
6718 free(cfg_parser->cfg->forwards->name);
6719 cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6720 }
6721 #line 6722 "util/configparser.c"
6722 break;
6723
6724 case 616: /* forward_host: VAR_FORWARD_HOST STRING_ARG */
6725 #line 3216 "util/configparser.y"
6726 {
6727 OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6728 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6729 yyerror("out of memory");
6730 }
6731 #line 6732 "util/configparser.c"
6732 break;
6733
6734 case 617: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */
6735 #line 3223 "util/configparser.y"
6736 {
6737 OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6738 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6739 yyerror("out of memory");
6740 }
6741 #line 6742 "util/configparser.c"
6742 break;
6743
6744 case 618: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */
6745 #line 3230 "util/configparser.y"
6746 {
6747 OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6748 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6749 yyerror("expected yes or no.");
6750 else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6751 free((yyvsp[0].str));
6752 }
6753 #line 6754 "util/configparser.c"
6754 break;
6755
6756 case 619: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */
6757 #line 3239 "util/configparser.y"
6758 {
6759 OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6760 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6761 yyerror("expected yes or no.");
6762 else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6763 free((yyvsp[0].str));
6764 }
6765 #line 6766 "util/configparser.c"
6766 break;
6767
6768 case 620: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */
6769 #line 3248 "util/configparser.y"
6770 {
6771 OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6772 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6773 yyerror("expected yes or no.");
6774 else cfg_parser->cfg->forwards->ssl_upstream =
6775 (strcmp((yyvsp[0].str), "yes")==0);
6776 free((yyvsp[0].str));
6777 }
6778 #line 6779 "util/configparser.c"
6779 break;
6780
6781 case 621: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */
6782 #line 3258 "util/configparser.y"
6783 {
6784 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6785 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6786 yyerror("expected yes or no.");
6787 else cfg_parser->cfg->forwards->tcp_upstream =
6788 (strcmp((yyvsp[0].str), "yes")==0);
6789 free((yyvsp[0].str));
6790 }
6791 #line 6792 "util/configparser.c"
6792 break;
6793
6794 case 622: /* auth_name: VAR_NAME STRING_ARG */
6795 #line 3268 "util/configparser.y"
6796 {
6797 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6798 if(cfg_parser->cfg->auths->name)
6799 yyerror("auth name override, there must be one name "
6800 "for one auth-zone");
6801 free(cfg_parser->cfg->auths->name);
6802 cfg_parser->cfg->auths->name = (yyvsp[0].str);
6803 }
6804 #line 6805 "util/configparser.c"
6805 break;
6806
6807 case 623: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */
6808 #line 3278 "util/configparser.y"
6809 {
6810 OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6811 free(cfg_parser->cfg->auths->zonefile);
6812 cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6813 }
6814 #line 6815 "util/configparser.c"
6815 break;
6816
6817 case 624: /* auth_master: VAR_MASTER STRING_ARG */
6818 #line 3285 "util/configparser.y"
6819 {
6820 OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6821 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6822 yyerror("out of memory");
6823 }
6824 #line 6825 "util/configparser.c"
6825 break;
6826
6827 case 625: /* auth_url: VAR_URL STRING_ARG */
6828 #line 3292 "util/configparser.y"
6829 {
6830 OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6831 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6832 yyerror("out of memory");
6833 }
6834 #line 6835 "util/configparser.c"
6835 break;
6836
6837 case 626: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */
6838 #line 3299 "util/configparser.y"
6839 {
6840 OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6841 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6842 (yyvsp[0].str)))
6843 yyerror("out of memory");
6844 }
6845 #line 6846 "util/configparser.c"
6846 break;
6847
6848 case 627: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */
6849 #line 3307 "util/configparser.y"
6850 {
6851 OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6852 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6853 yyerror("expected yes or no.");
6854 else cfg_parser->cfg->auths->zonemd_check =
6855 (strcmp((yyvsp[0].str), "yes")==0);
6856 free((yyvsp[0].str));
6857 }
6858 #line 6859 "util/configparser.c"
6859 break;
6860
6861 case 628: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */
6862 #line 3317 "util/configparser.y"
6863 {
6864 OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6865 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6866 yyerror("expected yes or no.");
6867 else cfg_parser->cfg->auths->zonemd_reject_absence =
6868 (strcmp((yyvsp[0].str), "yes")==0);
6869 free((yyvsp[0].str));
6870 }
6871 #line 6872 "util/configparser.c"
6872 break;
6873
6874 case 629: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */
6875 #line 3327 "util/configparser.y"
6876 {
6877 OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6878 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6879 yyerror("expected yes or no.");
6880 else cfg_parser->cfg->auths->for_downstream =
6881 (strcmp((yyvsp[0].str), "yes")==0);
6882 free((yyvsp[0].str));
6883 }
6884 #line 6885 "util/configparser.c"
6885 break;
6886
6887 case 630: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */
6888 #line 3337 "util/configparser.y"
6889 {
6890 OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6891 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6892 yyerror("expected yes or no.");
6893 else cfg_parser->cfg->auths->for_upstream =
6894 (strcmp((yyvsp[0].str), "yes")==0);
6895 free((yyvsp[0].str));
6896 }
6897 #line 6898 "util/configparser.c"
6898 break;
6899
6900 case 631: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */
6901 #line 3347 "util/configparser.y"
6902 {
6903 OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6904 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6905 yyerror("expected yes or no.");
6906 else cfg_parser->cfg->auths->fallback_enabled =
6907 (strcmp((yyvsp[0].str), "yes")==0);
6908 free((yyvsp[0].str));
6909 }
6910 #line 6911 "util/configparser.c"
6911 break;
6912
6913 case 632: /* auth_max_transfer_size: VAR_MAX_TRANSFER_SIZE STRING_ARG */
6914 #line 3357 "util/configparser.y"
6915 {
6916 OUTYY(("P(max-transfer-size:%s)\n", (yyvsp[0].str)));
6917 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->auths->max_transfer_size))
6918 yyerror("memory size expected");
6919 free((yyvsp[0].str));
6920 }
6921 #line 6922 "util/configparser.c"
6922 break;
6923
6924 case 633: /* auth_max_transfer_time: VAR_MAX_TRANSFER_TIME STRING_ARG */
6925 #line 3365 "util/configparser.y"
6926 {
6927 OUTYY(("P(max-transfer-time:%s)\n", (yyvsp[0].str)));
6928 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6929 yyerror("number expected");
6930 else cfg_parser->cfg->auths->max_transfer_time = atoi((yyvsp[0].str));
6931 free((yyvsp[0].str));
6932 }
6933 #line 6934 "util/configparser.c"
6934 break;
6935
6936 case 634: /* view_name: VAR_NAME STRING_ARG */
6937 #line 3374 "util/configparser.y"
6938 {
6939 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6940 if(cfg_parser->cfg->views->name)
6941 yyerror("view name override, there must be one "
6942 "name for one view");
6943 free(cfg_parser->cfg->views->name);
6944 cfg_parser->cfg->views->name = (yyvsp[0].str);
6945 }
6946 #line 6947 "util/configparser.c"
6947 break;
6948
6949 case 635: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */
6950 #line 3384 "util/configparser.y"
6951 {
6952 OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6953 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6954 strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6955 strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6956 && strcmp((yyvsp[0].str), "typetransparent")!=0
6957 && strcmp((yyvsp[0].str), "always_transparent")!=0
6958 && strcmp((yyvsp[0].str), "always_refuse")!=0
6959 && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6960 && strcmp((yyvsp[0].str), "always_nodata")!=0
6961 && strcmp((yyvsp[0].str), "always_deny")!=0
6962 && strcmp((yyvsp[0].str), "always_null")!=0
6963 && strcmp((yyvsp[0].str), "noview")!=0
6964 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6965 && strcmp((yyvsp[0].str), "inform_redirect") != 0
6966 && strcmp((yyvsp[0].str), "ipset") != 0) {
6967 yyerror("local-zone type: expected static, deny, "
6968 "refuse, redirect, transparent, "
6969 "typetransparent, inform, inform_deny, "
6970 "inform_redirect, always_transparent, "
6971 "always_refuse, always_nxdomain, "
6972 "always_nodata, always_deny, always_null, "
6973 "noview, nodefault or ipset");
6974 free((yyvsp[-1].str));
6975 free((yyvsp[0].str));
6976 } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6977 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6978 local_zones_nodefault, (yyvsp[-1].str)))
6979 yyerror("out of memory");
6980 free((yyvsp[0].str));
6981 #ifdef USE_IPSET
6982 } else if(strcmp((yyvsp[0].str), "ipset")==0) {
6983 size_t len = strlen((yyvsp[-1].str));
6984 /* Make sure to add the trailing dot.
6985 * These are str compared to domain names. */
6986 if((yyvsp[-1].str)[len-1] != '.') {
6987 char* prev = (yyvsp[-1].str);
6988 if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
6989 yyerror("out of memory");
6990 free(prev);
6991 } else {
6992 (yyvsp[-1].str)[len] = '.';
6993 (yyvsp[-1].str)[len+1] = 0;
6994 }
6995 }
6996 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6997 local_zones_ipset, (yyvsp[-1].str)))
6998 yyerror("out of memory");
6999 free((yyvsp[0].str));
7000 #endif
7001 } else {
7002 if(!cfg_str2list_insert(
7003 &cfg_parser->cfg->views->local_zones,
7004 (yyvsp[-1].str), (yyvsp[0].str)))
7005 yyerror("out of memory");
7006 }
7007 }
7008 #line 7009 "util/configparser.c"
7009 break;
7010
7011 case 636: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */
7012 #line 3443 "util/configparser.y"
7013 {
7014 OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7015 validate_respip_action((yyvsp[0].str));
7016 if(!cfg_str2list_insert(
7017 &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
7018 yyerror("out of memory");
7019 }
7020 #line 7021 "util/configparser.c"
7021 break;
7022
7023 case 637: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */
7024 #line 3452 "util/configparser.y"
7025 {
7026 OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
7027 if(!cfg_str2list_insert(
7028 &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
7029 yyerror("out of memory");
7030 }
7031 #line 7032 "util/configparser.c"
7032 break;
7033
7034 case 638: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */
7035 #line 3460 "util/configparser.y"
7036 {
7037 OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
7038 if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
7039 yyerror("out of memory");
7040 }
7041 }
7042 #line 7043 "util/configparser.c"
7043 break;
7044
7045 case 639: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */
7046 #line 3468 "util/configparser.y"
7047 {
7048 char* ptr;
7049 OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
7050 ptr = cfg_ptr_reverse((yyvsp[0].str));
7051 free((yyvsp[0].str));
7052 if(ptr) {
7053 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
7054 local_data, ptr))
7055 yyerror("out of memory");
7056 } else {
7057 yyerror("local-data-ptr could not be reversed");
7058 }
7059 }
7060 #line 7061 "util/configparser.c"
7061 break;
7062
7063 case 640: /* view_first: VAR_VIEW_FIRST STRING_ARG */
7064 #line 3483 "util/configparser.y"
7065 {
7066 OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
7067 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7068 yyerror("expected yes or no.");
7069 else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
7070 free((yyvsp[0].str));
7071 }
7072 #line 7073 "util/configparser.c"
7073 break;
7074
7075 case 641: /* rcstart: VAR_REMOTE_CONTROL */
7076 #line 3492 "util/configparser.y"
7077 {
7078 OUTYY(("\nP(remote-control:)\n"));
7079 cfg_parser->started_toplevel = 1;
7080 }
7081 #line 7082 "util/configparser.c"
7082 break;
7083
7084 case 652: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */
7085 #line 3504 "util/configparser.y"
7086 {
7087 OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
7088 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7089 yyerror("expected yes or no.");
7090 else cfg_parser->cfg->remote_control_enable =
7091 (strcmp((yyvsp[0].str), "yes")==0);
7092 free((yyvsp[0].str));
7093 }
7094 #line 7095 "util/configparser.c"
7095 break;
7096
7097 case 653: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */
7098 #line 3514 "util/configparser.y"
7099 {
7100 OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
7101 if(atoi((yyvsp[0].str)) == 0)
7102 yyerror("control port number expected");
7103 else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
7104 free((yyvsp[0].str));
7105 }
7106 #line 7107 "util/configparser.c"
7107 break;
7108
7109 case 654: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */
7110 #line 3523 "util/configparser.y"
7111 {
7112 OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
7113 if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
7114 yyerror("out of memory");
7115 }
7116 #line 7117 "util/configparser.c"
7117 break;
7118
7119 case 655: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */
7120 #line 3530 "util/configparser.y"
7121 {
7122 OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
7123 cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
7124 free((yyvsp[0].str));
7125 }
7126 #line 7127 "util/configparser.c"
7127 break;
7128
7129 case 656: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */
7130 #line 3537 "util/configparser.y"
7131 {
7132 OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
7133 free(cfg_parser->cfg->server_key_file);
7134 cfg_parser->cfg->server_key_file = (yyvsp[0].str);
7135 }
7136 #line 7137 "util/configparser.c"
7137 break;
7138
7139 case 657: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */
7140 #line 3544 "util/configparser.y"
7141 {
7142 OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
7143 free(cfg_parser->cfg->server_cert_file);
7144 cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
7145 }
7146 #line 7147 "util/configparser.c"
7147 break;
7148
7149 case 658: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */
7150 #line 3551 "util/configparser.y"
7151 {
7152 OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
7153 free(cfg_parser->cfg->control_key_file);
7154 cfg_parser->cfg->control_key_file = (yyvsp[0].str);
7155 }
7156 #line 7157 "util/configparser.c"
7157 break;
7158
7159 case 659: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */
7160 #line 3558 "util/configparser.y"
7161 {
7162 OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
7163 free(cfg_parser->cfg->control_cert_file);
7164 cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
7165 }
7166 #line 7167 "util/configparser.c"
7167 break;
7168
7169 case 660: /* dtstart: VAR_DNSTAP */
7170 #line 3565 "util/configparser.y"
7171 {
7172 OUTYY(("\nP(dnstap:)\n"));
7173 cfg_parser->started_toplevel = 1;
7174 }
7175 #line 7176 "util/configparser.c"
7176 break;
7177
7178 case 683: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */
7179 #line 3587 "util/configparser.y"
7180 {
7181 OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
7182 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7183 yyerror("expected yes or no.");
7184 else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
7185 free((yyvsp[0].str));
7186 }
7187 #line 7188 "util/configparser.c"
7188 break;
7189
7190 case 684: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */
7191 #line 3596 "util/configparser.y"
7192 {
7193 OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7194 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7195 yyerror("expected yes or no.");
7196 else cfg_parser->cfg->dnstap_bidirectional =
7197 (strcmp((yyvsp[0].str), "yes")==0);
7198 free((yyvsp[0].str));
7199 }
7200 #line 7201 "util/configparser.c"
7201 break;
7202
7203 case 685: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */
7204 #line 3606 "util/configparser.y"
7205 {
7206 OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7207 free(cfg_parser->cfg->dnstap_socket_path);
7208 cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7209 }
7210 #line 7211 "util/configparser.c"
7211 break;
7212
7213 case 686: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */
7214 #line 3613 "util/configparser.y"
7215 {
7216 OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7217 free(cfg_parser->cfg->dnstap_ip);
7218 cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7219 }
7220 #line 7221 "util/configparser.c"
7221 break;
7222
7223 case 687: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */
7224 #line 3620 "util/configparser.y"
7225 {
7226 OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7227 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7228 yyerror("expected yes or no.");
7229 else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7230 free((yyvsp[0].str));
7231 }
7232 #line 7233 "util/configparser.c"
7233 break;
7234
7235 case 688: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */
7236 #line 3629 "util/configparser.y"
7237 {
7238 OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7239 free(cfg_parser->cfg->dnstap_tls_server_name);
7240 cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7241 }
7242 #line 7243 "util/configparser.c"
7243 break;
7244
7245 case 689: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */
7246 #line 3636 "util/configparser.y"
7247 {
7248 OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7249 free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7250 cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7251 }
7252 #line 7253 "util/configparser.c"
7253 break;
7254
7255 case 690: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */
7256 #line 3643 "util/configparser.y"
7257 {
7258 OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7259 free(cfg_parser->cfg->dnstap_tls_client_key_file);
7260 cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7261 }
7262 #line 7263 "util/configparser.c"
7263 break;
7264
7265 case 691: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */
7266 #line 3650 "util/configparser.y"
7267 {
7268 OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7269 free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7270 cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7271 }
7272 #line 7273 "util/configparser.c"
7273 break;
7274
7275 case 692: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */
7276 #line 3657 "util/configparser.y"
7277 {
7278 OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7279 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7280 yyerror("expected yes or no.");
7281 else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7282 free((yyvsp[0].str));
7283 }
7284 #line 7285 "util/configparser.c"
7285 break;
7286
7287 case 693: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */
7288 #line 3666 "util/configparser.y"
7289 {
7290 OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7291 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7292 yyerror("expected yes or no.");
7293 else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7294 free((yyvsp[0].str));
7295 }
7296 #line 7297 "util/configparser.c"
7297 break;
7298
7299 case 694: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */
7300 #line 3675 "util/configparser.y"
7301 {
7302 OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7303 free(cfg_parser->cfg->dnstap_identity);
7304 cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7305 }
7306 #line 7307 "util/configparser.c"
7307 break;
7308
7309 case 695: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */
7310 #line 3682 "util/configparser.y"
7311 {
7312 OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7313 free(cfg_parser->cfg->dnstap_version);
7314 cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7315 }
7316 #line 7317 "util/configparser.c"
7317 break;
7318
7319 case 696: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */
7320 #line 3689 "util/configparser.y"
7321 {
7322 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7323 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7324 yyerror("expected yes or no.");
7325 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7326 (strcmp((yyvsp[0].str), "yes")==0);
7327 free((yyvsp[0].str));
7328 }
7329 #line 7330 "util/configparser.c"
7330 break;
7331
7332 case 697: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */
7333 #line 3699 "util/configparser.y"
7334 {
7335 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7336 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7337 yyerror("expected yes or no.");
7338 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7339 (strcmp((yyvsp[0].str), "yes")==0);
7340 free((yyvsp[0].str));
7341 }
7342 #line 7343 "util/configparser.c"
7343 break;
7344
7345 case 698: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */
7346 #line 3709 "util/configparser.y"
7347 {
7348 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7349 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7350 yyerror("expected yes or no.");
7351 else cfg_parser->cfg->dnstap_log_client_query_messages =
7352 (strcmp((yyvsp[0].str), "yes")==0);
7353 free((yyvsp[0].str));
7354 }
7355 #line 7356 "util/configparser.c"
7356 break;
7357
7358 case 699: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */
7359 #line 3719 "util/configparser.y"
7360 {
7361 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7362 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7363 yyerror("expected yes or no.");
7364 else cfg_parser->cfg->dnstap_log_client_response_messages =
7365 (strcmp((yyvsp[0].str), "yes")==0);
7366 free((yyvsp[0].str));
7367 }
7368 #line 7369 "util/configparser.c"
7369 break;
7370
7371 case 700: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */
7372 #line 3729 "util/configparser.y"
7373 {
7374 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7375 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7376 yyerror("expected yes or no.");
7377 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7378 (strcmp((yyvsp[0].str), "yes")==0);
7379 free((yyvsp[0].str));
7380 }
7381 #line 7382 "util/configparser.c"
7382 break;
7383
7384 case 701: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */
7385 #line 3739 "util/configparser.y"
7386 {
7387 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7388 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7389 yyerror("expected yes or no.");
7390 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7391 (strcmp((yyvsp[0].str), "yes")==0);
7392 free((yyvsp[0].str));
7393 }
7394 #line 7395 "util/configparser.c"
7395 break;
7396
7397 case 702: /* dt_dnstap_sample_rate: VAR_DNSTAP_SAMPLE_RATE STRING_ARG */
7398 #line 3749 "util/configparser.y"
7399 {
7400 OUTYY(("P(dt_dnstap_sample_rate:%s)\n", (yyvsp[0].str)));
7401 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7402 yyerror("number expected");
7403 else if(atoi((yyvsp[0].str)) < 0)
7404 yyerror("dnstap sample rate too small");
7405 else cfg_parser->cfg->dnstap_sample_rate = atoi((yyvsp[0].str));
7406 free((yyvsp[0].str));
7407 }
7408 #line 7409 "util/configparser.c"
7409 break;
7410
7411 case 703: /* pythonstart: VAR_PYTHON */
7412 #line 3760 "util/configparser.y"
7413 {
7414 OUTYY(("\nP(python:)\n"));
7415 cfg_parser->started_toplevel = 1;
7416 }
7417 #line 7418 "util/configparser.c"
7418 break;
7419
7420 case 707: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */
7421 #line 3770 "util/configparser.y"
7422 {
7423 OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7424 if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7425 yyerror("out of memory");
7426 }
7427 #line 7428 "util/configparser.c"
7428 break;
7429
7430 case 708: /* dynlibstart: VAR_DYNLIB */
7431 #line 3777 "util/configparser.y"
7432 {
7433 OUTYY(("\nP(dynlib:)\n"));
7434 cfg_parser->started_toplevel = 1;
7435 }
7436 #line 7437 "util/configparser.c"
7437 break;
7438
7439 case 712: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */
7440 #line 3787 "util/configparser.y"
7441 {
7442 OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7443 if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7444 yyerror("out of memory");
7445 }
7446 #line 7447 "util/configparser.c"
7447 break;
7448
7449 case 713: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */
7450 #line 3794 "util/configparser.y"
7451 {
7452 OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7453 if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7454 yyerror("expected yes or no.");
7455 else cfg_parser->cfg->disable_dnssec_lame_check =
7456 (strcmp((yyvsp[0].str), "yes")==0);
7457 free((yyvsp[0].str));
7458 }
7459 #line 7460 "util/configparser.c"
7460 break;
7461
7462 case 714: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */
7463 #line 3804 "util/configparser.y"
7464 {
7465 OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7466 free(cfg_parser->cfg->log_identity);
7467 cfg_parser->cfg->log_identity = (yyvsp[0].str);
7468 }
7469 #line 7470 "util/configparser.c"
7470 break;
7471
7472 case 715: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */
7473 #line 3811 "util/configparser.y"
7474 {
7475 OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7476 validate_respip_action((yyvsp[0].str));
7477 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7478 (yyvsp[-1].str), (yyvsp[0].str)))
7479 yyerror("out of memory");
7480 }
7481 #line 7482 "util/configparser.c"
7482 break;
7483
7484 case 716: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */
7485 #line 3820 "util/configparser.y"
7486 {
7487 OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7488 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7489 (yyvsp[-1].str), (yyvsp[0].str)))
7490 yyerror("out of memory");
7491 }
7492 #line 7493 "util/configparser.c"
7493 break;
7494
7495 case 717: /* dnscstart: VAR_DNSCRYPT */
7496 #line 3828 "util/configparser.y"
7497 {
7498 OUTYY(("\nP(dnscrypt:)\n"));
7499 cfg_parser->started_toplevel = 1;
7500 }
7501 #line 7502 "util/configparser.c"
7502 break;
7503
7504 case 730: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */
7505 #line 3845 "util/configparser.y"
7506 {
7507 OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7508 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7509 yyerror("expected yes or no.");
7510 else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7511 free((yyvsp[0].str));
7512 }
7513 #line 7514 "util/configparser.c"
7514 break;
7515
7516 case 731: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */
7517 #line 3854 "util/configparser.y"
7518 {
7519 OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7520 if(atoi((yyvsp[0].str)) == 0)
7521 yyerror("port number expected");
7522 else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7523 free((yyvsp[0].str));
7524 }
7525 #line 7526 "util/configparser.c"
7526 break;
7527
7528 case 732: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */
7529 #line 3863 "util/configparser.y"
7530 {
7531 OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7532 free(cfg_parser->cfg->dnscrypt_provider);
7533 cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7534 }
7535 #line 7536 "util/configparser.c"
7536 break;
7537
7538 case 733: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */
7539 #line 3870 "util/configparser.y"
7540 {
7541 OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7542 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) {
7543 log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7544 free((yyvsp[0].str));
7545 } else if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) {
7546 yyerror("out of memory");
7547 }
7548 }
7549 #line 7550 "util/configparser.c"
7550 break;
7551
7552 case 734: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */
7553 #line 3881 "util/configparser.y"
7554 {
7555 OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7556 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7557 yyerror("out of memory");
7558 }
7559 #line 7560 "util/configparser.c"
7560 break;
7561
7562 case 735: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */
7563 #line 3888 "util/configparser.y"
7564 {
7565 OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7566 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) {
7567 log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7568 free((yyvsp[0].str));
7569 } else if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) {
7570 yyerror("out of memory");
7571 }
7572 }
7573 #line 7574 "util/configparser.c"
7574 break;
7575
7576 case 736: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */
7577 #line 3899 "util/configparser.y"
7578 {
7579 OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7580 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7581 yyerror("memory size expected");
7582 free((yyvsp[0].str));
7583 }
7584 #line 7585 "util/configparser.c"
7585 break;
7586
7587 case 737: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */
7588 #line 3907 "util/configparser.y"
7589 {
7590 OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7591 if(atoi((yyvsp[0].str)) == 0) {
7592 yyerror("number expected");
7593 } else {
7594 cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7595 if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7596 yyerror("must be a power of 2");
7597 }
7598 free((yyvsp[0].str));
7599 }
7600 #line 7601 "util/configparser.c"
7601 break;
7602
7603 case 738: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */
7604 #line 3920 "util/configparser.y"
7605 {
7606 OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7607 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7608 yyerror("memory size expected");
7609 free((yyvsp[0].str));
7610 }
7611 #line 7612 "util/configparser.c"
7612 break;
7613
7614 case 739: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */
7615 #line 3928 "util/configparser.y"
7616 {
7617 OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7618 if(atoi((yyvsp[0].str)) == 0) {
7619 yyerror("number expected");
7620 } else {
7621 cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7622 if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7623 yyerror("must be a power of 2");
7624 }
7625 free((yyvsp[0].str));
7626 }
7627 #line 7628 "util/configparser.c"
7628 break;
7629
7630 case 740: /* cachedbstart: VAR_CACHEDB */
7631 #line 3941 "util/configparser.y"
7632 {
7633 OUTYY(("\nP(cachedb:)\n"));
7634 cfg_parser->started_toplevel = 1;
7635 }
7636 #line 7637 "util/configparser.c"
7637 break;
7638
7639 case 764: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */
7640 #line 3961 "util/configparser.y"
7641 {
7642 #ifdef USE_CACHEDB
7643 OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7644 free(cfg_parser->cfg->cachedb_backend);
7645 cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7646 #else
7647 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7648 free((yyvsp[0].str));
7649 #endif
7650 }
7651 #line 7652 "util/configparser.c"
7652 break;
7653
7654 case 765: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */
7655 #line 3973 "util/configparser.y"
7656 {
7657 #ifdef USE_CACHEDB
7658 OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7659 free(cfg_parser->cfg->cachedb_secret);
7660 cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7661 #else
7662 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7663 free((yyvsp[0].str));
7664 #endif
7665 }
7666 #line 7667 "util/configparser.c"
7667 break;
7668
7669 case 766: /* cachedb_no_store: VAR_CACHEDB_NO_STORE STRING_ARG */
7670 #line 3985 "util/configparser.y"
7671 {
7672 #ifdef USE_CACHEDB
7673 OUTYY(("P(cachedb_no_store:%s)\n", (yyvsp[0].str)));
7674 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7675 yyerror("expected yes or no.");
7676 else cfg_parser->cfg->cachedb_no_store = (strcmp((yyvsp[0].str), "yes")==0);
7677 #else
7678 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7679 #endif
7680 free((yyvsp[0].str));
7681 }
7682 #line 7683 "util/configparser.c"
7683 break;
7684
7685 case 767: /* cachedb_check_when_serve_expired: VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED STRING_ARG */
7686 #line 3998 "util/configparser.y"
7687 {
7688 #ifdef USE_CACHEDB
7689 OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", (yyvsp[0].str)));
7690 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7691 yyerror("expected yes or no.");
7692 else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
7693 #else
7694 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7695 #endif
7696 free((yyvsp[0].str));
7697 }
7698 #line 7699 "util/configparser.c"
7699 break;
7700
7701 case 768: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */
7702 #line 4011 "util/configparser.y"
7703 {
7704 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7705 OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7706 free(cfg_parser->cfg->redis_server_host);
7707 cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7708 #else
7709 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7710 free((yyvsp[0].str));
7711 #endif
7712 }
7713 #line 7714 "util/configparser.c"
7714 break;
7715
7716 case 769: /* redis_replica_server_host: VAR_CACHEDB_REDISREPLICAHOST STRING_ARG */
7717 #line 4023 "util/configparser.y"
7718 {
7719 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7720 OUTYY(("P(redis_replica_server_host:%s)\n", (yyvsp[0].str)));
7721 free(cfg_parser->cfg->redis_replica_server_host);
7722 cfg_parser->cfg->redis_replica_server_host = (yyvsp[0].str);
7723 #else
7724 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7725 free((yyvsp[0].str));
7726 #endif
7727 }
7728 #line 7729 "util/configparser.c"
7729 break;
7730
7731 case 770: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */
7732 #line 4035 "util/configparser.y"
7733 {
7734 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7735 int port;
7736 OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7737 port = atoi((yyvsp[0].str));
7738 if(port == 0 || port < 0 || port > 65535)
7739 yyerror("valid redis server port number expected");
7740 else cfg_parser->cfg->redis_server_port = port;
7741 #else
7742 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7743 #endif
7744 free((yyvsp[0].str));
7745 }
7746 #line 7747 "util/configparser.c"
7747 break;
7748
7749 case 771: /* redis_replica_server_port: VAR_CACHEDB_REDISREPLICAPORT STRING_ARG */
7750 #line 4050 "util/configparser.y"
7751 {
7752 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7753 int port;
7754 OUTYY(("P(redis_replica_server_port:%s)\n", (yyvsp[0].str)));
7755 port = atoi((yyvsp[0].str));
7756 if(port == 0 || port < 0 || port > 65535)
7757 yyerror("valid redis server port number expected");
7758 else cfg_parser->cfg->redis_replica_server_port = port;
7759 #else
7760 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7761 #endif
7762 free((yyvsp[0].str));
7763 }
7764 #line 7765 "util/configparser.c"
7765 break;
7766
7767 case 772: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG */
7768 #line 4065 "util/configparser.y"
7769 {
7770 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7771 OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7772 free(cfg_parser->cfg->redis_server_path);
7773 cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7774 #else
7775 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7776 free((yyvsp[0].str));
7777 #endif
7778 }
7779 #line 7780 "util/configparser.c"
7780 break;
7781
7782 case 773: /* redis_replica_server_path: VAR_CACHEDB_REDISREPLICAPATH STRING_ARG */
7783 #line 4077 "util/configparser.y"
7784 {
7785 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7786 OUTYY(("P(redis_replica_server_path:%s)\n", (yyvsp[0].str)));
7787 free(cfg_parser->cfg->redis_replica_server_path);
7788 cfg_parser->cfg->redis_replica_server_path = (yyvsp[0].str);
7789 #else
7790 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7791 free((yyvsp[0].str));
7792 #endif
7793 }
7794 #line 7795 "util/configparser.c"
7795 break;
7796
7797 case 774: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG */
7798 #line 4089 "util/configparser.y"
7799 {
7800 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7801 OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7802 free(cfg_parser->cfg->redis_server_password);
7803 cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7804 #else
7805 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7806 free((yyvsp[0].str));
7807 #endif
7808 }
7809 #line 7810 "util/configparser.c"
7810 break;
7811
7812 case 775: /* redis_replica_server_password: VAR_CACHEDB_REDISREPLICAPASSWORD STRING_ARG */
7813 #line 4101 "util/configparser.y"
7814 {
7815 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7816 OUTYY(("P(redis_replica_server_password:%s)\n", (yyvsp[0].str)));
7817 free(cfg_parser->cfg->redis_replica_server_password);
7818 cfg_parser->cfg->redis_replica_server_password = (yyvsp[0].str);
7819 #else
7820 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7821 free((yyvsp[0].str));
7822 #endif
7823 }
7824 #line 7825 "util/configparser.c"
7825 break;
7826
7827 case 776: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */
7828 #line 4113 "util/configparser.y"
7829 {
7830 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7831 OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7832 if(atoi((yyvsp[0].str)) == 0)
7833 yyerror("redis timeout value expected");
7834 else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7835 #else
7836 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7837 #endif
7838 free((yyvsp[0].str));
7839 }
7840 #line 7841 "util/configparser.c"
7841 break;
7842
7843 case 777: /* redis_replica_timeout: VAR_CACHEDB_REDISREPLICATIMEOUT STRING_ARG */
7844 #line 4126 "util/configparser.y"
7845 {
7846 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7847 OUTYY(("P(redis_replica_timeout:%s)\n", (yyvsp[0].str)));
7848 if(atoi((yyvsp[0].str)) == 0)
7849 yyerror("redis timeout value expected");
7850 else cfg_parser->cfg->redis_replica_timeout = atoi((yyvsp[0].str));
7851 #else
7852 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7853 #endif
7854 free((yyvsp[0].str));
7855 }
7856 #line 7857 "util/configparser.c"
7857 break;
7858
7859 case 778: /* redis_command_timeout: VAR_CACHEDB_REDISCOMMANDTIMEOUT STRING_ARG */
7860 #line 4139 "util/configparser.y"
7861 {
7862 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7863 OUTYY(("P(redis_command_timeout:%s)\n", (yyvsp[0].str)));
7864 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7865 yyerror("redis command timeout value expected");
7866 else cfg_parser->cfg->redis_command_timeout = atoi((yyvsp[0].str));
7867 #else
7868 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7869 #endif
7870 free((yyvsp[0].str));
7871 }
7872 #line 7873 "util/configparser.c"
7873 break;
7874
7875 case 779: /* redis_replica_command_timeout: VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT STRING_ARG */
7876 #line 4152 "util/configparser.y"
7877 {
7878 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7879 OUTYY(("P(redis_replica_command_timeout:%s)\n", (yyvsp[0].str)));
7880 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7881 yyerror("redis command timeout value expected");
7882 else cfg_parser->cfg->redis_replica_command_timeout = atoi((yyvsp[0].str));
7883 #else
7884 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7885 #endif
7886 free((yyvsp[0].str));
7887 }
7888 #line 7889 "util/configparser.c"
7889 break;
7890
7891 case 780: /* redis_connect_timeout: VAR_CACHEDB_REDISCONNECTTIMEOUT STRING_ARG */
7892 #line 4165 "util/configparser.y"
7893 {
7894 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7895 OUTYY(("P(redis_connect_timeout:%s)\n", (yyvsp[0].str)));
7896 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7897 yyerror("redis connect timeout value expected");
7898 else cfg_parser->cfg->redis_connect_timeout = atoi((yyvsp[0].str));
7899 #else
7900 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7901 #endif
7902 free((yyvsp[0].str));
7903 }
7904 #line 7905 "util/configparser.c"
7905 break;
7906
7907 case 781: /* redis_replica_connect_timeout: VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT STRING_ARG */
7908 #line 4178 "util/configparser.y"
7909 {
7910 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7911 OUTYY(("P(redis_replica_connect_timeout:%s)\n", (yyvsp[0].str)));
7912 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7913 yyerror("redis connect timeout value expected");
7914 else cfg_parser->cfg->redis_replica_connect_timeout = atoi((yyvsp[0].str));
7915 #else
7916 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7917 #endif
7918 free((yyvsp[0].str));
7919 }
7920 #line 7921 "util/configparser.c"
7921 break;
7922
7923 case 782: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */
7924 #line 4191 "util/configparser.y"
7925 {
7926 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7927 OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7928 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7929 yyerror("expected yes or no.");
7930 else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7931 #else
7932 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7933 #endif
7934 free((yyvsp[0].str));
7935 }
7936 #line 7937 "util/configparser.c"
7937 break;
7938
7939 case 783: /* redis_logical_db: VAR_CACHEDB_REDISLOGICALDB STRING_ARG */
7940 #line 4204 "util/configparser.y"
7941 {
7942 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7943 int db;
7944 OUTYY(("P(redis_logical_db:%s)\n", (yyvsp[0].str)));
7945 db = atoi((yyvsp[0].str));
7946 if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7947 yyerror("valid redis logical database index expected");
7948 else cfg_parser->cfg->redis_logical_db = db;
7949 #else
7950 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7951 #endif
7952 free((yyvsp[0].str));
7953 }
7954 #line 7955 "util/configparser.c"
7955 break;
7956
7957 case 784: /* redis_replica_logical_db: VAR_CACHEDB_REDISREPLICALOGICALDB STRING_ARG */
7958 #line 4219 "util/configparser.y"
7959 {
7960 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7961 int db;
7962 OUTYY(("P(redis_replica_logical_db:%s)\n", (yyvsp[0].str)));
7963 db = atoi((yyvsp[0].str));
7964 if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7965 yyerror("valid redis logical database index expected");
7966 else cfg_parser->cfg->redis_replica_logical_db = db;
7967 #else
7968 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7969 #endif
7970 free((yyvsp[0].str));
7971 }
7972 #line 7973 "util/configparser.c"
7973 break;
7974
7975 case 785: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */
7976 #line 4234 "util/configparser.y"
7977 {
7978 OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7979 if (atoi((yyvsp[0].str)) < 0)
7980 yyerror("positive number expected");
7981 else {
7982 if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7983 yyerror("out of memory");
7984 }
7985 }
7986 #line 7987 "util/configparser.c"
7987 break;
7988
7989 case 786: /* server_answer_cookie: VAR_ANSWER_COOKIE STRING_ARG */
7990 #line 4245 "util/configparser.y"
7991 {
7992 OUTYY(("P(server_answer_cookie:%s)\n", (yyvsp[0].str)));
7993 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7994 yyerror("expected yes or no.");
7995 else cfg_parser->cfg->do_answer_cookie = (strcmp((yyvsp[0].str), "yes")==0);
7996 free((yyvsp[0].str));
7997 }
7998 #line 7999 "util/configparser.c"
7999 break;
8000
8001 case 787: /* server_cookie_secret: VAR_COOKIE_SECRET STRING_ARG */
8002 #line 4254 "util/configparser.y"
8003 {
8004 uint8_t secret[32];
8005 size_t secret_len = sizeof(secret);
8006
8007 OUTYY(("P(server_cookie_secret:%s)\n", (yyvsp[0].str)));
8008 if(sldns_str2wire_hex_buf((yyvsp[0].str), secret, &secret_len)
8009 || (secret_len != 16))
8010 yyerror("expected 128 bit hex string");
8011 else {
8012 cfg_parser->cfg->cookie_secret_len = secret_len;
8013 memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
8014 }
8015 free((yyvsp[0].str));
8016 }
8017 #line 8018 "util/configparser.c"
8018 break;
8019
8020 case 788: /* server_cookie_secret_file: VAR_COOKIE_SECRET_FILE STRING_ARG */
8021 #line 4270 "util/configparser.y"
8022 {
8023 OUTYY(("P(cookie_secret_file:%s)\n", (yyvsp[0].str)));
8024 free(cfg_parser->cfg->cookie_secret_file);
8025 cfg_parser->cfg->cookie_secret_file = (yyvsp[0].str);
8026 }
8027 #line 8028 "util/configparser.c"
8028 break;
8029
8030 case 789: /* server_iter_scrub_ns: VAR_ITER_SCRUB_NS STRING_ARG */
8031 #line 4277 "util/configparser.y"
8032 {
8033 OUTYY(("P(server_iter_scrub_ns:%s)\n", (yyvsp[0].str)));
8034 if(atoi((yyvsp[0].str)) < 1)
8035 yyerror("number >= 1 expected");
8036 else cfg_parser->cfg->iter_scrub_ns = atoi((yyvsp[0].str));
8037 free((yyvsp[0].str));
8038 }
8039 #line 8040 "util/configparser.c"
8040 break;
8041
8042 case 790: /* server_iter_scrub_cname: VAR_ITER_SCRUB_CNAME STRING_ARG */
8043 #line 4286 "util/configparser.y"
8044 {
8045 OUTYY(("P(server_iter_scrub_cname:%s)\n", (yyvsp[0].str)));
8046 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8047 yyerror("number expected");
8048 else cfg_parser->cfg->iter_scrub_cname = atoi((yyvsp[0].str));
8049 free((yyvsp[0].str));
8050 }
8051 #line 8052 "util/configparser.c"
8052 break;
8053
8054 case 791: /* server_iter_scrub_rrsig: VAR_ITER_SCRUB_RRSIG STRING_ARG */
8055 #line 4295 "util/configparser.y"
8056 {
8057 OUTYY(("P(server_iter_scrub_rrsig:%s)\n", (yyvsp[0].str)));
8058 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8059 yyerror("number expected");
8060 else cfg_parser->cfg->iter_scrub_rrsig = atoi((yyvsp[0].str));
8061 free((yyvsp[0].str));
8062 }
8063 #line 8064 "util/configparser.c"
8064 break;
8065
8066 case 792: /* server_max_global_quota: VAR_MAX_GLOBAL_QUOTA STRING_ARG */
8067 #line 4304 "util/configparser.y"
8068 {
8069 OUTYY(("P(server_max_global_quota:%s)\n", (yyvsp[0].str)));
8070 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8071 yyerror("number expected");
8072 else cfg_parser->cfg->max_global_quota = atoi((yyvsp[0].str));
8073 free((yyvsp[0].str));
8074 }
8075 #line 8076 "util/configparser.c"
8076 break;
8077
8078 case 793: /* server_iter_scrub_promiscuous: VAR_ITER_SCRUB_PROMISCUOUS STRING_ARG */
8079 #line 4313 "util/configparser.y"
8080 {
8081 OUTYY(("P(server_iter_scrub_promiscuous:%s)\n", (yyvsp[0].str)));
8082 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
8083 yyerror("expected yes or no.");
8084 else cfg_parser->cfg->iter_scrub_promiscuous =
8085 (strcmp((yyvsp[0].str), "yes")==0);
8086 free((yyvsp[0].str));
8087 }
8088 #line 8089 "util/configparser.c"
8089 break;
8090
8091 case 794: /* server_val_validation_attempts: VAR_VAL_VALIDATION_ATTEMPTS STRING_ARG */
8092 #line 4323 "util/configparser.y"
8093 {
8094 OUTYY(("P(server_val_validation_attempts:%s)\n", (yyvsp[0].str)));
8095 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8096 yyerror("number expected");
8097 else cfg_parser->cfg->val_validation_attempts = atoi((yyvsp[0].str));
8098 free((yyvsp[0].str));
8099 }
8100 #line 8101 "util/configparser.c"
8101 break;
8102
8103 case 795: /* server_val_hash_attempts: VAR_VAL_HASH_ATTEMPTS STRING_ARG */
8104 #line 4332 "util/configparser.y"
8105 {
8106 OUTYY(("P(server_val_hash_attempts:%s)\n", (yyvsp[0].str)));
8107 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
8108 yyerror("number expected");
8109 else cfg_parser->cfg->val_hash_attempts = atoi((yyvsp[0].str));
8110 free((yyvsp[0].str));
8111 }
8112 #line 8113 "util/configparser.c"
8113 break;
8114
8115 case 796: /* ipsetstart: VAR_IPSET */
8116 #line 4341 "util/configparser.y"
8117 {
8118 OUTYY(("\nP(ipset:)\n"));
8119 cfg_parser->started_toplevel = 1;
8120 }
8121 #line 8122 "util/configparser.c"
8122 break;
8123
8124 case 801: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */
8125 #line 4351 "util/configparser.y"
8126 {
8127 #ifdef USE_IPSET
8128 OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
8129 if(cfg_parser->cfg->ipset_name_v4)
8130 yyerror("ipset name v4 override, there must be one "
8131 "name for ip v4");
8132 free(cfg_parser->cfg->ipset_name_v4);
8133 cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
8134 #else
8135 OUTYY(("P(Compiled without ipset, ignoring)\n"));
8136 free((yyvsp[0].str));
8137 #endif
8138 }
8139 #line 8140 "util/configparser.c"
8140 break;
8141
8142 case 802: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */
8143 #line 4366 "util/configparser.y"
8144 {
8145 #ifdef USE_IPSET
8146 OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
8147 if(cfg_parser->cfg->ipset_name_v6)
8148 yyerror("ipset name v6 override, there must be one "
8149 "name for ip v6");
8150 free(cfg_parser->cfg->ipset_name_v6);
8151 cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
8152 #else
8153 OUTYY(("P(Compiled without ipset, ignoring)\n"));
8154 free((yyvsp[0].str));
8155 #endif
8156 }
8157 #line 8158 "util/configparser.c"
8158 break;
8159
8160
8161 #line 8162 "util/configparser.c"
8162
8163 default: break;
8164 }
8165 /* User semantic actions sometimes alter yychar, and that requires
8166 that yytoken be updated with the new translation. We take the
8167 approach of translating immediately before every use of yytoken.
8168 One alternative is translating here after every semantic action,
8169 but that translation would be missed if the semantic action invokes
8170 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8171 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
8172 incorrect destructor might then be invoked immediately. In the
8173 case of YYERROR or YYBACKUP, subsequent parser actions might lead
8174 to an incorrect destructor call or verbose syntax error message
8175 before the lookahead is translated. */
8176 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
8177
8178 YYPOPSTACK (yylen);
8179 yylen = 0;
8180
8181 *++yyvsp = yyval;
8182
8183 /* Now 'shift' the result of the reduction. Determine what state
8184 that goes to, based on the state we popped back to and the rule
8185 number reduced by. */
8186 {
8187 const int yylhs = yyr1[yyn] - YYNTOKENS;
8188 const int yyi = yypgoto[yylhs] + *yyssp;
8189 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
8190 ? yytable[yyi]
8191 : yydefgoto[yylhs]);
8192 }
8193
8194 goto yynewstate;
8195
8196
8197 /*--------------------------------------.
8198 | yyerrlab -- here on detecting error. |
8199 `--------------------------------------*/
8200 yyerrlab:
8201 /* Make sure we have latest lookahead translation. See comments at
8202 user semantic actions for why this is necessary. */
8203 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
8204 /* If not already recovering from an error, report this error. */
8205 if (!yyerrstatus)
8206 {
8207 ++yynerrs;
8208 yyerror (YY_("syntax error"));
8209 }
8210
8211 if (yyerrstatus == 3)
8212 {
8213 /* If just tried and failed to reuse lookahead token after an
8214 error, discard it. */
8215
8216 if (yychar <= YYEOF)
8217 {
8218 /* Return failure if at end of input. */
8219 if (yychar == YYEOF)
8220 YYABORT;
8221 }
8222 else
8223 {
8224 yydestruct ("Error: discarding",
8225 yytoken, &yylval);
8226 yychar = YYEMPTY;
8227 }
8228 }
8229
8230 /* Else will try to reuse lookahead token after shifting the error
8231 token. */
8232 goto yyerrlab1;
8233
8234
8235 /*---------------------------------------------------.
8236 | yyerrorlab -- error raised explicitly by YYERROR. |
8237 `---------------------------------------------------*/
8238 yyerrorlab:
8239 /* Pacify compilers when the user code never invokes YYERROR and the
8240 label yyerrorlab therefore never appears in user code. */
8241 if (0)
8242 YYERROR;
8243 ++yynerrs;
8244
8245 /* Do not reclaim the symbols of the rule whose action triggered
8246 this YYERROR. */
8247 YYPOPSTACK (yylen);
8248 yylen = 0;
8249 YY_STACK_PRINT (yyss, yyssp);
8250 yystate = *yyssp;
8251 goto yyerrlab1;
8252
8253
8254 /*-------------------------------------------------------------.
8255 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8256 `-------------------------------------------------------------*/
8257 yyerrlab1:
8258 yyerrstatus = 3; /* Each real token shifted decrements this. */
8259
8260 /* Pop stack until we find a state that shifts the error token. */
8261 for (;;)
8262 {
8263 yyn = yypact[yystate];
8264 if (!yypact_value_is_default (yyn))
8265 {
8266 yyn += YYSYMBOL_YYerror;
8267 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
8268 {
8269 yyn = yytable[yyn];
8270 if (0 < yyn)
8271 break;
8272 }
8273 }
8274
8275 /* Pop the current state because it cannot handle the error token. */
8276 if (yyssp == yyss)
8277 YYABORT;
8278
8279
8280 yydestruct ("Error: popping",
8281 YY_ACCESSING_SYMBOL (yystate), yyvsp);
8282 YYPOPSTACK (1);
8283 yystate = *yyssp;
8284 YY_STACK_PRINT (yyss, yyssp);
8285 }
8286
8287 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8288 *++yyvsp = yylval;
8289 YY_IGNORE_MAYBE_UNINITIALIZED_END
8290
8291
8292 /* Shift the error token. */
8293 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
8294
8295 yystate = yyn;
8296 goto yynewstate;
8297
8298
8299 /*-------------------------------------.
8300 | yyacceptlab -- YYACCEPT comes here. |
8301 `-------------------------------------*/
8302 yyacceptlab:
8303 yyresult = 0;
8304 goto yyreturnlab;
8305
8306
8307 /*-----------------------------------.
8308 | yyabortlab -- YYABORT comes here. |
8309 `-----------------------------------*/
8310 yyabortlab:
8311 yyresult = 1;
8312 goto yyreturnlab;
8313
8314
8315 /*-----------------------------------------------------------.
8316 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
8317 `-----------------------------------------------------------*/
8318 yyexhaustedlab:
8319 yyerror (YY_("memory exhausted"));
8320 yyresult = 2;
8321 goto yyreturnlab;
8322
8323
8324 /*----------------------------------------------------------.
8325 | yyreturnlab -- parsing is finished, clean up and return. |
8326 `----------------------------------------------------------*/
8327 yyreturnlab:
8328 if (yychar != YYEMPTY)
8329 {
8330 /* Make sure we have latest lookahead translation. See comments at
8331 user semantic actions for why this is necessary. */
8332 yytoken = YYTRANSLATE (yychar);
8333 yydestruct ("Cleanup: discarding lookahead",
8334 yytoken, &yylval);
8335 }
8336 /* Do not reclaim the symbols of the rule whose action triggered
8337 this YYABORT or YYACCEPT. */
8338 YYPOPSTACK (yylen);
8339 YY_STACK_PRINT (yyss, yyssp);
8340 while (yyssp != yyss)
8341 {
8342 yydestruct ("Cleanup: popping",
8343 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
8344 YYPOPSTACK (1);
8345 }
8346 #ifndef yyoverflow
8347 if (yyss != yyssa)
8348 YYSTACK_FREE (yyss);
8349 #endif
8350
8351 return yyresult;
8352 }
8353
8354 #line 4380 "util/configparser.y"
8355
8356
8357 /* parse helper routines could be here */
8358 static void
validate_respip_action(const char * action)8359 validate_respip_action(const char* action)
8360 {
8361 if(strcmp(action, "deny")!=0 &&
8362 strcmp(action, "redirect")!=0 &&
8363 strcmp(action, "inform")!=0 &&
8364 strcmp(action, "inform_deny")!=0 &&
8365 strcmp(action, "always_transparent")!=0 &&
8366 strcmp(action, "always_refuse")!=0 &&
8367 strcmp(action, "always_nxdomain")!=0)
8368 {
8369 yyerror("response-ip action: expected deny, redirect, "
8370 "inform, inform_deny, always_transparent, "
8371 "always_refuse or always_nxdomain");
8372 }
8373 }
8374
8375 static void
validate_acl_action(const char * action)8376 validate_acl_action(const char* action)
8377 {
8378 if(strcmp(action, "deny")!=0 &&
8379 strcmp(action, "refuse")!=0 &&
8380 strcmp(action, "deny_non_local")!=0 &&
8381 strcmp(action, "refuse_non_local")!=0 &&
8382 strcmp(action, "allow_setrd")!=0 &&
8383 strcmp(action, "allow")!=0 &&
8384 strcmp(action, "allow_snoop")!=0 &&
8385 strcmp(action, "allow_cookie")!=0)
8386 {
8387 yyerror("expected deny, refuse, deny_non_local, "
8388 "refuse_non_local, allow, allow_setrd, "
8389 "allow_snoop or allow_cookie as access control action");
8390 }
8391 }
8392