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