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