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