xref: /freebsd/contrib/unbound/util/configparser.c (revision 8b29c373e6ab530b62122ea2adcbe637c07e06c9)
1 /* A Bison parser, made by GNU Bison 3.8.2.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6    Inc.
7 
8    This program is free software: you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation, either version 3 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20 
21 /* As a special exception, you may create a larger work that contains
22    part or all of the Bison parser skeleton and distribute that work
23    under terms of your choice, so long as that work isn't itself a
24    parser generator using the skeleton or a modified version thereof
25    as a parser skeleton.  Alternatively, if you modify or redistribute
26    the parser skeleton itself, you may (at your option) remove this
27    special exception, which will cause the skeleton and the resulting
28    Bison output files to be licensed under the GNU General Public
29    License without this special exception.
30 
31    This special exception was added by the Free Software Foundation in
32    version 2.2 of Bison.  */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35    simplifying the original so-called "semantic" parser.  */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38    especially those whose name start with YY_ or yy_.  They are
39    private implementation details that can be changed or removed.  */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42    infringing on user name space.  This should be done even for local
43    variables, as they might otherwise be expanded by user macros.
44    There are some unavoidable exceptions within include files to
45    define necessary library symbols; they are noted "INFRINGES ON
46    USER NAME SPACE" below.  */
47 
48 /* Identify Bison output, and Bison version.  */
49 #define YYBISON 30802
50 
51 /* Bison version string.  */
52 #define YYBISON_VERSION "3.8.2"
53 
54 /* Skeleton name.  */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers.  */
58 #define YYPURE 0
59 
60 /* Push parsers.  */
61 #define YYPUSH 0
62 
63 /* Pull parsers.  */
64 #define YYPULL 1
65 
66 
67 
68 
69 /* First part of user prologue.  */
70 #line 38 "util/configparser.y"
71 
72 #include "config.h"
73 
74 #include <stdarg.h>
75 #include <stdio.h>
76 #include <string.h>
77 #include <stdlib.h>
78 #include <assert.h>
79 
80 #include "util/configyyrename.h"
81 #include "util/config_file.h"
82 #include "util/net_help.h"
83 #include "sldns/str2wire.h"
84 
85 int ub_c_lex(void);
86 void ub_c_error(const char *message);
87 
88 static void validate_respip_action(const char* action);
89 static void validate_acl_action(const char* action);
90 
91 /* these need to be global, otherwise they cannot be used inside yacc */
92 extern struct config_parser_state* cfg_parser;
93 
94 #if 0
95 #define OUTYY(s)  printf s /* used ONLY when debugging */
96 #else
97 #define OUTYY(s)
98 #endif
99 
100 
101 #line 102 "util/configparser.c"
102 
103 # ifndef YY_CAST
104 #  ifdef __cplusplus
105 #   define YY_CAST(Type, Val) static_cast<Type> (Val)
106 #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
107 #  else
108 #   define YY_CAST(Type, Val) ((Type) (Val))
109 #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
110 #  endif
111 # endif
112 # ifndef YY_NULLPTR
113 #  if defined __cplusplus
114 #   if 201103L <= __cplusplus
115 #    define YY_NULLPTR nullptr
116 #   else
117 #    define YY_NULLPTR 0
118 #   endif
119 #  else
120 #   define YY_NULLPTR ((void*)0)
121 #  endif
122 # endif
123 
124 #include "configparser.h"
125 /* Symbol kind.  */
126 enum yysymbol_kind_t
127 {
128   YYSYMBOL_YYEMPTY = -2,
129   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
130   YYSYMBOL_YYerror = 1,                    /* error  */
131   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
132   YYSYMBOL_SPACE = 3,                      /* SPACE  */
133   YYSYMBOL_LETTER = 4,                     /* LETTER  */
134   YYSYMBOL_NEWLINE = 5,                    /* NEWLINE  */
135   YYSYMBOL_COMMENT = 6,                    /* COMMENT  */
136   YYSYMBOL_COLON = 7,                      /* COLON  */
137   YYSYMBOL_ANY = 8,                        /* ANY  */
138   YYSYMBOL_ZONESTR = 9,                    /* ZONESTR  */
139   YYSYMBOL_STRING_ARG = 10,                /* STRING_ARG  */
140   YYSYMBOL_VAR_FORCE_TOPLEVEL = 11,        /* VAR_FORCE_TOPLEVEL  */
141   YYSYMBOL_VAR_SERVER = 12,                /* VAR_SERVER  */
142   YYSYMBOL_VAR_VERBOSITY = 13,             /* VAR_VERBOSITY  */
143   YYSYMBOL_VAR_NUM_THREADS = 14,           /* VAR_NUM_THREADS  */
144   YYSYMBOL_VAR_PORT = 15,                  /* VAR_PORT  */
145   YYSYMBOL_VAR_OUTGOING_RANGE = 16,        /* VAR_OUTGOING_RANGE  */
146   YYSYMBOL_VAR_INTERFACE = 17,             /* VAR_INTERFACE  */
147   YYSYMBOL_VAR_PREFER_IP4 = 18,            /* VAR_PREFER_IP4  */
148   YYSYMBOL_VAR_DO_IP4 = 19,                /* VAR_DO_IP4  */
149   YYSYMBOL_VAR_DO_IP6 = 20,                /* VAR_DO_IP6  */
150   YYSYMBOL_VAR_DO_NAT64 = 21,              /* VAR_DO_NAT64  */
151   YYSYMBOL_VAR_PREFER_IP6 = 22,            /* VAR_PREFER_IP6  */
152   YYSYMBOL_VAR_DO_UDP = 23,                /* VAR_DO_UDP  */
153   YYSYMBOL_VAR_DO_TCP = 24,                /* VAR_DO_TCP  */
154   YYSYMBOL_VAR_TCP_MSS = 25,               /* VAR_TCP_MSS  */
155   YYSYMBOL_VAR_OUTGOING_TCP_MSS = 26,      /* VAR_OUTGOING_TCP_MSS  */
156   YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 27,      /* VAR_TCP_IDLE_TIMEOUT  */
157   YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 28,    /* VAR_EDNS_TCP_KEEPALIVE  */
158   YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 29, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
159   YYSYMBOL_VAR_SOCK_QUEUE_TIMEOUT = 30,    /* VAR_SOCK_QUEUE_TIMEOUT  */
160   YYSYMBOL_VAR_CHROOT = 31,                /* VAR_CHROOT  */
161   YYSYMBOL_VAR_USERNAME = 32,              /* VAR_USERNAME  */
162   YYSYMBOL_VAR_DIRECTORY = 33,             /* VAR_DIRECTORY  */
163   YYSYMBOL_VAR_LOGFILE = 34,               /* VAR_LOGFILE  */
164   YYSYMBOL_VAR_PIDFILE = 35,               /* VAR_PIDFILE  */
165   YYSYMBOL_VAR_MSG_CACHE_SIZE = 36,        /* VAR_MSG_CACHE_SIZE  */
166   YYSYMBOL_VAR_MSG_CACHE_SLABS = 37,       /* VAR_MSG_CACHE_SLABS  */
167   YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 38, /* VAR_NUM_QUERIES_PER_THREAD  */
168   YYSYMBOL_VAR_RRSET_CACHE_SIZE = 39,      /* VAR_RRSET_CACHE_SIZE  */
169   YYSYMBOL_VAR_RRSET_CACHE_SLABS = 40,     /* VAR_RRSET_CACHE_SLABS  */
170   YYSYMBOL_VAR_OUTGOING_NUM_TCP = 41,      /* VAR_OUTGOING_NUM_TCP  */
171   YYSYMBOL_VAR_INFRA_HOST_TTL = 42,        /* VAR_INFRA_HOST_TTL  */
172   YYSYMBOL_VAR_INFRA_LAME_TTL = 43,        /* VAR_INFRA_LAME_TTL  */
173   YYSYMBOL_VAR_INFRA_CACHE_SLABS = 44,     /* VAR_INFRA_CACHE_SLABS  */
174   YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 45,  /* VAR_INFRA_CACHE_NUMHOSTS  */
175   YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 46, /* VAR_INFRA_CACHE_LAME_SIZE  */
176   YYSYMBOL_VAR_NAME = 47,                  /* VAR_NAME  */
177   YYSYMBOL_VAR_STUB_ZONE = 48,             /* VAR_STUB_ZONE  */
178   YYSYMBOL_VAR_STUB_HOST = 49,             /* VAR_STUB_HOST  */
179   YYSYMBOL_VAR_STUB_ADDR = 50,             /* VAR_STUB_ADDR  */
180   YYSYMBOL_VAR_TARGET_FETCH_POLICY = 51,   /* VAR_TARGET_FETCH_POLICY  */
181   YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 52,  /* VAR_HARDEN_SHORT_BUFSIZE  */
182   YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 53,  /* VAR_HARDEN_LARGE_QUERIES  */
183   YYSYMBOL_VAR_FORWARD_ZONE = 54,          /* VAR_FORWARD_ZONE  */
184   YYSYMBOL_VAR_FORWARD_HOST = 55,          /* VAR_FORWARD_HOST  */
185   YYSYMBOL_VAR_FORWARD_ADDR = 56,          /* VAR_FORWARD_ADDR  */
186   YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 57,  /* VAR_DO_NOT_QUERY_ADDRESS  */
187   YYSYMBOL_VAR_HIDE_IDENTITY = 58,         /* VAR_HIDE_IDENTITY  */
188   YYSYMBOL_VAR_HIDE_VERSION = 59,          /* VAR_HIDE_VERSION  */
189   YYSYMBOL_VAR_IDENTITY = 60,              /* VAR_IDENTITY  */
190   YYSYMBOL_VAR_VERSION = 61,               /* VAR_VERSION  */
191   YYSYMBOL_VAR_HARDEN_GLUE = 62,           /* VAR_HARDEN_GLUE  */
192   YYSYMBOL_VAR_MODULE_CONF = 63,           /* VAR_MODULE_CONF  */
193   YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 64,     /* VAR_TRUST_ANCHOR_FILE  */
194   YYSYMBOL_VAR_TRUST_ANCHOR = 65,          /* VAR_TRUST_ANCHOR  */
195   YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 66,     /* VAR_VAL_OVERRIDE_DATE  */
196   YYSYMBOL_VAR_BOGUS_TTL = 67,             /* VAR_BOGUS_TTL  */
197   YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 68,  /* VAR_VAL_CLEAN_ADDITIONAL  */
198   YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 69,   /* VAR_VAL_PERMISSIVE_MODE  */
199   YYSYMBOL_VAR_INCOMING_NUM_TCP = 70,      /* VAR_INCOMING_NUM_TCP  */
200   YYSYMBOL_VAR_MSG_BUFFER_SIZE = 71,       /* VAR_MSG_BUFFER_SIZE  */
201   YYSYMBOL_VAR_KEY_CACHE_SIZE = 72,        /* VAR_KEY_CACHE_SIZE  */
202   YYSYMBOL_VAR_KEY_CACHE_SLABS = 73,       /* VAR_KEY_CACHE_SLABS  */
203   YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 74,     /* VAR_TRUSTED_KEYS_FILE  */
204   YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 75, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
205   YYSYMBOL_VAR_USE_SYSLOG = 76,            /* VAR_USE_SYSLOG  */
206   YYSYMBOL_VAR_OUTGOING_INTERFACE = 77,    /* VAR_OUTGOING_INTERFACE  */
207   YYSYMBOL_VAR_ROOT_HINTS = 78,            /* VAR_ROOT_HINTS  */
208   YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 79, /* VAR_DO_NOT_QUERY_LOCALHOST  */
209   YYSYMBOL_VAR_CACHE_MAX_TTL = 80,         /* VAR_CACHE_MAX_TTL  */
210   YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 81, /* VAR_HARDEN_DNSSEC_STRIPPED  */
211   YYSYMBOL_VAR_ACCESS_CONTROL = 82,        /* VAR_ACCESS_CONTROL  */
212   YYSYMBOL_VAR_LOCAL_ZONE = 83,            /* VAR_LOCAL_ZONE  */
213   YYSYMBOL_VAR_LOCAL_DATA = 84,            /* VAR_LOCAL_DATA  */
214   YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 85,   /* VAR_INTERFACE_AUTOMATIC  */
215   YYSYMBOL_VAR_STATISTICS_INTERVAL = 86,   /* VAR_STATISTICS_INTERVAL  */
216   YYSYMBOL_VAR_DO_DAEMONIZE = 87,          /* VAR_DO_DAEMONIZE  */
217   YYSYMBOL_VAR_USE_CAPS_FOR_ID = 88,       /* VAR_USE_CAPS_FOR_ID  */
218   YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 89, /* VAR_STATISTICS_CUMULATIVE  */
219   YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 90,  /* VAR_OUTGOING_PORT_PERMIT  */
220   YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 91,   /* VAR_OUTGOING_PORT_AVOID  */
221   YYSYMBOL_VAR_DLV_ANCHOR_FILE = 92,       /* VAR_DLV_ANCHOR_FILE  */
222   YYSYMBOL_VAR_DLV_ANCHOR = 93,            /* VAR_DLV_ANCHOR  */
223   YYSYMBOL_VAR_NEG_CACHE_SIZE = 94,        /* VAR_NEG_CACHE_SIZE  */
224   YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 95,  /* VAR_HARDEN_REFERRAL_PATH  */
225   YYSYMBOL_VAR_PRIVATE_ADDRESS = 96,       /* VAR_PRIVATE_ADDRESS  */
226   YYSYMBOL_VAR_PRIVATE_DOMAIN = 97,        /* VAR_PRIVATE_DOMAIN  */
227   YYSYMBOL_VAR_REMOTE_CONTROL = 98,        /* VAR_REMOTE_CONTROL  */
228   YYSYMBOL_VAR_CONTROL_ENABLE = 99,        /* VAR_CONTROL_ENABLE  */
229   YYSYMBOL_VAR_CONTROL_INTERFACE = 100,    /* VAR_CONTROL_INTERFACE  */
230   YYSYMBOL_VAR_CONTROL_PORT = 101,         /* VAR_CONTROL_PORT  */
231   YYSYMBOL_VAR_SERVER_KEY_FILE = 102,      /* VAR_SERVER_KEY_FILE  */
232   YYSYMBOL_VAR_SERVER_CERT_FILE = 103,     /* VAR_SERVER_CERT_FILE  */
233   YYSYMBOL_VAR_CONTROL_KEY_FILE = 104,     /* VAR_CONTROL_KEY_FILE  */
234   YYSYMBOL_VAR_CONTROL_CERT_FILE = 105,    /* VAR_CONTROL_CERT_FILE  */
235   YYSYMBOL_VAR_CONTROL_USE_CERT = 106,     /* VAR_CONTROL_USE_CERT  */
236   YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 107,    /* VAR_TCP_REUSE_TIMEOUT  */
237   YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 108, /* VAR_MAX_REUSE_TCP_QUERIES  */
238   YYSYMBOL_VAR_EXTENDED_STATISTICS = 109,  /* VAR_EXTENDED_STATISTICS  */
239   YYSYMBOL_VAR_LOCAL_DATA_PTR = 110,       /* VAR_LOCAL_DATA_PTR  */
240   YYSYMBOL_VAR_JOSTLE_TIMEOUT = 111,       /* VAR_JOSTLE_TIMEOUT  */
241   YYSYMBOL_VAR_STUB_PRIME = 112,           /* VAR_STUB_PRIME  */
242   YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 113, /* VAR_UNWANTED_REPLY_THRESHOLD  */
243   YYSYMBOL_VAR_LOG_TIME_ASCII = 114,       /* VAR_LOG_TIME_ASCII  */
244   YYSYMBOL_VAR_DOMAIN_INSECURE = 115,      /* VAR_DOMAIN_INSECURE  */
245   YYSYMBOL_VAR_PYTHON = 116,               /* VAR_PYTHON  */
246   YYSYMBOL_VAR_PYTHON_SCRIPT = 117,        /* VAR_PYTHON_SCRIPT  */
247   YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 118,     /* VAR_VAL_SIG_SKEW_MIN  */
248   YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 119,     /* VAR_VAL_SIG_SKEW_MAX  */
249   YYSYMBOL_VAR_VAL_MAX_RESTART = 120,      /* VAR_VAL_MAX_RESTART  */
250   YYSYMBOL_VAR_CACHE_MIN_TTL = 121,        /* VAR_CACHE_MIN_TTL  */
251   YYSYMBOL_VAR_VAL_LOG_LEVEL = 122,        /* VAR_VAL_LOG_LEVEL  */
252   YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 123, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
253   YYSYMBOL_VAR_KEEP_MISSING = 124,         /* VAR_KEEP_MISSING  */
254   YYSYMBOL_VAR_ADD_HOLDDOWN = 125,         /* VAR_ADD_HOLDDOWN  */
255   YYSYMBOL_VAR_DEL_HOLDDOWN = 126,         /* VAR_DEL_HOLDDOWN  */
256   YYSYMBOL_VAR_SO_RCVBUF = 127,            /* VAR_SO_RCVBUF  */
257   YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 128,     /* VAR_EDNS_BUFFER_SIZE  */
258   YYSYMBOL_VAR_PREFETCH = 129,             /* VAR_PREFETCH  */
259   YYSYMBOL_VAR_PREFETCH_KEY = 130,         /* VAR_PREFETCH_KEY  */
260   YYSYMBOL_VAR_SO_SNDBUF = 131,            /* VAR_SO_SNDBUF  */
261   YYSYMBOL_VAR_SO_REUSEPORT = 132,         /* VAR_SO_REUSEPORT  */
262   YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 133, /* VAR_HARDEN_BELOW_NXDOMAIN  */
263   YYSYMBOL_VAR_IGNORE_CD_FLAG = 134,       /* VAR_IGNORE_CD_FLAG  */
264   YYSYMBOL_VAR_LOG_QUERIES = 135,          /* VAR_LOG_QUERIES  */
265   YYSYMBOL_VAR_LOG_REPLIES = 136,          /* VAR_LOG_REPLIES  */
266   YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 137,    /* VAR_LOG_LOCAL_ACTIONS  */
267   YYSYMBOL_VAR_TCP_UPSTREAM = 138,         /* VAR_TCP_UPSTREAM  */
268   YYSYMBOL_VAR_SSL_UPSTREAM = 139,         /* VAR_SSL_UPSTREAM  */
269   YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 140, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
270   YYSYMBOL_VAR_SSL_SERVICE_KEY = 141,      /* VAR_SSL_SERVICE_KEY  */
271   YYSYMBOL_VAR_SSL_SERVICE_PEM = 142,      /* VAR_SSL_SERVICE_PEM  */
272   YYSYMBOL_VAR_SSL_PORT = 143,             /* VAR_SSL_PORT  */
273   YYSYMBOL_VAR_FORWARD_FIRST = 144,        /* VAR_FORWARD_FIRST  */
274   YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 145,    /* VAR_STUB_SSL_UPSTREAM  */
275   YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 146, /* VAR_FORWARD_SSL_UPSTREAM  */
276   YYSYMBOL_VAR_TLS_CERT_BUNDLE = 147,      /* VAR_TLS_CERT_BUNDLE  */
277   YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 148,    /* VAR_STUB_TCP_UPSTREAM  */
278   YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 149, /* VAR_FORWARD_TCP_UPSTREAM  */
279   YYSYMBOL_VAR_HTTPS_PORT = 150,           /* VAR_HTTPS_PORT  */
280   YYSYMBOL_VAR_HTTP_ENDPOINT = 151,        /* VAR_HTTP_ENDPOINT  */
281   YYSYMBOL_VAR_HTTP_MAX_STREAMS = 152,     /* VAR_HTTP_MAX_STREAMS  */
282   YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 153, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
283   YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 154, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
284   YYSYMBOL_VAR_HTTP_NODELAY = 155,         /* VAR_HTTP_NODELAY  */
285   YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 156, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
286   YYSYMBOL_VAR_STUB_FIRST = 157,           /* VAR_STUB_FIRST  */
287   YYSYMBOL_VAR_MINIMAL_RESPONSES = 158,    /* VAR_MINIMAL_RESPONSES  */
288   YYSYMBOL_VAR_RRSET_ROUNDROBIN = 159,     /* VAR_RRSET_ROUNDROBIN  */
289   YYSYMBOL_VAR_MAX_UDP_SIZE = 160,         /* VAR_MAX_UDP_SIZE  */
290   YYSYMBOL_VAR_DELAY_CLOSE = 161,          /* VAR_DELAY_CLOSE  */
291   YYSYMBOL_VAR_UDP_CONNECT = 162,          /* VAR_UDP_CONNECT  */
292   YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 163,    /* VAR_UNBLOCK_LAN_ZONES  */
293   YYSYMBOL_VAR_INSECURE_LAN_ZONES = 164,   /* VAR_INSECURE_LAN_ZONES  */
294   YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 165,  /* VAR_INFRA_CACHE_MIN_RTT  */
295   YYSYMBOL_VAR_INFRA_CACHE_MAX_RTT = 166,  /* VAR_INFRA_CACHE_MAX_RTT  */
296   YYSYMBOL_VAR_INFRA_KEEP_PROBING = 167,   /* VAR_INFRA_KEEP_PROBING  */
297   YYSYMBOL_VAR_DNS64_PREFIX = 168,         /* VAR_DNS64_PREFIX  */
298   YYSYMBOL_VAR_DNS64_SYNTHALL = 169,       /* VAR_DNS64_SYNTHALL  */
299   YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 170,    /* VAR_DNS64_IGNORE_AAAA  */
300   YYSYMBOL_VAR_NAT64_PREFIX = 171,         /* VAR_NAT64_PREFIX  */
301   YYSYMBOL_VAR_DNSTAP = 172,               /* VAR_DNSTAP  */
302   YYSYMBOL_VAR_DNSTAP_ENABLE = 173,        /* VAR_DNSTAP_ENABLE  */
303   YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 174,   /* VAR_DNSTAP_SOCKET_PATH  */
304   YYSYMBOL_VAR_DNSTAP_IP = 175,            /* VAR_DNSTAP_IP  */
305   YYSYMBOL_VAR_DNSTAP_TLS = 176,           /* VAR_DNSTAP_TLS  */
306   YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 177, /* VAR_DNSTAP_TLS_SERVER_NAME  */
307   YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 178, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
308   YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 179, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
309   YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 180, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
310   YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 181, /* VAR_DNSTAP_SEND_IDENTITY  */
311   YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 182,  /* VAR_DNSTAP_SEND_VERSION  */
312   YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 183, /* VAR_DNSTAP_BIDIRECTIONAL  */
313   YYSYMBOL_VAR_DNSTAP_IDENTITY = 184,      /* VAR_DNSTAP_IDENTITY  */
314   YYSYMBOL_VAR_DNSTAP_VERSION = 185,       /* VAR_DNSTAP_VERSION  */
315   YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
316   YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
317   YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 188, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
318   YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 189, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
319   YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 190, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
320   YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 191, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
321   YYSYMBOL_VAR_DNSTAP_SAMPLE_RATE = 192,   /* VAR_DNSTAP_SAMPLE_RATE  */
322   YYSYMBOL_VAR_RESPONSE_IP_TAG = 193,      /* VAR_RESPONSE_IP_TAG  */
323   YYSYMBOL_VAR_RESPONSE_IP = 194,          /* VAR_RESPONSE_IP  */
324   YYSYMBOL_VAR_RESPONSE_IP_DATA = 195,     /* VAR_RESPONSE_IP_DATA  */
325   YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 196, /* VAR_HARDEN_ALGO_DOWNGRADE  */
326   YYSYMBOL_VAR_IP_TRANSPARENT = 197,       /* VAR_IP_TRANSPARENT  */
327   YYSYMBOL_VAR_IP_DSCP = 198,              /* VAR_IP_DSCP  */
328   YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 199, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
329   YYSYMBOL_VAR_IP_RATELIMIT = 200,         /* VAR_IP_RATELIMIT  */
330   YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 201,   /* VAR_IP_RATELIMIT_SLABS  */
331   YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 202,    /* VAR_IP_RATELIMIT_SIZE  */
332   YYSYMBOL_VAR_RATELIMIT = 203,            /* VAR_RATELIMIT  */
333   YYSYMBOL_VAR_RATELIMIT_SLABS = 204,      /* VAR_RATELIMIT_SLABS  */
334   YYSYMBOL_VAR_RATELIMIT_SIZE = 205,       /* VAR_RATELIMIT_SIZE  */
335   YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 206,   /* VAR_OUTBOUND_MSG_RETRY  */
336   YYSYMBOL_VAR_MAX_SENT_COUNT = 207,       /* VAR_MAX_SENT_COUNT  */
337   YYSYMBOL_VAR_MAX_QUERY_RESTARTS = 208,   /* VAR_MAX_QUERY_RESTARTS  */
338   YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 209, /* VAR_RATELIMIT_FOR_DOMAIN  */
339   YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 210, /* VAR_RATELIMIT_BELOW_DOMAIN  */
340   YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 211,  /* VAR_IP_RATELIMIT_FACTOR  */
341   YYSYMBOL_VAR_RATELIMIT_FACTOR = 212,     /* VAR_RATELIMIT_FACTOR  */
342   YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 213, /* VAR_IP_RATELIMIT_BACKOFF  */
343   YYSYMBOL_VAR_RATELIMIT_BACKOFF = 214,    /* VAR_RATELIMIT_BACKOFF  */
344   YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 215,   /* VAR_SEND_CLIENT_SUBNET  */
345   YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 216,   /* VAR_CLIENT_SUBNET_ZONE  */
346   YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 217, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
347   YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 218, /* VAR_CLIENT_SUBNET_OPCODE  */
348   YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 219, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
349   YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 220, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
350   YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 221, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
351   YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 222, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
352   YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 223, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
353   YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 224, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
354   YYSYMBOL_VAR_CAPS_WHITELIST = 225,       /* VAR_CAPS_WHITELIST  */
355   YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 226, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
356   YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 227, /* VAR_PERMIT_SMALL_HOLDDOWN  */
357   YYSYMBOL_VAR_CACHE_MIN_NEGATIVE_TTL = 228, /* VAR_CACHE_MIN_NEGATIVE_TTL  */
358   YYSYMBOL_VAR_QNAME_MINIMISATION = 229,   /* VAR_QNAME_MINIMISATION  */
359   YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 230, /* VAR_QNAME_MINIMISATION_STRICT  */
360   YYSYMBOL_VAR_IP_FREEBIND = 231,          /* VAR_IP_FREEBIND  */
361   YYSYMBOL_VAR_DEFINE_TAG = 232,           /* VAR_DEFINE_TAG  */
362   YYSYMBOL_VAR_LOCAL_ZONE_TAG = 233,       /* VAR_LOCAL_ZONE_TAG  */
363   YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 234,   /* VAR_ACCESS_CONTROL_TAG  */
364   YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 235,  /* VAR_LOCAL_ZONE_OVERRIDE  */
365   YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 236, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
366   YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 237, /* VAR_ACCESS_CONTROL_TAG_DATA  */
367   YYSYMBOL_VAR_VIEW = 238,                 /* VAR_VIEW  */
368   YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 239,  /* VAR_ACCESS_CONTROL_VIEW  */
369   YYSYMBOL_VAR_VIEW_FIRST = 240,           /* VAR_VIEW_FIRST  */
370   YYSYMBOL_VAR_SERVE_EXPIRED = 241,        /* VAR_SERVE_EXPIRED  */
371   YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 242,    /* VAR_SERVE_EXPIRED_TTL  */
372   YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 243, /* VAR_SERVE_EXPIRED_TTL_RESET  */
373   YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 244, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
374   YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 245, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
375   YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 246,    /* VAR_EDE_SERVE_EXPIRED  */
376   YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 247,   /* VAR_SERVE_ORIGINAL_TTL  */
377   YYSYMBOL_VAR_FAKE_DSA = 248,             /* VAR_FAKE_DSA  */
378   YYSYMBOL_VAR_FAKE_SHA1 = 249,            /* VAR_FAKE_SHA1  */
379   YYSYMBOL_VAR_LOG_IDENTITY = 250,         /* VAR_LOG_IDENTITY  */
380   YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 251,     /* VAR_HIDE_TRUSTANCHOR  */
381   YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 252, /* VAR_HIDE_HTTP_USER_AGENT  */
382   YYSYMBOL_VAR_HTTP_USER_AGENT = 253,      /* VAR_HTTP_USER_AGENT  */
383   YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 254, /* VAR_TRUST_ANCHOR_SIGNALING  */
384   YYSYMBOL_VAR_AGGRESSIVE_NSEC = 255,      /* VAR_AGGRESSIVE_NSEC  */
385   YYSYMBOL_VAR_USE_SYSTEMD = 256,          /* VAR_USE_SYSTEMD  */
386   YYSYMBOL_VAR_SHM_ENABLE = 257,           /* VAR_SHM_ENABLE  */
387   YYSYMBOL_VAR_SHM_KEY = 258,              /* VAR_SHM_KEY  */
388   YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 259,    /* VAR_ROOT_KEY_SENTINEL  */
389   YYSYMBOL_VAR_DNSCRYPT = 260,             /* VAR_DNSCRYPT  */
390   YYSYMBOL_VAR_DNSCRYPT_ENABLE = 261,      /* VAR_DNSCRYPT_ENABLE  */
391   YYSYMBOL_VAR_DNSCRYPT_PORT = 262,        /* VAR_DNSCRYPT_PORT  */
392   YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 263,    /* VAR_DNSCRYPT_PROVIDER  */
393   YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 264,  /* VAR_DNSCRYPT_SECRET_KEY  */
394   YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 265, /* VAR_DNSCRYPT_PROVIDER_CERT  */
395   YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 266, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
396   YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 267, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
397   YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 268, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
398   YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 269, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
399   YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 270, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
400   YYSYMBOL_VAR_PAD_RESPONSES = 271,        /* VAR_PAD_RESPONSES  */
401   YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 272, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
402   YYSYMBOL_VAR_PAD_QUERIES = 273,          /* VAR_PAD_QUERIES  */
403   YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 274, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
404   YYSYMBOL_VAR_IPSECMOD_ENABLED = 275,     /* VAR_IPSECMOD_ENABLED  */
405   YYSYMBOL_VAR_IPSECMOD_HOOK = 276,        /* VAR_IPSECMOD_HOOK  */
406   YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 277, /* VAR_IPSECMOD_IGNORE_BOGUS  */
407   YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 278,     /* VAR_IPSECMOD_MAX_TTL  */
408   YYSYMBOL_VAR_IPSECMOD_WHITELIST = 279,   /* VAR_IPSECMOD_WHITELIST  */
409   YYSYMBOL_VAR_IPSECMOD_STRICT = 280,      /* VAR_IPSECMOD_STRICT  */
410   YYSYMBOL_VAR_CACHEDB = 281,              /* VAR_CACHEDB  */
411   YYSYMBOL_VAR_CACHEDB_BACKEND = 282,      /* VAR_CACHEDB_BACKEND  */
412   YYSYMBOL_VAR_CACHEDB_SECRETSEED = 283,   /* VAR_CACHEDB_SECRETSEED  */
413   YYSYMBOL_VAR_CACHEDB_REDISHOST = 284,    /* VAR_CACHEDB_REDISHOST  */
414   YYSYMBOL_VAR_CACHEDB_REDISREPLICAHOST = 285, /* VAR_CACHEDB_REDISREPLICAHOST  */
415   YYSYMBOL_VAR_CACHEDB_REDISPORT = 286,    /* VAR_CACHEDB_REDISPORT  */
416   YYSYMBOL_VAR_CACHEDB_REDISREPLICAPORT = 287, /* VAR_CACHEDB_REDISREPLICAPORT  */
417   YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 288, /* VAR_CACHEDB_REDISTIMEOUT  */
418   YYSYMBOL_VAR_CACHEDB_REDISREPLICATIMEOUT = 289, /* VAR_CACHEDB_REDISREPLICATIMEOUT  */
419   YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 290, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
420   YYSYMBOL_VAR_CACHEDB_REDISPATH = 291,    /* VAR_CACHEDB_REDISPATH  */
421   YYSYMBOL_VAR_CACHEDB_REDISREPLICAPATH = 292, /* VAR_CACHEDB_REDISREPLICAPATH  */
422   YYSYMBOL_VAR_CACHEDB_REDISPASSWORD = 293, /* VAR_CACHEDB_REDISPASSWORD  */
423   YYSYMBOL_VAR_CACHEDB_REDISREPLICAPASSWORD = 294, /* VAR_CACHEDB_REDISREPLICAPASSWORD  */
424   YYSYMBOL_VAR_CACHEDB_REDISLOGICALDB = 295, /* VAR_CACHEDB_REDISLOGICALDB  */
425   YYSYMBOL_VAR_CACHEDB_REDISREPLICALOGICALDB = 296, /* VAR_CACHEDB_REDISREPLICALOGICALDB  */
426   YYSYMBOL_VAR_CACHEDB_REDISCOMMANDTIMEOUT = 297, /* VAR_CACHEDB_REDISCOMMANDTIMEOUT  */
427   YYSYMBOL_VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT = 298, /* VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT  */
428   YYSYMBOL_VAR_CACHEDB_REDISCONNECTTIMEOUT = 299, /* VAR_CACHEDB_REDISCONNECTTIMEOUT  */
429   YYSYMBOL_VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT = 300, /* VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT  */
430   YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 301, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
431   YYSYMBOL_VAR_FOR_UPSTREAM = 302,         /* VAR_FOR_UPSTREAM  */
432   YYSYMBOL_VAR_AUTH_ZONE = 303,            /* VAR_AUTH_ZONE  */
433   YYSYMBOL_VAR_ZONEFILE = 304,             /* VAR_ZONEFILE  */
434   YYSYMBOL_VAR_MASTER = 305,               /* VAR_MASTER  */
435   YYSYMBOL_VAR_URL = 306,                  /* VAR_URL  */
436   YYSYMBOL_VAR_FOR_DOWNSTREAM = 307,       /* VAR_FOR_DOWNSTREAM  */
437   YYSYMBOL_VAR_FALLBACK_ENABLED = 308,     /* VAR_FALLBACK_ENABLED  */
438   YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 309,  /* VAR_TLS_ADDITIONAL_PORT  */
439   YYSYMBOL_VAR_LOW_RTT = 310,              /* VAR_LOW_RTT  */
440   YYSYMBOL_VAR_LOW_RTT_PERMIL = 311,       /* VAR_LOW_RTT_PERMIL  */
441   YYSYMBOL_VAR_FAST_SERVER_PERMIL = 312,   /* VAR_FAST_SERVER_PERMIL  */
442   YYSYMBOL_VAR_FAST_SERVER_NUM = 313,      /* VAR_FAST_SERVER_NUM  */
443   YYSYMBOL_VAR_ALLOW_NOTIFY = 314,         /* VAR_ALLOW_NOTIFY  */
444   YYSYMBOL_VAR_TLS_WIN_CERT = 315,         /* VAR_TLS_WIN_CERT  */
445   YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 316, /* VAR_TCP_CONNECTION_LIMIT  */
446   YYSYMBOL_VAR_ANSWER_COOKIE = 317,        /* VAR_ANSWER_COOKIE  */
447   YYSYMBOL_VAR_COOKIE_SECRET = 318,        /* VAR_COOKIE_SECRET  */
448   YYSYMBOL_VAR_IP_RATELIMIT_COOKIE = 319,  /* VAR_IP_RATELIMIT_COOKIE  */
449   YYSYMBOL_VAR_FORWARD_NO_CACHE = 320,     /* VAR_FORWARD_NO_CACHE  */
450   YYSYMBOL_VAR_STUB_NO_CACHE = 321,        /* VAR_STUB_NO_CACHE  */
451   YYSYMBOL_VAR_LOG_SERVFAIL = 322,         /* VAR_LOG_SERVFAIL  */
452   YYSYMBOL_VAR_DENY_ANY = 323,             /* VAR_DENY_ANY  */
453   YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 324, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
454   YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 325,   /* VAR_LOG_TAG_QUERYREPLY  */
455   YYSYMBOL_VAR_DISCARD_TIMEOUT = 326,      /* VAR_DISCARD_TIMEOUT  */
456   YYSYMBOL_VAR_WAIT_LIMIT = 327,           /* VAR_WAIT_LIMIT  */
457   YYSYMBOL_VAR_WAIT_LIMIT_COOKIE = 328,    /* VAR_WAIT_LIMIT_COOKIE  */
458   YYSYMBOL_VAR_WAIT_LIMIT_NETBLOCK = 329,  /* VAR_WAIT_LIMIT_NETBLOCK  */
459   YYSYMBOL_VAR_WAIT_LIMIT_COOKIE_NETBLOCK = 330, /* VAR_WAIT_LIMIT_COOKIE_NETBLOCK  */
460   YYSYMBOL_VAR_STREAM_WAIT_SIZE = 331,     /* VAR_STREAM_WAIT_SIZE  */
461   YYSYMBOL_VAR_TLS_CIPHERS = 332,          /* VAR_TLS_CIPHERS  */
462   YYSYMBOL_VAR_TLS_CIPHERSUITES = 333,     /* VAR_TLS_CIPHERSUITES  */
463   YYSYMBOL_VAR_TLS_USE_SNI = 334,          /* VAR_TLS_USE_SNI  */
464   YYSYMBOL_VAR_IPSET = 335,                /* VAR_IPSET  */
465   YYSYMBOL_VAR_IPSET_NAME_V4 = 336,        /* VAR_IPSET_NAME_V4  */
466   YYSYMBOL_VAR_IPSET_NAME_V6 = 337,        /* VAR_IPSET_NAME_V6  */
467   YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 338, /* VAR_TLS_SESSION_TICKET_KEYS  */
468   YYSYMBOL_VAR_RPZ = 339,                  /* VAR_RPZ  */
469   YYSYMBOL_VAR_TAGS = 340,                 /* VAR_TAGS  */
470   YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 341,  /* VAR_RPZ_ACTION_OVERRIDE  */
471   YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 342,   /* VAR_RPZ_CNAME_OVERRIDE  */
472   YYSYMBOL_VAR_RPZ_LOG = 343,              /* VAR_RPZ_LOG  */
473   YYSYMBOL_VAR_RPZ_LOG_NAME = 344,         /* VAR_RPZ_LOG_NAME  */
474   YYSYMBOL_VAR_DYNLIB = 345,               /* VAR_DYNLIB  */
475   YYSYMBOL_VAR_DYNLIB_FILE = 346,          /* VAR_DYNLIB_FILE  */
476   YYSYMBOL_VAR_EDNS_CLIENT_STRING = 347,   /* VAR_EDNS_CLIENT_STRING  */
477   YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 348, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
478   YYSYMBOL_VAR_NSID = 349,                 /* VAR_NSID  */
479   YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 350, /* VAR_ZONEMD_PERMISSIVE_MODE  */
480   YYSYMBOL_VAR_ZONEMD_CHECK = 351,         /* VAR_ZONEMD_CHECK  */
481   YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 352, /* VAR_ZONEMD_REJECT_ABSENCE  */
482   YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 353, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
483   YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 354, /* VAR_INTERFACE_AUTOMATIC_PORTS  */
484   YYSYMBOL_VAR_EDE = 355,                  /* VAR_EDE  */
485   YYSYMBOL_VAR_DNS_ERROR_REPORTING = 356,  /* VAR_DNS_ERROR_REPORTING  */
486   YYSYMBOL_VAR_INTERFACE_ACTION = 357,     /* VAR_INTERFACE_ACTION  */
487   YYSYMBOL_VAR_INTERFACE_VIEW = 358,       /* VAR_INTERFACE_VIEW  */
488   YYSYMBOL_VAR_INTERFACE_TAG = 359,        /* VAR_INTERFACE_TAG  */
489   YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 360, /* VAR_INTERFACE_TAG_ACTION  */
490   YYSYMBOL_VAR_INTERFACE_TAG_DATA = 361,   /* VAR_INTERFACE_TAG_DATA  */
491   YYSYMBOL_VAR_QUIC_PORT = 362,            /* VAR_QUIC_PORT  */
492   YYSYMBOL_VAR_QUIC_SIZE = 363,            /* VAR_QUIC_SIZE  */
493   YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 364,  /* VAR_PROXY_PROTOCOL_PORT  */
494   YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 365, /* VAR_STATISTICS_INHIBIT_ZERO  */
495   YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 366, /* VAR_HARDEN_UNKNOWN_ADDITIONAL  */
496   YYSYMBOL_VAR_DISABLE_EDNS_DO = 367,      /* VAR_DISABLE_EDNS_DO  */
497   YYSYMBOL_VAR_CACHEDB_NO_STORE = 368,     /* VAR_CACHEDB_NO_STORE  */
498   YYSYMBOL_VAR_LOG_DESTADDR = 369,         /* VAR_LOG_DESTADDR  */
499   YYSYMBOL_VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED = 370, /* VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED  */
500   YYSYMBOL_VAR_COOKIE_SECRET_FILE = 371,   /* VAR_COOKIE_SECRET_FILE  */
501   YYSYMBOL_VAR_ITER_SCRUB_NS = 372,        /* VAR_ITER_SCRUB_NS  */
502   YYSYMBOL_VAR_ITER_SCRUB_CNAME = 373,     /* VAR_ITER_SCRUB_CNAME  */
503   YYSYMBOL_VAR_MAX_GLOBAL_QUOTA = 374,     /* VAR_MAX_GLOBAL_QUOTA  */
504   YYSYMBOL_VAR_HARDEN_UNVERIFIED_GLUE = 375, /* VAR_HARDEN_UNVERIFIED_GLUE  */
505   YYSYMBOL_VAR_LOG_TIME_ISO = 376,         /* VAR_LOG_TIME_ISO  */
506   YYSYMBOL_VAR_ITER_SCRUB_PROMISCUOUS = 377, /* VAR_ITER_SCRUB_PROMISCUOUS  */
507   YYSYMBOL_YYACCEPT = 378,                 /* $accept  */
508   YYSYMBOL_toplevelvars = 379,             /* toplevelvars  */
509   YYSYMBOL_toplevelvar = 380,              /* toplevelvar  */
510   YYSYMBOL_force_toplevel = 381,           /* force_toplevel  */
511   YYSYMBOL_serverstart = 382,              /* serverstart  */
512   YYSYMBOL_contents_server = 383,          /* contents_server  */
513   YYSYMBOL_content_server = 384,           /* content_server  */
514   YYSYMBOL_stub_clause = 385,              /* stub_clause  */
515   YYSYMBOL_stubstart = 386,                /* stubstart  */
516   YYSYMBOL_contents_stub = 387,            /* contents_stub  */
517   YYSYMBOL_content_stub = 388,             /* content_stub  */
518   YYSYMBOL_forward_clause = 389,           /* forward_clause  */
519   YYSYMBOL_forwardstart = 390,             /* forwardstart  */
520   YYSYMBOL_contents_forward = 391,         /* contents_forward  */
521   YYSYMBOL_content_forward = 392,          /* content_forward  */
522   YYSYMBOL_view_clause = 393,              /* view_clause  */
523   YYSYMBOL_viewstart = 394,                /* viewstart  */
524   YYSYMBOL_contents_view = 395,            /* contents_view  */
525   YYSYMBOL_content_view = 396,             /* content_view  */
526   YYSYMBOL_authstart = 397,                /* authstart  */
527   YYSYMBOL_contents_auth = 398,            /* contents_auth  */
528   YYSYMBOL_content_auth = 399,             /* content_auth  */
529   YYSYMBOL_rpz_tag = 400,                  /* rpz_tag  */
530   YYSYMBOL_rpz_action_override = 401,      /* rpz_action_override  */
531   YYSYMBOL_rpz_cname_override = 402,       /* rpz_cname_override  */
532   YYSYMBOL_rpz_log = 403,                  /* rpz_log  */
533   YYSYMBOL_rpz_log_name = 404,             /* rpz_log_name  */
534   YYSYMBOL_rpz_signal_nxdomain_ra = 405,   /* rpz_signal_nxdomain_ra  */
535   YYSYMBOL_rpzstart = 406,                 /* rpzstart  */
536   YYSYMBOL_contents_rpz = 407,             /* contents_rpz  */
537   YYSYMBOL_content_rpz = 408,              /* content_rpz  */
538   YYSYMBOL_server_num_threads = 409,       /* server_num_threads  */
539   YYSYMBOL_server_verbosity = 410,         /* server_verbosity  */
540   YYSYMBOL_server_statistics_interval = 411, /* server_statistics_interval  */
541   YYSYMBOL_server_statistics_cumulative = 412, /* server_statistics_cumulative  */
542   YYSYMBOL_server_extended_statistics = 413, /* server_extended_statistics  */
543   YYSYMBOL_server_statistics_inhibit_zero = 414, /* server_statistics_inhibit_zero  */
544   YYSYMBOL_server_shm_enable = 415,        /* server_shm_enable  */
545   YYSYMBOL_server_shm_key = 416,           /* server_shm_key  */
546   YYSYMBOL_server_port = 417,              /* server_port  */
547   YYSYMBOL_server_send_client_subnet = 418, /* server_send_client_subnet  */
548   YYSYMBOL_server_client_subnet_zone = 419, /* server_client_subnet_zone  */
549   YYSYMBOL_server_client_subnet_always_forward = 420, /* server_client_subnet_always_forward  */
550   YYSYMBOL_server_client_subnet_opcode = 421, /* server_client_subnet_opcode  */
551   YYSYMBOL_server_max_client_subnet_ipv4 = 422, /* server_max_client_subnet_ipv4  */
552   YYSYMBOL_server_max_client_subnet_ipv6 = 423, /* server_max_client_subnet_ipv6  */
553   YYSYMBOL_server_min_client_subnet_ipv4 = 424, /* server_min_client_subnet_ipv4  */
554   YYSYMBOL_server_min_client_subnet_ipv6 = 425, /* server_min_client_subnet_ipv6  */
555   YYSYMBOL_server_max_ecs_tree_size_ipv4 = 426, /* server_max_ecs_tree_size_ipv4  */
556   YYSYMBOL_server_max_ecs_tree_size_ipv6 = 427, /* server_max_ecs_tree_size_ipv6  */
557   YYSYMBOL_server_interface = 428,         /* server_interface  */
558   YYSYMBOL_server_outgoing_interface = 429, /* server_outgoing_interface  */
559   YYSYMBOL_server_outgoing_range = 430,    /* server_outgoing_range  */
560   YYSYMBOL_server_outgoing_port_permit = 431, /* server_outgoing_port_permit  */
561   YYSYMBOL_server_outgoing_port_avoid = 432, /* server_outgoing_port_avoid  */
562   YYSYMBOL_server_outgoing_num_tcp = 433,  /* server_outgoing_num_tcp  */
563   YYSYMBOL_server_incoming_num_tcp = 434,  /* server_incoming_num_tcp  */
564   YYSYMBOL_server_interface_automatic = 435, /* server_interface_automatic  */
565   YYSYMBOL_server_interface_automatic_ports = 436, /* server_interface_automatic_ports  */
566   YYSYMBOL_server_do_ip4 = 437,            /* server_do_ip4  */
567   YYSYMBOL_server_do_ip6 = 438,            /* server_do_ip6  */
568   YYSYMBOL_server_do_nat64 = 439,          /* server_do_nat64  */
569   YYSYMBOL_server_do_udp = 440,            /* server_do_udp  */
570   YYSYMBOL_server_do_tcp = 441,            /* server_do_tcp  */
571   YYSYMBOL_server_prefer_ip4 = 442,        /* server_prefer_ip4  */
572   YYSYMBOL_server_prefer_ip6 = 443,        /* server_prefer_ip6  */
573   YYSYMBOL_server_tcp_mss = 444,           /* server_tcp_mss  */
574   YYSYMBOL_server_outgoing_tcp_mss = 445,  /* server_outgoing_tcp_mss  */
575   YYSYMBOL_server_tcp_idle_timeout = 446,  /* server_tcp_idle_timeout  */
576   YYSYMBOL_server_max_reuse_tcp_queries = 447, /* server_max_reuse_tcp_queries  */
577   YYSYMBOL_server_tcp_reuse_timeout = 448, /* server_tcp_reuse_timeout  */
578   YYSYMBOL_server_tcp_auth_query_timeout = 449, /* server_tcp_auth_query_timeout  */
579   YYSYMBOL_server_tcp_keepalive = 450,     /* server_tcp_keepalive  */
580   YYSYMBOL_server_tcp_keepalive_timeout = 451, /* server_tcp_keepalive_timeout  */
581   YYSYMBOL_server_sock_queue_timeout = 452, /* server_sock_queue_timeout  */
582   YYSYMBOL_server_tcp_upstream = 453,      /* server_tcp_upstream  */
583   YYSYMBOL_server_udp_upstream_without_downstream = 454, /* server_udp_upstream_without_downstream  */
584   YYSYMBOL_server_ssl_upstream = 455,      /* server_ssl_upstream  */
585   YYSYMBOL_server_ssl_service_key = 456,   /* server_ssl_service_key  */
586   YYSYMBOL_server_ssl_service_pem = 457,   /* server_ssl_service_pem  */
587   YYSYMBOL_server_ssl_port = 458,          /* server_ssl_port  */
588   YYSYMBOL_server_tls_cert_bundle = 459,   /* server_tls_cert_bundle  */
589   YYSYMBOL_server_tls_win_cert = 460,      /* server_tls_win_cert  */
590   YYSYMBOL_server_tls_additional_port = 461, /* server_tls_additional_port  */
591   YYSYMBOL_server_tls_ciphers = 462,       /* server_tls_ciphers  */
592   YYSYMBOL_server_tls_ciphersuites = 463,  /* server_tls_ciphersuites  */
593   YYSYMBOL_server_tls_session_ticket_keys = 464, /* server_tls_session_ticket_keys  */
594   YYSYMBOL_server_tls_use_sni = 465,       /* server_tls_use_sni  */
595   YYSYMBOL_server_https_port = 466,        /* server_https_port  */
596   YYSYMBOL_server_http_endpoint = 467,     /* server_http_endpoint  */
597   YYSYMBOL_server_http_max_streams = 468,  /* server_http_max_streams  */
598   YYSYMBOL_server_http_query_buffer_size = 469, /* server_http_query_buffer_size  */
599   YYSYMBOL_server_http_response_buffer_size = 470, /* server_http_response_buffer_size  */
600   YYSYMBOL_server_http_nodelay = 471,      /* server_http_nodelay  */
601   YYSYMBOL_server_http_notls_downstream = 472, /* server_http_notls_downstream  */
602   YYSYMBOL_server_quic_port = 473,         /* server_quic_port  */
603   YYSYMBOL_server_quic_size = 474,         /* server_quic_size  */
604   YYSYMBOL_server_use_systemd = 475,       /* server_use_systemd  */
605   YYSYMBOL_server_do_daemonize = 476,      /* server_do_daemonize  */
606   YYSYMBOL_server_use_syslog = 477,        /* server_use_syslog  */
607   YYSYMBOL_server_log_time_ascii = 478,    /* server_log_time_ascii  */
608   YYSYMBOL_server_log_time_iso = 479,      /* server_log_time_iso  */
609   YYSYMBOL_server_log_queries = 480,       /* server_log_queries  */
610   YYSYMBOL_server_log_replies = 481,       /* server_log_replies  */
611   YYSYMBOL_server_log_tag_queryreply = 482, /* server_log_tag_queryreply  */
612   YYSYMBOL_server_log_servfail = 483,      /* server_log_servfail  */
613   YYSYMBOL_server_log_destaddr = 484,      /* server_log_destaddr  */
614   YYSYMBOL_server_log_local_actions = 485, /* server_log_local_actions  */
615   YYSYMBOL_server_chroot = 486,            /* server_chroot  */
616   YYSYMBOL_server_username = 487,          /* server_username  */
617   YYSYMBOL_server_directory = 488,         /* server_directory  */
618   YYSYMBOL_server_logfile = 489,           /* server_logfile  */
619   YYSYMBOL_server_pidfile = 490,           /* server_pidfile  */
620   YYSYMBOL_server_root_hints = 491,        /* server_root_hints  */
621   YYSYMBOL_server_dlv_anchor_file = 492,   /* server_dlv_anchor_file  */
622   YYSYMBOL_server_dlv_anchor = 493,        /* server_dlv_anchor  */
623   YYSYMBOL_server_auto_trust_anchor_file = 494, /* server_auto_trust_anchor_file  */
624   YYSYMBOL_server_trust_anchor_file = 495, /* server_trust_anchor_file  */
625   YYSYMBOL_server_trusted_keys_file = 496, /* server_trusted_keys_file  */
626   YYSYMBOL_server_trust_anchor = 497,      /* server_trust_anchor  */
627   YYSYMBOL_server_trust_anchor_signaling = 498, /* server_trust_anchor_signaling  */
628   YYSYMBOL_server_root_key_sentinel = 499, /* server_root_key_sentinel  */
629   YYSYMBOL_server_domain_insecure = 500,   /* server_domain_insecure  */
630   YYSYMBOL_server_hide_identity = 501,     /* server_hide_identity  */
631   YYSYMBOL_server_hide_version = 502,      /* server_hide_version  */
632   YYSYMBOL_server_hide_trustanchor = 503,  /* server_hide_trustanchor  */
633   YYSYMBOL_server_hide_http_user_agent = 504, /* server_hide_http_user_agent  */
634   YYSYMBOL_server_identity = 505,          /* server_identity  */
635   YYSYMBOL_server_version = 506,           /* server_version  */
636   YYSYMBOL_server_http_user_agent = 507,   /* server_http_user_agent  */
637   YYSYMBOL_server_nsid = 508,              /* server_nsid  */
638   YYSYMBOL_server_so_rcvbuf = 509,         /* server_so_rcvbuf  */
639   YYSYMBOL_server_so_sndbuf = 510,         /* server_so_sndbuf  */
640   YYSYMBOL_server_so_reuseport = 511,      /* server_so_reuseport  */
641   YYSYMBOL_server_ip_transparent = 512,    /* server_ip_transparent  */
642   YYSYMBOL_server_ip_freebind = 513,       /* server_ip_freebind  */
643   YYSYMBOL_server_ip_dscp = 514,           /* server_ip_dscp  */
644   YYSYMBOL_server_stream_wait_size = 515,  /* server_stream_wait_size  */
645   YYSYMBOL_server_edns_buffer_size = 516,  /* server_edns_buffer_size  */
646   YYSYMBOL_server_msg_buffer_size = 517,   /* server_msg_buffer_size  */
647   YYSYMBOL_server_msg_cache_size = 518,    /* server_msg_cache_size  */
648   YYSYMBOL_server_msg_cache_slabs = 519,   /* server_msg_cache_slabs  */
649   YYSYMBOL_server_num_queries_per_thread = 520, /* server_num_queries_per_thread  */
650   YYSYMBOL_server_jostle_timeout = 521,    /* server_jostle_timeout  */
651   YYSYMBOL_server_delay_close = 522,       /* server_delay_close  */
652   YYSYMBOL_server_udp_connect = 523,       /* server_udp_connect  */
653   YYSYMBOL_server_unblock_lan_zones = 524, /* server_unblock_lan_zones  */
654   YYSYMBOL_server_insecure_lan_zones = 525, /* server_insecure_lan_zones  */
655   YYSYMBOL_server_rrset_cache_size = 526,  /* server_rrset_cache_size  */
656   YYSYMBOL_server_rrset_cache_slabs = 527, /* server_rrset_cache_slabs  */
657   YYSYMBOL_server_infra_host_ttl = 528,    /* server_infra_host_ttl  */
658   YYSYMBOL_server_infra_lame_ttl = 529,    /* server_infra_lame_ttl  */
659   YYSYMBOL_server_infra_cache_numhosts = 530, /* server_infra_cache_numhosts  */
660   YYSYMBOL_server_infra_cache_lame_size = 531, /* server_infra_cache_lame_size  */
661   YYSYMBOL_server_infra_cache_slabs = 532, /* server_infra_cache_slabs  */
662   YYSYMBOL_server_infra_cache_min_rtt = 533, /* server_infra_cache_min_rtt  */
663   YYSYMBOL_server_infra_cache_max_rtt = 534, /* server_infra_cache_max_rtt  */
664   YYSYMBOL_server_infra_keep_probing = 535, /* server_infra_keep_probing  */
665   YYSYMBOL_server_target_fetch_policy = 536, /* server_target_fetch_policy  */
666   YYSYMBOL_server_harden_short_bufsize = 537, /* server_harden_short_bufsize  */
667   YYSYMBOL_server_harden_large_queries = 538, /* server_harden_large_queries  */
668   YYSYMBOL_server_harden_glue = 539,       /* server_harden_glue  */
669   YYSYMBOL_server_harden_unverified_glue = 540, /* server_harden_unverified_glue  */
670   YYSYMBOL_server_harden_dnssec_stripped = 541, /* server_harden_dnssec_stripped  */
671   YYSYMBOL_server_harden_below_nxdomain = 542, /* server_harden_below_nxdomain  */
672   YYSYMBOL_server_harden_referral_path = 543, /* server_harden_referral_path  */
673   YYSYMBOL_server_harden_algo_downgrade = 544, /* server_harden_algo_downgrade  */
674   YYSYMBOL_server_harden_unknown_additional = 545, /* server_harden_unknown_additional  */
675   YYSYMBOL_server_use_caps_for_id = 546,   /* server_use_caps_for_id  */
676   YYSYMBOL_server_caps_whitelist = 547,    /* server_caps_whitelist  */
677   YYSYMBOL_server_private_address = 548,   /* server_private_address  */
678   YYSYMBOL_server_private_domain = 549,    /* server_private_domain  */
679   YYSYMBOL_server_prefetch = 550,          /* server_prefetch  */
680   YYSYMBOL_server_prefetch_key = 551,      /* server_prefetch_key  */
681   YYSYMBOL_server_deny_any = 552,          /* server_deny_any  */
682   YYSYMBOL_server_unwanted_reply_threshold = 553, /* server_unwanted_reply_threshold  */
683   YYSYMBOL_server_do_not_query_address = 554, /* server_do_not_query_address  */
684   YYSYMBOL_server_do_not_query_localhost = 555, /* server_do_not_query_localhost  */
685   YYSYMBOL_server_access_control = 556,    /* server_access_control  */
686   YYSYMBOL_server_interface_action = 557,  /* server_interface_action  */
687   YYSYMBOL_server_module_conf = 558,       /* server_module_conf  */
688   YYSYMBOL_server_val_override_date = 559, /* server_val_override_date  */
689   YYSYMBOL_server_val_sig_skew_min = 560,  /* server_val_sig_skew_min  */
690   YYSYMBOL_server_val_sig_skew_max = 561,  /* server_val_sig_skew_max  */
691   YYSYMBOL_server_val_max_restart = 562,   /* server_val_max_restart  */
692   YYSYMBOL_server_cache_max_ttl = 563,     /* server_cache_max_ttl  */
693   YYSYMBOL_server_cache_max_negative_ttl = 564, /* server_cache_max_negative_ttl  */
694   YYSYMBOL_server_cache_min_negative_ttl = 565, /* server_cache_min_negative_ttl  */
695   YYSYMBOL_server_cache_min_ttl = 566,     /* server_cache_min_ttl  */
696   YYSYMBOL_server_bogus_ttl = 567,         /* server_bogus_ttl  */
697   YYSYMBOL_server_val_clean_additional = 568, /* server_val_clean_additional  */
698   YYSYMBOL_server_val_permissive_mode = 569, /* server_val_permissive_mode  */
699   YYSYMBOL_server_aggressive_nsec = 570,   /* server_aggressive_nsec  */
700   YYSYMBOL_server_ignore_cd_flag = 571,    /* server_ignore_cd_flag  */
701   YYSYMBOL_server_disable_edns_do = 572,   /* server_disable_edns_do  */
702   YYSYMBOL_server_serve_expired = 573,     /* server_serve_expired  */
703   YYSYMBOL_server_serve_expired_ttl = 574, /* server_serve_expired_ttl  */
704   YYSYMBOL_server_serve_expired_ttl_reset = 575, /* server_serve_expired_ttl_reset  */
705   YYSYMBOL_server_serve_expired_reply_ttl = 576, /* server_serve_expired_reply_ttl  */
706   YYSYMBOL_server_serve_expired_client_timeout = 577, /* server_serve_expired_client_timeout  */
707   YYSYMBOL_server_ede_serve_expired = 578, /* server_ede_serve_expired  */
708   YYSYMBOL_server_serve_original_ttl = 579, /* server_serve_original_ttl  */
709   YYSYMBOL_server_fake_dsa = 580,          /* server_fake_dsa  */
710   YYSYMBOL_server_fake_sha1 = 581,         /* server_fake_sha1  */
711   YYSYMBOL_server_val_log_level = 582,     /* server_val_log_level  */
712   YYSYMBOL_server_val_nsec3_keysize_iterations = 583, /* server_val_nsec3_keysize_iterations  */
713   YYSYMBOL_server_zonemd_permissive_mode = 584, /* server_zonemd_permissive_mode  */
714   YYSYMBOL_server_add_holddown = 585,      /* server_add_holddown  */
715   YYSYMBOL_server_del_holddown = 586,      /* server_del_holddown  */
716   YYSYMBOL_server_keep_missing = 587,      /* server_keep_missing  */
717   YYSYMBOL_server_permit_small_holddown = 588, /* server_permit_small_holddown  */
718   YYSYMBOL_server_key_cache_size = 589,    /* server_key_cache_size  */
719   YYSYMBOL_server_key_cache_slabs = 590,   /* server_key_cache_slabs  */
720   YYSYMBOL_server_neg_cache_size = 591,    /* server_neg_cache_size  */
721   YYSYMBOL_server_local_zone = 592,        /* server_local_zone  */
722   YYSYMBOL_server_local_data = 593,        /* server_local_data  */
723   YYSYMBOL_server_local_data_ptr = 594,    /* server_local_data_ptr  */
724   YYSYMBOL_server_minimal_responses = 595, /* server_minimal_responses  */
725   YYSYMBOL_server_rrset_roundrobin = 596,  /* server_rrset_roundrobin  */
726   YYSYMBOL_server_unknown_server_time_limit = 597, /* server_unknown_server_time_limit  */
727   YYSYMBOL_server_discard_timeout = 598,   /* server_discard_timeout  */
728   YYSYMBOL_server_wait_limit = 599,        /* server_wait_limit  */
729   YYSYMBOL_server_wait_limit_cookie = 600, /* server_wait_limit_cookie  */
730   YYSYMBOL_server_wait_limit_netblock = 601, /* server_wait_limit_netblock  */
731   YYSYMBOL_server_wait_limit_cookie_netblock = 602, /* server_wait_limit_cookie_netblock  */
732   YYSYMBOL_server_max_udp_size = 603,      /* server_max_udp_size  */
733   YYSYMBOL_server_dns64_prefix = 604,      /* server_dns64_prefix  */
734   YYSYMBOL_server_dns64_synthall = 605,    /* server_dns64_synthall  */
735   YYSYMBOL_server_dns64_ignore_aaaa = 606, /* server_dns64_ignore_aaaa  */
736   YYSYMBOL_server_nat64_prefix = 607,      /* server_nat64_prefix  */
737   YYSYMBOL_server_define_tag = 608,        /* server_define_tag  */
738   YYSYMBOL_server_local_zone_tag = 609,    /* server_local_zone_tag  */
739   YYSYMBOL_server_access_control_tag = 610, /* server_access_control_tag  */
740   YYSYMBOL_server_access_control_tag_action = 611, /* server_access_control_tag_action  */
741   YYSYMBOL_server_access_control_tag_data = 612, /* server_access_control_tag_data  */
742   YYSYMBOL_server_local_zone_override = 613, /* server_local_zone_override  */
743   YYSYMBOL_server_access_control_view = 614, /* server_access_control_view  */
744   YYSYMBOL_server_interface_tag = 615,     /* server_interface_tag  */
745   YYSYMBOL_server_interface_tag_action = 616, /* server_interface_tag_action  */
746   YYSYMBOL_server_interface_tag_data = 617, /* server_interface_tag_data  */
747   YYSYMBOL_server_interface_view = 618,    /* server_interface_view  */
748   YYSYMBOL_server_response_ip_tag = 619,   /* server_response_ip_tag  */
749   YYSYMBOL_server_ip_ratelimit = 620,      /* server_ip_ratelimit  */
750   YYSYMBOL_server_ip_ratelimit_cookie = 621, /* server_ip_ratelimit_cookie  */
751   YYSYMBOL_server_ratelimit = 622,         /* server_ratelimit  */
752   YYSYMBOL_server_ip_ratelimit_size = 623, /* server_ip_ratelimit_size  */
753   YYSYMBOL_server_ratelimit_size = 624,    /* server_ratelimit_size  */
754   YYSYMBOL_server_ip_ratelimit_slabs = 625, /* server_ip_ratelimit_slabs  */
755   YYSYMBOL_server_ratelimit_slabs = 626,   /* server_ratelimit_slabs  */
756   YYSYMBOL_server_ratelimit_for_domain = 627, /* server_ratelimit_for_domain  */
757   YYSYMBOL_server_ratelimit_below_domain = 628, /* server_ratelimit_below_domain  */
758   YYSYMBOL_server_ip_ratelimit_factor = 629, /* server_ip_ratelimit_factor  */
759   YYSYMBOL_server_ratelimit_factor = 630,  /* server_ratelimit_factor  */
760   YYSYMBOL_server_ip_ratelimit_backoff = 631, /* server_ip_ratelimit_backoff  */
761   YYSYMBOL_server_ratelimit_backoff = 632, /* server_ratelimit_backoff  */
762   YYSYMBOL_server_outbound_msg_retry = 633, /* server_outbound_msg_retry  */
763   YYSYMBOL_server_max_sent_count = 634,    /* server_max_sent_count  */
764   YYSYMBOL_server_max_query_restarts = 635, /* server_max_query_restarts  */
765   YYSYMBOL_server_low_rtt = 636,           /* server_low_rtt  */
766   YYSYMBOL_server_fast_server_num = 637,   /* server_fast_server_num  */
767   YYSYMBOL_server_fast_server_permil = 638, /* server_fast_server_permil  */
768   YYSYMBOL_server_qname_minimisation = 639, /* server_qname_minimisation  */
769   YYSYMBOL_server_qname_minimisation_strict = 640, /* server_qname_minimisation_strict  */
770   YYSYMBOL_server_pad_responses = 641,     /* server_pad_responses  */
771   YYSYMBOL_server_pad_responses_block_size = 642, /* server_pad_responses_block_size  */
772   YYSYMBOL_server_pad_queries = 643,       /* server_pad_queries  */
773   YYSYMBOL_server_pad_queries_block_size = 644, /* server_pad_queries_block_size  */
774   YYSYMBOL_server_ipsecmod_enabled = 645,  /* server_ipsecmod_enabled  */
775   YYSYMBOL_server_ipsecmod_ignore_bogus = 646, /* server_ipsecmod_ignore_bogus  */
776   YYSYMBOL_server_ipsecmod_hook = 647,     /* server_ipsecmod_hook  */
777   YYSYMBOL_server_ipsecmod_max_ttl = 648,  /* server_ipsecmod_max_ttl  */
778   YYSYMBOL_server_ipsecmod_whitelist = 649, /* server_ipsecmod_whitelist  */
779   YYSYMBOL_server_ipsecmod_strict = 650,   /* server_ipsecmod_strict  */
780   YYSYMBOL_server_edns_client_string = 651, /* server_edns_client_string  */
781   YYSYMBOL_server_edns_client_string_opcode = 652, /* server_edns_client_string_opcode  */
782   YYSYMBOL_server_ede = 653,               /* server_ede  */
783   YYSYMBOL_server_dns_error_reporting = 654, /* server_dns_error_reporting  */
784   YYSYMBOL_server_proxy_protocol_port = 655, /* server_proxy_protocol_port  */
785   YYSYMBOL_stub_name = 656,                /* stub_name  */
786   YYSYMBOL_stub_host = 657,                /* stub_host  */
787   YYSYMBOL_stub_addr = 658,                /* stub_addr  */
788   YYSYMBOL_stub_first = 659,               /* stub_first  */
789   YYSYMBOL_stub_no_cache = 660,            /* stub_no_cache  */
790   YYSYMBOL_stub_ssl_upstream = 661,        /* stub_ssl_upstream  */
791   YYSYMBOL_stub_tcp_upstream = 662,        /* stub_tcp_upstream  */
792   YYSYMBOL_stub_prime = 663,               /* stub_prime  */
793   YYSYMBOL_forward_name = 664,             /* forward_name  */
794   YYSYMBOL_forward_host = 665,             /* forward_host  */
795   YYSYMBOL_forward_addr = 666,             /* forward_addr  */
796   YYSYMBOL_forward_first = 667,            /* forward_first  */
797   YYSYMBOL_forward_no_cache = 668,         /* forward_no_cache  */
798   YYSYMBOL_forward_ssl_upstream = 669,     /* forward_ssl_upstream  */
799   YYSYMBOL_forward_tcp_upstream = 670,     /* forward_tcp_upstream  */
800   YYSYMBOL_auth_name = 671,                /* auth_name  */
801   YYSYMBOL_auth_zonefile = 672,            /* auth_zonefile  */
802   YYSYMBOL_auth_master = 673,              /* auth_master  */
803   YYSYMBOL_auth_url = 674,                 /* auth_url  */
804   YYSYMBOL_auth_allow_notify = 675,        /* auth_allow_notify  */
805   YYSYMBOL_auth_zonemd_check = 676,        /* auth_zonemd_check  */
806   YYSYMBOL_auth_zonemd_reject_absence = 677, /* auth_zonemd_reject_absence  */
807   YYSYMBOL_auth_for_downstream = 678,      /* auth_for_downstream  */
808   YYSYMBOL_auth_for_upstream = 679,        /* auth_for_upstream  */
809   YYSYMBOL_auth_fallback_enabled = 680,    /* auth_fallback_enabled  */
810   YYSYMBOL_view_name = 681,                /* view_name  */
811   YYSYMBOL_view_local_zone = 682,          /* view_local_zone  */
812   YYSYMBOL_view_response_ip = 683,         /* view_response_ip  */
813   YYSYMBOL_view_response_ip_data = 684,    /* view_response_ip_data  */
814   YYSYMBOL_view_local_data = 685,          /* view_local_data  */
815   YYSYMBOL_view_local_data_ptr = 686,      /* view_local_data_ptr  */
816   YYSYMBOL_view_first = 687,               /* view_first  */
817   YYSYMBOL_rcstart = 688,                  /* rcstart  */
818   YYSYMBOL_contents_rc = 689,              /* contents_rc  */
819   YYSYMBOL_content_rc = 690,               /* content_rc  */
820   YYSYMBOL_rc_control_enable = 691,        /* rc_control_enable  */
821   YYSYMBOL_rc_control_port = 692,          /* rc_control_port  */
822   YYSYMBOL_rc_control_interface = 693,     /* rc_control_interface  */
823   YYSYMBOL_rc_control_use_cert = 694,      /* rc_control_use_cert  */
824   YYSYMBOL_rc_server_key_file = 695,       /* rc_server_key_file  */
825   YYSYMBOL_rc_server_cert_file = 696,      /* rc_server_cert_file  */
826   YYSYMBOL_rc_control_key_file = 697,      /* rc_control_key_file  */
827   YYSYMBOL_rc_control_cert_file = 698,     /* rc_control_cert_file  */
828   YYSYMBOL_dtstart = 699,                  /* dtstart  */
829   YYSYMBOL_contents_dt = 700,              /* contents_dt  */
830   YYSYMBOL_content_dt = 701,               /* content_dt  */
831   YYSYMBOL_dt_dnstap_enable = 702,         /* dt_dnstap_enable  */
832   YYSYMBOL_dt_dnstap_bidirectional = 703,  /* dt_dnstap_bidirectional  */
833   YYSYMBOL_dt_dnstap_socket_path = 704,    /* dt_dnstap_socket_path  */
834   YYSYMBOL_dt_dnstap_ip = 705,             /* dt_dnstap_ip  */
835   YYSYMBOL_dt_dnstap_tls = 706,            /* dt_dnstap_tls  */
836   YYSYMBOL_dt_dnstap_tls_server_name = 707, /* dt_dnstap_tls_server_name  */
837   YYSYMBOL_dt_dnstap_tls_cert_bundle = 708, /* dt_dnstap_tls_cert_bundle  */
838   YYSYMBOL_dt_dnstap_tls_client_key_file = 709, /* dt_dnstap_tls_client_key_file  */
839   YYSYMBOL_dt_dnstap_tls_client_cert_file = 710, /* dt_dnstap_tls_client_cert_file  */
840   YYSYMBOL_dt_dnstap_send_identity = 711,  /* dt_dnstap_send_identity  */
841   YYSYMBOL_dt_dnstap_send_version = 712,   /* dt_dnstap_send_version  */
842   YYSYMBOL_dt_dnstap_identity = 713,       /* dt_dnstap_identity  */
843   YYSYMBOL_dt_dnstap_version = 714,        /* dt_dnstap_version  */
844   YYSYMBOL_dt_dnstap_log_resolver_query_messages = 715, /* dt_dnstap_log_resolver_query_messages  */
845   YYSYMBOL_dt_dnstap_log_resolver_response_messages = 716, /* dt_dnstap_log_resolver_response_messages  */
846   YYSYMBOL_dt_dnstap_log_client_query_messages = 717, /* dt_dnstap_log_client_query_messages  */
847   YYSYMBOL_dt_dnstap_log_client_response_messages = 718, /* dt_dnstap_log_client_response_messages  */
848   YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 719, /* dt_dnstap_log_forwarder_query_messages  */
849   YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 720, /* dt_dnstap_log_forwarder_response_messages  */
850   YYSYMBOL_dt_dnstap_sample_rate = 721,    /* dt_dnstap_sample_rate  */
851   YYSYMBOL_pythonstart = 722,              /* pythonstart  */
852   YYSYMBOL_contents_py = 723,              /* contents_py  */
853   YYSYMBOL_content_py = 724,               /* content_py  */
854   YYSYMBOL_py_script = 725,                /* py_script  */
855   YYSYMBOL_dynlibstart = 726,              /* dynlibstart  */
856   YYSYMBOL_contents_dl = 727,              /* contents_dl  */
857   YYSYMBOL_content_dl = 728,               /* content_dl  */
858   YYSYMBOL_dl_file = 729,                  /* dl_file  */
859   YYSYMBOL_server_disable_dnssec_lame_check = 730, /* server_disable_dnssec_lame_check  */
860   YYSYMBOL_server_log_identity = 731,      /* server_log_identity  */
861   YYSYMBOL_server_response_ip = 732,       /* server_response_ip  */
862   YYSYMBOL_server_response_ip_data = 733,  /* server_response_ip_data  */
863   YYSYMBOL_dnscstart = 734,                /* dnscstart  */
864   YYSYMBOL_contents_dnsc = 735,            /* contents_dnsc  */
865   YYSYMBOL_content_dnsc = 736,             /* content_dnsc  */
866   YYSYMBOL_dnsc_dnscrypt_enable = 737,     /* dnsc_dnscrypt_enable  */
867   YYSYMBOL_dnsc_dnscrypt_port = 738,       /* dnsc_dnscrypt_port  */
868   YYSYMBOL_dnsc_dnscrypt_provider = 739,   /* dnsc_dnscrypt_provider  */
869   YYSYMBOL_dnsc_dnscrypt_provider_cert = 740, /* dnsc_dnscrypt_provider_cert  */
870   YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 741, /* dnsc_dnscrypt_provider_cert_rotated  */
871   YYSYMBOL_dnsc_dnscrypt_secret_key = 742, /* dnsc_dnscrypt_secret_key  */
872   YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 743, /* dnsc_dnscrypt_shared_secret_cache_size  */
873   YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 744, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
874   YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 745, /* dnsc_dnscrypt_nonce_cache_size  */
875   YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 746, /* dnsc_dnscrypt_nonce_cache_slabs  */
876   YYSYMBOL_cachedbstart = 747,             /* cachedbstart  */
877   YYSYMBOL_contents_cachedb = 748,         /* contents_cachedb  */
878   YYSYMBOL_content_cachedb = 749,          /* content_cachedb  */
879   YYSYMBOL_cachedb_backend_name = 750,     /* cachedb_backend_name  */
880   YYSYMBOL_cachedb_secret_seed = 751,      /* cachedb_secret_seed  */
881   YYSYMBOL_cachedb_no_store = 752,         /* cachedb_no_store  */
882   YYSYMBOL_cachedb_check_when_serve_expired = 753, /* cachedb_check_when_serve_expired  */
883   YYSYMBOL_redis_server_host = 754,        /* redis_server_host  */
884   YYSYMBOL_redis_replica_server_host = 755, /* redis_replica_server_host  */
885   YYSYMBOL_redis_server_port = 756,        /* redis_server_port  */
886   YYSYMBOL_redis_replica_server_port = 757, /* redis_replica_server_port  */
887   YYSYMBOL_redis_server_path = 758,        /* redis_server_path  */
888   YYSYMBOL_redis_replica_server_path = 759, /* redis_replica_server_path  */
889   YYSYMBOL_redis_server_password = 760,    /* redis_server_password  */
890   YYSYMBOL_redis_replica_server_password = 761, /* redis_replica_server_password  */
891   YYSYMBOL_redis_timeout = 762,            /* redis_timeout  */
892   YYSYMBOL_redis_replica_timeout = 763,    /* redis_replica_timeout  */
893   YYSYMBOL_redis_command_timeout = 764,    /* redis_command_timeout  */
894   YYSYMBOL_redis_replica_command_timeout = 765, /* redis_replica_command_timeout  */
895   YYSYMBOL_redis_connect_timeout = 766,    /* redis_connect_timeout  */
896   YYSYMBOL_redis_replica_connect_timeout = 767, /* redis_replica_connect_timeout  */
897   YYSYMBOL_redis_expire_records = 768,     /* redis_expire_records  */
898   YYSYMBOL_redis_logical_db = 769,         /* redis_logical_db  */
899   YYSYMBOL_redis_replica_logical_db = 770, /* redis_replica_logical_db  */
900   YYSYMBOL_server_tcp_connection_limit = 771, /* server_tcp_connection_limit  */
901   YYSYMBOL_server_answer_cookie = 772,     /* server_answer_cookie  */
902   YYSYMBOL_server_cookie_secret = 773,     /* server_cookie_secret  */
903   YYSYMBOL_server_cookie_secret_file = 774, /* server_cookie_secret_file  */
904   YYSYMBOL_server_iter_scrub_ns = 775,     /* server_iter_scrub_ns  */
905   YYSYMBOL_server_iter_scrub_cname = 776,  /* server_iter_scrub_cname  */
906   YYSYMBOL_server_max_global_quota = 777,  /* server_max_global_quota  */
907   YYSYMBOL_server_iter_scrub_promiscuous = 778, /* server_iter_scrub_promiscuous  */
908   YYSYMBOL_ipsetstart = 779,               /* ipsetstart  */
909   YYSYMBOL_contents_ipset = 780,           /* contents_ipset  */
910   YYSYMBOL_content_ipset = 781,            /* content_ipset  */
911   YYSYMBOL_ipset_name_v4 = 782,            /* ipset_name_v4  */
912   YYSYMBOL_ipset_name_v6 = 783             /* ipset_name_v6  */
913 };
914 typedef enum yysymbol_kind_t yysymbol_kind_t;
915 
916 
917 
918 
919 #ifdef short
920 # undef short
921 #endif
922 
923 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
924    <limits.h> and (if available) <stdint.h> are included
925    so that the code can choose integer types of a good width.  */
926 
927 #ifndef __PTRDIFF_MAX__
928 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
929 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
930 #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
931 #  define YY_STDINT_H
932 # endif
933 #endif
934 
935 /* Narrow types that promote to a signed type and that can represent a
936    signed or unsigned integer of at least N bits.  In tables they can
937    save space and decrease cache pressure.  Promoting to a signed type
938    helps avoid bugs in integer arithmetic.  */
939 
940 #ifdef __INT_LEAST8_MAX__
941 typedef __INT_LEAST8_TYPE__ yytype_int8;
942 #elif defined YY_STDINT_H
943 typedef int_least8_t yytype_int8;
944 #else
945 typedef signed char yytype_int8;
946 #endif
947 
948 #ifdef __INT_LEAST16_MAX__
949 typedef __INT_LEAST16_TYPE__ yytype_int16;
950 #elif defined YY_STDINT_H
951 typedef int_least16_t yytype_int16;
952 #else
953 typedef short yytype_int16;
954 #endif
955 
956 /* Work around bug in HP-UX 11.23, which defines these macros
957    incorrectly for preprocessor constants.  This workaround can likely
958    be removed in 2023, as HPE has promised support for HP-UX 11.23
959    (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
960    <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
961 #ifdef __hpux
962 # undef UINT_LEAST8_MAX
963 # undef UINT_LEAST16_MAX
964 # define UINT_LEAST8_MAX 255
965 # define UINT_LEAST16_MAX 65535
966 #endif
967 
968 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
969 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
970 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
971        && UINT_LEAST8_MAX <= INT_MAX)
972 typedef uint_least8_t yytype_uint8;
973 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
974 typedef unsigned char yytype_uint8;
975 #else
976 typedef short yytype_uint8;
977 #endif
978 
979 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
980 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
981 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
982        && UINT_LEAST16_MAX <= INT_MAX)
983 typedef uint_least16_t yytype_uint16;
984 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
985 typedef unsigned short yytype_uint16;
986 #else
987 typedef int yytype_uint16;
988 #endif
989 
990 #ifndef YYPTRDIFF_T
991 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
992 #  define YYPTRDIFF_T __PTRDIFF_TYPE__
993 #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
994 # elif defined PTRDIFF_MAX
995 #  ifndef ptrdiff_t
996 #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
997 #  endif
998 #  define YYPTRDIFF_T ptrdiff_t
999 #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1000 # else
1001 #  define YYPTRDIFF_T long
1002 #  define YYPTRDIFF_MAXIMUM LONG_MAX
1003 # endif
1004 #endif
1005 
1006 #ifndef YYSIZE_T
1007 # ifdef __SIZE_TYPE__
1008 #  define YYSIZE_T __SIZE_TYPE__
1009 # elif defined size_t
1010 #  define YYSIZE_T size_t
1011 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1012 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1013 #  define YYSIZE_T size_t
1014 # else
1015 #  define YYSIZE_T unsigned
1016 # endif
1017 #endif
1018 
1019 #define YYSIZE_MAXIMUM                                  \
1020   YY_CAST (YYPTRDIFF_T,                                 \
1021            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
1022             ? YYPTRDIFF_MAXIMUM                         \
1023             : YY_CAST (YYSIZE_T, -1)))
1024 
1025 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1026 
1027 
1028 /* Stored state numbers (used for stacks). */
1029 typedef yytype_int16 yy_state_t;
1030 
1031 /* State numbers in computations.  */
1032 typedef int yy_state_fast_t;
1033 
1034 #ifndef YY_
1035 # if defined YYENABLE_NLS && YYENABLE_NLS
1036 #  if ENABLE_NLS
1037 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1038 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1039 #  endif
1040 # endif
1041 # ifndef YY_
1042 #  define YY_(Msgid) Msgid
1043 # endif
1044 #endif
1045 
1046 
1047 #ifndef YY_ATTRIBUTE_PURE
1048 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1049 #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1050 # else
1051 #  define YY_ATTRIBUTE_PURE
1052 # endif
1053 #endif
1054 
1055 #ifndef YY_ATTRIBUTE_UNUSED
1056 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1057 #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1058 # else
1059 #  define YY_ATTRIBUTE_UNUSED
1060 # endif
1061 #endif
1062 
1063 /* Suppress unused-variable warnings by "using" E.  */
1064 #if ! defined lint || defined __GNUC__
1065 # define YY_USE(E) ((void) (E))
1066 #else
1067 # define YY_USE(E) /* empty */
1068 #endif
1069 
1070 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
1071 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1072 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1073 #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
1074     _Pragma ("GCC diagnostic push")                                     \
1075     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1076 # else
1077 #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
1078     _Pragma ("GCC diagnostic push")                                     \
1079     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
1080     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1081 # endif
1082 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
1083     _Pragma ("GCC diagnostic pop")
1084 #else
1085 # define YY_INITIAL_VALUE(Value) Value
1086 #endif
1087 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1088 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1089 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1090 #endif
1091 #ifndef YY_INITIAL_VALUE
1092 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1093 #endif
1094 
1095 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1096 # define YY_IGNORE_USELESS_CAST_BEGIN                          \
1097     _Pragma ("GCC diagnostic push")                            \
1098     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1099 # define YY_IGNORE_USELESS_CAST_END            \
1100     _Pragma ("GCC diagnostic pop")
1101 #endif
1102 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1103 # define YY_IGNORE_USELESS_CAST_BEGIN
1104 # define YY_IGNORE_USELESS_CAST_END
1105 #endif
1106 
1107 
1108 #define YY_ASSERT(E) ((void) (0 && (E)))
1109 
1110 #if !defined yyoverflow
1111 
1112 /* The parser invokes alloca or malloc; define the necessary symbols.  */
1113 
1114 # ifdef YYSTACK_USE_ALLOCA
1115 #  if YYSTACK_USE_ALLOCA
1116 #   ifdef __GNUC__
1117 #    define YYSTACK_ALLOC __builtin_alloca
1118 #   elif defined __BUILTIN_VA_ARG_INCR
1119 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1120 #   elif defined _AIX
1121 #    define YYSTACK_ALLOC __alloca
1122 #   elif defined _MSC_VER
1123 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1124 #    define alloca _alloca
1125 #   else
1126 #    define YYSTACK_ALLOC alloca
1127 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1128 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1129       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
1130 #     ifndef EXIT_SUCCESS
1131 #      define EXIT_SUCCESS 0
1132 #     endif
1133 #    endif
1134 #   endif
1135 #  endif
1136 # endif
1137 
1138 # ifdef YYSTACK_ALLOC
1139    /* Pacify GCC's 'empty if-body' warning.  */
1140 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1141 #  ifndef YYSTACK_ALLOC_MAXIMUM
1142     /* The OS might guarantee only one guard page at the bottom of the stack,
1143        and a page size can be as small as 4096 bytes.  So we cannot safely
1144        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1145        to allow for a few compiler-allocated temporary stack slots.  */
1146 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1147 #  endif
1148 # else
1149 #  define YYSTACK_ALLOC YYMALLOC
1150 #  define YYSTACK_FREE YYFREE
1151 #  ifndef YYSTACK_ALLOC_MAXIMUM
1152 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1153 #  endif
1154 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1155        && ! ((defined YYMALLOC || defined malloc) \
1156              && (defined YYFREE || defined free)))
1157 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1158 #   ifndef EXIT_SUCCESS
1159 #    define EXIT_SUCCESS 0
1160 #   endif
1161 #  endif
1162 #  ifndef YYMALLOC
1163 #   define YYMALLOC malloc
1164 #   if ! defined malloc && ! defined EXIT_SUCCESS
1165 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1166 #   endif
1167 #  endif
1168 #  ifndef YYFREE
1169 #   define YYFREE free
1170 #   if ! defined free && ! defined EXIT_SUCCESS
1171 void free (void *); /* INFRINGES ON USER NAME SPACE */
1172 #   endif
1173 #  endif
1174 # endif
1175 #endif /* !defined yyoverflow */
1176 
1177 #if (! defined yyoverflow \
1178      && (! defined __cplusplus \
1179          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1180 
1181 /* A type that is properly aligned for any stack member.  */
1182 union yyalloc
1183 {
1184   yy_state_t yyss_alloc;
1185   YYSTYPE yyvs_alloc;
1186 };
1187 
1188 /* The size of the maximum gap between one aligned stack and the next.  */
1189 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1190 
1191 /* The size of an array large to enough to hold all stacks, each with
1192    N elements.  */
1193 # define YYSTACK_BYTES(N) \
1194      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1195       + YYSTACK_GAP_MAXIMUM)
1196 
1197 # define YYCOPY_NEEDED 1
1198 
1199 /* Relocate STACK from its old location to the new one.  The
1200    local variables YYSIZE and YYSTACKSIZE give the old and new number of
1201    elements in the stack, and YYPTR gives the new location of the
1202    stack.  Advance YYPTR to a properly aligned location for the next
1203    stack.  */
1204 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
1205     do                                                                  \
1206       {                                                                 \
1207         YYPTRDIFF_T yynewbytes;                                         \
1208         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
1209         Stack = &yyptr->Stack_alloc;                                    \
1210         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1211         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
1212       }                                                                 \
1213     while (0)
1214 
1215 #endif
1216 
1217 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1218 /* Copy COUNT objects from SRC to DST.  The source and destination do
1219    not overlap.  */
1220 # ifndef YYCOPY
1221 #  if defined __GNUC__ && 1 < __GNUC__
1222 #   define YYCOPY(Dst, Src, Count) \
1223       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1224 #  else
1225 #   define YYCOPY(Dst, Src, Count)              \
1226       do                                        \
1227         {                                       \
1228           YYPTRDIFF_T yyi;                      \
1229           for (yyi = 0; yyi < (Count); yyi++)   \
1230             (Dst)[yyi] = (Src)[yyi];            \
1231         }                                       \
1232       while (0)
1233 #  endif
1234 # endif
1235 #endif /* !YYCOPY_NEEDED */
1236 
1237 /* YYFINAL -- State number of the termination state.  */
1238 #define YYFINAL  2
1239 /* YYLAST -- Last index in YYTABLE.  */
1240 #define YYLAST   807
1241 
1242 /* YYNTOKENS -- Number of terminals.  */
1243 #define YYNTOKENS  378
1244 /* YYNNTS -- Number of nonterminals.  */
1245 #define YYNNTS  406
1246 /* YYNRULES -- Number of rules.  */
1247 #define YYNRULES  786
1248 /* YYNSTATES -- Number of states.  */
1249 #define YYNSTATES  1177
1250 
1251 /* YYMAXUTOK -- Last valid token kind.  */
1252 #define YYMAXUTOK   632
1253 
1254 
1255 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1256    as returned by yylex, with out-of-bounds checking.  */
1257 #define YYTRANSLATE(YYX)                                \
1258   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
1259    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
1260    : YYSYMBOL_YYUNDEF)
1261 
1262 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1263    as returned by yylex.  */
1264 static const yytype_int16 yytranslate[] =
1265 {
1266        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1267        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1268        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1269        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1270        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1271        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1272        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1273        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1274        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1275        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1276        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1277        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1278        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1279        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1280        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1281        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1282        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1283        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1284        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1285        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1286        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1287        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1288        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1289        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1290        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1291        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1292        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1293       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1294       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1295       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1296       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1297       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1298       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1299       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1300       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1301       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1302      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1303      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1304      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
1305      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
1306      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
1307      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1308      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1309      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1310      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1311      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1312      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1313      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1314      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1315      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1316      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1317      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1318      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1319      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1320      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1321      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1322      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1323      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1324      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1325      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1326      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1327      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1328      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1329      375,   376,   377
1330 };
1331 
1332 #if YYDEBUG
1333 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1334 static const yytype_int16 yyrline[] =
1335 {
1336        0,   221,   221,   221,   222,   222,   223,   223,   224,   224,
1337      224,   225,   225,   226,   226,   227,   227,   228,   230,   237,
1338      243,   244,   245,   245,   245,   246,   246,   247,   247,   247,
1339      248,   248,   248,   249,   249,   249,   250,   250,   251,   252,
1340      252,   252,   253,   253,   253,   254,   254,   255,   255,   256,
1341      256,   257,   257,   258,   258,   259,   259,   260,   260,   261,
1342      261,   262,   262,   262,   263,   263,   264,   264,   264,   265,
1343      265,   265,   266,   266,   267,   267,   268,   268,   269,   269,
1344      270,   270,   270,   271,   271,   272,   272,   273,   273,   273,
1345      274,   274,   275,   275,   276,   276,   277,   277,   277,   278,
1346      278,   279,   279,   280,   280,   281,   281,   282,   282,   283,
1347      283,   284,   284,   285,   285,   286,   286,   286,   287,   287,
1348      287,   288,   288,   288,   289,   289,   289,   289,   290,   291,
1349      291,   291,   292,   292,   292,   293,   293,   294,   294,   295,
1350      295,   295,   296,   296,   296,   297,   297,   298,   298,   298,
1351      299,   300,   300,   300,   301,   301,   301,   302,   302,   303,
1352      303,   304,   304,   305,   306,   306,   307,   307,   308,   308,
1353      309,   309,   310,   310,   311,   311,   312,   312,   313,   313,
1354      314,   314,   315,   315,   316,   317,   317,   318,   318,   318,
1355      319,   319,   320,   320,   321,   321,   322,   322,   322,   323,
1356      323,   324,   325,   325,   326,   326,   327,   328,   328,   329,
1357      329,   330,   330,   330,   331,   331,   332,   332,   332,   333,
1358      333,   333,   334,   334,   335,   336,   336,   337,   337,   338,
1359      338,   339,   339,   340,   340,   340,   341,   341,   341,   342,
1360      342,   342,   343,   343,   344,   344,   344,   345,   345,   346,
1361      346,   347,   347,   348,   348,   348,   349,   349,   350,   350,
1362      351,   351,   352,   352,   353,   353,   354,   354,   355,   356,
1363      356,   357,   357,   358,   358,   359,   359,   359,   360,   360,
1364      360,   362,   370,   384,   385,   386,   386,   386,   386,   386,
1365      387,   387,   387,   389,   397,   411,   412,   413,   413,   413,
1366      413,   414,   414,   414,   416,   424,   438,   439,   440,   440,
1367      440,   440,   441,   441,   441,   443,   464,   465,   466,   466,
1368      466,   466,   467,   467,   467,   468,   468,   468,   471,   490,
1369      507,   515,   525,   532,   542,   561,   562,   563,   563,   563,
1370      563,   563,   564,   564,   564,   565,   565,   565,   565,   567,
1371      576,   585,   596,   605,   614,   623,   632,   643,   652,   664,
1372      678,   693,   704,   721,   738,   755,   772,   787,   802,   815,
1373      830,   839,   848,   857,   866,   875,   884,   891,   900,   909,
1374      918,   927,   936,   945,   954,   963,   972,   985,   996,  1007,
1375     1018,  1027,  1040,  1053,  1062,  1071,  1080,  1087,  1094,  1103,
1376     1110,  1119,  1127,  1134,  1141,  1149,  1158,  1166,  1184,  1192,
1377     1200,  1208,  1216,  1224,  1237,  1244,  1253,  1262,  1276,  1285,
1378     1294,  1303,  1312,  1321,  1330,  1339,  1348,  1355,  1362,  1388,
1379     1396,  1403,  1410,  1417,  1424,  1432,  1440,  1448,  1455,  1466,
1380     1477,  1484,  1493,  1502,  1511,  1520,  1527,  1534,  1541,  1557,
1381     1565,  1573,  1583,  1593,  1603,  1617,  1625,  1638,  1649,  1657,
1382     1670,  1679,  1688,  1697,  1706,  1716,  1726,  1734,  1747,  1756,
1383     1764,  1773,  1781,  1794,  1803,  1812,  1822,  1829,  1839,  1849,
1384     1859,  1869,  1879,  1889,  1899,  1909,  1919,  1929,  1936,  1943,
1385     1950,  1959,  1968,  1977,  1986,  1993,  2003,  2011,  2020,  2027,
1386     2045,  2058,  2071,  2084,  2093,  2102,  2111,  2120,  2129,  2139,
1387     2149,  2160,  2169,  2178,  2187,  2196,  2205,  2214,  2223,  2232,
1388     2241,  2254,  2267,  2276,  2283,  2292,  2301,  2310,  2319,  2329,
1389     2337,  2350,  2358,  2414,  2421,  2436,  2446,  2456,  2463,  2470,
1390     2477,  2484,  2499,  2514,  2521,  2528,  2537,  2545,  2552,  2566,
1391     2587,  2608,  2620,  2632,  2644,  2653,  2674,  2686,  2698,  2707,
1392     2728,  2737,  2746,  2755,  2763,  2771,  2784,  2797,  2812,  2827,
1393     2836,  2845,  2855,  2865,  2874,  2883,  2892,  2898,  2907,  2916,
1394     2926,  2936,  2946,  2955,  2965,  2974,  2987,  3000,  3012,  3026,
1395     3038,  3052,  3061,  3072,  3081,  3090,  3097,  3107,  3114,  3121,
1396     3130,  3139,  3149,  3159,  3169,  3179,  3186,  3193,  3202,  3211,
1397     3221,  3231,  3241,  3248,  3255,  3262,  3270,  3280,  3290,  3300,
1398     3310,  3320,  3330,  3386,  3396,  3404,  3412,  3427,  3436,  3442,
1399     3443,  3444,  3444,  3444,  3445,  3445,  3445,  3446,  3446,  3448,
1400     3458,  3467,  3474,  3481,  3488,  3495,  3502,  3509,  3515,  3516,
1401     3517,  3517,  3517,  3518,  3518,  3518,  3519,  3520,  3520,  3521,
1402     3521,  3522,  3522,  3523,  3524,  3525,  3526,  3527,  3528,  3529,
1403     3531,  3540,  3550,  3557,  3564,  3573,  3580,  3587,  3594,  3601,
1404     3610,  3619,  3626,  3633,  3643,  3653,  3663,  3673,  3683,  3693,
1405     3704,  3710,  3711,  3712,  3714,  3721,  3727,  3728,  3729,  3731,
1406     3738,  3748,  3755,  3764,  3772,  3778,  3779,  3781,  3781,  3781,
1407     3782,  3782,  3783,  3784,  3785,  3786,  3787,  3789,  3798,  3807,
1408     3814,  3823,  3830,  3839,  3847,  3860,  3868,  3881,  3887,  3888,
1409     3889,  3889,  3890,  3890,  3891,  3891,  3892,  3892,  3893,  3893,
1410     3894,  3894,  3895,  3895,  3896,  3896,  3897,  3897,  3898,  3898,
1411     3899,  3901,  3913,  3925,  3938,  3951,  3963,  3975,  3990,  4005,
1412     4017,  4029,  4041,  4053,  4066,  4079,  4092,  4105,  4118,  4131,
1413     4144,  4159,  4174,  4185,  4194,  4210,  4217,  4226,  4235,  4244,
1414     4254,  4260,  4261,  4262,  4262,  4264,  4279
1415 };
1416 #endif
1417 
1418 /** Accessing symbol of state STATE.  */
1419 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1420 
1421 #if YYDEBUG || 0
1422 /* The user-facing name of the symbol whose (internal) number is
1423    YYSYMBOL.  No bounds checking.  */
1424 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1425 
1426 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1427    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1428 static const char *const yytname[] =
1429 {
1430   "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER",
1431   "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG",
1432   "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS",
1433   "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4",
1434   "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_NAT64", "VAR_PREFER_IP6",
1435   "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS",
1436   "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE",
1437   "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_SOCK_QUEUE_TIMEOUT", "VAR_CHROOT",
1438   "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
1439   "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
1440   "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
1441   "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
1442   "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
1443   "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
1444   "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
1445   "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
1446   "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
1447   "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
1448   "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
1449   "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
1450   "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
1451   "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
1452   "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
1453   "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
1454   "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
1455   "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
1456   "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
1457   "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
1458   "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
1459   "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
1460   "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
1461   "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
1462   "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
1463   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
1464   "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT",
1465   "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS",
1466   "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME",
1467   "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
1468   "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
1469   "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART",
1470   "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE",
1471   "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN",
1472   "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH",
1473   "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT",
1474   "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES",
1475   "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM",
1476   "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY",
1477   "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST",
1478   "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM",
1479   "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM",
1480   "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT",
1481   "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE",
1482   "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY",
1483   "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
1484   "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE",
1485   "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES",
1486   "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT",
1487   "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL",
1488   "VAR_DNS64_IGNORE_AAAA", "VAR_NAT64_PREFIX", "VAR_DNSTAP",
1489   "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP",
1490   "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME",
1491   "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE",
1492   "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY",
1493   "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL",
1494   "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION",
1495   "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES",
1496   "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES",
1497   "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES",
1498   "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
1499   "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
1500   "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_DNSTAP_SAMPLE_RATE",
1501   "VAR_RESPONSE_IP_TAG", "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA",
1502   "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_IP_DSCP",
1503   "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT",
1504   "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT",
1505   "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_OUTBOUND_MSG_RETRY",
1506   "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS",
1507   "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN",
1508   "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR",
1509   "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF",
1510   "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE",
1511   "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE",
1512   "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6",
1513   "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6",
1514   "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6",
1515   "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
1516   "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_CACHE_MIN_NEGATIVE_TTL",
1517   "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT",
1518   "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG",
1519   "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE",
1520   "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA",
1521   "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
1522   "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
1523   "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
1524   "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
1525   "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
1526   "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
1527   "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
1528   "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
1529   "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
1530   "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER",
1531   "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT",
1532   "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED",
1533   "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE",
1534   "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS",
1535   "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS",
1536   "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES",
1537   "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED",
1538   "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
1539   "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB",
1540   "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST",
1541   "VAR_CACHEDB_REDISREPLICAHOST", "VAR_CACHEDB_REDISPORT",
1542   "VAR_CACHEDB_REDISREPLICAPORT", "VAR_CACHEDB_REDISTIMEOUT",
1543   "VAR_CACHEDB_REDISREPLICATIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS",
1544   "VAR_CACHEDB_REDISPATH", "VAR_CACHEDB_REDISREPLICAPATH",
1545   "VAR_CACHEDB_REDISPASSWORD", "VAR_CACHEDB_REDISREPLICAPASSWORD",
1546   "VAR_CACHEDB_REDISLOGICALDB", "VAR_CACHEDB_REDISREPLICALOGICALDB",
1547   "VAR_CACHEDB_REDISCOMMANDTIMEOUT",
1548   "VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT",
1549   "VAR_CACHEDB_REDISCONNECTTIMEOUT",
1550   "VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT",
1551   "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM",
1552   "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL",
1553   "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT",
1554   "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL",
1555   "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT",
1556   "VAR_TCP_CONNECTION_LIMIT", "VAR_ANSWER_COOKIE", "VAR_COOKIE_SECRET",
1557   "VAR_IP_RATELIMIT_COOKIE", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE",
1558   "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT",
1559   "VAR_LOG_TAG_QUERYREPLY", "VAR_DISCARD_TIMEOUT", "VAR_WAIT_LIMIT",
1560   "VAR_WAIT_LIMIT_COOKIE", "VAR_WAIT_LIMIT_NETBLOCK",
1561   "VAR_WAIT_LIMIT_COOKIE_NETBLOCK", "VAR_STREAM_WAIT_SIZE",
1562   "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI",
1563   "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6",
1564   "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS",
1565   "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG",
1566   "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
1567   "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
1568   "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
1569   "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
1570   "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_DNS_ERROR_REPORTING",
1571   "VAR_INTERFACE_ACTION", "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG",
1572   "VAR_INTERFACE_TAG_ACTION", "VAR_INTERFACE_TAG_DATA", "VAR_QUIC_PORT",
1573   "VAR_QUIC_SIZE", "VAR_PROXY_PROTOCOL_PORT",
1574   "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL",
1575   "VAR_DISABLE_EDNS_DO", "VAR_CACHEDB_NO_STORE", "VAR_LOG_DESTADDR",
1576   "VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED", "VAR_COOKIE_SECRET_FILE",
1577   "VAR_ITER_SCRUB_NS", "VAR_ITER_SCRUB_CNAME", "VAR_MAX_GLOBAL_QUOTA",
1578   "VAR_HARDEN_UNVERIFIED_GLUE", "VAR_LOG_TIME_ISO",
1579   "VAR_ITER_SCRUB_PROMISCUOUS", "$accept", "toplevelvars", "toplevelvar",
1580   "force_toplevel", "serverstart", "contents_server", "content_server",
1581   "stub_clause", "stubstart", "contents_stub", "content_stub",
1582   "forward_clause", "forwardstart", "contents_forward", "content_forward",
1583   "view_clause", "viewstart", "contents_view", "content_view", "authstart",
1584   "contents_auth", "content_auth", "rpz_tag", "rpz_action_override",
1585   "rpz_cname_override", "rpz_log", "rpz_log_name",
1586   "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz",
1587   "server_num_threads", "server_verbosity", "server_statistics_interval",
1588   "server_statistics_cumulative", "server_extended_statistics",
1589   "server_statistics_inhibit_zero", "server_shm_enable", "server_shm_key",
1590   "server_port", "server_send_client_subnet", "server_client_subnet_zone",
1591   "server_client_subnet_always_forward", "server_client_subnet_opcode",
1592   "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
1593   "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
1594   "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6",
1595   "server_interface", "server_outgoing_interface", "server_outgoing_range",
1596   "server_outgoing_port_permit", "server_outgoing_port_avoid",
1597   "server_outgoing_num_tcp", "server_incoming_num_tcp",
1598   "server_interface_automatic", "server_interface_automatic_ports",
1599   "server_do_ip4", "server_do_ip6", "server_do_nat64", "server_do_udp",
1600   "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6",
1601   "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
1602   "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
1603   "server_tcp_auth_query_timeout", "server_tcp_keepalive",
1604   "server_tcp_keepalive_timeout", "server_sock_queue_timeout",
1605   "server_tcp_upstream", "server_udp_upstream_without_downstream",
1606   "server_ssl_upstream", "server_ssl_service_key",
1607   "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
1608   "server_tls_win_cert", "server_tls_additional_port",
1609   "server_tls_ciphers", "server_tls_ciphersuites",
1610   "server_tls_session_ticket_keys", "server_tls_use_sni",
1611   "server_https_port", "server_http_endpoint", "server_http_max_streams",
1612   "server_http_query_buffer_size", "server_http_response_buffer_size",
1613   "server_http_nodelay", "server_http_notls_downstream",
1614   "server_quic_port", "server_quic_size", "server_use_systemd",
1615   "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
1616   "server_log_time_iso", "server_log_queries", "server_log_replies",
1617   "server_log_tag_queryreply", "server_log_servfail",
1618   "server_log_destaddr", "server_log_local_actions", "server_chroot",
1619   "server_username", "server_directory", "server_logfile",
1620   "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
1621   "server_dlv_anchor", "server_auto_trust_anchor_file",
1622   "server_trust_anchor_file", "server_trusted_keys_file",
1623   "server_trust_anchor", "server_trust_anchor_signaling",
1624   "server_root_key_sentinel", "server_domain_insecure",
1625   "server_hide_identity", "server_hide_version", "server_hide_trustanchor",
1626   "server_hide_http_user_agent", "server_identity", "server_version",
1627   "server_http_user_agent", "server_nsid", "server_so_rcvbuf",
1628   "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
1629   "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size",
1630   "server_edns_buffer_size", "server_msg_buffer_size",
1631   "server_msg_cache_size", "server_msg_cache_slabs",
1632   "server_num_queries_per_thread", "server_jostle_timeout",
1633   "server_delay_close", "server_udp_connect", "server_unblock_lan_zones",
1634   "server_insecure_lan_zones", "server_rrset_cache_size",
1635   "server_rrset_cache_slabs", "server_infra_host_ttl",
1636   "server_infra_lame_ttl", "server_infra_cache_numhosts",
1637   "server_infra_cache_lame_size", "server_infra_cache_slabs",
1638   "server_infra_cache_min_rtt", "server_infra_cache_max_rtt",
1639   "server_infra_keep_probing", "server_target_fetch_policy",
1640   "server_harden_short_bufsize", "server_harden_large_queries",
1641   "server_harden_glue", "server_harden_unverified_glue",
1642   "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
1643   "server_harden_referral_path", "server_harden_algo_downgrade",
1644   "server_harden_unknown_additional", "server_use_caps_for_id",
1645   "server_caps_whitelist", "server_private_address",
1646   "server_private_domain", "server_prefetch", "server_prefetch_key",
1647   "server_deny_any", "server_unwanted_reply_threshold",
1648   "server_do_not_query_address", "server_do_not_query_localhost",
1649   "server_access_control", "server_interface_action", "server_module_conf",
1650   "server_val_override_date", "server_val_sig_skew_min",
1651   "server_val_sig_skew_max", "server_val_max_restart",
1652   "server_cache_max_ttl", "server_cache_max_negative_ttl",
1653   "server_cache_min_negative_ttl", "server_cache_min_ttl",
1654   "server_bogus_ttl", "server_val_clean_additional",
1655   "server_val_permissive_mode", "server_aggressive_nsec",
1656   "server_ignore_cd_flag", "server_disable_edns_do",
1657   "server_serve_expired", "server_serve_expired_ttl",
1658   "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
1659   "server_serve_expired_client_timeout", "server_ede_serve_expired",
1660   "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
1661   "server_val_log_level", "server_val_nsec3_keysize_iterations",
1662   "server_zonemd_permissive_mode", "server_add_holddown",
1663   "server_del_holddown", "server_keep_missing",
1664   "server_permit_small_holddown", "server_key_cache_size",
1665   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
1666   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
1667   "server_rrset_roundrobin", "server_unknown_server_time_limit",
1668   "server_discard_timeout", "server_wait_limit",
1669   "server_wait_limit_cookie", "server_wait_limit_netblock",
1670   "server_wait_limit_cookie_netblock", "server_max_udp_size",
1671   "server_dns64_prefix", "server_dns64_synthall",
1672   "server_dns64_ignore_aaaa", "server_nat64_prefix", "server_define_tag",
1673   "server_local_zone_tag", "server_access_control_tag",
1674   "server_access_control_tag_action", "server_access_control_tag_data",
1675   "server_local_zone_override", "server_access_control_view",
1676   "server_interface_tag", "server_interface_tag_action",
1677   "server_interface_tag_data", "server_interface_view",
1678   "server_response_ip_tag", "server_ip_ratelimit",
1679   "server_ip_ratelimit_cookie", "server_ratelimit",
1680   "server_ip_ratelimit_size", "server_ratelimit_size",
1681   "server_ip_ratelimit_slabs", "server_ratelimit_slabs",
1682   "server_ratelimit_for_domain", "server_ratelimit_below_domain",
1683   "server_ip_ratelimit_factor", "server_ratelimit_factor",
1684   "server_ip_ratelimit_backoff", "server_ratelimit_backoff",
1685   "server_outbound_msg_retry", "server_max_sent_count",
1686   "server_max_query_restarts", "server_low_rtt", "server_fast_server_num",
1687   "server_fast_server_permil", "server_qname_minimisation",
1688   "server_qname_minimisation_strict", "server_pad_responses",
1689   "server_pad_responses_block_size", "server_pad_queries",
1690   "server_pad_queries_block_size", "server_ipsecmod_enabled",
1691   "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
1692   "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
1693   "server_ipsecmod_strict", "server_edns_client_string",
1694   "server_edns_client_string_opcode", "server_ede",
1695   "server_dns_error_reporting", "server_proxy_protocol_port", "stub_name",
1696   "stub_host", "stub_addr", "stub_first", "stub_no_cache",
1697   "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name",
1698   "forward_host", "forward_addr", "forward_first", "forward_no_cache",
1699   "forward_ssl_upstream", "forward_tcp_upstream", "auth_name",
1700   "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
1701   "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream",
1702   "auth_for_upstream", "auth_fallback_enabled", "view_name",
1703   "view_local_zone", "view_response_ip", "view_response_ip_data",
1704   "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
1705   "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
1706   "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
1707   "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
1708   "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
1709   "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
1710   "dt_dnstap_tls", "dt_dnstap_tls_server_name",
1711   "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
1712   "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
1713   "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
1714   "dt_dnstap_log_resolver_query_messages",
1715   "dt_dnstap_log_resolver_response_messages",
1716   "dt_dnstap_log_client_query_messages",
1717   "dt_dnstap_log_client_response_messages",
1718   "dt_dnstap_log_forwarder_query_messages",
1719   "dt_dnstap_log_forwarder_response_messages", "dt_dnstap_sample_rate",
1720   "pythonstart", "contents_py", "content_py", "py_script", "dynlibstart",
1721   "contents_dl", "content_dl", "dl_file",
1722   "server_disable_dnssec_lame_check", "server_log_identity",
1723   "server_response_ip", "server_response_ip_data", "dnscstart",
1724   "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
1725   "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
1726   "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated",
1727   "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size",
1728   "dnsc_dnscrypt_shared_secret_cache_slabs",
1729   "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs",
1730   "cachedbstart", "contents_cachedb", "content_cachedb",
1731   "cachedb_backend_name", "cachedb_secret_seed", "cachedb_no_store",
1732   "cachedb_check_when_serve_expired", "redis_server_host",
1733   "redis_replica_server_host", "redis_server_port",
1734   "redis_replica_server_port", "redis_server_path",
1735   "redis_replica_server_path", "redis_server_password",
1736   "redis_replica_server_password", "redis_timeout",
1737   "redis_replica_timeout", "redis_command_timeout",
1738   "redis_replica_command_timeout", "redis_connect_timeout",
1739   "redis_replica_connect_timeout", "redis_expire_records",
1740   "redis_logical_db", "redis_replica_logical_db",
1741   "server_tcp_connection_limit", "server_answer_cookie",
1742   "server_cookie_secret", "server_cookie_secret_file",
1743   "server_iter_scrub_ns", "server_iter_scrub_cname",
1744   "server_max_global_quota", "server_iter_scrub_promiscuous", "ipsetstart",
1745   "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
1746 };
1747 
1748 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)1749 yysymbol_name (yysymbol_kind_t yysymbol)
1750 {
1751   return yytname[yysymbol];
1752 }
1753 #endif
1754 
1755 #define YYPACT_NINF (-310)
1756 
1757 #define yypact_value_is_default(Yyn) \
1758   ((Yyn) == YYPACT_NINF)
1759 
1760 #define YYTABLE_NINF (-1)
1761 
1762 #define yytable_value_is_error(Yyn) \
1763   0
1764 
1765 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1766    STATE-NUM.  */
1767 static const yytype_int16 yypact[] =
1768 {
1769     -310,   274,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1770     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1771     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1772     -310,  -310,  -310,  -310,  -310,   -13,   221,   236,   291,   112,
1773       88,   -14,   292,   -81,  -309,   142,  -121,  -302,    31,    32,
1774       33,    83,    89,    93,    94,   121,   122,   123,   126,   134,
1775      150,   215,   217,   238,   240,   241,   242,   243,   244,   245,
1776      246,   247,   259,   262,   263,   265,   266,   267,   268,   269,
1777      270,   271,   272,   277,   279,   280,   283,   284,   285,   288,
1778      297,   298,   313,   314,   316,   317,   319,   320,   321,   322,
1779      329,   330,   345,   347,   355,   357,   358,   360,   361,   363,
1780      366,   367,   369,   371,   373,   374,   376,   377,   378,   379,
1781      381,   386,   387,   388,   389,   390,   403,   405,   411,   412,
1782      413,   414,   415,   417,   423,   424,   425,   426,   427,   428,
1783      429,   430,   432,   433,   434,   435,   437,   438,   439,   440,
1784      441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
1785      451,   452,   477,   478,   479,   480,   481,   482,   483,   484,
1786      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
1787      495,   496,   497,   498,   499,   500,   501,   503,   504,   505,
1788      506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
1789      516,   517,   518,   519,   520,   522,   523,   525,   526,   527,
1790      528,   529,   530,   531,   533,   534,   535,   536,   537,   538,
1791      539,   540,   541,   542,   543,   544,   547,   548,   549,   550,
1792      551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
1793      561,   562,   563,   564,   565,   566,   568,   569,   570,   571,
1794      572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
1795      582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
1796      592,   593,   594,   595,   596,   597,   598,   600,   601,   602,
1797      604,   605,   606,   607,   608,   610,   611,   612,   613,   614,
1798      615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
1799      625,   626,   627,   628,   629,   630,   631,  -310,  -310,  -310,
1800     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1801     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1802     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1803     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1804     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1805     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1806     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1807     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1808     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1809     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1810     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1811     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1812     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1813     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1814     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1815     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1816     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1817     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1818     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1819     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1820     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1821     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1822     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1823     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1824     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1825     -310,  -310,  -310,  -310,  -310,  -310,  -310,   632,   633,   634,
1826      635,   636,   637,   638,   639,  -310,  -310,  -310,  -310,  -310,
1827     -310,  -310,  -310,  -310,   640,   641,   642,   643,   644,   645,
1828      646,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   647,
1829      648,   649,   650,   651,   652,   653,  -310,  -310,  -310,  -310,
1830     -310,  -310,  -310,  -310,   654,   655,   656,   657,   658,   659,
1831      660,   661,   662,   663,  -310,  -310,  -310,  -310,  -310,  -310,
1832     -310,  -310,  -310,  -310,  -310,   664,   665,   666,   667,   668,
1833      669,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1834     -310,  -310,  -310,  -310,   670,   671,   672,   673,   674,   675,
1835      676,   677,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1836     -310,   678,   679,   680,   681,   682,   683,   684,   685,   686,
1837      687,   688,   689,   690,   691,   692,   693,   694,   695,   696,
1838      697,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1839     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1840     -310,  -310,   698,  -310,  -310,   699,  -310,  -310,   700,   701,
1841      702,   703,   704,   705,   706,   707,   708,   709,  -310,  -310,
1842     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   710,
1843      711,   712,   713,   714,   715,   716,   717,   718,   719,   720,
1844      721,   722,   723,   724,   725,   726,   727,   728,   729,   730,
1845     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1846     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1847     -310,  -310,   731,   732,  -310,  -310,  -310,  -310,  -310,  -310,
1848     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1849     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1850     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1851     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1852     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1853     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   733,
1854      734,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1855     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1856     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1857     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1858     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1859     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1860     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1861     -310,   735,   736,   737,  -310,  -310,  -310,  -310,  -310,  -310,
1862     -310,  -310,  -310,  -310,  -310,  -310,  -310,   738,   739,  -310,
1863     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1864     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1865     -310,   740,   741,   742,   743,   744,   745,  -310,  -310,  -310,
1866     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1867     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1868     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1869     -310,  -310,   746,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1870     -310,  -310,  -310,   747,   748,  -310,  -310,  -310,  -310,  -310,
1871      749,  -310,  -310,  -310,  -310,  -310,  -310,   750,   751,   752,
1872      753,   754,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1873     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1874     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1875     -310,  -310,   755,  -310,  -310,   756,   757,  -310,  -310,  -310,
1876     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1877     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1878     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1879     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1880     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1881     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1882     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1883     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
1884     -310,  -310,  -310,  -310,  -310,  -310,   758,   759,   760,  -310,
1885     -310,  -310,  -310,  -310,  -310,  -310,  -310,   761,   762,  -310,
1886     -310,  -310,  -310,  -310,  -310,  -310,  -310
1887 };
1888 
1889 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1890    Performed when YYTABLE does not specify something else to do.  Zero
1891    means the default is an error.  */
1892 static const yytype_int16 yydefact[] =
1893 {
1894        2,     0,     1,    18,    19,   282,   294,   628,   690,   647,
1895      305,   704,   727,   315,   780,   334,   695,     3,    17,    21,
1896        5,   284,     6,   296,    10,   307,   317,   336,   630,   649,
1897      692,   697,   706,   729,   782,     4,   281,   293,   304,    14,
1898       15,     8,     9,     7,    16,    11,    12,    13,     0,     0,
1899        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1900        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1901        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1902        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1903        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1904        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1905        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1906        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1908        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1909        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1910        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1911        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1912        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1913        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1914        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1915        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1916        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1917        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1918        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1919        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1920        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1921        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1922        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1923        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1924        0,     0,     0,     0,     0,     0,     0,    20,    22,    23,
1925       90,    93,   102,   270,   219,   220,    24,   172,   173,   174,
1926      175,   176,   177,   178,   179,   180,   181,    39,    81,    25,
1927       94,    95,    50,    74,    89,   266,    26,    27,    28,    31,
1928       32,    29,    30,    33,    34,    35,   261,   262,   263,    36,
1929       37,    38,   126,   231,   127,   129,   130,   131,   233,   238,
1930      234,   250,   251,   252,   256,   132,   133,   134,   135,   136,
1931      137,   138,   264,   265,   215,    91,    80,   106,   279,   124,
1932      125,   243,   240,   273,   128,    40,    41,    42,    43,    44,
1933       82,    96,    97,   113,    68,    78,    69,   223,   224,   107,
1934       60,    61,   222,    64,    62,    63,    65,   259,   117,   121,
1935      142,   154,   187,   157,   249,   118,    75,    45,    46,    47,
1936      104,   143,   144,   145,   146,    48,    49,    51,    52,    54,
1937       55,    53,   151,   152,   158,    56,    57,    58,    66,   278,
1938       85,   122,    99,   153,   271,    92,   182,   100,   101,   119,
1939      120,   241,   105,    59,    83,    86,   196,    67,    70,   108,
1940      109,   110,    84,   183,   184,   111,    71,    72,    73,   232,
1941      123,   272,   206,   207,   208,   209,   210,   211,   212,   213,
1942      221,   112,    79,   260,   114,   115,   116,   185,    76,    77,
1943       98,    87,    88,   103,   139,   140,   242,   244,   245,   246,
1944      247,   248,   141,   147,   148,   149,   150,   188,   189,   191,
1945      193,   194,   192,   195,   198,   199,   200,   197,   216,   155,
1946      255,   156,   161,   162,   159,   160,   163,   164,   166,   165,
1947      168,   167,   169,   170,   171,   235,   237,   236,   186,   201,
1948      202,   203,   204,   205,   225,   227,   226,   228,   229,   230,
1949      257,   258,   267,   268,   269,   190,   214,   217,   218,   239,
1950      253,   254,   274,   275,   276,   277,   280,     0,     0,     0,
1951        0,     0,     0,     0,     0,   283,   285,   286,   287,   289,
1952      290,   291,   292,   288,     0,     0,     0,     0,     0,     0,
1953        0,   295,   297,   298,   299,   300,   301,   302,   303,     0,
1954        0,     0,     0,     0,     0,     0,   306,   308,   309,   312,
1955      313,   310,   314,   311,     0,     0,     0,     0,     0,     0,
1956        0,     0,     0,     0,   316,   318,   319,   320,   321,   325,
1957      326,   327,   322,   323,   324,     0,     0,     0,     0,     0,
1958        0,   339,   343,   344,   345,   346,   347,   335,   337,   338,
1959      340,   341,   342,   348,     0,     0,     0,     0,     0,     0,
1960        0,     0,   629,   631,   633,   632,   638,   634,   635,   636,
1961      637,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1962        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1963        0,   648,   650,   652,   651,   653,   654,   655,   656,   657,
1964      658,   659,   660,   661,   662,   663,   664,   665,   666,   667,
1965      668,   669,     0,   691,   693,     0,   696,   698,     0,     0,
1966        0,     0,     0,     0,     0,     0,     0,     0,   705,   707,
1967      708,   709,   711,   712,   710,   713,   714,   715,   716,     0,
1968        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1969        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1970      728,   730,   731,   748,   750,   732,   733,   734,   735,   742,
1971      743,   744,   745,   736,   737,   738,   739,   740,   741,   749,
1972      746,   747,     0,     0,   781,   783,   784,   350,   349,   357,
1973      370,   368,   382,   377,   378,   379,   383,   380,   381,   384,
1974      385,   386,   390,   391,   392,   426,   427,   428,   429,   430,
1975      458,   459,   460,   466,   467,   373,   468,   469,   472,   470,
1976      471,   476,   477,   478,   494,   441,   442,   445,   446,   479,
1977      498,   435,   437,   499,   507,   508,   509,   374,   457,   529,
1978      530,   436,   523,   417,   369,   431,   495,   503,   481,     0,
1979        0,   533,   375,   351,   416,   486,   352,   371,   372,   432,
1980      433,   531,   483,   488,   489,   388,   387,   353,   534,   461,
1981      493,   418,   440,   500,   501,   502,   506,   522,   434,   527,
1982      525,   526,   449,   456,   490,   491,   450,   451,   482,   511,
1983      420,   421,   425,   393,   395,   389,   396,   397,   398,   399,
1984      406,   407,   408,   409,   410,   411,   412,   535,   536,   543,
1985      462,   463,   464,   465,   473,   474,   475,   544,   545,   546,
1986      547,     0,     0,     0,   484,   452,   454,   700,   560,   565,
1987      563,   562,   566,   564,   573,   574,   575,     0,     0,   569,
1988      570,   571,   572,   358,   359,   360,   361,   362,   363,   364,
1989      365,   366,   367,   487,   504,   528,   505,   579,   580,   453,
1990      548,     0,     0,     0,     0,     0,     0,   513,   514,   515,
1991      516,   517,   518,   519,   520,   521,   701,   443,   444,   447,
1992      438,   510,   415,   355,   356,   439,   581,   582,   583,   584,
1993      585,   587,   586,   588,   589,   590,   394,   401,   576,   578,
1994      577,   400,     0,   773,   774,   561,   423,   492,   537,   422,
1995      538,   539,   540,     0,     0,   455,   402,   403,   405,   404,
1996        0,   592,   448,   524,   376,   593,   594,     0,     0,     0,
1997        0,     0,   413,   414,   595,   354,   485,   512,   424,   775,
1998      776,   777,   778,   480,   419,   779,   596,   597,   598,   603,
1999      601,   602,   599,   600,   604,   605,   606,   607,   609,   610,
2000      608,   621,     0,   625,   626,     0,     0,   627,   611,   619,
2001      612,   613,   614,   618,   620,   615,   616,   617,   328,   329,
2002      330,   331,   332,   333,   639,   641,   640,   643,   644,   645,
2003      646,   642,   670,   672,   673,   674,   675,   676,   677,   678,
2004      679,   680,   671,   681,   682,   683,   684,   685,   686,   687,
2005      688,   689,   694,   699,   717,   718,   719,   722,   720,   721,
2006      723,   724,   725,   726,   751,   752,   755,   756,   757,   758,
2007      763,   764,   769,   759,   760,   761,   762,   770,   771,   765,
2008      766,   767,   768,   753,   754,   785,   786,   496,   532,   559,
2009      702,   703,   567,   568,   549,   550,     0,     0,     0,   554,
2010      772,   541,   542,   591,   497,   558,   555,     0,     0,   622,
2011      623,   624,   553,   551,   552,   556,   557
2012 };
2013 
2014 /* YYPGOTO[NTERM-NUM].  */
2015 static const yytype_int16 yypgoto[] =
2016 {
2017     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2018     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2019     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2020     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2021     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2022     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2023     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2024     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2025     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2026     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2027     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2028     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2029     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2030     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2031     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2032     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2033     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2034     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2035     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2036     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2037     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2038     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2039     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2040     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2041     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2042     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2043     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2044     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2045     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2046     -310,  -310,  -310,   261,   763,   764,   765,   766,  -310,  -310,
2047      767,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2048     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2049     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2050     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2051     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2052     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2053     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2054     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2055     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2056     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
2057     -310,  -310,  -310,  -310,  -310,  -310
2058 };
2059 
2060 /* YYDEFGOTO[NTERM-NUM].  */
2061 static const yytype_int16 yydefgoto[] =
2062 {
2063        0,     1,    17,    18,    19,    35,   307,    20,    21,    36,
2064      575,    22,    23,    37,   591,    24,    25,    38,   606,    26,
2065       39,   624,   641,   642,   643,   644,   645,   646,    27,    40,
2066      647,   308,   309,   310,   311,   312,   313,   314,   315,   316,
2067      317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
2068      327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
2069      337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
2070      347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
2071      357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
2072      367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
2073      377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
2074      387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
2075      397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
2076      407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
2077      417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
2078      427,   428,   429,   430,   431,   432,   433,   434,   435,   436,
2079      437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
2080      447,   448,   449,   450,   451,   452,   453,   454,   455,   456,
2081      457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
2082      467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
2083      477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
2084      487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
2085      497,   498,   499,   500,   501,   502,   503,   504,   505,   506,
2086      507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
2087      517,   518,   519,   520,   521,   522,   523,   524,   525,   526,
2088      527,   528,   529,   530,   531,   532,   533,   534,   535,   536,
2089      537,   538,   539,   540,   541,   542,   543,   544,   545,   546,
2090      547,   548,   549,   550,   551,   552,   553,   554,   576,   577,
2091      578,   579,   580,   581,   582,   583,   592,   593,   594,   595,
2092      596,   597,   598,   625,   626,   627,   628,   629,   630,   631,
2093      632,   633,   634,   607,   608,   609,   610,   611,   612,   613,
2094       28,    41,   662,   663,   664,   665,   666,   667,   668,   669,
2095      670,    29,    42,   691,   692,   693,   694,   695,   696,   697,
2096      698,   699,   700,   701,   702,   703,   704,   705,   706,   707,
2097      708,   709,   710,   711,    30,    43,   713,   714,    31,    44,
2098      716,   717,   555,   556,   557,   558,    32,    45,   728,   729,
2099      730,   731,   732,   733,   734,   735,   736,   737,   738,    33,
2100       46,   760,   761,   762,   763,   764,   765,   766,   767,   768,
2101      769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
2102      779,   780,   781,   559,   560,   561,   562,   563,   564,   565,
2103      566,    34,    47,   784,   785,   786
2104 };
2105 
2106 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2107    positive, shift that token.  If negative, reduce the rule whose
2108    number is the opposite.  If YYTABLE_NINF, syntax error.  */
2109 static const yytype_int16 yytable[] =
2110 {
2111       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
2112       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
2113       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
2114       78,    79,    80,    81,   782,   783,   712,   715,    82,    83,
2115       84,   787,   788,   789,    85,    86,    87,    88,    89,    90,
2116       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
2117      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
2118      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
2119      121,   122,   123,   124,   125,   654,   655,   656,   657,   658,
2120      659,   660,   661,   790,   126,   127,   128,   129,   130,   791,
2121      131,   132,   133,   792,   793,   134,   135,   136,   137,   138,
2122      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
2123      149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
2124      159,   794,   795,   796,   160,   614,   797,   161,   162,   163,
2125      164,   165,   166,   167,   798,   168,   169,   170,   171,   172,
2126      173,   174,   175,   176,   177,   178,   179,   180,   181,   614,
2127      799,   739,   740,   741,   742,   743,   744,   745,   746,   747,
2128      748,   749,   750,   751,   752,   753,   754,   755,   756,   757,
2129      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
2130      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
2131      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
2132      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
2133      222,   223,   224,   225,   226,   800,   227,   801,   228,   229,
2134      230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
2135      240,   241,   242,   243,   244,   245,   246,   758,   802,   759,
2136      803,   804,   805,   806,   807,   808,   809,   810,   247,   248,
2137      249,   250,   251,   252,   253,   254,   255,   256,   567,   811,
2138      568,   569,   812,   813,     2,   814,   815,   816,   817,   818,
2139      819,   820,   821,   584,     0,     3,     4,   822,   257,   823,
2140      824,   585,   586,   825,   826,   827,   258,   259,   828,   260,
2141      261,   648,   262,   263,   264,   265,   266,   829,   830,   267,
2142      268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
2143      278,   279,     5,   831,   832,   280,   833,   834,     6,   835,
2144      836,   837,   838,   570,   281,   282,   283,   284,   599,   839,
2145      840,   285,   286,   287,   288,   289,   290,   291,   292,   293,
2146      294,   295,   296,   297,   298,   841,   299,   842,   300,   301,
2147      302,   303,   304,   305,   306,   843,   571,   844,   845,   572,
2148      846,   847,     7,   848,   600,   601,   849,   850,   573,   851,
2149      587,   852,   588,   853,   854,   589,   855,   856,   857,   858,
2150        8,   859,   616,   617,   618,   619,   860,   861,   862,   863,
2151      864,   602,   621,   718,   719,   720,   721,   722,   723,   724,
2152      725,   726,   727,   865,   615,   866,   616,   617,   618,   619,
2153      620,   867,   868,   869,   870,   871,   621,   872,   635,   636,
2154      637,   638,   639,   873,   874,   875,   876,   877,   878,   879,
2155      880,   640,   881,   882,   883,   884,     9,   885,   886,   887,
2156      888,   889,   890,   891,   892,   893,   894,   895,   896,   897,
2157      898,   899,   900,   622,   623,   671,   672,   673,   674,   675,
2158      676,   677,   678,   679,   680,   681,   682,   683,   684,   685,
2159      686,   687,   688,   689,   690,   603,   604,   901,   902,   903,
2160      904,   905,   906,   907,   908,   909,   910,   911,   912,   913,
2161      914,   915,   916,   917,   918,   919,   920,   921,   922,   923,
2162      924,   925,    10,   926,   927,   928,   929,   930,   931,   932,
2163      933,   934,   935,   936,   937,   938,   939,   940,   941,   942,
2164      943,   605,   944,   945,    11,   946,   947,   948,   949,   950,
2165      951,   952,   574,   953,   954,   955,   956,   957,   958,   959,
2166      960,   961,   962,   963,   964,    12,   590,   965,   966,   967,
2167      968,   969,   970,   971,   972,   973,   974,   975,   976,   977,
2168      978,   979,   980,   981,   982,   983,   984,    13,   985,   986,
2169      987,   988,   989,   990,   991,   992,   993,   994,   995,   996,
2170      997,   998,   999,  1000,  1001,  1002,  1003,  1004,  1005,  1006,
2171     1007,  1008,  1009,  1010,  1011,  1012,  1013,  1014,  1015,    14,
2172     1016,  1017,  1018,    15,  1019,  1020,  1021,  1022,  1023,    16,
2173     1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1032,  1033,
2174     1034,  1035,  1036,  1037,  1038,  1039,  1040,  1041,  1042,  1043,
2175     1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1053,
2176     1054,  1055,  1056,  1057,  1058,  1059,  1060,  1061,  1062,  1063,
2177     1064,  1065,  1066,  1067,  1068,  1069,  1070,  1071,  1072,  1073,
2178     1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
2179     1084,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,  1093,
2180     1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,  1103,
2181     1104,  1105,  1106,  1107,  1108,  1109,  1110,  1111,  1112,  1113,
2182     1114,  1115,  1116,  1117,  1118,  1119,  1120,  1121,  1122,  1123,
2183     1124,  1125,  1126,  1127,  1128,  1129,  1130,  1131,  1132,  1133,
2184     1134,  1135,  1136,  1137,  1138,  1139,  1140,  1141,  1142,  1143,
2185     1144,  1145,  1146,  1147,  1148,  1149,  1150,  1151,  1152,  1153,
2186     1154,  1155,  1156,  1157,  1158,  1159,  1160,  1161,  1162,  1163,
2187     1164,  1165,  1166,  1167,  1168,  1169,  1170,  1171,  1172,  1173,
2188     1174,  1175,  1176,     0,     0,     0,     0,     0,     0,     0,
2189        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2190        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2191        0,     0,     0,   649,   650,   651,   652,   653
2192 };
2193 
2194 static const yytype_int16 yycheck[] =
2195 {
2196       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2197       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
2198       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
2199       43,    44,    45,    46,   336,   337,   117,   346,    51,    52,
2200       53,    10,    10,    10,    57,    58,    59,    60,    61,    62,
2201       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
2202       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
2203       83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
2204       93,    94,    95,    96,    97,    99,   100,   101,   102,   103,
2205      104,   105,   106,    10,   107,   108,   109,   110,   111,    10,
2206      113,   114,   115,    10,    10,   118,   119,   120,   121,   122,
2207      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
2208      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
2209      143,    10,    10,    10,   147,    47,    10,   150,   151,   152,
2210      153,   154,   155,   156,    10,   158,   159,   160,   161,   162,
2211      163,   164,   165,   166,   167,   168,   169,   170,   171,    47,
2212       10,   282,   283,   284,   285,   286,   287,   288,   289,   290,
2213      291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
2214      193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
2215      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
2216      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
2217      223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
2218      233,   234,   235,   236,   237,    10,   239,    10,   241,   242,
2219      243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2220      253,   254,   255,   256,   257,   258,   259,   368,    10,   370,
2221       10,    10,    10,    10,    10,    10,    10,    10,   271,   272,
2222      273,   274,   275,   276,   277,   278,   279,   280,    47,    10,
2223       49,    50,    10,    10,     0,    10,    10,    10,    10,    10,
2224       10,    10,    10,    47,    -1,    11,    12,    10,   301,    10,
2225       10,    55,    56,    10,    10,    10,   309,   310,    10,   312,
2226      313,    40,   315,   316,   317,   318,   319,    10,    10,   322,
2227      323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
2228      333,   334,    48,    10,    10,   338,    10,    10,    54,    10,
2229       10,    10,    10,   112,   347,   348,   349,   350,    47,    10,
2230       10,   354,   355,   356,   357,   358,   359,   360,   361,   362,
2231      363,   364,   365,   366,   367,    10,   369,    10,   371,   372,
2232      373,   374,   375,   376,   377,    10,   145,    10,    10,   148,
2233       10,    10,    98,    10,    83,    84,    10,    10,   157,    10,
2234      144,    10,   146,    10,    10,   149,    10,    10,    10,    10,
2235      116,    10,   304,   305,   306,   307,    10,    10,    10,    10,
2236       10,   110,   314,   261,   262,   263,   264,   265,   266,   267,
2237      268,   269,   270,    10,   302,    10,   304,   305,   306,   307,
2238      308,    10,    10,    10,    10,    10,   314,    10,   340,   341,
2239      342,   343,   344,    10,    10,    10,    10,    10,    10,    10,
2240       10,   353,    10,    10,    10,    10,   172,    10,    10,    10,
2241       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2242       10,    10,    10,   351,   352,   173,   174,   175,   176,   177,
2243      178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
2244      188,   189,   190,   191,   192,   194,   195,    10,    10,    10,
2245       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2246       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2247       10,    10,   238,    10,    10,    10,    10,    10,    10,    10,
2248       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2249       10,   240,    10,    10,   260,    10,    10,    10,    10,    10,
2250       10,    10,   321,    10,    10,    10,    10,    10,    10,    10,
2251       10,    10,    10,    10,    10,   281,   320,    10,    10,    10,
2252       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2253       10,    10,    10,    10,    10,    10,    10,   303,    10,    10,
2254       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2255       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2256       10,    10,    10,    10,    10,    10,    10,    10,    10,   335,
2257       10,    10,    10,   339,    10,    10,    10,    10,    10,   345,
2258       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2259       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2260       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2261       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2262       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2263       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2264       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2265       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2266       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2267       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2268       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2269       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2270       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2271       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2272       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2273       10,    10,    10,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2274       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2275       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2276       -1,    -1,    -1,    40,    40,    40,    40,    40
2277 };
2278 
2279 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2280    state STATE-NUM.  */
2281 static const yytype_int16 yystos[] =
2282 {
2283        0,   379,     0,    11,    12,    48,    54,    98,   116,   172,
2284      238,   260,   281,   303,   335,   339,   345,   380,   381,   382,
2285      385,   386,   389,   390,   393,   394,   397,   406,   688,   699,
2286      722,   726,   734,   747,   779,   383,   387,   391,   395,   398,
2287      407,   689,   700,   723,   727,   735,   748,   780,    13,    14,
2288       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2289       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
2290       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
2291       45,    46,    51,    52,    53,    57,    58,    59,    60,    61,
2292       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
2293       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
2294       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
2295       92,    93,    94,    95,    96,    97,   107,   108,   109,   110,
2296      111,   113,   114,   115,   118,   119,   120,   121,   122,   123,
2297      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
2298      134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
2299      147,   150,   151,   152,   153,   154,   155,   156,   158,   159,
2300      160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
2301      170,   171,   193,   194,   195,   196,   197,   198,   199,   200,
2302      201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
2303      211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
2304      221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
2305      231,   232,   233,   234,   235,   236,   237,   239,   241,   242,
2306      243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
2307      253,   254,   255,   256,   257,   258,   259,   271,   272,   273,
2308      274,   275,   276,   277,   278,   279,   280,   301,   309,   310,
2309      312,   313,   315,   316,   317,   318,   319,   322,   323,   324,
2310      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
2311      338,   347,   348,   349,   350,   354,   355,   356,   357,   358,
2312      359,   360,   361,   362,   363,   364,   365,   366,   367,   369,
2313      371,   372,   373,   374,   375,   376,   377,   384,   409,   410,
2314      411,   412,   413,   414,   415,   416,   417,   418,   419,   420,
2315      421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
2316      431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
2317      441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
2318      451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
2319      461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
2320      471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
2321      481,   482,   483,   484,   485,   486,   487,   488,   489,   490,
2322      491,   492,   493,   494,   495,   496,   497,   498,   499,   500,
2323      501,   502,   503,   504,   505,   506,   507,   508,   509,   510,
2324      511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
2325      521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
2326      531,   532,   533,   534,   535,   536,   537,   538,   539,   540,
2327      541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
2328      551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
2329      561,   562,   563,   564,   565,   566,   567,   568,   569,   570,
2330      571,   572,   573,   574,   575,   576,   577,   578,   579,   580,
2331      581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
2332      591,   592,   593,   594,   595,   596,   597,   598,   599,   600,
2333      601,   602,   603,   604,   605,   606,   607,   608,   609,   610,
2334      611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
2335      621,   622,   623,   624,   625,   626,   627,   628,   629,   630,
2336      631,   632,   633,   634,   635,   636,   637,   638,   639,   640,
2337      641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
2338      651,   652,   653,   654,   655,   730,   731,   732,   733,   771,
2339      772,   773,   774,   775,   776,   777,   778,    47,    49,    50,
2340      112,   145,   148,   157,   321,   388,   656,   657,   658,   659,
2341      660,   661,   662,   663,    47,    55,    56,   144,   146,   149,
2342      320,   392,   664,   665,   666,   667,   668,   669,   670,    47,
2343       83,    84,   110,   194,   195,   240,   396,   681,   682,   683,
2344      684,   685,   686,   687,    47,   302,   304,   305,   306,   307,
2345      308,   314,   351,   352,   399,   671,   672,   673,   674,   675,
2346      676,   677,   678,   679,   680,   340,   341,   342,   343,   344,
2347      353,   400,   401,   402,   403,   404,   405,   408,   671,   672,
2348      673,   674,   675,   678,    99,   100,   101,   102,   103,   104,
2349      105,   106,   690,   691,   692,   693,   694,   695,   696,   697,
2350      698,   173,   174,   175,   176,   177,   178,   179,   180,   181,
2351      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
2352      192,   701,   702,   703,   704,   705,   706,   707,   708,   709,
2353      710,   711,   712,   713,   714,   715,   716,   717,   718,   719,
2354      720,   721,   117,   724,   725,   346,   728,   729,   261,   262,
2355      263,   264,   265,   266,   267,   268,   269,   270,   736,   737,
2356      738,   739,   740,   741,   742,   743,   744,   745,   746,   282,
2357      283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
2358      293,   294,   295,   296,   297,   298,   299,   300,   368,   370,
2359      749,   750,   751,   752,   753,   754,   755,   756,   757,   758,
2360      759,   760,   761,   762,   763,   764,   765,   766,   767,   768,
2361      769,   770,   336,   337,   781,   782,   783,    10,    10,    10,
2362       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2363       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2364       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2365       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2366       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2367       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2368       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2369       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2370       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2371       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2372       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2373       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2374       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2375       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2376       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2377       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2378       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2379       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2380       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2381       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2382       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2383       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2384       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2385       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2386       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2387       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2388       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2389       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2390       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2391       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2392       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2393       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2394       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2395       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2396       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2397       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2398       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2399       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
2400       10,    10,    10,    10,    10,    10,    10
2401 };
2402 
2403 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
2404 static const yytype_int16 yyr1[] =
2405 {
2406        0,   378,   379,   379,   380,   380,   380,   380,   380,   380,
2407      380,   380,   380,   380,   380,   380,   380,   380,   381,   382,
2408      383,   383,   384,   384,   384,   384,   384,   384,   384,   384,
2409      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2410      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2411      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2412      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2413      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2414      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2415      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2416      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2417      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2418      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2419      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2420      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2421      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2422      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2423      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2424      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2425      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2426      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2427      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2428      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2429      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2430      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2431      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2432      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2433      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
2434      384,   385,   386,   387,   387,   388,   388,   388,   388,   388,
2435      388,   388,   388,   389,   390,   391,   391,   392,   392,   392,
2436      392,   392,   392,   392,   393,   394,   395,   395,   396,   396,
2437      396,   396,   396,   396,   396,   397,   398,   398,   399,   399,
2438      399,   399,   399,   399,   399,   399,   399,   399,   400,   401,
2439      402,   403,   404,   405,   406,   407,   407,   408,   408,   408,
2440      408,   408,   408,   408,   408,   408,   408,   408,   408,   409,
2441      410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
2442      420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
2443      430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
2444      440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
2445      450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
2446      460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
2447      470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
2448      480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
2449      490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
2450      500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
2451      510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
2452      520,   521,   522,   523,   524,   525,   526,   527,   528,   529,
2453      530,   531,   532,   533,   534,   535,   536,   537,   538,   539,
2454      540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
2455      550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
2456      560,   561,   562,   563,   564,   565,   566,   567,   568,   569,
2457      570,   571,   572,   573,   574,   575,   576,   577,   578,   579,
2458      580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
2459      590,   591,   592,   593,   594,   595,   596,   597,   598,   599,
2460      600,   601,   602,   603,   604,   605,   606,   607,   608,   609,
2461      610,   611,   612,   613,   614,   615,   616,   617,   618,   619,
2462      620,   621,   622,   623,   624,   625,   626,   627,   628,   629,
2463      630,   631,   632,   633,   634,   635,   636,   637,   638,   639,
2464      640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
2465      650,   651,   652,   653,   654,   655,   656,   657,   658,   659,
2466      660,   661,   662,   663,   664,   665,   666,   667,   668,   669,
2467      670,   671,   672,   673,   674,   675,   676,   677,   678,   679,
2468      680,   681,   682,   683,   684,   685,   686,   687,   688,   689,
2469      689,   690,   690,   690,   690,   690,   690,   690,   690,   691,
2470      692,   693,   694,   695,   696,   697,   698,   699,   700,   700,
2471      701,   701,   701,   701,   701,   701,   701,   701,   701,   701,
2472      701,   701,   701,   701,   701,   701,   701,   701,   701,   701,
2473      702,   703,   704,   705,   706,   707,   708,   709,   710,   711,
2474      712,   713,   714,   715,   716,   717,   718,   719,   720,   721,
2475      722,   723,   723,   724,   725,   726,   727,   727,   728,   729,
2476      730,   731,   732,   733,   734,   735,   735,   736,   736,   736,
2477      736,   736,   736,   736,   736,   736,   736,   737,   738,   739,
2478      740,   741,   742,   743,   744,   745,   746,   747,   748,   748,
2479      749,   749,   749,   749,   749,   749,   749,   749,   749,   749,
2480      749,   749,   749,   749,   749,   749,   749,   749,   749,   749,
2481      749,   750,   751,   752,   753,   754,   755,   756,   757,   758,
2482      759,   760,   761,   762,   763,   764,   765,   766,   767,   768,
2483      769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
2484      779,   780,   780,   781,   781,   782,   783
2485 };
2486 
2487 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
2488 static const yytype_int8 yyr2[] =
2489 {
2490        0,     2,     0,     2,     2,     1,     1,     2,     2,     2,
2491        1,     2,     2,     2,     2,     2,     2,     1,     1,     1,
2492        2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
2493        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2494        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2495        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2496        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2497        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2498        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2499        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2500        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2501        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2502        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2503        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2504        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2505        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2506        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2507        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2508        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2509        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2510        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2511        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2512        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2513        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2514        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2515        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2516        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2517        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2518        1,     2,     1,     2,     0,     1,     1,     1,     1,     1,
2519        1,     1,     1,     2,     1,     2,     0,     1,     1,     1,
2520        1,     1,     1,     1,     2,     1,     2,     0,     1,     1,
2521        1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
2522        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
2523        2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
2524        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
2525        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2526        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2527        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2528        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2529        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2530        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2531        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2532        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2533        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2534        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2535        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2536        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2537        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2538        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2539        2,     2,     2,     2,     2,     2,     3,     3,     2,     2,
2540        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2541        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2542        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2543        2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
2544        2,     3,     3,     2,     2,     2,     2,     2,     2,     3,
2545        3,     4,     4,     4,     3,     3,     4,     4,     3,     3,
2546        2,     2,     2,     2,     2,     2,     2,     3,     3,     2,
2547        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2548        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2549        2,     3,     2,     2,     2,     2,     2,     2,     2,     2,
2550        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2551        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2552        2,     2,     3,     3,     3,     2,     2,     2,     1,     2,
2553        0,     1,     1,     1,     1,     1,     1,     1,     1,     2,
2554        2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
2555        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2556        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2557        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2558        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2559        1,     2,     0,     1,     2,     1,     2,     0,     1,     2,
2560        2,     2,     3,     3,     1,     2,     0,     1,     1,     1,
2561        1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
2562        2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
2563        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2564        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2565        1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2566        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2567        2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
2568        1,     2,     0,     1,     1,     2,     2
2569 };
2570 
2571 
2572 enum { YYENOMEM = -2 };
2573 
2574 #define yyerrok         (yyerrstatus = 0)
2575 #define yyclearin       (yychar = YYEMPTY)
2576 
2577 #define YYACCEPT        goto yyacceptlab
2578 #define YYABORT         goto yyabortlab
2579 #define YYERROR         goto yyerrorlab
2580 #define YYNOMEM         goto yyexhaustedlab
2581 
2582 
2583 #define YYRECOVERING()  (!!yyerrstatus)
2584 
2585 #define YYBACKUP(Token, Value)                                    \
2586   do                                                              \
2587     if (yychar == YYEMPTY)                                        \
2588       {                                                           \
2589         yychar = (Token);                                         \
2590         yylval = (Value);                                         \
2591         YYPOPSTACK (yylen);                                       \
2592         yystate = *yyssp;                                         \
2593         goto yybackup;                                            \
2594       }                                                           \
2595     else                                                          \
2596       {                                                           \
2597         yyerror (YY_("syntax error: cannot back up")); \
2598         YYERROR;                                                  \
2599       }                                                           \
2600   while (0)
2601 
2602 /* Backward compatibility with an undocumented macro.
2603    Use YYerror or YYUNDEF. */
2604 #define YYERRCODE YYUNDEF
2605 
2606 
2607 /* Enable debugging if requested.  */
2608 #if YYDEBUG
2609 
2610 # ifndef YYFPRINTF
2611 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2612 #  define YYFPRINTF fprintf
2613 # endif
2614 
2615 # define YYDPRINTF(Args)                        \
2616 do {                                            \
2617   if (yydebug)                                  \
2618     YYFPRINTF Args;                             \
2619 } while (0)
2620 
2621 
2622 
2623 
2624 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
2625 do {                                                                      \
2626   if (yydebug)                                                            \
2627     {                                                                     \
2628       YYFPRINTF (stderr, "%s ", Title);                                   \
2629       yy_symbol_print (stderr,                                            \
2630                   Kind, Value); \
2631       YYFPRINTF (stderr, "\n");                                           \
2632     }                                                                     \
2633 } while (0)
2634 
2635 
2636 /*-----------------------------------.
2637 | Print this symbol's value on YYO.  |
2638 `-----------------------------------*/
2639 
2640 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)2641 yy_symbol_value_print (FILE *yyo,
2642                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2643 {
2644   FILE *yyoutput = yyo;
2645   YY_USE (yyoutput);
2646   if (!yyvaluep)
2647     return;
2648   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2649   YY_USE (yykind);
2650   YY_IGNORE_MAYBE_UNINITIALIZED_END
2651 }
2652 
2653 
2654 /*---------------------------.
2655 | Print this symbol on YYO.  |
2656 `---------------------------*/
2657 
2658 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)2659 yy_symbol_print (FILE *yyo,
2660                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
2661 {
2662   YYFPRINTF (yyo, "%s %s (",
2663              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2664 
2665   yy_symbol_value_print (yyo, yykind, yyvaluep);
2666   YYFPRINTF (yyo, ")");
2667 }
2668 
2669 /*------------------------------------------------------------------.
2670 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2671 | TOP (included).                                                   |
2672 `------------------------------------------------------------------*/
2673 
2674 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2675 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2676 {
2677   YYFPRINTF (stderr, "Stack now");
2678   for (; yybottom <= yytop; yybottom++)
2679     {
2680       int yybot = *yybottom;
2681       YYFPRINTF (stderr, " %d", yybot);
2682     }
2683   YYFPRINTF (stderr, "\n");
2684 }
2685 
2686 # define YY_STACK_PRINT(Bottom, Top)                            \
2687 do {                                                            \
2688   if (yydebug)                                                  \
2689     yy_stack_print ((Bottom), (Top));                           \
2690 } while (0)
2691 
2692 
2693 /*------------------------------------------------.
2694 | Report that the YYRULE is going to be reduced.  |
2695 `------------------------------------------------*/
2696 
2697 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)2698 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
2699                  int yyrule)
2700 {
2701   int yylno = yyrline[yyrule];
2702   int yynrhs = yyr2[yyrule];
2703   int yyi;
2704   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2705              yyrule - 1, yylno);
2706   /* The symbols being reduced.  */
2707   for (yyi = 0; yyi < yynrhs; yyi++)
2708     {
2709       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2710       yy_symbol_print (stderr,
2711                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2712                        &yyvsp[(yyi + 1) - (yynrhs)]);
2713       YYFPRINTF (stderr, "\n");
2714     }
2715 }
2716 
2717 # define YY_REDUCE_PRINT(Rule)          \
2718 do {                                    \
2719   if (yydebug)                          \
2720     yy_reduce_print (yyssp, yyvsp, Rule); \
2721 } while (0)
2722 
2723 /* Nonzero means print parse trace.  It is left uninitialized so that
2724    multiple parsers can coexist.  */
2725 int yydebug;
2726 #else /* !YYDEBUG */
2727 # define YYDPRINTF(Args) ((void) 0)
2728 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2729 # define YY_STACK_PRINT(Bottom, Top)
2730 # define YY_REDUCE_PRINT(Rule)
2731 #endif /* !YYDEBUG */
2732 
2733 
2734 /* YYINITDEPTH -- initial size of the parser's stacks.  */
2735 #ifndef YYINITDEPTH
2736 # define YYINITDEPTH 200
2737 #endif
2738 
2739 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2740    if the built-in stack extension method is used).
2741 
2742    Do not make this value too large; the results are undefined if
2743    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2744    evaluated with infinite-precision integer arithmetic.  */
2745 
2746 #ifndef YYMAXDEPTH
2747 # define YYMAXDEPTH 10000
2748 #endif
2749 
2750 
2751 
2752 
2753 
2754 
2755 /*-----------------------------------------------.
2756 | Release the memory associated to this symbol.  |
2757 `-----------------------------------------------*/
2758 
2759 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)2760 yydestruct (const char *yymsg,
2761             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
2762 {
2763   YY_USE (yyvaluep);
2764   if (!yymsg)
2765     yymsg = "Deleting";
2766   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2767 
2768   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2769   YY_USE (yykind);
2770   YY_IGNORE_MAYBE_UNINITIALIZED_END
2771 }
2772 
2773 
2774 /* Lookahead token kind.  */
2775 int yychar;
2776 
2777 /* The semantic value of the lookahead symbol.  */
2778 YYSTYPE yylval;
2779 /* Number of syntax errors so far.  */
2780 int yynerrs;
2781 
2782 
2783 
2784 
2785 /*----------.
2786 | yyparse.  |
2787 `----------*/
2788 
2789 int
yyparse(void)2790 yyparse (void)
2791 {
2792     yy_state_fast_t yystate = 0;
2793     /* Number of tokens to shift before error messages enabled.  */
2794     int yyerrstatus = 0;
2795 
2796     /* Refer to the stacks through separate pointers, to allow yyoverflow
2797        to reallocate them elsewhere.  */
2798 
2799     /* Their size.  */
2800     YYPTRDIFF_T yystacksize = YYINITDEPTH;
2801 
2802     /* The state stack: array, bottom, top.  */
2803     yy_state_t yyssa[YYINITDEPTH];
2804     yy_state_t *yyss = yyssa;
2805     yy_state_t *yyssp = yyss;
2806 
2807     /* The semantic value stack: array, bottom, top.  */
2808     YYSTYPE yyvsa[YYINITDEPTH];
2809     YYSTYPE *yyvs = yyvsa;
2810     YYSTYPE *yyvsp = yyvs;
2811 
2812   int yyn;
2813   /* The return value of yyparse.  */
2814   int yyresult;
2815   /* Lookahead symbol kind.  */
2816   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2817   /* The variables used to return semantic value and location from the
2818      action routines.  */
2819   YYSTYPE yyval;
2820 
2821 
2822 
2823 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2824 
2825   /* The number of symbols on the RHS of the reduced rule.
2826      Keep to zero when no symbol should be popped.  */
2827   int yylen = 0;
2828 
2829   YYDPRINTF ((stderr, "Starting parse\n"));
2830 
2831   yychar = YYEMPTY; /* Cause a token to be read.  */
2832 
2833   goto yysetstate;
2834 
2835 
2836 /*------------------------------------------------------------.
2837 | yynewstate -- push a new state, which is found in yystate.  |
2838 `------------------------------------------------------------*/
2839 yynewstate:
2840   /* In all cases, when you get here, the value and location stacks
2841      have just been pushed.  So pushing a state here evens the stacks.  */
2842   yyssp++;
2843 
2844 
2845 /*--------------------------------------------------------------------.
2846 | yysetstate -- set current state (the top of the stack) to yystate.  |
2847 `--------------------------------------------------------------------*/
2848 yysetstate:
2849   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2850   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2851   YY_IGNORE_USELESS_CAST_BEGIN
2852   *yyssp = YY_CAST (yy_state_t, yystate);
2853   YY_IGNORE_USELESS_CAST_END
2854   YY_STACK_PRINT (yyss, yyssp);
2855 
2856   if (yyss + yystacksize - 1 <= yyssp)
2857 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2858     YYNOMEM;
2859 #else
2860     {
2861       /* Get the current used size of the three stacks, in elements.  */
2862       YYPTRDIFF_T yysize = yyssp - yyss + 1;
2863 
2864 # if defined yyoverflow
2865       {
2866         /* Give user a chance to reallocate the stack.  Use copies of
2867            these so that the &'s don't force the real ones into
2868            memory.  */
2869         yy_state_t *yyss1 = yyss;
2870         YYSTYPE *yyvs1 = yyvs;
2871 
2872         /* Each stack pointer address is followed by the size of the
2873            data in use in that stack, in bytes.  This used to be a
2874            conditional around just the two extra args, but that might
2875            be undefined if yyoverflow is a macro.  */
2876         yyoverflow (YY_("memory exhausted"),
2877                     &yyss1, yysize * YYSIZEOF (*yyssp),
2878                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
2879                     &yystacksize);
2880         yyss = yyss1;
2881         yyvs = yyvs1;
2882       }
2883 # else /* defined YYSTACK_RELOCATE */
2884       /* Extend the stack our own way.  */
2885       if (YYMAXDEPTH <= yystacksize)
2886         YYNOMEM;
2887       yystacksize *= 2;
2888       if (YYMAXDEPTH < yystacksize)
2889         yystacksize = YYMAXDEPTH;
2890 
2891       {
2892         yy_state_t *yyss1 = yyss;
2893         union yyalloc *yyptr =
2894           YY_CAST (union yyalloc *,
2895                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2896         if (! yyptr)
2897           YYNOMEM;
2898         YYSTACK_RELOCATE (yyss_alloc, yyss);
2899         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2900 #  undef YYSTACK_RELOCATE
2901         if (yyss1 != yyssa)
2902           YYSTACK_FREE (yyss1);
2903       }
2904 # endif
2905 
2906       yyssp = yyss + yysize - 1;
2907       yyvsp = yyvs + yysize - 1;
2908 
2909       YY_IGNORE_USELESS_CAST_BEGIN
2910       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2911                   YY_CAST (long, yystacksize)));
2912       YY_IGNORE_USELESS_CAST_END
2913 
2914       if (yyss + yystacksize - 1 <= yyssp)
2915         YYABORT;
2916     }
2917 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2918 
2919 
2920   if (yystate == YYFINAL)
2921     YYACCEPT;
2922 
2923   goto yybackup;
2924 
2925 
2926 /*-----------.
2927 | yybackup.  |
2928 `-----------*/
2929 yybackup:
2930   /* Do appropriate processing given the current state.  Read a
2931      lookahead token if we need one and don't already have one.  */
2932 
2933   /* First try to decide what to do without reference to lookahead token.  */
2934   yyn = yypact[yystate];
2935   if (yypact_value_is_default (yyn))
2936     goto yydefault;
2937 
2938   /* Not known => get a lookahead token if don't already have one.  */
2939 
2940   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
2941   if (yychar == YYEMPTY)
2942     {
2943       YYDPRINTF ((stderr, "Reading a token\n"));
2944       yychar = yylex ();
2945     }
2946 
2947   if (yychar <= YYEOF)
2948     {
2949       yychar = YYEOF;
2950       yytoken = YYSYMBOL_YYEOF;
2951       YYDPRINTF ((stderr, "Now at end of input.\n"));
2952     }
2953   else if (yychar == YYerror)
2954     {
2955       /* The scanner already issued an error message, process directly
2956          to error recovery.  But do not keep the error token as
2957          lookahead, it is too special and may lead us to an endless
2958          loop in error recovery. */
2959       yychar = YYUNDEF;
2960       yytoken = YYSYMBOL_YYerror;
2961       goto yyerrlab1;
2962     }
2963   else
2964     {
2965       yytoken = YYTRANSLATE (yychar);
2966       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2967     }
2968 
2969   /* If the proper action on seeing token YYTOKEN is to reduce or to
2970      detect an error, take that action.  */
2971   yyn += yytoken;
2972   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2973     goto yydefault;
2974   yyn = yytable[yyn];
2975   if (yyn <= 0)
2976     {
2977       if (yytable_value_is_error (yyn))
2978         goto yyerrlab;
2979       yyn = -yyn;
2980       goto yyreduce;
2981     }
2982 
2983   /* Count tokens shifted since error; after three, turn off error
2984      status.  */
2985   if (yyerrstatus)
2986     yyerrstatus--;
2987 
2988   /* Shift the lookahead token.  */
2989   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2990   yystate = yyn;
2991   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2992   *++yyvsp = yylval;
2993   YY_IGNORE_MAYBE_UNINITIALIZED_END
2994 
2995   /* Discard the shifted token.  */
2996   yychar = YYEMPTY;
2997   goto yynewstate;
2998 
2999 
3000 /*-----------------------------------------------------------.
3001 | yydefault -- do the default action for the current state.  |
3002 `-----------------------------------------------------------*/
3003 yydefault:
3004   yyn = yydefact[yystate];
3005   if (yyn == 0)
3006     goto yyerrlab;
3007   goto yyreduce;
3008 
3009 
3010 /*-----------------------------.
3011 | yyreduce -- do a reduction.  |
3012 `-----------------------------*/
3013 yyreduce:
3014   /* yyn is the number of a rule to reduce with.  */
3015   yylen = yyr2[yyn];
3016 
3017   /* If YYLEN is nonzero, implement the default value of the action:
3018      '$$ = $1'.
3019 
3020      Otherwise, the following line sets YYVAL to garbage.
3021      This behavior is undocumented and Bison
3022      users should not rely upon it.  Assigning to YYVAL
3023      unconditionally makes the parser a bit smaller, and it avoids a
3024      GCC warning that YYVAL may be used uninitialized.  */
3025   yyval = yyvsp[1-yylen];
3026 
3027 
3028   YY_REDUCE_PRINT (yyn);
3029   switch (yyn)
3030     {
3031   case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL  */
3032 #line 231 "util/configparser.y"
3033         {
3034 		OUTYY(("\nP(force-toplevel)\n"));
3035 		cfg_parser->started_toplevel = 0;
3036 	}
3037 #line 3038 "util/configparser.c"
3038     break;
3039 
3040   case 19: /* serverstart: VAR_SERVER  */
3041 #line 238 "util/configparser.y"
3042         {
3043 		OUTYY(("\nP(server:)\n"));
3044 		cfg_parser->started_toplevel = 1;
3045 	}
3046 #line 3047 "util/configparser.c"
3047     break;
3048 
3049   case 281: /* stub_clause: stubstart contents_stub  */
3050 #line 363 "util/configparser.y"
3051         {
3052 		/* stub end */
3053 		if(cfg_parser->cfg->stubs &&
3054 			!cfg_parser->cfg->stubs->name)
3055 			yyerror("stub-zone without name");
3056 	}
3057 #line 3058 "util/configparser.c"
3058     break;
3059 
3060   case 282: /* stubstart: VAR_STUB_ZONE  */
3061 #line 371 "util/configparser.y"
3062         {
3063 		struct config_stub* s;
3064 		OUTYY(("\nP(stub_zone:)\n"));
3065 		cfg_parser->started_toplevel = 1;
3066 		s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3067 		if(s) {
3068 			s->next = cfg_parser->cfg->stubs;
3069 			cfg_parser->cfg->stubs = s;
3070 		} else {
3071 			yyerror("out of memory");
3072 		}
3073 	}
3074 #line 3075 "util/configparser.c"
3075     break;
3076 
3077   case 293: /* forward_clause: forwardstart contents_forward  */
3078 #line 390 "util/configparser.y"
3079         {
3080 		/* forward end */
3081 		if(cfg_parser->cfg->forwards &&
3082 			!cfg_parser->cfg->forwards->name)
3083 			yyerror("forward-zone without name");
3084 	}
3085 #line 3086 "util/configparser.c"
3086     break;
3087 
3088   case 294: /* forwardstart: VAR_FORWARD_ZONE  */
3089 #line 398 "util/configparser.y"
3090         {
3091 		struct config_stub* s;
3092 		OUTYY(("\nP(forward_zone:)\n"));
3093 		cfg_parser->started_toplevel = 1;
3094 		s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
3095 		if(s) {
3096 			s->next = cfg_parser->cfg->forwards;
3097 			cfg_parser->cfg->forwards = s;
3098 		} else {
3099 			yyerror("out of memory");
3100 		}
3101 	}
3102 #line 3103 "util/configparser.c"
3103     break;
3104 
3105   case 304: /* view_clause: viewstart contents_view  */
3106 #line 417 "util/configparser.y"
3107         {
3108 		/* view end */
3109 		if(cfg_parser->cfg->views &&
3110 			!cfg_parser->cfg->views->name)
3111 			yyerror("view without name");
3112 	}
3113 #line 3114 "util/configparser.c"
3114     break;
3115 
3116   case 305: /* viewstart: VAR_VIEW  */
3117 #line 425 "util/configparser.y"
3118         {
3119 		struct config_view* s;
3120 		OUTYY(("\nP(view:)\n"));
3121 		cfg_parser->started_toplevel = 1;
3122 		s = (struct config_view*)calloc(1, sizeof(struct config_view));
3123 		if(s) {
3124 			s->next = cfg_parser->cfg->views;
3125 			cfg_parser->cfg->views = s;
3126 		} else {
3127 			yyerror("out of memory");
3128 		}
3129 	}
3130 #line 3131 "util/configparser.c"
3131     break;
3132 
3133   case 315: /* authstart: VAR_AUTH_ZONE  */
3134 #line 444 "util/configparser.y"
3135         {
3136 		struct config_auth* s;
3137 		OUTYY(("\nP(auth_zone:)\n"));
3138 		cfg_parser->started_toplevel = 1;
3139 		s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3140 		if(s) {
3141 			s->next = cfg_parser->cfg->auths;
3142 			cfg_parser->cfg->auths = s;
3143 			/* defaults for auth zone */
3144 			s->for_downstream = 1;
3145 			s->for_upstream = 1;
3146 			s->fallback_enabled = 0;
3147 			s->zonemd_check = 0;
3148 			s->zonemd_reject_absence = 0;
3149 			s->isrpz = 0;
3150 		} else {
3151 			yyerror("out of memory");
3152 		}
3153 	}
3154 #line 3155 "util/configparser.c"
3155     break;
3156 
3157   case 328: /* rpz_tag: VAR_TAGS STRING_ARG  */
3158 #line 472 "util/configparser.y"
3159         {
3160 		uint8_t* bitlist;
3161 		size_t len = 0;
3162 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
3163 		bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
3164 			&len);
3165 		free((yyvsp[0].str));
3166 		if(!bitlist) {
3167 			yyerror("could not parse tags, (define-tag them first)");
3168 		}
3169 		if(bitlist) {
3170 			cfg_parser->cfg->auths->rpz_taglist = bitlist;
3171 			cfg_parser->cfg->auths->rpz_taglistlen = len;
3172 
3173 		}
3174 	}
3175 #line 3176 "util/configparser.c"
3176     break;
3177 
3178   case 329: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG  */
3179 #line 491 "util/configparser.y"
3180         {
3181 		OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
3182 		if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
3183 		   strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
3184 		   strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
3185 			yyerror("rpz-action-override action: expected nxdomain, "
3186 				"nodata, passthru, drop, cname or disabled");
3187 			free((yyvsp[0].str));
3188 			cfg_parser->cfg->auths->rpz_action_override = NULL;
3189 		}
3190 		else {
3191 			cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
3192 		}
3193 	}
3194 #line 3195 "util/configparser.c"
3195     break;
3196 
3197   case 330: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG  */
3198 #line 508 "util/configparser.y"
3199         {
3200 		OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
3201 		free(cfg_parser->cfg->auths->rpz_cname);
3202 		cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
3203 	}
3204 #line 3205 "util/configparser.c"
3205     break;
3206 
3207   case 331: /* rpz_log: VAR_RPZ_LOG STRING_ARG  */
3208 #line 516 "util/configparser.y"
3209         {
3210 		OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
3211 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3212 			yyerror("expected yes or no.");
3213 		else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
3214 		free((yyvsp[0].str));
3215 	}
3216 #line 3217 "util/configparser.c"
3217     break;
3218 
3219   case 332: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG  */
3220 #line 526 "util/configparser.y"
3221         {
3222 		OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
3223 		free(cfg_parser->cfg->auths->rpz_log_name);
3224 		cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
3225 	}
3226 #line 3227 "util/configparser.c"
3227     break;
3228 
3229   case 333: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG  */
3230 #line 533 "util/configparser.y"
3231         {
3232 		OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
3233 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3234 			yyerror("expected yes or no.");
3235 		else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
3236 		free((yyvsp[0].str));
3237 	}
3238 #line 3239 "util/configparser.c"
3239     break;
3240 
3241   case 334: /* rpzstart: VAR_RPZ  */
3242 #line 543 "util/configparser.y"
3243         {
3244 		struct config_auth* s;
3245 		OUTYY(("\nP(rpz:)\n"));
3246 		cfg_parser->started_toplevel = 1;
3247 		s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
3248 		if(s) {
3249 			s->next = cfg_parser->cfg->auths;
3250 			cfg_parser->cfg->auths = s;
3251 			/* defaults for RPZ auth zone */
3252 			s->for_downstream = 0;
3253 			s->for_upstream = 0;
3254 			s->fallback_enabled = 0;
3255 			s->isrpz = 1;
3256 		} else {
3257 			yyerror("out of memory");
3258 		}
3259 	}
3260 #line 3261 "util/configparser.c"
3261     break;
3262 
3263   case 349: /* server_num_threads: VAR_NUM_THREADS STRING_ARG  */
3264 #line 568 "util/configparser.y"
3265         {
3266 		OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
3267 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3268 			yyerror("number expected");
3269 		else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
3270 		free((yyvsp[0].str));
3271 	}
3272 #line 3273 "util/configparser.c"
3273     break;
3274 
3275   case 350: /* server_verbosity: VAR_VERBOSITY STRING_ARG  */
3276 #line 577 "util/configparser.y"
3277         {
3278 		OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
3279 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3280 			yyerror("number expected");
3281 		else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
3282 		free((yyvsp[0].str));
3283 	}
3284 #line 3285 "util/configparser.c"
3285     break;
3286 
3287   case 351: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG  */
3288 #line 586 "util/configparser.y"
3289         {
3290 		OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
3291 		if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3292 			cfg_parser->cfg->stat_interval = 0;
3293 		else if(atoi((yyvsp[0].str)) == 0)
3294 			yyerror("number expected");
3295 		else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
3296 		free((yyvsp[0].str));
3297 	}
3298 #line 3299 "util/configparser.c"
3299     break;
3300 
3301   case 352: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG  */
3302 #line 597 "util/configparser.y"
3303         {
3304 		OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
3305 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3306 			yyerror("expected yes or no.");
3307 		else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
3308 		free((yyvsp[0].str));
3309 	}
3310 #line 3311 "util/configparser.c"
3311     break;
3312 
3313   case 353: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG  */
3314 #line 606 "util/configparser.y"
3315         {
3316 		OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
3317 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3318 			yyerror("expected yes or no.");
3319 		else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
3320 		free((yyvsp[0].str));
3321 	}
3322 #line 3323 "util/configparser.c"
3323     break;
3324 
3325   case 354: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG  */
3326 #line 615 "util/configparser.y"
3327         {
3328 		OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str)));
3329 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3330 			yyerror("expected yes or no.");
3331 		else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0);
3332 		free((yyvsp[0].str));
3333 	}
3334 #line 3335 "util/configparser.c"
3335     break;
3336 
3337   case 355: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG  */
3338 #line 624 "util/configparser.y"
3339         {
3340 		OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
3341 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3342 			yyerror("expected yes or no.");
3343 		else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
3344 		free((yyvsp[0].str));
3345 	}
3346 #line 3347 "util/configparser.c"
3347     break;
3348 
3349   case 356: /* server_shm_key: VAR_SHM_KEY STRING_ARG  */
3350 #line 633 "util/configparser.y"
3351         {
3352 		OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
3353 		if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
3354 			cfg_parser->cfg->shm_key = 0;
3355 		else if(atoi((yyvsp[0].str)) == 0)
3356 			yyerror("number expected");
3357 		else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
3358 		free((yyvsp[0].str));
3359 	}
3360 #line 3361 "util/configparser.c"
3361     break;
3362 
3363   case 357: /* server_port: VAR_PORT STRING_ARG  */
3364 #line 644 "util/configparser.y"
3365         {
3366 		OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
3367 		if(atoi((yyvsp[0].str)) == 0)
3368 			yyerror("port number expected");
3369 		else cfg_parser->cfg->port = atoi((yyvsp[0].str));
3370 		free((yyvsp[0].str));
3371 	}
3372 #line 3373 "util/configparser.c"
3373     break;
3374 
3375   case 358: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG  */
3376 #line 653 "util/configparser.y"
3377         {
3378 	#ifdef CLIENT_SUBNET
3379 		OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
3380 		if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
3381 			fatal_exit("out of memory adding client-subnet");
3382 	#else
3383 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3384 		free((yyvsp[0].str));
3385 	#endif
3386 	}
3387 #line 3388 "util/configparser.c"
3388     break;
3389 
3390   case 359: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG  */
3391 #line 665 "util/configparser.y"
3392         {
3393 	#ifdef CLIENT_SUBNET
3394 		OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
3395 		if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
3396 			(yyvsp[0].str)))
3397 			fatal_exit("out of memory adding client-subnet-zone");
3398 	#else
3399 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3400 		free((yyvsp[0].str));
3401 	#endif
3402 	}
3403 #line 3404 "util/configparser.c"
3404     break;
3405 
3406   case 360: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG  */
3407 #line 679 "util/configparser.y"
3408         {
3409 	#ifdef CLIENT_SUBNET
3410 		OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
3411 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3412 			yyerror("expected yes or no.");
3413 		else
3414 			cfg_parser->cfg->client_subnet_always_forward =
3415 				(strcmp((yyvsp[0].str), "yes")==0);
3416 	#else
3417 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3418 	#endif
3419 		free((yyvsp[0].str));
3420 	}
3421 #line 3422 "util/configparser.c"
3422     break;
3423 
3424   case 361: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG  */
3425 #line 694 "util/configparser.y"
3426         {
3427 	#ifdef CLIENT_SUBNET
3428 		OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
3429 		OUTYY(("P(Deprecated option, ignoring)\n"));
3430 	#else
3431 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3432 	#endif
3433 		free((yyvsp[0].str));
3434 	}
3435 #line 3436 "util/configparser.c"
3436     break;
3437 
3438   case 362: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG  */
3439 #line 705 "util/configparser.y"
3440         {
3441 	#ifdef CLIENT_SUBNET
3442 		OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3443 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3444 			yyerror("IPv4 subnet length expected");
3445 		else if (atoi((yyvsp[0].str)) > 32)
3446 			cfg_parser->cfg->max_client_subnet_ipv4 = 32;
3447 		else if (atoi((yyvsp[0].str)) < 0)
3448 			cfg_parser->cfg->max_client_subnet_ipv4 = 0;
3449 		else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3450 	#else
3451 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3452 	#endif
3453 		free((yyvsp[0].str));
3454 	}
3455 #line 3456 "util/configparser.c"
3456     break;
3457 
3458   case 363: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG  */
3459 #line 722 "util/configparser.y"
3460         {
3461 	#ifdef CLIENT_SUBNET
3462 		OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3463 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3464 			yyerror("Ipv6 subnet length expected");
3465 		else if (atoi((yyvsp[0].str)) > 128)
3466 			cfg_parser->cfg->max_client_subnet_ipv6 = 128;
3467 		else if (atoi((yyvsp[0].str)) < 0)
3468 			cfg_parser->cfg->max_client_subnet_ipv6 = 0;
3469 		else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3470 	#else
3471 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3472 	#endif
3473 		free((yyvsp[0].str));
3474 	}
3475 #line 3476 "util/configparser.c"
3476     break;
3477 
3478   case 364: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG  */
3479 #line 739 "util/configparser.y"
3480         {
3481 	#ifdef CLIENT_SUBNET
3482 		OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
3483 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3484 			yyerror("IPv4 subnet length expected");
3485 		else if (atoi((yyvsp[0].str)) > 32)
3486 			cfg_parser->cfg->min_client_subnet_ipv4 = 32;
3487 		else if (atoi((yyvsp[0].str)) < 0)
3488 			cfg_parser->cfg->min_client_subnet_ipv4 = 0;
3489 		else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
3490 	#else
3491 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3492 	#endif
3493 		free((yyvsp[0].str));
3494 	}
3495 #line 3496 "util/configparser.c"
3496     break;
3497 
3498   case 365: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG  */
3499 #line 756 "util/configparser.y"
3500         {
3501 	#ifdef CLIENT_SUBNET
3502 		OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
3503 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3504 			yyerror("Ipv6 subnet length expected");
3505 		else if (atoi((yyvsp[0].str)) > 128)
3506 			cfg_parser->cfg->min_client_subnet_ipv6 = 128;
3507 		else if (atoi((yyvsp[0].str)) < 0)
3508 			cfg_parser->cfg->min_client_subnet_ipv6 = 0;
3509 		else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
3510 	#else
3511 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3512 	#endif
3513 		free((yyvsp[0].str));
3514 	}
3515 #line 3516 "util/configparser.c"
3516     break;
3517 
3518   case 366: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG  */
3519 #line 773 "util/configparser.y"
3520         {
3521 	#ifdef CLIENT_SUBNET
3522 		OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
3523 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3524 			yyerror("IPv4 ECS tree size expected");
3525 		else if (atoi((yyvsp[0].str)) < 0)
3526 			cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
3527 		else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
3528 	#else
3529 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3530 	#endif
3531 		free((yyvsp[0].str));
3532 	}
3533 #line 3534 "util/configparser.c"
3534     break;
3535 
3536   case 367: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG  */
3537 #line 788 "util/configparser.y"
3538         {
3539 	#ifdef CLIENT_SUBNET
3540 		OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
3541 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3542 			yyerror("IPv6 ECS tree size expected");
3543 		else if (atoi((yyvsp[0].str)) < 0)
3544 			cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
3545 		else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
3546 	#else
3547 		OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
3548 	#endif
3549 		free((yyvsp[0].str));
3550 	}
3551 #line 3552 "util/configparser.c"
3552     break;
3553 
3554   case 368: /* server_interface: VAR_INTERFACE STRING_ARG  */
3555 #line 803 "util/configparser.y"
3556         {
3557 		OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
3558 		if(cfg_parser->cfg->num_ifs == 0)
3559 			cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
3560 		else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
3561 				(cfg_parser->cfg->num_ifs+1)*sizeof(char*));
3562 		if(!cfg_parser->cfg->ifs)
3563 			yyerror("out of memory");
3564 		else
3565 			cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
3566 	}
3567 #line 3568 "util/configparser.c"
3568     break;
3569 
3570   case 369: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG  */
3571 #line 816 "util/configparser.y"
3572         {
3573 		OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
3574 		if(cfg_parser->cfg->num_out_ifs == 0)
3575 			cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
3576 		else cfg_parser->cfg->out_ifs = realloc(
3577 			cfg_parser->cfg->out_ifs,
3578 			(cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
3579 		if(!cfg_parser->cfg->out_ifs)
3580 			yyerror("out of memory");
3581 		else
3582 			cfg_parser->cfg->out_ifs[
3583 				cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
3584 	}
3585 #line 3586 "util/configparser.c"
3586     break;
3587 
3588   case 370: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG  */
3589 #line 831 "util/configparser.y"
3590         {
3591 		OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
3592 		if(atoi((yyvsp[0].str)) == 0)
3593 			yyerror("number expected");
3594 		else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
3595 		free((yyvsp[0].str));
3596 	}
3597 #line 3598 "util/configparser.c"
3598     break;
3599 
3600   case 371: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG  */
3601 #line 840 "util/configparser.y"
3602         {
3603 		OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
3604 		if(!cfg_mark_ports((yyvsp[0].str), 1,
3605 			cfg_parser->cfg->outgoing_avail_ports, 65536))
3606 			yyerror("port number or range (\"low-high\") expected");
3607 		free((yyvsp[0].str));
3608 	}
3609 #line 3610 "util/configparser.c"
3610     break;
3611 
3612   case 372: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG  */
3613 #line 849 "util/configparser.y"
3614         {
3615 		OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
3616 		if(!cfg_mark_ports((yyvsp[0].str), 0,
3617 			cfg_parser->cfg->outgoing_avail_ports, 65536))
3618 			yyerror("port number or range (\"low-high\") expected");
3619 		free((yyvsp[0].str));
3620 	}
3621 #line 3622 "util/configparser.c"
3622     break;
3623 
3624   case 373: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG  */
3625 #line 858 "util/configparser.y"
3626         {
3627 		OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
3628 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3629 			yyerror("number expected");
3630 		else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
3631 		free((yyvsp[0].str));
3632 	}
3633 #line 3634 "util/configparser.c"
3634     break;
3635 
3636   case 374: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG  */
3637 #line 867 "util/configparser.y"
3638         {
3639 		OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
3640 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3641 			yyerror("number expected");
3642 		else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
3643 		free((yyvsp[0].str));
3644 	}
3645 #line 3646 "util/configparser.c"
3646     break;
3647 
3648   case 375: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG  */
3649 #line 876 "util/configparser.y"
3650         {
3651 		OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
3652 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3653 			yyerror("expected yes or no.");
3654 		else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
3655 		free((yyvsp[0].str));
3656 	}
3657 #line 3658 "util/configparser.c"
3658     break;
3659 
3660   case 376: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG  */
3661 #line 885 "util/configparser.y"
3662         {
3663 		OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
3664 		free(cfg_parser->cfg->if_automatic_ports);
3665 		cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
3666 	}
3667 #line 3668 "util/configparser.c"
3668     break;
3669 
3670   case 377: /* server_do_ip4: VAR_DO_IP4 STRING_ARG  */
3671 #line 892 "util/configparser.y"
3672         {
3673 		OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
3674 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3675 			yyerror("expected yes or no.");
3676 		else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3677 		free((yyvsp[0].str));
3678 	}
3679 #line 3680 "util/configparser.c"
3680     break;
3681 
3682   case 378: /* server_do_ip6: VAR_DO_IP6 STRING_ARG  */
3683 #line 901 "util/configparser.y"
3684         {
3685 		OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
3686 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3687 			yyerror("expected yes or no.");
3688 		else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3689 		free((yyvsp[0].str));
3690 	}
3691 #line 3692 "util/configparser.c"
3692     break;
3693 
3694   case 379: /* server_do_nat64: VAR_DO_NAT64 STRING_ARG  */
3695 #line 910 "util/configparser.y"
3696         {
3697 		OUTYY(("P(server_do_nat64:%s)\n", (yyvsp[0].str)));
3698 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3699 			yyerror("expected yes or no.");
3700 		else cfg_parser->cfg->do_nat64 = (strcmp((yyvsp[0].str), "yes")==0);
3701 		free((yyvsp[0].str));
3702 	}
3703 #line 3704 "util/configparser.c"
3704     break;
3705 
3706   case 380: /* server_do_udp: VAR_DO_UDP STRING_ARG  */
3707 #line 919 "util/configparser.y"
3708         {
3709 		OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
3710 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3711 			yyerror("expected yes or no.");
3712 		else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
3713 		free((yyvsp[0].str));
3714 	}
3715 #line 3716 "util/configparser.c"
3716     break;
3717 
3718   case 381: /* server_do_tcp: VAR_DO_TCP STRING_ARG  */
3719 #line 928 "util/configparser.y"
3720         {
3721 		OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
3722 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3723 			yyerror("expected yes or no.");
3724 		else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
3725 		free((yyvsp[0].str));
3726 	}
3727 #line 3728 "util/configparser.c"
3728     break;
3729 
3730   case 382: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG  */
3731 #line 937 "util/configparser.y"
3732         {
3733 		OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
3734 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3735 			yyerror("expected yes or no.");
3736 		else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
3737 		free((yyvsp[0].str));
3738 	}
3739 #line 3740 "util/configparser.c"
3740     break;
3741 
3742   case 383: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG  */
3743 #line 946 "util/configparser.y"
3744         {
3745 		OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
3746 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3747 			yyerror("expected yes or no.");
3748 		else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
3749 		free((yyvsp[0].str));
3750 	}
3751 #line 3752 "util/configparser.c"
3752     break;
3753 
3754   case 384: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG  */
3755 #line 955 "util/configparser.y"
3756         {
3757 		OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
3758 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3759 			yyerror("number expected");
3760 		else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
3761 		free((yyvsp[0].str));
3762 	}
3763 #line 3764 "util/configparser.c"
3764     break;
3765 
3766   case 385: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG  */
3767 #line 964 "util/configparser.y"
3768         {
3769 		OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
3770 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3771 			yyerror("number expected");
3772 		else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
3773 		free((yyvsp[0].str));
3774 	}
3775 #line 3776 "util/configparser.c"
3776     break;
3777 
3778   case 386: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG  */
3779 #line 973 "util/configparser.y"
3780         {
3781 		OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
3782 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3783 			yyerror("number expected");
3784 		else if (atoi((yyvsp[0].str)) > 120000)
3785 			cfg_parser->cfg->tcp_idle_timeout = 120000;
3786 		else if (atoi((yyvsp[0].str)) < 1)
3787 			cfg_parser->cfg->tcp_idle_timeout = 1;
3788 		else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
3789 		free((yyvsp[0].str));
3790 	}
3791 #line 3792 "util/configparser.c"
3792     break;
3793 
3794   case 387: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG  */
3795 #line 986 "util/configparser.y"
3796         {
3797 		OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
3798 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3799 			yyerror("number expected");
3800 		else if (atoi((yyvsp[0].str)) < 1)
3801 			cfg_parser->cfg->max_reuse_tcp_queries = 0;
3802 		else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
3803 		free((yyvsp[0].str));
3804 	}
3805 #line 3806 "util/configparser.c"
3806     break;
3807 
3808   case 388: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG  */
3809 #line 997 "util/configparser.y"
3810         {
3811 		OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
3812 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3813 			yyerror("number expected");
3814 		else if (atoi((yyvsp[0].str)) < 1)
3815 			cfg_parser->cfg->tcp_reuse_timeout = 0;
3816 		else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
3817 		free((yyvsp[0].str));
3818 	}
3819 #line 3820 "util/configparser.c"
3820     break;
3821 
3822   case 389: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG  */
3823 #line 1008 "util/configparser.y"
3824         {
3825 		OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
3826 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3827 			yyerror("number expected");
3828 		else if (atoi((yyvsp[0].str)) < 1)
3829 			cfg_parser->cfg->tcp_auth_query_timeout = 0;
3830 		else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
3831 		free((yyvsp[0].str));
3832 	}
3833 #line 3834 "util/configparser.c"
3834     break;
3835 
3836   case 390: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG  */
3837 #line 1019 "util/configparser.y"
3838         {
3839 		OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
3840 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3841 			yyerror("expected yes or no.");
3842 		else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
3843 		free((yyvsp[0].str));
3844 	}
3845 #line 3846 "util/configparser.c"
3846     break;
3847 
3848   case 391: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG  */
3849 #line 1028 "util/configparser.y"
3850         {
3851 		OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
3852 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3853 			yyerror("number expected");
3854 		else if (atoi((yyvsp[0].str)) > 6553500)
3855 			cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
3856 		else if (atoi((yyvsp[0].str)) < 1)
3857 			cfg_parser->cfg->tcp_keepalive_timeout = 0;
3858 		else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
3859 		free((yyvsp[0].str));
3860 	}
3861 #line 3862 "util/configparser.c"
3862     break;
3863 
3864   case 392: /* server_sock_queue_timeout: VAR_SOCK_QUEUE_TIMEOUT STRING_ARG  */
3865 #line 1041 "util/configparser.y"
3866         {
3867 		OUTYY(("P(server_sock_queue_timeout:%s)\n", (yyvsp[0].str)));
3868 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
3869 			yyerror("number expected");
3870 		else if (atoi((yyvsp[0].str)) > 6553500)
3871 			cfg_parser->cfg->sock_queue_timeout = 6553500;
3872 		else if (atoi((yyvsp[0].str)) < 1)
3873 			cfg_parser->cfg->sock_queue_timeout = 0;
3874 		else cfg_parser->cfg->sock_queue_timeout = atoi((yyvsp[0].str));
3875 		free((yyvsp[0].str));
3876 	}
3877 #line 3878 "util/configparser.c"
3878     break;
3879 
3880   case 393: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG  */
3881 #line 1054 "util/configparser.y"
3882         {
3883 		OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
3884 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3885 			yyerror("expected yes or no.");
3886 		else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3887 		free((yyvsp[0].str));
3888 	}
3889 #line 3890 "util/configparser.c"
3890     break;
3891 
3892   case 394: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG  */
3893 #line 1063 "util/configparser.y"
3894         {
3895 		OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
3896 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3897 			yyerror("expected yes or no.");
3898 		else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
3899 		free((yyvsp[0].str));
3900 	}
3901 #line 3902 "util/configparser.c"
3902     break;
3903 
3904   case 395: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG  */
3905 #line 1072 "util/configparser.y"
3906         {
3907 		OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
3908 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3909 			yyerror("expected yes or no.");
3910 		else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
3911 		free((yyvsp[0].str));
3912 	}
3913 #line 3914 "util/configparser.c"
3914     break;
3915 
3916   case 396: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG  */
3917 #line 1081 "util/configparser.y"
3918         {
3919 		OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
3920 		free(cfg_parser->cfg->ssl_service_key);
3921 		cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
3922 	}
3923 #line 3924 "util/configparser.c"
3924     break;
3925 
3926   case 397: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG  */
3927 #line 1088 "util/configparser.y"
3928         {
3929 		OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
3930 		free(cfg_parser->cfg->ssl_service_pem);
3931 		cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
3932 	}
3933 #line 3934 "util/configparser.c"
3934     break;
3935 
3936   case 398: /* server_ssl_port: VAR_SSL_PORT STRING_ARG  */
3937 #line 1095 "util/configparser.y"
3938         {
3939 		OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
3940 		if(atoi((yyvsp[0].str)) == 0)
3941 			yyerror("port number expected");
3942 		else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
3943 		free((yyvsp[0].str));
3944 	}
3945 #line 3946 "util/configparser.c"
3946     break;
3947 
3948   case 399: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG  */
3949 #line 1104 "util/configparser.y"
3950         {
3951 		OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
3952 		free(cfg_parser->cfg->tls_cert_bundle);
3953 		cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
3954 	}
3955 #line 3956 "util/configparser.c"
3956     break;
3957 
3958   case 400: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG  */
3959 #line 1111 "util/configparser.y"
3960         {
3961 		OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
3962 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
3963 			yyerror("expected yes or no.");
3964 		else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
3965 		free((yyvsp[0].str));
3966 	}
3967 #line 3968 "util/configparser.c"
3968     break;
3969 
3970   case 401: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG  */
3971 #line 1120 "util/configparser.y"
3972         {
3973 		OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
3974 		if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
3975 			(yyvsp[0].str)))
3976 			yyerror("out of memory");
3977 	}
3978 #line 3979 "util/configparser.c"
3979     break;
3980 
3981   case 402: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG  */
3982 #line 1128 "util/configparser.y"
3983         {
3984 		OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
3985 		free(cfg_parser->cfg->tls_ciphers);
3986 		cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
3987 	}
3988 #line 3989 "util/configparser.c"
3989     break;
3990 
3991   case 403: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG  */
3992 #line 1135 "util/configparser.y"
3993         {
3994 		OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
3995 		free(cfg_parser->cfg->tls_ciphersuites);
3996 		cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
3997 	}
3998 #line 3999 "util/configparser.c"
3999     break;
4000 
4001   case 404: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG  */
4002 #line 1142 "util/configparser.y"
4003         {
4004 		OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
4005 		if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
4006 			(yyvsp[0].str)))
4007 			yyerror("out of memory");
4008 	}
4009 #line 4010 "util/configparser.c"
4010     break;
4011 
4012   case 405: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG  */
4013 #line 1150 "util/configparser.y"
4014         {
4015 		OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
4016 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4017 			yyerror("expected yes or no.");
4018 		else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
4019 		free((yyvsp[0].str));
4020 	}
4021 #line 4022 "util/configparser.c"
4022     break;
4023 
4024   case 406: /* server_https_port: VAR_HTTPS_PORT STRING_ARG  */
4025 #line 1159 "util/configparser.y"
4026         {
4027 		OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
4028 		if(atoi((yyvsp[0].str)) == 0)
4029 			yyerror("port number expected");
4030 		else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
4031 		free((yyvsp[0].str));
4032 	}
4033 #line 4034 "util/configparser.c"
4034     break;
4035 
4036   case 407: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG  */
4037 #line 1167 "util/configparser.y"
4038         {
4039 		OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
4040 		free(cfg_parser->cfg->http_endpoint);
4041 		if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
4042 			cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
4043 			if(cfg_parser->cfg->http_endpoint) {
4044 				cfg_parser->cfg->http_endpoint[0] = '/';
4045 				memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4046 					strlen((yyvsp[0].str))+1);
4047 			} else {
4048 				yyerror("out of memory");
4049 			}
4050 			free((yyvsp[0].str));
4051 		} else {
4052 			cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4053 		}
4054 	}
4055 #line 4056 "util/configparser.c"
4056     break;
4057 
4058   case 408: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
4059 #line 1185 "util/configparser.y"
4060         {
4061 		OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4062 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4063 			yyerror("number expected");
4064 		else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4065 		free((yyvsp[0].str));
4066 	}
4067 #line 4068 "util/configparser.c"
4068     break;
4069 
4070   case 409: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
4071 #line 1193 "util/configparser.y"
4072         {
4073 		OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4074 		if(!cfg_parse_memsize((yyvsp[0].str),
4075 			&cfg_parser->cfg->http_query_buffer_size))
4076 			yyerror("memory size expected");
4077 		free((yyvsp[0].str));
4078 	}
4079 #line 4080 "util/configparser.c"
4080     break;
4081 
4082   case 410: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
4083 #line 1201 "util/configparser.y"
4084         {
4085 		OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4086 		if(!cfg_parse_memsize((yyvsp[0].str),
4087 			&cfg_parser->cfg->http_response_buffer_size))
4088 			yyerror("memory size expected");
4089 		free((yyvsp[0].str));
4090 	}
4091 #line 4092 "util/configparser.c"
4092     break;
4093 
4094   case 411: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
4095 #line 1209 "util/configparser.y"
4096         {
4097 		OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4098 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4099 			yyerror("expected yes or no.");
4100 		else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4101 		free((yyvsp[0].str));
4102 	}
4103 #line 4104 "util/configparser.c"
4104     break;
4105 
4106   case 412: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
4107 #line 1217 "util/configparser.y"
4108         {
4109 		OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4110 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4111 			yyerror("expected yes or no.");
4112 		else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4113 		free((yyvsp[0].str));
4114 	}
4115 #line 4116 "util/configparser.c"
4116     break;
4117 
4118   case 413: /* server_quic_port: VAR_QUIC_PORT STRING_ARG  */
4119 #line 1225 "util/configparser.y"
4120         {
4121 		OUTYY(("P(server_quic_port:%s)\n", (yyvsp[0].str)));
4122 #ifndef HAVE_NGTCP2
4123 		log_warn("%s:%d: Unbound is not compiled with "
4124 			"ngtcp2. This is required to use DNS "
4125 			"over QUIC.", cfg_parser->filename, cfg_parser->line);
4126 #endif
4127 		if(atoi((yyvsp[0].str)) == 0)
4128 			yyerror("port number expected");
4129 		else cfg_parser->cfg->quic_port = atoi((yyvsp[0].str));
4130 		free((yyvsp[0].str));
4131 	}
4132 #line 4133 "util/configparser.c"
4133     break;
4134 
4135   case 414: /* server_quic_size: VAR_QUIC_SIZE STRING_ARG  */
4136 #line 1238 "util/configparser.y"
4137         {
4138 		OUTYY(("P(server_quic_size:%s)\n", (yyvsp[0].str)));
4139 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->quic_size))
4140 			yyerror("memory size expected");
4141 		free((yyvsp[0].str));
4142 	}
4143 #line 4144 "util/configparser.c"
4144     break;
4145 
4146   case 415: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
4147 #line 1245 "util/configparser.y"
4148         {
4149 		OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4150 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4151 			yyerror("expected yes or no.");
4152 		else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4153 		free((yyvsp[0].str));
4154 	}
4155 #line 4156 "util/configparser.c"
4156     break;
4157 
4158   case 416: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
4159 #line 1254 "util/configparser.y"
4160         {
4161 		OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4162 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4163 			yyerror("expected yes or no.");
4164 		else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4165 		free((yyvsp[0].str));
4166 	}
4167 #line 4168 "util/configparser.c"
4168     break;
4169 
4170   case 417: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
4171 #line 1263 "util/configparser.y"
4172         {
4173 		OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4174 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4175 			yyerror("expected yes or no.");
4176 		else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4177 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4178 		if(strcmp((yyvsp[0].str), "yes") == 0)
4179 			yyerror("no syslog services are available. "
4180 				"(reconfigure and compile to add)");
4181 #endif
4182 		free((yyvsp[0].str));
4183 	}
4184 #line 4185 "util/configparser.c"
4185     break;
4186 
4187   case 418: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
4188 #line 1277 "util/configparser.y"
4189         {
4190 		OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4191 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4192 			yyerror("expected yes or no.");
4193 		else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4194 		free((yyvsp[0].str));
4195 	}
4196 #line 4197 "util/configparser.c"
4197     break;
4198 
4199   case 419: /* server_log_time_iso: VAR_LOG_TIME_ISO STRING_ARG  */
4200 #line 1286 "util/configparser.y"
4201         {
4202 		OUTYY(("P(server_log_time_iso:%s)\n", (yyvsp[0].str)));
4203 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4204 			yyerror("expected yes or no.");
4205 		else cfg_parser->cfg->log_time_iso = (strcmp((yyvsp[0].str), "yes")==0);
4206 		free((yyvsp[0].str));
4207 	}
4208 #line 4209 "util/configparser.c"
4209     break;
4210 
4211   case 420: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
4212 #line 1295 "util/configparser.y"
4213         {
4214 		OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4215 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4216 			yyerror("expected yes or no.");
4217 		else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4218 		free((yyvsp[0].str));
4219 	}
4220 #line 4221 "util/configparser.c"
4221     break;
4222 
4223   case 421: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
4224 #line 1304 "util/configparser.y"
4225         {
4226 		OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4227 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4228 			yyerror("expected yes or no.");
4229 		else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4230 		free((yyvsp[0].str));
4231 	}
4232 #line 4233 "util/configparser.c"
4233     break;
4234 
4235   case 422: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
4236 #line 1313 "util/configparser.y"
4237         {
4238 		OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4239 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4240 			yyerror("expected yes or no.");
4241 		else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4242 		free((yyvsp[0].str));
4243 	}
4244 #line 4245 "util/configparser.c"
4245     break;
4246 
4247   case 423: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
4248 #line 1322 "util/configparser.y"
4249         {
4250 		OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4251 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4252 			yyerror("expected yes or no.");
4253 		else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4254 		free((yyvsp[0].str));
4255 	}
4256 #line 4257 "util/configparser.c"
4257     break;
4258 
4259   case 424: /* server_log_destaddr: VAR_LOG_DESTADDR STRING_ARG  */
4260 #line 1331 "util/configparser.y"
4261         {
4262 		OUTYY(("P(server_log_destaddr:%s)\n", (yyvsp[0].str)));
4263 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4264 			yyerror("expected yes or no.");
4265 		else cfg_parser->cfg->log_destaddr = (strcmp((yyvsp[0].str), "yes")==0);
4266 		free((yyvsp[0].str));
4267 	}
4268 #line 4269 "util/configparser.c"
4269     break;
4270 
4271   case 425: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
4272 #line 1340 "util/configparser.y"
4273         {
4274 		OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4275 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4276 			yyerror("expected yes or no.");
4277 		else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4278 		free((yyvsp[0].str));
4279 	}
4280 #line 4281 "util/configparser.c"
4281     break;
4282 
4283   case 426: /* server_chroot: VAR_CHROOT STRING_ARG  */
4284 #line 1349 "util/configparser.y"
4285         {
4286 		OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4287 		free(cfg_parser->cfg->chrootdir);
4288 		cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4289 	}
4290 #line 4291 "util/configparser.c"
4291     break;
4292 
4293   case 427: /* server_username: VAR_USERNAME STRING_ARG  */
4294 #line 1356 "util/configparser.y"
4295         {
4296 		OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4297 		free(cfg_parser->cfg->username);
4298 		cfg_parser->cfg->username = (yyvsp[0].str);
4299 	}
4300 #line 4301 "util/configparser.c"
4301     break;
4302 
4303   case 428: /* server_directory: VAR_DIRECTORY STRING_ARG  */
4304 #line 1363 "util/configparser.y"
4305         {
4306 		OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4307 		free(cfg_parser->cfg->directory);
4308 		cfg_parser->cfg->directory = (yyvsp[0].str);
4309 		/* change there right away for includes relative to this */
4310 		if((yyvsp[0].str)[0]) {
4311 			char* d;
4312 #ifdef UB_ON_WINDOWS
4313 			w_config_adjust_directory(cfg_parser->cfg);
4314 #endif
4315 			d = cfg_parser->cfg->directory;
4316 			/* adjust directory if we have already chroot,
4317 			 * like, we reread after sighup */
4318 			if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4319 				strncmp(d, cfg_parser->chroot, strlen(
4320 				cfg_parser->chroot)) == 0)
4321 				d += strlen(cfg_parser->chroot);
4322 			if(d[0]) {
4323 				if(chdir(d))
4324 				log_err("cannot chdir to directory: %s (%s)",
4325 					d, strerror(errno));
4326 			}
4327 		}
4328 	}
4329 #line 4330 "util/configparser.c"
4330     break;
4331 
4332   case 429: /* server_logfile: VAR_LOGFILE STRING_ARG  */
4333 #line 1389 "util/configparser.y"
4334         {
4335 		OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4336 		free(cfg_parser->cfg->logfile);
4337 		cfg_parser->cfg->logfile = (yyvsp[0].str);
4338 		cfg_parser->cfg->use_syslog = 0;
4339 	}
4340 #line 4341 "util/configparser.c"
4341     break;
4342 
4343   case 430: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
4344 #line 1397 "util/configparser.y"
4345         {
4346 		OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4347 		free(cfg_parser->cfg->pidfile);
4348 		cfg_parser->cfg->pidfile = (yyvsp[0].str);
4349 	}
4350 #line 4351 "util/configparser.c"
4351     break;
4352 
4353   case 431: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
4354 #line 1404 "util/configparser.y"
4355         {
4356 		OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4357 		if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4358 			yyerror("out of memory");
4359 	}
4360 #line 4361 "util/configparser.c"
4361     break;
4362 
4363   case 432: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
4364 #line 1411 "util/configparser.y"
4365         {
4366 		OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4367 		log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4368 		free((yyvsp[0].str));
4369 	}
4370 #line 4371 "util/configparser.c"
4371     break;
4372 
4373   case 433: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
4374 #line 1418 "util/configparser.y"
4375         {
4376 		OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4377 		log_warn("option dlv-anchor ignored: DLV is decommissioned");
4378 		free((yyvsp[0].str));
4379 	}
4380 #line 4381 "util/configparser.c"
4381     break;
4382 
4383   case 434: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
4384 #line 1425 "util/configparser.y"
4385         {
4386 		OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4387 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4388 			auto_trust_anchor_file_list, (yyvsp[0].str)))
4389 			yyerror("out of memory");
4390 	}
4391 #line 4392 "util/configparser.c"
4392     break;
4393 
4394   case 435: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
4395 #line 1433 "util/configparser.y"
4396         {
4397 		OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4398 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4399 			trust_anchor_file_list, (yyvsp[0].str)))
4400 			yyerror("out of memory");
4401 	}
4402 #line 4403 "util/configparser.c"
4403     break;
4404 
4405   case 436: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
4406 #line 1441 "util/configparser.y"
4407         {
4408 		OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4409 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4410 			trusted_keys_file_list, (yyvsp[0].str)))
4411 			yyerror("out of memory");
4412 	}
4413 #line 4414 "util/configparser.c"
4414     break;
4415 
4416   case 437: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
4417 #line 1449 "util/configparser.y"
4418         {
4419 		OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4420 		if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4421 			yyerror("out of memory");
4422 	}
4423 #line 4424 "util/configparser.c"
4424     break;
4425 
4426   case 438: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
4427 #line 1456 "util/configparser.y"
4428         {
4429 		OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4430 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4431 			yyerror("expected yes or no.");
4432 		else
4433 			cfg_parser->cfg->trust_anchor_signaling =
4434 				(strcmp((yyvsp[0].str), "yes")==0);
4435 		free((yyvsp[0].str));
4436 	}
4437 #line 4438 "util/configparser.c"
4438     break;
4439 
4440   case 439: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
4441 #line 1467 "util/configparser.y"
4442         {
4443 		OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4444 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4445 			yyerror("expected yes or no.");
4446 		else
4447 			cfg_parser->cfg->root_key_sentinel =
4448 				(strcmp((yyvsp[0].str), "yes")==0);
4449 		free((yyvsp[0].str));
4450 	}
4451 #line 4452 "util/configparser.c"
4452     break;
4453 
4454   case 440: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
4455 #line 1478 "util/configparser.y"
4456         {
4457 		OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4458 		if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4459 			yyerror("out of memory");
4460 	}
4461 #line 4462 "util/configparser.c"
4462     break;
4463 
4464   case 441: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
4465 #line 1485 "util/configparser.y"
4466         {
4467 		OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4468 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4469 			yyerror("expected yes or no.");
4470 		else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4471 		free((yyvsp[0].str));
4472 	}
4473 #line 4474 "util/configparser.c"
4474     break;
4475 
4476   case 442: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
4477 #line 1494 "util/configparser.y"
4478         {
4479 		OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4480 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4481 			yyerror("expected yes or no.");
4482 		else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4483 		free((yyvsp[0].str));
4484 	}
4485 #line 4486 "util/configparser.c"
4486     break;
4487 
4488   case 443: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
4489 #line 1503 "util/configparser.y"
4490         {
4491 		OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4492 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4493 			yyerror("expected yes or no.");
4494 		else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4495 		free((yyvsp[0].str));
4496 	}
4497 #line 4498 "util/configparser.c"
4498     break;
4499 
4500   case 444: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG  */
4501 #line 1512 "util/configparser.y"
4502         {
4503 		OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4504 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4505 			yyerror("expected yes or no.");
4506 		else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4507 		free((yyvsp[0].str));
4508 	}
4509 #line 4510 "util/configparser.c"
4510     break;
4511 
4512   case 445: /* server_identity: VAR_IDENTITY STRING_ARG  */
4513 #line 1521 "util/configparser.y"
4514         {
4515 		OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4516 		free(cfg_parser->cfg->identity);
4517 		cfg_parser->cfg->identity = (yyvsp[0].str);
4518 	}
4519 #line 4520 "util/configparser.c"
4520     break;
4521 
4522   case 446: /* server_version: VAR_VERSION STRING_ARG  */
4523 #line 1528 "util/configparser.y"
4524         {
4525 		OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4526 		free(cfg_parser->cfg->version);
4527 		cfg_parser->cfg->version = (yyvsp[0].str);
4528 	}
4529 #line 4530 "util/configparser.c"
4530     break;
4531 
4532   case 447: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG  */
4533 #line 1535 "util/configparser.y"
4534         {
4535 		OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4536 		free(cfg_parser->cfg->http_user_agent);
4537 		cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4538 	}
4539 #line 4540 "util/configparser.c"
4540     break;
4541 
4542   case 448: /* server_nsid: VAR_NSID STRING_ARG  */
4543 #line 1542 "util/configparser.y"
4544         {
4545 		OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4546 		free(cfg_parser->cfg->nsid_cfg_str);
4547 		cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4548 		free(cfg_parser->cfg->nsid);
4549 		cfg_parser->cfg->nsid = NULL;
4550 		cfg_parser->cfg->nsid_len = 0;
4551 		if (*(yyvsp[0].str) == 0)
4552 			; /* pass; empty string is not setting nsid */
4553 		else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4554 					(yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4555 			yyerror("the NSID must be either a hex string or an "
4556 			    "ascii character string prepended with ascii_.");
4557 	}
4558 #line 4559 "util/configparser.c"
4559     break;
4560 
4561   case 449: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
4562 #line 1558 "util/configparser.y"
4563         {
4564 		OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4565 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4566 			yyerror("buffer size expected");
4567 		free((yyvsp[0].str));
4568 	}
4569 #line 4570 "util/configparser.c"
4570     break;
4571 
4572   case 450: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
4573 #line 1566 "util/configparser.y"
4574         {
4575 		OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4576 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4577 			yyerror("buffer size expected");
4578 		free((yyvsp[0].str));
4579 	}
4580 #line 4581 "util/configparser.c"
4581     break;
4582 
4583   case 451: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
4584 #line 1574 "util/configparser.y"
4585         {
4586 		OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4587 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4588 			yyerror("expected yes or no.");
4589 		else cfg_parser->cfg->so_reuseport =
4590 			(strcmp((yyvsp[0].str), "yes")==0);
4591 		free((yyvsp[0].str));
4592 	}
4593 #line 4594 "util/configparser.c"
4594     break;
4595 
4596   case 452: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
4597 #line 1584 "util/configparser.y"
4598         {
4599 		OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4600 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4601 			yyerror("expected yes or no.");
4602 		else cfg_parser->cfg->ip_transparent =
4603 			(strcmp((yyvsp[0].str), "yes")==0);
4604 		free((yyvsp[0].str));
4605 	}
4606 #line 4607 "util/configparser.c"
4607     break;
4608 
4609   case 453: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
4610 #line 1594 "util/configparser.y"
4611         {
4612 		OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4613 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4614 			yyerror("expected yes or no.");
4615 		else cfg_parser->cfg->ip_freebind =
4616 			(strcmp((yyvsp[0].str), "yes")==0);
4617 		free((yyvsp[0].str));
4618 	}
4619 #line 4620 "util/configparser.c"
4620     break;
4621 
4622   case 454: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
4623 #line 1604 "util/configparser.y"
4624         {
4625 		OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4626 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4627 			yyerror("number expected");
4628 		else if (atoi((yyvsp[0].str)) > 63)
4629 			yyerror("value too large (max 63)");
4630 		else if (atoi((yyvsp[0].str)) < 0)
4631 			yyerror("value too small (min 0)");
4632 		else
4633 			cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4634 		free((yyvsp[0].str));
4635 	}
4636 #line 4637 "util/configparser.c"
4637     break;
4638 
4639   case 455: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
4640 #line 1618 "util/configparser.y"
4641         {
4642 		OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4643 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4644 			yyerror("memory size expected");
4645 		free((yyvsp[0].str));
4646 	}
4647 #line 4648 "util/configparser.c"
4648     break;
4649 
4650   case 456: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
4651 #line 1626 "util/configparser.y"
4652         {
4653 		OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4654 		if(atoi((yyvsp[0].str)) == 0)
4655 			yyerror("number expected");
4656 		else if (atoi((yyvsp[0].str)) < 12)
4657 			yyerror("edns buffer size too small");
4658 		else if (atoi((yyvsp[0].str)) > 65535)
4659 			cfg_parser->cfg->edns_buffer_size = 65535;
4660 		else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4661 		free((yyvsp[0].str));
4662 	}
4663 #line 4664 "util/configparser.c"
4664     break;
4665 
4666   case 457: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
4667 #line 1639 "util/configparser.y"
4668         {
4669 		OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4670 		if(atoi((yyvsp[0].str)) == 0)
4671 			yyerror("number expected");
4672 		else if (atoi((yyvsp[0].str)) < 4096)
4673 			yyerror("message buffer size too small (use 4096)");
4674 		else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4675 		free((yyvsp[0].str));
4676 	}
4677 #line 4678 "util/configparser.c"
4678     break;
4679 
4680   case 458: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
4681 #line 1650 "util/configparser.y"
4682         {
4683 		OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4684 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4685 			yyerror("memory size expected");
4686 		free((yyvsp[0].str));
4687 	}
4688 #line 4689 "util/configparser.c"
4689     break;
4690 
4691   case 459: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
4692 #line 1658 "util/configparser.y"
4693         {
4694 		OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4695 		if(atoi((yyvsp[0].str)) == 0) {
4696 			yyerror("number expected");
4697 		} else {
4698 			cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4699 			if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4700 				yyerror("must be a power of 2");
4701 		}
4702 		free((yyvsp[0].str));
4703 	}
4704 #line 4705 "util/configparser.c"
4705     break;
4706 
4707   case 460: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
4708 #line 1671 "util/configparser.y"
4709         {
4710 		OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4711 		if(atoi((yyvsp[0].str)) == 0)
4712 			yyerror("number expected");
4713 		else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4714 		free((yyvsp[0].str));
4715 	}
4716 #line 4717 "util/configparser.c"
4717     break;
4718 
4719   case 461: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
4720 #line 1680 "util/configparser.y"
4721         {
4722 		OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4723 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4724 			yyerror("number expected");
4725 		else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4726 		free((yyvsp[0].str));
4727 	}
4728 #line 4729 "util/configparser.c"
4729     break;
4730 
4731   case 462: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
4732 #line 1689 "util/configparser.y"
4733         {
4734 		OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4735 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4736 			yyerror("number expected");
4737 		else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4738 		free((yyvsp[0].str));
4739 	}
4740 #line 4741 "util/configparser.c"
4741     break;
4742 
4743   case 463: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
4744 #line 1698 "util/configparser.y"
4745         {
4746 		OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4747 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4748 			yyerror("expected yes or no.");
4749 		else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4750 		free((yyvsp[0].str));
4751 	}
4752 #line 4753 "util/configparser.c"
4753     break;
4754 
4755   case 464: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
4756 #line 1707 "util/configparser.y"
4757         {
4758 		OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4759 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4760 			yyerror("expected yes or no.");
4761 		else cfg_parser->cfg->unblock_lan_zones =
4762 			(strcmp((yyvsp[0].str), "yes")==0);
4763 		free((yyvsp[0].str));
4764 	}
4765 #line 4766 "util/configparser.c"
4766     break;
4767 
4768   case 465: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
4769 #line 1717 "util/configparser.y"
4770         {
4771 		OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4772 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4773 			yyerror("expected yes or no.");
4774 		else cfg_parser->cfg->insecure_lan_zones =
4775 			(strcmp((yyvsp[0].str), "yes")==0);
4776 		free((yyvsp[0].str));
4777 	}
4778 #line 4779 "util/configparser.c"
4779     break;
4780 
4781   case 466: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
4782 #line 1727 "util/configparser.y"
4783         {
4784 		OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4785 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4786 			yyerror("memory size expected");
4787 		free((yyvsp[0].str));
4788 	}
4789 #line 4790 "util/configparser.c"
4790     break;
4791 
4792   case 467: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
4793 #line 1735 "util/configparser.y"
4794         {
4795 		OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4796 		if(atoi((yyvsp[0].str)) == 0) {
4797 			yyerror("number expected");
4798 		} else {
4799 			cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4800 			if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4801 				yyerror("must be a power of 2");
4802 		}
4803 		free((yyvsp[0].str));
4804 	}
4805 #line 4806 "util/configparser.c"
4806     break;
4807 
4808   case 468: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
4809 #line 1748 "util/configparser.y"
4810         {
4811 		OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4812 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4813 			yyerror("number expected");
4814 		else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4815 		free((yyvsp[0].str));
4816 	}
4817 #line 4818 "util/configparser.c"
4818     break;
4819 
4820   case 469: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
4821 #line 1757 "util/configparser.y"
4822         {
4823 		OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4824 		verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4825 			"removed, use infra-host-ttl)", (yyvsp[0].str));
4826 		free((yyvsp[0].str));
4827 	}
4828 #line 4829 "util/configparser.c"
4829     break;
4830 
4831   case 470: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
4832 #line 1765 "util/configparser.y"
4833         {
4834 		OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4835 		if(atoi((yyvsp[0].str)) == 0)
4836 			yyerror("number expected");
4837 		else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4838 		free((yyvsp[0].str));
4839 	}
4840 #line 4841 "util/configparser.c"
4841     break;
4842 
4843   case 471: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
4844 #line 1774 "util/configparser.y"
4845         {
4846 		OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4847 		verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4848 			"(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4849 		free((yyvsp[0].str));
4850 	}
4851 #line 4852 "util/configparser.c"
4852     break;
4853 
4854   case 472: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
4855 #line 1782 "util/configparser.y"
4856         {
4857 		OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4858 		if(atoi((yyvsp[0].str)) == 0) {
4859 			yyerror("number expected");
4860 		} else {
4861 			cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4862 			if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4863 				yyerror("must be a power of 2");
4864 		}
4865 		free((yyvsp[0].str));
4866 	}
4867 #line 4868 "util/configparser.c"
4868     break;
4869 
4870   case 473: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
4871 #line 1795 "util/configparser.y"
4872         {
4873 		OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4874 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4875 			yyerror("number expected");
4876 		else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4877 		free((yyvsp[0].str));
4878 	}
4879 #line 4880 "util/configparser.c"
4880     break;
4881 
4882   case 474: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG  */
4883 #line 1804 "util/configparser.y"
4884         {
4885 		OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
4886 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4887 			yyerror("number expected");
4888 		else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
4889 		free((yyvsp[0].str));
4890 	}
4891 #line 4892 "util/configparser.c"
4892     break;
4893 
4894   case 475: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
4895 #line 1813 "util/configparser.y"
4896         {
4897 		OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4898 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4899 			yyerror("expected yes or no.");
4900 		else cfg_parser->cfg->infra_keep_probing =
4901 			(strcmp((yyvsp[0].str), "yes")==0);
4902 		free((yyvsp[0].str));
4903 	}
4904 #line 4905 "util/configparser.c"
4905     break;
4906 
4907   case 476: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
4908 #line 1823 "util/configparser.y"
4909         {
4910 		OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4911 		free(cfg_parser->cfg->target_fetch_policy);
4912 		cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4913 	}
4914 #line 4915 "util/configparser.c"
4915     break;
4916 
4917   case 477: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
4918 #line 1830 "util/configparser.y"
4919         {
4920 		OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4921 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4922 			yyerror("expected yes or no.");
4923 		else cfg_parser->cfg->harden_short_bufsize =
4924 			(strcmp((yyvsp[0].str), "yes")==0);
4925 		free((yyvsp[0].str));
4926 	}
4927 #line 4928 "util/configparser.c"
4928     break;
4929 
4930   case 478: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
4931 #line 1840 "util/configparser.y"
4932         {
4933 		OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
4934 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4935 			yyerror("expected yes or no.");
4936 		else cfg_parser->cfg->harden_large_queries =
4937 			(strcmp((yyvsp[0].str), "yes")==0);
4938 		free((yyvsp[0].str));
4939 	}
4940 #line 4941 "util/configparser.c"
4941     break;
4942 
4943   case 479: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
4944 #line 1850 "util/configparser.y"
4945         {
4946 		OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
4947 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4948 			yyerror("expected yes or no.");
4949 		else cfg_parser->cfg->harden_glue =
4950 			(strcmp((yyvsp[0].str), "yes")==0);
4951 		free((yyvsp[0].str));
4952 	}
4953 #line 4954 "util/configparser.c"
4954     break;
4955 
4956   case 480: /* server_harden_unverified_glue: VAR_HARDEN_UNVERIFIED_GLUE STRING_ARG  */
4957 #line 1860 "util/configparser.y"
4958        {
4959                OUTYY(("P(server_harden_unverified_glue:%s)\n", (yyvsp[0].str)));
4960                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4961                        yyerror("expected yes or no.");
4962                else cfg_parser->cfg->harden_unverified_glue =
4963                        (strcmp((yyvsp[0].str), "yes")==0);
4964                free((yyvsp[0].str));
4965        }
4966 #line 4967 "util/configparser.c"
4967     break;
4968 
4969   case 481: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
4970 #line 1870 "util/configparser.y"
4971         {
4972 		OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
4973 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4974 			yyerror("expected yes or no.");
4975 		else cfg_parser->cfg->harden_dnssec_stripped =
4976 			(strcmp((yyvsp[0].str), "yes")==0);
4977 		free((yyvsp[0].str));
4978 	}
4979 #line 4980 "util/configparser.c"
4980     break;
4981 
4982   case 482: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
4983 #line 1880 "util/configparser.y"
4984         {
4985 		OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
4986 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4987 			yyerror("expected yes or no.");
4988 		else cfg_parser->cfg->harden_below_nxdomain =
4989 			(strcmp((yyvsp[0].str), "yes")==0);
4990 		free((yyvsp[0].str));
4991 	}
4992 #line 4993 "util/configparser.c"
4993     break;
4994 
4995   case 483: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
4996 #line 1890 "util/configparser.y"
4997         {
4998 		OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
4999 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5000 			yyerror("expected yes or no.");
5001 		else cfg_parser->cfg->harden_referral_path =
5002 			(strcmp((yyvsp[0].str), "yes")==0);
5003 		free((yyvsp[0].str));
5004 	}
5005 #line 5006 "util/configparser.c"
5006     break;
5007 
5008   case 484: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
5009 #line 1900 "util/configparser.y"
5010         {
5011 		OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5012 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5013 			yyerror("expected yes or no.");
5014 		else cfg_parser->cfg->harden_algo_downgrade =
5015 			(strcmp((yyvsp[0].str), "yes")==0);
5016 		free((yyvsp[0].str));
5017 	}
5018 #line 5019 "util/configparser.c"
5019     break;
5020 
5021   case 485: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG  */
5022 #line 1910 "util/configparser.y"
5023         {
5024 		OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
5025 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5026 			yyerror("expected yes or no.");
5027 		else cfg_parser->cfg->harden_unknown_additional =
5028 			(strcmp((yyvsp[0].str), "yes")==0);
5029 		free((yyvsp[0].str));
5030 	}
5031 #line 5032 "util/configparser.c"
5032     break;
5033 
5034   case 486: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
5035 #line 1920 "util/configparser.y"
5036         {
5037 		OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5038 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5039 			yyerror("expected yes or no.");
5040 		else cfg_parser->cfg->use_caps_bits_for_id =
5041 			(strcmp((yyvsp[0].str), "yes")==0);
5042 		free((yyvsp[0].str));
5043 	}
5044 #line 5045 "util/configparser.c"
5045     break;
5046 
5047   case 487: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
5048 #line 1930 "util/configparser.y"
5049         {
5050 		OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5051 		if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5052 			yyerror("out of memory");
5053 	}
5054 #line 5055 "util/configparser.c"
5055     break;
5056 
5057   case 488: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
5058 #line 1937 "util/configparser.y"
5059         {
5060 		OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5061 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5062 			yyerror("out of memory");
5063 	}
5064 #line 5065 "util/configparser.c"
5065     break;
5066 
5067   case 489: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
5068 #line 1944 "util/configparser.y"
5069         {
5070 		OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5071 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5072 			yyerror("out of memory");
5073 	}
5074 #line 5075 "util/configparser.c"
5075     break;
5076 
5077   case 490: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
5078 #line 1951 "util/configparser.y"
5079         {
5080 		OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5081 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5082 			yyerror("expected yes or no.");
5083 		else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5084 		free((yyvsp[0].str));
5085 	}
5086 #line 5087 "util/configparser.c"
5087     break;
5088 
5089   case 491: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
5090 #line 1960 "util/configparser.y"
5091         {
5092 		OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5093 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5094 			yyerror("expected yes or no.");
5095 		else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5096 		free((yyvsp[0].str));
5097 	}
5098 #line 5099 "util/configparser.c"
5099     break;
5100 
5101   case 492: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
5102 #line 1969 "util/configparser.y"
5103         {
5104 		OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5105 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5106 			yyerror("expected yes or no.");
5107 		else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5108 		free((yyvsp[0].str));
5109 	}
5110 #line 5111 "util/configparser.c"
5111     break;
5112 
5113   case 493: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
5114 #line 1978 "util/configparser.y"
5115         {
5116 		OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5117 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5118 			yyerror("number expected");
5119 		else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5120 		free((yyvsp[0].str));
5121 	}
5122 #line 5123 "util/configparser.c"
5123     break;
5124 
5125   case 494: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
5126 #line 1987 "util/configparser.y"
5127         {
5128 		OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5129 		if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5130 			yyerror("out of memory");
5131 	}
5132 #line 5133 "util/configparser.c"
5133     break;
5134 
5135   case 495: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
5136 #line 1994 "util/configparser.y"
5137         {
5138 		OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5139 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5140 			yyerror("expected yes or no.");
5141 		else cfg_parser->cfg->donotquery_localhost =
5142 			(strcmp((yyvsp[0].str), "yes")==0);
5143 		free((yyvsp[0].str));
5144 	}
5145 #line 5146 "util/configparser.c"
5146     break;
5147 
5148   case 496: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
5149 #line 2004 "util/configparser.y"
5150         {
5151 		OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5152 		validate_acl_action((yyvsp[0].str));
5153 		if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5154 			fatal_exit("out of memory adding acl");
5155 	}
5156 #line 5157 "util/configparser.c"
5157     break;
5158 
5159   case 497: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG  */
5160 #line 2012 "util/configparser.y"
5161         {
5162 		OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5163 		validate_acl_action((yyvsp[0].str));
5164 		if(!cfg_str2list_insert(
5165 			&cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5166 			fatal_exit("out of memory adding acl");
5167 	}
5168 #line 5169 "util/configparser.c"
5169     break;
5170 
5171   case 498: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
5172 #line 2021 "util/configparser.y"
5173         {
5174 		OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5175 		free(cfg_parser->cfg->module_conf);
5176 		cfg_parser->cfg->module_conf = (yyvsp[0].str);
5177 	}
5178 #line 5179 "util/configparser.c"
5179     break;
5180 
5181   case 499: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
5182 #line 2028 "util/configparser.y"
5183         {
5184 		OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5185 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5186 			cfg_parser->cfg->val_date_override = 0;
5187 		} else if(strlen((yyvsp[0].str)) == 14) {
5188 			cfg_parser->cfg->val_date_override =
5189 				cfg_convert_timeval((yyvsp[0].str));
5190 			if(!cfg_parser->cfg->val_date_override)
5191 				yyerror("bad date/time specification");
5192 		} else {
5193 			if(atoi((yyvsp[0].str)) == 0)
5194 				yyerror("number expected");
5195 			cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5196 		}
5197 		free((yyvsp[0].str));
5198 	}
5199 #line 5200 "util/configparser.c"
5200     break;
5201 
5202   case 500: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
5203 #line 2046 "util/configparser.y"
5204         {
5205 		OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5206 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5207 			cfg_parser->cfg->val_sig_skew_min = 0;
5208 		} else {
5209 			cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5210 			if(!cfg_parser->cfg->val_sig_skew_min)
5211 				yyerror("number expected");
5212 		}
5213 		free((yyvsp[0].str));
5214 	}
5215 #line 5216 "util/configparser.c"
5216     break;
5217 
5218   case 501: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
5219 #line 2059 "util/configparser.y"
5220         {
5221 		OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5222 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5223 			cfg_parser->cfg->val_sig_skew_max = 0;
5224 		} else {
5225 			cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5226 			if(!cfg_parser->cfg->val_sig_skew_max)
5227 				yyerror("number expected");
5228 		}
5229 		free((yyvsp[0].str));
5230 	}
5231 #line 5232 "util/configparser.c"
5232     break;
5233 
5234   case 502: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG  */
5235 #line 2072 "util/configparser.y"
5236         {
5237 		OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5238 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5239 			cfg_parser->cfg->val_max_restart = 0;
5240 		} else {
5241 			cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5242 			if(!cfg_parser->cfg->val_max_restart)
5243 				yyerror("number expected");
5244 		}
5245 		free((yyvsp[0].str));
5246 	}
5247 #line 5248 "util/configparser.c"
5248     break;
5249 
5250   case 503: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
5251 #line 2085 "util/configparser.y"
5252         {
5253 		OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5254 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5255 			yyerror("number expected");
5256 		else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5257 		free((yyvsp[0].str));
5258 	}
5259 #line 5260 "util/configparser.c"
5260     break;
5261 
5262   case 504: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
5263 #line 2094 "util/configparser.y"
5264         {
5265 		OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5266 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5267 			yyerror("number expected");
5268 		else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5269 		free((yyvsp[0].str));
5270 	}
5271 #line 5272 "util/configparser.c"
5272     break;
5273 
5274   case 505: /* server_cache_min_negative_ttl: VAR_CACHE_MIN_NEGATIVE_TTL STRING_ARG  */
5275 #line 2103 "util/configparser.y"
5276         {
5277 		OUTYY(("P(server_cache_min_negative_ttl:%s)\n", (yyvsp[0].str)));
5278 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5279 			yyerror("number expected");
5280 		else cfg_parser->cfg->min_negative_ttl = atoi((yyvsp[0].str));
5281 		free((yyvsp[0].str));
5282 	}
5283 #line 5284 "util/configparser.c"
5284     break;
5285 
5286   case 506: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
5287 #line 2112 "util/configparser.y"
5288         {
5289 		OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5290 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5291 			yyerror("number expected");
5292 		else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5293 		free((yyvsp[0].str));
5294 	}
5295 #line 5296 "util/configparser.c"
5296     break;
5297 
5298   case 507: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
5299 #line 2121 "util/configparser.y"
5300         {
5301 		OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5302 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5303 			yyerror("number expected");
5304 		else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5305 		free((yyvsp[0].str));
5306 	}
5307 #line 5308 "util/configparser.c"
5308     break;
5309 
5310   case 508: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
5311 #line 2130 "util/configparser.y"
5312         {
5313 		OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5314 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5315 			yyerror("expected yes or no.");
5316 		else cfg_parser->cfg->val_clean_additional =
5317 			(strcmp((yyvsp[0].str), "yes")==0);
5318 		free((yyvsp[0].str));
5319 	}
5320 #line 5321 "util/configparser.c"
5321     break;
5322 
5323   case 509: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
5324 #line 2140 "util/configparser.y"
5325         {
5326 		OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5327 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5328 			yyerror("expected yes or no.");
5329 		else cfg_parser->cfg->val_permissive_mode =
5330 			(strcmp((yyvsp[0].str), "yes")==0);
5331 		free((yyvsp[0].str));
5332 	}
5333 #line 5334 "util/configparser.c"
5334     break;
5335 
5336   case 510: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
5337 #line 2150 "util/configparser.y"
5338         {
5339 		OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5340 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5341 			yyerror("expected yes or no.");
5342 		else
5343 			cfg_parser->cfg->aggressive_nsec =
5344 				(strcmp((yyvsp[0].str), "yes")==0);
5345 		free((yyvsp[0].str));
5346 	}
5347 #line 5348 "util/configparser.c"
5348     break;
5349 
5350   case 511: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
5351 #line 2161 "util/configparser.y"
5352         {
5353 		OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5354 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5355 			yyerror("expected yes or no.");
5356 		else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5357 		free((yyvsp[0].str));
5358 	}
5359 #line 5360 "util/configparser.c"
5360     break;
5361 
5362   case 512: /* server_disable_edns_do: VAR_DISABLE_EDNS_DO STRING_ARG  */
5363 #line 2170 "util/configparser.y"
5364         {
5365 		OUTYY(("P(server_disable_edns_do:%s)\n", (yyvsp[0].str)));
5366 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5367 			yyerror("expected yes or no.");
5368 		else cfg_parser->cfg->disable_edns_do = (strcmp((yyvsp[0].str), "yes")==0);
5369 		free((yyvsp[0].str));
5370 	}
5371 #line 5372 "util/configparser.c"
5372     break;
5373 
5374   case 513: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
5375 #line 2179 "util/configparser.y"
5376         {
5377 		OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5378 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5379 			yyerror("expected yes or no.");
5380 		else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5381 		free((yyvsp[0].str));
5382 	}
5383 #line 5384 "util/configparser.c"
5384     break;
5385 
5386   case 514: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
5387 #line 2188 "util/configparser.y"
5388         {
5389 		OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5390 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5391 			yyerror("number expected");
5392 		else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5393 		free((yyvsp[0].str));
5394 	}
5395 #line 5396 "util/configparser.c"
5396     break;
5397 
5398   case 515: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
5399 #line 2197 "util/configparser.y"
5400         {
5401 		OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5402 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5403 			yyerror("expected yes or no.");
5404 		else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5405 		free((yyvsp[0].str));
5406 	}
5407 #line 5408 "util/configparser.c"
5408     break;
5409 
5410   case 516: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
5411 #line 2206 "util/configparser.y"
5412         {
5413 		OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5414 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5415 			yyerror("number expected");
5416 		else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5417 		free((yyvsp[0].str));
5418 	}
5419 #line 5420 "util/configparser.c"
5420     break;
5421 
5422   case 517: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
5423 #line 2215 "util/configparser.y"
5424         {
5425 		OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5426 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5427 			yyerror("number expected");
5428 		else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5429 		free((yyvsp[0].str));
5430 	}
5431 #line 5432 "util/configparser.c"
5432     break;
5433 
5434   case 518: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG  */
5435 #line 2224 "util/configparser.y"
5436         {
5437 		OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5438 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5439 			yyerror("expected yes or no.");
5440 		else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5441 		free((yyvsp[0].str));
5442 	}
5443 #line 5444 "util/configparser.c"
5444     break;
5445 
5446   case 519: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
5447 #line 2233 "util/configparser.y"
5448         {
5449 		OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5450 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5451 			yyerror("expected yes or no.");
5452 		else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5453 		free((yyvsp[0].str));
5454 	}
5455 #line 5456 "util/configparser.c"
5456     break;
5457 
5458   case 520: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
5459 #line 2242 "util/configparser.y"
5460         {
5461 		OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5462 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5463 			yyerror("expected yes or no.");
5464 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5465 		else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5466 		if(fake_dsa)
5467 			log_warn("test option fake_dsa is enabled");
5468 #endif
5469 		free((yyvsp[0].str));
5470 	}
5471 #line 5472 "util/configparser.c"
5472     break;
5473 
5474   case 521: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
5475 #line 2255 "util/configparser.y"
5476         {
5477 		OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5478 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5479 			yyerror("expected yes or no.");
5480 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5481 		else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5482 		if(fake_sha1)
5483 			log_warn("test option fake_sha1 is enabled");
5484 #endif
5485 		free((yyvsp[0].str));
5486 	}
5487 #line 5488 "util/configparser.c"
5488     break;
5489 
5490   case 522: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
5491 #line 2268 "util/configparser.y"
5492         {
5493 		OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5494 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5495 			yyerror("number expected");
5496 		else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5497 		free((yyvsp[0].str));
5498 	}
5499 #line 5500 "util/configparser.c"
5500     break;
5501 
5502   case 523: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
5503 #line 2277 "util/configparser.y"
5504         {
5505 		OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5506 		free(cfg_parser->cfg->val_nsec3_key_iterations);
5507 		cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5508 	}
5509 #line 5510 "util/configparser.c"
5510     break;
5511 
5512   case 524: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
5513 #line 2284 "util/configparser.y"
5514         {
5515 		OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5516 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5517 			yyerror("expected yes or no.");
5518 		else	cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5519 		free((yyvsp[0].str));
5520 	}
5521 #line 5522 "util/configparser.c"
5522     break;
5523 
5524   case 525: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
5525 #line 2293 "util/configparser.y"
5526         {
5527 		OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5528 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5529 			yyerror("number expected");
5530 		else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5531 		free((yyvsp[0].str));
5532 	}
5533 #line 5534 "util/configparser.c"
5534     break;
5535 
5536   case 526: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
5537 #line 2302 "util/configparser.y"
5538         {
5539 		OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5540 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5541 			yyerror("number expected");
5542 		else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5543 		free((yyvsp[0].str));
5544 	}
5545 #line 5546 "util/configparser.c"
5546     break;
5547 
5548   case 527: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
5549 #line 2311 "util/configparser.y"
5550         {
5551 		OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5552 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5553 			yyerror("number expected");
5554 		else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5555 		free((yyvsp[0].str));
5556 	}
5557 #line 5558 "util/configparser.c"
5558     break;
5559 
5560   case 528: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
5561 #line 2320 "util/configparser.y"
5562         {
5563 		OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5564 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5565 			yyerror("expected yes or no.");
5566 		else cfg_parser->cfg->permit_small_holddown =
5567 			(strcmp((yyvsp[0].str), "yes")==0);
5568 		free((yyvsp[0].str));
5569 	}
5570 #line 5571 "util/configparser.c"
5571     break;
5572 
5573   case 529: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
5574 #line 2330 "util/configparser.y"
5575         {
5576 		OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5577 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5578 			yyerror("memory size expected");
5579 		free((yyvsp[0].str));
5580 	}
5581 #line 5582 "util/configparser.c"
5582     break;
5583 
5584   case 530: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
5585 #line 2338 "util/configparser.y"
5586         {
5587 		OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5588 		if(atoi((yyvsp[0].str)) == 0) {
5589 			yyerror("number expected");
5590 		} else {
5591 			cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5592 			if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5593 				yyerror("must be a power of 2");
5594 		}
5595 		free((yyvsp[0].str));
5596 	}
5597 #line 5598 "util/configparser.c"
5598     break;
5599 
5600   case 531: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
5601 #line 2351 "util/configparser.y"
5602         {
5603 		OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5604 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5605 			yyerror("memory size expected");
5606 		free((yyvsp[0].str));
5607 	}
5608 #line 5609 "util/configparser.c"
5609     break;
5610 
5611   case 532: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
5612 #line 2359 "util/configparser.y"
5613         {
5614 		OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5615 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5616 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5617 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5618 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
5619 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
5620 		   && strcmp((yyvsp[0].str), "block_a")!=0
5621 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
5622 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5623 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
5624 		   && strcmp((yyvsp[0].str), "always_deny")!=0
5625 		   && strcmp((yyvsp[0].str), "always_null")!=0
5626 		   && strcmp((yyvsp[0].str), "noview")!=0
5627 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5628 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
5629 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
5630 			yyerror("local-zone type: expected static, deny, "
5631 				"refuse, redirect, transparent, "
5632 				"typetransparent, inform, inform_deny, "
5633 				"inform_redirect, always_transparent, block_a,"
5634 				"always_refuse, always_nxdomain, "
5635 				"always_nodata, always_deny, always_null, "
5636 				"noview, nodefault or ipset");
5637 			free((yyvsp[-1].str));
5638 			free((yyvsp[0].str));
5639 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5640 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5641 				local_zones_nodefault, (yyvsp[-1].str)))
5642 				fatal_exit("out of memory adding local-zone");
5643 			free((yyvsp[0].str));
5644 #ifdef USE_IPSET
5645 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
5646 			size_t len = strlen((yyvsp[-1].str));
5647 			/* Make sure to add the trailing dot.
5648 			 * These are str compared to domain names. */
5649 			if((yyvsp[-1].str)[len-1] != '.') {
5650 				if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5651 					fatal_exit("out of memory adding local-zone");
5652 				}
5653 				(yyvsp[-1].str)[len] = '.';
5654 				(yyvsp[-1].str)[len+1] = 0;
5655 			}
5656 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5657 				local_zones_ipset, (yyvsp[-1].str)))
5658 				fatal_exit("out of memory adding local-zone");
5659 			free((yyvsp[0].str));
5660 #endif
5661 		} else {
5662 			if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5663 				(yyvsp[-1].str), (yyvsp[0].str)))
5664 				fatal_exit("out of memory adding local-zone");
5665 		}
5666 	}
5667 #line 5668 "util/configparser.c"
5668     break;
5669 
5670   case 533: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
5671 #line 2415 "util/configparser.y"
5672         {
5673 		OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5674 		if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5675 			fatal_exit("out of memory adding local-data");
5676 	}
5677 #line 5678 "util/configparser.c"
5678     break;
5679 
5680   case 534: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
5681 #line 2422 "util/configparser.y"
5682         {
5683 		char* ptr;
5684 		OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5685 		ptr = cfg_ptr_reverse((yyvsp[0].str));
5686 		free((yyvsp[0].str));
5687 		if(ptr) {
5688 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5689 				local_data, ptr))
5690 				fatal_exit("out of memory adding local-data");
5691 		} else {
5692 			yyerror("local-data-ptr could not be reversed");
5693 		}
5694 	}
5695 #line 5696 "util/configparser.c"
5696     break;
5697 
5698   case 535: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
5699 #line 2437 "util/configparser.y"
5700         {
5701 		OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5702 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5703 			yyerror("expected yes or no.");
5704 		else cfg_parser->cfg->minimal_responses =
5705 			(strcmp((yyvsp[0].str), "yes")==0);
5706 		free((yyvsp[0].str));
5707 	}
5708 #line 5709 "util/configparser.c"
5709     break;
5710 
5711   case 536: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
5712 #line 2447 "util/configparser.y"
5713         {
5714 		OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5715 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5716 			yyerror("expected yes or no.");
5717 		else cfg_parser->cfg->rrset_roundrobin =
5718 			(strcmp((yyvsp[0].str), "yes")==0);
5719 		free((yyvsp[0].str));
5720 	}
5721 #line 5722 "util/configparser.c"
5722     break;
5723 
5724   case 537: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
5725 #line 2457 "util/configparser.y"
5726         {
5727 		OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5728 		cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5729 		free((yyvsp[0].str));
5730 	}
5731 #line 5732 "util/configparser.c"
5732     break;
5733 
5734   case 538: /* server_discard_timeout: VAR_DISCARD_TIMEOUT STRING_ARG  */
5735 #line 2464 "util/configparser.y"
5736         {
5737 		OUTYY(("P(server_discard_timeout:%s)\n", (yyvsp[0].str)));
5738 		cfg_parser->cfg->discard_timeout = atoi((yyvsp[0].str));
5739 		free((yyvsp[0].str));
5740 	}
5741 #line 5742 "util/configparser.c"
5742     break;
5743 
5744   case 539: /* server_wait_limit: VAR_WAIT_LIMIT STRING_ARG  */
5745 #line 2471 "util/configparser.y"
5746         {
5747 		OUTYY(("P(server_wait_limit:%s)\n", (yyvsp[0].str)));
5748 		cfg_parser->cfg->wait_limit = atoi((yyvsp[0].str));
5749 		free((yyvsp[0].str));
5750 	}
5751 #line 5752 "util/configparser.c"
5752     break;
5753 
5754   case 540: /* server_wait_limit_cookie: VAR_WAIT_LIMIT_COOKIE STRING_ARG  */
5755 #line 2478 "util/configparser.y"
5756         {
5757 		OUTYY(("P(server_wait_limit_cookie:%s)\n", (yyvsp[0].str)));
5758 		cfg_parser->cfg->wait_limit_cookie = atoi((yyvsp[0].str));
5759 		free((yyvsp[0].str));
5760 	}
5761 #line 5762 "util/configparser.c"
5762     break;
5763 
5764   case 541: /* server_wait_limit_netblock: VAR_WAIT_LIMIT_NETBLOCK STRING_ARG STRING_ARG  */
5765 #line 2485 "util/configparser.y"
5766         {
5767 		OUTYY(("P(server_wait_limit_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5768 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5769 			yyerror("number expected");
5770 			free((yyvsp[-1].str));
5771 			free((yyvsp[0].str));
5772 		} else {
5773 			if(!cfg_str2list_insert(&cfg_parser->cfg->
5774 				wait_limit_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5775 				fatal_exit("out of memory adding "
5776 					"wait-limit-netblock");
5777 		}
5778 	}
5779 #line 5780 "util/configparser.c"
5780     break;
5781 
5782   case 542: /* server_wait_limit_cookie_netblock: VAR_WAIT_LIMIT_COOKIE_NETBLOCK STRING_ARG STRING_ARG  */
5783 #line 2500 "util/configparser.y"
5784         {
5785 		OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5786 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5787 			yyerror("number expected");
5788 			free((yyvsp[-1].str));
5789 			free((yyvsp[0].str));
5790 		} else {
5791 			if(!cfg_str2list_insert(&cfg_parser->cfg->
5792 				wait_limit_cookie_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5793 				fatal_exit("out of memory adding "
5794 					"wait-limit-cookie-netblock");
5795 		}
5796 	}
5797 #line 5798 "util/configparser.c"
5798     break;
5799 
5800   case 543: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
5801 #line 2515 "util/configparser.y"
5802         {
5803 		OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5804 		cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5805 		free((yyvsp[0].str));
5806 	}
5807 #line 5808 "util/configparser.c"
5808     break;
5809 
5810   case 544: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
5811 #line 2522 "util/configparser.y"
5812         {
5813 		OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5814 		free(cfg_parser->cfg->dns64_prefix);
5815 		cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5816 	}
5817 #line 5818 "util/configparser.c"
5818     break;
5819 
5820   case 545: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
5821 #line 2529 "util/configparser.y"
5822         {
5823 		OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5824 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5825 			yyerror("expected yes or no.");
5826 		else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5827 		free((yyvsp[0].str));
5828 	}
5829 #line 5830 "util/configparser.c"
5830     break;
5831 
5832   case 546: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
5833 #line 2538 "util/configparser.y"
5834         {
5835 		OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5836 		if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5837 			(yyvsp[0].str)))
5838 			fatal_exit("out of memory adding dns64-ignore-aaaa");
5839 	}
5840 #line 5841 "util/configparser.c"
5841     break;
5842 
5843   case 547: /* server_nat64_prefix: VAR_NAT64_PREFIX STRING_ARG  */
5844 #line 2546 "util/configparser.y"
5845         {
5846 		OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
5847 		free(cfg_parser->cfg->nat64_prefix);
5848 		cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
5849 	}
5850 #line 5851 "util/configparser.c"
5851     break;
5852 
5853   case 548: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
5854 #line 2553 "util/configparser.y"
5855         {
5856 		char* p, *s = (yyvsp[0].str);
5857 		OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5858 		while((p=strsep(&s, " \t\n")) != NULL) {
5859 			if(*p) {
5860 				if(!config_add_tag(cfg_parser->cfg, p))
5861 					yyerror("could not define-tag, "
5862 						"out of memory");
5863 			}
5864 		}
5865 		free((yyvsp[0].str));
5866 	}
5867 #line 5868 "util/configparser.c"
5868     break;
5869 
5870   case 549: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
5871 #line 2567 "util/configparser.y"
5872         {
5873 		size_t len = 0;
5874 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5875 			&len);
5876 		free((yyvsp[0].str));
5877 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5878 		if(!bitlist) {
5879 			yyerror("could not parse tags, (define-tag them first)");
5880 			free((yyvsp[-1].str));
5881 		}
5882 		if(bitlist) {
5883 			if(!cfg_strbytelist_insert(
5884 				&cfg_parser->cfg->local_zone_tags,
5885 				(yyvsp[-1].str), bitlist, len)) {
5886 				yyerror("out of memory");
5887 				free((yyvsp[-1].str));
5888 			}
5889 		}
5890 	}
5891 #line 5892 "util/configparser.c"
5892     break;
5893 
5894   case 550: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
5895 #line 2588 "util/configparser.y"
5896         {
5897 		size_t len = 0;
5898 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5899 			&len);
5900 		free((yyvsp[0].str));
5901 		OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5902 		if(!bitlist) {
5903 			yyerror("could not parse tags, (define-tag them first)");
5904 			free((yyvsp[-1].str));
5905 		}
5906 		if(bitlist) {
5907 			if(!cfg_strbytelist_insert(
5908 				&cfg_parser->cfg->acl_tags,
5909 				(yyvsp[-1].str), bitlist, len)) {
5910 				yyerror("out of memory");
5911 				free((yyvsp[-1].str));
5912 			}
5913 		}
5914 	}
5915 #line 5916 "util/configparser.c"
5916     break;
5917 
5918   case 551: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
5919 #line 2609 "util/configparser.y"
5920         {
5921 		OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5922 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5923 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5924 			yyerror("out of memory");
5925 			free((yyvsp[-2].str));
5926 			free((yyvsp[-1].str));
5927 			free((yyvsp[0].str));
5928 		}
5929 	}
5930 #line 5931 "util/configparser.c"
5931     break;
5932 
5933   case 552: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
5934 #line 2621 "util/configparser.y"
5935         {
5936 		OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5937 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
5938 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5939 			yyerror("out of memory");
5940 			free((yyvsp[-2].str));
5941 			free((yyvsp[-1].str));
5942 			free((yyvsp[0].str));
5943 		}
5944 	}
5945 #line 5946 "util/configparser.c"
5946     break;
5947 
5948   case 553: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
5949 #line 2633 "util/configparser.y"
5950         {
5951 		OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5952 		if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
5953 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5954 			yyerror("out of memory");
5955 			free((yyvsp[-2].str));
5956 			free((yyvsp[-1].str));
5957 			free((yyvsp[0].str));
5958 		}
5959 	}
5960 #line 5961 "util/configparser.c"
5961     break;
5962 
5963   case 554: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
5964 #line 2645 "util/configparser.y"
5965         {
5966 		OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5967 		if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
5968 			(yyvsp[-1].str), (yyvsp[0].str))) {
5969 			yyerror("out of memory");
5970 		}
5971 	}
5972 #line 5973 "util/configparser.c"
5973     break;
5974 
5975   case 555: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG  */
5976 #line 2654 "util/configparser.y"
5977         {
5978 		size_t len = 0;
5979 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5980 			&len);
5981 		free((yyvsp[0].str));
5982 		OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
5983 		if(!bitlist) {
5984 			yyerror("could not parse tags, (define-tag them first)");
5985 			free((yyvsp[-1].str));
5986 		}
5987 		if(bitlist) {
5988 			if(!cfg_strbytelist_insert(
5989 				&cfg_parser->cfg->interface_tags,
5990 				(yyvsp[-1].str), bitlist, len)) {
5991 				yyerror("out of memory");
5992 				free((yyvsp[-1].str));
5993 			}
5994 		}
5995 	}
5996 #line 5997 "util/configparser.c"
5997     break;
5998 
5999   case 556: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
6000 #line 2675 "util/configparser.y"
6001         {
6002 		OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6003 		if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
6004 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6005 			yyerror("out of memory");
6006 			free((yyvsp[-2].str));
6007 			free((yyvsp[-1].str));
6008 			free((yyvsp[0].str));
6009 		}
6010 	}
6011 #line 6012 "util/configparser.c"
6012     break;
6013 
6014   case 557: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
6015 #line 2687 "util/configparser.y"
6016         {
6017 		OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6018 		if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
6019 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6020 			yyerror("out of memory");
6021 			free((yyvsp[-2].str));
6022 			free((yyvsp[-1].str));
6023 			free((yyvsp[0].str));
6024 		}
6025 	}
6026 #line 6027 "util/configparser.c"
6027     break;
6028 
6029   case 558: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG  */
6030 #line 2699 "util/configparser.y"
6031         {
6032 		OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6033 		if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
6034 			(yyvsp[-1].str), (yyvsp[0].str))) {
6035 			yyerror("out of memory");
6036 		}
6037 	}
6038 #line 6039 "util/configparser.c"
6039     break;
6040 
6041   case 559: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
6042 #line 2708 "util/configparser.y"
6043         {
6044 		size_t len = 0;
6045 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6046 			&len);
6047 		free((yyvsp[0].str));
6048 		OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6049 		if(!bitlist) {
6050 			yyerror("could not parse tags, (define-tag them first)");
6051 			free((yyvsp[-1].str));
6052 		}
6053 		if(bitlist) {
6054 			if(!cfg_strbytelist_insert(
6055 				&cfg_parser->cfg->respip_tags,
6056 				(yyvsp[-1].str), bitlist, len)) {
6057 				yyerror("out of memory");
6058 				free((yyvsp[-1].str));
6059 			}
6060 		}
6061 	}
6062 #line 6063 "util/configparser.c"
6063     break;
6064 
6065   case 560: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
6066 #line 2729 "util/configparser.y"
6067         {
6068 		OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6069 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6070 			yyerror("number expected");
6071 		else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6072 		free((yyvsp[0].str));
6073 	}
6074 #line 6075 "util/configparser.c"
6075     break;
6076 
6077   case 561: /* server_ip_ratelimit_cookie: VAR_IP_RATELIMIT_COOKIE STRING_ARG  */
6078 #line 2738 "util/configparser.y"
6079         {
6080 		OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", (yyvsp[0].str)));
6081 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6082 			yyerror("number expected");
6083 		else cfg_parser->cfg->ip_ratelimit_cookie = atoi((yyvsp[0].str));
6084 		free((yyvsp[0].str));
6085 	}
6086 #line 6087 "util/configparser.c"
6087     break;
6088 
6089   case 562: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
6090 #line 2747 "util/configparser.y"
6091         {
6092 		OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6093 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6094 			yyerror("number expected");
6095 		else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6096 		free((yyvsp[0].str));
6097 	}
6098 #line 6099 "util/configparser.c"
6099     break;
6100 
6101   case 563: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
6102 #line 2756 "util/configparser.y"
6103         {
6104 		OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6105 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6106 			yyerror("memory size expected");
6107 		free((yyvsp[0].str));
6108 	}
6109 #line 6110 "util/configparser.c"
6110     break;
6111 
6112   case 564: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
6113 #line 2764 "util/configparser.y"
6114         {
6115 		OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6116 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6117 			yyerror("memory size expected");
6118 		free((yyvsp[0].str));
6119 	}
6120 #line 6121 "util/configparser.c"
6121     break;
6122 
6123   case 565: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
6124 #line 2772 "util/configparser.y"
6125         {
6126 		OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6127 		if(atoi((yyvsp[0].str)) == 0) {
6128 			yyerror("number expected");
6129 		} else {
6130 			cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6131 			if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6132 				yyerror("must be a power of 2");
6133 		}
6134 		free((yyvsp[0].str));
6135 	}
6136 #line 6137 "util/configparser.c"
6137     break;
6138 
6139   case 566: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
6140 #line 2785 "util/configparser.y"
6141         {
6142 		OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6143 		if(atoi((yyvsp[0].str)) == 0) {
6144 			yyerror("number expected");
6145 		} else {
6146 			cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6147 			if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6148 				yyerror("must be a power of 2");
6149 		}
6150 		free((yyvsp[0].str));
6151 	}
6152 #line 6153 "util/configparser.c"
6153     break;
6154 
6155   case 567: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
6156 #line 2798 "util/configparser.y"
6157         {
6158 		OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6159 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6160 			yyerror("number expected");
6161 			free((yyvsp[-1].str));
6162 			free((yyvsp[0].str));
6163 		} else {
6164 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6165 				ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6166 				fatal_exit("out of memory adding "
6167 					"ratelimit-for-domain");
6168 		}
6169 	}
6170 #line 6171 "util/configparser.c"
6171     break;
6172 
6173   case 568: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
6174 #line 2813 "util/configparser.y"
6175         {
6176 		OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6177 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6178 			yyerror("number expected");
6179 			free((yyvsp[-1].str));
6180 			free((yyvsp[0].str));
6181 		} else {
6182 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6183 				ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6184 				fatal_exit("out of memory adding "
6185 					"ratelimit-below-domain");
6186 		}
6187 	}
6188 #line 6189 "util/configparser.c"
6189     break;
6190 
6191   case 569: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
6192 #line 2828 "util/configparser.y"
6193         {
6194 		OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6195 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6196 			yyerror("number expected");
6197 		else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6198 		free((yyvsp[0].str));
6199 	}
6200 #line 6201 "util/configparser.c"
6201     break;
6202 
6203   case 570: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
6204 #line 2837 "util/configparser.y"
6205         {
6206 		OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6207 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6208 			yyerror("number expected");
6209 		else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6210 		free((yyvsp[0].str));
6211 	}
6212 #line 6213 "util/configparser.c"
6213     break;
6214 
6215   case 571: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG  */
6216 #line 2846 "util/configparser.y"
6217         {
6218 		OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6219 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6220 			yyerror("expected yes or no.");
6221 		else cfg_parser->cfg->ip_ratelimit_backoff =
6222 			(strcmp((yyvsp[0].str), "yes")==0);
6223 		free((yyvsp[0].str));
6224 	}
6225 #line 6226 "util/configparser.c"
6226     break;
6227 
6228   case 572: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG  */
6229 #line 2856 "util/configparser.y"
6230         {
6231 		OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6232 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6233 			yyerror("expected yes or no.");
6234 		else cfg_parser->cfg->ratelimit_backoff =
6235 			(strcmp((yyvsp[0].str), "yes")==0);
6236 		free((yyvsp[0].str));
6237 	}
6238 #line 6239 "util/configparser.c"
6239     break;
6240 
6241   case 573: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG  */
6242 #line 2866 "util/configparser.y"
6243         {
6244 		OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6245 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6246 			yyerror("number expected");
6247 		else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6248 		free((yyvsp[0].str));
6249 	}
6250 #line 6251 "util/configparser.c"
6251     break;
6252 
6253   case 574: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG  */
6254 #line 2875 "util/configparser.y"
6255         {
6256 		OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6257 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6258 			yyerror("number expected");
6259 		else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6260 		free((yyvsp[0].str));
6261 	}
6262 #line 6263 "util/configparser.c"
6263     break;
6264 
6265   case 575: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG  */
6266 #line 2884 "util/configparser.y"
6267         {
6268 		OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6269 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6270 			yyerror("number expected");
6271 		else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6272 		free((yyvsp[0].str));
6273 	}
6274 #line 6275 "util/configparser.c"
6275     break;
6276 
6277   case 576: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
6278 #line 2893 "util/configparser.y"
6279         {
6280 		OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6281 		free((yyvsp[0].str));
6282 	}
6283 #line 6284 "util/configparser.c"
6284     break;
6285 
6286   case 577: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
6287 #line 2899 "util/configparser.y"
6288         {
6289 		OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6290 		if(atoi((yyvsp[0].str)) <= 0)
6291 			yyerror("number expected");
6292 		else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6293 		free((yyvsp[0].str));
6294 	}
6295 #line 6296 "util/configparser.c"
6296     break;
6297 
6298   case 578: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
6299 #line 2908 "util/configparser.y"
6300         {
6301 		OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6302 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6303 			yyerror("number expected");
6304 		else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6305 		free((yyvsp[0].str));
6306 	}
6307 #line 6308 "util/configparser.c"
6308     break;
6309 
6310   case 579: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
6311 #line 2917 "util/configparser.y"
6312         {
6313 		OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6314 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6315 			yyerror("expected yes or no.");
6316 		else cfg_parser->cfg->qname_minimisation =
6317 			(strcmp((yyvsp[0].str), "yes")==0);
6318 		free((yyvsp[0].str));
6319 	}
6320 #line 6321 "util/configparser.c"
6321     break;
6322 
6323   case 580: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
6324 #line 2927 "util/configparser.y"
6325         {
6326 		OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6327 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6328 			yyerror("expected yes or no.");
6329 		else cfg_parser->cfg->qname_minimisation_strict =
6330 			(strcmp((yyvsp[0].str), "yes")==0);
6331 		free((yyvsp[0].str));
6332 	}
6333 #line 6334 "util/configparser.c"
6334     break;
6335 
6336   case 581: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
6337 #line 2937 "util/configparser.y"
6338         {
6339 		OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6340 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6341 			yyerror("expected yes or no.");
6342 		else cfg_parser->cfg->pad_responses =
6343 			(strcmp((yyvsp[0].str), "yes")==0);
6344 		free((yyvsp[0].str));
6345 	}
6346 #line 6347 "util/configparser.c"
6347     break;
6348 
6349   case 582: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
6350 #line 2947 "util/configparser.y"
6351         {
6352 		OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6353 		if(atoi((yyvsp[0].str)) == 0)
6354 			yyerror("number expected");
6355 		else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6356 		free((yyvsp[0].str));
6357 	}
6358 #line 6359 "util/configparser.c"
6359     break;
6360 
6361   case 583: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
6362 #line 2956 "util/configparser.y"
6363         {
6364 		OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6365 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6366 			yyerror("expected yes or no.");
6367 		else cfg_parser->cfg->pad_queries =
6368 			(strcmp((yyvsp[0].str), "yes")==0);
6369 		free((yyvsp[0].str));
6370 	}
6371 #line 6372 "util/configparser.c"
6372     break;
6373 
6374   case 584: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
6375 #line 2966 "util/configparser.y"
6376         {
6377 		OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6378 		if(atoi((yyvsp[0].str)) == 0)
6379 			yyerror("number expected");
6380 		else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6381 		free((yyvsp[0].str));
6382 	}
6383 #line 6384 "util/configparser.c"
6384     break;
6385 
6386   case 585: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
6387 #line 2975 "util/configparser.y"
6388         {
6389 	#ifdef USE_IPSECMOD
6390 		OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6391 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6392 			yyerror("expected yes or no.");
6393 		else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6394 	#else
6395 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6396 	#endif
6397 		free((yyvsp[0].str));
6398 	}
6399 #line 6400 "util/configparser.c"
6400     break;
6401 
6402   case 586: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
6403 #line 2988 "util/configparser.y"
6404         {
6405 	#ifdef USE_IPSECMOD
6406 		OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6407 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6408 			yyerror("expected yes or no.");
6409 		else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6410 	#else
6411 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6412 	#endif
6413 		free((yyvsp[0].str));
6414 	}
6415 #line 6416 "util/configparser.c"
6416     break;
6417 
6418   case 587: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
6419 #line 3001 "util/configparser.y"
6420         {
6421 	#ifdef USE_IPSECMOD
6422 		OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6423 		free(cfg_parser->cfg->ipsecmod_hook);
6424 		cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6425 	#else
6426 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6427 		free((yyvsp[0].str));
6428 	#endif
6429 	}
6430 #line 6431 "util/configparser.c"
6431     break;
6432 
6433   case 588: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
6434 #line 3013 "util/configparser.y"
6435         {
6436 	#ifdef USE_IPSECMOD
6437 		OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6438 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6439 			yyerror("number expected");
6440 		else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6441 		free((yyvsp[0].str));
6442 	#else
6443 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6444 		free((yyvsp[0].str));
6445 	#endif
6446 	}
6447 #line 6448 "util/configparser.c"
6448     break;
6449 
6450   case 589: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
6451 #line 3027 "util/configparser.y"
6452         {
6453 	#ifdef USE_IPSECMOD
6454 		OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6455 		if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6456 			yyerror("out of memory");
6457 	#else
6458 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6459 		free((yyvsp[0].str));
6460 	#endif
6461 	}
6462 #line 6463 "util/configparser.c"
6463     break;
6464 
6465   case 590: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
6466 #line 3039 "util/configparser.y"
6467         {
6468 	#ifdef USE_IPSECMOD
6469 		OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6470 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6471 			yyerror("expected yes or no.");
6472 		else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6473 		free((yyvsp[0].str));
6474 	#else
6475 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6476 		free((yyvsp[0].str));
6477 	#endif
6478 	}
6479 #line 6480 "util/configparser.c"
6480     break;
6481 
6482   case 591: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
6483 #line 3053 "util/configparser.y"
6484         {
6485 		OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6486 		if(!cfg_str2list_insert(
6487 			&cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6488 			fatal_exit("out of memory adding "
6489 				"edns-client-string");
6490 	}
6491 #line 6492 "util/configparser.c"
6492     break;
6493 
6494   case 592: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
6495 #line 3062 "util/configparser.y"
6496         {
6497 		OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6498 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6499 			yyerror("option code expected");
6500 		else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6501 			yyerror("option code must be in interval [0, 65535]");
6502 		else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6503 		free((yyvsp[0].str));
6504 	}
6505 #line 6506 "util/configparser.c"
6506     break;
6507 
6508   case 593: /* server_ede: VAR_EDE STRING_ARG  */
6509 #line 3073 "util/configparser.y"
6510         {
6511 		OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6512 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6513 			yyerror("expected yes or no.");
6514 		else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6515 		free((yyvsp[0].str));
6516 	}
6517 #line 6518 "util/configparser.c"
6518     break;
6519 
6520   case 594: /* server_dns_error_reporting: VAR_DNS_ERROR_REPORTING STRING_ARG  */
6521 #line 3082 "util/configparser.y"
6522         {
6523 		OUTYY(("P(server_dns_error_reporting:%s)\n", (yyvsp[0].str)));
6524 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6525 			yyerror("expected yes or no.");
6526 		else cfg_parser->cfg->dns_error_reporting = (strcmp((yyvsp[0].str), "yes")==0);
6527 		free((yyvsp[0].str));
6528 	}
6529 #line 6530 "util/configparser.c"
6530     break;
6531 
6532   case 595: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG  */
6533 #line 3091 "util/configparser.y"
6534         {
6535 		OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6536 		if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6537 			yyerror("out of memory");
6538 	}
6539 #line 6540 "util/configparser.c"
6540     break;
6541 
6542   case 596: /* stub_name: VAR_NAME STRING_ARG  */
6543 #line 3098 "util/configparser.y"
6544         {
6545 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6546 		if(cfg_parser->cfg->stubs->name)
6547 			yyerror("stub name override, there must be one name "
6548 				"for one stub-zone");
6549 		free(cfg_parser->cfg->stubs->name);
6550 		cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6551 	}
6552 #line 6553 "util/configparser.c"
6553     break;
6554 
6555   case 597: /* stub_host: VAR_STUB_HOST STRING_ARG  */
6556 #line 3108 "util/configparser.y"
6557         {
6558 		OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6559 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6560 			yyerror("out of memory");
6561 	}
6562 #line 6563 "util/configparser.c"
6563     break;
6564 
6565   case 598: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
6566 #line 3115 "util/configparser.y"
6567         {
6568 		OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6569 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6570 			yyerror("out of memory");
6571 	}
6572 #line 6573 "util/configparser.c"
6573     break;
6574 
6575   case 599: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
6576 #line 3122 "util/configparser.y"
6577         {
6578 		OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6579 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6580 			yyerror("expected yes or no.");
6581 		else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6582 		free((yyvsp[0].str));
6583 	}
6584 #line 6585 "util/configparser.c"
6585     break;
6586 
6587   case 600: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
6588 #line 3131 "util/configparser.y"
6589         {
6590 		OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6591 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6592 			yyerror("expected yes or no.");
6593 		else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6594 		free((yyvsp[0].str));
6595 	}
6596 #line 6597 "util/configparser.c"
6597     break;
6598 
6599   case 601: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
6600 #line 3140 "util/configparser.y"
6601         {
6602 		OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6603 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6604 			yyerror("expected yes or no.");
6605 		else cfg_parser->cfg->stubs->ssl_upstream =
6606 			(strcmp((yyvsp[0].str), "yes")==0);
6607 		free((yyvsp[0].str));
6608 	}
6609 #line 6610 "util/configparser.c"
6610     break;
6611 
6612   case 602: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG  */
6613 #line 3150 "util/configparser.y"
6614         {
6615                 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6616                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6617                         yyerror("expected yes or no.");
6618                 else cfg_parser->cfg->stubs->tcp_upstream =
6619                         (strcmp((yyvsp[0].str), "yes")==0);
6620                 free((yyvsp[0].str));
6621         }
6622 #line 6623 "util/configparser.c"
6623     break;
6624 
6625   case 603: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
6626 #line 3160 "util/configparser.y"
6627         {
6628 		OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6629 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6630 			yyerror("expected yes or no.");
6631 		else cfg_parser->cfg->stubs->isprime =
6632 			(strcmp((yyvsp[0].str), "yes")==0);
6633 		free((yyvsp[0].str));
6634 	}
6635 #line 6636 "util/configparser.c"
6636     break;
6637 
6638   case 604: /* forward_name: VAR_NAME STRING_ARG  */
6639 #line 3170 "util/configparser.y"
6640         {
6641 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6642 		if(cfg_parser->cfg->forwards->name)
6643 			yyerror("forward name override, there must be one "
6644 				"name for one forward-zone");
6645 		free(cfg_parser->cfg->forwards->name);
6646 		cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6647 	}
6648 #line 6649 "util/configparser.c"
6649     break;
6650 
6651   case 605: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
6652 #line 3180 "util/configparser.y"
6653         {
6654 		OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6655 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6656 			yyerror("out of memory");
6657 	}
6658 #line 6659 "util/configparser.c"
6659     break;
6660 
6661   case 606: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
6662 #line 3187 "util/configparser.y"
6663         {
6664 		OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6665 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6666 			yyerror("out of memory");
6667 	}
6668 #line 6669 "util/configparser.c"
6669     break;
6670 
6671   case 607: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
6672 #line 3194 "util/configparser.y"
6673         {
6674 		OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6675 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6676 			yyerror("expected yes or no.");
6677 		else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6678 		free((yyvsp[0].str));
6679 	}
6680 #line 6681 "util/configparser.c"
6681     break;
6682 
6683   case 608: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
6684 #line 3203 "util/configparser.y"
6685         {
6686 		OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6687 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6688 			yyerror("expected yes or no.");
6689 		else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6690 		free((yyvsp[0].str));
6691 	}
6692 #line 6693 "util/configparser.c"
6693     break;
6694 
6695   case 609: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
6696 #line 3212 "util/configparser.y"
6697         {
6698 		OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6699 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6700 			yyerror("expected yes or no.");
6701 		else cfg_parser->cfg->forwards->ssl_upstream =
6702 			(strcmp((yyvsp[0].str), "yes")==0);
6703 		free((yyvsp[0].str));
6704 	}
6705 #line 6706 "util/configparser.c"
6706     break;
6707 
6708   case 610: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG  */
6709 #line 3222 "util/configparser.y"
6710         {
6711                 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6712                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6713                         yyerror("expected yes or no.");
6714                 else cfg_parser->cfg->forwards->tcp_upstream =
6715                         (strcmp((yyvsp[0].str), "yes")==0);
6716                 free((yyvsp[0].str));
6717         }
6718 #line 6719 "util/configparser.c"
6719     break;
6720 
6721   case 611: /* auth_name: VAR_NAME STRING_ARG  */
6722 #line 3232 "util/configparser.y"
6723         {
6724 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6725 		if(cfg_parser->cfg->auths->name)
6726 			yyerror("auth name override, there must be one name "
6727 				"for one auth-zone");
6728 		free(cfg_parser->cfg->auths->name);
6729 		cfg_parser->cfg->auths->name = (yyvsp[0].str);
6730 	}
6731 #line 6732 "util/configparser.c"
6732     break;
6733 
6734   case 612: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
6735 #line 3242 "util/configparser.y"
6736         {
6737 		OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6738 		free(cfg_parser->cfg->auths->zonefile);
6739 		cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6740 	}
6741 #line 6742 "util/configparser.c"
6742     break;
6743 
6744   case 613: /* auth_master: VAR_MASTER STRING_ARG  */
6745 #line 3249 "util/configparser.y"
6746         {
6747 		OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6748 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6749 			yyerror("out of memory");
6750 	}
6751 #line 6752 "util/configparser.c"
6752     break;
6753 
6754   case 614: /* auth_url: VAR_URL STRING_ARG  */
6755 #line 3256 "util/configparser.y"
6756         {
6757 		OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6758 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6759 			yyerror("out of memory");
6760 	}
6761 #line 6762 "util/configparser.c"
6762     break;
6763 
6764   case 615: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
6765 #line 3263 "util/configparser.y"
6766         {
6767 		OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6768 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6769 			(yyvsp[0].str)))
6770 			yyerror("out of memory");
6771 	}
6772 #line 6773 "util/configparser.c"
6773     break;
6774 
6775   case 616: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG  */
6776 #line 3271 "util/configparser.y"
6777         {
6778 		OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6779 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6780 			yyerror("expected yes or no.");
6781 		else cfg_parser->cfg->auths->zonemd_check =
6782 			(strcmp((yyvsp[0].str), "yes")==0);
6783 		free((yyvsp[0].str));
6784 	}
6785 #line 6786 "util/configparser.c"
6786     break;
6787 
6788   case 617: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
6789 #line 3281 "util/configparser.y"
6790         {
6791 		OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6792 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6793 			yyerror("expected yes or no.");
6794 		else cfg_parser->cfg->auths->zonemd_reject_absence =
6795 			(strcmp((yyvsp[0].str), "yes")==0);
6796 		free((yyvsp[0].str));
6797 	}
6798 #line 6799 "util/configparser.c"
6799     break;
6800 
6801   case 618: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
6802 #line 3291 "util/configparser.y"
6803         {
6804 		OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6805 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6806 			yyerror("expected yes or no.");
6807 		else cfg_parser->cfg->auths->for_downstream =
6808 			(strcmp((yyvsp[0].str), "yes")==0);
6809 		free((yyvsp[0].str));
6810 	}
6811 #line 6812 "util/configparser.c"
6812     break;
6813 
6814   case 619: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
6815 #line 3301 "util/configparser.y"
6816         {
6817 		OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6818 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6819 			yyerror("expected yes or no.");
6820 		else cfg_parser->cfg->auths->for_upstream =
6821 			(strcmp((yyvsp[0].str), "yes")==0);
6822 		free((yyvsp[0].str));
6823 	}
6824 #line 6825 "util/configparser.c"
6825     break;
6826 
6827   case 620: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
6828 #line 3311 "util/configparser.y"
6829         {
6830 		OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6831 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6832 			yyerror("expected yes or no.");
6833 		else cfg_parser->cfg->auths->fallback_enabled =
6834 			(strcmp((yyvsp[0].str), "yes")==0);
6835 		free((yyvsp[0].str));
6836 	}
6837 #line 6838 "util/configparser.c"
6838     break;
6839 
6840   case 621: /* view_name: VAR_NAME STRING_ARG  */
6841 #line 3321 "util/configparser.y"
6842         {
6843 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6844 		if(cfg_parser->cfg->views->name)
6845 			yyerror("view name override, there must be one "
6846 				"name for one view");
6847 		free(cfg_parser->cfg->views->name);
6848 		cfg_parser->cfg->views->name = (yyvsp[0].str);
6849 	}
6850 #line 6851 "util/configparser.c"
6851     break;
6852 
6853   case 622: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
6854 #line 3331 "util/configparser.y"
6855         {
6856 		OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6857 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6858 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6859 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6860 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
6861 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
6862 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
6863 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6864 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
6865 		   && strcmp((yyvsp[0].str), "always_deny")!=0
6866 		   && strcmp((yyvsp[0].str), "always_null")!=0
6867 		   && strcmp((yyvsp[0].str), "noview")!=0
6868 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6869 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
6870 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
6871 			yyerror("local-zone type: expected static, deny, "
6872 				"refuse, redirect, transparent, "
6873 				"typetransparent, inform, inform_deny, "
6874 				"inform_redirect, always_transparent, "
6875 				"always_refuse, always_nxdomain, "
6876 				"always_nodata, always_deny, always_null, "
6877 				"noview, nodefault or ipset");
6878 			free((yyvsp[-1].str));
6879 			free((yyvsp[0].str));
6880 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6881 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6882 				local_zones_nodefault, (yyvsp[-1].str)))
6883 				fatal_exit("out of memory adding local-zone");
6884 			free((yyvsp[0].str));
6885 #ifdef USE_IPSET
6886 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
6887 			size_t len = strlen((yyvsp[-1].str));
6888 			/* Make sure to add the trailing dot.
6889 			 * These are str compared to domain names. */
6890 			if((yyvsp[-1].str)[len-1] != '.') {
6891 				if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
6892 					fatal_exit("out of memory adding local-zone");
6893 				}
6894 				(yyvsp[-1].str)[len] = '.';
6895 				(yyvsp[-1].str)[len+1] = 0;
6896 			}
6897 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6898 				local_zones_ipset, (yyvsp[-1].str)))
6899 				fatal_exit("out of memory adding local-zone");
6900 			free((yyvsp[0].str));
6901 #endif
6902 		} else {
6903 			if(!cfg_str2list_insert(
6904 				&cfg_parser->cfg->views->local_zones,
6905 				(yyvsp[-1].str), (yyvsp[0].str)))
6906 				fatal_exit("out of memory adding local-zone");
6907 		}
6908 	}
6909 #line 6910 "util/configparser.c"
6910     break;
6911 
6912   case 623: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
6913 #line 3387 "util/configparser.y"
6914         {
6915 		OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6916 		validate_respip_action((yyvsp[0].str));
6917 		if(!cfg_str2list_insert(
6918 			&cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
6919 			fatal_exit("out of memory adding per-view "
6920 				"response-ip action");
6921 	}
6922 #line 6923 "util/configparser.c"
6923     break;
6924 
6925   case 624: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
6926 #line 3397 "util/configparser.y"
6927         {
6928 		OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
6929 		if(!cfg_str2list_insert(
6930 			&cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
6931 			fatal_exit("out of memory adding response-ip-data");
6932 	}
6933 #line 6934 "util/configparser.c"
6934     break;
6935 
6936   case 625: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
6937 #line 3405 "util/configparser.y"
6938         {
6939 		OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
6940 		if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
6941 			fatal_exit("out of memory adding local-data");
6942 		}
6943 	}
6944 #line 6945 "util/configparser.c"
6945     break;
6946 
6947   case 626: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
6948 #line 3413 "util/configparser.y"
6949         {
6950 		char* ptr;
6951 		OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
6952 		ptr = cfg_ptr_reverse((yyvsp[0].str));
6953 		free((yyvsp[0].str));
6954 		if(ptr) {
6955 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6956 				local_data, ptr))
6957 				fatal_exit("out of memory adding local-data");
6958 		} else {
6959 			yyerror("local-data-ptr could not be reversed");
6960 		}
6961 	}
6962 #line 6963 "util/configparser.c"
6963     break;
6964 
6965   case 627: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
6966 #line 3428 "util/configparser.y"
6967         {
6968 		OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
6969 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6970 			yyerror("expected yes or no.");
6971 		else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6972 		free((yyvsp[0].str));
6973 	}
6974 #line 6975 "util/configparser.c"
6975     break;
6976 
6977   case 628: /* rcstart: VAR_REMOTE_CONTROL  */
6978 #line 3437 "util/configparser.y"
6979         {
6980 		OUTYY(("\nP(remote-control:)\n"));
6981 		cfg_parser->started_toplevel = 1;
6982 	}
6983 #line 6984 "util/configparser.c"
6984     break;
6985 
6986   case 639: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
6987 #line 3449 "util/configparser.y"
6988         {
6989 		OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
6990 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6991 			yyerror("expected yes or no.");
6992 		else cfg_parser->cfg->remote_control_enable =
6993 			(strcmp((yyvsp[0].str), "yes")==0);
6994 		free((yyvsp[0].str));
6995 	}
6996 #line 6997 "util/configparser.c"
6997     break;
6998 
6999   case 640: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
7000 #line 3459 "util/configparser.y"
7001         {
7002 		OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
7003 		if(atoi((yyvsp[0].str)) == 0)
7004 			yyerror("control port number expected");
7005 		else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
7006 		free((yyvsp[0].str));
7007 	}
7008 #line 7009 "util/configparser.c"
7009     break;
7010 
7011   case 641: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
7012 #line 3468 "util/configparser.y"
7013         {
7014 		OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
7015 		if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
7016 			yyerror("out of memory");
7017 	}
7018 #line 7019 "util/configparser.c"
7019     break;
7020 
7021   case 642: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
7022 #line 3475 "util/configparser.y"
7023         {
7024 		OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
7025 		cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
7026 		free((yyvsp[0].str));
7027 	}
7028 #line 7029 "util/configparser.c"
7029     break;
7030 
7031   case 643: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
7032 #line 3482 "util/configparser.y"
7033         {
7034 		OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
7035 		free(cfg_parser->cfg->server_key_file);
7036 		cfg_parser->cfg->server_key_file = (yyvsp[0].str);
7037 	}
7038 #line 7039 "util/configparser.c"
7039     break;
7040 
7041   case 644: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
7042 #line 3489 "util/configparser.y"
7043         {
7044 		OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
7045 		free(cfg_parser->cfg->server_cert_file);
7046 		cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
7047 	}
7048 #line 7049 "util/configparser.c"
7049     break;
7050 
7051   case 645: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
7052 #line 3496 "util/configparser.y"
7053         {
7054 		OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
7055 		free(cfg_parser->cfg->control_key_file);
7056 		cfg_parser->cfg->control_key_file = (yyvsp[0].str);
7057 	}
7058 #line 7059 "util/configparser.c"
7059     break;
7060 
7061   case 646: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
7062 #line 3503 "util/configparser.y"
7063         {
7064 		OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
7065 		free(cfg_parser->cfg->control_cert_file);
7066 		cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
7067 	}
7068 #line 7069 "util/configparser.c"
7069     break;
7070 
7071   case 647: /* dtstart: VAR_DNSTAP  */
7072 #line 3510 "util/configparser.y"
7073         {
7074 		OUTYY(("\nP(dnstap:)\n"));
7075 		cfg_parser->started_toplevel = 1;
7076 	}
7077 #line 7078 "util/configparser.c"
7078     break;
7079 
7080   case 670: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
7081 #line 3532 "util/configparser.y"
7082         {
7083 		OUTYY(("P(dt_dnstap_enable:%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 = (strcmp((yyvsp[0].str), "yes")==0);
7087 		free((yyvsp[0].str));
7088 	}
7089 #line 7090 "util/configparser.c"
7090     break;
7091 
7092   case 671: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
7093 #line 3541 "util/configparser.y"
7094         {
7095 		OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7096 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7097 			yyerror("expected yes or no.");
7098 		else cfg_parser->cfg->dnstap_bidirectional =
7099 			(strcmp((yyvsp[0].str), "yes")==0);
7100 		free((yyvsp[0].str));
7101 	}
7102 #line 7103 "util/configparser.c"
7103     break;
7104 
7105   case 672: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
7106 #line 3551 "util/configparser.y"
7107         {
7108 		OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7109 		free(cfg_parser->cfg->dnstap_socket_path);
7110 		cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7111 	}
7112 #line 7113 "util/configparser.c"
7113     break;
7114 
7115   case 673: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
7116 #line 3558 "util/configparser.y"
7117         {
7118 		OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7119 		free(cfg_parser->cfg->dnstap_ip);
7120 		cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7121 	}
7122 #line 7123 "util/configparser.c"
7123     break;
7124 
7125   case 674: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
7126 #line 3565 "util/configparser.y"
7127         {
7128 		OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7129 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7130 			yyerror("expected yes or no.");
7131 		else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7132 		free((yyvsp[0].str));
7133 	}
7134 #line 7135 "util/configparser.c"
7135     break;
7136 
7137   case 675: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
7138 #line 3574 "util/configparser.y"
7139         {
7140 		OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7141 		free(cfg_parser->cfg->dnstap_tls_server_name);
7142 		cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7143 	}
7144 #line 7145 "util/configparser.c"
7145     break;
7146 
7147   case 676: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
7148 #line 3581 "util/configparser.y"
7149         {
7150 		OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7151 		free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7152 		cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7153 	}
7154 #line 7155 "util/configparser.c"
7155     break;
7156 
7157   case 677: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
7158 #line 3588 "util/configparser.y"
7159         {
7160 		OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7161 		free(cfg_parser->cfg->dnstap_tls_client_key_file);
7162 		cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7163 	}
7164 #line 7165 "util/configparser.c"
7165     break;
7166 
7167   case 678: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
7168 #line 3595 "util/configparser.y"
7169         {
7170 		OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7171 		free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7172 		cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7173 	}
7174 #line 7175 "util/configparser.c"
7175     break;
7176 
7177   case 679: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
7178 #line 3602 "util/configparser.y"
7179         {
7180 		OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7181 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7182 			yyerror("expected yes or no.");
7183 		else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7184 		free((yyvsp[0].str));
7185 	}
7186 #line 7187 "util/configparser.c"
7187     break;
7188 
7189   case 680: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
7190 #line 3611 "util/configparser.y"
7191         {
7192 		OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7193 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7194 			yyerror("expected yes or no.");
7195 		else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7196 		free((yyvsp[0].str));
7197 	}
7198 #line 7199 "util/configparser.c"
7199     break;
7200 
7201   case 681: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
7202 #line 3620 "util/configparser.y"
7203         {
7204 		OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7205 		free(cfg_parser->cfg->dnstap_identity);
7206 		cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7207 	}
7208 #line 7209 "util/configparser.c"
7209     break;
7210 
7211   case 682: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
7212 #line 3627 "util/configparser.y"
7213         {
7214 		OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7215 		free(cfg_parser->cfg->dnstap_version);
7216 		cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7217 	}
7218 #line 7219 "util/configparser.c"
7219     break;
7220 
7221   case 683: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
7222 #line 3634 "util/configparser.y"
7223         {
7224 		OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7225 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7226 			yyerror("expected yes or no.");
7227 		else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7228 			(strcmp((yyvsp[0].str), "yes")==0);
7229 		free((yyvsp[0].str));
7230 	}
7231 #line 7232 "util/configparser.c"
7232     break;
7233 
7234   case 684: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
7235 #line 3644 "util/configparser.y"
7236         {
7237 		OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7238 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7239 			yyerror("expected yes or no.");
7240 		else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7241 			(strcmp((yyvsp[0].str), "yes")==0);
7242 		free((yyvsp[0].str));
7243 	}
7244 #line 7245 "util/configparser.c"
7245     break;
7246 
7247   case 685: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
7248 #line 3654 "util/configparser.y"
7249         {
7250 		OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7251 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7252 			yyerror("expected yes or no.");
7253 		else cfg_parser->cfg->dnstap_log_client_query_messages =
7254 			(strcmp((yyvsp[0].str), "yes")==0);
7255 		free((yyvsp[0].str));
7256 	}
7257 #line 7258 "util/configparser.c"
7258     break;
7259 
7260   case 686: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
7261 #line 3664 "util/configparser.y"
7262         {
7263 		OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7264 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7265 			yyerror("expected yes or no.");
7266 		else cfg_parser->cfg->dnstap_log_client_response_messages =
7267 			(strcmp((yyvsp[0].str), "yes")==0);
7268 		free((yyvsp[0].str));
7269 	}
7270 #line 7271 "util/configparser.c"
7271     break;
7272 
7273   case 687: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
7274 #line 3674 "util/configparser.y"
7275         {
7276 		OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7277 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7278 			yyerror("expected yes or no.");
7279 		else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7280 			(strcmp((yyvsp[0].str), "yes")==0);
7281 		free((yyvsp[0].str));
7282 	}
7283 #line 7284 "util/configparser.c"
7284     break;
7285 
7286   case 688: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
7287 #line 3684 "util/configparser.y"
7288         {
7289 		OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7290 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7291 			yyerror("expected yes or no.");
7292 		else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7293 			(strcmp((yyvsp[0].str), "yes")==0);
7294 		free((yyvsp[0].str));
7295 	}
7296 #line 7297 "util/configparser.c"
7297     break;
7298 
7299   case 689: /* dt_dnstap_sample_rate: VAR_DNSTAP_SAMPLE_RATE STRING_ARG  */
7300 #line 3694 "util/configparser.y"
7301         {
7302 		OUTYY(("P(dt_dnstap_sample_rate:%s)\n", (yyvsp[0].str)));
7303 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7304 			yyerror("number expected");
7305 		else if(atoi((yyvsp[0].str)) < 0)
7306 			yyerror("dnstap sample rate too small");
7307 		else	cfg_parser->cfg->dnstap_sample_rate = atoi((yyvsp[0].str));
7308 		free((yyvsp[0].str));
7309 	}
7310 #line 7311 "util/configparser.c"
7311     break;
7312 
7313   case 690: /* pythonstart: VAR_PYTHON  */
7314 #line 3705 "util/configparser.y"
7315         {
7316 		OUTYY(("\nP(python:)\n"));
7317 		cfg_parser->started_toplevel = 1;
7318 	}
7319 #line 7320 "util/configparser.c"
7320     break;
7321 
7322   case 694: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
7323 #line 3715 "util/configparser.y"
7324         {
7325 		OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7326 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7327 			yyerror("out of memory");
7328 	}
7329 #line 7330 "util/configparser.c"
7330     break;
7331 
7332   case 695: /* dynlibstart: VAR_DYNLIB  */
7333 #line 3722 "util/configparser.y"
7334         {
7335 		OUTYY(("\nP(dynlib:)\n"));
7336 		cfg_parser->started_toplevel = 1;
7337 	}
7338 #line 7339 "util/configparser.c"
7339     break;
7340 
7341   case 699: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
7342 #line 3732 "util/configparser.y"
7343         {
7344 		OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7345 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7346 			yyerror("out of memory");
7347 	}
7348 #line 7349 "util/configparser.c"
7349     break;
7350 
7351   case 700: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
7352 #line 3739 "util/configparser.y"
7353         {
7354 		OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7355 		if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7356 			yyerror("expected yes or no.");
7357 		else cfg_parser->cfg->disable_dnssec_lame_check =
7358 			(strcmp((yyvsp[0].str), "yes")==0);
7359 		free((yyvsp[0].str));
7360 	}
7361 #line 7362 "util/configparser.c"
7362     break;
7363 
7364   case 701: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
7365 #line 3749 "util/configparser.y"
7366         {
7367 		OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7368 		free(cfg_parser->cfg->log_identity);
7369 		cfg_parser->cfg->log_identity = (yyvsp[0].str);
7370 	}
7371 #line 7372 "util/configparser.c"
7372     break;
7373 
7374   case 702: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
7375 #line 3756 "util/configparser.y"
7376         {
7377 		OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7378 		validate_respip_action((yyvsp[0].str));
7379 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7380 			(yyvsp[-1].str), (yyvsp[0].str)))
7381 			fatal_exit("out of memory adding response-ip");
7382 	}
7383 #line 7384 "util/configparser.c"
7384     break;
7385 
7386   case 703: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
7387 #line 3765 "util/configparser.y"
7388         {
7389 		OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7390 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7391 			(yyvsp[-1].str), (yyvsp[0].str)))
7392 			fatal_exit("out of memory adding response-ip-data");
7393 	}
7394 #line 7395 "util/configparser.c"
7395     break;
7396 
7397   case 704: /* dnscstart: VAR_DNSCRYPT  */
7398 #line 3773 "util/configparser.y"
7399         {
7400 		OUTYY(("\nP(dnscrypt:)\n"));
7401 		cfg_parser->started_toplevel = 1;
7402 	}
7403 #line 7404 "util/configparser.c"
7404     break;
7405 
7406   case 717: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
7407 #line 3790 "util/configparser.y"
7408         {
7409 		OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7410 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7411 			yyerror("expected yes or no.");
7412 		else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7413 		free((yyvsp[0].str));
7414 	}
7415 #line 7416 "util/configparser.c"
7416     break;
7417 
7418   case 718: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
7419 #line 3799 "util/configparser.y"
7420         {
7421 		OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7422 		if(atoi((yyvsp[0].str)) == 0)
7423 			yyerror("port number expected");
7424 		else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7425 		free((yyvsp[0].str));
7426 	}
7427 #line 7428 "util/configparser.c"
7428     break;
7429 
7430   case 719: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
7431 #line 3808 "util/configparser.y"
7432         {
7433 		OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7434 		free(cfg_parser->cfg->dnscrypt_provider);
7435 		cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7436 	}
7437 #line 7438 "util/configparser.c"
7438     break;
7439 
7440   case 720: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
7441 #line 3815 "util/configparser.y"
7442         {
7443 		OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7444 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7445 			log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7446 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7447 			fatal_exit("out of memory adding dnscrypt-provider-cert");
7448 	}
7449 #line 7450 "util/configparser.c"
7450     break;
7451 
7452   case 721: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
7453 #line 3824 "util/configparser.y"
7454         {
7455 		OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7456 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7457 			fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7458 	}
7459 #line 7460 "util/configparser.c"
7460     break;
7461 
7462   case 722: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
7463 #line 3831 "util/configparser.y"
7464         {
7465 		OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7466 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7467 			log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7468 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7469 			fatal_exit("out of memory adding dnscrypt-secret-key");
7470 	}
7471 #line 7472 "util/configparser.c"
7472     break;
7473 
7474   case 723: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
7475 #line 3840 "util/configparser.y"
7476   {
7477 	OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7478 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7479 		yyerror("memory size expected");
7480 	free((yyvsp[0].str));
7481   }
7482 #line 7483 "util/configparser.c"
7483     break;
7484 
7485   case 724: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
7486 #line 3848 "util/configparser.y"
7487   {
7488 	OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7489 	if(atoi((yyvsp[0].str)) == 0) {
7490 		yyerror("number expected");
7491 	} else {
7492 		cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7493 		if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7494 			yyerror("must be a power of 2");
7495 	}
7496 	free((yyvsp[0].str));
7497   }
7498 #line 7499 "util/configparser.c"
7499     break;
7500 
7501   case 725: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
7502 #line 3861 "util/configparser.y"
7503   {
7504 	OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7505 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7506 		yyerror("memory size expected");
7507 	free((yyvsp[0].str));
7508   }
7509 #line 7510 "util/configparser.c"
7510     break;
7511 
7512   case 726: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
7513 #line 3869 "util/configparser.y"
7514   {
7515 	OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7516 	if(atoi((yyvsp[0].str)) == 0) {
7517 		yyerror("number expected");
7518 	} else {
7519 		cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7520 		if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7521 			yyerror("must be a power of 2");
7522 	}
7523 	free((yyvsp[0].str));
7524   }
7525 #line 7526 "util/configparser.c"
7526     break;
7527 
7528   case 727: /* cachedbstart: VAR_CACHEDB  */
7529 #line 3882 "util/configparser.y"
7530         {
7531 		OUTYY(("\nP(cachedb:)\n"));
7532 		cfg_parser->started_toplevel = 1;
7533 	}
7534 #line 7535 "util/configparser.c"
7535     break;
7536 
7537   case 751: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
7538 #line 3902 "util/configparser.y"
7539         {
7540 	#ifdef USE_CACHEDB
7541 		OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7542 		free(cfg_parser->cfg->cachedb_backend);
7543 		cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7544 	#else
7545 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7546 		free((yyvsp[0].str));
7547 	#endif
7548 	}
7549 #line 7550 "util/configparser.c"
7550     break;
7551 
7552   case 752: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
7553 #line 3914 "util/configparser.y"
7554         {
7555 	#ifdef USE_CACHEDB
7556 		OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7557 		free(cfg_parser->cfg->cachedb_secret);
7558 		cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7559 	#else
7560 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7561 		free((yyvsp[0].str));
7562 	#endif
7563 	}
7564 #line 7565 "util/configparser.c"
7565     break;
7566 
7567   case 753: /* cachedb_no_store: VAR_CACHEDB_NO_STORE STRING_ARG  */
7568 #line 3926 "util/configparser.y"
7569         {
7570 	#ifdef USE_CACHEDB
7571 		OUTYY(("P(cachedb_no_store:%s)\n", (yyvsp[0].str)));
7572 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7573 			yyerror("expected yes or no.");
7574 		else cfg_parser->cfg->cachedb_no_store = (strcmp((yyvsp[0].str), "yes")==0);
7575 	#else
7576 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7577 	#endif
7578 		free((yyvsp[0].str));
7579 	}
7580 #line 7581 "util/configparser.c"
7581     break;
7582 
7583   case 754: /* cachedb_check_when_serve_expired: VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED STRING_ARG  */
7584 #line 3939 "util/configparser.y"
7585         {
7586 	#ifdef USE_CACHEDB
7587 		OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", (yyvsp[0].str)));
7588 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7589 			yyerror("expected yes or no.");
7590 		else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
7591 	#else
7592 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7593 	#endif
7594 		free((yyvsp[0].str));
7595 	}
7596 #line 7597 "util/configparser.c"
7597     break;
7598 
7599   case 755: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
7600 #line 3952 "util/configparser.y"
7601         {
7602 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7603 		OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7604 		free(cfg_parser->cfg->redis_server_host);
7605 		cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7606 	#else
7607 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7608 		free((yyvsp[0].str));
7609 	#endif
7610 	}
7611 #line 7612 "util/configparser.c"
7612     break;
7613 
7614   case 756: /* redis_replica_server_host: VAR_CACHEDB_REDISREPLICAHOST STRING_ARG  */
7615 #line 3964 "util/configparser.y"
7616         {
7617 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7618 		OUTYY(("P(redis_replica_server_host:%s)\n", (yyvsp[0].str)));
7619 		free(cfg_parser->cfg->redis_replica_server_host);
7620 		cfg_parser->cfg->redis_replica_server_host = (yyvsp[0].str);
7621 	#else
7622 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7623 		free((yyvsp[0].str));
7624 	#endif
7625 	}
7626 #line 7627 "util/configparser.c"
7627     break;
7628 
7629   case 757: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
7630 #line 3976 "util/configparser.y"
7631         {
7632 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7633 		int port;
7634 		OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7635 		port = atoi((yyvsp[0].str));
7636 		if(port == 0 || port < 0 || port > 65535)
7637 			yyerror("valid redis server port number expected");
7638 		else cfg_parser->cfg->redis_server_port = port;
7639 	#else
7640 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7641 	#endif
7642 		free((yyvsp[0].str));
7643 	}
7644 #line 7645 "util/configparser.c"
7645     break;
7646 
7647   case 758: /* redis_replica_server_port: VAR_CACHEDB_REDISREPLICAPORT STRING_ARG  */
7648 #line 3991 "util/configparser.y"
7649         {
7650 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7651 		int port;
7652 		OUTYY(("P(redis_replica_server_port:%s)\n", (yyvsp[0].str)));
7653 		port = atoi((yyvsp[0].str));
7654 		if(port == 0 || port < 0 || port > 65535)
7655 			yyerror("valid redis server port number expected");
7656 		else cfg_parser->cfg->redis_replica_server_port = port;
7657 	#else
7658 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7659 	#endif
7660 		free((yyvsp[0].str));
7661 	}
7662 #line 7663 "util/configparser.c"
7663     break;
7664 
7665   case 759: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG  */
7666 #line 4006 "util/configparser.y"
7667         {
7668 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7669 		OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7670 		free(cfg_parser->cfg->redis_server_path);
7671 		cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7672 	#else
7673 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7674 		free((yyvsp[0].str));
7675 	#endif
7676 	}
7677 #line 7678 "util/configparser.c"
7678     break;
7679 
7680   case 760: /* redis_replica_server_path: VAR_CACHEDB_REDISREPLICAPATH STRING_ARG  */
7681 #line 4018 "util/configparser.y"
7682         {
7683 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7684 		OUTYY(("P(redis_replica_server_path:%s)\n", (yyvsp[0].str)));
7685 		free(cfg_parser->cfg->redis_replica_server_path);
7686 		cfg_parser->cfg->redis_replica_server_path = (yyvsp[0].str);
7687 	#else
7688 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7689 		free((yyvsp[0].str));
7690 	#endif
7691 	}
7692 #line 7693 "util/configparser.c"
7693     break;
7694 
7695   case 761: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG  */
7696 #line 4030 "util/configparser.y"
7697         {
7698 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7699 		OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7700 		free(cfg_parser->cfg->redis_server_password);
7701 		cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7702 	#else
7703 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7704 		free((yyvsp[0].str));
7705 	#endif
7706 	}
7707 #line 7708 "util/configparser.c"
7708     break;
7709 
7710   case 762: /* redis_replica_server_password: VAR_CACHEDB_REDISREPLICAPASSWORD STRING_ARG  */
7711 #line 4042 "util/configparser.y"
7712         {
7713 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7714 		OUTYY(("P(redis_replica_server_password:%s)\n", (yyvsp[0].str)));
7715 		free(cfg_parser->cfg->redis_replica_server_password);
7716 		cfg_parser->cfg->redis_replica_server_password = (yyvsp[0].str);
7717 	#else
7718 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7719 		free((yyvsp[0].str));
7720 	#endif
7721 	}
7722 #line 7723 "util/configparser.c"
7723     break;
7724 
7725   case 763: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
7726 #line 4054 "util/configparser.y"
7727         {
7728 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7729 		OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7730 		if(atoi((yyvsp[0].str)) == 0)
7731 			yyerror("redis timeout value expected");
7732 		else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7733 	#else
7734 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7735 	#endif
7736 		free((yyvsp[0].str));
7737 	}
7738 #line 7739 "util/configparser.c"
7739     break;
7740 
7741   case 764: /* redis_replica_timeout: VAR_CACHEDB_REDISREPLICATIMEOUT STRING_ARG  */
7742 #line 4067 "util/configparser.y"
7743         {
7744 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7745 		OUTYY(("P(redis_replica_timeout:%s)\n", (yyvsp[0].str)));
7746 		if(atoi((yyvsp[0].str)) == 0)
7747 			yyerror("redis timeout value expected");
7748 		else cfg_parser->cfg->redis_replica_timeout = atoi((yyvsp[0].str));
7749 	#else
7750 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7751 	#endif
7752 		free((yyvsp[0].str));
7753 	}
7754 #line 7755 "util/configparser.c"
7755     break;
7756 
7757   case 765: /* redis_command_timeout: VAR_CACHEDB_REDISCOMMANDTIMEOUT STRING_ARG  */
7758 #line 4080 "util/configparser.y"
7759         {
7760 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7761 		OUTYY(("P(redis_command_timeout:%s)\n", (yyvsp[0].str)));
7762 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7763 			yyerror("redis command timeout value expected");
7764 		else cfg_parser->cfg->redis_command_timeout = atoi((yyvsp[0].str));
7765 	#else
7766 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7767 	#endif
7768 		free((yyvsp[0].str));
7769 	}
7770 #line 7771 "util/configparser.c"
7771     break;
7772 
7773   case 766: /* redis_replica_command_timeout: VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT STRING_ARG  */
7774 #line 4093 "util/configparser.y"
7775         {
7776 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7777 		OUTYY(("P(redis_replica_command_timeout:%s)\n", (yyvsp[0].str)));
7778 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7779 			yyerror("redis command timeout value expected");
7780 		else cfg_parser->cfg->redis_replica_command_timeout = atoi((yyvsp[0].str));
7781 	#else
7782 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7783 	#endif
7784 		free((yyvsp[0].str));
7785 	}
7786 #line 7787 "util/configparser.c"
7787     break;
7788 
7789   case 767: /* redis_connect_timeout: VAR_CACHEDB_REDISCONNECTTIMEOUT STRING_ARG  */
7790 #line 4106 "util/configparser.y"
7791         {
7792 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7793 		OUTYY(("P(redis_connect_timeout:%s)\n", (yyvsp[0].str)));
7794 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7795 			yyerror("redis connect timeout value expected");
7796 		else cfg_parser->cfg->redis_connect_timeout = atoi((yyvsp[0].str));
7797 	#else
7798 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7799 	#endif
7800 		free((yyvsp[0].str));
7801 	}
7802 #line 7803 "util/configparser.c"
7803     break;
7804 
7805   case 768: /* redis_replica_connect_timeout: VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT STRING_ARG  */
7806 #line 4119 "util/configparser.y"
7807         {
7808 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7809 		OUTYY(("P(redis_replica_connect_timeout:%s)\n", (yyvsp[0].str)));
7810 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7811 			yyerror("redis connect timeout value expected");
7812 		else cfg_parser->cfg->redis_replica_connect_timeout = atoi((yyvsp[0].str));
7813 	#else
7814 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7815 	#endif
7816 		free((yyvsp[0].str));
7817 	}
7818 #line 7819 "util/configparser.c"
7819     break;
7820 
7821   case 769: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
7822 #line 4132 "util/configparser.y"
7823         {
7824 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7825 		OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7826 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7827 			yyerror("expected yes or no.");
7828 		else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7829 	#else
7830 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7831 	#endif
7832 		free((yyvsp[0].str));
7833 	}
7834 #line 7835 "util/configparser.c"
7835     break;
7836 
7837   case 770: /* redis_logical_db: VAR_CACHEDB_REDISLOGICALDB STRING_ARG  */
7838 #line 4145 "util/configparser.y"
7839         {
7840 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7841 		int db;
7842 		OUTYY(("P(redis_logical_db:%s)\n", (yyvsp[0].str)));
7843 		db = atoi((yyvsp[0].str));
7844 		if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7845 			yyerror("valid redis logical database index expected");
7846 		else cfg_parser->cfg->redis_logical_db = db;
7847 	#else
7848 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7849 	#endif
7850 		free((yyvsp[0].str));
7851 	}
7852 #line 7853 "util/configparser.c"
7853     break;
7854 
7855   case 771: /* redis_replica_logical_db: VAR_CACHEDB_REDISREPLICALOGICALDB STRING_ARG  */
7856 #line 4160 "util/configparser.y"
7857         {
7858 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7859 		int db;
7860 		OUTYY(("P(redis_replica_logical_db:%s)\n", (yyvsp[0].str)));
7861 		db = atoi((yyvsp[0].str));
7862 		if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7863 			yyerror("valid redis logical database index expected");
7864 		else cfg_parser->cfg->redis_replica_logical_db = db;
7865 	#else
7866 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7867 	#endif
7868 		free((yyvsp[0].str));
7869 	}
7870 #line 7871 "util/configparser.c"
7871     break;
7872 
7873   case 772: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
7874 #line 4175 "util/configparser.y"
7875         {
7876 		OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7877 		if (atoi((yyvsp[0].str)) < 0)
7878 			yyerror("positive number expected");
7879 		else {
7880 			if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7881 				fatal_exit("out of memory adding tcp connection limit");
7882 		}
7883 	}
7884 #line 7885 "util/configparser.c"
7885     break;
7886 
7887   case 773: /* server_answer_cookie: VAR_ANSWER_COOKIE STRING_ARG  */
7888 #line 4186 "util/configparser.y"
7889         {
7890 		OUTYY(("P(server_answer_cookie:%s)\n", (yyvsp[0].str)));
7891 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7892 			yyerror("expected yes or no.");
7893 		else cfg_parser->cfg->do_answer_cookie = (strcmp((yyvsp[0].str), "yes")==0);
7894 		free((yyvsp[0].str));
7895 	}
7896 #line 7897 "util/configparser.c"
7897     break;
7898 
7899   case 774: /* server_cookie_secret: VAR_COOKIE_SECRET STRING_ARG  */
7900 #line 4195 "util/configparser.y"
7901         {
7902 		uint8_t secret[32];
7903 		size_t secret_len = sizeof(secret);
7904 
7905 		OUTYY(("P(server_cookie_secret:%s)\n", (yyvsp[0].str)));
7906 		if(sldns_str2wire_hex_buf((yyvsp[0].str), secret, &secret_len)
7907 		|| (secret_len != 16))
7908 			yyerror("expected 128 bit hex string");
7909 		else {
7910 			cfg_parser->cfg->cookie_secret_len = secret_len;
7911 			memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
7912 		}
7913 		free((yyvsp[0].str));
7914 	}
7915 #line 7916 "util/configparser.c"
7916     break;
7917 
7918   case 775: /* server_cookie_secret_file: VAR_COOKIE_SECRET_FILE STRING_ARG  */
7919 #line 4211 "util/configparser.y"
7920         {
7921 		OUTYY(("P(cookie_secret_file:%s)\n", (yyvsp[0].str)));
7922 		free(cfg_parser->cfg->cookie_secret_file);
7923 		cfg_parser->cfg->cookie_secret_file = (yyvsp[0].str);
7924 	}
7925 #line 7926 "util/configparser.c"
7926     break;
7927 
7928   case 776: /* server_iter_scrub_ns: VAR_ITER_SCRUB_NS STRING_ARG  */
7929 #line 4218 "util/configparser.y"
7930         {
7931 		OUTYY(("P(server_iter_scrub_ns:%s)\n", (yyvsp[0].str)));
7932 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7933 			yyerror("number expected");
7934 		else cfg_parser->cfg->iter_scrub_ns = atoi((yyvsp[0].str));
7935 		free((yyvsp[0].str));
7936 	}
7937 #line 7938 "util/configparser.c"
7938     break;
7939 
7940   case 777: /* server_iter_scrub_cname: VAR_ITER_SCRUB_CNAME STRING_ARG  */
7941 #line 4227 "util/configparser.y"
7942         {
7943 		OUTYY(("P(server_iter_scrub_cname:%s)\n", (yyvsp[0].str)));
7944 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7945 			yyerror("number expected");
7946 		else cfg_parser->cfg->iter_scrub_cname = atoi((yyvsp[0].str));
7947 		free((yyvsp[0].str));
7948 	}
7949 #line 7950 "util/configparser.c"
7950     break;
7951 
7952   case 778: /* server_max_global_quota: VAR_MAX_GLOBAL_QUOTA STRING_ARG  */
7953 #line 4236 "util/configparser.y"
7954         {
7955 		OUTYY(("P(server_max_global_quota:%s)\n", (yyvsp[0].str)));
7956 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7957 			yyerror("number expected");
7958 		else cfg_parser->cfg->max_global_quota = atoi((yyvsp[0].str));
7959 		free((yyvsp[0].str));
7960 	}
7961 #line 7962 "util/configparser.c"
7962     break;
7963 
7964   case 779: /* server_iter_scrub_promiscuous: VAR_ITER_SCRUB_PROMISCUOUS STRING_ARG  */
7965 #line 4245 "util/configparser.y"
7966         {
7967 		OUTYY(("P(server_iter_scrub_promiscuous:%s)\n", (yyvsp[0].str)));
7968 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7969 			yyerror("expected yes or no.");
7970 		else cfg_parser->cfg->iter_scrub_promiscuous =
7971 			(strcmp((yyvsp[0].str), "yes")==0);
7972 		free((yyvsp[0].str));
7973 	}
7974 #line 7975 "util/configparser.c"
7975     break;
7976 
7977   case 780: /* ipsetstart: VAR_IPSET  */
7978 #line 4255 "util/configparser.y"
7979         {
7980 		OUTYY(("\nP(ipset:)\n"));
7981 		cfg_parser->started_toplevel = 1;
7982 	}
7983 #line 7984 "util/configparser.c"
7984     break;
7985 
7986   case 785: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
7987 #line 4265 "util/configparser.y"
7988         {
7989 	#ifdef USE_IPSET
7990 		OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
7991 		if(cfg_parser->cfg->ipset_name_v4)
7992 			yyerror("ipset name v4 override, there must be one "
7993 				"name for ip v4");
7994 		free(cfg_parser->cfg->ipset_name_v4);
7995 		cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
7996 	#else
7997 		OUTYY(("P(Compiled without ipset, ignoring)\n"));
7998 		free((yyvsp[0].str));
7999 	#endif
8000 	}
8001 #line 8002 "util/configparser.c"
8002     break;
8003 
8004   case 786: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
8005 #line 4280 "util/configparser.y"
8006         {
8007 	#ifdef USE_IPSET
8008 		OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
8009 		if(cfg_parser->cfg->ipset_name_v6)
8010 			yyerror("ipset name v6 override, there must be one "
8011 				"name for ip v6");
8012 		free(cfg_parser->cfg->ipset_name_v6);
8013 		cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
8014 	#else
8015 		OUTYY(("P(Compiled without ipset, ignoring)\n"));
8016 		free((yyvsp[0].str));
8017 	#endif
8018 	}
8019 #line 8020 "util/configparser.c"
8020     break;
8021 
8022 
8023 #line 8024 "util/configparser.c"
8024 
8025       default: break;
8026     }
8027   /* User semantic actions sometimes alter yychar, and that requires
8028      that yytoken be updated with the new translation.  We take the
8029      approach of translating immediately before every use of yytoken.
8030      One alternative is translating here after every semantic action,
8031      but that translation would be missed if the semantic action invokes
8032      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8033      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
8034      incorrect destructor might then be invoked immediately.  In the
8035      case of YYERROR or YYBACKUP, subsequent parser actions might lead
8036      to an incorrect destructor call or verbose syntax error message
8037      before the lookahead is translated.  */
8038   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
8039 
8040   YYPOPSTACK (yylen);
8041   yylen = 0;
8042 
8043   *++yyvsp = yyval;
8044 
8045   /* Now 'shift' the result of the reduction.  Determine what state
8046      that goes to, based on the state we popped back to and the rule
8047      number reduced by.  */
8048   {
8049     const int yylhs = yyr1[yyn] - YYNTOKENS;
8050     const int yyi = yypgoto[yylhs] + *yyssp;
8051     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
8052                ? yytable[yyi]
8053                : yydefgoto[yylhs]);
8054   }
8055 
8056   goto yynewstate;
8057 
8058 
8059 /*--------------------------------------.
8060 | yyerrlab -- here on detecting error.  |
8061 `--------------------------------------*/
8062 yyerrlab:
8063   /* Make sure we have latest lookahead translation.  See comments at
8064      user semantic actions for why this is necessary.  */
8065   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
8066   /* If not already recovering from an error, report this error.  */
8067   if (!yyerrstatus)
8068     {
8069       ++yynerrs;
8070       yyerror (YY_("syntax error"));
8071     }
8072 
8073   if (yyerrstatus == 3)
8074     {
8075       /* If just tried and failed to reuse lookahead token after an
8076          error, discard it.  */
8077 
8078       if (yychar <= YYEOF)
8079         {
8080           /* Return failure if at end of input.  */
8081           if (yychar == YYEOF)
8082             YYABORT;
8083         }
8084       else
8085         {
8086           yydestruct ("Error: discarding",
8087                       yytoken, &yylval);
8088           yychar = YYEMPTY;
8089         }
8090     }
8091 
8092   /* Else will try to reuse lookahead token after shifting the error
8093      token.  */
8094   goto yyerrlab1;
8095 
8096 
8097 /*---------------------------------------------------.
8098 | yyerrorlab -- error raised explicitly by YYERROR.  |
8099 `---------------------------------------------------*/
8100 yyerrorlab:
8101   /* Pacify compilers when the user code never invokes YYERROR and the
8102      label yyerrorlab therefore never appears in user code.  */
8103   if (0)
8104     YYERROR;
8105   ++yynerrs;
8106 
8107   /* Do not reclaim the symbols of the rule whose action triggered
8108      this YYERROR.  */
8109   YYPOPSTACK (yylen);
8110   yylen = 0;
8111   YY_STACK_PRINT (yyss, yyssp);
8112   yystate = *yyssp;
8113   goto yyerrlab1;
8114 
8115 
8116 /*-------------------------------------------------------------.
8117 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
8118 `-------------------------------------------------------------*/
8119 yyerrlab1:
8120   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
8121 
8122   /* Pop stack until we find a state that shifts the error token.  */
8123   for (;;)
8124     {
8125       yyn = yypact[yystate];
8126       if (!yypact_value_is_default (yyn))
8127         {
8128           yyn += YYSYMBOL_YYerror;
8129           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
8130             {
8131               yyn = yytable[yyn];
8132               if (0 < yyn)
8133                 break;
8134             }
8135         }
8136 
8137       /* Pop the current state because it cannot handle the error token.  */
8138       if (yyssp == yyss)
8139         YYABORT;
8140 
8141 
8142       yydestruct ("Error: popping",
8143                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
8144       YYPOPSTACK (1);
8145       yystate = *yyssp;
8146       YY_STACK_PRINT (yyss, yyssp);
8147     }
8148 
8149   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8150   *++yyvsp = yylval;
8151   YY_IGNORE_MAYBE_UNINITIALIZED_END
8152 
8153 
8154   /* Shift the error token.  */
8155   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
8156 
8157   yystate = yyn;
8158   goto yynewstate;
8159 
8160 
8161 /*-------------------------------------.
8162 | yyacceptlab -- YYACCEPT comes here.  |
8163 `-------------------------------------*/
8164 yyacceptlab:
8165   yyresult = 0;
8166   goto yyreturnlab;
8167 
8168 
8169 /*-----------------------------------.
8170 | yyabortlab -- YYABORT comes here.  |
8171 `-----------------------------------*/
8172 yyabortlab:
8173   yyresult = 1;
8174   goto yyreturnlab;
8175 
8176 
8177 /*-----------------------------------------------------------.
8178 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
8179 `-----------------------------------------------------------*/
8180 yyexhaustedlab:
8181   yyerror (YY_("memory exhausted"));
8182   yyresult = 2;
8183   goto yyreturnlab;
8184 
8185 
8186 /*----------------------------------------------------------.
8187 | yyreturnlab -- parsing is finished, clean up and return.  |
8188 `----------------------------------------------------------*/
8189 yyreturnlab:
8190   if (yychar != YYEMPTY)
8191     {
8192       /* Make sure we have latest lookahead translation.  See comments at
8193          user semantic actions for why this is necessary.  */
8194       yytoken = YYTRANSLATE (yychar);
8195       yydestruct ("Cleanup: discarding lookahead",
8196                   yytoken, &yylval);
8197     }
8198   /* Do not reclaim the symbols of the rule whose action triggered
8199      this YYABORT or YYACCEPT.  */
8200   YYPOPSTACK (yylen);
8201   YY_STACK_PRINT (yyss, yyssp);
8202   while (yyssp != yyss)
8203     {
8204       yydestruct ("Cleanup: popping",
8205                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
8206       YYPOPSTACK (1);
8207     }
8208 #ifndef yyoverflow
8209   if (yyss != yyssa)
8210     YYSTACK_FREE (yyss);
8211 #endif
8212 
8213   return yyresult;
8214 }
8215 
8216 #line 4294 "util/configparser.y"
8217 
8218 
8219 /* parse helper routines could be here */
8220 static void
validate_respip_action(const char * action)8221 validate_respip_action(const char* action)
8222 {
8223 	if(strcmp(action, "deny")!=0 &&
8224 		strcmp(action, "redirect")!=0 &&
8225 		strcmp(action, "inform")!=0 &&
8226 		strcmp(action, "inform_deny")!=0 &&
8227 		strcmp(action, "always_transparent")!=0 &&
8228 		strcmp(action, "always_refuse")!=0 &&
8229 		strcmp(action, "always_nxdomain")!=0)
8230 	{
8231 		yyerror("response-ip action: expected deny, redirect, "
8232 			"inform, inform_deny, always_transparent, "
8233 			"always_refuse or always_nxdomain");
8234 	}
8235 }
8236 
8237 static void
validate_acl_action(const char * action)8238 validate_acl_action(const char* action)
8239 {
8240 	if(strcmp(action, "deny")!=0 &&
8241 		strcmp(action, "refuse")!=0 &&
8242 		strcmp(action, "deny_non_local")!=0 &&
8243 		strcmp(action, "refuse_non_local")!=0 &&
8244 		strcmp(action, "allow_setrd")!=0 &&
8245 		strcmp(action, "allow")!=0 &&
8246 		strcmp(action, "allow_snoop")!=0 &&
8247 		strcmp(action, "allow_cookie")!=0)
8248 	{
8249 		yyerror("expected deny, refuse, deny_non_local, "
8250 			"refuse_non_local, allow, allow_setrd, "
8251 			"allow_snoop or allow_cookie as access control action");
8252 	}
8253 }
8254