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