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