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