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