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