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