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