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