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