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