2 static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
10 #define yyclearin (yychar = YYEMPTY)
11 #define yyerrok (yyerrflag = 0)
12 #define YYRECOVERING() (yyerrflag != 0)
18 #line 39 "util/configparser.y"
27 #include "util/configyyrename.h"
28 #include "util/config_file.h"
29 #include "util/net_help.h"
32 void ub_c_error(const char *message);
34 /* these need to be global, otherwise they cannot be used inside yacc */
35 extern struct config_parser_state* cfg_parser;
38 #define OUTYY(s) printf s /* used ONLY when debugging */
43 #line 64 "util/configparser.y"
45 #undef YYSTYPE_IS_DECLARED
46 #define YYSTYPE_IS_DECLARED 1
48 #ifndef YYSTYPE_IS_DECLARED
49 #define YYSTYPE_IS_DECLARED 1
53 #endif /* !YYSTYPE_IS_DECLARED */
54 #line 54 "util/configparser.c"
56 /* compatibility with bison */
58 /* compatibility with FreeBSD */
59 # ifdef YYPARSE_PARAM_TYPE
60 # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
62 # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
65 # define YYPARSE_DECL() yyparse(void)
68 /* Parameters sent to lex. */
70 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
71 # define YYLEX yylex(YYLEX_PARAM)
73 # define YYLEX_DECL() yylex(void)
74 # define YYLEX yylex()
77 /* Parameters sent to yyerror. */
79 #define YYERROR_DECL() yyerror(const char *s)
82 #define YYERROR_CALL(msg) yyerror(msg)
85 extern int YYPARSE_DECL();
94 #define STRING_ARG 264
95 #define VAR_SERVER 265
96 #define VAR_VERBOSITY 266
97 #define VAR_NUM_THREADS 267
99 #define VAR_OUTGOING_RANGE 269
100 #define VAR_INTERFACE 270
101 #define VAR_DO_IP4 271
102 #define VAR_DO_IP6 272
103 #define VAR_DO_UDP 273
104 #define VAR_DO_TCP 274
105 #define VAR_CHROOT 275
106 #define VAR_USERNAME 276
107 #define VAR_DIRECTORY 277
108 #define VAR_LOGFILE 278
109 #define VAR_PIDFILE 279
110 #define VAR_MSG_CACHE_SIZE 280
111 #define VAR_MSG_CACHE_SLABS 281
112 #define VAR_NUM_QUERIES_PER_THREAD 282
113 #define VAR_RRSET_CACHE_SIZE 283
114 #define VAR_RRSET_CACHE_SLABS 284
115 #define VAR_OUTGOING_NUM_TCP 285
116 #define VAR_INFRA_HOST_TTL 286
117 #define VAR_INFRA_LAME_TTL 287
118 #define VAR_INFRA_CACHE_SLABS 288
119 #define VAR_INFRA_CACHE_NUMHOSTS 289
120 #define VAR_INFRA_CACHE_LAME_SIZE 290
122 #define VAR_STUB_ZONE 292
123 #define VAR_STUB_HOST 293
124 #define VAR_STUB_ADDR 294
125 #define VAR_TARGET_FETCH_POLICY 295
126 #define VAR_HARDEN_SHORT_BUFSIZE 296
127 #define VAR_HARDEN_LARGE_QUERIES 297
128 #define VAR_FORWARD_ZONE 298
129 #define VAR_FORWARD_HOST 299
130 #define VAR_FORWARD_ADDR 300
131 #define VAR_DO_NOT_QUERY_ADDRESS 301
132 #define VAR_HIDE_IDENTITY 302
133 #define VAR_HIDE_VERSION 303
134 #define VAR_IDENTITY 304
135 #define VAR_VERSION 305
136 #define VAR_HARDEN_GLUE 306
137 #define VAR_MODULE_CONF 307
138 #define VAR_TRUST_ANCHOR_FILE 308
139 #define VAR_TRUST_ANCHOR 309
140 #define VAR_VAL_OVERRIDE_DATE 310
141 #define VAR_BOGUS_TTL 311
142 #define VAR_VAL_CLEAN_ADDITIONAL 312
143 #define VAR_VAL_PERMISSIVE_MODE 313
144 #define VAR_INCOMING_NUM_TCP 314
145 #define VAR_MSG_BUFFER_SIZE 315
146 #define VAR_KEY_CACHE_SIZE 316
147 #define VAR_KEY_CACHE_SLABS 317
148 #define VAR_TRUSTED_KEYS_FILE 318
149 #define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 319
150 #define VAR_USE_SYSLOG 320
151 #define VAR_OUTGOING_INTERFACE 321
152 #define VAR_ROOT_HINTS 322
153 #define VAR_DO_NOT_QUERY_LOCALHOST 323
154 #define VAR_CACHE_MAX_TTL 324
155 #define VAR_HARDEN_DNSSEC_STRIPPED 325
156 #define VAR_ACCESS_CONTROL 326
157 #define VAR_LOCAL_ZONE 327
158 #define VAR_LOCAL_DATA 328
159 #define VAR_INTERFACE_AUTOMATIC 329
160 #define VAR_STATISTICS_INTERVAL 330
161 #define VAR_DO_DAEMONIZE 331
162 #define VAR_USE_CAPS_FOR_ID 332
163 #define VAR_STATISTICS_CUMULATIVE 333
164 #define VAR_OUTGOING_PORT_PERMIT 334
165 #define VAR_OUTGOING_PORT_AVOID 335
166 #define VAR_DLV_ANCHOR_FILE 336
167 #define VAR_DLV_ANCHOR 337
168 #define VAR_NEG_CACHE_SIZE 338
169 #define VAR_HARDEN_REFERRAL_PATH 339
170 #define VAR_PRIVATE_ADDRESS 340
171 #define VAR_PRIVATE_DOMAIN 341
172 #define VAR_REMOTE_CONTROL 342
173 #define VAR_CONTROL_ENABLE 343
174 #define VAR_CONTROL_INTERFACE 344
175 #define VAR_CONTROL_PORT 345
176 #define VAR_SERVER_KEY_FILE 346
177 #define VAR_SERVER_CERT_FILE 347
178 #define VAR_CONTROL_KEY_FILE 348
179 #define VAR_CONTROL_CERT_FILE 349
180 #define VAR_EXTENDED_STATISTICS 350
181 #define VAR_LOCAL_DATA_PTR 351
182 #define VAR_JOSTLE_TIMEOUT 352
183 #define VAR_STUB_PRIME 353
184 #define VAR_UNWANTED_REPLY_THRESHOLD 354
185 #define VAR_LOG_TIME_ASCII 355
186 #define VAR_DOMAIN_INSECURE 356
187 #define VAR_PYTHON 357
188 #define VAR_PYTHON_SCRIPT 358
189 #define VAR_VAL_SIG_SKEW_MIN 359
190 #define VAR_VAL_SIG_SKEW_MAX 360
191 #define VAR_CACHE_MIN_TTL 361
192 #define VAR_VAL_LOG_LEVEL 362
193 #define VAR_AUTO_TRUST_ANCHOR_FILE 363
194 #define VAR_KEEP_MISSING 364
195 #define VAR_ADD_HOLDDOWN 365
196 #define VAR_DEL_HOLDDOWN 366
197 #define VAR_SO_RCVBUF 367
198 #define VAR_EDNS_BUFFER_SIZE 368
199 #define VAR_PREFETCH 369
200 #define VAR_PREFETCH_KEY 370
201 #define VAR_SO_SNDBUF 371
202 #define VAR_HARDEN_BELOW_NXDOMAIN 372
203 #define VAR_IGNORE_CD_FLAG 373
204 #define VAR_LOG_QUERIES 374
205 #define VAR_TCP_UPSTREAM 375
206 #define VAR_SSL_UPSTREAM 376
207 #define VAR_SSL_SERVICE_KEY 377
208 #define VAR_SSL_SERVICE_PEM 378
209 #define VAR_SSL_PORT 379
210 #define VAR_FORWARD_FIRST 380
211 #define VAR_STUB_FIRST 381
212 #define VAR_MINIMAL_RESPONSES 382
213 #define VAR_RRSET_ROUNDROBIN 383
214 #define YYERRCODE 256
215 static const short yylhs[] = { -1,
216 0, 0, 1, 1, 1, 1, 1, 2, 3, 3,
217 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
218 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
219 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
220 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
221 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
222 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
223 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
224 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
225 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
226 12, 12, 12, 12, 12, 12, 12, 12, 4, 5,
227 5, 111, 111, 111, 111, 111, 6, 7, 7, 117,
228 117, 117, 117, 13, 14, 70, 73, 82, 15, 21,
229 61, 16, 74, 75, 32, 54, 69, 17, 18, 19,
230 20, 104, 105, 106, 107, 108, 71, 60, 86, 103,
231 22, 23, 24, 25, 26, 62, 76, 77, 92, 48,
232 58, 49, 87, 42, 43, 44, 45, 96, 100, 97,
233 55, 27, 28, 29, 84, 30, 31, 33, 34, 36,
234 37, 35, 38, 39, 40, 46, 65, 101, 79, 72,
235 80, 81, 98, 99, 85, 41, 63, 66, 47, 50,
236 88, 89, 64, 90, 51, 52, 53, 102, 91, 59,
237 93, 94, 95, 56, 57, 78, 67, 68, 83, 109,
238 110, 112, 113, 114, 116, 115, 118, 119, 120, 121,
239 10, 11, 11, 122, 122, 122, 122, 122, 122, 122,
240 123, 125, 124, 126, 127, 128, 129, 8, 9, 9,
243 static const short yylen[] = { 2,
244 0, 2, 2, 2, 2, 2, 2, 1, 2, 0,
245 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
246 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
247 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
248 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
249 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
250 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
251 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
252 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
253 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
254 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
255 0, 1, 1, 1, 1, 1, 1, 2, 0, 1,
256 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
257 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
258 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
260 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
263 2, 2, 2, 2, 2, 2, 2, 3, 2, 2,
264 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
265 2, 2, 2, 2, 2, 2, 3, 2, 2, 2,
266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
267 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
268 2, 2, 2, 2, 2, 2, 2, 1, 2, 0,
271 static const short yydefred[] = { 1,
272 0, 8, 109, 117, 231, 248, 2, 10, 111, 119,
273 250, 233, 0, 0, 0, 0, 0, 0, 0, 0,
274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 9, 11, 12, 13, 14,
284 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
285 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
286 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
287 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
288 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
289 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
290 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
291 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
292 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
293 105, 106, 107, 108, 0, 0, 0, 0, 0, 110,
294 112, 113, 114, 115, 116, 0, 0, 0, 0, 118,
295 120, 121, 122, 123, 0, 249, 251, 0, 0, 0,
296 0, 0, 0, 0, 232, 234, 235, 236, 237, 238,
297 239, 240, 125, 124, 129, 132, 130, 138, 139, 140,
298 141, 151, 152, 153, 154, 155, 172, 173, 174, 176,
299 177, 135, 178, 179, 182, 180, 181, 183, 184, 185,
300 196, 164, 165, 166, 167, 186, 199, 160, 162, 200,
301 205, 206, 207, 136, 171, 214, 215, 161, 210, 148,
302 131, 156, 197, 203, 187, 0, 0, 218, 137, 126,
303 147, 190, 127, 133, 134, 157, 158, 216, 189, 191,
304 192, 128, 219, 175, 195, 149, 163, 201, 202, 204,
305 209, 159, 213, 211, 212, 168, 170, 193, 194, 169,
306 188, 208, 150, 142, 143, 144, 145, 146, 220, 221,
307 222, 223, 224, 226, 225, 227, 228, 229, 230, 252,
308 241, 243, 242, 244, 245, 246, 247, 198, 217,
310 static const short yydgoto[] = { 1,
311 7, 8, 13, 9, 14, 10, 15, 11, 16, 12,
312 17, 116, 117, 118, 119, 120, 121, 122, 123, 124,
313 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
314 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
315 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
316 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
317 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
318 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
319 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
320 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
321 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
322 220, 221, 222, 223, 224, 225, 230, 231, 232, 233,
323 234, 245, 246, 247, 248, 249, 250, 251, 252, 236,
326 static const short yysindex[] = { 0,
327 -172, 0, 0, 0, 0, 0, 0, 0, 0, 0,
328 0, 0, -260, -209, -202, -358, -216, -233, -232, -231,
329 -230, -226, -225, -224, -181, -178, -177, -176, -143, -140,
330 -139, -130, -129, -128, -127, -126, -125, -124, -123, -122,
331 -121, -119, -118, -117, -116, -115, -114, -113, -112, -111,
332 -110, -109, -108, -107, -106, -105, -104, -103, -102, -101,
333 -100, -99, -98, -97, -96, -95, -93, -91, -90, -89,
334 -88, -87, -85, -84, -83, -82, -81, -80, -78, -77,
335 -76, -75, -74, -73, -72, -71, -70, -69, -68, -67,
336 -66, -65, -64, -63, -62, -61, -60, -59, -58, -57,
337 -56, -55, -54, -53, -52, -51, -50, -49, -48, -47,
338 -46, -45, -44, -43, -42, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, -41, -40, -39, -38, -37, 0,
349 0, 0, 0, 0, 0, -36, -35, -34, -33, 0,
350 0, 0, 0, 0, -32, 0, 0, -31, -30, -29,
351 -28, -27, -26, -25, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
357 0, 0, 0, 0, 0, -24, -23, 0, 0, 0,
358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0, 0, 0, 0, 0,
365 static const short yyrindex[] = { 0,
366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
367 0, 0, 1, 2, 3, 4, 5, 0, 0, 0,
368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
402 0, 0, 0, 0, 0, 0, 0, 0, 0,
404 static const short yygindex[] = { 0,
405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420 #define YYTABLESIZE 362
421 static const short yytable[] = { 235,
422 3, 4, 5, 6, 7, 18, 19, 20, 21, 22,
423 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
424 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
425 253, 254, 255, 256, 43, 44, 45, 257, 258, 259,
426 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
427 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
428 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
429 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
430 86, 215, 260, 216, 217, 261, 262, 263, 226, 87,
431 88, 89, 2, 90, 91, 92, 227, 228, 93, 94,
432 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
433 105, 106, 107, 108, 109, 110, 111, 112, 113, 3,
434 264, 114, 115, 265, 266, 4, 238, 239, 240, 241,
435 242, 243, 244, 267, 268, 269, 270, 271, 272, 273,
436 274, 275, 276, 218, 277, 278, 279, 280, 281, 282,
437 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
438 293, 294, 295, 296, 297, 298, 299, 300, 301, 5,
439 302, 219, 303, 304, 305, 306, 307, 229, 308, 309,
440 310, 311, 312, 313, 6, 314, 315, 316, 317, 318,
441 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
442 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
443 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
444 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
445 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
446 369, 0, 0, 0, 0, 0, 0, 0, 0, 0,
447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
448 0, 0, 0, 0, 0, 3, 4, 5, 6, 7,
449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
451 0, 0, 3, 4, 5, 6, 7, 0, 3, 4,
452 5, 6, 7, 0, 0, 0, 0, 0, 0, 0,
453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
456 0, 0, 3, 4, 5, 6, 7, 0, 0, 0,
457 0, 0, 0, 0, 0, 0, 0, 3, 4, 5,
460 static const short yycheck[] = { 358,
461 0, 0, 0, 0, 0, 266, 267, 268, 269, 270,
462 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
463 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
464 264, 264, 264, 264, 295, 296, 297, 264, 264, 264,
465 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
466 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
467 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
468 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
469 341, 291, 264, 293, 294, 264, 264, 264, 291, 350,
470 351, 352, 265, 354, 355, 356, 299, 300, 359, 360,
471 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
472 371, 372, 373, 374, 375, 376, 377, 378, 379, 292,
473 264, 382, 383, 264, 264, 298, 343, 344, 345, 346,
474 347, 348, 349, 264, 264, 264, 264, 264, 264, 264,
475 264, 264, 264, 353, 264, 264, 264, 264, 264, 264,
476 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
477 264, 264, 264, 264, 264, 264, 264, 264, 264, 342,
478 264, 381, 264, 264, 264, 264, 264, 380, 264, 264,
479 264, 264, 264, 264, 357, 264, 264, 264, 264, 264,
480 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
481 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
482 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
483 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
484 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
485 264, -1, -1, -1, -1, -1, -1, -1, -1, -1,
486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
487 -1, -1, -1, -1, -1, 265, 265, 265, 265, 265,
488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
490 -1, -1, 292, 292, 292, 292, 292, -1, 298, 298,
491 298, 298, 298, -1, -1, -1, -1, -1, -1, -1,
492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
495 -1, -1, 342, 342, 342, 342, 342, -1, -1, -1,
496 -1, -1, -1, -1, -1, -1, -1, 357, 357, 357,
503 #define YYMAXTOKEN 383
505 static const char *yyname[] = {
507 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
508 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
509 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
510 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
511 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
512 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
513 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE",
514 "COMMENT","COLON","ANY","ZONESTR","STRING_ARG","VAR_SERVER","VAR_VERBOSITY",
515 "VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE","VAR_INTERFACE","VAR_DO_IP4",
516 "VAR_DO_IP6","VAR_DO_UDP","VAR_DO_TCP","VAR_CHROOT","VAR_USERNAME",
517 "VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE",
518 "VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE",
519 "VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL",
520 "VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS",
521 "VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST",
522 "VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE",
523 "VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST",
524 "VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY",
525 "VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE",
526 "VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR",
527 "VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL",
528 "VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE",
529 "VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE",
530 "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE",
531 "VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL",
532 "VAR_HARDEN_DNSSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE",
533 "VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL",
534 "VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE",
535 "VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE",
536 "VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH",
537 "VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL",
538 "VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT",
539 "VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE",
540 "VAR_CONTROL_CERT_FILE","VAR_EXTENDED_STATISTICS","VAR_LOCAL_DATA_PTR",
541 "VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME","VAR_UNWANTED_REPLY_THRESHOLD",
542 "VAR_LOG_TIME_ASCII","VAR_DOMAIN_INSECURE","VAR_PYTHON","VAR_PYTHON_SCRIPT",
543 "VAR_VAL_SIG_SKEW_MIN","VAR_VAL_SIG_SKEW_MAX","VAR_CACHE_MIN_TTL",
544 "VAR_VAL_LOG_LEVEL","VAR_AUTO_TRUST_ANCHOR_FILE","VAR_KEEP_MISSING",
545 "VAR_ADD_HOLDDOWN","VAR_DEL_HOLDDOWN","VAR_SO_RCVBUF","VAR_EDNS_BUFFER_SIZE",
546 "VAR_PREFETCH","VAR_PREFETCH_KEY","VAR_SO_SNDBUF","VAR_HARDEN_BELOW_NXDOMAIN",
547 "VAR_IGNORE_CD_FLAG","VAR_LOG_QUERIES","VAR_TCP_UPSTREAM","VAR_SSL_UPSTREAM",
548 "VAR_SSL_SERVICE_KEY","VAR_SSL_SERVICE_PEM","VAR_SSL_PORT","VAR_FORWARD_FIRST",
549 "VAR_STUB_FIRST","VAR_MINIMAL_RESPONSES","VAR_RRSET_ROUNDROBIN",
551 static const char *yyrule[] = {
552 "$accept : toplevelvars",
554 "toplevelvars : toplevelvars toplevelvar",
555 "toplevelvar : serverstart contents_server",
556 "toplevelvar : stubstart contents_stub",
557 "toplevelvar : forwardstart contents_forward",
558 "toplevelvar : pythonstart contents_py",
559 "toplevelvar : rcstart contents_rc",
560 "serverstart : VAR_SERVER",
561 "contents_server : contents_server content_server",
563 "content_server : server_num_threads",
564 "content_server : server_verbosity",
565 "content_server : server_port",
566 "content_server : server_outgoing_range",
567 "content_server : server_do_ip4",
568 "content_server : server_do_ip6",
569 "content_server : server_do_udp",
570 "content_server : server_do_tcp",
571 "content_server : server_interface",
572 "content_server : server_chroot",
573 "content_server : server_username",
574 "content_server : server_directory",
575 "content_server : server_logfile",
576 "content_server : server_pidfile",
577 "content_server : server_msg_cache_size",
578 "content_server : server_msg_cache_slabs",
579 "content_server : server_num_queries_per_thread",
580 "content_server : server_rrset_cache_size",
581 "content_server : server_rrset_cache_slabs",
582 "content_server : server_outgoing_num_tcp",
583 "content_server : server_infra_host_ttl",
584 "content_server : server_infra_lame_ttl",
585 "content_server : server_infra_cache_slabs",
586 "content_server : server_infra_cache_numhosts",
587 "content_server : server_infra_cache_lame_size",
588 "content_server : server_target_fetch_policy",
589 "content_server : server_harden_short_bufsize",
590 "content_server : server_harden_large_queries",
591 "content_server : server_do_not_query_address",
592 "content_server : server_hide_identity",
593 "content_server : server_hide_version",
594 "content_server : server_identity",
595 "content_server : server_version",
596 "content_server : server_harden_glue",
597 "content_server : server_module_conf",
598 "content_server : server_trust_anchor_file",
599 "content_server : server_trust_anchor",
600 "content_server : server_val_override_date",
601 "content_server : server_bogus_ttl",
602 "content_server : server_val_clean_additional",
603 "content_server : server_val_permissive_mode",
604 "content_server : server_incoming_num_tcp",
605 "content_server : server_msg_buffer_size",
606 "content_server : server_key_cache_size",
607 "content_server : server_key_cache_slabs",
608 "content_server : server_trusted_keys_file",
609 "content_server : server_val_nsec3_keysize_iterations",
610 "content_server : server_use_syslog",
611 "content_server : server_outgoing_interface",
612 "content_server : server_root_hints",
613 "content_server : server_do_not_query_localhost",
614 "content_server : server_cache_max_ttl",
615 "content_server : server_harden_dnssec_stripped",
616 "content_server : server_access_control",
617 "content_server : server_local_zone",
618 "content_server : server_local_data",
619 "content_server : server_interface_automatic",
620 "content_server : server_statistics_interval",
621 "content_server : server_do_daemonize",
622 "content_server : server_use_caps_for_id",
623 "content_server : server_statistics_cumulative",
624 "content_server : server_outgoing_port_permit",
625 "content_server : server_outgoing_port_avoid",
626 "content_server : server_dlv_anchor_file",
627 "content_server : server_dlv_anchor",
628 "content_server : server_neg_cache_size",
629 "content_server : server_harden_referral_path",
630 "content_server : server_private_address",
631 "content_server : server_private_domain",
632 "content_server : server_extended_statistics",
633 "content_server : server_local_data_ptr",
634 "content_server : server_jostle_timeout",
635 "content_server : server_unwanted_reply_threshold",
636 "content_server : server_log_time_ascii",
637 "content_server : server_domain_insecure",
638 "content_server : server_val_sig_skew_min",
639 "content_server : server_val_sig_skew_max",
640 "content_server : server_cache_min_ttl",
641 "content_server : server_val_log_level",
642 "content_server : server_auto_trust_anchor_file",
643 "content_server : server_add_holddown",
644 "content_server : server_del_holddown",
645 "content_server : server_keep_missing",
646 "content_server : server_so_rcvbuf",
647 "content_server : server_edns_buffer_size",
648 "content_server : server_prefetch",
649 "content_server : server_prefetch_key",
650 "content_server : server_so_sndbuf",
651 "content_server : server_harden_below_nxdomain",
652 "content_server : server_ignore_cd_flag",
653 "content_server : server_log_queries",
654 "content_server : server_tcp_upstream",
655 "content_server : server_ssl_upstream",
656 "content_server : server_ssl_service_key",
657 "content_server : server_ssl_service_pem",
658 "content_server : server_ssl_port",
659 "content_server : server_minimal_responses",
660 "content_server : server_rrset_roundrobin",
661 "stubstart : VAR_STUB_ZONE",
662 "contents_stub : contents_stub content_stub",
664 "content_stub : stub_name",
665 "content_stub : stub_host",
666 "content_stub : stub_addr",
667 "content_stub : stub_prime",
668 "content_stub : stub_first",
669 "forwardstart : VAR_FORWARD_ZONE",
670 "contents_forward : contents_forward content_forward",
671 "contents_forward :",
672 "content_forward : forward_name",
673 "content_forward : forward_host",
674 "content_forward : forward_addr",
675 "content_forward : forward_first",
676 "server_num_threads : VAR_NUM_THREADS STRING_ARG",
677 "server_verbosity : VAR_VERBOSITY STRING_ARG",
678 "server_statistics_interval : VAR_STATISTICS_INTERVAL STRING_ARG",
679 "server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING_ARG",
680 "server_extended_statistics : VAR_EXTENDED_STATISTICS STRING_ARG",
681 "server_port : VAR_PORT STRING_ARG",
682 "server_interface : VAR_INTERFACE STRING_ARG",
683 "server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING_ARG",
684 "server_outgoing_range : VAR_OUTGOING_RANGE STRING_ARG",
685 "server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING_ARG",
686 "server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING_ARG",
687 "server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING_ARG",
688 "server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING_ARG",
689 "server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING_ARG",
690 "server_do_ip4 : VAR_DO_IP4 STRING_ARG",
691 "server_do_ip6 : VAR_DO_IP6 STRING_ARG",
692 "server_do_udp : VAR_DO_UDP STRING_ARG",
693 "server_do_tcp : VAR_DO_TCP STRING_ARG",
694 "server_tcp_upstream : VAR_TCP_UPSTREAM STRING_ARG",
695 "server_ssl_upstream : VAR_SSL_UPSTREAM STRING_ARG",
696 "server_ssl_service_key : VAR_SSL_SERVICE_KEY STRING_ARG",
697 "server_ssl_service_pem : VAR_SSL_SERVICE_PEM STRING_ARG",
698 "server_ssl_port : VAR_SSL_PORT STRING_ARG",
699 "server_do_daemonize : VAR_DO_DAEMONIZE STRING_ARG",
700 "server_use_syslog : VAR_USE_SYSLOG STRING_ARG",
701 "server_log_time_ascii : VAR_LOG_TIME_ASCII STRING_ARG",
702 "server_log_queries : VAR_LOG_QUERIES STRING_ARG",
703 "server_chroot : VAR_CHROOT STRING_ARG",
704 "server_username : VAR_USERNAME STRING_ARG",
705 "server_directory : VAR_DIRECTORY STRING_ARG",
706 "server_logfile : VAR_LOGFILE STRING_ARG",
707 "server_pidfile : VAR_PIDFILE STRING_ARG",
708 "server_root_hints : VAR_ROOT_HINTS STRING_ARG",
709 "server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING_ARG",
710 "server_dlv_anchor : VAR_DLV_ANCHOR STRING_ARG",
711 "server_auto_trust_anchor_file : VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG",
712 "server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING_ARG",
713 "server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING_ARG",
714 "server_trust_anchor : VAR_TRUST_ANCHOR STRING_ARG",
715 "server_domain_insecure : VAR_DOMAIN_INSECURE STRING_ARG",
716 "server_hide_identity : VAR_HIDE_IDENTITY STRING_ARG",
717 "server_hide_version : VAR_HIDE_VERSION STRING_ARG",
718 "server_identity : VAR_IDENTITY STRING_ARG",
719 "server_version : VAR_VERSION STRING_ARG",
720 "server_so_rcvbuf : VAR_SO_RCVBUF STRING_ARG",
721 "server_so_sndbuf : VAR_SO_SNDBUF STRING_ARG",
722 "server_edns_buffer_size : VAR_EDNS_BUFFER_SIZE STRING_ARG",
723 "server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING_ARG",
724 "server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING_ARG",
725 "server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING_ARG",
726 "server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING_ARG",
727 "server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING_ARG",
728 "server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING_ARG",
729 "server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING_ARG",
730 "server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING_ARG",
731 "server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING_ARG",
732 "server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING_ARG",
733 "server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING_ARG",
734 "server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING_ARG",
735 "server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING_ARG",
736 "server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING_ARG",
737 "server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING_ARG",
738 "server_harden_glue : VAR_HARDEN_GLUE STRING_ARG",
739 "server_harden_dnssec_stripped : VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG",
740 "server_harden_below_nxdomain : VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG",
741 "server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING_ARG",
742 "server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING_ARG",
743 "server_private_address : VAR_PRIVATE_ADDRESS STRING_ARG",
744 "server_private_domain : VAR_PRIVATE_DOMAIN STRING_ARG",
745 "server_prefetch : VAR_PREFETCH STRING_ARG",
746 "server_prefetch_key : VAR_PREFETCH_KEY STRING_ARG",
747 "server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG",
748 "server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING_ARG",
749 "server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG",
750 "server_access_control : VAR_ACCESS_CONTROL STRING_ARG STRING_ARG",
751 "server_module_conf : VAR_MODULE_CONF STRING_ARG",
752 "server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING_ARG",
753 "server_val_sig_skew_min : VAR_VAL_SIG_SKEW_MIN STRING_ARG",
754 "server_val_sig_skew_max : VAR_VAL_SIG_SKEW_MAX STRING_ARG",
755 "server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING_ARG",
756 "server_cache_min_ttl : VAR_CACHE_MIN_TTL STRING_ARG",
757 "server_bogus_ttl : VAR_BOGUS_TTL STRING_ARG",
758 "server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING_ARG",
759 "server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING_ARG",
760 "server_ignore_cd_flag : VAR_IGNORE_CD_FLAG STRING_ARG",
761 "server_val_log_level : VAR_VAL_LOG_LEVEL STRING_ARG",
762 "server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG",
763 "server_add_holddown : VAR_ADD_HOLDDOWN STRING_ARG",
764 "server_del_holddown : VAR_DEL_HOLDDOWN STRING_ARG",
765 "server_keep_missing : VAR_KEEP_MISSING STRING_ARG",
766 "server_key_cache_size : VAR_KEY_CACHE_SIZE STRING_ARG",
767 "server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING_ARG",
768 "server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING_ARG",
769 "server_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG",
770 "server_local_data : VAR_LOCAL_DATA STRING_ARG",
771 "server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG",
772 "server_minimal_responses : VAR_MINIMAL_RESPONSES STRING_ARG",
773 "server_rrset_roundrobin : VAR_RRSET_ROUNDROBIN STRING_ARG",
774 "stub_name : VAR_NAME STRING_ARG",
775 "stub_host : VAR_STUB_HOST STRING_ARG",
776 "stub_addr : VAR_STUB_ADDR STRING_ARG",
777 "stub_first : VAR_STUB_FIRST STRING_ARG",
778 "stub_prime : VAR_STUB_PRIME STRING_ARG",
779 "forward_name : VAR_NAME STRING_ARG",
780 "forward_host : VAR_FORWARD_HOST STRING_ARG",
781 "forward_addr : VAR_FORWARD_ADDR STRING_ARG",
782 "forward_first : VAR_FORWARD_FIRST STRING_ARG",
783 "rcstart : VAR_REMOTE_CONTROL",
784 "contents_rc : contents_rc content_rc",
786 "content_rc : rc_control_enable",
787 "content_rc : rc_control_interface",
788 "content_rc : rc_control_port",
789 "content_rc : rc_server_key_file",
790 "content_rc : rc_server_cert_file",
791 "content_rc : rc_control_key_file",
792 "content_rc : rc_control_cert_file",
793 "rc_control_enable : VAR_CONTROL_ENABLE STRING_ARG",
794 "rc_control_port : VAR_CONTROL_PORT STRING_ARG",
795 "rc_control_interface : VAR_CONTROL_INTERFACE STRING_ARG",
796 "rc_server_key_file : VAR_SERVER_KEY_FILE STRING_ARG",
797 "rc_server_cert_file : VAR_SERVER_CERT_FILE STRING_ARG",
798 "rc_control_key_file : VAR_CONTROL_KEY_FILE STRING_ARG",
799 "rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING_ARG",
800 "pythonstart : VAR_PYTHON",
801 "contents_py : contents_py content_py",
803 "content_py : py_script",
804 "py_script : VAR_PYTHON_SCRIPT STRING_ARG",
817 /* define the initial stack-sizes */
820 #define YYMAXDEPTH YYSTACKSIZE
823 #define YYSTACKSIZE YYMAXDEPTH
825 #define YYSTACKSIZE 500
826 #define YYMAXDEPTH 500
830 #define YYINITSTACKSIZE 500
840 /* variables for the parser stack */
841 static YYSTACKDATA yystack;
842 #line 1277 "util/configparser.y"
844 /* parse helper routines could be here */
845 #line 845 "util/configparser.c"
848 #include <stdio.h> /* needed for printf */
851 #include <stdlib.h> /* needed for malloc, etc */
852 #include <string.h> /* needed for memset */
854 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
855 static int yygrowstack(YYSTACKDATA *data)
862 if ((newsize = data->stacksize) == 0)
863 newsize = YYINITSTACKSIZE;
864 else if (newsize >= YYMAXDEPTH)
866 else if ((newsize *= 2) > YYMAXDEPTH)
867 newsize = YYMAXDEPTH;
869 i = (int) (data->s_mark - data->s_base);
870 newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
874 data->s_base = newss;
875 data->s_mark = newss + i;
877 newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
881 data->l_base = newvs;
882 data->l_mark = newvs + i;
884 data->stacksize = newsize;
885 data->s_last = data->s_base + newsize - 1;
889 #if YYPURE || defined(YY_NO_LEAKS)
890 static void yyfreestack(YYSTACKDATA *data)
894 memset(data, 0, sizeof(*data));
897 #define yyfreestack(data) /* nothing */
900 #define YYABORT goto yyabort
901 #define YYREJECT goto yyabort
902 #define YYACCEPT goto yyaccept
903 #define YYERROR goto yyerrlab
908 int yym, yyn, yystate;
912 if ((yys = getenv("YYDEBUG")) != 0)
915 if (yyn >= '0' && yyn <= '9')
926 memset(&yystack, 0, sizeof(yystack));
929 if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
930 yystack.s_mark = yystack.s_base;
931 yystack.l_mark = yystack.l_base;
936 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
939 if ((yychar = YYLEX) < 0) yychar = 0;
944 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
945 if (!yys) yys = "illegal-symbol";
946 printf("%sdebug: state %d, reading %d (%s)\n",
947 YYPREFIX, yystate, yychar, yys);
951 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
952 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
956 printf("%sdebug: state %d, shifting to state %d\n",
957 YYPREFIX, yystate, yytable[yyn]);
959 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
963 yystate = yytable[yyn];
964 *++yystack.s_mark = yytable[yyn];
965 *++yystack.l_mark = yylval;
967 if (yyerrflag > 0) --yyerrflag;
970 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
971 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
976 if (yyerrflag) goto yyinrecovery;
978 yyerror("syntax error");
991 if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
992 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
996 printf("%sdebug: state %d, error recovery shifting\
997 to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
999 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
1003 yystate = yytable[yyn];
1004 *++yystack.s_mark = yytable[yyn];
1005 *++yystack.l_mark = yylval;
1012 printf("%sdebug: error recovery discarding state %d\n",
1013 YYPREFIX, *yystack.s_mark);
1015 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1023 if (yychar == 0) goto yyabort;
1028 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1029 if (!yys) yys = "illegal-symbol";
1030 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
1031 YYPREFIX, yystate, yychar, yys);
1041 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
1042 YYPREFIX, yystate, yyn, yyrule[yyn]);
1046 yyval = yystack.l_mark[1-yym];
1048 memset(&yyval, 0, sizeof yyval);
1052 #line 118 "util/configparser.y"
1054 OUTYY(("\nP(server:)\n"));
1058 #line 167 "util/configparser.y"
1060 struct config_stub* s;
1061 OUTYY(("\nP(stub_zone:)\n"));
1062 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
1064 s->next = cfg_parser->cfg->stubs;
1065 cfg_parser->cfg->stubs = s;
1067 yyerror("out of memory");
1071 #line 183 "util/configparser.y"
1073 struct config_stub* s;
1074 OUTYY(("\nP(forward_zone:)\n"));
1075 s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
1077 s->next = cfg_parser->cfg->forwards;
1078 cfg_parser->cfg->forwards = s;
1080 yyerror("out of memory");
1084 #line 199 "util/configparser.y"
1086 OUTYY(("P(server_num_threads:%s)\n", yystack.l_mark[0].str));
1087 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1088 yyerror("number expected");
1089 else cfg_parser->cfg->num_threads = atoi(yystack.l_mark[0].str);
1090 free(yystack.l_mark[0].str);
1094 #line 208 "util/configparser.y"
1096 OUTYY(("P(server_verbosity:%s)\n", yystack.l_mark[0].str));
1097 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1098 yyerror("number expected");
1099 else cfg_parser->cfg->verbosity = atoi(yystack.l_mark[0].str);
1100 free(yystack.l_mark[0].str);
1104 #line 217 "util/configparser.y"
1106 OUTYY(("P(server_statistics_interval:%s)\n", yystack.l_mark[0].str));
1107 if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0)
1108 cfg_parser->cfg->stat_interval = 0;
1109 else if(atoi(yystack.l_mark[0].str) == 0)
1110 yyerror("number expected");
1111 else cfg_parser->cfg->stat_interval = atoi(yystack.l_mark[0].str);
1112 free(yystack.l_mark[0].str);
1116 #line 228 "util/configparser.y"
1118 OUTYY(("P(server_statistics_cumulative:%s)\n", yystack.l_mark[0].str));
1119 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1120 yyerror("expected yes or no.");
1121 else cfg_parser->cfg->stat_cumulative = (strcmp(yystack.l_mark[0].str, "yes")==0);
1122 free(yystack.l_mark[0].str);
1126 #line 237 "util/configparser.y"
1128 OUTYY(("P(server_extended_statistics:%s)\n", yystack.l_mark[0].str));
1129 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1130 yyerror("expected yes or no.");
1131 else cfg_parser->cfg->stat_extended = (strcmp(yystack.l_mark[0].str, "yes")==0);
1132 free(yystack.l_mark[0].str);
1136 #line 246 "util/configparser.y"
1138 OUTYY(("P(server_port:%s)\n", yystack.l_mark[0].str));
1139 if(atoi(yystack.l_mark[0].str) == 0)
1140 yyerror("port number expected");
1141 else cfg_parser->cfg->port = atoi(yystack.l_mark[0].str);
1142 free(yystack.l_mark[0].str);
1146 #line 255 "util/configparser.y"
1148 OUTYY(("P(server_interface:%s)\n", yystack.l_mark[0].str));
1149 if(cfg_parser->cfg->num_ifs == 0)
1150 cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
1151 else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
1152 (cfg_parser->cfg->num_ifs+1)*sizeof(char*));
1153 if(!cfg_parser->cfg->ifs)
1154 yyerror("out of memory");
1156 cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yystack.l_mark[0].str;
1160 #line 268 "util/configparser.y"
1162 OUTYY(("P(server_outgoing_interface:%s)\n", yystack.l_mark[0].str));
1163 if(cfg_parser->cfg->num_out_ifs == 0)
1164 cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
1165 else cfg_parser->cfg->out_ifs = realloc(
1166 cfg_parser->cfg->out_ifs,
1167 (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
1168 if(!cfg_parser->cfg->out_ifs)
1169 yyerror("out of memory");
1171 cfg_parser->cfg->out_ifs[
1172 cfg_parser->cfg->num_out_ifs++] = yystack.l_mark[0].str;
1176 #line 283 "util/configparser.y"
1178 OUTYY(("P(server_outgoing_range:%s)\n", yystack.l_mark[0].str));
1179 if(atoi(yystack.l_mark[0].str) == 0)
1180 yyerror("number expected");
1181 else cfg_parser->cfg->outgoing_num_ports = atoi(yystack.l_mark[0].str);
1182 free(yystack.l_mark[0].str);
1186 #line 292 "util/configparser.y"
1188 OUTYY(("P(server_outgoing_port_permit:%s)\n", yystack.l_mark[0].str));
1189 if(!cfg_mark_ports(yystack.l_mark[0].str, 1,
1190 cfg_parser->cfg->outgoing_avail_ports, 65536))
1191 yyerror("port number or range (\"low-high\") expected");
1192 free(yystack.l_mark[0].str);
1196 #line 301 "util/configparser.y"
1198 OUTYY(("P(server_outgoing_port_avoid:%s)\n", yystack.l_mark[0].str));
1199 if(!cfg_mark_ports(yystack.l_mark[0].str, 0,
1200 cfg_parser->cfg->outgoing_avail_ports, 65536))
1201 yyerror("port number or range (\"low-high\") expected");
1202 free(yystack.l_mark[0].str);
1206 #line 310 "util/configparser.y"
1208 OUTYY(("P(server_outgoing_num_tcp:%s)\n", yystack.l_mark[0].str));
1209 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1210 yyerror("number expected");
1211 else cfg_parser->cfg->outgoing_num_tcp = atoi(yystack.l_mark[0].str);
1212 free(yystack.l_mark[0].str);
1216 #line 319 "util/configparser.y"
1218 OUTYY(("P(server_incoming_num_tcp:%s)\n", yystack.l_mark[0].str));
1219 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1220 yyerror("number expected");
1221 else cfg_parser->cfg->incoming_num_tcp = atoi(yystack.l_mark[0].str);
1222 free(yystack.l_mark[0].str);
1226 #line 328 "util/configparser.y"
1228 OUTYY(("P(server_interface_automatic:%s)\n", yystack.l_mark[0].str));
1229 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1230 yyerror("expected yes or no.");
1231 else cfg_parser->cfg->if_automatic = (strcmp(yystack.l_mark[0].str, "yes")==0);
1232 free(yystack.l_mark[0].str);
1236 #line 337 "util/configparser.y"
1238 OUTYY(("P(server_do_ip4:%s)\n", yystack.l_mark[0].str));
1239 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1240 yyerror("expected yes or no.");
1241 else cfg_parser->cfg->do_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0);
1242 free(yystack.l_mark[0].str);
1246 #line 346 "util/configparser.y"
1248 OUTYY(("P(server_do_ip6:%s)\n", yystack.l_mark[0].str));
1249 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1250 yyerror("expected yes or no.");
1251 else cfg_parser->cfg->do_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0);
1252 free(yystack.l_mark[0].str);
1256 #line 355 "util/configparser.y"
1258 OUTYY(("P(server_do_udp:%s)\n", yystack.l_mark[0].str));
1259 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1260 yyerror("expected yes or no.");
1261 else cfg_parser->cfg->do_udp = (strcmp(yystack.l_mark[0].str, "yes")==0);
1262 free(yystack.l_mark[0].str);
1266 #line 364 "util/configparser.y"
1268 OUTYY(("P(server_do_tcp:%s)\n", yystack.l_mark[0].str));
1269 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1270 yyerror("expected yes or no.");
1271 else cfg_parser->cfg->do_tcp = (strcmp(yystack.l_mark[0].str, "yes")==0);
1272 free(yystack.l_mark[0].str);
1276 #line 373 "util/configparser.y"
1278 OUTYY(("P(server_tcp_upstream:%s)\n", yystack.l_mark[0].str));
1279 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1280 yyerror("expected yes or no.");
1281 else cfg_parser->cfg->tcp_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
1282 free(yystack.l_mark[0].str);
1286 #line 382 "util/configparser.y"
1288 OUTYY(("P(server_ssl_upstream:%s)\n", yystack.l_mark[0].str));
1289 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1290 yyerror("expected yes or no.");
1291 else cfg_parser->cfg->ssl_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
1292 free(yystack.l_mark[0].str);
1296 #line 391 "util/configparser.y"
1298 OUTYY(("P(server_ssl_service_key:%s)\n", yystack.l_mark[0].str));
1299 free(cfg_parser->cfg->ssl_service_key);
1300 cfg_parser->cfg->ssl_service_key = yystack.l_mark[0].str;
1304 #line 398 "util/configparser.y"
1306 OUTYY(("P(server_ssl_service_pem:%s)\n", yystack.l_mark[0].str));
1307 free(cfg_parser->cfg->ssl_service_pem);
1308 cfg_parser->cfg->ssl_service_pem = yystack.l_mark[0].str;
1312 #line 405 "util/configparser.y"
1314 OUTYY(("P(server_ssl_port:%s)\n", yystack.l_mark[0].str));
1315 if(atoi(yystack.l_mark[0].str) == 0)
1316 yyerror("port number expected");
1317 else cfg_parser->cfg->ssl_port = atoi(yystack.l_mark[0].str);
1318 free(yystack.l_mark[0].str);
1322 #line 414 "util/configparser.y"
1324 OUTYY(("P(server_do_daemonize:%s)\n", yystack.l_mark[0].str));
1325 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1326 yyerror("expected yes or no.");
1327 else cfg_parser->cfg->do_daemonize = (strcmp(yystack.l_mark[0].str, "yes")==0);
1328 free(yystack.l_mark[0].str);
1332 #line 423 "util/configparser.y"
1334 OUTYY(("P(server_use_syslog:%s)\n", yystack.l_mark[0].str));
1335 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1336 yyerror("expected yes or no.");
1337 else cfg_parser->cfg->use_syslog = (strcmp(yystack.l_mark[0].str, "yes")==0);
1338 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
1339 if(strcmp(yystack.l_mark[0].str, "yes") == 0)
1340 yyerror("no syslog services are available. "
1341 "(reconfigure and compile to add)");
1343 free(yystack.l_mark[0].str);
1347 #line 437 "util/configparser.y"
1349 OUTYY(("P(server_log_time_ascii:%s)\n", yystack.l_mark[0].str));
1350 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1351 yyerror("expected yes or no.");
1352 else cfg_parser->cfg->log_time_ascii = (strcmp(yystack.l_mark[0].str, "yes")==0);
1353 free(yystack.l_mark[0].str);
1357 #line 446 "util/configparser.y"
1359 OUTYY(("P(server_log_queries:%s)\n", yystack.l_mark[0].str));
1360 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1361 yyerror("expected yes or no.");
1362 else cfg_parser->cfg->log_queries = (strcmp(yystack.l_mark[0].str, "yes")==0);
1363 free(yystack.l_mark[0].str);
1367 #line 455 "util/configparser.y"
1369 OUTYY(("P(server_chroot:%s)\n", yystack.l_mark[0].str));
1370 free(cfg_parser->cfg->chrootdir);
1371 cfg_parser->cfg->chrootdir = yystack.l_mark[0].str;
1375 #line 462 "util/configparser.y"
1377 OUTYY(("P(server_username:%s)\n", yystack.l_mark[0].str));
1378 free(cfg_parser->cfg->username);
1379 cfg_parser->cfg->username = yystack.l_mark[0].str;
1383 #line 469 "util/configparser.y"
1385 OUTYY(("P(server_directory:%s)\n", yystack.l_mark[0].str));
1386 free(cfg_parser->cfg->directory);
1387 cfg_parser->cfg->directory = yystack.l_mark[0].str;
1391 #line 476 "util/configparser.y"
1393 OUTYY(("P(server_logfile:%s)\n", yystack.l_mark[0].str));
1394 free(cfg_parser->cfg->logfile);
1395 cfg_parser->cfg->logfile = yystack.l_mark[0].str;
1396 cfg_parser->cfg->use_syslog = 0;
1400 #line 484 "util/configparser.y"
1402 OUTYY(("P(server_pidfile:%s)\n", yystack.l_mark[0].str));
1403 free(cfg_parser->cfg->pidfile);
1404 cfg_parser->cfg->pidfile = yystack.l_mark[0].str;
1408 #line 491 "util/configparser.y"
1410 OUTYY(("P(server_root_hints:%s)\n", yystack.l_mark[0].str));
1411 if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yystack.l_mark[0].str))
1412 yyerror("out of memory");
1416 #line 498 "util/configparser.y"
1418 OUTYY(("P(server_dlv_anchor_file:%s)\n", yystack.l_mark[0].str));
1419 free(cfg_parser->cfg->dlv_anchor_file);
1420 cfg_parser->cfg->dlv_anchor_file = yystack.l_mark[0].str;
1424 #line 505 "util/configparser.y"
1426 OUTYY(("P(server_dlv_anchor:%s)\n", yystack.l_mark[0].str));
1427 if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, yystack.l_mark[0].str))
1428 yyerror("out of memory");
1432 #line 512 "util/configparser.y"
1434 OUTYY(("P(server_auto_trust_anchor_file:%s)\n", yystack.l_mark[0].str));
1435 if(!cfg_strlist_insert(&cfg_parser->cfg->
1436 auto_trust_anchor_file_list, yystack.l_mark[0].str))
1437 yyerror("out of memory");
1441 #line 520 "util/configparser.y"
1443 OUTYY(("P(server_trust_anchor_file:%s)\n", yystack.l_mark[0].str));
1444 if(!cfg_strlist_insert(&cfg_parser->cfg->
1445 trust_anchor_file_list, yystack.l_mark[0].str))
1446 yyerror("out of memory");
1450 #line 528 "util/configparser.y"
1452 OUTYY(("P(server_trusted_keys_file:%s)\n", yystack.l_mark[0].str));
1453 if(!cfg_strlist_insert(&cfg_parser->cfg->
1454 trusted_keys_file_list, yystack.l_mark[0].str))
1455 yyerror("out of memory");
1459 #line 536 "util/configparser.y"
1461 OUTYY(("P(server_trust_anchor:%s)\n", yystack.l_mark[0].str));
1462 if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yystack.l_mark[0].str))
1463 yyerror("out of memory");
1467 #line 543 "util/configparser.y"
1469 OUTYY(("P(server_domain_insecure:%s)\n", yystack.l_mark[0].str));
1470 if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, yystack.l_mark[0].str))
1471 yyerror("out of memory");
1475 #line 550 "util/configparser.y"
1477 OUTYY(("P(server_hide_identity:%s)\n", yystack.l_mark[0].str));
1478 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1479 yyerror("expected yes or no.");
1480 else cfg_parser->cfg->hide_identity = (strcmp(yystack.l_mark[0].str, "yes")==0);
1481 free(yystack.l_mark[0].str);
1485 #line 559 "util/configparser.y"
1487 OUTYY(("P(server_hide_version:%s)\n", yystack.l_mark[0].str));
1488 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1489 yyerror("expected yes or no.");
1490 else cfg_parser->cfg->hide_version = (strcmp(yystack.l_mark[0].str, "yes")==0);
1491 free(yystack.l_mark[0].str);
1495 #line 568 "util/configparser.y"
1497 OUTYY(("P(server_identity:%s)\n", yystack.l_mark[0].str));
1498 free(cfg_parser->cfg->identity);
1499 cfg_parser->cfg->identity = yystack.l_mark[0].str;
1503 #line 575 "util/configparser.y"
1505 OUTYY(("P(server_version:%s)\n", yystack.l_mark[0].str));
1506 free(cfg_parser->cfg->version);
1507 cfg_parser->cfg->version = yystack.l_mark[0].str;
1511 #line 582 "util/configparser.y"
1513 OUTYY(("P(server_so_rcvbuf:%s)\n", yystack.l_mark[0].str));
1514 if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_rcvbuf))
1515 yyerror("buffer size expected");
1516 free(yystack.l_mark[0].str);
1520 #line 590 "util/configparser.y"
1522 OUTYY(("P(server_so_sndbuf:%s)\n", yystack.l_mark[0].str));
1523 if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_sndbuf))
1524 yyerror("buffer size expected");
1525 free(yystack.l_mark[0].str);
1529 #line 598 "util/configparser.y"
1531 OUTYY(("P(server_edns_buffer_size:%s)\n", yystack.l_mark[0].str));
1532 if(atoi(yystack.l_mark[0].str) == 0)
1533 yyerror("number expected");
1534 else if (atoi(yystack.l_mark[0].str) < 12)
1535 yyerror("edns buffer size too small");
1536 else if (atoi(yystack.l_mark[0].str) > 65535)
1537 cfg_parser->cfg->edns_buffer_size = 65535;
1538 else cfg_parser->cfg->edns_buffer_size = atoi(yystack.l_mark[0].str);
1539 free(yystack.l_mark[0].str);
1543 #line 611 "util/configparser.y"
1545 OUTYY(("P(server_msg_buffer_size:%s)\n", yystack.l_mark[0].str));
1546 if(atoi(yystack.l_mark[0].str) == 0)
1547 yyerror("number expected");
1548 else if (atoi(yystack.l_mark[0].str) < 4096)
1549 yyerror("message buffer size too small (use 4096)");
1550 else cfg_parser->cfg->msg_buffer_size = atoi(yystack.l_mark[0].str);
1551 free(yystack.l_mark[0].str);
1555 #line 622 "util/configparser.y"
1557 OUTYY(("P(server_msg_cache_size:%s)\n", yystack.l_mark[0].str));
1558 if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->msg_cache_size))
1559 yyerror("memory size expected");
1560 free(yystack.l_mark[0].str);
1564 #line 630 "util/configparser.y"
1566 OUTYY(("P(server_msg_cache_slabs:%s)\n", yystack.l_mark[0].str));
1567 if(atoi(yystack.l_mark[0].str) == 0)
1568 yyerror("number expected");
1570 cfg_parser->cfg->msg_cache_slabs = atoi(yystack.l_mark[0].str);
1571 if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
1572 yyerror("must be a power of 2");
1574 free(yystack.l_mark[0].str);
1578 #line 643 "util/configparser.y"
1580 OUTYY(("P(server_num_queries_per_thread:%s)\n", yystack.l_mark[0].str));
1581 if(atoi(yystack.l_mark[0].str) == 0)
1582 yyerror("number expected");
1583 else cfg_parser->cfg->num_queries_per_thread = atoi(yystack.l_mark[0].str);
1584 free(yystack.l_mark[0].str);
1588 #line 652 "util/configparser.y"
1590 OUTYY(("P(server_jostle_timeout:%s)\n", yystack.l_mark[0].str));
1591 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1592 yyerror("number expected");
1593 else cfg_parser->cfg->jostle_time = atoi(yystack.l_mark[0].str);
1594 free(yystack.l_mark[0].str);
1598 #line 661 "util/configparser.y"
1600 OUTYY(("P(server_rrset_cache_size:%s)\n", yystack.l_mark[0].str));
1601 if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->rrset_cache_size))
1602 yyerror("memory size expected");
1603 free(yystack.l_mark[0].str);
1607 #line 669 "util/configparser.y"
1609 OUTYY(("P(server_rrset_cache_slabs:%s)\n", yystack.l_mark[0].str));
1610 if(atoi(yystack.l_mark[0].str) == 0)
1611 yyerror("number expected");
1613 cfg_parser->cfg->rrset_cache_slabs = atoi(yystack.l_mark[0].str);
1614 if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
1615 yyerror("must be a power of 2");
1617 free(yystack.l_mark[0].str);
1621 #line 682 "util/configparser.y"
1623 OUTYY(("P(server_infra_host_ttl:%s)\n", yystack.l_mark[0].str));
1624 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1625 yyerror("number expected");
1626 else cfg_parser->cfg->host_ttl = atoi(yystack.l_mark[0].str);
1627 free(yystack.l_mark[0].str);
1631 #line 691 "util/configparser.y"
1633 OUTYY(("P(server_infra_lame_ttl:%s)\n", yystack.l_mark[0].str));
1634 verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
1635 "removed, use infra-host-ttl)", yystack.l_mark[0].str);
1636 free(yystack.l_mark[0].str);
1640 #line 699 "util/configparser.y"
1642 OUTYY(("P(server_infra_cache_numhosts:%s)\n", yystack.l_mark[0].str));
1643 if(atoi(yystack.l_mark[0].str) == 0)
1644 yyerror("number expected");
1645 else cfg_parser->cfg->infra_cache_numhosts = atoi(yystack.l_mark[0].str);
1646 free(yystack.l_mark[0].str);
1650 #line 708 "util/configparser.y"
1652 OUTYY(("P(server_infra_cache_lame_size:%s)\n", yystack.l_mark[0].str));
1653 verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
1654 "(option removed, use infra-cache-numhosts)", yystack.l_mark[0].str);
1655 free(yystack.l_mark[0].str);
1659 #line 716 "util/configparser.y"
1661 OUTYY(("P(server_infra_cache_slabs:%s)\n", yystack.l_mark[0].str));
1662 if(atoi(yystack.l_mark[0].str) == 0)
1663 yyerror("number expected");
1665 cfg_parser->cfg->infra_cache_slabs = atoi(yystack.l_mark[0].str);
1666 if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
1667 yyerror("must be a power of 2");
1669 free(yystack.l_mark[0].str);
1673 #line 729 "util/configparser.y"
1675 OUTYY(("P(server_target_fetch_policy:%s)\n", yystack.l_mark[0].str));
1676 free(cfg_parser->cfg->target_fetch_policy);
1677 cfg_parser->cfg->target_fetch_policy = yystack.l_mark[0].str;
1681 #line 736 "util/configparser.y"
1683 OUTYY(("P(server_harden_short_bufsize:%s)\n", yystack.l_mark[0].str));
1684 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1685 yyerror("expected yes or no.");
1686 else cfg_parser->cfg->harden_short_bufsize =
1687 (strcmp(yystack.l_mark[0].str, "yes")==0);
1688 free(yystack.l_mark[0].str);
1692 #line 746 "util/configparser.y"
1694 OUTYY(("P(server_harden_large_queries:%s)\n", yystack.l_mark[0].str));
1695 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1696 yyerror("expected yes or no.");
1697 else cfg_parser->cfg->harden_large_queries =
1698 (strcmp(yystack.l_mark[0].str, "yes")==0);
1699 free(yystack.l_mark[0].str);
1703 #line 756 "util/configparser.y"
1705 OUTYY(("P(server_harden_glue:%s)\n", yystack.l_mark[0].str));
1706 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1707 yyerror("expected yes or no.");
1708 else cfg_parser->cfg->harden_glue =
1709 (strcmp(yystack.l_mark[0].str, "yes")==0);
1710 free(yystack.l_mark[0].str);
1714 #line 766 "util/configparser.y"
1716 OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yystack.l_mark[0].str));
1717 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1718 yyerror("expected yes or no.");
1719 else cfg_parser->cfg->harden_dnssec_stripped =
1720 (strcmp(yystack.l_mark[0].str, "yes")==0);
1721 free(yystack.l_mark[0].str);
1725 #line 776 "util/configparser.y"
1727 OUTYY(("P(server_harden_below_nxdomain:%s)\n", yystack.l_mark[0].str));
1728 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1729 yyerror("expected yes or no.");
1730 else cfg_parser->cfg->harden_below_nxdomain =
1731 (strcmp(yystack.l_mark[0].str, "yes")==0);
1732 free(yystack.l_mark[0].str);
1736 #line 786 "util/configparser.y"
1738 OUTYY(("P(server_harden_referral_path:%s)\n", yystack.l_mark[0].str));
1739 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1740 yyerror("expected yes or no.");
1741 else cfg_parser->cfg->harden_referral_path =
1742 (strcmp(yystack.l_mark[0].str, "yes")==0);
1743 free(yystack.l_mark[0].str);
1747 #line 796 "util/configparser.y"
1749 OUTYY(("P(server_use_caps_for_id:%s)\n", yystack.l_mark[0].str));
1750 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1751 yyerror("expected yes or no.");
1752 else cfg_parser->cfg->use_caps_bits_for_id =
1753 (strcmp(yystack.l_mark[0].str, "yes")==0);
1754 free(yystack.l_mark[0].str);
1758 #line 806 "util/configparser.y"
1760 OUTYY(("P(server_private_address:%s)\n", yystack.l_mark[0].str));
1761 if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yystack.l_mark[0].str))
1762 yyerror("out of memory");
1766 #line 813 "util/configparser.y"
1768 OUTYY(("P(server_private_domain:%s)\n", yystack.l_mark[0].str));
1769 if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yystack.l_mark[0].str))
1770 yyerror("out of memory");
1774 #line 820 "util/configparser.y"
1776 OUTYY(("P(server_prefetch:%s)\n", yystack.l_mark[0].str));
1777 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1778 yyerror("expected yes or no.");
1779 else cfg_parser->cfg->prefetch = (strcmp(yystack.l_mark[0].str, "yes")==0);
1780 free(yystack.l_mark[0].str);
1784 #line 829 "util/configparser.y"
1786 OUTYY(("P(server_prefetch_key:%s)\n", yystack.l_mark[0].str));
1787 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1788 yyerror("expected yes or no.");
1789 else cfg_parser->cfg->prefetch_key = (strcmp(yystack.l_mark[0].str, "yes")==0);
1790 free(yystack.l_mark[0].str);
1794 #line 838 "util/configparser.y"
1796 OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yystack.l_mark[0].str));
1797 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1798 yyerror("number expected");
1799 else cfg_parser->cfg->unwanted_threshold = atoi(yystack.l_mark[0].str);
1800 free(yystack.l_mark[0].str);
1804 #line 847 "util/configparser.y"
1806 OUTYY(("P(server_do_not_query_address:%s)\n", yystack.l_mark[0].str));
1807 if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yystack.l_mark[0].str))
1808 yyerror("out of memory");
1812 #line 854 "util/configparser.y"
1814 OUTYY(("P(server_do_not_query_localhost:%s)\n", yystack.l_mark[0].str));
1815 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1816 yyerror("expected yes or no.");
1817 else cfg_parser->cfg->donotquery_localhost =
1818 (strcmp(yystack.l_mark[0].str, "yes")==0);
1819 free(yystack.l_mark[0].str);
1823 #line 864 "util/configparser.y"
1825 OUTYY(("P(server_access_control:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
1826 if(strcmp(yystack.l_mark[0].str, "deny")!=0 && strcmp(yystack.l_mark[0].str, "refuse")!=0 &&
1827 strcmp(yystack.l_mark[0].str, "allow")!=0 &&
1828 strcmp(yystack.l_mark[0].str, "allow_snoop")!=0) {
1829 yyerror("expected deny, refuse, allow or allow_snoop "
1830 "in access control action");
1832 if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yystack.l_mark[-1].str, yystack.l_mark[0].str))
1833 fatal_exit("out of memory adding acl");
1838 #line 878 "util/configparser.y"
1840 OUTYY(("P(server_module_conf:%s)\n", yystack.l_mark[0].str));
1841 free(cfg_parser->cfg->module_conf);
1842 cfg_parser->cfg->module_conf = yystack.l_mark[0].str;
1846 #line 885 "util/configparser.y"
1848 OUTYY(("P(server_val_override_date:%s)\n", yystack.l_mark[0].str));
1849 if(strlen(yystack.l_mark[0].str) == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) {
1850 cfg_parser->cfg->val_date_override = 0;
1851 } else if(strlen(yystack.l_mark[0].str) == 14) {
1852 cfg_parser->cfg->val_date_override =
1853 cfg_convert_timeval(yystack.l_mark[0].str);
1854 if(!cfg_parser->cfg->val_date_override)
1855 yyerror("bad date/time specification");
1857 if(atoi(yystack.l_mark[0].str) == 0)
1858 yyerror("number expected");
1859 cfg_parser->cfg->val_date_override = atoi(yystack.l_mark[0].str);
1861 free(yystack.l_mark[0].str);
1865 #line 903 "util/configparser.y"
1867 OUTYY(("P(server_val_sig_skew_min:%s)\n", yystack.l_mark[0].str));
1868 if(strlen(yystack.l_mark[0].str) == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) {
1869 cfg_parser->cfg->val_sig_skew_min = 0;
1871 cfg_parser->cfg->val_sig_skew_min = atoi(yystack.l_mark[0].str);
1872 if(!cfg_parser->cfg->val_sig_skew_min)
1873 yyerror("number expected");
1875 free(yystack.l_mark[0].str);
1879 #line 916 "util/configparser.y"
1881 OUTYY(("P(server_val_sig_skew_max:%s)\n", yystack.l_mark[0].str));
1882 if(strlen(yystack.l_mark[0].str) == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) {
1883 cfg_parser->cfg->val_sig_skew_max = 0;
1885 cfg_parser->cfg->val_sig_skew_max = atoi(yystack.l_mark[0].str);
1886 if(!cfg_parser->cfg->val_sig_skew_max)
1887 yyerror("number expected");
1889 free(yystack.l_mark[0].str);
1893 #line 929 "util/configparser.y"
1895 OUTYY(("P(server_cache_max_ttl:%s)\n", yystack.l_mark[0].str));
1896 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1897 yyerror("number expected");
1898 else cfg_parser->cfg->max_ttl = atoi(yystack.l_mark[0].str);
1899 free(yystack.l_mark[0].str);
1903 #line 938 "util/configparser.y"
1905 OUTYY(("P(server_cache_min_ttl:%s)\n", yystack.l_mark[0].str));
1906 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1907 yyerror("number expected");
1908 else cfg_parser->cfg->min_ttl = atoi(yystack.l_mark[0].str);
1909 free(yystack.l_mark[0].str);
1913 #line 947 "util/configparser.y"
1915 OUTYY(("P(server_bogus_ttl:%s)\n", yystack.l_mark[0].str));
1916 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1917 yyerror("number expected");
1918 else cfg_parser->cfg->bogus_ttl = atoi(yystack.l_mark[0].str);
1919 free(yystack.l_mark[0].str);
1923 #line 956 "util/configparser.y"
1925 OUTYY(("P(server_val_clean_additional:%s)\n", yystack.l_mark[0].str));
1926 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1927 yyerror("expected yes or no.");
1928 else cfg_parser->cfg->val_clean_additional =
1929 (strcmp(yystack.l_mark[0].str, "yes")==0);
1930 free(yystack.l_mark[0].str);
1934 #line 966 "util/configparser.y"
1936 OUTYY(("P(server_val_permissive_mode:%s)\n", yystack.l_mark[0].str));
1937 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1938 yyerror("expected yes or no.");
1939 else cfg_parser->cfg->val_permissive_mode =
1940 (strcmp(yystack.l_mark[0].str, "yes")==0);
1941 free(yystack.l_mark[0].str);
1945 #line 976 "util/configparser.y"
1947 OUTYY(("P(server_ignore_cd_flag:%s)\n", yystack.l_mark[0].str));
1948 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
1949 yyerror("expected yes or no.");
1950 else cfg_parser->cfg->ignore_cd = (strcmp(yystack.l_mark[0].str, "yes")==0);
1951 free(yystack.l_mark[0].str);
1955 #line 985 "util/configparser.y"
1957 OUTYY(("P(server_val_log_level:%s)\n", yystack.l_mark[0].str));
1958 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1959 yyerror("number expected");
1960 else cfg_parser->cfg->val_log_level = atoi(yystack.l_mark[0].str);
1961 free(yystack.l_mark[0].str);
1965 #line 994 "util/configparser.y"
1967 OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yystack.l_mark[0].str));
1968 free(cfg_parser->cfg->val_nsec3_key_iterations);
1969 cfg_parser->cfg->val_nsec3_key_iterations = yystack.l_mark[0].str;
1973 #line 1001 "util/configparser.y"
1975 OUTYY(("P(server_add_holddown:%s)\n", yystack.l_mark[0].str));
1976 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1977 yyerror("number expected");
1978 else cfg_parser->cfg->add_holddown = atoi(yystack.l_mark[0].str);
1979 free(yystack.l_mark[0].str);
1983 #line 1010 "util/configparser.y"
1985 OUTYY(("P(server_del_holddown:%s)\n", yystack.l_mark[0].str));
1986 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1987 yyerror("number expected");
1988 else cfg_parser->cfg->del_holddown = atoi(yystack.l_mark[0].str);
1989 free(yystack.l_mark[0].str);
1993 #line 1019 "util/configparser.y"
1995 OUTYY(("P(server_keep_missing:%s)\n", yystack.l_mark[0].str));
1996 if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
1997 yyerror("number expected");
1998 else cfg_parser->cfg->keep_missing = atoi(yystack.l_mark[0].str);
1999 free(yystack.l_mark[0].str);
2003 #line 1028 "util/configparser.y"
2005 OUTYY(("P(server_key_cache_size:%s)\n", yystack.l_mark[0].str));
2006 if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->key_cache_size))
2007 yyerror("memory size expected");
2008 free(yystack.l_mark[0].str);
2012 #line 1036 "util/configparser.y"
2014 OUTYY(("P(server_key_cache_slabs:%s)\n", yystack.l_mark[0].str));
2015 if(atoi(yystack.l_mark[0].str) == 0)
2016 yyerror("number expected");
2018 cfg_parser->cfg->key_cache_slabs = atoi(yystack.l_mark[0].str);
2019 if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
2020 yyerror("must be a power of 2");
2022 free(yystack.l_mark[0].str);
2026 #line 1049 "util/configparser.y"
2028 OUTYY(("P(server_neg_cache_size:%s)\n", yystack.l_mark[0].str));
2029 if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->neg_cache_size))
2030 yyerror("memory size expected");
2031 free(yystack.l_mark[0].str);
2035 #line 1057 "util/configparser.y"
2037 OUTYY(("P(server_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
2038 if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 &&
2039 strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 &&
2040 strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0
2041 && strcmp(yystack.l_mark[0].str, "typetransparent")!=0)
2042 yyerror("local-zone type: expected static, deny, "
2043 "refuse, redirect, transparent, "
2044 "typetransparent or nodefault");
2045 else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) {
2046 if(!cfg_strlist_insert(&cfg_parser->cfg->
2047 local_zones_nodefault, yystack.l_mark[-1].str))
2048 fatal_exit("out of memory adding local-zone");
2049 free(yystack.l_mark[0].str);
2051 if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
2052 yystack.l_mark[-1].str, yystack.l_mark[0].str))
2053 fatal_exit("out of memory adding local-zone");
2058 #line 1079 "util/configparser.y"
2060 OUTYY(("P(server_local_data:%s)\n", yystack.l_mark[0].str));
2061 if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yystack.l_mark[0].str))
2062 fatal_exit("out of memory adding local-data");
2066 #line 1086 "util/configparser.y"
2069 OUTYY(("P(server_local_data_ptr:%s)\n", yystack.l_mark[0].str));
2070 ptr = cfg_ptr_reverse(yystack.l_mark[0].str);
2071 free(yystack.l_mark[0].str);
2073 if(!cfg_strlist_insert(&cfg_parser->cfg->
2075 fatal_exit("out of memory adding local-data");
2077 yyerror("local-data-ptr could not be reversed");
2082 #line 1101 "util/configparser.y"
2084 OUTYY(("P(server_minimal_responses:%s)\n", yystack.l_mark[0].str));
2085 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
2086 yyerror("expected yes or no.");
2087 else cfg_parser->cfg->minimal_responses =
2088 (strcmp(yystack.l_mark[0].str, "yes")==0);
2089 free(yystack.l_mark[0].str);
2093 #line 1111 "util/configparser.y"
2095 OUTYY(("P(server_rrset_roundrobin:%s)\n", yystack.l_mark[0].str));
2096 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
2097 yyerror("expected yes or no.");
2098 else cfg_parser->cfg->rrset_roundrobin =
2099 (strcmp(yystack.l_mark[0].str, "yes")==0);
2100 free(yystack.l_mark[0].str);
2104 #line 1121 "util/configparser.y"
2106 OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
2107 if(cfg_parser->cfg->stubs->name)
2108 yyerror("stub name override, there must be one name "
2109 "for one stub-zone");
2110 free(cfg_parser->cfg->stubs->name);
2111 cfg_parser->cfg->stubs->name = yystack.l_mark[0].str;
2115 #line 1131 "util/configparser.y"
2117 OUTYY(("P(stub-host:%s)\n", yystack.l_mark[0].str));
2118 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yystack.l_mark[0].str))
2119 yyerror("out of memory");
2123 #line 1138 "util/configparser.y"
2125 OUTYY(("P(stub-addr:%s)\n", yystack.l_mark[0].str));
2126 if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yystack.l_mark[0].str))
2127 yyerror("out of memory");
2131 #line 1145 "util/configparser.y"
2133 OUTYY(("P(stub-first:%s)\n", yystack.l_mark[0].str));
2134 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
2135 yyerror("expected yes or no.");
2136 else cfg_parser->cfg->stubs->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
2137 free(yystack.l_mark[0].str);
2141 #line 1154 "util/configparser.y"
2143 OUTYY(("P(stub-prime:%s)\n", yystack.l_mark[0].str));
2144 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
2145 yyerror("expected yes or no.");
2146 else cfg_parser->cfg->stubs->isprime =
2147 (strcmp(yystack.l_mark[0].str, "yes")==0);
2148 free(yystack.l_mark[0].str);
2152 #line 1164 "util/configparser.y"
2154 OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
2155 if(cfg_parser->cfg->forwards->name)
2156 yyerror("forward name override, there must be one "
2157 "name for one forward-zone");
2158 free(cfg_parser->cfg->forwards->name);
2159 cfg_parser->cfg->forwards->name = yystack.l_mark[0].str;
2163 #line 1174 "util/configparser.y"
2165 OUTYY(("P(forward-host:%s)\n", yystack.l_mark[0].str));
2166 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yystack.l_mark[0].str))
2167 yyerror("out of memory");
2171 #line 1181 "util/configparser.y"
2173 OUTYY(("P(forward-addr:%s)\n", yystack.l_mark[0].str));
2174 if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yystack.l_mark[0].str))
2175 yyerror("out of memory");
2179 #line 1188 "util/configparser.y"
2181 OUTYY(("P(forward-first:%s)\n", yystack.l_mark[0].str));
2182 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
2183 yyerror("expected yes or no.");
2184 else cfg_parser->cfg->forwards->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
2185 free(yystack.l_mark[0].str);
2189 #line 1197 "util/configparser.y"
2191 OUTYY(("\nP(remote-control:)\n"));
2195 #line 1208 "util/configparser.y"
2197 OUTYY(("P(control_enable:%s)\n", yystack.l_mark[0].str));
2198 if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
2199 yyerror("expected yes or no.");
2200 else cfg_parser->cfg->remote_control_enable =
2201 (strcmp(yystack.l_mark[0].str, "yes")==0);
2202 free(yystack.l_mark[0].str);
2206 #line 1218 "util/configparser.y"
2208 OUTYY(("P(control_port:%s)\n", yystack.l_mark[0].str));
2209 if(atoi(yystack.l_mark[0].str) == 0)
2210 yyerror("control port number expected");
2211 else cfg_parser->cfg->control_port = atoi(yystack.l_mark[0].str);
2212 free(yystack.l_mark[0].str);
2216 #line 1227 "util/configparser.y"
2218 OUTYY(("P(control_interface:%s)\n", yystack.l_mark[0].str));
2219 if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, yystack.l_mark[0].str))
2220 yyerror("out of memory");
2224 #line 1234 "util/configparser.y"
2226 OUTYY(("P(rc_server_key_file:%s)\n", yystack.l_mark[0].str));
2227 free(cfg_parser->cfg->server_key_file);
2228 cfg_parser->cfg->server_key_file = yystack.l_mark[0].str;
2232 #line 1241 "util/configparser.y"
2234 OUTYY(("P(rc_server_cert_file:%s)\n", yystack.l_mark[0].str));
2235 free(cfg_parser->cfg->server_cert_file);
2236 cfg_parser->cfg->server_cert_file = yystack.l_mark[0].str;
2240 #line 1248 "util/configparser.y"
2242 OUTYY(("P(rc_control_key_file:%s)\n", yystack.l_mark[0].str));
2243 free(cfg_parser->cfg->control_key_file);
2244 cfg_parser->cfg->control_key_file = yystack.l_mark[0].str;
2248 #line 1255 "util/configparser.y"
2250 OUTYY(("P(rc_control_cert_file:%s)\n", yystack.l_mark[0].str));
2251 free(cfg_parser->cfg->control_cert_file);
2252 cfg_parser->cfg->control_cert_file = yystack.l_mark[0].str;
2256 #line 1262 "util/configparser.y"
2258 OUTYY(("\nP(python:)\n"));
2262 #line 1271 "util/configparser.y"
2264 OUTYY(("P(python-script:%s)\n", yystack.l_mark[0].str));
2265 free(cfg_parser->cfg->python_script);
2266 cfg_parser->cfg->python_script = yystack.l_mark[0].str;
2269 #line 2269 "util/configparser.c"
2271 yystack.s_mark -= yym;
2272 yystate = *yystack.s_mark;
2273 yystack.l_mark -= yym;
2275 if (yystate == 0 && yym == 0)
2279 printf("%sdebug: after reduction, shifting from state 0 to\
2280 state %d\n", YYPREFIX, YYFINAL);
2283 *++yystack.s_mark = YYFINAL;
2284 *++yystack.l_mark = yyval;
2287 if ((yychar = YYLEX) < 0) yychar = 0;
2292 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2293 if (!yys) yys = "illegal-symbol";
2294 printf("%sdebug: state %d, reading %d (%s)\n",
2295 YYPREFIX, YYFINAL, yychar, yys);
2299 if (yychar == 0) goto yyaccept;
2302 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
2303 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
2304 yystate = yytable[yyn];
2306 yystate = yydgoto[yym];
2309 printf("%sdebug: after reduction, shifting from state %d \
2310 to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
2312 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
2316 *++yystack.s_mark = (short) yystate;
2317 *++yystack.l_mark = yyval;
2321 yyerror("yacc stack overflow");
2324 yyfreestack(&yystack);
2328 yyfreestack(&yystack);