1 /* A Bison parser, made by GNU Bison 3.7.6. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30706
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.7.6"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 0
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66
67
68
69 /* First part of user prologue. */
70 #line 38 "util/configparser.y"
71
72 #include "config.h"
73
74 #include <stdarg.h>
75 #include <stdio.h>
76 #include <string.h>
77 #include <stdlib.h>
78 #include <assert.h>
79
80 #include "util/configyyrename.h"
81 #include "util/config_file.h"
82 #include "util/net_help.h"
83 #include "sldns/str2wire.h"
84
85 int ub_c_lex(void);
86 void ub_c_error(const char *message);
87
88 static void validate_respip_action(const char* action);
89 static void validate_acl_action(const char* action);
90
91 /* these need to be global, otherwise they cannot be used inside yacc */
92 extern struct config_parser_state* cfg_parser;
93
94 #if 0
95 #define OUTYY(s) printf s /* used ONLY when debugging */
96 #else
97 #define OUTYY(s)
98 #endif
99
100
101 #line 102 "util/configparser.c"
102
103 # ifndef YY_CAST
104 # ifdef __cplusplus
105 # define YY_CAST(Type, Val) static_cast<Type> (Val)
106 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
107 # else
108 # define YY_CAST(Type, Val) ((Type) (Val))
109 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
110 # endif
111 # endif
112 # ifndef YY_NULLPTR
113 # if defined __cplusplus
114 # if 201103L <= __cplusplus
115 # define YY_NULLPTR nullptr
116 # else
117 # define YY_NULLPTR 0
118 # endif
119 # else
120 # define YY_NULLPTR ((void*)0)
121 # endif
122 # endif
123
124 #include "configparser.h"
125 /* Symbol kind. */
126 enum yysymbol_kind_t
127 {
128 YYSYMBOL_YYEMPTY = -2,
129 YYSYMBOL_YYEOF = 0, /* "end of file" */
130 YYSYMBOL_YYerror = 1, /* error */
131 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
132 YYSYMBOL_SPACE = 3, /* SPACE */
133 YYSYMBOL_LETTER = 4, /* LETTER */
134 YYSYMBOL_NEWLINE = 5, /* NEWLINE */
135 YYSYMBOL_COMMENT = 6, /* COMMENT */
136 YYSYMBOL_COLON = 7, /* COLON */
137 YYSYMBOL_ANY = 8, /* ANY */
138 YYSYMBOL_ZONESTR = 9, /* ZONESTR */
139 YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */
140 YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */
141 YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */
142 YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */
143 YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */
144 YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */
145 YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */
146 YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */
147 YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */
148 YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */
149 YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */
150 YYSYMBOL_VAR_DO_NAT64 = 21, /* VAR_DO_NAT64 */
151 YYSYMBOL_VAR_PREFER_IP6 = 22, /* VAR_PREFER_IP6 */
152 YYSYMBOL_VAR_DO_UDP = 23, /* VAR_DO_UDP */
153 YYSYMBOL_VAR_DO_TCP = 24, /* VAR_DO_TCP */
154 YYSYMBOL_VAR_TCP_MSS = 25, /* VAR_TCP_MSS */
155 YYSYMBOL_VAR_OUTGOING_TCP_MSS = 26, /* VAR_OUTGOING_TCP_MSS */
156 YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 27, /* VAR_TCP_IDLE_TIMEOUT */
157 YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 28, /* VAR_EDNS_TCP_KEEPALIVE */
158 YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 29, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */
159 YYSYMBOL_VAR_SOCK_QUEUE_TIMEOUT = 30, /* VAR_SOCK_QUEUE_TIMEOUT */
160 YYSYMBOL_VAR_CHROOT = 31, /* VAR_CHROOT */
161 YYSYMBOL_VAR_USERNAME = 32, /* VAR_USERNAME */
162 YYSYMBOL_VAR_DIRECTORY = 33, /* VAR_DIRECTORY */
163 YYSYMBOL_VAR_LOGFILE = 34, /* VAR_LOGFILE */
164 YYSYMBOL_VAR_PIDFILE = 35, /* VAR_PIDFILE */
165 YYSYMBOL_VAR_MSG_CACHE_SIZE = 36, /* VAR_MSG_CACHE_SIZE */
166 YYSYMBOL_VAR_MSG_CACHE_SLABS = 37, /* VAR_MSG_CACHE_SLABS */
167 YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 38, /* VAR_NUM_QUERIES_PER_THREAD */
168 YYSYMBOL_VAR_RRSET_CACHE_SIZE = 39, /* VAR_RRSET_CACHE_SIZE */
169 YYSYMBOL_VAR_RRSET_CACHE_SLABS = 40, /* VAR_RRSET_CACHE_SLABS */
170 YYSYMBOL_VAR_OUTGOING_NUM_TCP = 41, /* VAR_OUTGOING_NUM_TCP */
171 YYSYMBOL_VAR_INFRA_HOST_TTL = 42, /* VAR_INFRA_HOST_TTL */
172 YYSYMBOL_VAR_INFRA_LAME_TTL = 43, /* VAR_INFRA_LAME_TTL */
173 YYSYMBOL_VAR_INFRA_CACHE_SLABS = 44, /* VAR_INFRA_CACHE_SLABS */
174 YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 45, /* VAR_INFRA_CACHE_NUMHOSTS */
175 YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 46, /* VAR_INFRA_CACHE_LAME_SIZE */
176 YYSYMBOL_VAR_NAME = 47, /* VAR_NAME */
177 YYSYMBOL_VAR_STUB_ZONE = 48, /* VAR_STUB_ZONE */
178 YYSYMBOL_VAR_STUB_HOST = 49, /* VAR_STUB_HOST */
179 YYSYMBOL_VAR_STUB_ADDR = 50, /* VAR_STUB_ADDR */
180 YYSYMBOL_VAR_TARGET_FETCH_POLICY = 51, /* VAR_TARGET_FETCH_POLICY */
181 YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 52, /* VAR_HARDEN_SHORT_BUFSIZE */
182 YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 53, /* VAR_HARDEN_LARGE_QUERIES */
183 YYSYMBOL_VAR_FORWARD_ZONE = 54, /* VAR_FORWARD_ZONE */
184 YYSYMBOL_VAR_FORWARD_HOST = 55, /* VAR_FORWARD_HOST */
185 YYSYMBOL_VAR_FORWARD_ADDR = 56, /* VAR_FORWARD_ADDR */
186 YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 57, /* VAR_DO_NOT_QUERY_ADDRESS */
187 YYSYMBOL_VAR_HIDE_IDENTITY = 58, /* VAR_HIDE_IDENTITY */
188 YYSYMBOL_VAR_HIDE_VERSION = 59, /* VAR_HIDE_VERSION */
189 YYSYMBOL_VAR_IDENTITY = 60, /* VAR_IDENTITY */
190 YYSYMBOL_VAR_VERSION = 61, /* VAR_VERSION */
191 YYSYMBOL_VAR_HARDEN_GLUE = 62, /* VAR_HARDEN_GLUE */
192 YYSYMBOL_VAR_MODULE_CONF = 63, /* VAR_MODULE_CONF */
193 YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 64, /* VAR_TRUST_ANCHOR_FILE */
194 YYSYMBOL_VAR_TRUST_ANCHOR = 65, /* VAR_TRUST_ANCHOR */
195 YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 66, /* VAR_VAL_OVERRIDE_DATE */
196 YYSYMBOL_VAR_BOGUS_TTL = 67, /* VAR_BOGUS_TTL */
197 YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 68, /* VAR_VAL_CLEAN_ADDITIONAL */
198 YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 69, /* VAR_VAL_PERMISSIVE_MODE */
199 YYSYMBOL_VAR_INCOMING_NUM_TCP = 70, /* VAR_INCOMING_NUM_TCP */
200 YYSYMBOL_VAR_MSG_BUFFER_SIZE = 71, /* VAR_MSG_BUFFER_SIZE */
201 YYSYMBOL_VAR_KEY_CACHE_SIZE = 72, /* VAR_KEY_CACHE_SIZE */
202 YYSYMBOL_VAR_KEY_CACHE_SLABS = 73, /* VAR_KEY_CACHE_SLABS */
203 YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 74, /* VAR_TRUSTED_KEYS_FILE */
204 YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 75, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */
205 YYSYMBOL_VAR_USE_SYSLOG = 76, /* VAR_USE_SYSLOG */
206 YYSYMBOL_VAR_OUTGOING_INTERFACE = 77, /* VAR_OUTGOING_INTERFACE */
207 YYSYMBOL_VAR_ROOT_HINTS = 78, /* VAR_ROOT_HINTS */
208 YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 79, /* VAR_DO_NOT_QUERY_LOCALHOST */
209 YYSYMBOL_VAR_CACHE_MAX_TTL = 80, /* VAR_CACHE_MAX_TTL */
210 YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 81, /* VAR_HARDEN_DNSSEC_STRIPPED */
211 YYSYMBOL_VAR_ACCESS_CONTROL = 82, /* VAR_ACCESS_CONTROL */
212 YYSYMBOL_VAR_LOCAL_ZONE = 83, /* VAR_LOCAL_ZONE */
213 YYSYMBOL_VAR_LOCAL_DATA = 84, /* VAR_LOCAL_DATA */
214 YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 85, /* VAR_INTERFACE_AUTOMATIC */
215 YYSYMBOL_VAR_STATISTICS_INTERVAL = 86, /* VAR_STATISTICS_INTERVAL */
216 YYSYMBOL_VAR_DO_DAEMONIZE = 87, /* VAR_DO_DAEMONIZE */
217 YYSYMBOL_VAR_USE_CAPS_FOR_ID = 88, /* VAR_USE_CAPS_FOR_ID */
218 YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 89, /* VAR_STATISTICS_CUMULATIVE */
219 YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 90, /* VAR_OUTGOING_PORT_PERMIT */
220 YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 91, /* VAR_OUTGOING_PORT_AVOID */
221 YYSYMBOL_VAR_DLV_ANCHOR_FILE = 92, /* VAR_DLV_ANCHOR_FILE */
222 YYSYMBOL_VAR_DLV_ANCHOR = 93, /* VAR_DLV_ANCHOR */
223 YYSYMBOL_VAR_NEG_CACHE_SIZE = 94, /* VAR_NEG_CACHE_SIZE */
224 YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 95, /* VAR_HARDEN_REFERRAL_PATH */
225 YYSYMBOL_VAR_PRIVATE_ADDRESS = 96, /* VAR_PRIVATE_ADDRESS */
226 YYSYMBOL_VAR_PRIVATE_DOMAIN = 97, /* VAR_PRIVATE_DOMAIN */
227 YYSYMBOL_VAR_REMOTE_CONTROL = 98, /* VAR_REMOTE_CONTROL */
228 YYSYMBOL_VAR_CONTROL_ENABLE = 99, /* VAR_CONTROL_ENABLE */
229 YYSYMBOL_VAR_CONTROL_INTERFACE = 100, /* VAR_CONTROL_INTERFACE */
230 YYSYMBOL_VAR_CONTROL_PORT = 101, /* VAR_CONTROL_PORT */
231 YYSYMBOL_VAR_SERVER_KEY_FILE = 102, /* VAR_SERVER_KEY_FILE */
232 YYSYMBOL_VAR_SERVER_CERT_FILE = 103, /* VAR_SERVER_CERT_FILE */
233 YYSYMBOL_VAR_CONTROL_KEY_FILE = 104, /* VAR_CONTROL_KEY_FILE */
234 YYSYMBOL_VAR_CONTROL_CERT_FILE = 105, /* VAR_CONTROL_CERT_FILE */
235 YYSYMBOL_VAR_CONTROL_USE_CERT = 106, /* VAR_CONTROL_USE_CERT */
236 YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 107, /* VAR_TCP_REUSE_TIMEOUT */
237 YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 108, /* VAR_MAX_REUSE_TCP_QUERIES */
238 YYSYMBOL_VAR_EXTENDED_STATISTICS = 109, /* VAR_EXTENDED_STATISTICS */
239 YYSYMBOL_VAR_LOCAL_DATA_PTR = 110, /* VAR_LOCAL_DATA_PTR */
240 YYSYMBOL_VAR_JOSTLE_TIMEOUT = 111, /* VAR_JOSTLE_TIMEOUT */
241 YYSYMBOL_VAR_STUB_PRIME = 112, /* VAR_STUB_PRIME */
242 YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 113, /* VAR_UNWANTED_REPLY_THRESHOLD */
243 YYSYMBOL_VAR_LOG_TIME_ASCII = 114, /* VAR_LOG_TIME_ASCII */
244 YYSYMBOL_VAR_DOMAIN_INSECURE = 115, /* VAR_DOMAIN_INSECURE */
245 YYSYMBOL_VAR_PYTHON = 116, /* VAR_PYTHON */
246 YYSYMBOL_VAR_PYTHON_SCRIPT = 117, /* VAR_PYTHON_SCRIPT */
247 YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 118, /* VAR_VAL_SIG_SKEW_MIN */
248 YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 119, /* VAR_VAL_SIG_SKEW_MAX */
249 YYSYMBOL_VAR_VAL_MAX_RESTART = 120, /* VAR_VAL_MAX_RESTART */
250 YYSYMBOL_VAR_CACHE_MIN_TTL = 121, /* VAR_CACHE_MIN_TTL */
251 YYSYMBOL_VAR_VAL_LOG_LEVEL = 122, /* VAR_VAL_LOG_LEVEL */
252 YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 123, /* VAR_AUTO_TRUST_ANCHOR_FILE */
253 YYSYMBOL_VAR_KEEP_MISSING = 124, /* VAR_KEEP_MISSING */
254 YYSYMBOL_VAR_ADD_HOLDDOWN = 125, /* VAR_ADD_HOLDDOWN */
255 YYSYMBOL_VAR_DEL_HOLDDOWN = 126, /* VAR_DEL_HOLDDOWN */
256 YYSYMBOL_VAR_SO_RCVBUF = 127, /* VAR_SO_RCVBUF */
257 YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 128, /* VAR_EDNS_BUFFER_SIZE */
258 YYSYMBOL_VAR_PREFETCH = 129, /* VAR_PREFETCH */
259 YYSYMBOL_VAR_PREFETCH_KEY = 130, /* VAR_PREFETCH_KEY */
260 YYSYMBOL_VAR_SO_SNDBUF = 131, /* VAR_SO_SNDBUF */
261 YYSYMBOL_VAR_SO_REUSEPORT = 132, /* VAR_SO_REUSEPORT */
262 YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 133, /* VAR_HARDEN_BELOW_NXDOMAIN */
263 YYSYMBOL_VAR_IGNORE_CD_FLAG = 134, /* VAR_IGNORE_CD_FLAG */
264 YYSYMBOL_VAR_LOG_QUERIES = 135, /* VAR_LOG_QUERIES */
265 YYSYMBOL_VAR_LOG_REPLIES = 136, /* VAR_LOG_REPLIES */
266 YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 137, /* VAR_LOG_LOCAL_ACTIONS */
267 YYSYMBOL_VAR_TCP_UPSTREAM = 138, /* VAR_TCP_UPSTREAM */
268 YYSYMBOL_VAR_SSL_UPSTREAM = 139, /* VAR_SSL_UPSTREAM */
269 YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 140, /* VAR_TCP_AUTH_QUERY_TIMEOUT */
270 YYSYMBOL_VAR_SSL_SERVICE_KEY = 141, /* VAR_SSL_SERVICE_KEY */
271 YYSYMBOL_VAR_SSL_SERVICE_PEM = 142, /* VAR_SSL_SERVICE_PEM */
272 YYSYMBOL_VAR_SSL_PORT = 143, /* VAR_SSL_PORT */
273 YYSYMBOL_VAR_FORWARD_FIRST = 144, /* VAR_FORWARD_FIRST */
274 YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 145, /* VAR_STUB_SSL_UPSTREAM */
275 YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 146, /* VAR_FORWARD_SSL_UPSTREAM */
276 YYSYMBOL_VAR_TLS_CERT_BUNDLE = 147, /* VAR_TLS_CERT_BUNDLE */
277 YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 148, /* VAR_STUB_TCP_UPSTREAM */
278 YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 149, /* VAR_FORWARD_TCP_UPSTREAM */
279 YYSYMBOL_VAR_HTTPS_PORT = 150, /* VAR_HTTPS_PORT */
280 YYSYMBOL_VAR_HTTP_ENDPOINT = 151, /* VAR_HTTP_ENDPOINT */
281 YYSYMBOL_VAR_HTTP_MAX_STREAMS = 152, /* VAR_HTTP_MAX_STREAMS */
282 YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 153, /* VAR_HTTP_QUERY_BUFFER_SIZE */
283 YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 154, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */
284 YYSYMBOL_VAR_HTTP_NODELAY = 155, /* VAR_HTTP_NODELAY */
285 YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 156, /* VAR_HTTP_NOTLS_DOWNSTREAM */
286 YYSYMBOL_VAR_STUB_FIRST = 157, /* VAR_STUB_FIRST */
287 YYSYMBOL_VAR_MINIMAL_RESPONSES = 158, /* VAR_MINIMAL_RESPONSES */
288 YYSYMBOL_VAR_RRSET_ROUNDROBIN = 159, /* VAR_RRSET_ROUNDROBIN */
289 YYSYMBOL_VAR_MAX_UDP_SIZE = 160, /* VAR_MAX_UDP_SIZE */
290 YYSYMBOL_VAR_DELAY_CLOSE = 161, /* VAR_DELAY_CLOSE */
291 YYSYMBOL_VAR_UDP_CONNECT = 162, /* VAR_UDP_CONNECT */
292 YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 163, /* VAR_UNBLOCK_LAN_ZONES */
293 YYSYMBOL_VAR_INSECURE_LAN_ZONES = 164, /* VAR_INSECURE_LAN_ZONES */
294 YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 165, /* VAR_INFRA_CACHE_MIN_RTT */
295 YYSYMBOL_VAR_INFRA_CACHE_MAX_RTT = 166, /* VAR_INFRA_CACHE_MAX_RTT */
296 YYSYMBOL_VAR_INFRA_KEEP_PROBING = 167, /* VAR_INFRA_KEEP_PROBING */
297 YYSYMBOL_VAR_DNS64_PREFIX = 168, /* VAR_DNS64_PREFIX */
298 YYSYMBOL_VAR_DNS64_SYNTHALL = 169, /* VAR_DNS64_SYNTHALL */
299 YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 170, /* VAR_DNS64_IGNORE_AAAA */
300 YYSYMBOL_VAR_NAT64_PREFIX = 171, /* VAR_NAT64_PREFIX */
301 YYSYMBOL_VAR_DNSTAP = 172, /* VAR_DNSTAP */
302 YYSYMBOL_VAR_DNSTAP_ENABLE = 173, /* VAR_DNSTAP_ENABLE */
303 YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 174, /* VAR_DNSTAP_SOCKET_PATH */
304 YYSYMBOL_VAR_DNSTAP_IP = 175, /* VAR_DNSTAP_IP */
305 YYSYMBOL_VAR_DNSTAP_TLS = 176, /* VAR_DNSTAP_TLS */
306 YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 177, /* VAR_DNSTAP_TLS_SERVER_NAME */
307 YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 178, /* VAR_DNSTAP_TLS_CERT_BUNDLE */
308 YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 179, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */
309 YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 180, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */
310 YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 181, /* VAR_DNSTAP_SEND_IDENTITY */
311 YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 182, /* VAR_DNSTAP_SEND_VERSION */
312 YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 183, /* VAR_DNSTAP_BIDIRECTIONAL */
313 YYSYMBOL_VAR_DNSTAP_IDENTITY = 184, /* VAR_DNSTAP_IDENTITY */
314 YYSYMBOL_VAR_DNSTAP_VERSION = 185, /* VAR_DNSTAP_VERSION */
315 YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */
316 YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */
317 YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 188, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */
318 YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 189, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */
319 YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 190, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */
320 YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 191, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */
321 YYSYMBOL_VAR_DNSTAP_SAMPLE_RATE = 192, /* VAR_DNSTAP_SAMPLE_RATE */
322 YYSYMBOL_VAR_RESPONSE_IP_TAG = 193, /* VAR_RESPONSE_IP_TAG */
323 YYSYMBOL_VAR_RESPONSE_IP = 194, /* VAR_RESPONSE_IP */
324 YYSYMBOL_VAR_RESPONSE_IP_DATA = 195, /* VAR_RESPONSE_IP_DATA */
325 YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 196, /* VAR_HARDEN_ALGO_DOWNGRADE */
326 YYSYMBOL_VAR_IP_TRANSPARENT = 197, /* VAR_IP_TRANSPARENT */
327 YYSYMBOL_VAR_IP_DSCP = 198, /* VAR_IP_DSCP */
328 YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 199, /* VAR_DISABLE_DNSSEC_LAME_CHECK */
329 YYSYMBOL_VAR_IP_RATELIMIT = 200, /* VAR_IP_RATELIMIT */
330 YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 201, /* VAR_IP_RATELIMIT_SLABS */
331 YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 202, /* VAR_IP_RATELIMIT_SIZE */
332 YYSYMBOL_VAR_RATELIMIT = 203, /* VAR_RATELIMIT */
333 YYSYMBOL_VAR_RATELIMIT_SLABS = 204, /* VAR_RATELIMIT_SLABS */
334 YYSYMBOL_VAR_RATELIMIT_SIZE = 205, /* VAR_RATELIMIT_SIZE */
335 YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 206, /* VAR_OUTBOUND_MSG_RETRY */
336 YYSYMBOL_VAR_MAX_SENT_COUNT = 207, /* VAR_MAX_SENT_COUNT */
337 YYSYMBOL_VAR_MAX_QUERY_RESTARTS = 208, /* VAR_MAX_QUERY_RESTARTS */
338 YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 209, /* VAR_RATELIMIT_FOR_DOMAIN */
339 YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 210, /* VAR_RATELIMIT_BELOW_DOMAIN */
340 YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 211, /* VAR_IP_RATELIMIT_FACTOR */
341 YYSYMBOL_VAR_RATELIMIT_FACTOR = 212, /* VAR_RATELIMIT_FACTOR */
342 YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 213, /* VAR_IP_RATELIMIT_BACKOFF */
343 YYSYMBOL_VAR_RATELIMIT_BACKOFF = 214, /* VAR_RATELIMIT_BACKOFF */
344 YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 215, /* VAR_SEND_CLIENT_SUBNET */
345 YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 216, /* VAR_CLIENT_SUBNET_ZONE */
346 YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 217, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */
347 YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 218, /* VAR_CLIENT_SUBNET_OPCODE */
348 YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 219, /* VAR_MAX_CLIENT_SUBNET_IPV4 */
349 YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 220, /* VAR_MAX_CLIENT_SUBNET_IPV6 */
350 YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 221, /* VAR_MIN_CLIENT_SUBNET_IPV4 */
351 YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 222, /* VAR_MIN_CLIENT_SUBNET_IPV6 */
352 YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 223, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */
353 YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 224, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */
354 YYSYMBOL_VAR_CAPS_WHITELIST = 225, /* VAR_CAPS_WHITELIST */
355 YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 226, /* VAR_CACHE_MAX_NEGATIVE_TTL */
356 YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 227, /* VAR_PERMIT_SMALL_HOLDDOWN */
357 YYSYMBOL_VAR_CACHE_MIN_NEGATIVE_TTL = 228, /* VAR_CACHE_MIN_NEGATIVE_TTL */
358 YYSYMBOL_VAR_QNAME_MINIMISATION = 229, /* VAR_QNAME_MINIMISATION */
359 YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 230, /* VAR_QNAME_MINIMISATION_STRICT */
360 YYSYMBOL_VAR_IP_FREEBIND = 231, /* VAR_IP_FREEBIND */
361 YYSYMBOL_VAR_DEFINE_TAG = 232, /* VAR_DEFINE_TAG */
362 YYSYMBOL_VAR_LOCAL_ZONE_TAG = 233, /* VAR_LOCAL_ZONE_TAG */
363 YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 234, /* VAR_ACCESS_CONTROL_TAG */
364 YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 235, /* VAR_LOCAL_ZONE_OVERRIDE */
365 YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 236, /* VAR_ACCESS_CONTROL_TAG_ACTION */
366 YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 237, /* VAR_ACCESS_CONTROL_TAG_DATA */
367 YYSYMBOL_VAR_VIEW = 238, /* VAR_VIEW */
368 YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 239, /* VAR_ACCESS_CONTROL_VIEW */
369 YYSYMBOL_VAR_VIEW_FIRST = 240, /* VAR_VIEW_FIRST */
370 YYSYMBOL_VAR_SERVE_EXPIRED = 241, /* VAR_SERVE_EXPIRED */
371 YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 242, /* VAR_SERVE_EXPIRED_TTL */
372 YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 243, /* VAR_SERVE_EXPIRED_TTL_RESET */
373 YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 244, /* VAR_SERVE_EXPIRED_REPLY_TTL */
374 YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 245, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */
375 YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 246, /* VAR_EDE_SERVE_EXPIRED */
376 YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 247, /* VAR_SERVE_ORIGINAL_TTL */
377 YYSYMBOL_VAR_FAKE_DSA = 248, /* VAR_FAKE_DSA */
378 YYSYMBOL_VAR_FAKE_SHA1 = 249, /* VAR_FAKE_SHA1 */
379 YYSYMBOL_VAR_LOG_IDENTITY = 250, /* VAR_LOG_IDENTITY */
380 YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 251, /* VAR_HIDE_TRUSTANCHOR */
381 YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 252, /* VAR_HIDE_HTTP_USER_AGENT */
382 YYSYMBOL_VAR_HTTP_USER_AGENT = 253, /* VAR_HTTP_USER_AGENT */
383 YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 254, /* VAR_TRUST_ANCHOR_SIGNALING */
384 YYSYMBOL_VAR_AGGRESSIVE_NSEC = 255, /* VAR_AGGRESSIVE_NSEC */
385 YYSYMBOL_VAR_USE_SYSTEMD = 256, /* VAR_USE_SYSTEMD */
386 YYSYMBOL_VAR_SHM_ENABLE = 257, /* VAR_SHM_ENABLE */
387 YYSYMBOL_VAR_SHM_KEY = 258, /* VAR_SHM_KEY */
388 YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 259, /* VAR_ROOT_KEY_SENTINEL */
389 YYSYMBOL_VAR_DNSCRYPT = 260, /* VAR_DNSCRYPT */
390 YYSYMBOL_VAR_DNSCRYPT_ENABLE = 261, /* VAR_DNSCRYPT_ENABLE */
391 YYSYMBOL_VAR_DNSCRYPT_PORT = 262, /* VAR_DNSCRYPT_PORT */
392 YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 263, /* VAR_DNSCRYPT_PROVIDER */
393 YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 264, /* VAR_DNSCRYPT_SECRET_KEY */
394 YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 265, /* VAR_DNSCRYPT_PROVIDER_CERT */
395 YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 266, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */
396 YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 267, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */
397 YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 268, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */
398 YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 269, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */
399 YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 270, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */
400 YYSYMBOL_VAR_PAD_RESPONSES = 271, /* VAR_PAD_RESPONSES */
401 YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 272, /* VAR_PAD_RESPONSES_BLOCK_SIZE */
402 YYSYMBOL_VAR_PAD_QUERIES = 273, /* VAR_PAD_QUERIES */
403 YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 274, /* VAR_PAD_QUERIES_BLOCK_SIZE */
404 YYSYMBOL_VAR_IPSECMOD_ENABLED = 275, /* VAR_IPSECMOD_ENABLED */
405 YYSYMBOL_VAR_IPSECMOD_HOOK = 276, /* VAR_IPSECMOD_HOOK */
406 YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 277, /* VAR_IPSECMOD_IGNORE_BOGUS */
407 YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 278, /* VAR_IPSECMOD_MAX_TTL */
408 YYSYMBOL_VAR_IPSECMOD_WHITELIST = 279, /* VAR_IPSECMOD_WHITELIST */
409 YYSYMBOL_VAR_IPSECMOD_STRICT = 280, /* VAR_IPSECMOD_STRICT */
410 YYSYMBOL_VAR_CACHEDB = 281, /* VAR_CACHEDB */
411 YYSYMBOL_VAR_CACHEDB_BACKEND = 282, /* VAR_CACHEDB_BACKEND */
412 YYSYMBOL_VAR_CACHEDB_SECRETSEED = 283, /* VAR_CACHEDB_SECRETSEED */
413 YYSYMBOL_VAR_CACHEDB_REDISHOST = 284, /* VAR_CACHEDB_REDISHOST */
414 YYSYMBOL_VAR_CACHEDB_REDISREPLICAHOST = 285, /* VAR_CACHEDB_REDISREPLICAHOST */
415 YYSYMBOL_VAR_CACHEDB_REDISPORT = 286, /* VAR_CACHEDB_REDISPORT */
416 YYSYMBOL_VAR_CACHEDB_REDISREPLICAPORT = 287, /* VAR_CACHEDB_REDISREPLICAPORT */
417 YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 288, /* VAR_CACHEDB_REDISTIMEOUT */
418 YYSYMBOL_VAR_CACHEDB_REDISREPLICATIMEOUT = 289, /* VAR_CACHEDB_REDISREPLICATIMEOUT */
419 YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 290, /* VAR_CACHEDB_REDISEXPIRERECORDS */
420 YYSYMBOL_VAR_CACHEDB_REDISPATH = 291, /* VAR_CACHEDB_REDISPATH */
421 YYSYMBOL_VAR_CACHEDB_REDISREPLICAPATH = 292, /* VAR_CACHEDB_REDISREPLICAPATH */
422 YYSYMBOL_VAR_CACHEDB_REDISPASSWORD = 293, /* VAR_CACHEDB_REDISPASSWORD */
423 YYSYMBOL_VAR_CACHEDB_REDISREPLICAPASSWORD = 294, /* VAR_CACHEDB_REDISREPLICAPASSWORD */
424 YYSYMBOL_VAR_CACHEDB_REDISLOGICALDB = 295, /* VAR_CACHEDB_REDISLOGICALDB */
425 YYSYMBOL_VAR_CACHEDB_REDISREPLICALOGICALDB = 296, /* VAR_CACHEDB_REDISREPLICALOGICALDB */
426 YYSYMBOL_VAR_CACHEDB_REDISCOMMANDTIMEOUT = 297, /* VAR_CACHEDB_REDISCOMMANDTIMEOUT */
427 YYSYMBOL_VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT = 298, /* VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT */
428 YYSYMBOL_VAR_CACHEDB_REDISCONNECTTIMEOUT = 299, /* VAR_CACHEDB_REDISCONNECTTIMEOUT */
429 YYSYMBOL_VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT = 300, /* VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT */
430 YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 301, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */
431 YYSYMBOL_VAR_FOR_UPSTREAM = 302, /* VAR_FOR_UPSTREAM */
432 YYSYMBOL_VAR_AUTH_ZONE = 303, /* VAR_AUTH_ZONE */
433 YYSYMBOL_VAR_ZONEFILE = 304, /* VAR_ZONEFILE */
434 YYSYMBOL_VAR_MASTER = 305, /* VAR_MASTER */
435 YYSYMBOL_VAR_URL = 306, /* VAR_URL */
436 YYSYMBOL_VAR_FOR_DOWNSTREAM = 307, /* VAR_FOR_DOWNSTREAM */
437 YYSYMBOL_VAR_FALLBACK_ENABLED = 308, /* VAR_FALLBACK_ENABLED */
438 YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 309, /* VAR_TLS_ADDITIONAL_PORT */
439 YYSYMBOL_VAR_LOW_RTT = 310, /* VAR_LOW_RTT */
440 YYSYMBOL_VAR_LOW_RTT_PERMIL = 311, /* VAR_LOW_RTT_PERMIL */
441 YYSYMBOL_VAR_FAST_SERVER_PERMIL = 312, /* VAR_FAST_SERVER_PERMIL */
442 YYSYMBOL_VAR_FAST_SERVER_NUM = 313, /* VAR_FAST_SERVER_NUM */
443 YYSYMBOL_VAR_ALLOW_NOTIFY = 314, /* VAR_ALLOW_NOTIFY */
444 YYSYMBOL_VAR_TLS_WIN_CERT = 315, /* VAR_TLS_WIN_CERT */
445 YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 316, /* VAR_TCP_CONNECTION_LIMIT */
446 YYSYMBOL_VAR_ANSWER_COOKIE = 317, /* VAR_ANSWER_COOKIE */
447 YYSYMBOL_VAR_COOKIE_SECRET = 318, /* VAR_COOKIE_SECRET */
448 YYSYMBOL_VAR_IP_RATELIMIT_COOKIE = 319, /* VAR_IP_RATELIMIT_COOKIE */
449 YYSYMBOL_VAR_FORWARD_NO_CACHE = 320, /* VAR_FORWARD_NO_CACHE */
450 YYSYMBOL_VAR_STUB_NO_CACHE = 321, /* VAR_STUB_NO_CACHE */
451 YYSYMBOL_VAR_LOG_SERVFAIL = 322, /* VAR_LOG_SERVFAIL */
452 YYSYMBOL_VAR_DENY_ANY = 323, /* VAR_DENY_ANY */
453 YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 324, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */
454 YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 325, /* VAR_LOG_TAG_QUERYREPLY */
455 YYSYMBOL_VAR_DISCARD_TIMEOUT = 326, /* VAR_DISCARD_TIMEOUT */
456 YYSYMBOL_VAR_WAIT_LIMIT = 327, /* VAR_WAIT_LIMIT */
457 YYSYMBOL_VAR_WAIT_LIMIT_COOKIE = 328, /* VAR_WAIT_LIMIT_COOKIE */
458 YYSYMBOL_VAR_WAIT_LIMIT_NETBLOCK = 329, /* VAR_WAIT_LIMIT_NETBLOCK */
459 YYSYMBOL_VAR_WAIT_LIMIT_COOKIE_NETBLOCK = 330, /* VAR_WAIT_LIMIT_COOKIE_NETBLOCK */
460 YYSYMBOL_VAR_STREAM_WAIT_SIZE = 331, /* VAR_STREAM_WAIT_SIZE */
461 YYSYMBOL_VAR_TLS_CIPHERS = 332, /* VAR_TLS_CIPHERS */
462 YYSYMBOL_VAR_TLS_CIPHERSUITES = 333, /* VAR_TLS_CIPHERSUITES */
463 YYSYMBOL_VAR_TLS_USE_SNI = 334, /* VAR_TLS_USE_SNI */
464 YYSYMBOL_VAR_IPSET = 335, /* VAR_IPSET */
465 YYSYMBOL_VAR_IPSET_NAME_V4 = 336, /* VAR_IPSET_NAME_V4 */
466 YYSYMBOL_VAR_IPSET_NAME_V6 = 337, /* VAR_IPSET_NAME_V6 */
467 YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 338, /* VAR_TLS_SESSION_TICKET_KEYS */
468 YYSYMBOL_VAR_RPZ = 339, /* VAR_RPZ */
469 YYSYMBOL_VAR_TAGS = 340, /* VAR_TAGS */
470 YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 341, /* VAR_RPZ_ACTION_OVERRIDE */
471 YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 342, /* VAR_RPZ_CNAME_OVERRIDE */
472 YYSYMBOL_VAR_RPZ_LOG = 343, /* VAR_RPZ_LOG */
473 YYSYMBOL_VAR_RPZ_LOG_NAME = 344, /* VAR_RPZ_LOG_NAME */
474 YYSYMBOL_VAR_DYNLIB = 345, /* VAR_DYNLIB */
475 YYSYMBOL_VAR_DYNLIB_FILE = 346, /* VAR_DYNLIB_FILE */
476 YYSYMBOL_VAR_EDNS_CLIENT_STRING = 347, /* VAR_EDNS_CLIENT_STRING */
477 YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 348, /* VAR_EDNS_CLIENT_STRING_OPCODE */
478 YYSYMBOL_VAR_NSID = 349, /* VAR_NSID */
479 YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 350, /* VAR_ZONEMD_PERMISSIVE_MODE */
480 YYSYMBOL_VAR_ZONEMD_CHECK = 351, /* VAR_ZONEMD_CHECK */
481 YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 352, /* VAR_ZONEMD_REJECT_ABSENCE */
482 YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 353, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */
483 YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 354, /* VAR_INTERFACE_AUTOMATIC_PORTS */
484 YYSYMBOL_VAR_EDE = 355, /* VAR_EDE */
485 YYSYMBOL_VAR_DNS_ERROR_REPORTING = 356, /* VAR_DNS_ERROR_REPORTING */
486 YYSYMBOL_VAR_INTERFACE_ACTION = 357, /* VAR_INTERFACE_ACTION */
487 YYSYMBOL_VAR_INTERFACE_VIEW = 358, /* VAR_INTERFACE_VIEW */
488 YYSYMBOL_VAR_INTERFACE_TAG = 359, /* VAR_INTERFACE_TAG */
489 YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 360, /* VAR_INTERFACE_TAG_ACTION */
490 YYSYMBOL_VAR_INTERFACE_TAG_DATA = 361, /* VAR_INTERFACE_TAG_DATA */
491 YYSYMBOL_VAR_QUIC_PORT = 362, /* VAR_QUIC_PORT */
492 YYSYMBOL_VAR_QUIC_SIZE = 363, /* VAR_QUIC_SIZE */
493 YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 364, /* VAR_PROXY_PROTOCOL_PORT */
494 YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 365, /* VAR_STATISTICS_INHIBIT_ZERO */
495 YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 366, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */
496 YYSYMBOL_VAR_DISABLE_EDNS_DO = 367, /* VAR_DISABLE_EDNS_DO */
497 YYSYMBOL_VAR_CACHEDB_NO_STORE = 368, /* VAR_CACHEDB_NO_STORE */
498 YYSYMBOL_VAR_LOG_DESTADDR = 369, /* VAR_LOG_DESTADDR */
499 YYSYMBOL_VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED = 370, /* VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED */
500 YYSYMBOL_VAR_COOKIE_SECRET_FILE = 371, /* VAR_COOKIE_SECRET_FILE */
501 YYSYMBOL_VAR_ITER_SCRUB_NS = 372, /* VAR_ITER_SCRUB_NS */
502 YYSYMBOL_VAR_ITER_SCRUB_CNAME = 373, /* VAR_ITER_SCRUB_CNAME */
503 YYSYMBOL_VAR_MAX_GLOBAL_QUOTA = 374, /* VAR_MAX_GLOBAL_QUOTA */
504 YYSYMBOL_VAR_HARDEN_UNVERIFIED_GLUE = 375, /* VAR_HARDEN_UNVERIFIED_GLUE */
505 YYSYMBOL_VAR_LOG_TIME_ISO = 376, /* VAR_LOG_TIME_ISO */
506 YYSYMBOL_YYACCEPT = 377, /* $accept */
507 YYSYMBOL_toplevelvars = 378, /* toplevelvars */
508 YYSYMBOL_toplevelvar = 379, /* toplevelvar */
509 YYSYMBOL_force_toplevel = 380, /* force_toplevel */
510 YYSYMBOL_serverstart = 381, /* serverstart */
511 YYSYMBOL_contents_server = 382, /* contents_server */
512 YYSYMBOL_content_server = 383, /* content_server */
513 YYSYMBOL_stub_clause = 384, /* stub_clause */
514 YYSYMBOL_stubstart = 385, /* stubstart */
515 YYSYMBOL_contents_stub = 386, /* contents_stub */
516 YYSYMBOL_content_stub = 387, /* content_stub */
517 YYSYMBOL_forward_clause = 388, /* forward_clause */
518 YYSYMBOL_forwardstart = 389, /* forwardstart */
519 YYSYMBOL_contents_forward = 390, /* contents_forward */
520 YYSYMBOL_content_forward = 391, /* content_forward */
521 YYSYMBOL_view_clause = 392, /* view_clause */
522 YYSYMBOL_viewstart = 393, /* viewstart */
523 YYSYMBOL_contents_view = 394, /* contents_view */
524 YYSYMBOL_content_view = 395, /* content_view */
525 YYSYMBOL_authstart = 396, /* authstart */
526 YYSYMBOL_contents_auth = 397, /* contents_auth */
527 YYSYMBOL_content_auth = 398, /* content_auth */
528 YYSYMBOL_rpz_tag = 399, /* rpz_tag */
529 YYSYMBOL_rpz_action_override = 400, /* rpz_action_override */
530 YYSYMBOL_rpz_cname_override = 401, /* rpz_cname_override */
531 YYSYMBOL_rpz_log = 402, /* rpz_log */
532 YYSYMBOL_rpz_log_name = 403, /* rpz_log_name */
533 YYSYMBOL_rpz_signal_nxdomain_ra = 404, /* rpz_signal_nxdomain_ra */
534 YYSYMBOL_rpzstart = 405, /* rpzstart */
535 YYSYMBOL_contents_rpz = 406, /* contents_rpz */
536 YYSYMBOL_content_rpz = 407, /* content_rpz */
537 YYSYMBOL_server_num_threads = 408, /* server_num_threads */
538 YYSYMBOL_server_verbosity = 409, /* server_verbosity */
539 YYSYMBOL_server_statistics_interval = 410, /* server_statistics_interval */
540 YYSYMBOL_server_statistics_cumulative = 411, /* server_statistics_cumulative */
541 YYSYMBOL_server_extended_statistics = 412, /* server_extended_statistics */
542 YYSYMBOL_server_statistics_inhibit_zero = 413, /* server_statistics_inhibit_zero */
543 YYSYMBOL_server_shm_enable = 414, /* server_shm_enable */
544 YYSYMBOL_server_shm_key = 415, /* server_shm_key */
545 YYSYMBOL_server_port = 416, /* server_port */
546 YYSYMBOL_server_send_client_subnet = 417, /* server_send_client_subnet */
547 YYSYMBOL_server_client_subnet_zone = 418, /* server_client_subnet_zone */
548 YYSYMBOL_server_client_subnet_always_forward = 419, /* server_client_subnet_always_forward */
549 YYSYMBOL_server_client_subnet_opcode = 420, /* server_client_subnet_opcode */
550 YYSYMBOL_server_max_client_subnet_ipv4 = 421, /* server_max_client_subnet_ipv4 */
551 YYSYMBOL_server_max_client_subnet_ipv6 = 422, /* server_max_client_subnet_ipv6 */
552 YYSYMBOL_server_min_client_subnet_ipv4 = 423, /* server_min_client_subnet_ipv4 */
553 YYSYMBOL_server_min_client_subnet_ipv6 = 424, /* server_min_client_subnet_ipv6 */
554 YYSYMBOL_server_max_ecs_tree_size_ipv4 = 425, /* server_max_ecs_tree_size_ipv4 */
555 YYSYMBOL_server_max_ecs_tree_size_ipv6 = 426, /* server_max_ecs_tree_size_ipv6 */
556 YYSYMBOL_server_interface = 427, /* server_interface */
557 YYSYMBOL_server_outgoing_interface = 428, /* server_outgoing_interface */
558 YYSYMBOL_server_outgoing_range = 429, /* server_outgoing_range */
559 YYSYMBOL_server_outgoing_port_permit = 430, /* server_outgoing_port_permit */
560 YYSYMBOL_server_outgoing_port_avoid = 431, /* server_outgoing_port_avoid */
561 YYSYMBOL_server_outgoing_num_tcp = 432, /* server_outgoing_num_tcp */
562 YYSYMBOL_server_incoming_num_tcp = 433, /* server_incoming_num_tcp */
563 YYSYMBOL_server_interface_automatic = 434, /* server_interface_automatic */
564 YYSYMBOL_server_interface_automatic_ports = 435, /* server_interface_automatic_ports */
565 YYSYMBOL_server_do_ip4 = 436, /* server_do_ip4 */
566 YYSYMBOL_server_do_ip6 = 437, /* server_do_ip6 */
567 YYSYMBOL_server_do_nat64 = 438, /* server_do_nat64 */
568 YYSYMBOL_server_do_udp = 439, /* server_do_udp */
569 YYSYMBOL_server_do_tcp = 440, /* server_do_tcp */
570 YYSYMBOL_server_prefer_ip4 = 441, /* server_prefer_ip4 */
571 YYSYMBOL_server_prefer_ip6 = 442, /* server_prefer_ip6 */
572 YYSYMBOL_server_tcp_mss = 443, /* server_tcp_mss */
573 YYSYMBOL_server_outgoing_tcp_mss = 444, /* server_outgoing_tcp_mss */
574 YYSYMBOL_server_tcp_idle_timeout = 445, /* server_tcp_idle_timeout */
575 YYSYMBOL_server_max_reuse_tcp_queries = 446, /* server_max_reuse_tcp_queries */
576 YYSYMBOL_server_tcp_reuse_timeout = 447, /* server_tcp_reuse_timeout */
577 YYSYMBOL_server_tcp_auth_query_timeout = 448, /* server_tcp_auth_query_timeout */
578 YYSYMBOL_server_tcp_keepalive = 449, /* server_tcp_keepalive */
579 YYSYMBOL_server_tcp_keepalive_timeout = 450, /* server_tcp_keepalive_timeout */
580 YYSYMBOL_server_sock_queue_timeout = 451, /* server_sock_queue_timeout */
581 YYSYMBOL_server_tcp_upstream = 452, /* server_tcp_upstream */
582 YYSYMBOL_server_udp_upstream_without_downstream = 453, /* server_udp_upstream_without_downstream */
583 YYSYMBOL_server_ssl_upstream = 454, /* server_ssl_upstream */
584 YYSYMBOL_server_ssl_service_key = 455, /* server_ssl_service_key */
585 YYSYMBOL_server_ssl_service_pem = 456, /* server_ssl_service_pem */
586 YYSYMBOL_server_ssl_port = 457, /* server_ssl_port */
587 YYSYMBOL_server_tls_cert_bundle = 458, /* server_tls_cert_bundle */
588 YYSYMBOL_server_tls_win_cert = 459, /* server_tls_win_cert */
589 YYSYMBOL_server_tls_additional_port = 460, /* server_tls_additional_port */
590 YYSYMBOL_server_tls_ciphers = 461, /* server_tls_ciphers */
591 YYSYMBOL_server_tls_ciphersuites = 462, /* server_tls_ciphersuites */
592 YYSYMBOL_server_tls_session_ticket_keys = 463, /* server_tls_session_ticket_keys */
593 YYSYMBOL_server_tls_use_sni = 464, /* server_tls_use_sni */
594 YYSYMBOL_server_https_port = 465, /* server_https_port */
595 YYSYMBOL_server_http_endpoint = 466, /* server_http_endpoint */
596 YYSYMBOL_server_http_max_streams = 467, /* server_http_max_streams */
597 YYSYMBOL_server_http_query_buffer_size = 468, /* server_http_query_buffer_size */
598 YYSYMBOL_server_http_response_buffer_size = 469, /* server_http_response_buffer_size */
599 YYSYMBOL_server_http_nodelay = 470, /* server_http_nodelay */
600 YYSYMBOL_server_http_notls_downstream = 471, /* server_http_notls_downstream */
601 YYSYMBOL_server_quic_port = 472, /* server_quic_port */
602 YYSYMBOL_server_quic_size = 473, /* server_quic_size */
603 YYSYMBOL_server_use_systemd = 474, /* server_use_systemd */
604 YYSYMBOL_server_do_daemonize = 475, /* server_do_daemonize */
605 YYSYMBOL_server_use_syslog = 476, /* server_use_syslog */
606 YYSYMBOL_server_log_time_ascii = 477, /* server_log_time_ascii */
607 YYSYMBOL_server_log_time_iso = 478, /* server_log_time_iso */
608 YYSYMBOL_server_log_queries = 479, /* server_log_queries */
609 YYSYMBOL_server_log_replies = 480, /* server_log_replies */
610 YYSYMBOL_server_log_tag_queryreply = 481, /* server_log_tag_queryreply */
611 YYSYMBOL_server_log_servfail = 482, /* server_log_servfail */
612 YYSYMBOL_server_log_destaddr = 483, /* server_log_destaddr */
613 YYSYMBOL_server_log_local_actions = 484, /* server_log_local_actions */
614 YYSYMBOL_server_chroot = 485, /* server_chroot */
615 YYSYMBOL_server_username = 486, /* server_username */
616 YYSYMBOL_server_directory = 487, /* server_directory */
617 YYSYMBOL_server_logfile = 488, /* server_logfile */
618 YYSYMBOL_server_pidfile = 489, /* server_pidfile */
619 YYSYMBOL_server_root_hints = 490, /* server_root_hints */
620 YYSYMBOL_server_dlv_anchor_file = 491, /* server_dlv_anchor_file */
621 YYSYMBOL_server_dlv_anchor = 492, /* server_dlv_anchor */
622 YYSYMBOL_server_auto_trust_anchor_file = 493, /* server_auto_trust_anchor_file */
623 YYSYMBOL_server_trust_anchor_file = 494, /* server_trust_anchor_file */
624 YYSYMBOL_server_trusted_keys_file = 495, /* server_trusted_keys_file */
625 YYSYMBOL_server_trust_anchor = 496, /* server_trust_anchor */
626 YYSYMBOL_server_trust_anchor_signaling = 497, /* server_trust_anchor_signaling */
627 YYSYMBOL_server_root_key_sentinel = 498, /* server_root_key_sentinel */
628 YYSYMBOL_server_domain_insecure = 499, /* server_domain_insecure */
629 YYSYMBOL_server_hide_identity = 500, /* server_hide_identity */
630 YYSYMBOL_server_hide_version = 501, /* server_hide_version */
631 YYSYMBOL_server_hide_trustanchor = 502, /* server_hide_trustanchor */
632 YYSYMBOL_server_hide_http_user_agent = 503, /* server_hide_http_user_agent */
633 YYSYMBOL_server_identity = 504, /* server_identity */
634 YYSYMBOL_server_version = 505, /* server_version */
635 YYSYMBOL_server_http_user_agent = 506, /* server_http_user_agent */
636 YYSYMBOL_server_nsid = 507, /* server_nsid */
637 YYSYMBOL_server_so_rcvbuf = 508, /* server_so_rcvbuf */
638 YYSYMBOL_server_so_sndbuf = 509, /* server_so_sndbuf */
639 YYSYMBOL_server_so_reuseport = 510, /* server_so_reuseport */
640 YYSYMBOL_server_ip_transparent = 511, /* server_ip_transparent */
641 YYSYMBOL_server_ip_freebind = 512, /* server_ip_freebind */
642 YYSYMBOL_server_ip_dscp = 513, /* server_ip_dscp */
643 YYSYMBOL_server_stream_wait_size = 514, /* server_stream_wait_size */
644 YYSYMBOL_server_edns_buffer_size = 515, /* server_edns_buffer_size */
645 YYSYMBOL_server_msg_buffer_size = 516, /* server_msg_buffer_size */
646 YYSYMBOL_server_msg_cache_size = 517, /* server_msg_cache_size */
647 YYSYMBOL_server_msg_cache_slabs = 518, /* server_msg_cache_slabs */
648 YYSYMBOL_server_num_queries_per_thread = 519, /* server_num_queries_per_thread */
649 YYSYMBOL_server_jostle_timeout = 520, /* server_jostle_timeout */
650 YYSYMBOL_server_delay_close = 521, /* server_delay_close */
651 YYSYMBOL_server_udp_connect = 522, /* server_udp_connect */
652 YYSYMBOL_server_unblock_lan_zones = 523, /* server_unblock_lan_zones */
653 YYSYMBOL_server_insecure_lan_zones = 524, /* server_insecure_lan_zones */
654 YYSYMBOL_server_rrset_cache_size = 525, /* server_rrset_cache_size */
655 YYSYMBOL_server_rrset_cache_slabs = 526, /* server_rrset_cache_slabs */
656 YYSYMBOL_server_infra_host_ttl = 527, /* server_infra_host_ttl */
657 YYSYMBOL_server_infra_lame_ttl = 528, /* server_infra_lame_ttl */
658 YYSYMBOL_server_infra_cache_numhosts = 529, /* server_infra_cache_numhosts */
659 YYSYMBOL_server_infra_cache_lame_size = 530, /* server_infra_cache_lame_size */
660 YYSYMBOL_server_infra_cache_slabs = 531, /* server_infra_cache_slabs */
661 YYSYMBOL_server_infra_cache_min_rtt = 532, /* server_infra_cache_min_rtt */
662 YYSYMBOL_server_infra_cache_max_rtt = 533, /* server_infra_cache_max_rtt */
663 YYSYMBOL_server_infra_keep_probing = 534, /* server_infra_keep_probing */
664 YYSYMBOL_server_target_fetch_policy = 535, /* server_target_fetch_policy */
665 YYSYMBOL_server_harden_short_bufsize = 536, /* server_harden_short_bufsize */
666 YYSYMBOL_server_harden_large_queries = 537, /* server_harden_large_queries */
667 YYSYMBOL_server_harden_glue = 538, /* server_harden_glue */
668 YYSYMBOL_server_harden_unverified_glue = 539, /* server_harden_unverified_glue */
669 YYSYMBOL_server_harden_dnssec_stripped = 540, /* server_harden_dnssec_stripped */
670 YYSYMBOL_server_harden_below_nxdomain = 541, /* server_harden_below_nxdomain */
671 YYSYMBOL_server_harden_referral_path = 542, /* server_harden_referral_path */
672 YYSYMBOL_server_harden_algo_downgrade = 543, /* server_harden_algo_downgrade */
673 YYSYMBOL_server_harden_unknown_additional = 544, /* server_harden_unknown_additional */
674 YYSYMBOL_server_use_caps_for_id = 545, /* server_use_caps_for_id */
675 YYSYMBOL_server_caps_whitelist = 546, /* server_caps_whitelist */
676 YYSYMBOL_server_private_address = 547, /* server_private_address */
677 YYSYMBOL_server_private_domain = 548, /* server_private_domain */
678 YYSYMBOL_server_prefetch = 549, /* server_prefetch */
679 YYSYMBOL_server_prefetch_key = 550, /* server_prefetch_key */
680 YYSYMBOL_server_deny_any = 551, /* server_deny_any */
681 YYSYMBOL_server_unwanted_reply_threshold = 552, /* server_unwanted_reply_threshold */
682 YYSYMBOL_server_do_not_query_address = 553, /* server_do_not_query_address */
683 YYSYMBOL_server_do_not_query_localhost = 554, /* server_do_not_query_localhost */
684 YYSYMBOL_server_access_control = 555, /* server_access_control */
685 YYSYMBOL_server_interface_action = 556, /* server_interface_action */
686 YYSYMBOL_server_module_conf = 557, /* server_module_conf */
687 YYSYMBOL_server_val_override_date = 558, /* server_val_override_date */
688 YYSYMBOL_server_val_sig_skew_min = 559, /* server_val_sig_skew_min */
689 YYSYMBOL_server_val_sig_skew_max = 560, /* server_val_sig_skew_max */
690 YYSYMBOL_server_val_max_restart = 561, /* server_val_max_restart */
691 YYSYMBOL_server_cache_max_ttl = 562, /* server_cache_max_ttl */
692 YYSYMBOL_server_cache_max_negative_ttl = 563, /* server_cache_max_negative_ttl */
693 YYSYMBOL_server_cache_min_negative_ttl = 564, /* server_cache_min_negative_ttl */
694 YYSYMBOL_server_cache_min_ttl = 565, /* server_cache_min_ttl */
695 YYSYMBOL_server_bogus_ttl = 566, /* server_bogus_ttl */
696 YYSYMBOL_server_val_clean_additional = 567, /* server_val_clean_additional */
697 YYSYMBOL_server_val_permissive_mode = 568, /* server_val_permissive_mode */
698 YYSYMBOL_server_aggressive_nsec = 569, /* server_aggressive_nsec */
699 YYSYMBOL_server_ignore_cd_flag = 570, /* server_ignore_cd_flag */
700 YYSYMBOL_server_disable_edns_do = 571, /* server_disable_edns_do */
701 YYSYMBOL_server_serve_expired = 572, /* server_serve_expired */
702 YYSYMBOL_server_serve_expired_ttl = 573, /* server_serve_expired_ttl */
703 YYSYMBOL_server_serve_expired_ttl_reset = 574, /* server_serve_expired_ttl_reset */
704 YYSYMBOL_server_serve_expired_reply_ttl = 575, /* server_serve_expired_reply_ttl */
705 YYSYMBOL_server_serve_expired_client_timeout = 576, /* server_serve_expired_client_timeout */
706 YYSYMBOL_server_ede_serve_expired = 577, /* server_ede_serve_expired */
707 YYSYMBOL_server_serve_original_ttl = 578, /* server_serve_original_ttl */
708 YYSYMBOL_server_fake_dsa = 579, /* server_fake_dsa */
709 YYSYMBOL_server_fake_sha1 = 580, /* server_fake_sha1 */
710 YYSYMBOL_server_val_log_level = 581, /* server_val_log_level */
711 YYSYMBOL_server_val_nsec3_keysize_iterations = 582, /* server_val_nsec3_keysize_iterations */
712 YYSYMBOL_server_zonemd_permissive_mode = 583, /* server_zonemd_permissive_mode */
713 YYSYMBOL_server_add_holddown = 584, /* server_add_holddown */
714 YYSYMBOL_server_del_holddown = 585, /* server_del_holddown */
715 YYSYMBOL_server_keep_missing = 586, /* server_keep_missing */
716 YYSYMBOL_server_permit_small_holddown = 587, /* server_permit_small_holddown */
717 YYSYMBOL_server_key_cache_size = 588, /* server_key_cache_size */
718 YYSYMBOL_server_key_cache_slabs = 589, /* server_key_cache_slabs */
719 YYSYMBOL_server_neg_cache_size = 590, /* server_neg_cache_size */
720 YYSYMBOL_server_local_zone = 591, /* server_local_zone */
721 YYSYMBOL_server_local_data = 592, /* server_local_data */
722 YYSYMBOL_server_local_data_ptr = 593, /* server_local_data_ptr */
723 YYSYMBOL_server_minimal_responses = 594, /* server_minimal_responses */
724 YYSYMBOL_server_rrset_roundrobin = 595, /* server_rrset_roundrobin */
725 YYSYMBOL_server_unknown_server_time_limit = 596, /* server_unknown_server_time_limit */
726 YYSYMBOL_server_discard_timeout = 597, /* server_discard_timeout */
727 YYSYMBOL_server_wait_limit = 598, /* server_wait_limit */
728 YYSYMBOL_server_wait_limit_cookie = 599, /* server_wait_limit_cookie */
729 YYSYMBOL_server_wait_limit_netblock = 600, /* server_wait_limit_netblock */
730 YYSYMBOL_server_wait_limit_cookie_netblock = 601, /* server_wait_limit_cookie_netblock */
731 YYSYMBOL_server_max_udp_size = 602, /* server_max_udp_size */
732 YYSYMBOL_server_dns64_prefix = 603, /* server_dns64_prefix */
733 YYSYMBOL_server_dns64_synthall = 604, /* server_dns64_synthall */
734 YYSYMBOL_server_dns64_ignore_aaaa = 605, /* server_dns64_ignore_aaaa */
735 YYSYMBOL_server_nat64_prefix = 606, /* server_nat64_prefix */
736 YYSYMBOL_server_define_tag = 607, /* server_define_tag */
737 YYSYMBOL_server_local_zone_tag = 608, /* server_local_zone_tag */
738 YYSYMBOL_server_access_control_tag = 609, /* server_access_control_tag */
739 YYSYMBOL_server_access_control_tag_action = 610, /* server_access_control_tag_action */
740 YYSYMBOL_server_access_control_tag_data = 611, /* server_access_control_tag_data */
741 YYSYMBOL_server_local_zone_override = 612, /* server_local_zone_override */
742 YYSYMBOL_server_access_control_view = 613, /* server_access_control_view */
743 YYSYMBOL_server_interface_tag = 614, /* server_interface_tag */
744 YYSYMBOL_server_interface_tag_action = 615, /* server_interface_tag_action */
745 YYSYMBOL_server_interface_tag_data = 616, /* server_interface_tag_data */
746 YYSYMBOL_server_interface_view = 617, /* server_interface_view */
747 YYSYMBOL_server_response_ip_tag = 618, /* server_response_ip_tag */
748 YYSYMBOL_server_ip_ratelimit = 619, /* server_ip_ratelimit */
749 YYSYMBOL_server_ip_ratelimit_cookie = 620, /* server_ip_ratelimit_cookie */
750 YYSYMBOL_server_ratelimit = 621, /* server_ratelimit */
751 YYSYMBOL_server_ip_ratelimit_size = 622, /* server_ip_ratelimit_size */
752 YYSYMBOL_server_ratelimit_size = 623, /* server_ratelimit_size */
753 YYSYMBOL_server_ip_ratelimit_slabs = 624, /* server_ip_ratelimit_slabs */
754 YYSYMBOL_server_ratelimit_slabs = 625, /* server_ratelimit_slabs */
755 YYSYMBOL_server_ratelimit_for_domain = 626, /* server_ratelimit_for_domain */
756 YYSYMBOL_server_ratelimit_below_domain = 627, /* server_ratelimit_below_domain */
757 YYSYMBOL_server_ip_ratelimit_factor = 628, /* server_ip_ratelimit_factor */
758 YYSYMBOL_server_ratelimit_factor = 629, /* server_ratelimit_factor */
759 YYSYMBOL_server_ip_ratelimit_backoff = 630, /* server_ip_ratelimit_backoff */
760 YYSYMBOL_server_ratelimit_backoff = 631, /* server_ratelimit_backoff */
761 YYSYMBOL_server_outbound_msg_retry = 632, /* server_outbound_msg_retry */
762 YYSYMBOL_server_max_sent_count = 633, /* server_max_sent_count */
763 YYSYMBOL_server_max_query_restarts = 634, /* server_max_query_restarts */
764 YYSYMBOL_server_low_rtt = 635, /* server_low_rtt */
765 YYSYMBOL_server_fast_server_num = 636, /* server_fast_server_num */
766 YYSYMBOL_server_fast_server_permil = 637, /* server_fast_server_permil */
767 YYSYMBOL_server_qname_minimisation = 638, /* server_qname_minimisation */
768 YYSYMBOL_server_qname_minimisation_strict = 639, /* server_qname_minimisation_strict */
769 YYSYMBOL_server_pad_responses = 640, /* server_pad_responses */
770 YYSYMBOL_server_pad_responses_block_size = 641, /* server_pad_responses_block_size */
771 YYSYMBOL_server_pad_queries = 642, /* server_pad_queries */
772 YYSYMBOL_server_pad_queries_block_size = 643, /* server_pad_queries_block_size */
773 YYSYMBOL_server_ipsecmod_enabled = 644, /* server_ipsecmod_enabled */
774 YYSYMBOL_server_ipsecmod_ignore_bogus = 645, /* server_ipsecmod_ignore_bogus */
775 YYSYMBOL_server_ipsecmod_hook = 646, /* server_ipsecmod_hook */
776 YYSYMBOL_server_ipsecmod_max_ttl = 647, /* server_ipsecmod_max_ttl */
777 YYSYMBOL_server_ipsecmod_whitelist = 648, /* server_ipsecmod_whitelist */
778 YYSYMBOL_server_ipsecmod_strict = 649, /* server_ipsecmod_strict */
779 YYSYMBOL_server_edns_client_string = 650, /* server_edns_client_string */
780 YYSYMBOL_server_edns_client_string_opcode = 651, /* server_edns_client_string_opcode */
781 YYSYMBOL_server_ede = 652, /* server_ede */
782 YYSYMBOL_server_dns_error_reporting = 653, /* server_dns_error_reporting */
783 YYSYMBOL_server_proxy_protocol_port = 654, /* server_proxy_protocol_port */
784 YYSYMBOL_stub_name = 655, /* stub_name */
785 YYSYMBOL_stub_host = 656, /* stub_host */
786 YYSYMBOL_stub_addr = 657, /* stub_addr */
787 YYSYMBOL_stub_first = 658, /* stub_first */
788 YYSYMBOL_stub_no_cache = 659, /* stub_no_cache */
789 YYSYMBOL_stub_ssl_upstream = 660, /* stub_ssl_upstream */
790 YYSYMBOL_stub_tcp_upstream = 661, /* stub_tcp_upstream */
791 YYSYMBOL_stub_prime = 662, /* stub_prime */
792 YYSYMBOL_forward_name = 663, /* forward_name */
793 YYSYMBOL_forward_host = 664, /* forward_host */
794 YYSYMBOL_forward_addr = 665, /* forward_addr */
795 YYSYMBOL_forward_first = 666, /* forward_first */
796 YYSYMBOL_forward_no_cache = 667, /* forward_no_cache */
797 YYSYMBOL_forward_ssl_upstream = 668, /* forward_ssl_upstream */
798 YYSYMBOL_forward_tcp_upstream = 669, /* forward_tcp_upstream */
799 YYSYMBOL_auth_name = 670, /* auth_name */
800 YYSYMBOL_auth_zonefile = 671, /* auth_zonefile */
801 YYSYMBOL_auth_master = 672, /* auth_master */
802 YYSYMBOL_auth_url = 673, /* auth_url */
803 YYSYMBOL_auth_allow_notify = 674, /* auth_allow_notify */
804 YYSYMBOL_auth_zonemd_check = 675, /* auth_zonemd_check */
805 YYSYMBOL_auth_zonemd_reject_absence = 676, /* auth_zonemd_reject_absence */
806 YYSYMBOL_auth_for_downstream = 677, /* auth_for_downstream */
807 YYSYMBOL_auth_for_upstream = 678, /* auth_for_upstream */
808 YYSYMBOL_auth_fallback_enabled = 679, /* auth_fallback_enabled */
809 YYSYMBOL_view_name = 680, /* view_name */
810 YYSYMBOL_view_local_zone = 681, /* view_local_zone */
811 YYSYMBOL_view_response_ip = 682, /* view_response_ip */
812 YYSYMBOL_view_response_ip_data = 683, /* view_response_ip_data */
813 YYSYMBOL_view_local_data = 684, /* view_local_data */
814 YYSYMBOL_view_local_data_ptr = 685, /* view_local_data_ptr */
815 YYSYMBOL_view_first = 686, /* view_first */
816 YYSYMBOL_rcstart = 687, /* rcstart */
817 YYSYMBOL_contents_rc = 688, /* contents_rc */
818 YYSYMBOL_content_rc = 689, /* content_rc */
819 YYSYMBOL_rc_control_enable = 690, /* rc_control_enable */
820 YYSYMBOL_rc_control_port = 691, /* rc_control_port */
821 YYSYMBOL_rc_control_interface = 692, /* rc_control_interface */
822 YYSYMBOL_rc_control_use_cert = 693, /* rc_control_use_cert */
823 YYSYMBOL_rc_server_key_file = 694, /* rc_server_key_file */
824 YYSYMBOL_rc_server_cert_file = 695, /* rc_server_cert_file */
825 YYSYMBOL_rc_control_key_file = 696, /* rc_control_key_file */
826 YYSYMBOL_rc_control_cert_file = 697, /* rc_control_cert_file */
827 YYSYMBOL_dtstart = 698, /* dtstart */
828 YYSYMBOL_contents_dt = 699, /* contents_dt */
829 YYSYMBOL_content_dt = 700, /* content_dt */
830 YYSYMBOL_dt_dnstap_enable = 701, /* dt_dnstap_enable */
831 YYSYMBOL_dt_dnstap_bidirectional = 702, /* dt_dnstap_bidirectional */
832 YYSYMBOL_dt_dnstap_socket_path = 703, /* dt_dnstap_socket_path */
833 YYSYMBOL_dt_dnstap_ip = 704, /* dt_dnstap_ip */
834 YYSYMBOL_dt_dnstap_tls = 705, /* dt_dnstap_tls */
835 YYSYMBOL_dt_dnstap_tls_server_name = 706, /* dt_dnstap_tls_server_name */
836 YYSYMBOL_dt_dnstap_tls_cert_bundle = 707, /* dt_dnstap_tls_cert_bundle */
837 YYSYMBOL_dt_dnstap_tls_client_key_file = 708, /* dt_dnstap_tls_client_key_file */
838 YYSYMBOL_dt_dnstap_tls_client_cert_file = 709, /* dt_dnstap_tls_client_cert_file */
839 YYSYMBOL_dt_dnstap_send_identity = 710, /* dt_dnstap_send_identity */
840 YYSYMBOL_dt_dnstap_send_version = 711, /* dt_dnstap_send_version */
841 YYSYMBOL_dt_dnstap_identity = 712, /* dt_dnstap_identity */
842 YYSYMBOL_dt_dnstap_version = 713, /* dt_dnstap_version */
843 YYSYMBOL_dt_dnstap_log_resolver_query_messages = 714, /* dt_dnstap_log_resolver_query_messages */
844 YYSYMBOL_dt_dnstap_log_resolver_response_messages = 715, /* dt_dnstap_log_resolver_response_messages */
845 YYSYMBOL_dt_dnstap_log_client_query_messages = 716, /* dt_dnstap_log_client_query_messages */
846 YYSYMBOL_dt_dnstap_log_client_response_messages = 717, /* dt_dnstap_log_client_response_messages */
847 YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 718, /* dt_dnstap_log_forwarder_query_messages */
848 YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 719, /* dt_dnstap_log_forwarder_response_messages */
849 YYSYMBOL_dt_dnstap_sample_rate = 720, /* dt_dnstap_sample_rate */
850 YYSYMBOL_pythonstart = 721, /* pythonstart */
851 YYSYMBOL_contents_py = 722, /* contents_py */
852 YYSYMBOL_content_py = 723, /* content_py */
853 YYSYMBOL_py_script = 724, /* py_script */
854 YYSYMBOL_dynlibstart = 725, /* dynlibstart */
855 YYSYMBOL_contents_dl = 726, /* contents_dl */
856 YYSYMBOL_content_dl = 727, /* content_dl */
857 YYSYMBOL_dl_file = 728, /* dl_file */
858 YYSYMBOL_server_disable_dnssec_lame_check = 729, /* server_disable_dnssec_lame_check */
859 YYSYMBOL_server_log_identity = 730, /* server_log_identity */
860 YYSYMBOL_server_response_ip = 731, /* server_response_ip */
861 YYSYMBOL_server_response_ip_data = 732, /* server_response_ip_data */
862 YYSYMBOL_dnscstart = 733, /* dnscstart */
863 YYSYMBOL_contents_dnsc = 734, /* contents_dnsc */
864 YYSYMBOL_content_dnsc = 735, /* content_dnsc */
865 YYSYMBOL_dnsc_dnscrypt_enable = 736, /* dnsc_dnscrypt_enable */
866 YYSYMBOL_dnsc_dnscrypt_port = 737, /* dnsc_dnscrypt_port */
867 YYSYMBOL_dnsc_dnscrypt_provider = 738, /* dnsc_dnscrypt_provider */
868 YYSYMBOL_dnsc_dnscrypt_provider_cert = 739, /* dnsc_dnscrypt_provider_cert */
869 YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 740, /* dnsc_dnscrypt_provider_cert_rotated */
870 YYSYMBOL_dnsc_dnscrypt_secret_key = 741, /* dnsc_dnscrypt_secret_key */
871 YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 742, /* dnsc_dnscrypt_shared_secret_cache_size */
872 YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 743, /* dnsc_dnscrypt_shared_secret_cache_slabs */
873 YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 744, /* dnsc_dnscrypt_nonce_cache_size */
874 YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 745, /* dnsc_dnscrypt_nonce_cache_slabs */
875 YYSYMBOL_cachedbstart = 746, /* cachedbstart */
876 YYSYMBOL_contents_cachedb = 747, /* contents_cachedb */
877 YYSYMBOL_content_cachedb = 748, /* content_cachedb */
878 YYSYMBOL_cachedb_backend_name = 749, /* cachedb_backend_name */
879 YYSYMBOL_cachedb_secret_seed = 750, /* cachedb_secret_seed */
880 YYSYMBOL_cachedb_no_store = 751, /* cachedb_no_store */
881 YYSYMBOL_cachedb_check_when_serve_expired = 752, /* cachedb_check_when_serve_expired */
882 YYSYMBOL_redis_server_host = 753, /* redis_server_host */
883 YYSYMBOL_redis_replica_server_host = 754, /* redis_replica_server_host */
884 YYSYMBOL_redis_server_port = 755, /* redis_server_port */
885 YYSYMBOL_redis_replica_server_port = 756, /* redis_replica_server_port */
886 YYSYMBOL_redis_server_path = 757, /* redis_server_path */
887 YYSYMBOL_redis_replica_server_path = 758, /* redis_replica_server_path */
888 YYSYMBOL_redis_server_password = 759, /* redis_server_password */
889 YYSYMBOL_redis_replica_server_password = 760, /* redis_replica_server_password */
890 YYSYMBOL_redis_timeout = 761, /* redis_timeout */
891 YYSYMBOL_redis_replica_timeout = 762, /* redis_replica_timeout */
892 YYSYMBOL_redis_command_timeout = 763, /* redis_command_timeout */
893 YYSYMBOL_redis_replica_command_timeout = 764, /* redis_replica_command_timeout */
894 YYSYMBOL_redis_connect_timeout = 765, /* redis_connect_timeout */
895 YYSYMBOL_redis_replica_connect_timeout = 766, /* redis_replica_connect_timeout */
896 YYSYMBOL_redis_expire_records = 767, /* redis_expire_records */
897 YYSYMBOL_redis_logical_db = 768, /* redis_logical_db */
898 YYSYMBOL_redis_replica_logical_db = 769, /* redis_replica_logical_db */
899 YYSYMBOL_server_tcp_connection_limit = 770, /* server_tcp_connection_limit */
900 YYSYMBOL_server_answer_cookie = 771, /* server_answer_cookie */
901 YYSYMBOL_server_cookie_secret = 772, /* server_cookie_secret */
902 YYSYMBOL_server_cookie_secret_file = 773, /* server_cookie_secret_file */
903 YYSYMBOL_server_iter_scrub_ns = 774, /* server_iter_scrub_ns */
904 YYSYMBOL_server_iter_scrub_cname = 775, /* server_iter_scrub_cname */
905 YYSYMBOL_server_max_global_quota = 776, /* server_max_global_quota */
906 YYSYMBOL_ipsetstart = 777, /* ipsetstart */
907 YYSYMBOL_contents_ipset = 778, /* contents_ipset */
908 YYSYMBOL_content_ipset = 779, /* content_ipset */
909 YYSYMBOL_ipset_name_v4 = 780, /* ipset_name_v4 */
910 YYSYMBOL_ipset_name_v6 = 781 /* ipset_name_v6 */
911 };
912 typedef enum yysymbol_kind_t yysymbol_kind_t;
913
914
915
916
917 #ifdef short
918 # undef short
919 #endif
920
921 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
922 <limits.h> and (if available) <stdint.h> are included
923 so that the code can choose integer types of a good width. */
924
925 #ifndef __PTRDIFF_MAX__
926 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
927 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
928 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
929 # define YY_STDINT_H
930 # endif
931 #endif
932
933 /* Narrow types that promote to a signed type and that can represent a
934 signed or unsigned integer of at least N bits. In tables they can
935 save space and decrease cache pressure. Promoting to a signed type
936 helps avoid bugs in integer arithmetic. */
937
938 #ifdef __INT_LEAST8_MAX__
939 typedef __INT_LEAST8_TYPE__ yytype_int8;
940 #elif defined YY_STDINT_H
941 typedef int_least8_t yytype_int8;
942 #else
943 typedef signed char yytype_int8;
944 #endif
945
946 #ifdef __INT_LEAST16_MAX__
947 typedef __INT_LEAST16_TYPE__ yytype_int16;
948 #elif defined YY_STDINT_H
949 typedef int_least16_t yytype_int16;
950 #else
951 typedef short yytype_int16;
952 #endif
953
954 /* Work around bug in HP-UX 11.23, which defines these macros
955 incorrectly for preprocessor constants. This workaround can likely
956 be removed in 2023, as HPE has promised support for HP-UX 11.23
957 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
958 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
959 #ifdef __hpux
960 # undef UINT_LEAST8_MAX
961 # undef UINT_LEAST16_MAX
962 # define UINT_LEAST8_MAX 255
963 # define UINT_LEAST16_MAX 65535
964 #endif
965
966 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
967 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
968 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
969 && UINT_LEAST8_MAX <= INT_MAX)
970 typedef uint_least8_t yytype_uint8;
971 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
972 typedef unsigned char yytype_uint8;
973 #else
974 typedef short yytype_uint8;
975 #endif
976
977 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
978 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
979 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
980 && UINT_LEAST16_MAX <= INT_MAX)
981 typedef uint_least16_t yytype_uint16;
982 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
983 typedef unsigned short yytype_uint16;
984 #else
985 typedef int yytype_uint16;
986 #endif
987
988 #ifndef YYPTRDIFF_T
989 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
990 # define YYPTRDIFF_T __PTRDIFF_TYPE__
991 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
992 # elif defined PTRDIFF_MAX
993 # ifndef ptrdiff_t
994 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
995 # endif
996 # define YYPTRDIFF_T ptrdiff_t
997 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
998 # else
999 # define YYPTRDIFF_T long
1000 # define YYPTRDIFF_MAXIMUM LONG_MAX
1001 # endif
1002 #endif
1003
1004 #ifndef YYSIZE_T
1005 # ifdef __SIZE_TYPE__
1006 # define YYSIZE_T __SIZE_TYPE__
1007 # elif defined size_t
1008 # define YYSIZE_T size_t
1009 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1010 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1011 # define YYSIZE_T size_t
1012 # else
1013 # define YYSIZE_T unsigned
1014 # endif
1015 #endif
1016
1017 #define YYSIZE_MAXIMUM \
1018 YY_CAST (YYPTRDIFF_T, \
1019 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1020 ? YYPTRDIFF_MAXIMUM \
1021 : YY_CAST (YYSIZE_T, -1)))
1022
1023 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1024
1025
1026 /* Stored state numbers (used for stacks). */
1027 typedef yytype_int16 yy_state_t;
1028
1029 /* State numbers in computations. */
1030 typedef int yy_state_fast_t;
1031
1032 #ifndef YY_
1033 # if defined YYENABLE_NLS && YYENABLE_NLS
1034 # if ENABLE_NLS
1035 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1036 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1037 # endif
1038 # endif
1039 # ifndef YY_
1040 # define YY_(Msgid) Msgid
1041 # endif
1042 #endif
1043
1044
1045 #ifndef YY_ATTRIBUTE_PURE
1046 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1047 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1048 # else
1049 # define YY_ATTRIBUTE_PURE
1050 # endif
1051 #endif
1052
1053 #ifndef YY_ATTRIBUTE_UNUSED
1054 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1055 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1056 # else
1057 # define YY_ATTRIBUTE_UNUSED
1058 # endif
1059 #endif
1060
1061 /* Suppress unused-variable warnings by "using" E. */
1062 #if ! defined lint || defined __GNUC__
1063 # define YY_USE(E) ((void) (E))
1064 #else
1065 # define YY_USE(E) /* empty */
1066 #endif
1067
1068 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1069 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
1070 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1071 _Pragma ("GCC diagnostic push") \
1072 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1073 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1074 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1075 _Pragma ("GCC diagnostic pop")
1076 #else
1077 # define YY_INITIAL_VALUE(Value) Value
1078 #endif
1079 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1080 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1081 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1082 #endif
1083 #ifndef YY_INITIAL_VALUE
1084 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1085 #endif
1086
1087 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1088 # define YY_IGNORE_USELESS_CAST_BEGIN \
1089 _Pragma ("GCC diagnostic push") \
1090 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1091 # define YY_IGNORE_USELESS_CAST_END \
1092 _Pragma ("GCC diagnostic pop")
1093 #endif
1094 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1095 # define YY_IGNORE_USELESS_CAST_BEGIN
1096 # define YY_IGNORE_USELESS_CAST_END
1097 #endif
1098
1099
1100 #define YY_ASSERT(E) ((void) (0 && (E)))
1101
1102 #if !defined yyoverflow
1103
1104 /* The parser invokes alloca or malloc; define the necessary symbols. */
1105
1106 # ifdef YYSTACK_USE_ALLOCA
1107 # if YYSTACK_USE_ALLOCA
1108 # ifdef __GNUC__
1109 # define YYSTACK_ALLOC __builtin_alloca
1110 # elif defined __BUILTIN_VA_ARG_INCR
1111 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1112 # elif defined _AIX
1113 # define YYSTACK_ALLOC __alloca
1114 # elif defined _MSC_VER
1115 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1116 # define alloca _alloca
1117 # else
1118 # define YYSTACK_ALLOC alloca
1119 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1120 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1121 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1122 # ifndef EXIT_SUCCESS
1123 # define EXIT_SUCCESS 0
1124 # endif
1125 # endif
1126 # endif
1127 # endif
1128 # endif
1129
1130 # ifdef YYSTACK_ALLOC
1131 /* Pacify GCC's 'empty if-body' warning. */
1132 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1133 # ifndef YYSTACK_ALLOC_MAXIMUM
1134 /* The OS might guarantee only one guard page at the bottom of the stack,
1135 and a page size can be as small as 4096 bytes. So we cannot safely
1136 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1137 to allow for a few compiler-allocated temporary stack slots. */
1138 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1139 # endif
1140 # else
1141 # define YYSTACK_ALLOC YYMALLOC
1142 # define YYSTACK_FREE YYFREE
1143 # ifndef YYSTACK_ALLOC_MAXIMUM
1144 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1145 # endif
1146 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1147 && ! ((defined YYMALLOC || defined malloc) \
1148 && (defined YYFREE || defined free)))
1149 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1150 # ifndef EXIT_SUCCESS
1151 # define EXIT_SUCCESS 0
1152 # endif
1153 # endif
1154 # ifndef YYMALLOC
1155 # define YYMALLOC malloc
1156 # if ! defined malloc && ! defined EXIT_SUCCESS
1157 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1158 # endif
1159 # endif
1160 # ifndef YYFREE
1161 # define YYFREE free
1162 # if ! defined free && ! defined EXIT_SUCCESS
1163 void free (void *); /* INFRINGES ON USER NAME SPACE */
1164 # endif
1165 # endif
1166 # endif
1167 #endif /* !defined yyoverflow */
1168
1169 #if (! defined yyoverflow \
1170 && (! defined __cplusplus \
1171 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1172
1173 /* A type that is properly aligned for any stack member. */
1174 union yyalloc
1175 {
1176 yy_state_t yyss_alloc;
1177 YYSTYPE yyvs_alloc;
1178 };
1179
1180 /* The size of the maximum gap between one aligned stack and the next. */
1181 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1182
1183 /* The size of an array large to enough to hold all stacks, each with
1184 N elements. */
1185 # define YYSTACK_BYTES(N) \
1186 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1187 + YYSTACK_GAP_MAXIMUM)
1188
1189 # define YYCOPY_NEEDED 1
1190
1191 /* Relocate STACK from its old location to the new one. The
1192 local variables YYSIZE and YYSTACKSIZE give the old and new number of
1193 elements in the stack, and YYPTR gives the new location of the
1194 stack. Advance YYPTR to a properly aligned location for the next
1195 stack. */
1196 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1197 do \
1198 { \
1199 YYPTRDIFF_T yynewbytes; \
1200 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1201 Stack = &yyptr->Stack_alloc; \
1202 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1203 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1204 } \
1205 while (0)
1206
1207 #endif
1208
1209 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1210 /* Copy COUNT objects from SRC to DST. The source and destination do
1211 not overlap. */
1212 # ifndef YYCOPY
1213 # if defined __GNUC__ && 1 < __GNUC__
1214 # define YYCOPY(Dst, Src, Count) \
1215 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1216 # else
1217 # define YYCOPY(Dst, Src, Count) \
1218 do \
1219 { \
1220 YYPTRDIFF_T yyi; \
1221 for (yyi = 0; yyi < (Count); yyi++) \
1222 (Dst)[yyi] = (Src)[yyi]; \
1223 } \
1224 while (0)
1225 # endif
1226 # endif
1227 #endif /* !YYCOPY_NEEDED */
1228
1229 /* YYFINAL -- State number of the termination state. */
1230 #define YYFINAL 2
1231 /* YYLAST -- Last index in YYTABLE. */
1232 #define YYLAST 805
1233
1234 /* YYNTOKENS -- Number of terminals. */
1235 #define YYNTOKENS 377
1236 /* YYNNTS -- Number of nonterminals. */
1237 #define YYNNTS 405
1238 /* YYNRULES -- Number of rules. */
1239 #define YYNRULES 784
1240 /* YYNSTATES -- Number of states. */
1241 #define YYNSTATES 1174
1242
1243 /* YYMAXUTOK -- Last valid token kind. */
1244 #define YYMAXUTOK 631
1245
1246
1247 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1248 as returned by yylex, with out-of-bounds checking. */
1249 #define YYTRANSLATE(YYX) \
1250 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1251 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1252 : YYSYMBOL_YYUNDEF)
1253
1254 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1255 as returned by yylex. */
1256 static const yytype_int16 yytranslate[] =
1257 {
1258 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1260 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1263 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1264 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1265 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1267 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1268 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1269 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1270 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1271 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1272 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1273 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1275 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1276 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1277 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1278 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1279 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1280 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1281 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1282 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1283 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1284 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1285 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1286 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1287 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1288 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1289 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1290 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1291 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1292 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1293 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1294 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1295 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1296 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1297 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1298 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1299 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1300 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1301 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1302 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1303 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1304 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1305 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1306 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1307 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1308 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1309 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1310 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1311 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1312 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1313 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1314 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1315 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1316 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1317 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1318 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1319 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1320 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1321 375, 376
1322 };
1323
1324 #if YYDEBUG
1325 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1326 static const yytype_int16 yyrline[] =
1327 {
1328 0, 220, 220, 220, 221, 221, 222, 222, 223, 223,
1329 223, 224, 224, 225, 225, 226, 226, 227, 229, 236,
1330 242, 243, 244, 244, 244, 245, 245, 246, 246, 246,
1331 247, 247, 247, 248, 248, 248, 249, 249, 250, 251,
1332 251, 251, 252, 252, 252, 253, 253, 254, 254, 255,
1333 255, 256, 256, 257, 257, 258, 258, 259, 259, 260,
1334 260, 261, 261, 261, 262, 262, 263, 263, 263, 264,
1335 264, 264, 265, 265, 266, 266, 267, 267, 268, 268,
1336 269, 269, 269, 270, 270, 271, 271, 272, 272, 272,
1337 273, 273, 274, 274, 275, 275, 276, 276, 276, 277,
1338 277, 278, 278, 279, 279, 280, 280, 281, 281, 282,
1339 282, 283, 283, 284, 284, 285, 285, 285, 286, 286,
1340 286, 287, 287, 287, 288, 288, 288, 288, 289, 290,
1341 290, 290, 291, 291, 291, 292, 292, 293, 293, 294,
1342 294, 294, 295, 295, 295, 296, 296, 297, 297, 297,
1343 298, 299, 299, 299, 300, 300, 300, 301, 301, 302,
1344 302, 303, 303, 304, 305, 305, 306, 306, 307, 307,
1345 308, 308, 309, 309, 310, 310, 311, 311, 312, 312,
1346 313, 313, 314, 314, 315, 316, 316, 317, 317, 317,
1347 318, 318, 319, 319, 320, 320, 321, 321, 321, 322,
1348 322, 323, 324, 324, 325, 325, 326, 327, 327, 328,
1349 328, 329, 329, 329, 330, 330, 331, 331, 331, 332,
1350 332, 332, 333, 333, 334, 335, 335, 336, 336, 337,
1351 337, 338, 338, 339, 339, 339, 340, 340, 340, 341,
1352 341, 341, 342, 342, 343, 343, 343, 344, 344, 345,
1353 345, 346, 346, 347, 347, 347, 348, 348, 349, 349,
1354 350, 350, 351, 351, 352, 352, 353, 353, 354, 355,
1355 355, 356, 356, 357, 357, 358, 358, 358, 359, 359,
1356 361, 369, 383, 384, 385, 385, 385, 385, 385, 386,
1357 386, 386, 388, 396, 410, 411, 412, 412, 412, 412,
1358 413, 413, 413, 415, 423, 437, 438, 439, 439, 439,
1359 439, 440, 440, 440, 442, 463, 464, 465, 465, 465,
1360 465, 466, 466, 466, 467, 467, 467, 470, 489, 506,
1361 514, 524, 531, 541, 560, 561, 562, 562, 562, 562,
1362 562, 563, 563, 563, 564, 564, 564, 564, 566, 575,
1363 584, 595, 604, 613, 622, 631, 642, 651, 663, 677,
1364 692, 703, 720, 737, 754, 771, 786, 801, 814, 829,
1365 838, 847, 856, 865, 874, 883, 890, 899, 908, 917,
1366 926, 935, 944, 953, 962, 971, 984, 995, 1006, 1017,
1367 1026, 1039, 1052, 1061, 1070, 1079, 1086, 1093, 1102, 1109,
1368 1118, 1126, 1133, 1140, 1148, 1157, 1165, 1183, 1191, 1199,
1369 1207, 1215, 1223, 1236, 1243, 1252, 1261, 1275, 1284, 1293,
1370 1302, 1311, 1320, 1329, 1338, 1347, 1354, 1361, 1387, 1395,
1371 1402, 1409, 1416, 1423, 1431, 1439, 1447, 1454, 1465, 1476,
1372 1483, 1492, 1501, 1510, 1519, 1526, 1533, 1540, 1556, 1564,
1373 1572, 1582, 1592, 1602, 1616, 1624, 1637, 1648, 1656, 1669,
1374 1678, 1687, 1696, 1705, 1715, 1725, 1733, 1746, 1755, 1763,
1375 1772, 1780, 1793, 1802, 1811, 1821, 1828, 1838, 1848, 1858,
1376 1868, 1878, 1888, 1898, 1908, 1918, 1928, 1935, 1942, 1949,
1377 1958, 1967, 1976, 1985, 1992, 2002, 2010, 2019, 2026, 2044,
1378 2057, 2070, 2083, 2092, 2101, 2110, 2119, 2128, 2138, 2148,
1379 2159, 2168, 2177, 2186, 2195, 2204, 2213, 2222, 2231, 2240,
1380 2253, 2266, 2275, 2282, 2291, 2300, 2309, 2318, 2328, 2336,
1381 2349, 2357, 2413, 2420, 2435, 2445, 2455, 2462, 2469, 2476,
1382 2483, 2498, 2513, 2520, 2527, 2536, 2544, 2551, 2565, 2586,
1383 2607, 2619, 2631, 2643, 2652, 2673, 2685, 2697, 2706, 2727,
1384 2736, 2745, 2754, 2762, 2770, 2783, 2796, 2811, 2826, 2835,
1385 2844, 2854, 2864, 2873, 2882, 2891, 2897, 2906, 2915, 2925,
1386 2935, 2945, 2954, 2964, 2973, 2986, 2999, 3011, 3025, 3037,
1387 3051, 3060, 3071, 3080, 3089, 3096, 3106, 3113, 3120, 3129,
1388 3138, 3148, 3158, 3168, 3178, 3185, 3192, 3201, 3210, 3220,
1389 3230, 3240, 3247, 3254, 3261, 3269, 3279, 3289, 3299, 3309,
1390 3319, 3329, 3385, 3395, 3403, 3411, 3426, 3435, 3441, 3442,
1391 3443, 3443, 3443, 3444, 3444, 3444, 3445, 3445, 3447, 3457,
1392 3466, 3473, 3480, 3487, 3494, 3501, 3508, 3514, 3515, 3516,
1393 3516, 3516, 3517, 3517, 3517, 3518, 3519, 3519, 3520, 3520,
1394 3521, 3521, 3522, 3523, 3524, 3525, 3526, 3527, 3528, 3530,
1395 3539, 3549, 3556, 3563, 3572, 3579, 3586, 3593, 3600, 3609,
1396 3618, 3625, 3632, 3642, 3652, 3662, 3672, 3682, 3692, 3703,
1397 3709, 3710, 3711, 3713, 3720, 3726, 3727, 3728, 3730, 3737,
1398 3747, 3754, 3763, 3771, 3777, 3778, 3780, 3780, 3780, 3781,
1399 3781, 3782, 3783, 3784, 3785, 3786, 3788, 3797, 3806, 3813,
1400 3822, 3829, 3838, 3846, 3859, 3867, 3880, 3886, 3887, 3888,
1401 3888, 3889, 3889, 3890, 3890, 3891, 3891, 3892, 3892, 3893,
1402 3893, 3894, 3894, 3895, 3895, 3896, 3896, 3897, 3897, 3898,
1403 3900, 3912, 3924, 3937, 3950, 3962, 3974, 3989, 4004, 4016,
1404 4028, 4040, 4052, 4065, 4078, 4091, 4104, 4117, 4130, 4143,
1405 4158, 4173, 4184, 4193, 4209, 4216, 4225, 4234, 4243, 4249,
1406 4250, 4251, 4251, 4253, 4268
1407 };
1408 #endif
1409
1410 /** Accessing symbol of state STATE. */
1411 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1412
1413 #if YYDEBUG || 0
1414 /* The user-facing name of the symbol whose (internal) number is
1415 YYSYMBOL. No bounds checking. */
1416 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1417
1418 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1419 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1420 static const char *const yytname[] =
1421 {
1422 "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER",
1423 "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG",
1424 "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS",
1425 "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4",
1426 "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_NAT64", "VAR_PREFER_IP6",
1427 "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
1428 "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
1429 "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_SOCK_QUEUE_TIMEOUT", "VAR_CHROOT",
1430 "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1431 "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1432 "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1433 "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1434 "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1435 "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1436 "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1437 "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1438 "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1439 "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1440 "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1441 "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1442 "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1443 "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1444 "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1445 "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1446 "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1447 "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1448 "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1449 "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1450 "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1451 "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1452 "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1453 "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1454 "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1455 "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1456 "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1457 "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1458 "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1459 "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1460 "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1461 "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1462 "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1463 "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1464 "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1465 "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1466 "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1467 "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1468 "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
1469 "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
1470 "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
1471 "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
1472 "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
1473 "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
1474 "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
1475 "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
1476 "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
1477 "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
1478 "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT",
1479 "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1480 "VAR_DNS64_IGNORE_AAAA", "VAR_NAT64_PREFIX", "VAR_DNSTAP",
1481 "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
1482 "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
1483 "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
1484 "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
1485 "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
1486 "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1487 "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1488 "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1489 "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1490 "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1491 "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1492 "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_DNSTAP_SAMPLE_RATE",
1493 "VAR_RESPONSE_IP_TAG", "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA",
1494 "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_IP_DSCP",
1495 "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT",
1496 "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT",
1497 "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_OUTBOUND_MSG_RETRY",
1498 "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS",
1499 "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1500 "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1501 "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF",
1502 "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1503 "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1504 "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1505 "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1506 "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1507 "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1508 "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_CACHE_MIN_NEGATIVE_TTL",
1509 "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
1510 "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
1511 "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
1512 "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
1513 "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
1514 "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1515 "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1516 "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
1517 "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1518 "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
1519 "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
1520 "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1521 "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1522 "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1523 "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1524 "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1525 "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1526 "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1527 "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1528 "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
1529 "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
1530 "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
1531 "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
1532 "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
1533 "VAR_CACHEDB_REDISREPLICAHOST", "VAR_CACHEDB_REDISPORT",
1534 "VAR_CACHEDB_REDISREPLICAPORT", "VAR_CACHEDB_REDISTIMEOUT",
1535 "VAR_CACHEDB_REDISREPLICATIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS",
1536 "VAR_CACHEDB_REDISPATH", "VAR_CACHEDB_REDISREPLICAPATH",
1537 "VAR_CACHEDB_REDISPASSWORD", "VAR_CACHEDB_REDISREPLICAPASSWORD",
1538 "VAR_CACHEDB_REDISLOGICALDB", "VAR_CACHEDB_REDISREPLICALOGICALDB",
1539 "VAR_CACHEDB_REDISCOMMANDTIMEOUT",
1540 "VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT",
1541 "VAR_CACHEDB_REDISCONNECTTIMEOUT",
1542 "VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT",
1543 "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM",
1544 "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL",
1545 "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT",
1546 "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL",
1547 "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT",
1548 "VAR_TCP_CONNECTION_LIMIT", "VAR_ANSWER_COOKIE", "VAR_COOKIE_SECRET",
1549 "VAR_IP_RATELIMIT_COOKIE", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE",
1550 "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT",
1551 "VAR_LOG_TAG_QUERYREPLY", "VAR_DISCARD_TIMEOUT", "VAR_WAIT_LIMIT",
1552 "VAR_WAIT_LIMIT_COOKIE", "VAR_WAIT_LIMIT_NETBLOCK",
1553 "VAR_WAIT_LIMIT_COOKIE_NETBLOCK", "VAR_STREAM_WAIT_SIZE",
1554 "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI",
1555 "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6",
1556 "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS",
1557 "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG",
1558 "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
1559 "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
1560 "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
1561 "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1562 "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_DNS_ERROR_REPORTING",
1563 "VAR_INTERFACE_ACTION", "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG",
1564 "VAR_INTERFACE_TAG_ACTION", "VAR_INTERFACE_TAG_DATA", "VAR_QUIC_PORT",
1565 "VAR_QUIC_SIZE", "VAR_PROXY_PROTOCOL_PORT",
1566 "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL",
1567 "VAR_DISABLE_EDNS_DO", "VAR_CACHEDB_NO_STORE", "VAR_LOG_DESTADDR",
1568 "VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED", "VAR_COOKIE_SECRET_FILE",
1569 "VAR_ITER_SCRUB_NS", "VAR_ITER_SCRUB_CNAME", "VAR_MAX_GLOBAL_QUOTA",
1570 "VAR_HARDEN_UNVERIFIED_GLUE", "VAR_LOG_TIME_ISO", "$accept",
1571 "toplevelvars", "toplevelvar", "force_toplevel", "serverstart",
1572 "contents_server", "content_server", "stub_clause", "stubstart",
1573 "contents_stub", "content_stub", "forward_clause", "forwardstart",
1574 "contents_forward", "content_forward", "view_clause", "viewstart",
1575 "contents_view", "content_view", "authstart", "contents_auth",
1576 "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override",
1577 "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart",
1578 "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity",
1579 "server_statistics_interval", "server_statistics_cumulative",
1580 "server_extended_statistics", "server_statistics_inhibit_zero",
1581 "server_shm_enable", "server_shm_key", "server_port",
1582 "server_send_client_subnet", "server_client_subnet_zone",
1583 "server_client_subnet_always_forward", "server_client_subnet_opcode",
1584 "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1585 "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1586 "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1587 "server_interface", "server_outgoing_interface", "server_outgoing_range",
1588 "server_outgoing_port_permit", "server_outgoing_port_avoid",
1589 "server_outgoing_num_tcp", "server_incoming_num_tcp",
1590 "server_interface_automatic", "server_interface_automatic_ports",
1591 "server_do_ip4", "server_do_ip6", "server_do_nat64", "server_do_udp",
1592 "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6",
1593 "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
1594 "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
1595 "server_tcp_auth_query_timeout", "server_tcp_keepalive",
1596 "server_tcp_keepalive_timeout", "server_sock_queue_timeout",
1597 "server_tcp_upstream", "server_udp_upstream_without_downstream",
1598 "server_ssl_upstream", "server_ssl_service_key",
1599 "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
1600 "server_tls_win_cert", "server_tls_additional_port",
1601 "server_tls_ciphers", "server_tls_ciphersuites",
1602 "server_tls_session_ticket_keys", "server_tls_use_sni",
1603 "server_https_port", "server_http_endpoint", "server_http_max_streams",
1604 "server_http_query_buffer_size", "server_http_response_buffer_size",
1605 "server_http_nodelay", "server_http_notls_downstream",
1606 "server_quic_port", "server_quic_size", "server_use_systemd",
1607 "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
1608 "server_log_time_iso", "server_log_queries", "server_log_replies",
1609 "server_log_tag_queryreply", "server_log_servfail",
1610 "server_log_destaddr", "server_log_local_actions", "server_chroot",
1611 "server_username", "server_directory", "server_logfile",
1612 "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
1613 "server_dlv_anchor", "server_auto_trust_anchor_file",
1614 "server_trust_anchor_file", "server_trusted_keys_file",
1615 "server_trust_anchor", "server_trust_anchor_signaling",
1616 "server_root_key_sentinel", "server_domain_insecure",
1617 "server_hide_identity", "server_hide_version", "server_hide_trustanchor",
1618 "server_hide_http_user_agent", "server_identity", "server_version",
1619 "server_http_user_agent", "server_nsid", "server_so_rcvbuf",
1620 "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
1621 "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size",
1622 "server_edns_buffer_size", "server_msg_buffer_size",
1623 "server_msg_cache_size", "server_msg_cache_slabs",
1624 "server_num_queries_per_thread", "server_jostle_timeout",
1625 "server_delay_close", "server_udp_connect", "server_unblock_lan_zones",
1626 "server_insecure_lan_zones", "server_rrset_cache_size",
1627 "server_rrset_cache_slabs", "server_infra_host_ttl",
1628 "server_infra_lame_ttl", "server_infra_cache_numhosts",
1629 "server_infra_cache_lame_size", "server_infra_cache_slabs",
1630 "server_infra_cache_min_rtt", "server_infra_cache_max_rtt",
1631 "server_infra_keep_probing", "server_target_fetch_policy",
1632 "server_harden_short_bufsize", "server_harden_large_queries",
1633 "server_harden_glue", "server_harden_unverified_glue",
1634 "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
1635 "server_harden_referral_path", "server_harden_algo_downgrade",
1636 "server_harden_unknown_additional", "server_use_caps_for_id",
1637 "server_caps_whitelist", "server_private_address",
1638 "server_private_domain", "server_prefetch", "server_prefetch_key",
1639 "server_deny_any", "server_unwanted_reply_threshold",
1640 "server_do_not_query_address", "server_do_not_query_localhost",
1641 "server_access_control", "server_interface_action", "server_module_conf",
1642 "server_val_override_date", "server_val_sig_skew_min",
1643 "server_val_sig_skew_max", "server_val_max_restart",
1644 "server_cache_max_ttl", "server_cache_max_negative_ttl",
1645 "server_cache_min_negative_ttl", "server_cache_min_ttl",
1646 "server_bogus_ttl", "server_val_clean_additional",
1647 "server_val_permissive_mode", "server_aggressive_nsec",
1648 "server_ignore_cd_flag", "server_disable_edns_do",
1649 "server_serve_expired", "server_serve_expired_ttl",
1650 "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1651 "server_serve_expired_client_timeout", "server_ede_serve_expired",
1652 "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
1653 "server_val_log_level", "server_val_nsec3_keysize_iterations",
1654 "server_zonemd_permissive_mode", "server_add_holddown",
1655 "server_del_holddown", "server_keep_missing",
1656 "server_permit_small_holddown", "server_key_cache_size",
1657 "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1658 "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1659 "server_rrset_roundrobin", "server_unknown_server_time_limit",
1660 "server_discard_timeout", "server_wait_limit",
1661 "server_wait_limit_cookie", "server_wait_limit_netblock",
1662 "server_wait_limit_cookie_netblock", "server_max_udp_size",
1663 "server_dns64_prefix", "server_dns64_synthall",
1664 "server_dns64_ignore_aaaa", "server_nat64_prefix", "server_define_tag",
1665 "server_local_zone_tag", "server_access_control_tag",
1666 "server_access_control_tag_action", "server_access_control_tag_data",
1667 "server_local_zone_override", "server_access_control_view",
1668 "server_interface_tag", "server_interface_tag_action",
1669 "server_interface_tag_data", "server_interface_view",
1670 "server_response_ip_tag", "server_ip_ratelimit",
1671 "server_ip_ratelimit_cookie", "server_ratelimit",
1672 "server_ip_ratelimit_size", "server_ratelimit_size",
1673 "server_ip_ratelimit_slabs", "server_ratelimit_slabs",
1674 "server_ratelimit_for_domain", "server_ratelimit_below_domain",
1675 "server_ip_ratelimit_factor", "server_ratelimit_factor",
1676 "server_ip_ratelimit_backoff", "server_ratelimit_backoff",
1677 "server_outbound_msg_retry", "server_max_sent_count",
1678 "server_max_query_restarts", "server_low_rtt", "server_fast_server_num",
1679 "server_fast_server_permil", "server_qname_minimisation",
1680 "server_qname_minimisation_strict", "server_pad_responses",
1681 "server_pad_responses_block_size", "server_pad_queries",
1682 "server_pad_queries_block_size", "server_ipsecmod_enabled",
1683 "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1684 "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1685 "server_ipsecmod_strict", "server_edns_client_string",
1686 "server_edns_client_string_opcode", "server_ede",
1687 "server_dns_error_reporting", "server_proxy_protocol_port", "stub_name",
1688 "stub_host", "stub_addr", "stub_first", "stub_no_cache",
1689 "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name",
1690 "forward_host", "forward_addr", "forward_first", "forward_no_cache",
1691 "forward_ssl_upstream", "forward_tcp_upstream", "auth_name",
1692 "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
1693 "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream",
1694 "auth_for_upstream", "auth_fallback_enabled", "view_name",
1695 "view_local_zone", "view_response_ip", "view_response_ip_data",
1696 "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
1697 "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
1698 "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
1699 "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
1700 "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
1701 "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
1702 "dt_dnstap_tls", "dt_dnstap_tls_server_name",
1703 "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
1704 "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
1705 "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
1706 "dt_dnstap_log_resolver_query_messages",
1707 "dt_dnstap_log_resolver_response_messages",
1708 "dt_dnstap_log_client_query_messages",
1709 "dt_dnstap_log_client_response_messages",
1710 "dt_dnstap_log_forwarder_query_messages",
1711 "dt_dnstap_log_forwarder_response_messages", "dt_dnstap_sample_rate",
1712 "pythonstart", "contents_py", "content_py", "py_script", "dynlibstart",
1713 "contents_dl", "content_dl", "dl_file",
1714 "server_disable_dnssec_lame_check", "server_log_identity",
1715 "server_response_ip", "server_response_ip_data", "dnscstart",
1716 "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1717 "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1718 "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1719 "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1720 "dnsc_dnscrypt_shared_secret_cache_slabs",
1721 "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1722 "cachedbstart", "contents_cachedb", "content_cachedb",
1723 "cachedb_backend_name", "cachedb_secret_seed", "cachedb_no_store",
1724 "cachedb_check_when_serve_expired", "redis_server_host",
1725 "redis_replica_server_host", "redis_server_port",
1726 "redis_replica_server_port", "redis_server_path",
1727 "redis_replica_server_path", "redis_server_password",
1728 "redis_replica_server_password", "redis_timeout",
1729 "redis_replica_timeout", "redis_command_timeout",
1730 "redis_replica_command_timeout", "redis_connect_timeout",
1731 "redis_replica_connect_timeout", "redis_expire_records",
1732 "redis_logical_db", "redis_replica_logical_db",
1733 "server_tcp_connection_limit", "server_answer_cookie",
1734 "server_cookie_secret", "server_cookie_secret_file",
1735 "server_iter_scrub_ns", "server_iter_scrub_cname",
1736 "server_max_global_quota", "ipsetstart", "contents_ipset",
1737 "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
1738 };
1739
1740 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)1741 yysymbol_name (yysymbol_kind_t yysymbol)
1742 {
1743 return yytname[yysymbol];
1744 }
1745 #endif
1746
1747 #ifdef YYPRINT
1748 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1749 (internal) symbol number NUM (which must be that of a token). */
1750 static const yytype_int16 yytoknum[] =
1751 {
1752 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1753 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1754 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1755 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1756 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1757 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1758 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1759 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1760 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1761 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1762 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1763 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1764 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1765 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1766 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1767 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1768 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1769 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1770 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1771 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1772 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1773 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1774 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1775 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1776 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1777 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1778 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
1779 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
1780 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
1781 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
1782 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
1783 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
1784 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
1785 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
1786 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
1787 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
1788 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
1789 625, 626, 627, 628, 629, 630, 631
1790 };
1791 #endif
1792
1793 #define YYPACT_NINF (-310)
1794
1795 #define yypact_value_is_default(Yyn) \
1796 ((Yyn) == YYPACT_NINF)
1797
1798 #define YYTABLE_NINF (-1)
1799
1800 #define yytable_value_is_error(Yyn) \
1801 0
1802
1803 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1804 STATE-NUM. */
1805 static const yytype_int16 yypact[] =
1806 {
1807 -310, 274, -310, -310, -310, -310, -310, -310, -310, -310,
1808 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1809 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1810 -310, -310, -310, -310, -310, -13, 221, 236, 291, 112,
1811 88, -14, 292, -81, -309, 142, -121, -302, 31, 32,
1812 33, 83, 89, 93, 94, 121, 122, 123, 126, 134,
1813 150, 215, 217, 238, 240, 241, 242, 243, 244, 245,
1814 246, 247, 259, 262, 263, 265, 266, 267, 268, 269,
1815 270, 271, 272, 277, 279, 280, 283, 284, 285, 288,
1816 297, 298, 313, 314, 316, 317, 319, 320, 321, 322,
1817 329, 330, 345, 347, 354, 355, 357, 358, 360, 361,
1818 363, 366, 367, 369, 371, 373, 374, 376, 377, 378,
1819 379, 381, 386, 387, 388, 389, 390, 403, 405, 411,
1820 412, 413, 414, 415, 417, 423, 424, 425, 426, 427,
1821 428, 429, 430, 432, 433, 434, 435, 437, 438, 439,
1822 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
1823 450, 451, 452, 477, 478, 479, 480, 481, 482, 483,
1824 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
1825 494, 495, 496, 497, 498, 499, 500, 501, 503, 504,
1826 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1827 515, 516, 517, 518, 519, 520, 522, 523, 525, 526,
1828 527, 528, 529, 530, 531, 533, 534, 535, 536, 537,
1829 538, 539, 540, 541, 542, 543, 544, 547, 548, 549,
1830 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
1831 560, 561, 562, 563, 564, 565, 566, 568, 569, 570,
1832 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
1833 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
1834 591, 592, 593, 594, 595, 596, 597, 598, 600, 601,
1835 602, 604, 605, 606, 607, 608, 610, 611, 612, 613,
1836 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
1837 624, 625, 626, 627, 628, 629, -310, -310, -310, -310,
1838 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1839 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1840 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1841 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1842 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1843 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1844 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1845 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1846 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1847 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1848 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1849 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1850 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1851 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1852 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1853 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1854 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1855 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1856 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1857 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1858 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1859 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1860 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1861 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1862 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1863 -310, -310, -310, -310, -310, 630, 631, 632, 633, 634,
1864 635, 636, 637, -310, -310, -310, -310, -310, -310, -310,
1865 -310, -310, 638, 639, 640, 641, 642, 643, 644, -310,
1866 -310, -310, -310, -310, -310, -310, -310, 645, 646, 647,
1867 648, 649, 650, 651, -310, -310, -310, -310, -310, -310,
1868 -310, -310, 652, 653, 654, 655, 656, 657, 658, 659,
1869 660, 661, -310, -310, -310, -310, -310, -310, -310, -310,
1870 -310, -310, -310, 662, 663, 664, 665, 666, 667, -310,
1871 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1872 -310, -310, 668, 669, 670, 671, 672, 673, 674, 675,
1873 -310, -310, -310, -310, -310, -310, -310, -310, -310, 676,
1874 677, 678, 679, 680, 681, 682, 683, 684, 685, 686,
1875 687, 688, 689, 690, 691, 692, 693, 694, 695, -310,
1876 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1877 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1878 696, -310, -310, 697, -310, -310, 698, 699, 700, 701,
1879 702, 703, 704, 705, 706, 707, -310, -310, -310, -310,
1880 -310, -310, -310, -310, -310, -310, -310, 708, 709, 710,
1881 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
1882 721, 722, 723, 724, 725, 726, 727, 728, -310, -310,
1883 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1884 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1885 729, 730, -310, -310, -310, -310, -310, -310, -310, -310,
1886 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1887 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1888 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1889 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1890 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1891 -310, -310, -310, -310, -310, -310, -310, 731, 732, -310,
1892 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1893 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1894 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1895 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1896 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1897 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1898 -310, -310, -310, -310, -310, -310, -310, -310, -310, 733,
1899 734, 735, -310, -310, -310, -310, -310, -310, -310, -310,
1900 -310, -310, -310, -310, -310, 736, 737, -310, -310, -310,
1901 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1902 -310, -310, -310, -310, -310, -310, -310, -310, -310, 738,
1903 739, 740, 741, 742, 743, -310, -310, -310, -310, -310,
1904 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1905 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1906 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1907 744, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1908 -310, 745, 746, -310, -310, -310, -310, -310, 747, -310,
1909 -310, -310, -310, -310, -310, 748, 749, 750, 751, 752,
1910 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1911 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1912 -310, -310, -310, -310, -310, -310, -310, -310, -310, 753,
1913 -310, -310, 754, 755, -310, -310, -310, -310, -310, -310,
1914 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1915 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1916 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1917 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1918 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1919 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1920 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1921 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
1922 -310, -310, -310, 756, 757, 758, -310, -310, -310, -310,
1923 -310, -310, -310, -310, 759, 760, -310, -310, -310, -310,
1924 -310, -310, -310, -310
1925 };
1926
1927 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1928 Performed when YYTABLE does not specify something else to do. Zero
1929 means the default is an error. */
1930 static const yytype_int16 yydefact[] =
1931 {
1932 2, 0, 1, 18, 19, 281, 293, 627, 689, 646,
1933 304, 703, 726, 314, 778, 333, 694, 3, 17, 21,
1934 5, 283, 6, 295, 10, 306, 316, 335, 629, 648,
1935 691, 696, 705, 728, 780, 4, 280, 292, 303, 14,
1936 15, 8, 9, 7, 16, 11, 12, 13, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 20, 22, 23, 90,
1963 93, 102, 270, 219, 220, 24, 172, 173, 174, 175,
1964 176, 177, 178, 179, 180, 181, 39, 81, 25, 94,
1965 95, 50, 74, 89, 266, 26, 27, 28, 31, 32,
1966 29, 30, 33, 34, 35, 261, 262, 263, 36, 37,
1967 38, 126, 231, 127, 129, 130, 131, 233, 238, 234,
1968 250, 251, 252, 256, 132, 133, 134, 135, 136, 137,
1969 138, 264, 265, 215, 91, 80, 106, 279, 124, 125,
1970 243, 240, 273, 128, 40, 41, 42, 43, 44, 82,
1971 96, 97, 113, 68, 78, 69, 223, 224, 107, 60,
1972 61, 222, 64, 62, 63, 65, 259, 117, 121, 142,
1973 154, 187, 157, 249, 118, 75, 45, 46, 47, 104,
1974 143, 144, 145, 146, 48, 49, 51, 52, 54, 55,
1975 53, 151, 152, 158, 56, 57, 58, 66, 278, 85,
1976 122, 99, 153, 271, 92, 182, 100, 101, 119, 120,
1977 241, 105, 59, 83, 86, 196, 67, 70, 108, 109,
1978 110, 84, 183, 184, 111, 71, 72, 73, 232, 123,
1979 272, 206, 207, 208, 209, 210, 211, 212, 213, 221,
1980 112, 79, 260, 114, 115, 116, 185, 76, 77, 98,
1981 87, 88, 103, 139, 140, 242, 244, 245, 246, 247,
1982 248, 141, 147, 148, 149, 150, 188, 189, 191, 193,
1983 194, 192, 195, 198, 199, 200, 197, 216, 155, 255,
1984 156, 161, 162, 159, 160, 163, 164, 166, 165, 168,
1985 167, 169, 170, 171, 235, 237, 236, 186, 201, 202,
1986 203, 204, 205, 225, 227, 226, 228, 229, 230, 257,
1987 258, 267, 268, 269, 190, 214, 217, 218, 239, 253,
1988 254, 274, 275, 276, 277, 0, 0, 0, 0, 0,
1989 0, 0, 0, 282, 284, 285, 286, 288, 289, 290,
1990 291, 287, 0, 0, 0, 0, 0, 0, 0, 294,
1991 296, 297, 298, 299, 300, 301, 302, 0, 0, 0,
1992 0, 0, 0, 0, 305, 307, 308, 311, 312, 309,
1993 313, 310, 0, 0, 0, 0, 0, 0, 0, 0,
1994 0, 0, 315, 317, 318, 319, 320, 324, 325, 326,
1995 321, 322, 323, 0, 0, 0, 0, 0, 0, 338,
1996 342, 343, 344, 345, 346, 334, 336, 337, 339, 340,
1997 341, 347, 0, 0, 0, 0, 0, 0, 0, 0,
1998 628, 630, 632, 631, 637, 633, 634, 635, 636, 0,
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 647,
2001 649, 651, 650, 652, 653, 654, 655, 656, 657, 658,
2002 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
2003 0, 690, 692, 0, 695, 697, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0, 704, 706, 707, 708,
2005 710, 711, 709, 712, 713, 714, 715, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 0, 0, 0, 0, 0, 0, 0, 0, 727, 729,
2008 730, 747, 749, 731, 732, 733, 734, 741, 742, 743,
2009 744, 735, 736, 737, 738, 739, 740, 748, 745, 746,
2010 0, 0, 779, 781, 782, 349, 348, 356, 369, 367,
2011 381, 376, 377, 378, 382, 379, 380, 383, 384, 385,
2012 389, 390, 391, 425, 426, 427, 428, 429, 457, 458,
2013 459, 465, 466, 372, 467, 468, 471, 469, 470, 475,
2014 476, 477, 493, 440, 441, 444, 445, 478, 497, 434,
2015 436, 498, 506, 507, 508, 373, 456, 528, 529, 435,
2016 522, 416, 368, 430, 494, 502, 480, 0, 0, 532,
2017 374, 350, 415, 485, 351, 370, 371, 431, 432, 530,
2018 482, 487, 488, 387, 386, 352, 533, 460, 492, 417,
2019 439, 499, 500, 501, 505, 521, 433, 526, 524, 525,
2020 448, 455, 489, 490, 449, 450, 481, 510, 419, 420,
2021 424, 392, 394, 388, 395, 396, 397, 398, 405, 406,
2022 407, 408, 409, 410, 411, 534, 535, 542, 461, 462,
2023 463, 464, 472, 473, 474, 543, 544, 545, 546, 0,
2024 0, 0, 483, 451, 453, 699, 559, 564, 562, 561,
2025 565, 563, 572, 573, 574, 0, 0, 568, 569, 570,
2026 571, 357, 358, 359, 360, 361, 362, 363, 364, 365,
2027 366, 486, 503, 527, 504, 578, 579, 452, 547, 0,
2028 0, 0, 0, 0, 0, 512, 513, 514, 515, 516,
2029 517, 518, 519, 520, 700, 442, 443, 446, 437, 509,
2030 414, 354, 355, 438, 580, 581, 582, 583, 584, 586,
2031 585, 587, 588, 589, 393, 400, 575, 577, 576, 399,
2032 0, 772, 773, 560, 422, 491, 536, 421, 537, 538,
2033 539, 0, 0, 454, 401, 402, 404, 403, 0, 591,
2034 447, 523, 375, 592, 593, 0, 0, 0, 0, 0,
2035 412, 413, 594, 353, 484, 511, 423, 774, 775, 776,
2036 777, 479, 418, 595, 596, 597, 602, 600, 601, 598,
2037 599, 603, 604, 605, 606, 608, 609, 607, 620, 0,
2038 624, 625, 0, 0, 626, 610, 618, 611, 612, 613,
2039 617, 619, 614, 615, 616, 327, 328, 329, 330, 331,
2040 332, 638, 640, 639, 642, 643, 644, 645, 641, 669,
2041 671, 672, 673, 674, 675, 676, 677, 678, 679, 670,
2042 680, 681, 682, 683, 684, 685, 686, 687, 688, 693,
2043 698, 716, 717, 718, 721, 719, 720, 722, 723, 724,
2044 725, 750, 751, 754, 755, 756, 757, 762, 763, 768,
2045 758, 759, 760, 761, 769, 770, 764, 765, 766, 767,
2046 752, 753, 783, 784, 495, 531, 558, 701, 702, 566,
2047 567, 548, 549, 0, 0, 0, 553, 771, 540, 541,
2048 590, 496, 557, 554, 0, 0, 621, 622, 623, 552,
2049 550, 551, 555, 556
2050 };
2051
2052 /* YYPGOTO[NTERM-NUM]. */
2053 static const yytype_int16 yypgoto[] =
2054 {
2055 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2056 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2057 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2058 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2059 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2060 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2061 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2062 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2063 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2064 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2065 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2066 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2067 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2068 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2069 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2070 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2071 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2072 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2073 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2074 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2075 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2076 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2077 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2078 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2079 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2080 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2081 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2082 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2083 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2084 -310, -310, -310, 261, 761, 762, 763, 764, -310, -310,
2085 765, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2086 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2087 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2088 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2089 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2090 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2091 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2092 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2093 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2094 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2095 -310, -310, -310, -310, -310
2096 };
2097
2098 /* YYDEFGOTO[NTERM-NUM]. */
2099 static const yytype_int16 yydefgoto[] =
2100 {
2101 0, 1, 17, 18, 19, 35, 306, 20, 21, 36,
2102 573, 22, 23, 37, 589, 24, 25, 38, 604, 26,
2103 39, 622, 639, 640, 641, 642, 643, 644, 27, 40,
2104 645, 307, 308, 309, 310, 311, 312, 313, 314, 315,
2105 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
2106 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
2107 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2108 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
2109 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
2110 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
2111 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
2112 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
2113 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
2114 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
2115 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
2116 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
2117 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
2118 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
2119 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
2120 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
2121 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
2122 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
2123 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
2124 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
2125 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
2126 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
2127 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
2128 546, 547, 548, 549, 550, 551, 552, 553, 574, 575,
2129 576, 577, 578, 579, 580, 581, 590, 591, 592, 593,
2130 594, 595, 596, 623, 624, 625, 626, 627, 628, 629,
2131 630, 631, 632, 605, 606, 607, 608, 609, 610, 611,
2132 28, 41, 660, 661, 662, 663, 664, 665, 666, 667,
2133 668, 29, 42, 689, 690, 691, 692, 693, 694, 695,
2134 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
2135 706, 707, 708, 709, 30, 43, 711, 712, 31, 44,
2136 714, 715, 554, 555, 556, 557, 32, 45, 726, 727,
2137 728, 729, 730, 731, 732, 733, 734, 735, 736, 33,
2138 46, 758, 759, 760, 761, 762, 763, 764, 765, 766,
2139 767, 768, 769, 770, 771, 772, 773, 774, 775, 776,
2140 777, 778, 779, 558, 559, 560, 561, 562, 563, 564,
2141 34, 47, 782, 783, 784
2142 };
2143
2144 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
2145 positive, shift that token. If negative, reduce the rule whose
2146 number is the opposite. If YYTABLE_NINF, syntax error. */
2147 static const yytype_int16 yytable[] =
2148 {
2149 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2150 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
2151 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
2152 78, 79, 80, 81, 780, 781, 710, 713, 82, 83,
2153 84, 785, 786, 787, 85, 86, 87, 88, 89, 90,
2154 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
2155 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
2156 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
2157 121, 122, 123, 124, 125, 652, 653, 654, 655, 656,
2158 657, 658, 659, 788, 126, 127, 128, 129, 130, 789,
2159 131, 132, 133, 790, 791, 134, 135, 136, 137, 138,
2160 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2161 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
2162 159, 792, 793, 794, 160, 612, 795, 161, 162, 163,
2163 164, 165, 166, 167, 796, 168, 169, 170, 171, 172,
2164 173, 174, 175, 176, 177, 178, 179, 180, 181, 612,
2165 797, 737, 738, 739, 740, 741, 742, 743, 744, 745,
2166 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
2167 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
2168 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
2169 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
2170 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
2171 222, 223, 224, 225, 226, 798, 227, 799, 228, 229,
2172 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2173 240, 241, 242, 243, 244, 245, 246, 756, 800, 757,
2174 801, 802, 803, 804, 805, 806, 807, 808, 247, 248,
2175 249, 250, 251, 252, 253, 254, 255, 256, 565, 809,
2176 566, 567, 810, 811, 2, 812, 813, 814, 815, 816,
2177 817, 818, 819, 582, 0, 3, 4, 820, 257, 821,
2178 822, 583, 584, 823, 824, 825, 258, 259, 826, 260,
2179 261, 646, 262, 263, 264, 265, 266, 827, 828, 267,
2180 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
2181 278, 279, 5, 829, 830, 280, 831, 832, 6, 833,
2182 834, 835, 836, 568, 281, 282, 283, 284, 597, 837,
2183 838, 285, 286, 287, 288, 289, 290, 291, 292, 293,
2184 294, 295, 296, 297, 298, 839, 299, 840, 300, 301,
2185 302, 303, 304, 305, 841, 842, 569, 843, 844, 570,
2186 845, 846, 7, 847, 598, 599, 848, 849, 571, 850,
2187 585, 851, 586, 852, 853, 587, 854, 855, 856, 857,
2188 8, 858, 614, 615, 616, 617, 859, 860, 861, 862,
2189 863, 600, 619, 716, 717, 718, 719, 720, 721, 722,
2190 723, 724, 725, 864, 613, 865, 614, 615, 616, 617,
2191 618, 866, 867, 868, 869, 870, 619, 871, 633, 634,
2192 635, 636, 637, 872, 873, 874, 875, 876, 877, 878,
2193 879, 638, 880, 881, 882, 883, 9, 884, 885, 886,
2194 887, 888, 889, 890, 891, 892, 893, 894, 895, 896,
2195 897, 898, 899, 620, 621, 669, 670, 671, 672, 673,
2196 674, 675, 676, 677, 678, 679, 680, 681, 682, 683,
2197 684, 685, 686, 687, 688, 601, 602, 900, 901, 902,
2198 903, 904, 905, 906, 907, 908, 909, 910, 911, 912,
2199 913, 914, 915, 916, 917, 918, 919, 920, 921, 922,
2200 923, 924, 10, 925, 926, 927, 928, 929, 930, 931,
2201 932, 933, 934, 935, 936, 937, 938, 939, 940, 941,
2202 942, 603, 943, 944, 11, 945, 946, 947, 948, 949,
2203 950, 951, 572, 952, 953, 954, 955, 956, 957, 958,
2204 959, 960, 961, 962, 963, 12, 588, 964, 965, 966,
2205 967, 968, 969, 970, 971, 972, 973, 974, 975, 976,
2206 977, 978, 979, 980, 981, 982, 983, 13, 984, 985,
2207 986, 987, 988, 989, 990, 991, 992, 993, 994, 995,
2208 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005,
2209 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 14,
2210 1015, 1016, 1017, 15, 1018, 1019, 1020, 1021, 1022, 16,
2211 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
2212 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042,
2213 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052,
2214 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
2215 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
2216 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
2217 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
2218 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
2219 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
2220 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
2221 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
2222 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142,
2223 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
2224 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
2225 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
2226 1173, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 647, 648, 649, 650, 651
2230 };
2231
2232 static const yytype_int16 yycheck[] =
2233 {
2234 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
2235 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
2236 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
2237 43, 44, 45, 46, 336, 337, 117, 346, 51, 52,
2238 53, 10, 10, 10, 57, 58, 59, 60, 61, 62,
2239 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
2240 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2241 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2242 93, 94, 95, 96, 97, 99, 100, 101, 102, 103,
2243 104, 105, 106, 10, 107, 108, 109, 110, 111, 10,
2244 113, 114, 115, 10, 10, 118, 119, 120, 121, 122,
2245 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
2246 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2247 143, 10, 10, 10, 147, 47, 10, 150, 151, 152,
2248 153, 154, 155, 156, 10, 158, 159, 160, 161, 162,
2249 163, 164, 165, 166, 167, 168, 169, 170, 171, 47,
2250 10, 282, 283, 284, 285, 286, 287, 288, 289, 290,
2251 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
2252 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
2253 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
2254 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
2255 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
2256 233, 234, 235, 236, 237, 10, 239, 10, 241, 242,
2257 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
2258 253, 254, 255, 256, 257, 258, 259, 368, 10, 370,
2259 10, 10, 10, 10, 10, 10, 10, 10, 271, 272,
2260 273, 274, 275, 276, 277, 278, 279, 280, 47, 10,
2261 49, 50, 10, 10, 0, 10, 10, 10, 10, 10,
2262 10, 10, 10, 47, -1, 11, 12, 10, 301, 10,
2263 10, 55, 56, 10, 10, 10, 309, 310, 10, 312,
2264 313, 40, 315, 316, 317, 318, 319, 10, 10, 322,
2265 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
2266 333, 334, 48, 10, 10, 338, 10, 10, 54, 10,
2267 10, 10, 10, 112, 347, 348, 349, 350, 47, 10,
2268 10, 354, 355, 356, 357, 358, 359, 360, 361, 362,
2269 363, 364, 365, 366, 367, 10, 369, 10, 371, 372,
2270 373, 374, 375, 376, 10, 10, 145, 10, 10, 148,
2271 10, 10, 98, 10, 83, 84, 10, 10, 157, 10,
2272 144, 10, 146, 10, 10, 149, 10, 10, 10, 10,
2273 116, 10, 304, 305, 306, 307, 10, 10, 10, 10,
2274 10, 110, 314, 261, 262, 263, 264, 265, 266, 267,
2275 268, 269, 270, 10, 302, 10, 304, 305, 306, 307,
2276 308, 10, 10, 10, 10, 10, 314, 10, 340, 341,
2277 342, 343, 344, 10, 10, 10, 10, 10, 10, 10,
2278 10, 353, 10, 10, 10, 10, 172, 10, 10, 10,
2279 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2280 10, 10, 10, 351, 352, 173, 174, 175, 176, 177,
2281 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
2282 188, 189, 190, 191, 192, 194, 195, 10, 10, 10,
2283 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2284 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2285 10, 10, 238, 10, 10, 10, 10, 10, 10, 10,
2286 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2287 10, 240, 10, 10, 260, 10, 10, 10, 10, 10,
2288 10, 10, 321, 10, 10, 10, 10, 10, 10, 10,
2289 10, 10, 10, 10, 10, 281, 320, 10, 10, 10,
2290 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2291 10, 10, 10, 10, 10, 10, 10, 303, 10, 10,
2292 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2293 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2294 10, 10, 10, 10, 10, 10, 10, 10, 10, 335,
2295 10, 10, 10, 339, 10, 10, 10, 10, 10, 345,
2296 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2297 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2298 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2299 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2300 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2301 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2302 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2303 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2304 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2305 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2306 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2307 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2308 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2309 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2310 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2311 10, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2312 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2314 -1, 40, 40, 40, 40, 40
2315 };
2316
2317 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2318 symbol of state STATE-NUM. */
2319 static const yytype_int16 yystos[] =
2320 {
2321 0, 378, 0, 11, 12, 48, 54, 98, 116, 172,
2322 238, 260, 281, 303, 335, 339, 345, 379, 380, 381,
2323 384, 385, 388, 389, 392, 393, 396, 405, 687, 698,
2324 721, 725, 733, 746, 777, 382, 386, 390, 394, 397,
2325 406, 688, 699, 722, 726, 734, 747, 778, 13, 14,
2326 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2327 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2328 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2329 45, 46, 51, 52, 53, 57, 58, 59, 60, 61,
2330 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
2331 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
2332 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
2333 92, 93, 94, 95, 96, 97, 107, 108, 109, 110,
2334 111, 113, 114, 115, 118, 119, 120, 121, 122, 123,
2335 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2336 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2337 147, 150, 151, 152, 153, 154, 155, 156, 158, 159,
2338 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
2339 170, 171, 193, 194, 195, 196, 197, 198, 199, 200,
2340 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
2341 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
2342 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
2343 231, 232, 233, 234, 235, 236, 237, 239, 241, 242,
2344 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
2345 253, 254, 255, 256, 257, 258, 259, 271, 272, 273,
2346 274, 275, 276, 277, 278, 279, 280, 301, 309, 310,
2347 312, 313, 315, 316, 317, 318, 319, 322, 323, 324,
2348 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2349 338, 347, 348, 349, 350, 354, 355, 356, 357, 358,
2350 359, 360, 361, 362, 363, 364, 365, 366, 367, 369,
2351 371, 372, 373, 374, 375, 376, 383, 408, 409, 410,
2352 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
2353 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
2354 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
2355 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
2356 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
2357 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
2358 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
2359 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
2360 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
2361 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
2362 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
2363 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
2364 531, 532, 533, 534, 535, 536, 537, 538, 539, 540,
2365 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
2366 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
2367 561, 562, 563, 564, 565, 566, 567, 568, 569, 570,
2368 571, 572, 573, 574, 575, 576, 577, 578, 579, 580,
2369 581, 582, 583, 584, 585, 586, 587, 588, 589, 590,
2370 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
2371 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2372 611, 612, 613, 614, 615, 616, 617, 618, 619, 620,
2373 621, 622, 623, 624, 625, 626, 627, 628, 629, 630,
2374 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
2375 641, 642, 643, 644, 645, 646, 647, 648, 649, 650,
2376 651, 652, 653, 654, 729, 730, 731, 732, 770, 771,
2377 772, 773, 774, 775, 776, 47, 49, 50, 112, 145,
2378 148, 157, 321, 387, 655, 656, 657, 658, 659, 660,
2379 661, 662, 47, 55, 56, 144, 146, 149, 320, 391,
2380 663, 664, 665, 666, 667, 668, 669, 47, 83, 84,
2381 110, 194, 195, 240, 395, 680, 681, 682, 683, 684,
2382 685, 686, 47, 302, 304, 305, 306, 307, 308, 314,
2383 351, 352, 398, 670, 671, 672, 673, 674, 675, 676,
2384 677, 678, 679, 340, 341, 342, 343, 344, 353, 399,
2385 400, 401, 402, 403, 404, 407, 670, 671, 672, 673,
2386 674, 677, 99, 100, 101, 102, 103, 104, 105, 106,
2387 689, 690, 691, 692, 693, 694, 695, 696, 697, 173,
2388 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
2389 184, 185, 186, 187, 188, 189, 190, 191, 192, 700,
2390 701, 702, 703, 704, 705, 706, 707, 708, 709, 710,
2391 711, 712, 713, 714, 715, 716, 717, 718, 719, 720,
2392 117, 723, 724, 346, 727, 728, 261, 262, 263, 264,
2393 265, 266, 267, 268, 269, 270, 735, 736, 737, 738,
2394 739, 740, 741, 742, 743, 744, 745, 282, 283, 284,
2395 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2396 295, 296, 297, 298, 299, 300, 368, 370, 748, 749,
2397 750, 751, 752, 753, 754, 755, 756, 757, 758, 759,
2398 760, 761, 762, 763, 764, 765, 766, 767, 768, 769,
2399 336, 337, 779, 780, 781, 10, 10, 10, 10, 10,
2400 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2401 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2402 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2403 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2404 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2405 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2406 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2407 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2408 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2409 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2410 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2411 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2412 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2413 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2414 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2415 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2416 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2417 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2418 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2419 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2420 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2421 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2422 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2423 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2424 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2425 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2426 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2427 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2428 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2429 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2430 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2431 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2432 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2433 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2434 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2435 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2436 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2437 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
2438 10, 10, 10, 10
2439 };
2440
2441 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2442 static const yytype_int16 yyr1[] =
2443 {
2444 0, 377, 378, 378, 379, 379, 379, 379, 379, 379,
2445 379, 379, 379, 379, 379, 379, 379, 379, 380, 381,
2446 382, 382, 383, 383, 383, 383, 383, 383, 383, 383,
2447 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2448 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2449 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2450 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2451 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2452 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2453 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2454 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2455 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2456 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2457 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2458 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2459 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2460 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2461 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2462 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2463 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2464 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2465 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2466 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2467 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2468 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2469 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2470 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2471 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
2472 384, 385, 386, 386, 387, 387, 387, 387, 387, 387,
2473 387, 387, 388, 389, 390, 390, 391, 391, 391, 391,
2474 391, 391, 391, 392, 393, 394, 394, 395, 395, 395,
2475 395, 395, 395, 395, 396, 397, 397, 398, 398, 398,
2476 398, 398, 398, 398, 398, 398, 398, 399, 400, 401,
2477 402, 403, 404, 405, 406, 406, 407, 407, 407, 407,
2478 407, 407, 407, 407, 407, 407, 407, 407, 408, 409,
2479 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
2480 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
2481 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
2482 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
2483 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
2484 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
2485 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
2486 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
2487 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
2488 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
2489 510, 511, 512, 513, 514, 515, 516, 517, 518, 519,
2490 520, 521, 522, 523, 524, 525, 526, 527, 528, 529,
2491 530, 531, 532, 533, 534, 535, 536, 537, 538, 539,
2492 540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
2493 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
2494 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
2495 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
2496 580, 581, 582, 583, 584, 585, 586, 587, 588, 589,
2497 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
2498 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2499 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
2500 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
2501 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
2502 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
2503 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
2504 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
2505 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
2506 680, 681, 682, 683, 684, 685, 686, 687, 688, 688,
2507 689, 689, 689, 689, 689, 689, 689, 689, 690, 691,
2508 692, 693, 694, 695, 696, 697, 698, 699, 699, 700,
2509 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
2510 700, 700, 700, 700, 700, 700, 700, 700, 700, 701,
2511 702, 703, 704, 705, 706, 707, 708, 709, 710, 711,
2512 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
2513 722, 722, 723, 724, 725, 726, 726, 727, 728, 729,
2514 730, 731, 732, 733, 734, 734, 735, 735, 735, 735,
2515 735, 735, 735, 735, 735, 735, 736, 737, 738, 739,
2516 740, 741, 742, 743, 744, 745, 746, 747, 747, 748,
2517 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
2518 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
2519 749, 750, 751, 752, 753, 754, 755, 756, 757, 758,
2520 759, 760, 761, 762, 763, 764, 765, 766, 767, 768,
2521 769, 770, 771, 772, 773, 774, 775, 776, 777, 778,
2522 778, 779, 779, 780, 781
2523 };
2524
2525 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2526 static const yytype_int8 yyr2[] =
2527 {
2528 0, 2, 0, 2, 2, 1, 1, 2, 2, 2,
2529 1, 2, 2, 2, 2, 2, 2, 1, 1, 1,
2530 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2531 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2532 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2533 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2534 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2540 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2541 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2556 2, 1, 2, 0, 1, 1, 1, 1, 1, 1,
2557 1, 1, 2, 1, 2, 0, 1, 1, 1, 1,
2558 1, 1, 1, 2, 1, 2, 0, 1, 1, 1,
2559 1, 1, 1, 1, 1, 2, 0, 1, 1, 1,
2560 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
2561 2, 2, 2, 1, 2, 0, 1, 1, 1, 1,
2562 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2577 2, 2, 2, 2, 2, 3, 3, 2, 2, 2,
2578 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2581 2, 3, 2, 2, 2, 2, 2, 2, 2, 2,
2582 3, 3, 2, 2, 2, 2, 2, 2, 3, 3,
2583 4, 4, 4, 3, 3, 4, 4, 3, 3, 2,
2584 2, 2, 2, 2, 2, 2, 3, 3, 2, 2,
2585 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2586 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2587 3, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2588 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2589 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2590 2, 3, 3, 3, 2, 2, 2, 1, 2, 0,
2591 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2592 2, 2, 2, 2, 2, 2, 1, 2, 0, 1,
2593 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2594 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2595 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2596 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
2597 2, 0, 1, 2, 1, 2, 0, 1, 2, 2,
2598 2, 3, 3, 1, 2, 0, 1, 1, 1, 1,
2599 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
2600 2, 2, 2, 2, 2, 2, 1, 2, 0, 1,
2601 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2602 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2603 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2604 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2605 2, 3, 2, 2, 2, 2, 2, 2, 1, 2,
2606 0, 1, 1, 2, 2
2607 };
2608
2609
2610 enum { YYENOMEM = -2 };
2611
2612 #define yyerrok (yyerrstatus = 0)
2613 #define yyclearin (yychar = YYEMPTY)
2614
2615 #define YYACCEPT goto yyacceptlab
2616 #define YYABORT goto yyabortlab
2617 #define YYERROR goto yyerrorlab
2618
2619
2620 #define YYRECOVERING() (!!yyerrstatus)
2621
2622 #define YYBACKUP(Token, Value) \
2623 do \
2624 if (yychar == YYEMPTY) \
2625 { \
2626 yychar = (Token); \
2627 yylval = (Value); \
2628 YYPOPSTACK (yylen); \
2629 yystate = *yyssp; \
2630 goto yybackup; \
2631 } \
2632 else \
2633 { \
2634 yyerror (YY_("syntax error: cannot back up")); \
2635 YYERROR; \
2636 } \
2637 while (0)
2638
2639 /* Backward compatibility with an undocumented macro.
2640 Use YYerror or YYUNDEF. */
2641 #define YYERRCODE YYUNDEF
2642
2643
2644 /* Enable debugging if requested. */
2645 #if YYDEBUG
2646
2647 # ifndef YYFPRINTF
2648 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2649 # define YYFPRINTF fprintf
2650 # endif
2651
2652 # define YYDPRINTF(Args) \
2653 do { \
2654 if (yydebug) \
2655 YYFPRINTF Args; \
2656 } while (0)
2657
2658 /* This macro is provided for backward compatibility. */
2659 # ifndef YY_LOCATION_PRINT
2660 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2661 # endif
2662
2663
2664 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2665 do { \
2666 if (yydebug) \
2667 { \
2668 YYFPRINTF (stderr, "%s ", Title); \
2669 yy_symbol_print (stderr, \
2670 Kind, Value); \
2671 YYFPRINTF (stderr, "\n"); \
2672 } \
2673 } while (0)
2674
2675
2676 /*-----------------------------------.
2677 | Print this symbol's value on YYO. |
2678 `-----------------------------------*/
2679
2680 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)2681 yy_symbol_value_print (FILE *yyo,
2682 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2683 {
2684 FILE *yyoutput = yyo;
2685 YY_USE (yyoutput);
2686 if (!yyvaluep)
2687 return;
2688 # ifdef YYPRINT
2689 if (yykind < YYNTOKENS)
2690 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
2691 # endif
2692 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2693 YY_USE (yykind);
2694 YY_IGNORE_MAYBE_UNINITIALIZED_END
2695 }
2696
2697
2698 /*---------------------------.
2699 | Print this symbol on YYO. |
2700 `---------------------------*/
2701
2702 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)2703 yy_symbol_print (FILE *yyo,
2704 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2705 {
2706 YYFPRINTF (yyo, "%s %s (",
2707 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2708
2709 yy_symbol_value_print (yyo, yykind, yyvaluep);
2710 YYFPRINTF (yyo, ")");
2711 }
2712
2713 /*------------------------------------------------------------------.
2714 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2715 | TOP (included). |
2716 `------------------------------------------------------------------*/
2717
2718 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2719 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2720 {
2721 YYFPRINTF (stderr, "Stack now");
2722 for (; yybottom <= yytop; yybottom++)
2723 {
2724 int yybot = *yybottom;
2725 YYFPRINTF (stderr, " %d", yybot);
2726 }
2727 YYFPRINTF (stderr, "\n");
2728 }
2729
2730 # define YY_STACK_PRINT(Bottom, Top) \
2731 do { \
2732 if (yydebug) \
2733 yy_stack_print ((Bottom), (Top)); \
2734 } while (0)
2735
2736
2737 /*------------------------------------------------.
2738 | Report that the YYRULE is going to be reduced. |
2739 `------------------------------------------------*/
2740
2741 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)2742 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
2743 int yyrule)
2744 {
2745 int yylno = yyrline[yyrule];
2746 int yynrhs = yyr2[yyrule];
2747 int yyi;
2748 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2749 yyrule - 1, yylno);
2750 /* The symbols being reduced. */
2751 for (yyi = 0; yyi < yynrhs; yyi++)
2752 {
2753 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2754 yy_symbol_print (stderr,
2755 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2756 &yyvsp[(yyi + 1) - (yynrhs)]);
2757 YYFPRINTF (stderr, "\n");
2758 }
2759 }
2760
2761 # define YY_REDUCE_PRINT(Rule) \
2762 do { \
2763 if (yydebug) \
2764 yy_reduce_print (yyssp, yyvsp, Rule); \
2765 } while (0)
2766
2767 /* Nonzero means print parse trace. It is left uninitialized so that
2768 multiple parsers can coexist. */
2769 int yydebug;
2770 #else /* !YYDEBUG */
2771 # define YYDPRINTF(Args) ((void) 0)
2772 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2773 # define YY_STACK_PRINT(Bottom, Top)
2774 # define YY_REDUCE_PRINT(Rule)
2775 #endif /* !YYDEBUG */
2776
2777
2778 /* YYINITDEPTH -- initial size of the parser's stacks. */
2779 #ifndef YYINITDEPTH
2780 # define YYINITDEPTH 200
2781 #endif
2782
2783 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2784 if the built-in stack extension method is used).
2785
2786 Do not make this value too large; the results are undefined if
2787 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2788 evaluated with infinite-precision integer arithmetic. */
2789
2790 #ifndef YYMAXDEPTH
2791 # define YYMAXDEPTH 10000
2792 #endif
2793
2794
2795
2796
2797
2798
2799 /*-----------------------------------------------.
2800 | Release the memory associated to this symbol. |
2801 `-----------------------------------------------*/
2802
2803 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)2804 yydestruct (const char *yymsg,
2805 yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
2806 {
2807 YY_USE (yyvaluep);
2808 if (!yymsg)
2809 yymsg = "Deleting";
2810 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2811
2812 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2813 YY_USE (yykind);
2814 YY_IGNORE_MAYBE_UNINITIALIZED_END
2815 }
2816
2817
2818 /* Lookahead token kind. */
2819 int yychar;
2820
2821 /* The semantic value of the lookahead symbol. */
2822 YYSTYPE yylval;
2823 /* Number of syntax errors so far. */
2824 int yynerrs;
2825
2826
2827
2828
2829 /*----------.
2830 | yyparse. |
2831 `----------*/
2832
2833 int
yyparse(void)2834 yyparse (void)
2835 {
2836 yy_state_fast_t yystate = 0;
2837 /* Number of tokens to shift before error messages enabled. */
2838 int yyerrstatus = 0;
2839
2840 /* Refer to the stacks through separate pointers, to allow yyoverflow
2841 to reallocate them elsewhere. */
2842
2843 /* Their size. */
2844 YYPTRDIFF_T yystacksize = YYINITDEPTH;
2845
2846 /* The state stack: array, bottom, top. */
2847 yy_state_t yyssa[YYINITDEPTH];
2848 yy_state_t *yyss = yyssa;
2849 yy_state_t *yyssp = yyss;
2850
2851 /* The semantic value stack: array, bottom, top. */
2852 YYSTYPE yyvsa[YYINITDEPTH];
2853 YYSTYPE *yyvs = yyvsa;
2854 YYSTYPE *yyvsp = yyvs;
2855
2856 int yyn;
2857 /* The return value of yyparse. */
2858 int yyresult;
2859 /* Lookahead symbol kind. */
2860 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2861 /* The variables used to return semantic value and location from the
2862 action routines. */
2863 YYSTYPE yyval;
2864
2865
2866
2867 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2868
2869 /* The number of symbols on the RHS of the reduced rule.
2870 Keep to zero when no symbol should be popped. */
2871 int yylen = 0;
2872
2873 YYDPRINTF ((stderr, "Starting parse\n"));
2874
2875 yychar = YYEMPTY; /* Cause a token to be read. */
2876 goto yysetstate;
2877
2878
2879 /*------------------------------------------------------------.
2880 | yynewstate -- push a new state, which is found in yystate. |
2881 `------------------------------------------------------------*/
2882 yynewstate:
2883 /* In all cases, when you get here, the value and location stacks
2884 have just been pushed. So pushing a state here evens the stacks. */
2885 yyssp++;
2886
2887
2888 /*--------------------------------------------------------------------.
2889 | yysetstate -- set current state (the top of the stack) to yystate. |
2890 `--------------------------------------------------------------------*/
2891 yysetstate:
2892 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2893 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2894 YY_IGNORE_USELESS_CAST_BEGIN
2895 *yyssp = YY_CAST (yy_state_t, yystate);
2896 YY_IGNORE_USELESS_CAST_END
2897 YY_STACK_PRINT (yyss, yyssp);
2898
2899 if (yyss + yystacksize - 1 <= yyssp)
2900 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2901 goto yyexhaustedlab;
2902 #else
2903 {
2904 /* Get the current used size of the three stacks, in elements. */
2905 YYPTRDIFF_T yysize = yyssp - yyss + 1;
2906
2907 # if defined yyoverflow
2908 {
2909 /* Give user a chance to reallocate the stack. Use copies of
2910 these so that the &'s don't force the real ones into
2911 memory. */
2912 yy_state_t *yyss1 = yyss;
2913 YYSTYPE *yyvs1 = yyvs;
2914
2915 /* Each stack pointer address is followed by the size of the
2916 data in use in that stack, in bytes. This used to be a
2917 conditional around just the two extra args, but that might
2918 be undefined if yyoverflow is a macro. */
2919 yyoverflow (YY_("memory exhausted"),
2920 &yyss1, yysize * YYSIZEOF (*yyssp),
2921 &yyvs1, yysize * YYSIZEOF (*yyvsp),
2922 &yystacksize);
2923 yyss = yyss1;
2924 yyvs = yyvs1;
2925 }
2926 # else /* defined YYSTACK_RELOCATE */
2927 /* Extend the stack our own way. */
2928 if (YYMAXDEPTH <= yystacksize)
2929 goto yyexhaustedlab;
2930 yystacksize *= 2;
2931 if (YYMAXDEPTH < yystacksize)
2932 yystacksize = YYMAXDEPTH;
2933
2934 {
2935 yy_state_t *yyss1 = yyss;
2936 union yyalloc *yyptr =
2937 YY_CAST (union yyalloc *,
2938 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2939 if (! yyptr)
2940 goto yyexhaustedlab;
2941 YYSTACK_RELOCATE (yyss_alloc, yyss);
2942 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2943 # undef YYSTACK_RELOCATE
2944 if (yyss1 != yyssa)
2945 YYSTACK_FREE (yyss1);
2946 }
2947 # endif
2948
2949 yyssp = yyss + yysize - 1;
2950 yyvsp = yyvs + yysize - 1;
2951
2952 YY_IGNORE_USELESS_CAST_BEGIN
2953 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2954 YY_CAST (long, yystacksize)));
2955 YY_IGNORE_USELESS_CAST_END
2956
2957 if (yyss + yystacksize - 1 <= yyssp)
2958 YYABORT;
2959 }
2960 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2961
2962 if (yystate == YYFINAL)
2963 YYACCEPT;
2964
2965 goto yybackup;
2966
2967
2968 /*-----------.
2969 | yybackup. |
2970 `-----------*/
2971 yybackup:
2972 /* Do appropriate processing given the current state. Read a
2973 lookahead token if we need one and don't already have one. */
2974
2975 /* First try to decide what to do without reference to lookahead token. */
2976 yyn = yypact[yystate];
2977 if (yypact_value_is_default (yyn))
2978 goto yydefault;
2979
2980 /* Not known => get a lookahead token if don't already have one. */
2981
2982 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
2983 if (yychar == YYEMPTY)
2984 {
2985 YYDPRINTF ((stderr, "Reading a token\n"));
2986 yychar = yylex ();
2987 }
2988
2989 if (yychar <= YYEOF)
2990 {
2991 yychar = YYEOF;
2992 yytoken = YYSYMBOL_YYEOF;
2993 YYDPRINTF ((stderr, "Now at end of input.\n"));
2994 }
2995 else if (yychar == YYerror)
2996 {
2997 /* The scanner already issued an error message, process directly
2998 to error recovery. But do not keep the error token as
2999 lookahead, it is too special and may lead us to an endless
3000 loop in error recovery. */
3001 yychar = YYUNDEF;
3002 yytoken = YYSYMBOL_YYerror;
3003 goto yyerrlab1;
3004 }
3005 else
3006 {
3007 yytoken = YYTRANSLATE (yychar);
3008 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3009 }
3010
3011 /* If the proper action on seeing token YYTOKEN is to reduce or to
3012 detect an error, take that action. */
3013 yyn += yytoken;
3014 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3015 goto yydefault;
3016 yyn = yytable[yyn];
3017 if (yyn <= 0)
3018 {
3019 if (yytable_value_is_error (yyn))
3020 goto yyerrlab;
3021 yyn = -yyn;
3022 goto yyreduce;
3023 }
3024
3025 /* Count tokens shifted since error; after three, turn off error
3026 status. */
3027 if (yyerrstatus)
3028 yyerrstatus--;
3029
3030 /* Shift the lookahead token. */
3031 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3032 yystate = yyn;
3033 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3034 *++yyvsp = yylval;
3035 YY_IGNORE_MAYBE_UNINITIALIZED_END
3036
3037 /* Discard the shifted token. */
3038 yychar = YYEMPTY;
3039 goto yynewstate;
3040
3041
3042 /*-----------------------------------------------------------.
3043 | yydefault -- do the default action for the current state. |
3044 `-----------------------------------------------------------*/
3045 yydefault:
3046 yyn = yydefact[yystate];
3047 if (yyn == 0)
3048 goto yyerrlab;
3049 goto yyreduce;
3050
3051
3052 /*-----------------------------.
3053 | yyreduce -- do a reduction. |
3054 `-----------------------------*/
3055 yyreduce:
3056 /* yyn is the number of a rule to reduce with. */
3057 yylen = yyr2[yyn];
3058
3059 /* If YYLEN is nonzero, implement the default value of the action:
3060 '$$ = $1'.
3061
3062 Otherwise, the following line sets YYVAL to garbage.
3063 This behavior is undocumented and Bison
3064 users should not rely upon it. Assigning to YYVAL
3065 unconditionally makes the parser a bit smaller, and it avoids a
3066 GCC warning that YYVAL may be used uninitialized. */
3067 yyval = yyvsp[1-yylen];
3068
3069
3070 YY_REDUCE_PRINT (yyn);
3071 switch (yyn)
3072 {
3073 case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */
3074 #line 230 "util/configparser.y"
3075 {
3076 OUTYY(("\nP(force-toplevel)\n"));
3077 cfg_parser->started_toplevel = 0;
3078 }
3079 #line 3080 "util/configparser.c"
3080 break;
3081
3082 case 19: /* serverstart: VAR_SERVER */
3083 #line 237 "util/configparser.y"
3084 {
3085 OUTYY(("\nP(server:)\n"));
3086 cfg_parser->started_toplevel = 1;
3087 }
3088 #line 3089 "util/configparser.c"
3089 break;
3090
3091 case 280: /* stub_clause: stubstart contents_stub */
3092 #line 362 "util/configparser.y"
3093 {
3094 /* stub end */
3095 if(cfg_parser->cfg->stubs &&
3096 !cfg_parser->cfg->stubs->name)
3097 yyerror("stub-zone without name");
3098 }
3099 #line 3100 "util/configparser.c"
3100 break;
3101
3102 case 281: /* stubstart: VAR_STUB_ZONE */
3103 #line 370 "util/configparser.y"
3104 {
3105 struct config_stub* s;
3106 OUTYY(("\nP(stub_zone:)\n"));
3107 cfg_parser->started_toplevel = 1;
3108 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3109 if(s) {
3110 s->next = cfg_parser->cfg->stubs;
3111 cfg_parser->cfg->stubs = s;
3112 } else {
3113 yyerror("out of memory");
3114 }
3115 }
3116 #line 3117 "util/configparser.c"
3117 break;
3118
3119 case 292: /* forward_clause: forwardstart contents_forward */
3120 #line 389 "util/configparser.y"
3121 {
3122 /* forward end */
3123 if(cfg_parser->cfg->forwards &&
3124 !cfg_parser->cfg->forwards->name)
3125 yyerror("forward-zone without name");
3126 }
3127 #line 3128 "util/configparser.c"
3128 break;
3129
3130 case 293: /* forwardstart: VAR_FORWARD_ZONE */
3131 #line 397 "util/configparser.y"
3132 {
3133 struct config_stub* s;
3134 OUTYY(("\nP(forward_zone:)\n"));
3135 cfg_parser->started_toplevel = 1;
3136 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3137 if(s) {
3138 s->next = cfg_parser->cfg->forwards;
3139 cfg_parser->cfg->forwards = s;
3140 } else {
3141 yyerror("out of memory");
3142 }
3143 }
3144 #line 3145 "util/configparser.c"
3145 break;
3146
3147 case 303: /* view_clause: viewstart contents_view */
3148 #line 416 "util/configparser.y"
3149 {
3150 /* view end */
3151 if(cfg_parser->cfg->views &&
3152 !cfg_parser->cfg->views->name)
3153 yyerror("view without name");
3154 }
3155 #line 3156 "util/configparser.c"
3156 break;
3157
3158 case 304: /* viewstart: VAR_VIEW */
3159 #line 424 "util/configparser.y"
3160 {
3161 struct config_view* s;
3162 OUTYY(("\nP(view:)\n"));
3163 cfg_parser->started_toplevel = 1;
3164 s = (struct config_view*)calloc(1, sizeof(struct config_view));
3165 if(s) {
3166 s->next = cfg_parser->cfg->views;
3167 cfg_parser->cfg->views = s;
3168 } else {
3169 yyerror("out of memory");
3170 }
3171 }
3172 #line 3173 "util/configparser.c"
3173 break;
3174
3175 case 314: /* authstart: VAR_AUTH_ZONE */
3176 #line 443 "util/configparser.y"
3177 {
3178 struct config_auth* s;
3179 OUTYY(("\nP(auth_zone:)\n"));
3180 cfg_parser->started_toplevel = 1;
3181 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3182 if(s) {
3183 s->next = cfg_parser->cfg->auths;
3184 cfg_parser->cfg->auths = s;
3185 /* defaults for auth zone */
3186 s->for_downstream = 1;
3187 s->for_upstream = 1;
3188 s->fallback_enabled = 0;
3189 s->zonemd_check = 0;
3190 s->zonemd_reject_absence = 0;
3191 s->isrpz = 0;
3192 } else {
3193 yyerror("out of memory");
3194 }
3195 }
3196 #line 3197 "util/configparser.c"
3197 break;
3198
3199 case 327: /* rpz_tag: VAR_TAGS STRING_ARG */
3200 #line 471 "util/configparser.y"
3201 {
3202 uint8_t* bitlist;
3203 size_t len = 0;
3204 OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3205 bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3206 &len);
3207 free((yyvsp[0].str));
3208 if(!bitlist) {
3209 yyerror("could not parse tags, (define-tag them first)");
3210 }
3211 if(bitlist) {
3212 cfg_parser->cfg->auths->rpz_taglist = bitlist;
3213 cfg_parser->cfg->auths->rpz_taglistlen = len;
3214
3215 }
3216 }
3217 #line 3218 "util/configparser.c"
3218 break;
3219
3220 case 328: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */
3221 #line 490 "util/configparser.y"
3222 {
3223 OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3224 if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3225 strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3226 strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3227 yyerror("rpz-action-override action: expected nxdomain, "
3228 "nodata, passthru, drop, cname or disabled");
3229 free((yyvsp[0].str));
3230 cfg_parser->cfg->auths->rpz_action_override = NULL;
3231 }
3232 else {
3233 cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3234 }
3235 }
3236 #line 3237 "util/configparser.c"
3237 break;
3238
3239 case 329: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */
3240 #line 507 "util/configparser.y"
3241 {
3242 OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3243 free(cfg_parser->cfg->auths->rpz_cname);
3244 cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3245 }
3246 #line 3247 "util/configparser.c"
3247 break;
3248
3249 case 330: /* rpz_log: VAR_RPZ_LOG STRING_ARG */
3250 #line 515 "util/configparser.y"
3251 {
3252 OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3253 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3254 yyerror("expected yes or no.");
3255 else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3256 free((yyvsp[0].str));
3257 }
3258 #line 3259 "util/configparser.c"
3259 break;
3260
3261 case 331: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */
3262 #line 525 "util/configparser.y"
3263 {
3264 OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3265 free(cfg_parser->cfg->auths->rpz_log_name);
3266 cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3267 }
3268 #line 3269 "util/configparser.c"
3269 break;
3270
3271 case 332: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */
3272 #line 532 "util/configparser.y"
3273 {
3274 OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
3275 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3276 yyerror("expected yes or no.");
3277 else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
3278 free((yyvsp[0].str));
3279 }
3280 #line 3281 "util/configparser.c"
3281 break;
3282
3283 case 333: /* rpzstart: VAR_RPZ */
3284 #line 542 "util/configparser.y"
3285 {
3286 struct config_auth* s;
3287 OUTYY(("\nP(rpz:)\n"));
3288 cfg_parser->started_toplevel = 1;
3289 s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3290 if(s) {
3291 s->next = cfg_parser->cfg->auths;
3292 cfg_parser->cfg->auths = s;
3293 /* defaults for RPZ auth zone */
3294 s->for_downstream = 0;
3295 s->for_upstream = 0;
3296 s->fallback_enabled = 0;
3297 s->isrpz = 1;
3298 } else {
3299 yyerror("out of memory");
3300 }
3301 }
3302 #line 3303 "util/configparser.c"
3303 break;
3304
3305 case 348: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */
3306 #line 567 "util/configparser.y"
3307 {
3308 OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3309 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3310 yyerror("number expected");
3311 else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3312 free((yyvsp[0].str));
3313 }
3314 #line 3315 "util/configparser.c"
3315 break;
3316
3317 case 349: /* server_verbosity: VAR_VERBOSITY STRING_ARG */
3318 #line 576 "util/configparser.y"
3319 {
3320 OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3321 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3322 yyerror("number expected");
3323 else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3324 free((yyvsp[0].str));
3325 }
3326 #line 3327 "util/configparser.c"
3327 break;
3328
3329 case 350: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */
3330 #line 585 "util/configparser.y"
3331 {
3332 OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3333 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3334 cfg_parser->cfg->stat_interval = 0;
3335 else if(atoi((yyvsp[0].str)) == 0)
3336 yyerror("number expected");
3337 else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3338 free((yyvsp[0].str));
3339 }
3340 #line 3341 "util/configparser.c"
3341 break;
3342
3343 case 351: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */
3344 #line 596 "util/configparser.y"
3345 {
3346 OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3347 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3348 yyerror("expected yes or no.");
3349 else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3350 free((yyvsp[0].str));
3351 }
3352 #line 3353 "util/configparser.c"
3353 break;
3354
3355 case 352: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */
3356 #line 605 "util/configparser.y"
3357 {
3358 OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3359 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3360 yyerror("expected yes or no.");
3361 else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3362 free((yyvsp[0].str));
3363 }
3364 #line 3365 "util/configparser.c"
3365 break;
3366
3367 case 353: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */
3368 #line 614 "util/configparser.y"
3369 {
3370 OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str)));
3371 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3372 yyerror("expected yes or no.");
3373 else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0);
3374 free((yyvsp[0].str));
3375 }
3376 #line 3377 "util/configparser.c"
3377 break;
3378
3379 case 354: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */
3380 #line 623 "util/configparser.y"
3381 {
3382 OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3383 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3384 yyerror("expected yes or no.");
3385 else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3386 free((yyvsp[0].str));
3387 }
3388 #line 3389 "util/configparser.c"
3389 break;
3390
3391 case 355: /* server_shm_key: VAR_SHM_KEY STRING_ARG */
3392 #line 632 "util/configparser.y"
3393 {
3394 OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3395 if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3396 cfg_parser->cfg->shm_key = 0;
3397 else if(atoi((yyvsp[0].str)) == 0)
3398 yyerror("number expected");
3399 else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3400 free((yyvsp[0].str));
3401 }
3402 #line 3403 "util/configparser.c"
3403 break;
3404
3405 case 356: /* server_port: VAR_PORT STRING_ARG */
3406 #line 643 "util/configparser.y"
3407 {
3408 OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3409 if(atoi((yyvsp[0].str)) == 0)
3410 yyerror("port number expected");
3411 else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3412 free((yyvsp[0].str));
3413 }
3414 #line 3415 "util/configparser.c"
3415 break;
3416
3417 case 357: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */
3418 #line 652 "util/configparser.y"
3419 {
3420 #ifdef CLIENT_SUBNET
3421 OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3422 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3423 fatal_exit("out of memory adding client-subnet");
3424 #else
3425 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3426 free((yyvsp[0].str));
3427 #endif
3428 }
3429 #line 3430 "util/configparser.c"
3430 break;
3431
3432 case 358: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */
3433 #line 664 "util/configparser.y"
3434 {
3435 #ifdef CLIENT_SUBNET
3436 OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3437 if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3438 (yyvsp[0].str)))
3439 fatal_exit("out of memory adding client-subnet-zone");
3440 #else
3441 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3442 free((yyvsp[0].str));
3443 #endif
3444 }
3445 #line 3446 "util/configparser.c"
3446 break;
3447
3448 case 359: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */
3449 #line 678 "util/configparser.y"
3450 {
3451 #ifdef CLIENT_SUBNET
3452 OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3453 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3454 yyerror("expected yes or no.");
3455 else
3456 cfg_parser->cfg->client_subnet_always_forward =
3457 (strcmp((yyvsp[0].str), "yes")==0);
3458 #else
3459 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3460 #endif
3461 free((yyvsp[0].str));
3462 }
3463 #line 3464 "util/configparser.c"
3464 break;
3465
3466 case 360: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */
3467 #line 693 "util/configparser.y"
3468 {
3469 #ifdef CLIENT_SUBNET
3470 OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3471 OUTYY(("P(Deprecated option, ignoring)\n"));
3472 #else
3473 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3474 #endif
3475 free((yyvsp[0].str));
3476 }
3477 #line 3478 "util/configparser.c"
3478 break;
3479
3480 case 361: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */
3481 #line 704 "util/configparser.y"
3482 {
3483 #ifdef CLIENT_SUBNET
3484 OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3485 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3486 yyerror("IPv4 subnet length expected");
3487 else if (atoi((yyvsp[0].str)) > 32)
3488 cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3489 else if (atoi((yyvsp[0].str)) < 0)
3490 cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3491 else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3492 #else
3493 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3494 #endif
3495 free((yyvsp[0].str));
3496 }
3497 #line 3498 "util/configparser.c"
3498 break;
3499
3500 case 362: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */
3501 #line 721 "util/configparser.y"
3502 {
3503 #ifdef CLIENT_SUBNET
3504 OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3505 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3506 yyerror("Ipv6 subnet length expected");
3507 else if (atoi((yyvsp[0].str)) > 128)
3508 cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3509 else if (atoi((yyvsp[0].str)) < 0)
3510 cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3511 else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3512 #else
3513 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3514 #endif
3515 free((yyvsp[0].str));
3516 }
3517 #line 3518 "util/configparser.c"
3518 break;
3519
3520 case 363: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */
3521 #line 738 "util/configparser.y"
3522 {
3523 #ifdef CLIENT_SUBNET
3524 OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3525 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3526 yyerror("IPv4 subnet length expected");
3527 else if (atoi((yyvsp[0].str)) > 32)
3528 cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3529 else if (atoi((yyvsp[0].str)) < 0)
3530 cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3531 else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3532 #else
3533 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3534 #endif
3535 free((yyvsp[0].str));
3536 }
3537 #line 3538 "util/configparser.c"
3538 break;
3539
3540 case 364: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */
3541 #line 755 "util/configparser.y"
3542 {
3543 #ifdef CLIENT_SUBNET
3544 OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3545 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3546 yyerror("Ipv6 subnet length expected");
3547 else if (atoi((yyvsp[0].str)) > 128)
3548 cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3549 else if (atoi((yyvsp[0].str)) < 0)
3550 cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3551 else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3552 #else
3553 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3554 #endif
3555 free((yyvsp[0].str));
3556 }
3557 #line 3558 "util/configparser.c"
3558 break;
3559
3560 case 365: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */
3561 #line 772 "util/configparser.y"
3562 {
3563 #ifdef CLIENT_SUBNET
3564 OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3565 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3566 yyerror("IPv4 ECS tree size expected");
3567 else if (atoi((yyvsp[0].str)) < 0)
3568 cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3569 else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3570 #else
3571 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3572 #endif
3573 free((yyvsp[0].str));
3574 }
3575 #line 3576 "util/configparser.c"
3576 break;
3577
3578 case 366: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */
3579 #line 787 "util/configparser.y"
3580 {
3581 #ifdef CLIENT_SUBNET
3582 OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3583 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3584 yyerror("IPv6 ECS tree size expected");
3585 else if (atoi((yyvsp[0].str)) < 0)
3586 cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3587 else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3588 #else
3589 OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3590 #endif
3591 free((yyvsp[0].str));
3592 }
3593 #line 3594 "util/configparser.c"
3594 break;
3595
3596 case 367: /* server_interface: VAR_INTERFACE STRING_ARG */
3597 #line 802 "util/configparser.y"
3598 {
3599 OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3600 if(cfg_parser->cfg->num_ifs == 0)
3601 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3602 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3603 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3604 if(!cfg_parser->cfg->ifs)
3605 yyerror("out of memory");
3606 else
3607 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3608 }
3609 #line 3610 "util/configparser.c"
3610 break;
3611
3612 case 368: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */
3613 #line 815 "util/configparser.y"
3614 {
3615 OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3616 if(cfg_parser->cfg->num_out_ifs == 0)
3617 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3618 else cfg_parser->cfg->out_ifs = realloc(
3619 cfg_parser->cfg->out_ifs,
3620 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3621 if(!cfg_parser->cfg->out_ifs)
3622 yyerror("out of memory");
3623 else
3624 cfg_parser->cfg->out_ifs[
3625 cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3626 }
3627 #line 3628 "util/configparser.c"
3628 break;
3629
3630 case 369: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */
3631 #line 830 "util/configparser.y"
3632 {
3633 OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3634 if(atoi((yyvsp[0].str)) == 0)
3635 yyerror("number expected");
3636 else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3637 free((yyvsp[0].str));
3638 }
3639 #line 3640 "util/configparser.c"
3640 break;
3641
3642 case 370: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */
3643 #line 839 "util/configparser.y"
3644 {
3645 OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3646 if(!cfg_mark_ports((yyvsp[0].str), 1,
3647 cfg_parser->cfg->outgoing_avail_ports, 65536))
3648 yyerror("port number or range (\"low-high\") expected");
3649 free((yyvsp[0].str));
3650 }
3651 #line 3652 "util/configparser.c"
3652 break;
3653
3654 case 371: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */
3655 #line 848 "util/configparser.y"
3656 {
3657 OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3658 if(!cfg_mark_ports((yyvsp[0].str), 0,
3659 cfg_parser->cfg->outgoing_avail_ports, 65536))
3660 yyerror("port number or range (\"low-high\") expected");
3661 free((yyvsp[0].str));
3662 }
3663 #line 3664 "util/configparser.c"
3664 break;
3665
3666 case 372: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */
3667 #line 857 "util/configparser.y"
3668 {
3669 OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3670 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3671 yyerror("number expected");
3672 else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3673 free((yyvsp[0].str));
3674 }
3675 #line 3676 "util/configparser.c"
3676 break;
3677
3678 case 373: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */
3679 #line 866 "util/configparser.y"
3680 {
3681 OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3682 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3683 yyerror("number expected");
3684 else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3685 free((yyvsp[0].str));
3686 }
3687 #line 3688 "util/configparser.c"
3688 break;
3689
3690 case 374: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */
3691 #line 875 "util/configparser.y"
3692 {
3693 OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3694 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3695 yyerror("expected yes or no.");
3696 else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3697 free((yyvsp[0].str));
3698 }
3699 #line 3700 "util/configparser.c"
3700 break;
3701
3702 case 375: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */
3703 #line 884 "util/configparser.y"
3704 {
3705 OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
3706 free(cfg_parser->cfg->if_automatic_ports);
3707 cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
3708 }
3709 #line 3710 "util/configparser.c"
3710 break;
3711
3712 case 376: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */
3713 #line 891 "util/configparser.y"
3714 {
3715 OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3716 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3717 yyerror("expected yes or no.");
3718 else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3719 free((yyvsp[0].str));
3720 }
3721 #line 3722 "util/configparser.c"
3722 break;
3723
3724 case 377: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */
3725 #line 900 "util/configparser.y"
3726 {
3727 OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3728 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3729 yyerror("expected yes or no.");
3730 else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3731 free((yyvsp[0].str));
3732 }
3733 #line 3734 "util/configparser.c"
3734 break;
3735
3736 case 378: /* server_do_nat64: VAR_DO_NAT64 STRING_ARG */
3737 #line 909 "util/configparser.y"
3738 {
3739 OUTYY(("P(server_do_nat64:%s)\n", (yyvsp[0].str)));
3740 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3741 yyerror("expected yes or no.");
3742 else cfg_parser->cfg->do_nat64 = (strcmp((yyvsp[0].str), "yes")==0);
3743 free((yyvsp[0].str));
3744 }
3745 #line 3746 "util/configparser.c"
3746 break;
3747
3748 case 379: /* server_do_udp: VAR_DO_UDP STRING_ARG */
3749 #line 918 "util/configparser.y"
3750 {
3751 OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3752 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3753 yyerror("expected yes or no.");
3754 else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3755 free((yyvsp[0].str));
3756 }
3757 #line 3758 "util/configparser.c"
3758 break;
3759
3760 case 380: /* server_do_tcp: VAR_DO_TCP STRING_ARG */
3761 #line 927 "util/configparser.y"
3762 {
3763 OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3764 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3765 yyerror("expected yes or no.");
3766 else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3767 free((yyvsp[0].str));
3768 }
3769 #line 3770 "util/configparser.c"
3770 break;
3771
3772 case 381: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */
3773 #line 936 "util/configparser.y"
3774 {
3775 OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3776 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3777 yyerror("expected yes or no.");
3778 else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3779 free((yyvsp[0].str));
3780 }
3781 #line 3782 "util/configparser.c"
3782 break;
3783
3784 case 382: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */
3785 #line 945 "util/configparser.y"
3786 {
3787 OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
3788 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3789 yyerror("expected yes or no.");
3790 else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3791 free((yyvsp[0].str));
3792 }
3793 #line 3794 "util/configparser.c"
3794 break;
3795
3796 case 383: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */
3797 #line 954 "util/configparser.y"
3798 {
3799 OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
3800 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3801 yyerror("number expected");
3802 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
3803 free((yyvsp[0].str));
3804 }
3805 #line 3806 "util/configparser.c"
3806 break;
3807
3808 case 384: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */
3809 #line 963 "util/configparser.y"
3810 {
3811 OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
3812 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3813 yyerror("number expected");
3814 else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
3815 free((yyvsp[0].str));
3816 }
3817 #line 3818 "util/configparser.c"
3818 break;
3819
3820 case 385: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */
3821 #line 972 "util/configparser.y"
3822 {
3823 OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
3824 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3825 yyerror("number expected");
3826 else if (atoi((yyvsp[0].str)) > 120000)
3827 cfg_parser->cfg->tcp_idle_timeout = 120000;
3828 else if (atoi((yyvsp[0].str)) < 1)
3829 cfg_parser->cfg->tcp_idle_timeout = 1;
3830 else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
3831 free((yyvsp[0].str));
3832 }
3833 #line 3834 "util/configparser.c"
3834 break;
3835
3836 case 386: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */
3837 #line 985 "util/configparser.y"
3838 {
3839 OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
3840 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3841 yyerror("number expected");
3842 else if (atoi((yyvsp[0].str)) < 1)
3843 cfg_parser->cfg->max_reuse_tcp_queries = 0;
3844 else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
3845 free((yyvsp[0].str));
3846 }
3847 #line 3848 "util/configparser.c"
3848 break;
3849
3850 case 387: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */
3851 #line 996 "util/configparser.y"
3852 {
3853 OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
3854 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3855 yyerror("number expected");
3856 else if (atoi((yyvsp[0].str)) < 1)
3857 cfg_parser->cfg->tcp_reuse_timeout = 0;
3858 else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
3859 free((yyvsp[0].str));
3860 }
3861 #line 3862 "util/configparser.c"
3862 break;
3863
3864 case 388: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */
3865 #line 1007 "util/configparser.y"
3866 {
3867 OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
3868 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3869 yyerror("number expected");
3870 else if (atoi((yyvsp[0].str)) < 1)
3871 cfg_parser->cfg->tcp_auth_query_timeout = 0;
3872 else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
3873 free((yyvsp[0].str));
3874 }
3875 #line 3876 "util/configparser.c"
3876 break;
3877
3878 case 389: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */
3879 #line 1018 "util/configparser.y"
3880 {
3881 OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
3882 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3883 yyerror("expected yes or no.");
3884 else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
3885 free((yyvsp[0].str));
3886 }
3887 #line 3888 "util/configparser.c"
3888 break;
3889
3890 case 390: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */
3891 #line 1027 "util/configparser.y"
3892 {
3893 OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
3894 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3895 yyerror("number expected");
3896 else if (atoi((yyvsp[0].str)) > 6553500)
3897 cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
3898 else if (atoi((yyvsp[0].str)) < 1)
3899 cfg_parser->cfg->tcp_keepalive_timeout = 0;
3900 else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
3901 free((yyvsp[0].str));
3902 }
3903 #line 3904 "util/configparser.c"
3904 break;
3905
3906 case 391: /* server_sock_queue_timeout: VAR_SOCK_QUEUE_TIMEOUT STRING_ARG */
3907 #line 1040 "util/configparser.y"
3908 {
3909 OUTYY(("P(server_sock_queue_timeout:%s)\n", (yyvsp[0].str)));
3910 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3911 yyerror("number expected");
3912 else if (atoi((yyvsp[0].str)) > 6553500)
3913 cfg_parser->cfg->sock_queue_timeout = 6553500;
3914 else if (atoi((yyvsp[0].str)) < 1)
3915 cfg_parser->cfg->sock_queue_timeout = 0;
3916 else cfg_parser->cfg->sock_queue_timeout = atoi((yyvsp[0].str));
3917 free((yyvsp[0].str));
3918 }
3919 #line 3920 "util/configparser.c"
3920 break;
3921
3922 case 392: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */
3923 #line 1053 "util/configparser.y"
3924 {
3925 OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
3926 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3927 yyerror("expected yes or no.");
3928 else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3929 free((yyvsp[0].str));
3930 }
3931 #line 3932 "util/configparser.c"
3932 break;
3933
3934 case 393: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */
3935 #line 1062 "util/configparser.y"
3936 {
3937 OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
3938 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3939 yyerror("expected yes or no.");
3940 else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3941 free((yyvsp[0].str));
3942 }
3943 #line 3944 "util/configparser.c"
3944 break;
3945
3946 case 394: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */
3947 #line 1071 "util/configparser.y"
3948 {
3949 OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
3950 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3951 yyerror("expected yes or no.");
3952 else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3953 free((yyvsp[0].str));
3954 }
3955 #line 3956 "util/configparser.c"
3956 break;
3957
3958 case 395: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */
3959 #line 1080 "util/configparser.y"
3960 {
3961 OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
3962 free(cfg_parser->cfg->ssl_service_key);
3963 cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
3964 }
3965 #line 3966 "util/configparser.c"
3966 break;
3967
3968 case 396: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */
3969 #line 1087 "util/configparser.y"
3970 {
3971 OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
3972 free(cfg_parser->cfg->ssl_service_pem);
3973 cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
3974 }
3975 #line 3976 "util/configparser.c"
3976 break;
3977
3978 case 397: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */
3979 #line 1094 "util/configparser.y"
3980 {
3981 OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
3982 if(atoi((yyvsp[0].str)) == 0)
3983 yyerror("port number expected");
3984 else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
3985 free((yyvsp[0].str));
3986 }
3987 #line 3988 "util/configparser.c"
3988 break;
3989
3990 case 398: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */
3991 #line 1103 "util/configparser.y"
3992 {
3993 OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
3994 free(cfg_parser->cfg->tls_cert_bundle);
3995 cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
3996 }
3997 #line 3998 "util/configparser.c"
3998 break;
3999
4000 case 399: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */
4001 #line 1110 "util/configparser.y"
4002 {
4003 OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
4004 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4005 yyerror("expected yes or no.");
4006 else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
4007 free((yyvsp[0].str));
4008 }
4009 #line 4010 "util/configparser.c"
4010 break;
4011
4012 case 400: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */
4013 #line 1119 "util/configparser.y"
4014 {
4015 OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
4016 if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
4017 (yyvsp[0].str)))
4018 yyerror("out of memory");
4019 }
4020 #line 4021 "util/configparser.c"
4021 break;
4022
4023 case 401: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */
4024 #line 1127 "util/configparser.y"
4025 {
4026 OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
4027 free(cfg_parser->cfg->tls_ciphers);
4028 cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
4029 }
4030 #line 4031 "util/configparser.c"
4031 break;
4032
4033 case 402: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */
4034 #line 1134 "util/configparser.y"
4035 {
4036 OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
4037 free(cfg_parser->cfg->tls_ciphersuites);
4038 cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
4039 }
4040 #line 4041 "util/configparser.c"
4041 break;
4042
4043 case 403: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */
4044 #line 1141 "util/configparser.y"
4045 {
4046 OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
4047 if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
4048 (yyvsp[0].str)))
4049 yyerror("out of memory");
4050 }
4051 #line 4052 "util/configparser.c"
4052 break;
4053
4054 case 404: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */
4055 #line 1149 "util/configparser.y"
4056 {
4057 OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4058 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4059 yyerror("expected yes or no.");
4060 else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4061 free((yyvsp[0].str));
4062 }
4063 #line 4064 "util/configparser.c"
4064 break;
4065
4066 case 405: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */
4067 #line 1158 "util/configparser.y"
4068 {
4069 OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4070 if(atoi((yyvsp[0].str)) == 0)
4071 yyerror("port number expected");
4072 else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4073 free((yyvsp[0].str));
4074 }
4075 #line 4076 "util/configparser.c"
4076 break;
4077
4078 case 406: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */
4079 #line 1166 "util/configparser.y"
4080 {
4081 OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4082 free(cfg_parser->cfg->http_endpoint);
4083 if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4084 cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4085 if(cfg_parser->cfg->http_endpoint) {
4086 cfg_parser->cfg->http_endpoint[0] = '/';
4087 memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4088 strlen((yyvsp[0].str))+1);
4089 } else {
4090 yyerror("out of memory");
4091 }
4092 free((yyvsp[0].str));
4093 } else {
4094 cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4095 }
4096 }
4097 #line 4098 "util/configparser.c"
4098 break;
4099
4100 case 407: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */
4101 #line 1184 "util/configparser.y"
4102 {
4103 OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4104 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4105 yyerror("number expected");
4106 else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4107 free((yyvsp[0].str));
4108 }
4109 #line 4110 "util/configparser.c"
4110 break;
4111
4112 case 408: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */
4113 #line 1192 "util/configparser.y"
4114 {
4115 OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4116 if(!cfg_parse_memsize((yyvsp[0].str),
4117 &cfg_parser->cfg->http_query_buffer_size))
4118 yyerror("memory size expected");
4119 free((yyvsp[0].str));
4120 }
4121 #line 4122 "util/configparser.c"
4122 break;
4123
4124 case 409: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */
4125 #line 1200 "util/configparser.y"
4126 {
4127 OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4128 if(!cfg_parse_memsize((yyvsp[0].str),
4129 &cfg_parser->cfg->http_response_buffer_size))
4130 yyerror("memory size expected");
4131 free((yyvsp[0].str));
4132 }
4133 #line 4134 "util/configparser.c"
4134 break;
4135
4136 case 410: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */
4137 #line 1208 "util/configparser.y"
4138 {
4139 OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4140 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4141 yyerror("expected yes or no.");
4142 else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4143 free((yyvsp[0].str));
4144 }
4145 #line 4146 "util/configparser.c"
4146 break;
4147
4148 case 411: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */
4149 #line 1216 "util/configparser.y"
4150 {
4151 OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4152 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4153 yyerror("expected yes or no.");
4154 else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4155 free((yyvsp[0].str));
4156 }
4157 #line 4158 "util/configparser.c"
4158 break;
4159
4160 case 412: /* server_quic_port: VAR_QUIC_PORT STRING_ARG */
4161 #line 1224 "util/configparser.y"
4162 {
4163 OUTYY(("P(server_quic_port:%s)\n", (yyvsp[0].str)));
4164 #ifndef HAVE_NGTCP2
4165 log_warn("%s:%d: Unbound is not compiled with "
4166 "ngtcp2. This is required to use DNS "
4167 "over QUIC.", cfg_parser->filename, cfg_parser->line);
4168 #endif
4169 if(atoi((yyvsp[0].str)) == 0)
4170 yyerror("port number expected");
4171 else cfg_parser->cfg->quic_port = atoi((yyvsp[0].str));
4172 free((yyvsp[0].str));
4173 }
4174 #line 4175 "util/configparser.c"
4175 break;
4176
4177 case 413: /* server_quic_size: VAR_QUIC_SIZE STRING_ARG */
4178 #line 1237 "util/configparser.y"
4179 {
4180 OUTYY(("P(server_quic_size:%s)\n", (yyvsp[0].str)));
4181 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->quic_size))
4182 yyerror("memory size expected");
4183 free((yyvsp[0].str));
4184 }
4185 #line 4186 "util/configparser.c"
4186 break;
4187
4188 case 414: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */
4189 #line 1244 "util/configparser.y"
4190 {
4191 OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4192 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4193 yyerror("expected yes or no.");
4194 else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4195 free((yyvsp[0].str));
4196 }
4197 #line 4198 "util/configparser.c"
4198 break;
4199
4200 case 415: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */
4201 #line 1253 "util/configparser.y"
4202 {
4203 OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4204 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4205 yyerror("expected yes or no.");
4206 else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4207 free((yyvsp[0].str));
4208 }
4209 #line 4210 "util/configparser.c"
4210 break;
4211
4212 case 416: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */
4213 #line 1262 "util/configparser.y"
4214 {
4215 OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4216 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4217 yyerror("expected yes or no.");
4218 else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4219 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4220 if(strcmp((yyvsp[0].str), "yes") == 0)
4221 yyerror("no syslog services are available. "
4222 "(reconfigure and compile to add)");
4223 #endif
4224 free((yyvsp[0].str));
4225 }
4226 #line 4227 "util/configparser.c"
4227 break;
4228
4229 case 417: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */
4230 #line 1276 "util/configparser.y"
4231 {
4232 OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4233 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4234 yyerror("expected yes or no.");
4235 else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4236 free((yyvsp[0].str));
4237 }
4238 #line 4239 "util/configparser.c"
4239 break;
4240
4241 case 418: /* server_log_time_iso: VAR_LOG_TIME_ISO STRING_ARG */
4242 #line 1285 "util/configparser.y"
4243 {
4244 OUTYY(("P(server_log_time_iso:%s)\n", (yyvsp[0].str)));
4245 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4246 yyerror("expected yes or no.");
4247 else cfg_parser->cfg->log_time_iso = (strcmp((yyvsp[0].str), "yes")==0);
4248 free((yyvsp[0].str));
4249 }
4250 #line 4251 "util/configparser.c"
4251 break;
4252
4253 case 419: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */
4254 #line 1294 "util/configparser.y"
4255 {
4256 OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4257 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4258 yyerror("expected yes or no.");
4259 else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4260 free((yyvsp[0].str));
4261 }
4262 #line 4263 "util/configparser.c"
4263 break;
4264
4265 case 420: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */
4266 #line 1303 "util/configparser.y"
4267 {
4268 OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4269 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4270 yyerror("expected yes or no.");
4271 else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4272 free((yyvsp[0].str));
4273 }
4274 #line 4275 "util/configparser.c"
4275 break;
4276
4277 case 421: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */
4278 #line 1312 "util/configparser.y"
4279 {
4280 OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4281 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4282 yyerror("expected yes or no.");
4283 else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4284 free((yyvsp[0].str));
4285 }
4286 #line 4287 "util/configparser.c"
4287 break;
4288
4289 case 422: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */
4290 #line 1321 "util/configparser.y"
4291 {
4292 OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4293 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4294 yyerror("expected yes or no.");
4295 else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4296 free((yyvsp[0].str));
4297 }
4298 #line 4299 "util/configparser.c"
4299 break;
4300
4301 case 423: /* server_log_destaddr: VAR_LOG_DESTADDR STRING_ARG */
4302 #line 1330 "util/configparser.y"
4303 {
4304 OUTYY(("P(server_log_destaddr:%s)\n", (yyvsp[0].str)));
4305 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4306 yyerror("expected yes or no.");
4307 else cfg_parser->cfg->log_destaddr = (strcmp((yyvsp[0].str), "yes")==0);
4308 free((yyvsp[0].str));
4309 }
4310 #line 4311 "util/configparser.c"
4311 break;
4312
4313 case 424: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */
4314 #line 1339 "util/configparser.y"
4315 {
4316 OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4317 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4318 yyerror("expected yes or no.");
4319 else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4320 free((yyvsp[0].str));
4321 }
4322 #line 4323 "util/configparser.c"
4323 break;
4324
4325 case 425: /* server_chroot: VAR_CHROOT STRING_ARG */
4326 #line 1348 "util/configparser.y"
4327 {
4328 OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4329 free(cfg_parser->cfg->chrootdir);
4330 cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4331 }
4332 #line 4333 "util/configparser.c"
4333 break;
4334
4335 case 426: /* server_username: VAR_USERNAME STRING_ARG */
4336 #line 1355 "util/configparser.y"
4337 {
4338 OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4339 free(cfg_parser->cfg->username);
4340 cfg_parser->cfg->username = (yyvsp[0].str);
4341 }
4342 #line 4343 "util/configparser.c"
4343 break;
4344
4345 case 427: /* server_directory: VAR_DIRECTORY STRING_ARG */
4346 #line 1362 "util/configparser.y"
4347 {
4348 OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4349 free(cfg_parser->cfg->directory);
4350 cfg_parser->cfg->directory = (yyvsp[0].str);
4351 /* change there right away for includes relative to this */
4352 if((yyvsp[0].str)[0]) {
4353 char* d;
4354 #ifdef UB_ON_WINDOWS
4355 w_config_adjust_directory(cfg_parser->cfg);
4356 #endif
4357 d = cfg_parser->cfg->directory;
4358 /* adjust directory if we have already chroot,
4359 * like, we reread after sighup */
4360 if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4361 strncmp(d, cfg_parser->chroot, strlen(
4362 cfg_parser->chroot)) == 0)
4363 d += strlen(cfg_parser->chroot);
4364 if(d[0]) {
4365 if(chdir(d))
4366 log_err("cannot chdir to directory: %s (%s)",
4367 d, strerror(errno));
4368 }
4369 }
4370 }
4371 #line 4372 "util/configparser.c"
4372 break;
4373
4374 case 428: /* server_logfile: VAR_LOGFILE STRING_ARG */
4375 #line 1388 "util/configparser.y"
4376 {
4377 OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4378 free(cfg_parser->cfg->logfile);
4379 cfg_parser->cfg->logfile = (yyvsp[0].str);
4380 cfg_parser->cfg->use_syslog = 0;
4381 }
4382 #line 4383 "util/configparser.c"
4383 break;
4384
4385 case 429: /* server_pidfile: VAR_PIDFILE STRING_ARG */
4386 #line 1396 "util/configparser.y"
4387 {
4388 OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4389 free(cfg_parser->cfg->pidfile);
4390 cfg_parser->cfg->pidfile = (yyvsp[0].str);
4391 }
4392 #line 4393 "util/configparser.c"
4393 break;
4394
4395 case 430: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */
4396 #line 1403 "util/configparser.y"
4397 {
4398 OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4399 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4400 yyerror("out of memory");
4401 }
4402 #line 4403 "util/configparser.c"
4403 break;
4404
4405 case 431: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */
4406 #line 1410 "util/configparser.y"
4407 {
4408 OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4409 log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4410 free((yyvsp[0].str));
4411 }
4412 #line 4413 "util/configparser.c"
4413 break;
4414
4415 case 432: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */
4416 #line 1417 "util/configparser.y"
4417 {
4418 OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4419 log_warn("option dlv-anchor ignored: DLV is decommissioned");
4420 free((yyvsp[0].str));
4421 }
4422 #line 4423 "util/configparser.c"
4423 break;
4424
4425 case 433: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */
4426 #line 1424 "util/configparser.y"
4427 {
4428 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4429 if(!cfg_strlist_insert(&cfg_parser->cfg->
4430 auto_trust_anchor_file_list, (yyvsp[0].str)))
4431 yyerror("out of memory");
4432 }
4433 #line 4434 "util/configparser.c"
4434 break;
4435
4436 case 434: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */
4437 #line 1432 "util/configparser.y"
4438 {
4439 OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4440 if(!cfg_strlist_insert(&cfg_parser->cfg->
4441 trust_anchor_file_list, (yyvsp[0].str)))
4442 yyerror("out of memory");
4443 }
4444 #line 4445 "util/configparser.c"
4445 break;
4446
4447 case 435: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */
4448 #line 1440 "util/configparser.y"
4449 {
4450 OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4451 if(!cfg_strlist_insert(&cfg_parser->cfg->
4452 trusted_keys_file_list, (yyvsp[0].str)))
4453 yyerror("out of memory");
4454 }
4455 #line 4456 "util/configparser.c"
4456 break;
4457
4458 case 436: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */
4459 #line 1448 "util/configparser.y"
4460 {
4461 OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4462 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4463 yyerror("out of memory");
4464 }
4465 #line 4466 "util/configparser.c"
4466 break;
4467
4468 case 437: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */
4469 #line 1455 "util/configparser.y"
4470 {
4471 OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4472 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4473 yyerror("expected yes or no.");
4474 else
4475 cfg_parser->cfg->trust_anchor_signaling =
4476 (strcmp((yyvsp[0].str), "yes")==0);
4477 free((yyvsp[0].str));
4478 }
4479 #line 4480 "util/configparser.c"
4480 break;
4481
4482 case 438: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */
4483 #line 1466 "util/configparser.y"
4484 {
4485 OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4486 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4487 yyerror("expected yes or no.");
4488 else
4489 cfg_parser->cfg->root_key_sentinel =
4490 (strcmp((yyvsp[0].str), "yes")==0);
4491 free((yyvsp[0].str));
4492 }
4493 #line 4494 "util/configparser.c"
4494 break;
4495
4496 case 439: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */
4497 #line 1477 "util/configparser.y"
4498 {
4499 OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4500 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4501 yyerror("out of memory");
4502 }
4503 #line 4504 "util/configparser.c"
4504 break;
4505
4506 case 440: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */
4507 #line 1484 "util/configparser.y"
4508 {
4509 OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4510 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4511 yyerror("expected yes or no.");
4512 else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4513 free((yyvsp[0].str));
4514 }
4515 #line 4516 "util/configparser.c"
4516 break;
4517
4518 case 441: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */
4519 #line 1493 "util/configparser.y"
4520 {
4521 OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4522 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4523 yyerror("expected yes or no.");
4524 else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4525 free((yyvsp[0].str));
4526 }
4527 #line 4528 "util/configparser.c"
4528 break;
4529
4530 case 442: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */
4531 #line 1502 "util/configparser.y"
4532 {
4533 OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4534 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4535 yyerror("expected yes or no.");
4536 else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4537 free((yyvsp[0].str));
4538 }
4539 #line 4540 "util/configparser.c"
4540 break;
4541
4542 case 443: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */
4543 #line 1511 "util/configparser.y"
4544 {
4545 OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4546 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4547 yyerror("expected yes or no.");
4548 else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4549 free((yyvsp[0].str));
4550 }
4551 #line 4552 "util/configparser.c"
4552 break;
4553
4554 case 444: /* server_identity: VAR_IDENTITY STRING_ARG */
4555 #line 1520 "util/configparser.y"
4556 {
4557 OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4558 free(cfg_parser->cfg->identity);
4559 cfg_parser->cfg->identity = (yyvsp[0].str);
4560 }
4561 #line 4562 "util/configparser.c"
4562 break;
4563
4564 case 445: /* server_version: VAR_VERSION STRING_ARG */
4565 #line 1527 "util/configparser.y"
4566 {
4567 OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4568 free(cfg_parser->cfg->version);
4569 cfg_parser->cfg->version = (yyvsp[0].str);
4570 }
4571 #line 4572 "util/configparser.c"
4572 break;
4573
4574 case 446: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */
4575 #line 1534 "util/configparser.y"
4576 {
4577 OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4578 free(cfg_parser->cfg->http_user_agent);
4579 cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4580 }
4581 #line 4582 "util/configparser.c"
4582 break;
4583
4584 case 447: /* server_nsid: VAR_NSID STRING_ARG */
4585 #line 1541 "util/configparser.y"
4586 {
4587 OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4588 free(cfg_parser->cfg->nsid_cfg_str);
4589 cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4590 free(cfg_parser->cfg->nsid);
4591 cfg_parser->cfg->nsid = NULL;
4592 cfg_parser->cfg->nsid_len = 0;
4593 if (*(yyvsp[0].str) == 0)
4594 ; /* pass; empty string is not setting nsid */
4595 else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4596 (yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4597 yyerror("the NSID must be either a hex string or an "
4598 "ascii character string prepended with ascii_.");
4599 }
4600 #line 4601 "util/configparser.c"
4601 break;
4602
4603 case 448: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */
4604 #line 1557 "util/configparser.y"
4605 {
4606 OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4607 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4608 yyerror("buffer size expected");
4609 free((yyvsp[0].str));
4610 }
4611 #line 4612 "util/configparser.c"
4612 break;
4613
4614 case 449: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */
4615 #line 1565 "util/configparser.y"
4616 {
4617 OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4618 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4619 yyerror("buffer size expected");
4620 free((yyvsp[0].str));
4621 }
4622 #line 4623 "util/configparser.c"
4623 break;
4624
4625 case 450: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */
4626 #line 1573 "util/configparser.y"
4627 {
4628 OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4629 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4630 yyerror("expected yes or no.");
4631 else cfg_parser->cfg->so_reuseport =
4632 (strcmp((yyvsp[0].str), "yes")==0);
4633 free((yyvsp[0].str));
4634 }
4635 #line 4636 "util/configparser.c"
4636 break;
4637
4638 case 451: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */
4639 #line 1583 "util/configparser.y"
4640 {
4641 OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4642 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4643 yyerror("expected yes or no.");
4644 else cfg_parser->cfg->ip_transparent =
4645 (strcmp((yyvsp[0].str), "yes")==0);
4646 free((yyvsp[0].str));
4647 }
4648 #line 4649 "util/configparser.c"
4649 break;
4650
4651 case 452: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */
4652 #line 1593 "util/configparser.y"
4653 {
4654 OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4655 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4656 yyerror("expected yes or no.");
4657 else cfg_parser->cfg->ip_freebind =
4658 (strcmp((yyvsp[0].str), "yes")==0);
4659 free((yyvsp[0].str));
4660 }
4661 #line 4662 "util/configparser.c"
4662 break;
4663
4664 case 453: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */
4665 #line 1603 "util/configparser.y"
4666 {
4667 OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4668 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4669 yyerror("number expected");
4670 else if (atoi((yyvsp[0].str)) > 63)
4671 yyerror("value too large (max 63)");
4672 else if (atoi((yyvsp[0].str)) < 0)
4673 yyerror("value too small (min 0)");
4674 else
4675 cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4676 free((yyvsp[0].str));
4677 }
4678 #line 4679 "util/configparser.c"
4679 break;
4680
4681 case 454: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */
4682 #line 1617 "util/configparser.y"
4683 {
4684 OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4685 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4686 yyerror("memory size expected");
4687 free((yyvsp[0].str));
4688 }
4689 #line 4690 "util/configparser.c"
4690 break;
4691
4692 case 455: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */
4693 #line 1625 "util/configparser.y"
4694 {
4695 OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4696 if(atoi((yyvsp[0].str)) == 0)
4697 yyerror("number expected");
4698 else if (atoi((yyvsp[0].str)) < 12)
4699 yyerror("edns buffer size too small");
4700 else if (atoi((yyvsp[0].str)) > 65535)
4701 cfg_parser->cfg->edns_buffer_size = 65535;
4702 else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4703 free((yyvsp[0].str));
4704 }
4705 #line 4706 "util/configparser.c"
4706 break;
4707
4708 case 456: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */
4709 #line 1638 "util/configparser.y"
4710 {
4711 OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4712 if(atoi((yyvsp[0].str)) == 0)
4713 yyerror("number expected");
4714 else if (atoi((yyvsp[0].str)) < 4096)
4715 yyerror("message buffer size too small (use 4096)");
4716 else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4717 free((yyvsp[0].str));
4718 }
4719 #line 4720 "util/configparser.c"
4720 break;
4721
4722 case 457: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */
4723 #line 1649 "util/configparser.y"
4724 {
4725 OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4726 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4727 yyerror("memory size expected");
4728 free((yyvsp[0].str));
4729 }
4730 #line 4731 "util/configparser.c"
4731 break;
4732
4733 case 458: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */
4734 #line 1657 "util/configparser.y"
4735 {
4736 OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4737 if(atoi((yyvsp[0].str)) == 0) {
4738 yyerror("number expected");
4739 } else {
4740 cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4741 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4742 yyerror("must be a power of 2");
4743 }
4744 free((yyvsp[0].str));
4745 }
4746 #line 4747 "util/configparser.c"
4747 break;
4748
4749 case 459: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */
4750 #line 1670 "util/configparser.y"
4751 {
4752 OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4753 if(atoi((yyvsp[0].str)) == 0)
4754 yyerror("number expected");
4755 else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4756 free((yyvsp[0].str));
4757 }
4758 #line 4759 "util/configparser.c"
4759 break;
4760
4761 case 460: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */
4762 #line 1679 "util/configparser.y"
4763 {
4764 OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4765 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4766 yyerror("number expected");
4767 else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4768 free((yyvsp[0].str));
4769 }
4770 #line 4771 "util/configparser.c"
4771 break;
4772
4773 case 461: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */
4774 #line 1688 "util/configparser.y"
4775 {
4776 OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4777 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4778 yyerror("number expected");
4779 else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4780 free((yyvsp[0].str));
4781 }
4782 #line 4783 "util/configparser.c"
4783 break;
4784
4785 case 462: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */
4786 #line 1697 "util/configparser.y"
4787 {
4788 OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4789 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4790 yyerror("expected yes or no.");
4791 else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4792 free((yyvsp[0].str));
4793 }
4794 #line 4795 "util/configparser.c"
4795 break;
4796
4797 case 463: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */
4798 #line 1706 "util/configparser.y"
4799 {
4800 OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4801 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4802 yyerror("expected yes or no.");
4803 else cfg_parser->cfg->unblock_lan_zones =
4804 (strcmp((yyvsp[0].str), "yes")==0);
4805 free((yyvsp[0].str));
4806 }
4807 #line 4808 "util/configparser.c"
4808 break;
4809
4810 case 464: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */
4811 #line 1716 "util/configparser.y"
4812 {
4813 OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4814 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4815 yyerror("expected yes or no.");
4816 else cfg_parser->cfg->insecure_lan_zones =
4817 (strcmp((yyvsp[0].str), "yes")==0);
4818 free((yyvsp[0].str));
4819 }
4820 #line 4821 "util/configparser.c"
4821 break;
4822
4823 case 465: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */
4824 #line 1726 "util/configparser.y"
4825 {
4826 OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4827 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4828 yyerror("memory size expected");
4829 free((yyvsp[0].str));
4830 }
4831 #line 4832 "util/configparser.c"
4832 break;
4833
4834 case 466: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */
4835 #line 1734 "util/configparser.y"
4836 {
4837 OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4838 if(atoi((yyvsp[0].str)) == 0) {
4839 yyerror("number expected");
4840 } else {
4841 cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4842 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4843 yyerror("must be a power of 2");
4844 }
4845 free((yyvsp[0].str));
4846 }
4847 #line 4848 "util/configparser.c"
4848 break;
4849
4850 case 467: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */
4851 #line 1747 "util/configparser.y"
4852 {
4853 OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4854 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4855 yyerror("number expected");
4856 else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4857 free((yyvsp[0].str));
4858 }
4859 #line 4860 "util/configparser.c"
4860 break;
4861
4862 case 468: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */
4863 #line 1756 "util/configparser.y"
4864 {
4865 OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4866 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4867 "removed, use infra-host-ttl)", (yyvsp[0].str));
4868 free((yyvsp[0].str));
4869 }
4870 #line 4871 "util/configparser.c"
4871 break;
4872
4873 case 469: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */
4874 #line 1764 "util/configparser.y"
4875 {
4876 OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4877 if(atoi((yyvsp[0].str)) == 0)
4878 yyerror("number expected");
4879 else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4880 free((yyvsp[0].str));
4881 }
4882 #line 4883 "util/configparser.c"
4883 break;
4884
4885 case 470: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */
4886 #line 1773 "util/configparser.y"
4887 {
4888 OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4889 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4890 "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4891 free((yyvsp[0].str));
4892 }
4893 #line 4894 "util/configparser.c"
4894 break;
4895
4896 case 471: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */
4897 #line 1781 "util/configparser.y"
4898 {
4899 OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4900 if(atoi((yyvsp[0].str)) == 0) {
4901 yyerror("number expected");
4902 } else {
4903 cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4904 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4905 yyerror("must be a power of 2");
4906 }
4907 free((yyvsp[0].str));
4908 }
4909 #line 4910 "util/configparser.c"
4910 break;
4911
4912 case 472: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */
4913 #line 1794 "util/configparser.y"
4914 {
4915 OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4916 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4917 yyerror("number expected");
4918 else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4919 free((yyvsp[0].str));
4920 }
4921 #line 4922 "util/configparser.c"
4922 break;
4923
4924 case 473: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */
4925 #line 1803 "util/configparser.y"
4926 {
4927 OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
4928 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4929 yyerror("number expected");
4930 else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
4931 free((yyvsp[0].str));
4932 }
4933 #line 4934 "util/configparser.c"
4934 break;
4935
4936 case 474: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */
4937 #line 1812 "util/configparser.y"
4938 {
4939 OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4940 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4941 yyerror("expected yes or no.");
4942 else cfg_parser->cfg->infra_keep_probing =
4943 (strcmp((yyvsp[0].str), "yes")==0);
4944 free((yyvsp[0].str));
4945 }
4946 #line 4947 "util/configparser.c"
4947 break;
4948
4949 case 475: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */
4950 #line 1822 "util/configparser.y"
4951 {
4952 OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4953 free(cfg_parser->cfg->target_fetch_policy);
4954 cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4955 }
4956 #line 4957 "util/configparser.c"
4957 break;
4958
4959 case 476: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */
4960 #line 1829 "util/configparser.y"
4961 {
4962 OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4963 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4964 yyerror("expected yes or no.");
4965 else cfg_parser->cfg->harden_short_bufsize =
4966 (strcmp((yyvsp[0].str), "yes")==0);
4967 free((yyvsp[0].str));
4968 }
4969 #line 4970 "util/configparser.c"
4970 break;
4971
4972 case 477: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */
4973 #line 1839 "util/configparser.y"
4974 {
4975 OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
4976 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4977 yyerror("expected yes or no.");
4978 else cfg_parser->cfg->harden_large_queries =
4979 (strcmp((yyvsp[0].str), "yes")==0);
4980 free((yyvsp[0].str));
4981 }
4982 #line 4983 "util/configparser.c"
4983 break;
4984
4985 case 478: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */
4986 #line 1849 "util/configparser.y"
4987 {
4988 OUTYY(("P(server_harden_glue:%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->harden_glue =
4992 (strcmp((yyvsp[0].str), "yes")==0);
4993 free((yyvsp[0].str));
4994 }
4995 #line 4996 "util/configparser.c"
4996 break;
4997
4998 case 479: /* server_harden_unverified_glue: VAR_HARDEN_UNVERIFIED_GLUE STRING_ARG */
4999 #line 1859 "util/configparser.y"
5000 {
5001 OUTYY(("P(server_harden_unverified_glue:%s)\n", (yyvsp[0].str)));
5002 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5003 yyerror("expected yes or no.");
5004 else cfg_parser->cfg->harden_unverified_glue =
5005 (strcmp((yyvsp[0].str), "yes")==0);
5006 free((yyvsp[0].str));
5007 }
5008 #line 5009 "util/configparser.c"
5009 break;
5010
5011 case 480: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */
5012 #line 1869 "util/configparser.y"
5013 {
5014 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
5015 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5016 yyerror("expected yes or no.");
5017 else cfg_parser->cfg->harden_dnssec_stripped =
5018 (strcmp((yyvsp[0].str), "yes")==0);
5019 free((yyvsp[0].str));
5020 }
5021 #line 5022 "util/configparser.c"
5022 break;
5023
5024 case 481: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */
5025 #line 1879 "util/configparser.y"
5026 {
5027 OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
5028 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5029 yyerror("expected yes or no.");
5030 else cfg_parser->cfg->harden_below_nxdomain =
5031 (strcmp((yyvsp[0].str), "yes")==0);
5032 free((yyvsp[0].str));
5033 }
5034 #line 5035 "util/configparser.c"
5035 break;
5036
5037 case 482: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */
5038 #line 1889 "util/configparser.y"
5039 {
5040 OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
5041 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5042 yyerror("expected yes or no.");
5043 else cfg_parser->cfg->harden_referral_path =
5044 (strcmp((yyvsp[0].str), "yes")==0);
5045 free((yyvsp[0].str));
5046 }
5047 #line 5048 "util/configparser.c"
5048 break;
5049
5050 case 483: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */
5051 #line 1899 "util/configparser.y"
5052 {
5053 OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5054 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5055 yyerror("expected yes or no.");
5056 else cfg_parser->cfg->harden_algo_downgrade =
5057 (strcmp((yyvsp[0].str), "yes")==0);
5058 free((yyvsp[0].str));
5059 }
5060 #line 5061 "util/configparser.c"
5061 break;
5062
5063 case 484: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG */
5064 #line 1909 "util/configparser.y"
5065 {
5066 OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
5067 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5068 yyerror("expected yes or no.");
5069 else cfg_parser->cfg->harden_unknown_additional =
5070 (strcmp((yyvsp[0].str), "yes")==0);
5071 free((yyvsp[0].str));
5072 }
5073 #line 5074 "util/configparser.c"
5074 break;
5075
5076 case 485: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */
5077 #line 1919 "util/configparser.y"
5078 {
5079 OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5080 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5081 yyerror("expected yes or no.");
5082 else cfg_parser->cfg->use_caps_bits_for_id =
5083 (strcmp((yyvsp[0].str), "yes")==0);
5084 free((yyvsp[0].str));
5085 }
5086 #line 5087 "util/configparser.c"
5087 break;
5088
5089 case 486: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */
5090 #line 1929 "util/configparser.y"
5091 {
5092 OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5093 if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5094 yyerror("out of memory");
5095 }
5096 #line 5097 "util/configparser.c"
5097 break;
5098
5099 case 487: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */
5100 #line 1936 "util/configparser.y"
5101 {
5102 OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5103 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5104 yyerror("out of memory");
5105 }
5106 #line 5107 "util/configparser.c"
5107 break;
5108
5109 case 488: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */
5110 #line 1943 "util/configparser.y"
5111 {
5112 OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5113 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5114 yyerror("out of memory");
5115 }
5116 #line 5117 "util/configparser.c"
5117 break;
5118
5119 case 489: /* server_prefetch: VAR_PREFETCH STRING_ARG */
5120 #line 1950 "util/configparser.y"
5121 {
5122 OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5123 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5124 yyerror("expected yes or no.");
5125 else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5126 free((yyvsp[0].str));
5127 }
5128 #line 5129 "util/configparser.c"
5129 break;
5130
5131 case 490: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */
5132 #line 1959 "util/configparser.y"
5133 {
5134 OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5135 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5136 yyerror("expected yes or no.");
5137 else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5138 free((yyvsp[0].str));
5139 }
5140 #line 5141 "util/configparser.c"
5141 break;
5142
5143 case 491: /* server_deny_any: VAR_DENY_ANY STRING_ARG */
5144 #line 1968 "util/configparser.y"
5145 {
5146 OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5147 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5148 yyerror("expected yes or no.");
5149 else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5150 free((yyvsp[0].str));
5151 }
5152 #line 5153 "util/configparser.c"
5153 break;
5154
5155 case 492: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */
5156 #line 1977 "util/configparser.y"
5157 {
5158 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5159 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5160 yyerror("number expected");
5161 else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5162 free((yyvsp[0].str));
5163 }
5164 #line 5165 "util/configparser.c"
5165 break;
5166
5167 case 493: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */
5168 #line 1986 "util/configparser.y"
5169 {
5170 OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5171 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5172 yyerror("out of memory");
5173 }
5174 #line 5175 "util/configparser.c"
5175 break;
5176
5177 case 494: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */
5178 #line 1993 "util/configparser.y"
5179 {
5180 OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5181 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5182 yyerror("expected yes or no.");
5183 else cfg_parser->cfg->donotquery_localhost =
5184 (strcmp((yyvsp[0].str), "yes")==0);
5185 free((yyvsp[0].str));
5186 }
5187 #line 5188 "util/configparser.c"
5188 break;
5189
5190 case 495: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */
5191 #line 2003 "util/configparser.y"
5192 {
5193 OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5194 validate_acl_action((yyvsp[0].str));
5195 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5196 fatal_exit("out of memory adding acl");
5197 }
5198 #line 5199 "util/configparser.c"
5199 break;
5200
5201 case 496: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */
5202 #line 2011 "util/configparser.y"
5203 {
5204 OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5205 validate_acl_action((yyvsp[0].str));
5206 if(!cfg_str2list_insert(
5207 &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5208 fatal_exit("out of memory adding acl");
5209 }
5210 #line 5211 "util/configparser.c"
5211 break;
5212
5213 case 497: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */
5214 #line 2020 "util/configparser.y"
5215 {
5216 OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5217 free(cfg_parser->cfg->module_conf);
5218 cfg_parser->cfg->module_conf = (yyvsp[0].str);
5219 }
5220 #line 5221 "util/configparser.c"
5221 break;
5222
5223 case 498: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */
5224 #line 2027 "util/configparser.y"
5225 {
5226 OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5227 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5228 cfg_parser->cfg->val_date_override = 0;
5229 } else if(strlen((yyvsp[0].str)) == 14) {
5230 cfg_parser->cfg->val_date_override =
5231 cfg_convert_timeval((yyvsp[0].str));
5232 if(!cfg_parser->cfg->val_date_override)
5233 yyerror("bad date/time specification");
5234 } else {
5235 if(atoi((yyvsp[0].str)) == 0)
5236 yyerror("number expected");
5237 cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5238 }
5239 free((yyvsp[0].str));
5240 }
5241 #line 5242 "util/configparser.c"
5242 break;
5243
5244 case 499: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */
5245 #line 2045 "util/configparser.y"
5246 {
5247 OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5248 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5249 cfg_parser->cfg->val_sig_skew_min = 0;
5250 } else {
5251 cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5252 if(!cfg_parser->cfg->val_sig_skew_min)
5253 yyerror("number expected");
5254 }
5255 free((yyvsp[0].str));
5256 }
5257 #line 5258 "util/configparser.c"
5258 break;
5259
5260 case 500: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */
5261 #line 2058 "util/configparser.y"
5262 {
5263 OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5264 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5265 cfg_parser->cfg->val_sig_skew_max = 0;
5266 } else {
5267 cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5268 if(!cfg_parser->cfg->val_sig_skew_max)
5269 yyerror("number expected");
5270 }
5271 free((yyvsp[0].str));
5272 }
5273 #line 5274 "util/configparser.c"
5274 break;
5275
5276 case 501: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */
5277 #line 2071 "util/configparser.y"
5278 {
5279 OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5280 if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5281 cfg_parser->cfg->val_max_restart = 0;
5282 } else {
5283 cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5284 if(!cfg_parser->cfg->val_max_restart)
5285 yyerror("number expected");
5286 }
5287 free((yyvsp[0].str));
5288 }
5289 #line 5290 "util/configparser.c"
5290 break;
5291
5292 case 502: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */
5293 #line 2084 "util/configparser.y"
5294 {
5295 OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5296 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5297 yyerror("number expected");
5298 else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5299 free((yyvsp[0].str));
5300 }
5301 #line 5302 "util/configparser.c"
5302 break;
5303
5304 case 503: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */
5305 #line 2093 "util/configparser.y"
5306 {
5307 OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5308 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5309 yyerror("number expected");
5310 else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5311 free((yyvsp[0].str));
5312 }
5313 #line 5314 "util/configparser.c"
5314 break;
5315
5316 case 504: /* server_cache_min_negative_ttl: VAR_CACHE_MIN_NEGATIVE_TTL STRING_ARG */
5317 #line 2102 "util/configparser.y"
5318 {
5319 OUTYY(("P(server_cache_min_negative_ttl:%s)\n", (yyvsp[0].str)));
5320 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5321 yyerror("number expected");
5322 else cfg_parser->cfg->min_negative_ttl = atoi((yyvsp[0].str));
5323 free((yyvsp[0].str));
5324 }
5325 #line 5326 "util/configparser.c"
5326 break;
5327
5328 case 505: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */
5329 #line 2111 "util/configparser.y"
5330 {
5331 OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5332 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5333 yyerror("number expected");
5334 else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5335 free((yyvsp[0].str));
5336 }
5337 #line 5338 "util/configparser.c"
5338 break;
5339
5340 case 506: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */
5341 #line 2120 "util/configparser.y"
5342 {
5343 OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5344 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5345 yyerror("number expected");
5346 else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5347 free((yyvsp[0].str));
5348 }
5349 #line 5350 "util/configparser.c"
5350 break;
5351
5352 case 507: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */
5353 #line 2129 "util/configparser.y"
5354 {
5355 OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5356 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5357 yyerror("expected yes or no.");
5358 else cfg_parser->cfg->val_clean_additional =
5359 (strcmp((yyvsp[0].str), "yes")==0);
5360 free((yyvsp[0].str));
5361 }
5362 #line 5363 "util/configparser.c"
5363 break;
5364
5365 case 508: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */
5366 #line 2139 "util/configparser.y"
5367 {
5368 OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5369 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5370 yyerror("expected yes or no.");
5371 else cfg_parser->cfg->val_permissive_mode =
5372 (strcmp((yyvsp[0].str), "yes")==0);
5373 free((yyvsp[0].str));
5374 }
5375 #line 5376 "util/configparser.c"
5376 break;
5377
5378 case 509: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */
5379 #line 2149 "util/configparser.y"
5380 {
5381 OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5382 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5383 yyerror("expected yes or no.");
5384 else
5385 cfg_parser->cfg->aggressive_nsec =
5386 (strcmp((yyvsp[0].str), "yes")==0);
5387 free((yyvsp[0].str));
5388 }
5389 #line 5390 "util/configparser.c"
5390 break;
5391
5392 case 510: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */
5393 #line 2160 "util/configparser.y"
5394 {
5395 OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5396 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5397 yyerror("expected yes or no.");
5398 else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5399 free((yyvsp[0].str));
5400 }
5401 #line 5402 "util/configparser.c"
5402 break;
5403
5404 case 511: /* server_disable_edns_do: VAR_DISABLE_EDNS_DO STRING_ARG */
5405 #line 2169 "util/configparser.y"
5406 {
5407 OUTYY(("P(server_disable_edns_do:%s)\n", (yyvsp[0].str)));
5408 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5409 yyerror("expected yes or no.");
5410 else cfg_parser->cfg->disable_edns_do = (strcmp((yyvsp[0].str), "yes")==0);
5411 free((yyvsp[0].str));
5412 }
5413 #line 5414 "util/configparser.c"
5414 break;
5415
5416 case 512: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */
5417 #line 2178 "util/configparser.y"
5418 {
5419 OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5420 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5421 yyerror("expected yes or no.");
5422 else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5423 free((yyvsp[0].str));
5424 }
5425 #line 5426 "util/configparser.c"
5426 break;
5427
5428 case 513: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */
5429 #line 2187 "util/configparser.y"
5430 {
5431 OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5432 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5433 yyerror("number expected");
5434 else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5435 free((yyvsp[0].str));
5436 }
5437 #line 5438 "util/configparser.c"
5438 break;
5439
5440 case 514: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */
5441 #line 2196 "util/configparser.y"
5442 {
5443 OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5444 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5445 yyerror("expected yes or no.");
5446 else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5447 free((yyvsp[0].str));
5448 }
5449 #line 5450 "util/configparser.c"
5450 break;
5451
5452 case 515: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */
5453 #line 2205 "util/configparser.y"
5454 {
5455 OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5456 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5457 yyerror("number expected");
5458 else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5459 free((yyvsp[0].str));
5460 }
5461 #line 5462 "util/configparser.c"
5462 break;
5463
5464 case 516: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */
5465 #line 2214 "util/configparser.y"
5466 {
5467 OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5468 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5469 yyerror("number expected");
5470 else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5471 free((yyvsp[0].str));
5472 }
5473 #line 5474 "util/configparser.c"
5474 break;
5475
5476 case 517: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */
5477 #line 2223 "util/configparser.y"
5478 {
5479 OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5480 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5481 yyerror("expected yes or no.");
5482 else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5483 free((yyvsp[0].str));
5484 }
5485 #line 5486 "util/configparser.c"
5486 break;
5487
5488 case 518: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */
5489 #line 2232 "util/configparser.y"
5490 {
5491 OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5492 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5493 yyerror("expected yes or no.");
5494 else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5495 free((yyvsp[0].str));
5496 }
5497 #line 5498 "util/configparser.c"
5498 break;
5499
5500 case 519: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */
5501 #line 2241 "util/configparser.y"
5502 {
5503 OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5504 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5505 yyerror("expected yes or no.");
5506 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5507 else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5508 if(fake_dsa)
5509 log_warn("test option fake_dsa is enabled");
5510 #endif
5511 free((yyvsp[0].str));
5512 }
5513 #line 5514 "util/configparser.c"
5514 break;
5515
5516 case 520: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */
5517 #line 2254 "util/configparser.y"
5518 {
5519 OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5520 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5521 yyerror("expected yes or no.");
5522 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5523 else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5524 if(fake_sha1)
5525 log_warn("test option fake_sha1 is enabled");
5526 #endif
5527 free((yyvsp[0].str));
5528 }
5529 #line 5530 "util/configparser.c"
5530 break;
5531
5532 case 521: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */
5533 #line 2267 "util/configparser.y"
5534 {
5535 OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5536 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5537 yyerror("number expected");
5538 else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5539 free((yyvsp[0].str));
5540 }
5541 #line 5542 "util/configparser.c"
5542 break;
5543
5544 case 522: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */
5545 #line 2276 "util/configparser.y"
5546 {
5547 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5548 free(cfg_parser->cfg->val_nsec3_key_iterations);
5549 cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5550 }
5551 #line 5552 "util/configparser.c"
5552 break;
5553
5554 case 523: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */
5555 #line 2283 "util/configparser.y"
5556 {
5557 OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5558 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5559 yyerror("expected yes or no.");
5560 else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5561 free((yyvsp[0].str));
5562 }
5563 #line 5564 "util/configparser.c"
5564 break;
5565
5566 case 524: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */
5567 #line 2292 "util/configparser.y"
5568 {
5569 OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5570 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5571 yyerror("number expected");
5572 else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5573 free((yyvsp[0].str));
5574 }
5575 #line 5576 "util/configparser.c"
5576 break;
5577
5578 case 525: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */
5579 #line 2301 "util/configparser.y"
5580 {
5581 OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5582 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5583 yyerror("number expected");
5584 else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5585 free((yyvsp[0].str));
5586 }
5587 #line 5588 "util/configparser.c"
5588 break;
5589
5590 case 526: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */
5591 #line 2310 "util/configparser.y"
5592 {
5593 OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5594 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5595 yyerror("number expected");
5596 else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5597 free((yyvsp[0].str));
5598 }
5599 #line 5600 "util/configparser.c"
5600 break;
5601
5602 case 527: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */
5603 #line 2319 "util/configparser.y"
5604 {
5605 OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5606 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5607 yyerror("expected yes or no.");
5608 else cfg_parser->cfg->permit_small_holddown =
5609 (strcmp((yyvsp[0].str), "yes")==0);
5610 free((yyvsp[0].str));
5611 }
5612 #line 5613 "util/configparser.c"
5613 break;
5614
5615 case 528: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */
5616 #line 2329 "util/configparser.y"
5617 {
5618 OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5619 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5620 yyerror("memory size expected");
5621 free((yyvsp[0].str));
5622 }
5623 #line 5624 "util/configparser.c"
5624 break;
5625
5626 case 529: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */
5627 #line 2337 "util/configparser.y"
5628 {
5629 OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5630 if(atoi((yyvsp[0].str)) == 0) {
5631 yyerror("number expected");
5632 } else {
5633 cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5634 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5635 yyerror("must be a power of 2");
5636 }
5637 free((yyvsp[0].str));
5638 }
5639 #line 5640 "util/configparser.c"
5640 break;
5641
5642 case 530: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */
5643 #line 2350 "util/configparser.y"
5644 {
5645 OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5646 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5647 yyerror("memory size expected");
5648 free((yyvsp[0].str));
5649 }
5650 #line 5651 "util/configparser.c"
5651 break;
5652
5653 case 531: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */
5654 #line 2358 "util/configparser.y"
5655 {
5656 OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5657 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5658 strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5659 strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5660 && strcmp((yyvsp[0].str), "typetransparent")!=0
5661 && strcmp((yyvsp[0].str), "always_transparent")!=0
5662 && strcmp((yyvsp[0].str), "block_a")!=0
5663 && strcmp((yyvsp[0].str), "always_refuse")!=0
5664 && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5665 && strcmp((yyvsp[0].str), "always_nodata")!=0
5666 && strcmp((yyvsp[0].str), "always_deny")!=0
5667 && strcmp((yyvsp[0].str), "always_null")!=0
5668 && strcmp((yyvsp[0].str), "noview")!=0
5669 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5670 && strcmp((yyvsp[0].str), "inform_redirect") != 0
5671 && strcmp((yyvsp[0].str), "ipset") != 0) {
5672 yyerror("local-zone type: expected static, deny, "
5673 "refuse, redirect, transparent, "
5674 "typetransparent, inform, inform_deny, "
5675 "inform_redirect, always_transparent, block_a,"
5676 "always_refuse, always_nxdomain, "
5677 "always_nodata, always_deny, always_null, "
5678 "noview, nodefault or ipset");
5679 free((yyvsp[-1].str));
5680 free((yyvsp[0].str));
5681 } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5682 if(!cfg_strlist_insert(&cfg_parser->cfg->
5683 local_zones_nodefault, (yyvsp[-1].str)))
5684 fatal_exit("out of memory adding local-zone");
5685 free((yyvsp[0].str));
5686 #ifdef USE_IPSET
5687 } else if(strcmp((yyvsp[0].str), "ipset")==0) {
5688 size_t len = strlen((yyvsp[-1].str));
5689 /* Make sure to add the trailing dot.
5690 * These are str compared to domain names. */
5691 if((yyvsp[-1].str)[len-1] != '.') {
5692 if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5693 fatal_exit("out of memory adding local-zone");
5694 }
5695 (yyvsp[-1].str)[len] = '.';
5696 (yyvsp[-1].str)[len+1] = 0;
5697 }
5698 if(!cfg_strlist_insert(&cfg_parser->cfg->
5699 local_zones_ipset, (yyvsp[-1].str)))
5700 fatal_exit("out of memory adding local-zone");
5701 free((yyvsp[0].str));
5702 #endif
5703 } else {
5704 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5705 (yyvsp[-1].str), (yyvsp[0].str)))
5706 fatal_exit("out of memory adding local-zone");
5707 }
5708 }
5709 #line 5710 "util/configparser.c"
5710 break;
5711
5712 case 532: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */
5713 #line 2414 "util/configparser.y"
5714 {
5715 OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5716 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5717 fatal_exit("out of memory adding local-data");
5718 }
5719 #line 5720 "util/configparser.c"
5720 break;
5721
5722 case 533: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */
5723 #line 2421 "util/configparser.y"
5724 {
5725 char* ptr;
5726 OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5727 ptr = cfg_ptr_reverse((yyvsp[0].str));
5728 free((yyvsp[0].str));
5729 if(ptr) {
5730 if(!cfg_strlist_insert(&cfg_parser->cfg->
5731 local_data, ptr))
5732 fatal_exit("out of memory adding local-data");
5733 } else {
5734 yyerror("local-data-ptr could not be reversed");
5735 }
5736 }
5737 #line 5738 "util/configparser.c"
5738 break;
5739
5740 case 534: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */
5741 #line 2436 "util/configparser.y"
5742 {
5743 OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5744 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5745 yyerror("expected yes or no.");
5746 else cfg_parser->cfg->minimal_responses =
5747 (strcmp((yyvsp[0].str), "yes")==0);
5748 free((yyvsp[0].str));
5749 }
5750 #line 5751 "util/configparser.c"
5751 break;
5752
5753 case 535: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */
5754 #line 2446 "util/configparser.y"
5755 {
5756 OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5757 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5758 yyerror("expected yes or no.");
5759 else cfg_parser->cfg->rrset_roundrobin =
5760 (strcmp((yyvsp[0].str), "yes")==0);
5761 free((yyvsp[0].str));
5762 }
5763 #line 5764 "util/configparser.c"
5764 break;
5765
5766 case 536: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */
5767 #line 2456 "util/configparser.y"
5768 {
5769 OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5770 cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5771 free((yyvsp[0].str));
5772 }
5773 #line 5774 "util/configparser.c"
5774 break;
5775
5776 case 537: /* server_discard_timeout: VAR_DISCARD_TIMEOUT STRING_ARG */
5777 #line 2463 "util/configparser.y"
5778 {
5779 OUTYY(("P(server_discard_timeout:%s)\n", (yyvsp[0].str)));
5780 cfg_parser->cfg->discard_timeout = atoi((yyvsp[0].str));
5781 free((yyvsp[0].str));
5782 }
5783 #line 5784 "util/configparser.c"
5784 break;
5785
5786 case 538: /* server_wait_limit: VAR_WAIT_LIMIT STRING_ARG */
5787 #line 2470 "util/configparser.y"
5788 {
5789 OUTYY(("P(server_wait_limit:%s)\n", (yyvsp[0].str)));
5790 cfg_parser->cfg->wait_limit = atoi((yyvsp[0].str));
5791 free((yyvsp[0].str));
5792 }
5793 #line 5794 "util/configparser.c"
5794 break;
5795
5796 case 539: /* server_wait_limit_cookie: VAR_WAIT_LIMIT_COOKIE STRING_ARG */
5797 #line 2477 "util/configparser.y"
5798 {
5799 OUTYY(("P(server_wait_limit_cookie:%s)\n", (yyvsp[0].str)));
5800 cfg_parser->cfg->wait_limit_cookie = atoi((yyvsp[0].str));
5801 free((yyvsp[0].str));
5802 }
5803 #line 5804 "util/configparser.c"
5804 break;
5805
5806 case 540: /* server_wait_limit_netblock: VAR_WAIT_LIMIT_NETBLOCK STRING_ARG STRING_ARG */
5807 #line 2484 "util/configparser.y"
5808 {
5809 OUTYY(("P(server_wait_limit_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5810 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5811 yyerror("number expected");
5812 free((yyvsp[-1].str));
5813 free((yyvsp[0].str));
5814 } else {
5815 if(!cfg_str2list_insert(&cfg_parser->cfg->
5816 wait_limit_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5817 fatal_exit("out of memory adding "
5818 "wait-limit-netblock");
5819 }
5820 }
5821 #line 5822 "util/configparser.c"
5822 break;
5823
5824 case 541: /* server_wait_limit_cookie_netblock: VAR_WAIT_LIMIT_COOKIE_NETBLOCK STRING_ARG STRING_ARG */
5825 #line 2499 "util/configparser.y"
5826 {
5827 OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5828 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5829 yyerror("number expected");
5830 free((yyvsp[-1].str));
5831 free((yyvsp[0].str));
5832 } else {
5833 if(!cfg_str2list_insert(&cfg_parser->cfg->
5834 wait_limit_cookie_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5835 fatal_exit("out of memory adding "
5836 "wait-limit-cookie-netblock");
5837 }
5838 }
5839 #line 5840 "util/configparser.c"
5840 break;
5841
5842 case 542: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */
5843 #line 2514 "util/configparser.y"
5844 {
5845 OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5846 cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5847 free((yyvsp[0].str));
5848 }
5849 #line 5850 "util/configparser.c"
5850 break;
5851
5852 case 543: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */
5853 #line 2521 "util/configparser.y"
5854 {
5855 OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5856 free(cfg_parser->cfg->dns64_prefix);
5857 cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5858 }
5859 #line 5860 "util/configparser.c"
5860 break;
5861
5862 case 544: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */
5863 #line 2528 "util/configparser.y"
5864 {
5865 OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5866 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5867 yyerror("expected yes or no.");
5868 else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5869 free((yyvsp[0].str));
5870 }
5871 #line 5872 "util/configparser.c"
5872 break;
5873
5874 case 545: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */
5875 #line 2537 "util/configparser.y"
5876 {
5877 OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5878 if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5879 (yyvsp[0].str)))
5880 fatal_exit("out of memory adding dns64-ignore-aaaa");
5881 }
5882 #line 5883 "util/configparser.c"
5883 break;
5884
5885 case 546: /* server_nat64_prefix: VAR_NAT64_PREFIX STRING_ARG */
5886 #line 2545 "util/configparser.y"
5887 {
5888 OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
5889 free(cfg_parser->cfg->nat64_prefix);
5890 cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
5891 }
5892 #line 5893 "util/configparser.c"
5893 break;
5894
5895 case 547: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */
5896 #line 2552 "util/configparser.y"
5897 {
5898 char* p, *s = (yyvsp[0].str);
5899 OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5900 while((p=strsep(&s, " \t\n")) != NULL) {
5901 if(*p) {
5902 if(!config_add_tag(cfg_parser->cfg, p))
5903 yyerror("could not define-tag, "
5904 "out of memory");
5905 }
5906 }
5907 free((yyvsp[0].str));
5908 }
5909 #line 5910 "util/configparser.c"
5910 break;
5911
5912 case 548: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */
5913 #line 2566 "util/configparser.y"
5914 {
5915 size_t len = 0;
5916 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5917 &len);
5918 free((yyvsp[0].str));
5919 OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5920 if(!bitlist) {
5921 yyerror("could not parse tags, (define-tag them first)");
5922 free((yyvsp[-1].str));
5923 }
5924 if(bitlist) {
5925 if(!cfg_strbytelist_insert(
5926 &cfg_parser->cfg->local_zone_tags,
5927 (yyvsp[-1].str), bitlist, len)) {
5928 yyerror("out of memory");
5929 free((yyvsp[-1].str));
5930 }
5931 }
5932 }
5933 #line 5934 "util/configparser.c"
5934 break;
5935
5936 case 549: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */
5937 #line 2587 "util/configparser.y"
5938 {
5939 size_t len = 0;
5940 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5941 &len);
5942 free((yyvsp[0].str));
5943 OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5944 if(!bitlist) {
5945 yyerror("could not parse tags, (define-tag them first)");
5946 free((yyvsp[-1].str));
5947 }
5948 if(bitlist) {
5949 if(!cfg_strbytelist_insert(
5950 &cfg_parser->cfg->acl_tags,
5951 (yyvsp[-1].str), bitlist, len)) {
5952 yyerror("out of memory");
5953 free((yyvsp[-1].str));
5954 }
5955 }
5956 }
5957 #line 5958 "util/configparser.c"
5958 break;
5959
5960 case 550: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */
5961 #line 2608 "util/configparser.y"
5962 {
5963 OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5964 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5965 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5966 yyerror("out of memory");
5967 free((yyvsp[-2].str));
5968 free((yyvsp[-1].str));
5969 free((yyvsp[0].str));
5970 }
5971 }
5972 #line 5973 "util/configparser.c"
5973 break;
5974
5975 case 551: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */
5976 #line 2620 "util/configparser.y"
5977 {
5978 OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5979 if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
5980 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5981 yyerror("out of memory");
5982 free((yyvsp[-2].str));
5983 free((yyvsp[-1].str));
5984 free((yyvsp[0].str));
5985 }
5986 }
5987 #line 5988 "util/configparser.c"
5988 break;
5989
5990 case 552: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */
5991 #line 2632 "util/configparser.y"
5992 {
5993 OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5994 if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
5995 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5996 yyerror("out of memory");
5997 free((yyvsp[-2].str));
5998 free((yyvsp[-1].str));
5999 free((yyvsp[0].str));
6000 }
6001 }
6002 #line 6003 "util/configparser.c"
6003 break;
6004
6005 case 553: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */
6006 #line 2644 "util/configparser.y"
6007 {
6008 OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6009 if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
6010 (yyvsp[-1].str), (yyvsp[0].str))) {
6011 yyerror("out of memory");
6012 }
6013 }
6014 #line 6015 "util/configparser.c"
6015 break;
6016
6017 case 554: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */
6018 #line 2653 "util/configparser.y"
6019 {
6020 size_t len = 0;
6021 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6022 &len);
6023 free((yyvsp[0].str));
6024 OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
6025 if(!bitlist) {
6026 yyerror("could not parse tags, (define-tag them first)");
6027 free((yyvsp[-1].str));
6028 }
6029 if(bitlist) {
6030 if(!cfg_strbytelist_insert(
6031 &cfg_parser->cfg->interface_tags,
6032 (yyvsp[-1].str), bitlist, len)) {
6033 yyerror("out of memory");
6034 free((yyvsp[-1].str));
6035 }
6036 }
6037 }
6038 #line 6039 "util/configparser.c"
6039 break;
6040
6041 case 555: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */
6042 #line 2674 "util/configparser.y"
6043 {
6044 OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6045 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
6046 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6047 yyerror("out of memory");
6048 free((yyvsp[-2].str));
6049 free((yyvsp[-1].str));
6050 free((yyvsp[0].str));
6051 }
6052 }
6053 #line 6054 "util/configparser.c"
6054 break;
6055
6056 case 556: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */
6057 #line 2686 "util/configparser.y"
6058 {
6059 OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6060 if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
6061 (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6062 yyerror("out of memory");
6063 free((yyvsp[-2].str));
6064 free((yyvsp[-1].str));
6065 free((yyvsp[0].str));
6066 }
6067 }
6068 #line 6069 "util/configparser.c"
6069 break;
6070
6071 case 557: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */
6072 #line 2698 "util/configparser.y"
6073 {
6074 OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6075 if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
6076 (yyvsp[-1].str), (yyvsp[0].str))) {
6077 yyerror("out of memory");
6078 }
6079 }
6080 #line 6081 "util/configparser.c"
6081 break;
6082
6083 case 558: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */
6084 #line 2707 "util/configparser.y"
6085 {
6086 size_t len = 0;
6087 uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6088 &len);
6089 free((yyvsp[0].str));
6090 OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6091 if(!bitlist) {
6092 yyerror("could not parse tags, (define-tag them first)");
6093 free((yyvsp[-1].str));
6094 }
6095 if(bitlist) {
6096 if(!cfg_strbytelist_insert(
6097 &cfg_parser->cfg->respip_tags,
6098 (yyvsp[-1].str), bitlist, len)) {
6099 yyerror("out of memory");
6100 free((yyvsp[-1].str));
6101 }
6102 }
6103 }
6104 #line 6105 "util/configparser.c"
6105 break;
6106
6107 case 559: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */
6108 #line 2728 "util/configparser.y"
6109 {
6110 OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6111 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6112 yyerror("number expected");
6113 else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6114 free((yyvsp[0].str));
6115 }
6116 #line 6117 "util/configparser.c"
6117 break;
6118
6119 case 560: /* server_ip_ratelimit_cookie: VAR_IP_RATELIMIT_COOKIE STRING_ARG */
6120 #line 2737 "util/configparser.y"
6121 {
6122 OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", (yyvsp[0].str)));
6123 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6124 yyerror("number expected");
6125 else cfg_parser->cfg->ip_ratelimit_cookie = atoi((yyvsp[0].str));
6126 free((yyvsp[0].str));
6127 }
6128 #line 6129 "util/configparser.c"
6129 break;
6130
6131 case 561: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */
6132 #line 2746 "util/configparser.y"
6133 {
6134 OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6135 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6136 yyerror("number expected");
6137 else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6138 free((yyvsp[0].str));
6139 }
6140 #line 6141 "util/configparser.c"
6141 break;
6142
6143 case 562: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */
6144 #line 2755 "util/configparser.y"
6145 {
6146 OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6147 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6148 yyerror("memory size expected");
6149 free((yyvsp[0].str));
6150 }
6151 #line 6152 "util/configparser.c"
6152 break;
6153
6154 case 563: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */
6155 #line 2763 "util/configparser.y"
6156 {
6157 OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6158 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6159 yyerror("memory size expected");
6160 free((yyvsp[0].str));
6161 }
6162 #line 6163 "util/configparser.c"
6163 break;
6164
6165 case 564: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */
6166 #line 2771 "util/configparser.y"
6167 {
6168 OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6169 if(atoi((yyvsp[0].str)) == 0) {
6170 yyerror("number expected");
6171 } else {
6172 cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6173 if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6174 yyerror("must be a power of 2");
6175 }
6176 free((yyvsp[0].str));
6177 }
6178 #line 6179 "util/configparser.c"
6179 break;
6180
6181 case 565: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */
6182 #line 2784 "util/configparser.y"
6183 {
6184 OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6185 if(atoi((yyvsp[0].str)) == 0) {
6186 yyerror("number expected");
6187 } else {
6188 cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6189 if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6190 yyerror("must be a power of 2");
6191 }
6192 free((yyvsp[0].str));
6193 }
6194 #line 6195 "util/configparser.c"
6195 break;
6196
6197 case 566: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */
6198 #line 2797 "util/configparser.y"
6199 {
6200 OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6201 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6202 yyerror("number expected");
6203 free((yyvsp[-1].str));
6204 free((yyvsp[0].str));
6205 } else {
6206 if(!cfg_str2list_insert(&cfg_parser->cfg->
6207 ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6208 fatal_exit("out of memory adding "
6209 "ratelimit-for-domain");
6210 }
6211 }
6212 #line 6213 "util/configparser.c"
6213 break;
6214
6215 case 567: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */
6216 #line 2812 "util/configparser.y"
6217 {
6218 OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6219 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6220 yyerror("number expected");
6221 free((yyvsp[-1].str));
6222 free((yyvsp[0].str));
6223 } else {
6224 if(!cfg_str2list_insert(&cfg_parser->cfg->
6225 ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6226 fatal_exit("out of memory adding "
6227 "ratelimit-below-domain");
6228 }
6229 }
6230 #line 6231 "util/configparser.c"
6231 break;
6232
6233 case 568: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */
6234 #line 2827 "util/configparser.y"
6235 {
6236 OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6237 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6238 yyerror("number expected");
6239 else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6240 free((yyvsp[0].str));
6241 }
6242 #line 6243 "util/configparser.c"
6243 break;
6244
6245 case 569: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */
6246 #line 2836 "util/configparser.y"
6247 {
6248 OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6249 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6250 yyerror("number expected");
6251 else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6252 free((yyvsp[0].str));
6253 }
6254 #line 6255 "util/configparser.c"
6255 break;
6256
6257 case 570: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */
6258 #line 2845 "util/configparser.y"
6259 {
6260 OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6261 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6262 yyerror("expected yes or no.");
6263 else cfg_parser->cfg->ip_ratelimit_backoff =
6264 (strcmp((yyvsp[0].str), "yes")==0);
6265 free((yyvsp[0].str));
6266 }
6267 #line 6268 "util/configparser.c"
6268 break;
6269
6270 case 571: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */
6271 #line 2855 "util/configparser.y"
6272 {
6273 OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6274 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6275 yyerror("expected yes or no.");
6276 else cfg_parser->cfg->ratelimit_backoff =
6277 (strcmp((yyvsp[0].str), "yes")==0);
6278 free((yyvsp[0].str));
6279 }
6280 #line 6281 "util/configparser.c"
6281 break;
6282
6283 case 572: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */
6284 #line 2865 "util/configparser.y"
6285 {
6286 OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6287 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6288 yyerror("number expected");
6289 else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6290 free((yyvsp[0].str));
6291 }
6292 #line 6293 "util/configparser.c"
6293 break;
6294
6295 case 573: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */
6296 #line 2874 "util/configparser.y"
6297 {
6298 OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6299 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6300 yyerror("number expected");
6301 else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6302 free((yyvsp[0].str));
6303 }
6304 #line 6305 "util/configparser.c"
6305 break;
6306
6307 case 574: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */
6308 #line 2883 "util/configparser.y"
6309 {
6310 OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6311 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6312 yyerror("number expected");
6313 else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6314 free((yyvsp[0].str));
6315 }
6316 #line 6317 "util/configparser.c"
6317 break;
6318
6319 case 575: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */
6320 #line 2892 "util/configparser.y"
6321 {
6322 OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6323 free((yyvsp[0].str));
6324 }
6325 #line 6326 "util/configparser.c"
6326 break;
6327
6328 case 576: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */
6329 #line 2898 "util/configparser.y"
6330 {
6331 OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6332 if(atoi((yyvsp[0].str)) <= 0)
6333 yyerror("number expected");
6334 else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6335 free((yyvsp[0].str));
6336 }
6337 #line 6338 "util/configparser.c"
6338 break;
6339
6340 case 577: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */
6341 #line 2907 "util/configparser.y"
6342 {
6343 OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6344 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6345 yyerror("number expected");
6346 else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6347 free((yyvsp[0].str));
6348 }
6349 #line 6350 "util/configparser.c"
6350 break;
6351
6352 case 578: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */
6353 #line 2916 "util/configparser.y"
6354 {
6355 OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6356 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6357 yyerror("expected yes or no.");
6358 else cfg_parser->cfg->qname_minimisation =
6359 (strcmp((yyvsp[0].str), "yes")==0);
6360 free((yyvsp[0].str));
6361 }
6362 #line 6363 "util/configparser.c"
6363 break;
6364
6365 case 579: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */
6366 #line 2926 "util/configparser.y"
6367 {
6368 OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6369 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6370 yyerror("expected yes or no.");
6371 else cfg_parser->cfg->qname_minimisation_strict =
6372 (strcmp((yyvsp[0].str), "yes")==0);
6373 free((yyvsp[0].str));
6374 }
6375 #line 6376 "util/configparser.c"
6376 break;
6377
6378 case 580: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */
6379 #line 2936 "util/configparser.y"
6380 {
6381 OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6382 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6383 yyerror("expected yes or no.");
6384 else cfg_parser->cfg->pad_responses =
6385 (strcmp((yyvsp[0].str), "yes")==0);
6386 free((yyvsp[0].str));
6387 }
6388 #line 6389 "util/configparser.c"
6389 break;
6390
6391 case 581: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */
6392 #line 2946 "util/configparser.y"
6393 {
6394 OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6395 if(atoi((yyvsp[0].str)) == 0)
6396 yyerror("number expected");
6397 else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6398 free((yyvsp[0].str));
6399 }
6400 #line 6401 "util/configparser.c"
6401 break;
6402
6403 case 582: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */
6404 #line 2955 "util/configparser.y"
6405 {
6406 OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6407 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6408 yyerror("expected yes or no.");
6409 else cfg_parser->cfg->pad_queries =
6410 (strcmp((yyvsp[0].str), "yes")==0);
6411 free((yyvsp[0].str));
6412 }
6413 #line 6414 "util/configparser.c"
6414 break;
6415
6416 case 583: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */
6417 #line 2965 "util/configparser.y"
6418 {
6419 OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6420 if(atoi((yyvsp[0].str)) == 0)
6421 yyerror("number expected");
6422 else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6423 free((yyvsp[0].str));
6424 }
6425 #line 6426 "util/configparser.c"
6426 break;
6427
6428 case 584: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */
6429 #line 2974 "util/configparser.y"
6430 {
6431 #ifdef USE_IPSECMOD
6432 OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6433 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6434 yyerror("expected yes or no.");
6435 else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6436 #else
6437 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6438 #endif
6439 free((yyvsp[0].str));
6440 }
6441 #line 6442 "util/configparser.c"
6442 break;
6443
6444 case 585: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */
6445 #line 2987 "util/configparser.y"
6446 {
6447 #ifdef USE_IPSECMOD
6448 OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6449 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6450 yyerror("expected yes or no.");
6451 else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6452 #else
6453 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6454 #endif
6455 free((yyvsp[0].str));
6456 }
6457 #line 6458 "util/configparser.c"
6458 break;
6459
6460 case 586: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */
6461 #line 3000 "util/configparser.y"
6462 {
6463 #ifdef USE_IPSECMOD
6464 OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6465 free(cfg_parser->cfg->ipsecmod_hook);
6466 cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6467 #else
6468 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6469 free((yyvsp[0].str));
6470 #endif
6471 }
6472 #line 6473 "util/configparser.c"
6473 break;
6474
6475 case 587: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */
6476 #line 3012 "util/configparser.y"
6477 {
6478 #ifdef USE_IPSECMOD
6479 OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6480 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6481 yyerror("number expected");
6482 else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6483 free((yyvsp[0].str));
6484 #else
6485 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6486 free((yyvsp[0].str));
6487 #endif
6488 }
6489 #line 6490 "util/configparser.c"
6490 break;
6491
6492 case 588: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */
6493 #line 3026 "util/configparser.y"
6494 {
6495 #ifdef USE_IPSECMOD
6496 OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6497 if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6498 yyerror("out of memory");
6499 #else
6500 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6501 free((yyvsp[0].str));
6502 #endif
6503 }
6504 #line 6505 "util/configparser.c"
6505 break;
6506
6507 case 589: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */
6508 #line 3038 "util/configparser.y"
6509 {
6510 #ifdef USE_IPSECMOD
6511 OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6512 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6513 yyerror("expected yes or no.");
6514 else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6515 free((yyvsp[0].str));
6516 #else
6517 OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6518 free((yyvsp[0].str));
6519 #endif
6520 }
6521 #line 6522 "util/configparser.c"
6522 break;
6523
6524 case 590: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */
6525 #line 3052 "util/configparser.y"
6526 {
6527 OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6528 if(!cfg_str2list_insert(
6529 &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6530 fatal_exit("out of memory adding "
6531 "edns-client-string");
6532 }
6533 #line 6534 "util/configparser.c"
6534 break;
6535
6536 case 591: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */
6537 #line 3061 "util/configparser.y"
6538 {
6539 OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6540 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6541 yyerror("option code expected");
6542 else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6543 yyerror("option code must be in interval [0, 65535]");
6544 else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6545 free((yyvsp[0].str));
6546 }
6547 #line 6548 "util/configparser.c"
6548 break;
6549
6550 case 592: /* server_ede: VAR_EDE STRING_ARG */
6551 #line 3072 "util/configparser.y"
6552 {
6553 OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6554 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6555 yyerror("expected yes or no.");
6556 else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6557 free((yyvsp[0].str));
6558 }
6559 #line 6560 "util/configparser.c"
6560 break;
6561
6562 case 593: /* server_dns_error_reporting: VAR_DNS_ERROR_REPORTING STRING_ARG */
6563 #line 3081 "util/configparser.y"
6564 {
6565 OUTYY(("P(server_dns_error_reporting:%s)\n", (yyvsp[0].str)));
6566 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6567 yyerror("expected yes or no.");
6568 else cfg_parser->cfg->dns_error_reporting = (strcmp((yyvsp[0].str), "yes")==0);
6569 free((yyvsp[0].str));
6570 }
6571 #line 6572 "util/configparser.c"
6572 break;
6573
6574 case 594: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */
6575 #line 3090 "util/configparser.y"
6576 {
6577 OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6578 if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6579 yyerror("out of memory");
6580 }
6581 #line 6582 "util/configparser.c"
6582 break;
6583
6584 case 595: /* stub_name: VAR_NAME STRING_ARG */
6585 #line 3097 "util/configparser.y"
6586 {
6587 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6588 if(cfg_parser->cfg->stubs->name)
6589 yyerror("stub name override, there must be one name "
6590 "for one stub-zone");
6591 free(cfg_parser->cfg->stubs->name);
6592 cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6593 }
6594 #line 6595 "util/configparser.c"
6595 break;
6596
6597 case 596: /* stub_host: VAR_STUB_HOST STRING_ARG */
6598 #line 3107 "util/configparser.y"
6599 {
6600 OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6601 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6602 yyerror("out of memory");
6603 }
6604 #line 6605 "util/configparser.c"
6605 break;
6606
6607 case 597: /* stub_addr: VAR_STUB_ADDR STRING_ARG */
6608 #line 3114 "util/configparser.y"
6609 {
6610 OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6611 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6612 yyerror("out of memory");
6613 }
6614 #line 6615 "util/configparser.c"
6615 break;
6616
6617 case 598: /* stub_first: VAR_STUB_FIRST STRING_ARG */
6618 #line 3121 "util/configparser.y"
6619 {
6620 OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6621 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6622 yyerror("expected yes or no.");
6623 else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6624 free((yyvsp[0].str));
6625 }
6626 #line 6627 "util/configparser.c"
6627 break;
6628
6629 case 599: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */
6630 #line 3130 "util/configparser.y"
6631 {
6632 OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6633 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6634 yyerror("expected yes or no.");
6635 else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6636 free((yyvsp[0].str));
6637 }
6638 #line 6639 "util/configparser.c"
6639 break;
6640
6641 case 600: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */
6642 #line 3139 "util/configparser.y"
6643 {
6644 OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6645 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6646 yyerror("expected yes or no.");
6647 else cfg_parser->cfg->stubs->ssl_upstream =
6648 (strcmp((yyvsp[0].str), "yes")==0);
6649 free((yyvsp[0].str));
6650 }
6651 #line 6652 "util/configparser.c"
6652 break;
6653
6654 case 601: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */
6655 #line 3149 "util/configparser.y"
6656 {
6657 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6658 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6659 yyerror("expected yes or no.");
6660 else cfg_parser->cfg->stubs->tcp_upstream =
6661 (strcmp((yyvsp[0].str), "yes")==0);
6662 free((yyvsp[0].str));
6663 }
6664 #line 6665 "util/configparser.c"
6665 break;
6666
6667 case 602: /* stub_prime: VAR_STUB_PRIME STRING_ARG */
6668 #line 3159 "util/configparser.y"
6669 {
6670 OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6671 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6672 yyerror("expected yes or no.");
6673 else cfg_parser->cfg->stubs->isprime =
6674 (strcmp((yyvsp[0].str), "yes")==0);
6675 free((yyvsp[0].str));
6676 }
6677 #line 6678 "util/configparser.c"
6678 break;
6679
6680 case 603: /* forward_name: VAR_NAME STRING_ARG */
6681 #line 3169 "util/configparser.y"
6682 {
6683 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6684 if(cfg_parser->cfg->forwards->name)
6685 yyerror("forward name override, there must be one "
6686 "name for one forward-zone");
6687 free(cfg_parser->cfg->forwards->name);
6688 cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6689 }
6690 #line 6691 "util/configparser.c"
6691 break;
6692
6693 case 604: /* forward_host: VAR_FORWARD_HOST STRING_ARG */
6694 #line 3179 "util/configparser.y"
6695 {
6696 OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6697 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6698 yyerror("out of memory");
6699 }
6700 #line 6701 "util/configparser.c"
6701 break;
6702
6703 case 605: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */
6704 #line 3186 "util/configparser.y"
6705 {
6706 OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6707 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6708 yyerror("out of memory");
6709 }
6710 #line 6711 "util/configparser.c"
6711 break;
6712
6713 case 606: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */
6714 #line 3193 "util/configparser.y"
6715 {
6716 OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6717 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6718 yyerror("expected yes or no.");
6719 else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6720 free((yyvsp[0].str));
6721 }
6722 #line 6723 "util/configparser.c"
6723 break;
6724
6725 case 607: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */
6726 #line 3202 "util/configparser.y"
6727 {
6728 OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6729 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6730 yyerror("expected yes or no.");
6731 else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6732 free((yyvsp[0].str));
6733 }
6734 #line 6735 "util/configparser.c"
6735 break;
6736
6737 case 608: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */
6738 #line 3211 "util/configparser.y"
6739 {
6740 OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6741 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6742 yyerror("expected yes or no.");
6743 else cfg_parser->cfg->forwards->ssl_upstream =
6744 (strcmp((yyvsp[0].str), "yes")==0);
6745 free((yyvsp[0].str));
6746 }
6747 #line 6748 "util/configparser.c"
6748 break;
6749
6750 case 609: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */
6751 #line 3221 "util/configparser.y"
6752 {
6753 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6754 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6755 yyerror("expected yes or no.");
6756 else cfg_parser->cfg->forwards->tcp_upstream =
6757 (strcmp((yyvsp[0].str), "yes")==0);
6758 free((yyvsp[0].str));
6759 }
6760 #line 6761 "util/configparser.c"
6761 break;
6762
6763 case 610: /* auth_name: VAR_NAME STRING_ARG */
6764 #line 3231 "util/configparser.y"
6765 {
6766 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6767 if(cfg_parser->cfg->auths->name)
6768 yyerror("auth name override, there must be one name "
6769 "for one auth-zone");
6770 free(cfg_parser->cfg->auths->name);
6771 cfg_parser->cfg->auths->name = (yyvsp[0].str);
6772 }
6773 #line 6774 "util/configparser.c"
6774 break;
6775
6776 case 611: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */
6777 #line 3241 "util/configparser.y"
6778 {
6779 OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6780 free(cfg_parser->cfg->auths->zonefile);
6781 cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6782 }
6783 #line 6784 "util/configparser.c"
6784 break;
6785
6786 case 612: /* auth_master: VAR_MASTER STRING_ARG */
6787 #line 3248 "util/configparser.y"
6788 {
6789 OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6790 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6791 yyerror("out of memory");
6792 }
6793 #line 6794 "util/configparser.c"
6794 break;
6795
6796 case 613: /* auth_url: VAR_URL STRING_ARG */
6797 #line 3255 "util/configparser.y"
6798 {
6799 OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6800 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6801 yyerror("out of memory");
6802 }
6803 #line 6804 "util/configparser.c"
6804 break;
6805
6806 case 614: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */
6807 #line 3262 "util/configparser.y"
6808 {
6809 OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6810 if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6811 (yyvsp[0].str)))
6812 yyerror("out of memory");
6813 }
6814 #line 6815 "util/configparser.c"
6815 break;
6816
6817 case 615: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */
6818 #line 3270 "util/configparser.y"
6819 {
6820 OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6821 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6822 yyerror("expected yes or no.");
6823 else cfg_parser->cfg->auths->zonemd_check =
6824 (strcmp((yyvsp[0].str), "yes")==0);
6825 free((yyvsp[0].str));
6826 }
6827 #line 6828 "util/configparser.c"
6828 break;
6829
6830 case 616: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */
6831 #line 3280 "util/configparser.y"
6832 {
6833 OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6834 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6835 yyerror("expected yes or no.");
6836 else cfg_parser->cfg->auths->zonemd_reject_absence =
6837 (strcmp((yyvsp[0].str), "yes")==0);
6838 free((yyvsp[0].str));
6839 }
6840 #line 6841 "util/configparser.c"
6841 break;
6842
6843 case 617: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */
6844 #line 3290 "util/configparser.y"
6845 {
6846 OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6847 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6848 yyerror("expected yes or no.");
6849 else cfg_parser->cfg->auths->for_downstream =
6850 (strcmp((yyvsp[0].str), "yes")==0);
6851 free((yyvsp[0].str));
6852 }
6853 #line 6854 "util/configparser.c"
6854 break;
6855
6856 case 618: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */
6857 #line 3300 "util/configparser.y"
6858 {
6859 OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6860 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6861 yyerror("expected yes or no.");
6862 else cfg_parser->cfg->auths->for_upstream =
6863 (strcmp((yyvsp[0].str), "yes")==0);
6864 free((yyvsp[0].str));
6865 }
6866 #line 6867 "util/configparser.c"
6867 break;
6868
6869 case 619: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */
6870 #line 3310 "util/configparser.y"
6871 {
6872 OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6873 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6874 yyerror("expected yes or no.");
6875 else cfg_parser->cfg->auths->fallback_enabled =
6876 (strcmp((yyvsp[0].str), "yes")==0);
6877 free((yyvsp[0].str));
6878 }
6879 #line 6880 "util/configparser.c"
6880 break;
6881
6882 case 620: /* view_name: VAR_NAME STRING_ARG */
6883 #line 3320 "util/configparser.y"
6884 {
6885 OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6886 if(cfg_parser->cfg->views->name)
6887 yyerror("view name override, there must be one "
6888 "name for one view");
6889 free(cfg_parser->cfg->views->name);
6890 cfg_parser->cfg->views->name = (yyvsp[0].str);
6891 }
6892 #line 6893 "util/configparser.c"
6893 break;
6894
6895 case 621: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */
6896 #line 3330 "util/configparser.y"
6897 {
6898 OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6899 if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6900 strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6901 strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6902 && strcmp((yyvsp[0].str), "typetransparent")!=0
6903 && strcmp((yyvsp[0].str), "always_transparent")!=0
6904 && strcmp((yyvsp[0].str), "always_refuse")!=0
6905 && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6906 && strcmp((yyvsp[0].str), "always_nodata")!=0
6907 && strcmp((yyvsp[0].str), "always_deny")!=0
6908 && strcmp((yyvsp[0].str), "always_null")!=0
6909 && strcmp((yyvsp[0].str), "noview")!=0
6910 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6911 && strcmp((yyvsp[0].str), "inform_redirect") != 0
6912 && strcmp((yyvsp[0].str), "ipset") != 0) {
6913 yyerror("local-zone type: expected static, deny, "
6914 "refuse, redirect, transparent, "
6915 "typetransparent, inform, inform_deny, "
6916 "inform_redirect, always_transparent, "
6917 "always_refuse, always_nxdomain, "
6918 "always_nodata, always_deny, always_null, "
6919 "noview, nodefault or ipset");
6920 free((yyvsp[-1].str));
6921 free((yyvsp[0].str));
6922 } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6923 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6924 local_zones_nodefault, (yyvsp[-1].str)))
6925 fatal_exit("out of memory adding local-zone");
6926 free((yyvsp[0].str));
6927 #ifdef USE_IPSET
6928 } else if(strcmp((yyvsp[0].str), "ipset")==0) {
6929 size_t len = strlen((yyvsp[-1].str));
6930 /* Make sure to add the trailing dot.
6931 * These are str compared to domain names. */
6932 if((yyvsp[-1].str)[len-1] != '.') {
6933 if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
6934 fatal_exit("out of memory adding local-zone");
6935 }
6936 (yyvsp[-1].str)[len] = '.';
6937 (yyvsp[-1].str)[len+1] = 0;
6938 }
6939 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6940 local_zones_ipset, (yyvsp[-1].str)))
6941 fatal_exit("out of memory adding local-zone");
6942 free((yyvsp[0].str));
6943 #endif
6944 } else {
6945 if(!cfg_str2list_insert(
6946 &cfg_parser->cfg->views->local_zones,
6947 (yyvsp[-1].str), (yyvsp[0].str)))
6948 fatal_exit("out of memory adding local-zone");
6949 }
6950 }
6951 #line 6952 "util/configparser.c"
6952 break;
6953
6954 case 622: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */
6955 #line 3386 "util/configparser.y"
6956 {
6957 OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6958 validate_respip_action((yyvsp[0].str));
6959 if(!cfg_str2list_insert(
6960 &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
6961 fatal_exit("out of memory adding per-view "
6962 "response-ip action");
6963 }
6964 #line 6965 "util/configparser.c"
6965 break;
6966
6967 case 623: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */
6968 #line 3396 "util/configparser.y"
6969 {
6970 OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
6971 if(!cfg_str2list_insert(
6972 &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
6973 fatal_exit("out of memory adding response-ip-data");
6974 }
6975 #line 6976 "util/configparser.c"
6976 break;
6977
6978 case 624: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */
6979 #line 3404 "util/configparser.y"
6980 {
6981 OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
6982 if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
6983 fatal_exit("out of memory adding local-data");
6984 }
6985 }
6986 #line 6987 "util/configparser.c"
6987 break;
6988
6989 case 625: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */
6990 #line 3412 "util/configparser.y"
6991 {
6992 char* ptr;
6993 OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
6994 ptr = cfg_ptr_reverse((yyvsp[0].str));
6995 free((yyvsp[0].str));
6996 if(ptr) {
6997 if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6998 local_data, ptr))
6999 fatal_exit("out of memory adding local-data");
7000 } else {
7001 yyerror("local-data-ptr could not be reversed");
7002 }
7003 }
7004 #line 7005 "util/configparser.c"
7005 break;
7006
7007 case 626: /* view_first: VAR_VIEW_FIRST STRING_ARG */
7008 #line 3427 "util/configparser.y"
7009 {
7010 OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
7011 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7012 yyerror("expected yes or no.");
7013 else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
7014 free((yyvsp[0].str));
7015 }
7016 #line 7017 "util/configparser.c"
7017 break;
7018
7019 case 627: /* rcstart: VAR_REMOTE_CONTROL */
7020 #line 3436 "util/configparser.y"
7021 {
7022 OUTYY(("\nP(remote-control:)\n"));
7023 cfg_parser->started_toplevel = 1;
7024 }
7025 #line 7026 "util/configparser.c"
7026 break;
7027
7028 case 638: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */
7029 #line 3448 "util/configparser.y"
7030 {
7031 OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
7032 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7033 yyerror("expected yes or no.");
7034 else cfg_parser->cfg->remote_control_enable =
7035 (strcmp((yyvsp[0].str), "yes")==0);
7036 free((yyvsp[0].str));
7037 }
7038 #line 7039 "util/configparser.c"
7039 break;
7040
7041 case 639: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */
7042 #line 3458 "util/configparser.y"
7043 {
7044 OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
7045 if(atoi((yyvsp[0].str)) == 0)
7046 yyerror("control port number expected");
7047 else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
7048 free((yyvsp[0].str));
7049 }
7050 #line 7051 "util/configparser.c"
7051 break;
7052
7053 case 640: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */
7054 #line 3467 "util/configparser.y"
7055 {
7056 OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
7057 if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
7058 yyerror("out of memory");
7059 }
7060 #line 7061 "util/configparser.c"
7061 break;
7062
7063 case 641: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */
7064 #line 3474 "util/configparser.y"
7065 {
7066 OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
7067 cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
7068 free((yyvsp[0].str));
7069 }
7070 #line 7071 "util/configparser.c"
7071 break;
7072
7073 case 642: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */
7074 #line 3481 "util/configparser.y"
7075 {
7076 OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
7077 free(cfg_parser->cfg->server_key_file);
7078 cfg_parser->cfg->server_key_file = (yyvsp[0].str);
7079 }
7080 #line 7081 "util/configparser.c"
7081 break;
7082
7083 case 643: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */
7084 #line 3488 "util/configparser.y"
7085 {
7086 OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
7087 free(cfg_parser->cfg->server_cert_file);
7088 cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
7089 }
7090 #line 7091 "util/configparser.c"
7091 break;
7092
7093 case 644: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */
7094 #line 3495 "util/configparser.y"
7095 {
7096 OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
7097 free(cfg_parser->cfg->control_key_file);
7098 cfg_parser->cfg->control_key_file = (yyvsp[0].str);
7099 }
7100 #line 7101 "util/configparser.c"
7101 break;
7102
7103 case 645: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */
7104 #line 3502 "util/configparser.y"
7105 {
7106 OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
7107 free(cfg_parser->cfg->control_cert_file);
7108 cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
7109 }
7110 #line 7111 "util/configparser.c"
7111 break;
7112
7113 case 646: /* dtstart: VAR_DNSTAP */
7114 #line 3509 "util/configparser.y"
7115 {
7116 OUTYY(("\nP(dnstap:)\n"));
7117 cfg_parser->started_toplevel = 1;
7118 }
7119 #line 7120 "util/configparser.c"
7120 break;
7121
7122 case 669: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */
7123 #line 3531 "util/configparser.y"
7124 {
7125 OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
7126 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7127 yyerror("expected yes or no.");
7128 else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
7129 free((yyvsp[0].str));
7130 }
7131 #line 7132 "util/configparser.c"
7132 break;
7133
7134 case 670: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */
7135 #line 3540 "util/configparser.y"
7136 {
7137 OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7138 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7139 yyerror("expected yes or no.");
7140 else cfg_parser->cfg->dnstap_bidirectional =
7141 (strcmp((yyvsp[0].str), "yes")==0);
7142 free((yyvsp[0].str));
7143 }
7144 #line 7145 "util/configparser.c"
7145 break;
7146
7147 case 671: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */
7148 #line 3550 "util/configparser.y"
7149 {
7150 OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7151 free(cfg_parser->cfg->dnstap_socket_path);
7152 cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7153 }
7154 #line 7155 "util/configparser.c"
7155 break;
7156
7157 case 672: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */
7158 #line 3557 "util/configparser.y"
7159 {
7160 OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7161 free(cfg_parser->cfg->dnstap_ip);
7162 cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7163 }
7164 #line 7165 "util/configparser.c"
7165 break;
7166
7167 case 673: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */
7168 #line 3564 "util/configparser.y"
7169 {
7170 OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7171 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7172 yyerror("expected yes or no.");
7173 else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7174 free((yyvsp[0].str));
7175 }
7176 #line 7177 "util/configparser.c"
7177 break;
7178
7179 case 674: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */
7180 #line 3573 "util/configparser.y"
7181 {
7182 OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7183 free(cfg_parser->cfg->dnstap_tls_server_name);
7184 cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7185 }
7186 #line 7187 "util/configparser.c"
7187 break;
7188
7189 case 675: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */
7190 #line 3580 "util/configparser.y"
7191 {
7192 OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7193 free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7194 cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7195 }
7196 #line 7197 "util/configparser.c"
7197 break;
7198
7199 case 676: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */
7200 #line 3587 "util/configparser.y"
7201 {
7202 OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7203 free(cfg_parser->cfg->dnstap_tls_client_key_file);
7204 cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7205 }
7206 #line 7207 "util/configparser.c"
7207 break;
7208
7209 case 677: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */
7210 #line 3594 "util/configparser.y"
7211 {
7212 OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7213 free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7214 cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7215 }
7216 #line 7217 "util/configparser.c"
7217 break;
7218
7219 case 678: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */
7220 #line 3601 "util/configparser.y"
7221 {
7222 OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7223 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7224 yyerror("expected yes or no.");
7225 else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7226 free((yyvsp[0].str));
7227 }
7228 #line 7229 "util/configparser.c"
7229 break;
7230
7231 case 679: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */
7232 #line 3610 "util/configparser.y"
7233 {
7234 OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7235 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7236 yyerror("expected yes or no.");
7237 else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7238 free((yyvsp[0].str));
7239 }
7240 #line 7241 "util/configparser.c"
7241 break;
7242
7243 case 680: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */
7244 #line 3619 "util/configparser.y"
7245 {
7246 OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7247 free(cfg_parser->cfg->dnstap_identity);
7248 cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7249 }
7250 #line 7251 "util/configparser.c"
7251 break;
7252
7253 case 681: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */
7254 #line 3626 "util/configparser.y"
7255 {
7256 OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7257 free(cfg_parser->cfg->dnstap_version);
7258 cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7259 }
7260 #line 7261 "util/configparser.c"
7261 break;
7262
7263 case 682: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */
7264 #line 3633 "util/configparser.y"
7265 {
7266 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7267 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7268 yyerror("expected yes or no.");
7269 else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7270 (strcmp((yyvsp[0].str), "yes")==0);
7271 free((yyvsp[0].str));
7272 }
7273 #line 7274 "util/configparser.c"
7274 break;
7275
7276 case 683: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */
7277 #line 3643 "util/configparser.y"
7278 {
7279 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7280 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7281 yyerror("expected yes or no.");
7282 else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7283 (strcmp((yyvsp[0].str), "yes")==0);
7284 free((yyvsp[0].str));
7285 }
7286 #line 7287 "util/configparser.c"
7287 break;
7288
7289 case 684: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */
7290 #line 3653 "util/configparser.y"
7291 {
7292 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7293 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7294 yyerror("expected yes or no.");
7295 else cfg_parser->cfg->dnstap_log_client_query_messages =
7296 (strcmp((yyvsp[0].str), "yes")==0);
7297 free((yyvsp[0].str));
7298 }
7299 #line 7300 "util/configparser.c"
7300 break;
7301
7302 case 685: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */
7303 #line 3663 "util/configparser.y"
7304 {
7305 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7306 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7307 yyerror("expected yes or no.");
7308 else cfg_parser->cfg->dnstap_log_client_response_messages =
7309 (strcmp((yyvsp[0].str), "yes")==0);
7310 free((yyvsp[0].str));
7311 }
7312 #line 7313 "util/configparser.c"
7313 break;
7314
7315 case 686: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */
7316 #line 3673 "util/configparser.y"
7317 {
7318 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7319 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7320 yyerror("expected yes or no.");
7321 else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7322 (strcmp((yyvsp[0].str), "yes")==0);
7323 free((yyvsp[0].str));
7324 }
7325 #line 7326 "util/configparser.c"
7326 break;
7327
7328 case 687: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */
7329 #line 3683 "util/configparser.y"
7330 {
7331 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7332 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7333 yyerror("expected yes or no.");
7334 else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7335 (strcmp((yyvsp[0].str), "yes")==0);
7336 free((yyvsp[0].str));
7337 }
7338 #line 7339 "util/configparser.c"
7339 break;
7340
7341 case 688: /* dt_dnstap_sample_rate: VAR_DNSTAP_SAMPLE_RATE STRING_ARG */
7342 #line 3693 "util/configparser.y"
7343 {
7344 OUTYY(("P(dt_dnstap_sample_rate:%s)\n", (yyvsp[0].str)));
7345 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7346 yyerror("number expected");
7347 else if(atoi((yyvsp[0].str)) < 0)
7348 yyerror("dnstap sample rate too small");
7349 else cfg_parser->cfg->dnstap_sample_rate = atoi((yyvsp[0].str));
7350 free((yyvsp[0].str));
7351 }
7352 #line 7353 "util/configparser.c"
7353 break;
7354
7355 case 689: /* pythonstart: VAR_PYTHON */
7356 #line 3704 "util/configparser.y"
7357 {
7358 OUTYY(("\nP(python:)\n"));
7359 cfg_parser->started_toplevel = 1;
7360 }
7361 #line 7362 "util/configparser.c"
7362 break;
7363
7364 case 693: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */
7365 #line 3714 "util/configparser.y"
7366 {
7367 OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7368 if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7369 yyerror("out of memory");
7370 }
7371 #line 7372 "util/configparser.c"
7372 break;
7373
7374 case 694: /* dynlibstart: VAR_DYNLIB */
7375 #line 3721 "util/configparser.y"
7376 {
7377 OUTYY(("\nP(dynlib:)\n"));
7378 cfg_parser->started_toplevel = 1;
7379 }
7380 #line 7381 "util/configparser.c"
7381 break;
7382
7383 case 698: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */
7384 #line 3731 "util/configparser.y"
7385 {
7386 OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7387 if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7388 yyerror("out of memory");
7389 }
7390 #line 7391 "util/configparser.c"
7391 break;
7392
7393 case 699: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */
7394 #line 3738 "util/configparser.y"
7395 {
7396 OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7397 if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7398 yyerror("expected yes or no.");
7399 else cfg_parser->cfg->disable_dnssec_lame_check =
7400 (strcmp((yyvsp[0].str), "yes")==0);
7401 free((yyvsp[0].str));
7402 }
7403 #line 7404 "util/configparser.c"
7404 break;
7405
7406 case 700: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */
7407 #line 3748 "util/configparser.y"
7408 {
7409 OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7410 free(cfg_parser->cfg->log_identity);
7411 cfg_parser->cfg->log_identity = (yyvsp[0].str);
7412 }
7413 #line 7414 "util/configparser.c"
7414 break;
7415
7416 case 701: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */
7417 #line 3755 "util/configparser.y"
7418 {
7419 OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7420 validate_respip_action((yyvsp[0].str));
7421 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7422 (yyvsp[-1].str), (yyvsp[0].str)))
7423 fatal_exit("out of memory adding response-ip");
7424 }
7425 #line 7426 "util/configparser.c"
7426 break;
7427
7428 case 702: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */
7429 #line 3764 "util/configparser.y"
7430 {
7431 OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7432 if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7433 (yyvsp[-1].str), (yyvsp[0].str)))
7434 fatal_exit("out of memory adding response-ip-data");
7435 }
7436 #line 7437 "util/configparser.c"
7437 break;
7438
7439 case 703: /* dnscstart: VAR_DNSCRYPT */
7440 #line 3772 "util/configparser.y"
7441 {
7442 OUTYY(("\nP(dnscrypt:)\n"));
7443 cfg_parser->started_toplevel = 1;
7444 }
7445 #line 7446 "util/configparser.c"
7446 break;
7447
7448 case 716: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */
7449 #line 3789 "util/configparser.y"
7450 {
7451 OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7452 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7453 yyerror("expected yes or no.");
7454 else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7455 free((yyvsp[0].str));
7456 }
7457 #line 7458 "util/configparser.c"
7458 break;
7459
7460 case 717: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */
7461 #line 3798 "util/configparser.y"
7462 {
7463 OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7464 if(atoi((yyvsp[0].str)) == 0)
7465 yyerror("port number expected");
7466 else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7467 free((yyvsp[0].str));
7468 }
7469 #line 7470 "util/configparser.c"
7470 break;
7471
7472 case 718: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */
7473 #line 3807 "util/configparser.y"
7474 {
7475 OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7476 free(cfg_parser->cfg->dnscrypt_provider);
7477 cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7478 }
7479 #line 7480 "util/configparser.c"
7480 break;
7481
7482 case 719: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */
7483 #line 3814 "util/configparser.y"
7484 {
7485 OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7486 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7487 log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7488 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7489 fatal_exit("out of memory adding dnscrypt-provider-cert");
7490 }
7491 #line 7492 "util/configparser.c"
7492 break;
7493
7494 case 720: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */
7495 #line 3823 "util/configparser.y"
7496 {
7497 OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7498 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7499 fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7500 }
7501 #line 7502 "util/configparser.c"
7502 break;
7503
7504 case 721: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */
7505 #line 3830 "util/configparser.y"
7506 {
7507 OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7508 if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7509 log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7510 if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7511 fatal_exit("out of memory adding dnscrypt-secret-key");
7512 }
7513 #line 7514 "util/configparser.c"
7514 break;
7515
7516 case 722: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */
7517 #line 3839 "util/configparser.y"
7518 {
7519 OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7520 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7521 yyerror("memory size expected");
7522 free((yyvsp[0].str));
7523 }
7524 #line 7525 "util/configparser.c"
7525 break;
7526
7527 case 723: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */
7528 #line 3847 "util/configparser.y"
7529 {
7530 OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7531 if(atoi((yyvsp[0].str)) == 0) {
7532 yyerror("number expected");
7533 } else {
7534 cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7535 if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7536 yyerror("must be a power of 2");
7537 }
7538 free((yyvsp[0].str));
7539 }
7540 #line 7541 "util/configparser.c"
7541 break;
7542
7543 case 724: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */
7544 #line 3860 "util/configparser.y"
7545 {
7546 OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7547 if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7548 yyerror("memory size expected");
7549 free((yyvsp[0].str));
7550 }
7551 #line 7552 "util/configparser.c"
7552 break;
7553
7554 case 725: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */
7555 #line 3868 "util/configparser.y"
7556 {
7557 OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7558 if(atoi((yyvsp[0].str)) == 0) {
7559 yyerror("number expected");
7560 } else {
7561 cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7562 if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7563 yyerror("must be a power of 2");
7564 }
7565 free((yyvsp[0].str));
7566 }
7567 #line 7568 "util/configparser.c"
7568 break;
7569
7570 case 726: /* cachedbstart: VAR_CACHEDB */
7571 #line 3881 "util/configparser.y"
7572 {
7573 OUTYY(("\nP(cachedb:)\n"));
7574 cfg_parser->started_toplevel = 1;
7575 }
7576 #line 7577 "util/configparser.c"
7577 break;
7578
7579 case 750: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */
7580 #line 3901 "util/configparser.y"
7581 {
7582 #ifdef USE_CACHEDB
7583 OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7584 free(cfg_parser->cfg->cachedb_backend);
7585 cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7586 #else
7587 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7588 free((yyvsp[0].str));
7589 #endif
7590 }
7591 #line 7592 "util/configparser.c"
7592 break;
7593
7594 case 751: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */
7595 #line 3913 "util/configparser.y"
7596 {
7597 #ifdef USE_CACHEDB
7598 OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7599 free(cfg_parser->cfg->cachedb_secret);
7600 cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7601 #else
7602 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7603 free((yyvsp[0].str));
7604 #endif
7605 }
7606 #line 7607 "util/configparser.c"
7607 break;
7608
7609 case 752: /* cachedb_no_store: VAR_CACHEDB_NO_STORE STRING_ARG */
7610 #line 3925 "util/configparser.y"
7611 {
7612 #ifdef USE_CACHEDB
7613 OUTYY(("P(cachedb_no_store:%s)\n", (yyvsp[0].str)));
7614 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7615 yyerror("expected yes or no.");
7616 else cfg_parser->cfg->cachedb_no_store = (strcmp((yyvsp[0].str), "yes")==0);
7617 #else
7618 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7619 #endif
7620 free((yyvsp[0].str));
7621 }
7622 #line 7623 "util/configparser.c"
7623 break;
7624
7625 case 753: /* cachedb_check_when_serve_expired: VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED STRING_ARG */
7626 #line 3938 "util/configparser.y"
7627 {
7628 #ifdef USE_CACHEDB
7629 OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", (yyvsp[0].str)));
7630 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7631 yyerror("expected yes or no.");
7632 else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
7633 #else
7634 OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7635 #endif
7636 free((yyvsp[0].str));
7637 }
7638 #line 7639 "util/configparser.c"
7639 break;
7640
7641 case 754: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */
7642 #line 3951 "util/configparser.y"
7643 {
7644 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7645 OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7646 free(cfg_parser->cfg->redis_server_host);
7647 cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7648 #else
7649 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7650 free((yyvsp[0].str));
7651 #endif
7652 }
7653 #line 7654 "util/configparser.c"
7654 break;
7655
7656 case 755: /* redis_replica_server_host: VAR_CACHEDB_REDISREPLICAHOST STRING_ARG */
7657 #line 3963 "util/configparser.y"
7658 {
7659 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7660 OUTYY(("P(redis_replica_server_host:%s)\n", (yyvsp[0].str)));
7661 free(cfg_parser->cfg->redis_replica_server_host);
7662 cfg_parser->cfg->redis_replica_server_host = (yyvsp[0].str);
7663 #else
7664 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7665 free((yyvsp[0].str));
7666 #endif
7667 }
7668 #line 7669 "util/configparser.c"
7669 break;
7670
7671 case 756: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */
7672 #line 3975 "util/configparser.y"
7673 {
7674 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7675 int port;
7676 OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7677 port = atoi((yyvsp[0].str));
7678 if(port == 0 || port < 0 || port > 65535)
7679 yyerror("valid redis server port number expected");
7680 else cfg_parser->cfg->redis_server_port = port;
7681 #else
7682 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7683 #endif
7684 free((yyvsp[0].str));
7685 }
7686 #line 7687 "util/configparser.c"
7687 break;
7688
7689 case 757: /* redis_replica_server_port: VAR_CACHEDB_REDISREPLICAPORT STRING_ARG */
7690 #line 3990 "util/configparser.y"
7691 {
7692 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7693 int port;
7694 OUTYY(("P(redis_replica_server_port:%s)\n", (yyvsp[0].str)));
7695 port = atoi((yyvsp[0].str));
7696 if(port == 0 || port < 0 || port > 65535)
7697 yyerror("valid redis server port number expected");
7698 else cfg_parser->cfg->redis_replica_server_port = port;
7699 #else
7700 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7701 #endif
7702 free((yyvsp[0].str));
7703 }
7704 #line 7705 "util/configparser.c"
7705 break;
7706
7707 case 758: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG */
7708 #line 4005 "util/configparser.y"
7709 {
7710 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7711 OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7712 free(cfg_parser->cfg->redis_server_path);
7713 cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7714 #else
7715 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7716 free((yyvsp[0].str));
7717 #endif
7718 }
7719 #line 7720 "util/configparser.c"
7720 break;
7721
7722 case 759: /* redis_replica_server_path: VAR_CACHEDB_REDISREPLICAPATH STRING_ARG */
7723 #line 4017 "util/configparser.y"
7724 {
7725 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7726 OUTYY(("P(redis_replica_server_path:%s)\n", (yyvsp[0].str)));
7727 free(cfg_parser->cfg->redis_replica_server_path);
7728 cfg_parser->cfg->redis_replica_server_path = (yyvsp[0].str);
7729 #else
7730 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7731 free((yyvsp[0].str));
7732 #endif
7733 }
7734 #line 7735 "util/configparser.c"
7735 break;
7736
7737 case 760: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG */
7738 #line 4029 "util/configparser.y"
7739 {
7740 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7741 OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7742 free(cfg_parser->cfg->redis_server_password);
7743 cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7744 #else
7745 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7746 free((yyvsp[0].str));
7747 #endif
7748 }
7749 #line 7750 "util/configparser.c"
7750 break;
7751
7752 case 761: /* redis_replica_server_password: VAR_CACHEDB_REDISREPLICAPASSWORD STRING_ARG */
7753 #line 4041 "util/configparser.y"
7754 {
7755 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7756 OUTYY(("P(redis_replica_server_password:%s)\n", (yyvsp[0].str)));
7757 free(cfg_parser->cfg->redis_replica_server_password);
7758 cfg_parser->cfg->redis_replica_server_password = (yyvsp[0].str);
7759 #else
7760 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7761 free((yyvsp[0].str));
7762 #endif
7763 }
7764 #line 7765 "util/configparser.c"
7765 break;
7766
7767 case 762: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */
7768 #line 4053 "util/configparser.y"
7769 {
7770 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7771 OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7772 if(atoi((yyvsp[0].str)) == 0)
7773 yyerror("redis timeout value expected");
7774 else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7775 #else
7776 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7777 #endif
7778 free((yyvsp[0].str));
7779 }
7780 #line 7781 "util/configparser.c"
7781 break;
7782
7783 case 763: /* redis_replica_timeout: VAR_CACHEDB_REDISREPLICATIMEOUT STRING_ARG */
7784 #line 4066 "util/configparser.y"
7785 {
7786 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7787 OUTYY(("P(redis_replica_timeout:%s)\n", (yyvsp[0].str)));
7788 if(atoi((yyvsp[0].str)) == 0)
7789 yyerror("redis timeout value expected");
7790 else cfg_parser->cfg->redis_replica_timeout = atoi((yyvsp[0].str));
7791 #else
7792 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7793 #endif
7794 free((yyvsp[0].str));
7795 }
7796 #line 7797 "util/configparser.c"
7797 break;
7798
7799 case 764: /* redis_command_timeout: VAR_CACHEDB_REDISCOMMANDTIMEOUT STRING_ARG */
7800 #line 4079 "util/configparser.y"
7801 {
7802 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7803 OUTYY(("P(redis_command_timeout:%s)\n", (yyvsp[0].str)));
7804 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7805 yyerror("redis command timeout value expected");
7806 else cfg_parser->cfg->redis_command_timeout = atoi((yyvsp[0].str));
7807 #else
7808 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7809 #endif
7810 free((yyvsp[0].str));
7811 }
7812 #line 7813 "util/configparser.c"
7813 break;
7814
7815 case 765: /* redis_replica_command_timeout: VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT STRING_ARG */
7816 #line 4092 "util/configparser.y"
7817 {
7818 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7819 OUTYY(("P(redis_replica_command_timeout:%s)\n", (yyvsp[0].str)));
7820 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7821 yyerror("redis command timeout value expected");
7822 else cfg_parser->cfg->redis_replica_command_timeout = atoi((yyvsp[0].str));
7823 #else
7824 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7825 #endif
7826 free((yyvsp[0].str));
7827 }
7828 #line 7829 "util/configparser.c"
7829 break;
7830
7831 case 766: /* redis_connect_timeout: VAR_CACHEDB_REDISCONNECTTIMEOUT STRING_ARG */
7832 #line 4105 "util/configparser.y"
7833 {
7834 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7835 OUTYY(("P(redis_connect_timeout:%s)\n", (yyvsp[0].str)));
7836 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7837 yyerror("redis connect timeout value expected");
7838 else cfg_parser->cfg->redis_connect_timeout = atoi((yyvsp[0].str));
7839 #else
7840 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7841 #endif
7842 free((yyvsp[0].str));
7843 }
7844 #line 7845 "util/configparser.c"
7845 break;
7846
7847 case 767: /* redis_replica_connect_timeout: VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT STRING_ARG */
7848 #line 4118 "util/configparser.y"
7849 {
7850 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7851 OUTYY(("P(redis_replica_connect_timeout:%s)\n", (yyvsp[0].str)));
7852 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7853 yyerror("redis connect timeout value expected");
7854 else cfg_parser->cfg->redis_replica_connect_timeout = atoi((yyvsp[0].str));
7855 #else
7856 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7857 #endif
7858 free((yyvsp[0].str));
7859 }
7860 #line 7861 "util/configparser.c"
7861 break;
7862
7863 case 768: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */
7864 #line 4131 "util/configparser.y"
7865 {
7866 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7867 OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7868 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7869 yyerror("expected yes or no.");
7870 else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7871 #else
7872 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7873 #endif
7874 free((yyvsp[0].str));
7875 }
7876 #line 7877 "util/configparser.c"
7877 break;
7878
7879 case 769: /* redis_logical_db: VAR_CACHEDB_REDISLOGICALDB STRING_ARG */
7880 #line 4144 "util/configparser.y"
7881 {
7882 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7883 int db;
7884 OUTYY(("P(redis_logical_db:%s)\n", (yyvsp[0].str)));
7885 db = atoi((yyvsp[0].str));
7886 if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7887 yyerror("valid redis logical database index expected");
7888 else cfg_parser->cfg->redis_logical_db = db;
7889 #else
7890 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7891 #endif
7892 free((yyvsp[0].str));
7893 }
7894 #line 7895 "util/configparser.c"
7895 break;
7896
7897 case 770: /* redis_replica_logical_db: VAR_CACHEDB_REDISREPLICALOGICALDB STRING_ARG */
7898 #line 4159 "util/configparser.y"
7899 {
7900 #if defined(USE_CACHEDB) && defined(USE_REDIS)
7901 int db;
7902 OUTYY(("P(redis_replica_logical_db:%s)\n", (yyvsp[0].str)));
7903 db = atoi((yyvsp[0].str));
7904 if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7905 yyerror("valid redis logical database index expected");
7906 else cfg_parser->cfg->redis_replica_logical_db = db;
7907 #else
7908 OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7909 #endif
7910 free((yyvsp[0].str));
7911 }
7912 #line 7913 "util/configparser.c"
7913 break;
7914
7915 case 771: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */
7916 #line 4174 "util/configparser.y"
7917 {
7918 OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7919 if (atoi((yyvsp[0].str)) < 0)
7920 yyerror("positive number expected");
7921 else {
7922 if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7923 fatal_exit("out of memory adding tcp connection limit");
7924 }
7925 }
7926 #line 7927 "util/configparser.c"
7927 break;
7928
7929 case 772: /* server_answer_cookie: VAR_ANSWER_COOKIE STRING_ARG */
7930 #line 4185 "util/configparser.y"
7931 {
7932 OUTYY(("P(server_answer_cookie:%s)\n", (yyvsp[0].str)));
7933 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7934 yyerror("expected yes or no.");
7935 else cfg_parser->cfg->do_answer_cookie = (strcmp((yyvsp[0].str), "yes")==0);
7936 free((yyvsp[0].str));
7937 }
7938 #line 7939 "util/configparser.c"
7939 break;
7940
7941 case 773: /* server_cookie_secret: VAR_COOKIE_SECRET STRING_ARG */
7942 #line 4194 "util/configparser.y"
7943 {
7944 uint8_t secret[32];
7945 size_t secret_len = sizeof(secret);
7946
7947 OUTYY(("P(server_cookie_secret:%s)\n", (yyvsp[0].str)));
7948 if(sldns_str2wire_hex_buf((yyvsp[0].str), secret, &secret_len)
7949 || (secret_len != 16))
7950 yyerror("expected 128 bit hex string");
7951 else {
7952 cfg_parser->cfg->cookie_secret_len = secret_len;
7953 memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
7954 }
7955 free((yyvsp[0].str));
7956 }
7957 #line 7958 "util/configparser.c"
7958 break;
7959
7960 case 774: /* server_cookie_secret_file: VAR_COOKIE_SECRET_FILE STRING_ARG */
7961 #line 4210 "util/configparser.y"
7962 {
7963 OUTYY(("P(cookie_secret_file:%s)\n", (yyvsp[0].str)));
7964 free(cfg_parser->cfg->cookie_secret_file);
7965 cfg_parser->cfg->cookie_secret_file = (yyvsp[0].str);
7966 }
7967 #line 7968 "util/configparser.c"
7968 break;
7969
7970 case 775: /* server_iter_scrub_ns: VAR_ITER_SCRUB_NS STRING_ARG */
7971 #line 4217 "util/configparser.y"
7972 {
7973 OUTYY(("P(server_iter_scrub_ns:%s)\n", (yyvsp[0].str)));
7974 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7975 yyerror("number expected");
7976 else cfg_parser->cfg->iter_scrub_ns = atoi((yyvsp[0].str));
7977 free((yyvsp[0].str));
7978 }
7979 #line 7980 "util/configparser.c"
7980 break;
7981
7982 case 776: /* server_iter_scrub_cname: VAR_ITER_SCRUB_CNAME STRING_ARG */
7983 #line 4226 "util/configparser.y"
7984 {
7985 OUTYY(("P(server_iter_scrub_cname:%s)\n", (yyvsp[0].str)));
7986 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7987 yyerror("number expected");
7988 else cfg_parser->cfg->iter_scrub_cname = atoi((yyvsp[0].str));
7989 free((yyvsp[0].str));
7990 }
7991 #line 7992 "util/configparser.c"
7992 break;
7993
7994 case 777: /* server_max_global_quota: VAR_MAX_GLOBAL_QUOTA STRING_ARG */
7995 #line 4235 "util/configparser.y"
7996 {
7997 OUTYY(("P(server_max_global_quota:%s)\n", (yyvsp[0].str)));
7998 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7999 yyerror("number expected");
8000 else cfg_parser->cfg->max_global_quota = atoi((yyvsp[0].str));
8001 free((yyvsp[0].str));
8002 }
8003 #line 8004 "util/configparser.c"
8004 break;
8005
8006 case 778: /* ipsetstart: VAR_IPSET */
8007 #line 4244 "util/configparser.y"
8008 {
8009 OUTYY(("\nP(ipset:)\n"));
8010 cfg_parser->started_toplevel = 1;
8011 }
8012 #line 8013 "util/configparser.c"
8013 break;
8014
8015 case 783: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */
8016 #line 4254 "util/configparser.y"
8017 {
8018 #ifdef USE_IPSET
8019 OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
8020 if(cfg_parser->cfg->ipset_name_v4)
8021 yyerror("ipset name v4 override, there must be one "
8022 "name for ip v4");
8023 free(cfg_parser->cfg->ipset_name_v4);
8024 cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
8025 #else
8026 OUTYY(("P(Compiled without ipset, ignoring)\n"));
8027 free((yyvsp[0].str));
8028 #endif
8029 }
8030 #line 8031 "util/configparser.c"
8031 break;
8032
8033 case 784: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */
8034 #line 4269 "util/configparser.y"
8035 {
8036 #ifdef USE_IPSET
8037 OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
8038 if(cfg_parser->cfg->ipset_name_v6)
8039 yyerror("ipset name v6 override, there must be one "
8040 "name for ip v6");
8041 free(cfg_parser->cfg->ipset_name_v6);
8042 cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
8043 #else
8044 OUTYY(("P(Compiled without ipset, ignoring)\n"));
8045 free((yyvsp[0].str));
8046 #endif
8047 }
8048 #line 8049 "util/configparser.c"
8049 break;
8050
8051
8052 #line 8053 "util/configparser.c"
8053
8054 default: break;
8055 }
8056 /* User semantic actions sometimes alter yychar, and that requires
8057 that yytoken be updated with the new translation. We take the
8058 approach of translating immediately before every use of yytoken.
8059 One alternative is translating here after every semantic action,
8060 but that translation would be missed if the semantic action invokes
8061 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8062 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
8063 incorrect destructor might then be invoked immediately. In the
8064 case of YYERROR or YYBACKUP, subsequent parser actions might lead
8065 to an incorrect destructor call or verbose syntax error message
8066 before the lookahead is translated. */
8067 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
8068
8069 YYPOPSTACK (yylen);
8070 yylen = 0;
8071
8072 *++yyvsp = yyval;
8073
8074 /* Now 'shift' the result of the reduction. Determine what state
8075 that goes to, based on the state we popped back to and the rule
8076 number reduced by. */
8077 {
8078 const int yylhs = yyr1[yyn] - YYNTOKENS;
8079 const int yyi = yypgoto[yylhs] + *yyssp;
8080 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
8081 ? yytable[yyi]
8082 : yydefgoto[yylhs]);
8083 }
8084
8085 goto yynewstate;
8086
8087
8088 /*--------------------------------------.
8089 | yyerrlab -- here on detecting error. |
8090 `--------------------------------------*/
8091 yyerrlab:
8092 /* Make sure we have latest lookahead translation. See comments at
8093 user semantic actions for why this is necessary. */
8094 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
8095 /* If not already recovering from an error, report this error. */
8096 if (!yyerrstatus)
8097 {
8098 ++yynerrs;
8099 yyerror (YY_("syntax error"));
8100 }
8101
8102 if (yyerrstatus == 3)
8103 {
8104 /* If just tried and failed to reuse lookahead token after an
8105 error, discard it. */
8106
8107 if (yychar <= YYEOF)
8108 {
8109 /* Return failure if at end of input. */
8110 if (yychar == YYEOF)
8111 YYABORT;
8112 }
8113 else
8114 {
8115 yydestruct ("Error: discarding",
8116 yytoken, &yylval);
8117 yychar = YYEMPTY;
8118 }
8119 }
8120
8121 /* Else will try to reuse lookahead token after shifting the error
8122 token. */
8123 goto yyerrlab1;
8124
8125
8126 /*---------------------------------------------------.
8127 | yyerrorlab -- error raised explicitly by YYERROR. |
8128 `---------------------------------------------------*/
8129 yyerrorlab:
8130 /* Pacify compilers when the user code never invokes YYERROR and the
8131 label yyerrorlab therefore never appears in user code. */
8132 if (0)
8133 YYERROR;
8134
8135 /* Do not reclaim the symbols of the rule whose action triggered
8136 this YYERROR. */
8137 YYPOPSTACK (yylen);
8138 yylen = 0;
8139 YY_STACK_PRINT (yyss, yyssp);
8140 yystate = *yyssp;
8141 goto yyerrlab1;
8142
8143
8144 /*-------------------------------------------------------------.
8145 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8146 `-------------------------------------------------------------*/
8147 yyerrlab1:
8148 yyerrstatus = 3; /* Each real token shifted decrements this. */
8149
8150 /* Pop stack until we find a state that shifts the error token. */
8151 for (;;)
8152 {
8153 yyn = yypact[yystate];
8154 if (!yypact_value_is_default (yyn))
8155 {
8156 yyn += YYSYMBOL_YYerror;
8157 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
8158 {
8159 yyn = yytable[yyn];
8160 if (0 < yyn)
8161 break;
8162 }
8163 }
8164
8165 /* Pop the current state because it cannot handle the error token. */
8166 if (yyssp == yyss)
8167 YYABORT;
8168
8169
8170 yydestruct ("Error: popping",
8171 YY_ACCESSING_SYMBOL (yystate), yyvsp);
8172 YYPOPSTACK (1);
8173 yystate = *yyssp;
8174 YY_STACK_PRINT (yyss, yyssp);
8175 }
8176
8177 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8178 *++yyvsp = yylval;
8179 YY_IGNORE_MAYBE_UNINITIALIZED_END
8180
8181
8182 /* Shift the error token. */
8183 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
8184
8185 yystate = yyn;
8186 goto yynewstate;
8187
8188
8189 /*-------------------------------------.
8190 | yyacceptlab -- YYACCEPT comes here. |
8191 `-------------------------------------*/
8192 yyacceptlab:
8193 yyresult = 0;
8194 goto yyreturn;
8195
8196
8197 /*-----------------------------------.
8198 | yyabortlab -- YYABORT comes here. |
8199 `-----------------------------------*/
8200 yyabortlab:
8201 yyresult = 1;
8202 goto yyreturn;
8203
8204
8205 #if !defined yyoverflow
8206 /*-------------------------------------------------.
8207 | yyexhaustedlab -- memory exhaustion comes here. |
8208 `-------------------------------------------------*/
8209 yyexhaustedlab:
8210 yyerror (YY_("memory exhausted"));
8211 yyresult = 2;
8212 goto yyreturn;
8213 #endif
8214
8215
8216 /*-------------------------------------------------------.
8217 | yyreturn -- parsing is finished, clean up and return. |
8218 `-------------------------------------------------------*/
8219 yyreturn:
8220 if (yychar != YYEMPTY)
8221 {
8222 /* Make sure we have latest lookahead translation. See comments at
8223 user semantic actions for why this is necessary. */
8224 yytoken = YYTRANSLATE (yychar);
8225 yydestruct ("Cleanup: discarding lookahead",
8226 yytoken, &yylval);
8227 }
8228 /* Do not reclaim the symbols of the rule whose action triggered
8229 this YYABORT or YYACCEPT. */
8230 YYPOPSTACK (yylen);
8231 YY_STACK_PRINT (yyss, yyssp);
8232 while (yyssp != yyss)
8233 {
8234 yydestruct ("Cleanup: popping",
8235 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
8236 YYPOPSTACK (1);
8237 }
8238 #ifndef yyoverflow
8239 if (yyss != yyssa)
8240 YYSTACK_FREE (yyss);
8241 #endif
8242
8243 return yyresult;
8244 }
8245
8246 #line 4283 "util/configparser.y"
8247
8248
8249 /* parse helper routines could be here */
8250 static void
validate_respip_action(const char * action)8251 validate_respip_action(const char* action)
8252 {
8253 if(strcmp(action, "deny")!=0 &&
8254 strcmp(action, "redirect")!=0 &&
8255 strcmp(action, "inform")!=0 &&
8256 strcmp(action, "inform_deny")!=0 &&
8257 strcmp(action, "always_transparent")!=0 &&
8258 strcmp(action, "always_refuse")!=0 &&
8259 strcmp(action, "always_nxdomain")!=0)
8260 {
8261 yyerror("response-ip action: expected deny, redirect, "
8262 "inform, inform_deny, always_transparent, "
8263 "always_refuse or always_nxdomain");
8264 }
8265 }
8266
8267 static void
validate_acl_action(const char * action)8268 validate_acl_action(const char* action)
8269 {
8270 if(strcmp(action, "deny")!=0 &&
8271 strcmp(action, "refuse")!=0 &&
8272 strcmp(action, "deny_non_local")!=0 &&
8273 strcmp(action, "refuse_non_local")!=0 &&
8274 strcmp(action, "allow_setrd")!=0 &&
8275 strcmp(action, "allow")!=0 &&
8276 strcmp(action, "allow_snoop")!=0 &&
8277 strcmp(action, "allow_cookie")!=0)
8278 {
8279 yyerror("expected deny, refuse, deny_non_local, "
8280 "refuse_non_local, allow, allow_setrd, "
8281 "allow_snoop or allow_cookie as access control action");
8282 }
8283 }
8284