xref: /freebsd/contrib/unbound/util/configparser.c (revision be771a7b7f4580a30d99e41a5bb1b93a385a119d)
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,  1181,  1189,  1197,
1369     1205,  1213,  1221,  1234,  1241,  1250,  1259,  1273,  1282,  1291,
1370     1300,  1309,  1318,  1327,  1336,  1345,  1352,  1359,  1385,  1393,
1371     1400,  1407,  1414,  1421,  1429,  1437,  1445,  1452,  1463,  1474,
1372     1481,  1490,  1499,  1508,  1517,  1524,  1531,  1538,  1554,  1562,
1373     1570,  1580,  1590,  1600,  1614,  1622,  1635,  1646,  1654,  1667,
1374     1676,  1685,  1694,  1703,  1713,  1723,  1731,  1744,  1753,  1761,
1375     1770,  1778,  1791,  1800,  1809,  1819,  1826,  1836,  1846,  1856,
1376     1866,  1876,  1886,  1896,  1906,  1916,  1926,  1933,  1940,  1947,
1377     1956,  1965,  1974,  1983,  1990,  2000,  2008,  2017,  2024,  2042,
1378     2055,  2068,  2081,  2090,  2099,  2108,  2117,  2126,  2136,  2146,
1379     2157,  2166,  2175,  2184,  2193,  2202,  2211,  2220,  2229,  2238,
1380     2251,  2264,  2273,  2280,  2289,  2298,  2307,  2316,  2326,  2334,
1381     2347,  2355,  2411,  2418,  2433,  2443,  2453,  2460,  2467,  2474,
1382     2481,  2496,  2511,  2518,  2525,  2534,  2542,  2549,  2563,  2584,
1383     2605,  2617,  2629,  2641,  2650,  2671,  2683,  2695,  2704,  2725,
1384     2734,  2743,  2752,  2760,  2768,  2781,  2794,  2809,  2824,  2833,
1385     2842,  2852,  2862,  2871,  2880,  2889,  2895,  2904,  2913,  2923,
1386     2933,  2943,  2952,  2962,  2971,  2984,  2997,  3009,  3023,  3035,
1387     3049,  3058,  3069,  3078,  3087,  3094,  3104,  3111,  3118,  3127,
1388     3136,  3146,  3156,  3166,  3176,  3183,  3190,  3199,  3208,  3218,
1389     3228,  3238,  3245,  3252,  3259,  3267,  3277,  3287,  3297,  3307,
1390     3317,  3327,  3383,  3393,  3401,  3409,  3424,  3433,  3439,  3440,
1391     3441,  3441,  3441,  3442,  3442,  3442,  3443,  3443,  3445,  3455,
1392     3464,  3471,  3478,  3485,  3492,  3499,  3506,  3512,  3513,  3514,
1393     3514,  3514,  3515,  3515,  3515,  3516,  3517,  3517,  3518,  3518,
1394     3519,  3519,  3520,  3521,  3522,  3523,  3524,  3525,  3526,  3528,
1395     3537,  3547,  3554,  3561,  3570,  3577,  3584,  3591,  3598,  3607,
1396     3616,  3623,  3630,  3640,  3650,  3660,  3670,  3680,  3690,  3701,
1397     3707,  3708,  3709,  3711,  3718,  3724,  3725,  3726,  3728,  3735,
1398     3745,  3752,  3761,  3769,  3775,  3776,  3778,  3778,  3778,  3779,
1399     3779,  3780,  3781,  3782,  3783,  3784,  3786,  3795,  3804,  3811,
1400     3820,  3827,  3836,  3844,  3857,  3865,  3878,  3884,  3885,  3886,
1401     3886,  3887,  3887,  3888,  3888,  3889,  3889,  3890,  3890,  3891,
1402     3891,  3892,  3892,  3893,  3893,  3894,  3894,  3895,  3895,  3896,
1403     3898,  3910,  3922,  3935,  3948,  3960,  3972,  3987,  4002,  4014,
1404     4026,  4038,  4050,  4063,  4076,  4089,  4102,  4115,  4128,  4141,
1405     4156,  4171,  4182,  4191,  4207,  4214,  4223,  4232,  4241,  4247,
1406     4248,  4249,  4249,  4251,  4266
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 *
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
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
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
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
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
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
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 				yyerror("out of memory");
4087 			cfg_parser->cfg->http_endpoint[0] = '/';
4088 			memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
4089 				strlen((yyvsp[0].str))+1);
4090 			free((yyvsp[0].str));
4091 		} else {
4092 			cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
4093 		}
4094 	}
4095 #line 4096 "util/configparser.c"
4096     break;
4097 
4098   case 407: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
4099 #line 1182 "util/configparser.y"
4100         {
4101 		OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
4102 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4103 			yyerror("number expected");
4104 		else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
4105 		free((yyvsp[0].str));
4106 	}
4107 #line 4108 "util/configparser.c"
4108     break;
4109 
4110   case 408: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
4111 #line 1190 "util/configparser.y"
4112         {
4113 		OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
4114 		if(!cfg_parse_memsize((yyvsp[0].str),
4115 			&cfg_parser->cfg->http_query_buffer_size))
4116 			yyerror("memory size expected");
4117 		free((yyvsp[0].str));
4118 	}
4119 #line 4120 "util/configparser.c"
4120     break;
4121 
4122   case 409: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
4123 #line 1198 "util/configparser.y"
4124         {
4125 		OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
4126 		if(!cfg_parse_memsize((yyvsp[0].str),
4127 			&cfg_parser->cfg->http_response_buffer_size))
4128 			yyerror("memory size expected");
4129 		free((yyvsp[0].str));
4130 	}
4131 #line 4132 "util/configparser.c"
4132     break;
4133 
4134   case 410: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
4135 #line 1206 "util/configparser.y"
4136         {
4137 		OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
4138 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4139 			yyerror("expected yes or no.");
4140 		else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
4141 		free((yyvsp[0].str));
4142 	}
4143 #line 4144 "util/configparser.c"
4144     break;
4145 
4146   case 411: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
4147 #line 1214 "util/configparser.y"
4148         {
4149 		OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
4150 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4151 			yyerror("expected yes or no.");
4152 		else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
4153 		free((yyvsp[0].str));
4154 	}
4155 #line 4156 "util/configparser.c"
4156     break;
4157 
4158   case 412: /* server_quic_port: VAR_QUIC_PORT STRING_ARG  */
4159 #line 1222 "util/configparser.y"
4160         {
4161 		OUTYY(("P(server_quic_port:%s)\n", (yyvsp[0].str)));
4162 #ifndef HAVE_NGTCP2
4163 		log_warn("%s:%d: Unbound is not compiled with "
4164 			"ngtcp2. This is required to use DNS "
4165 			"over QUIC.", cfg_parser->filename, cfg_parser->line);
4166 #endif
4167 		if(atoi((yyvsp[0].str)) == 0)
4168 			yyerror("port number expected");
4169 		else cfg_parser->cfg->quic_port = atoi((yyvsp[0].str));
4170 		free((yyvsp[0].str));
4171 	}
4172 #line 4173 "util/configparser.c"
4173     break;
4174 
4175   case 413: /* server_quic_size: VAR_QUIC_SIZE STRING_ARG  */
4176 #line 1235 "util/configparser.y"
4177         {
4178 		OUTYY(("P(server_quic_size:%s)\n", (yyvsp[0].str)));
4179 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->quic_size))
4180 			yyerror("memory size expected");
4181 		free((yyvsp[0].str));
4182 	}
4183 #line 4184 "util/configparser.c"
4184     break;
4185 
4186   case 414: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
4187 #line 1242 "util/configparser.y"
4188         {
4189 		OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
4190 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4191 			yyerror("expected yes or no.");
4192 		else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
4193 		free((yyvsp[0].str));
4194 	}
4195 #line 4196 "util/configparser.c"
4196     break;
4197 
4198   case 415: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
4199 #line 1251 "util/configparser.y"
4200         {
4201 		OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
4202 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4203 			yyerror("expected yes or no.");
4204 		else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
4205 		free((yyvsp[0].str));
4206 	}
4207 #line 4208 "util/configparser.c"
4208     break;
4209 
4210   case 416: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
4211 #line 1260 "util/configparser.y"
4212         {
4213 		OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
4214 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4215 			yyerror("expected yes or no.");
4216 		else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
4217 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
4218 		if(strcmp((yyvsp[0].str), "yes") == 0)
4219 			yyerror("no syslog services are available. "
4220 				"(reconfigure and compile to add)");
4221 #endif
4222 		free((yyvsp[0].str));
4223 	}
4224 #line 4225 "util/configparser.c"
4225     break;
4226 
4227   case 417: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
4228 #line 1274 "util/configparser.y"
4229         {
4230 		OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
4231 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4232 			yyerror("expected yes or no.");
4233 		else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
4234 		free((yyvsp[0].str));
4235 	}
4236 #line 4237 "util/configparser.c"
4237     break;
4238 
4239   case 418: /* server_log_time_iso: VAR_LOG_TIME_ISO STRING_ARG  */
4240 #line 1283 "util/configparser.y"
4241         {
4242 		OUTYY(("P(server_log_time_iso:%s)\n", (yyvsp[0].str)));
4243 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4244 			yyerror("expected yes or no.");
4245 		else cfg_parser->cfg->log_time_iso = (strcmp((yyvsp[0].str), "yes")==0);
4246 		free((yyvsp[0].str));
4247 	}
4248 #line 4249 "util/configparser.c"
4249     break;
4250 
4251   case 419: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
4252 #line 1292 "util/configparser.y"
4253         {
4254 		OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
4255 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4256 			yyerror("expected yes or no.");
4257 		else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
4258 		free((yyvsp[0].str));
4259 	}
4260 #line 4261 "util/configparser.c"
4261     break;
4262 
4263   case 420: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
4264 #line 1301 "util/configparser.y"
4265         {
4266 		OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
4267 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4268 			yyerror("expected yes or no.");
4269 		else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
4270 		free((yyvsp[0].str));
4271 	}
4272 #line 4273 "util/configparser.c"
4273     break;
4274 
4275   case 421: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
4276 #line 1310 "util/configparser.y"
4277         {
4278 		OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
4279 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4280 			yyerror("expected yes or no.");
4281 		else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
4282 		free((yyvsp[0].str));
4283 	}
4284 #line 4285 "util/configparser.c"
4285     break;
4286 
4287   case 422: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
4288 #line 1319 "util/configparser.y"
4289         {
4290 		OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
4291 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4292 			yyerror("expected yes or no.");
4293 		else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
4294 		free((yyvsp[0].str));
4295 	}
4296 #line 4297 "util/configparser.c"
4297     break;
4298 
4299   case 423: /* server_log_destaddr: VAR_LOG_DESTADDR STRING_ARG  */
4300 #line 1328 "util/configparser.y"
4301         {
4302 		OUTYY(("P(server_log_destaddr:%s)\n", (yyvsp[0].str)));
4303 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4304 			yyerror("expected yes or no.");
4305 		else cfg_parser->cfg->log_destaddr = (strcmp((yyvsp[0].str), "yes")==0);
4306 		free((yyvsp[0].str));
4307 	}
4308 #line 4309 "util/configparser.c"
4309     break;
4310 
4311   case 424: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
4312 #line 1337 "util/configparser.y"
4313         {
4314 		OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
4315 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4316 			yyerror("expected yes or no.");
4317 		else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
4318 		free((yyvsp[0].str));
4319 	}
4320 #line 4321 "util/configparser.c"
4321     break;
4322 
4323   case 425: /* server_chroot: VAR_CHROOT STRING_ARG  */
4324 #line 1346 "util/configparser.y"
4325         {
4326 		OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
4327 		free(cfg_parser->cfg->chrootdir);
4328 		cfg_parser->cfg->chrootdir = (yyvsp[0].str);
4329 	}
4330 #line 4331 "util/configparser.c"
4331     break;
4332 
4333   case 426: /* server_username: VAR_USERNAME STRING_ARG  */
4334 #line 1353 "util/configparser.y"
4335         {
4336 		OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
4337 		free(cfg_parser->cfg->username);
4338 		cfg_parser->cfg->username = (yyvsp[0].str);
4339 	}
4340 #line 4341 "util/configparser.c"
4341     break;
4342 
4343   case 427: /* server_directory: VAR_DIRECTORY STRING_ARG  */
4344 #line 1360 "util/configparser.y"
4345         {
4346 		OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
4347 		free(cfg_parser->cfg->directory);
4348 		cfg_parser->cfg->directory = (yyvsp[0].str);
4349 		/* change there right away for includes relative to this */
4350 		if((yyvsp[0].str)[0]) {
4351 			char* d;
4352 #ifdef UB_ON_WINDOWS
4353 			w_config_adjust_directory(cfg_parser->cfg);
4354 #endif
4355 			d = cfg_parser->cfg->directory;
4356 			/* adjust directory if we have already chroot,
4357 			 * like, we reread after sighup */
4358 			if(cfg_parser->chroot && cfg_parser->chroot[0] &&
4359 				strncmp(d, cfg_parser->chroot, strlen(
4360 				cfg_parser->chroot)) == 0)
4361 				d += strlen(cfg_parser->chroot);
4362 			if(d[0]) {
4363 				if(chdir(d))
4364 				log_err("cannot chdir to directory: %s (%s)",
4365 					d, strerror(errno));
4366 			}
4367 		}
4368 	}
4369 #line 4370 "util/configparser.c"
4370     break;
4371 
4372   case 428: /* server_logfile: VAR_LOGFILE STRING_ARG  */
4373 #line 1386 "util/configparser.y"
4374         {
4375 		OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
4376 		free(cfg_parser->cfg->logfile);
4377 		cfg_parser->cfg->logfile = (yyvsp[0].str);
4378 		cfg_parser->cfg->use_syslog = 0;
4379 	}
4380 #line 4381 "util/configparser.c"
4381     break;
4382 
4383   case 429: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
4384 #line 1394 "util/configparser.y"
4385         {
4386 		OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
4387 		free(cfg_parser->cfg->pidfile);
4388 		cfg_parser->cfg->pidfile = (yyvsp[0].str);
4389 	}
4390 #line 4391 "util/configparser.c"
4391     break;
4392 
4393   case 430: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
4394 #line 1401 "util/configparser.y"
4395         {
4396 		OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
4397 		if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
4398 			yyerror("out of memory");
4399 	}
4400 #line 4401 "util/configparser.c"
4401     break;
4402 
4403   case 431: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
4404 #line 1408 "util/configparser.y"
4405         {
4406 		OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
4407 		log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
4408 		free((yyvsp[0].str));
4409 	}
4410 #line 4411 "util/configparser.c"
4411     break;
4412 
4413   case 432: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
4414 #line 1415 "util/configparser.y"
4415         {
4416 		OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
4417 		log_warn("option dlv-anchor ignored: DLV is decommissioned");
4418 		free((yyvsp[0].str));
4419 	}
4420 #line 4421 "util/configparser.c"
4421     break;
4422 
4423   case 433: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
4424 #line 1422 "util/configparser.y"
4425         {
4426 		OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4427 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4428 			auto_trust_anchor_file_list, (yyvsp[0].str)))
4429 			yyerror("out of memory");
4430 	}
4431 #line 4432 "util/configparser.c"
4432     break;
4433 
4434   case 434: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
4435 #line 1430 "util/configparser.y"
4436         {
4437 		OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
4438 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4439 			trust_anchor_file_list, (yyvsp[0].str)))
4440 			yyerror("out of memory");
4441 	}
4442 #line 4443 "util/configparser.c"
4443     break;
4444 
4445   case 435: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
4446 #line 1438 "util/configparser.y"
4447         {
4448 		OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
4449 		if(!cfg_strlist_insert(&cfg_parser->cfg->
4450 			trusted_keys_file_list, (yyvsp[0].str)))
4451 			yyerror("out of memory");
4452 	}
4453 #line 4454 "util/configparser.c"
4454     break;
4455 
4456   case 436: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
4457 #line 1446 "util/configparser.y"
4458         {
4459 		OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
4460 		if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
4461 			yyerror("out of memory");
4462 	}
4463 #line 4464 "util/configparser.c"
4464     break;
4465 
4466   case 437: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
4467 #line 1453 "util/configparser.y"
4468         {
4469 		OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
4470 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4471 			yyerror("expected yes or no.");
4472 		else
4473 			cfg_parser->cfg->trust_anchor_signaling =
4474 				(strcmp((yyvsp[0].str), "yes")==0);
4475 		free((yyvsp[0].str));
4476 	}
4477 #line 4478 "util/configparser.c"
4478     break;
4479 
4480   case 438: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
4481 #line 1464 "util/configparser.y"
4482         {
4483 		OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
4484 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4485 			yyerror("expected yes or no.");
4486 		else
4487 			cfg_parser->cfg->root_key_sentinel =
4488 				(strcmp((yyvsp[0].str), "yes")==0);
4489 		free((yyvsp[0].str));
4490 	}
4491 #line 4492 "util/configparser.c"
4492     break;
4493 
4494   case 439: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
4495 #line 1475 "util/configparser.y"
4496         {
4497 		OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
4498 		if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
4499 			yyerror("out of memory");
4500 	}
4501 #line 4502 "util/configparser.c"
4502     break;
4503 
4504   case 440: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
4505 #line 1482 "util/configparser.y"
4506         {
4507 		OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
4508 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4509 			yyerror("expected yes or no.");
4510 		else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
4511 		free((yyvsp[0].str));
4512 	}
4513 #line 4514 "util/configparser.c"
4514     break;
4515 
4516   case 441: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
4517 #line 1491 "util/configparser.y"
4518         {
4519 		OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
4520 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4521 			yyerror("expected yes or no.");
4522 		else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
4523 		free((yyvsp[0].str));
4524 	}
4525 #line 4526 "util/configparser.c"
4526     break;
4527 
4528   case 442: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
4529 #line 1500 "util/configparser.y"
4530         {
4531 		OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
4532 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4533 			yyerror("expected yes or no.");
4534 		else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
4535 		free((yyvsp[0].str));
4536 	}
4537 #line 4538 "util/configparser.c"
4538     break;
4539 
4540   case 443: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG  */
4541 #line 1509 "util/configparser.y"
4542         {
4543 		OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
4544 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4545 			yyerror("expected yes or no.");
4546 		else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
4547 		free((yyvsp[0].str));
4548 	}
4549 #line 4550 "util/configparser.c"
4550     break;
4551 
4552   case 444: /* server_identity: VAR_IDENTITY STRING_ARG  */
4553 #line 1518 "util/configparser.y"
4554         {
4555 		OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
4556 		free(cfg_parser->cfg->identity);
4557 		cfg_parser->cfg->identity = (yyvsp[0].str);
4558 	}
4559 #line 4560 "util/configparser.c"
4560     break;
4561 
4562   case 445: /* server_version: VAR_VERSION STRING_ARG  */
4563 #line 1525 "util/configparser.y"
4564         {
4565 		OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
4566 		free(cfg_parser->cfg->version);
4567 		cfg_parser->cfg->version = (yyvsp[0].str);
4568 	}
4569 #line 4570 "util/configparser.c"
4570     break;
4571 
4572   case 446: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG  */
4573 #line 1532 "util/configparser.y"
4574         {
4575 		OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
4576 		free(cfg_parser->cfg->http_user_agent);
4577 		cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
4578 	}
4579 #line 4580 "util/configparser.c"
4580     break;
4581 
4582   case 447: /* server_nsid: VAR_NSID STRING_ARG  */
4583 #line 1539 "util/configparser.y"
4584         {
4585 		OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
4586 		free(cfg_parser->cfg->nsid_cfg_str);
4587 		cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
4588 		free(cfg_parser->cfg->nsid);
4589 		cfg_parser->cfg->nsid = NULL;
4590 		cfg_parser->cfg->nsid_len = 0;
4591 		if (*(yyvsp[0].str) == 0)
4592 			; /* pass; empty string is not setting nsid */
4593 		else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
4594 					(yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
4595 			yyerror("the NSID must be either a hex string or an "
4596 			    "ascii character string prepended with ascii_.");
4597 	}
4598 #line 4599 "util/configparser.c"
4599     break;
4600 
4601   case 448: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
4602 #line 1555 "util/configparser.y"
4603         {
4604 		OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
4605 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
4606 			yyerror("buffer size expected");
4607 		free((yyvsp[0].str));
4608 	}
4609 #line 4610 "util/configparser.c"
4610     break;
4611 
4612   case 449: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
4613 #line 1563 "util/configparser.y"
4614         {
4615 		OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
4616 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
4617 			yyerror("buffer size expected");
4618 		free((yyvsp[0].str));
4619 	}
4620 #line 4621 "util/configparser.c"
4621     break;
4622 
4623   case 450: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
4624 #line 1571 "util/configparser.y"
4625         {
4626 		OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
4627 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4628 			yyerror("expected yes or no.");
4629 		else cfg_parser->cfg->so_reuseport =
4630 			(strcmp((yyvsp[0].str), "yes")==0);
4631 		free((yyvsp[0].str));
4632 	}
4633 #line 4634 "util/configparser.c"
4634     break;
4635 
4636   case 451: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
4637 #line 1581 "util/configparser.y"
4638         {
4639 		OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
4640 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4641 			yyerror("expected yes or no.");
4642 		else cfg_parser->cfg->ip_transparent =
4643 			(strcmp((yyvsp[0].str), "yes")==0);
4644 		free((yyvsp[0].str));
4645 	}
4646 #line 4647 "util/configparser.c"
4647     break;
4648 
4649   case 452: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
4650 #line 1591 "util/configparser.y"
4651         {
4652 		OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
4653 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4654 			yyerror("expected yes or no.");
4655 		else cfg_parser->cfg->ip_freebind =
4656 			(strcmp((yyvsp[0].str), "yes")==0);
4657 		free((yyvsp[0].str));
4658 	}
4659 #line 4660 "util/configparser.c"
4660     break;
4661 
4662   case 453: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
4663 #line 1601 "util/configparser.y"
4664         {
4665 		OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
4666 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4667 			yyerror("number expected");
4668 		else if (atoi((yyvsp[0].str)) > 63)
4669 			yyerror("value too large (max 63)");
4670 		else if (atoi((yyvsp[0].str)) < 0)
4671 			yyerror("value too small (min 0)");
4672 		else
4673 			cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
4674 		free((yyvsp[0].str));
4675 	}
4676 #line 4677 "util/configparser.c"
4677     break;
4678 
4679   case 454: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
4680 #line 1615 "util/configparser.y"
4681         {
4682 		OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
4683 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
4684 			yyerror("memory size expected");
4685 		free((yyvsp[0].str));
4686 	}
4687 #line 4688 "util/configparser.c"
4688     break;
4689 
4690   case 455: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
4691 #line 1623 "util/configparser.y"
4692         {
4693 		OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
4694 		if(atoi((yyvsp[0].str)) == 0)
4695 			yyerror("number expected");
4696 		else if (atoi((yyvsp[0].str)) < 12)
4697 			yyerror("edns buffer size too small");
4698 		else if (atoi((yyvsp[0].str)) > 65535)
4699 			cfg_parser->cfg->edns_buffer_size = 65535;
4700 		else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
4701 		free((yyvsp[0].str));
4702 	}
4703 #line 4704 "util/configparser.c"
4704     break;
4705 
4706   case 456: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
4707 #line 1636 "util/configparser.y"
4708         {
4709 		OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
4710 		if(atoi((yyvsp[0].str)) == 0)
4711 			yyerror("number expected");
4712 		else if (atoi((yyvsp[0].str)) < 4096)
4713 			yyerror("message buffer size too small (use 4096)");
4714 		else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
4715 		free((yyvsp[0].str));
4716 	}
4717 #line 4718 "util/configparser.c"
4718     break;
4719 
4720   case 457: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
4721 #line 1647 "util/configparser.y"
4722         {
4723 		OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
4724 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
4725 			yyerror("memory size expected");
4726 		free((yyvsp[0].str));
4727 	}
4728 #line 4729 "util/configparser.c"
4729     break;
4730 
4731   case 458: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
4732 #line 1655 "util/configparser.y"
4733         {
4734 		OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
4735 		if(atoi((yyvsp[0].str)) == 0) {
4736 			yyerror("number expected");
4737 		} else {
4738 			cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
4739 			if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
4740 				yyerror("must be a power of 2");
4741 		}
4742 		free((yyvsp[0].str));
4743 	}
4744 #line 4745 "util/configparser.c"
4745     break;
4746 
4747   case 459: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
4748 #line 1668 "util/configparser.y"
4749         {
4750 		OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
4751 		if(atoi((yyvsp[0].str)) == 0)
4752 			yyerror("number expected");
4753 		else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
4754 		free((yyvsp[0].str));
4755 	}
4756 #line 4757 "util/configparser.c"
4757     break;
4758 
4759   case 460: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
4760 #line 1677 "util/configparser.y"
4761         {
4762 		OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
4763 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4764 			yyerror("number expected");
4765 		else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
4766 		free((yyvsp[0].str));
4767 	}
4768 #line 4769 "util/configparser.c"
4769     break;
4770 
4771   case 461: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
4772 #line 1686 "util/configparser.y"
4773         {
4774 		OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
4775 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4776 			yyerror("number expected");
4777 		else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
4778 		free((yyvsp[0].str));
4779 	}
4780 #line 4781 "util/configparser.c"
4781     break;
4782 
4783   case 462: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
4784 #line 1695 "util/configparser.y"
4785         {
4786 		OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
4787 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4788 			yyerror("expected yes or no.");
4789 		else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
4790 		free((yyvsp[0].str));
4791 	}
4792 #line 4793 "util/configparser.c"
4793     break;
4794 
4795   case 463: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
4796 #line 1704 "util/configparser.y"
4797         {
4798 		OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
4799 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4800 			yyerror("expected yes or no.");
4801 		else cfg_parser->cfg->unblock_lan_zones =
4802 			(strcmp((yyvsp[0].str), "yes")==0);
4803 		free((yyvsp[0].str));
4804 	}
4805 #line 4806 "util/configparser.c"
4806     break;
4807 
4808   case 464: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
4809 #line 1714 "util/configparser.y"
4810         {
4811 		OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
4812 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4813 			yyerror("expected yes or no.");
4814 		else cfg_parser->cfg->insecure_lan_zones =
4815 			(strcmp((yyvsp[0].str), "yes")==0);
4816 		free((yyvsp[0].str));
4817 	}
4818 #line 4819 "util/configparser.c"
4819     break;
4820 
4821   case 465: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
4822 #line 1724 "util/configparser.y"
4823         {
4824 		OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
4825 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
4826 			yyerror("memory size expected");
4827 		free((yyvsp[0].str));
4828 	}
4829 #line 4830 "util/configparser.c"
4830     break;
4831 
4832   case 466: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
4833 #line 1732 "util/configparser.y"
4834         {
4835 		OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
4836 		if(atoi((yyvsp[0].str)) == 0) {
4837 			yyerror("number expected");
4838 		} else {
4839 			cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
4840 			if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
4841 				yyerror("must be a power of 2");
4842 		}
4843 		free((yyvsp[0].str));
4844 	}
4845 #line 4846 "util/configparser.c"
4846     break;
4847 
4848   case 467: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
4849 #line 1745 "util/configparser.y"
4850         {
4851 		OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
4852 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4853 			yyerror("number expected");
4854 		else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
4855 		free((yyvsp[0].str));
4856 	}
4857 #line 4858 "util/configparser.c"
4858     break;
4859 
4860   case 468: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
4861 #line 1754 "util/configparser.y"
4862         {
4863 		OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
4864 		verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
4865 			"removed, use infra-host-ttl)", (yyvsp[0].str));
4866 		free((yyvsp[0].str));
4867 	}
4868 #line 4869 "util/configparser.c"
4869     break;
4870 
4871   case 469: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
4872 #line 1762 "util/configparser.y"
4873         {
4874 		OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
4875 		if(atoi((yyvsp[0].str)) == 0)
4876 			yyerror("number expected");
4877 		else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
4878 		free((yyvsp[0].str));
4879 	}
4880 #line 4881 "util/configparser.c"
4881     break;
4882 
4883   case 470: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
4884 #line 1771 "util/configparser.y"
4885         {
4886 		OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
4887 		verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
4888 			"(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
4889 		free((yyvsp[0].str));
4890 	}
4891 #line 4892 "util/configparser.c"
4892     break;
4893 
4894   case 471: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
4895 #line 1779 "util/configparser.y"
4896         {
4897 		OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
4898 		if(atoi((yyvsp[0].str)) == 0) {
4899 			yyerror("number expected");
4900 		} else {
4901 			cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
4902 			if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
4903 				yyerror("must be a power of 2");
4904 		}
4905 		free((yyvsp[0].str));
4906 	}
4907 #line 4908 "util/configparser.c"
4908     break;
4909 
4910   case 472: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
4911 #line 1792 "util/configparser.y"
4912         {
4913 		OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
4914 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4915 			yyerror("number expected");
4916 		else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
4917 		free((yyvsp[0].str));
4918 	}
4919 #line 4920 "util/configparser.c"
4920     break;
4921 
4922   case 473: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG  */
4923 #line 1801 "util/configparser.y"
4924         {
4925 		OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str)));
4926 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
4927 			yyerror("number expected");
4928 		else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str));
4929 		free((yyvsp[0].str));
4930 	}
4931 #line 4932 "util/configparser.c"
4932     break;
4933 
4934   case 474: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
4935 #line 1810 "util/configparser.y"
4936         {
4937 		OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
4938 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4939 			yyerror("expected yes or no.");
4940 		else cfg_parser->cfg->infra_keep_probing =
4941 			(strcmp((yyvsp[0].str), "yes")==0);
4942 		free((yyvsp[0].str));
4943 	}
4944 #line 4945 "util/configparser.c"
4945     break;
4946 
4947   case 475: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
4948 #line 1820 "util/configparser.y"
4949         {
4950 		OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
4951 		free(cfg_parser->cfg->target_fetch_policy);
4952 		cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
4953 	}
4954 #line 4955 "util/configparser.c"
4955     break;
4956 
4957   case 476: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
4958 #line 1827 "util/configparser.y"
4959         {
4960 		OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
4961 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4962 			yyerror("expected yes or no.");
4963 		else cfg_parser->cfg->harden_short_bufsize =
4964 			(strcmp((yyvsp[0].str), "yes")==0);
4965 		free((yyvsp[0].str));
4966 	}
4967 #line 4968 "util/configparser.c"
4968     break;
4969 
4970   case 477: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
4971 #line 1837 "util/configparser.y"
4972         {
4973 		OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
4974 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4975 			yyerror("expected yes or no.");
4976 		else cfg_parser->cfg->harden_large_queries =
4977 			(strcmp((yyvsp[0].str), "yes")==0);
4978 		free((yyvsp[0].str));
4979 	}
4980 #line 4981 "util/configparser.c"
4981     break;
4982 
4983   case 478: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
4984 #line 1847 "util/configparser.y"
4985         {
4986 		OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
4987 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
4988 			yyerror("expected yes or no.");
4989 		else cfg_parser->cfg->harden_glue =
4990 			(strcmp((yyvsp[0].str), "yes")==0);
4991 		free((yyvsp[0].str));
4992 	}
4993 #line 4994 "util/configparser.c"
4994     break;
4995 
4996   case 479: /* server_harden_unverified_glue: VAR_HARDEN_UNVERIFIED_GLUE STRING_ARG  */
4997 #line 1857 "util/configparser.y"
4998        {
4999                OUTYY(("P(server_harden_unverified_glue:%s)\n", (yyvsp[0].str)));
5000                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5001                        yyerror("expected yes or no.");
5002                else cfg_parser->cfg->harden_unverified_glue =
5003                        (strcmp((yyvsp[0].str), "yes")==0);
5004                free((yyvsp[0].str));
5005        }
5006 #line 5007 "util/configparser.c"
5007     break;
5008 
5009   case 480: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
5010 #line 1867 "util/configparser.y"
5011         {
5012 		OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
5013 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5014 			yyerror("expected yes or no.");
5015 		else cfg_parser->cfg->harden_dnssec_stripped =
5016 			(strcmp((yyvsp[0].str), "yes")==0);
5017 		free((yyvsp[0].str));
5018 	}
5019 #line 5020 "util/configparser.c"
5020     break;
5021 
5022   case 481: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
5023 #line 1877 "util/configparser.y"
5024         {
5025 		OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
5026 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5027 			yyerror("expected yes or no.");
5028 		else cfg_parser->cfg->harden_below_nxdomain =
5029 			(strcmp((yyvsp[0].str), "yes")==0);
5030 		free((yyvsp[0].str));
5031 	}
5032 #line 5033 "util/configparser.c"
5033     break;
5034 
5035   case 482: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
5036 #line 1887 "util/configparser.y"
5037         {
5038 		OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
5039 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5040 			yyerror("expected yes or no.");
5041 		else cfg_parser->cfg->harden_referral_path =
5042 			(strcmp((yyvsp[0].str), "yes")==0);
5043 		free((yyvsp[0].str));
5044 	}
5045 #line 5046 "util/configparser.c"
5046     break;
5047 
5048   case 483: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
5049 #line 1897 "util/configparser.y"
5050         {
5051 		OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
5052 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5053 			yyerror("expected yes or no.");
5054 		else cfg_parser->cfg->harden_algo_downgrade =
5055 			(strcmp((yyvsp[0].str), "yes")==0);
5056 		free((yyvsp[0].str));
5057 	}
5058 #line 5059 "util/configparser.c"
5059     break;
5060 
5061   case 484: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG  */
5062 #line 1907 "util/configparser.y"
5063         {
5064 		OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str)));
5065 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5066 			yyerror("expected yes or no.");
5067 		else cfg_parser->cfg->harden_unknown_additional =
5068 			(strcmp((yyvsp[0].str), "yes")==0);
5069 		free((yyvsp[0].str));
5070 	}
5071 #line 5072 "util/configparser.c"
5072     break;
5073 
5074   case 485: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
5075 #line 1917 "util/configparser.y"
5076         {
5077 		OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
5078 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5079 			yyerror("expected yes or no.");
5080 		else cfg_parser->cfg->use_caps_bits_for_id =
5081 			(strcmp((yyvsp[0].str), "yes")==0);
5082 		free((yyvsp[0].str));
5083 	}
5084 #line 5085 "util/configparser.c"
5085     break;
5086 
5087   case 486: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
5088 #line 1927 "util/configparser.y"
5089         {
5090 		OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
5091 		if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
5092 			yyerror("out of memory");
5093 	}
5094 #line 5095 "util/configparser.c"
5095     break;
5096 
5097   case 487: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
5098 #line 1934 "util/configparser.y"
5099         {
5100 		OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
5101 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
5102 			yyerror("out of memory");
5103 	}
5104 #line 5105 "util/configparser.c"
5105     break;
5106 
5107   case 488: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
5108 #line 1941 "util/configparser.y"
5109         {
5110 		OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
5111 		if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
5112 			yyerror("out of memory");
5113 	}
5114 #line 5115 "util/configparser.c"
5115     break;
5116 
5117   case 489: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
5118 #line 1948 "util/configparser.y"
5119         {
5120 		OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
5121 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5122 			yyerror("expected yes or no.");
5123 		else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
5124 		free((yyvsp[0].str));
5125 	}
5126 #line 5127 "util/configparser.c"
5127     break;
5128 
5129   case 490: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
5130 #line 1957 "util/configparser.y"
5131         {
5132 		OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
5133 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5134 			yyerror("expected yes or no.");
5135 		else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
5136 		free((yyvsp[0].str));
5137 	}
5138 #line 5139 "util/configparser.c"
5139     break;
5140 
5141   case 491: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
5142 #line 1966 "util/configparser.y"
5143         {
5144 		OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
5145 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5146 			yyerror("expected yes or no.");
5147 		else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
5148 		free((yyvsp[0].str));
5149 	}
5150 #line 5151 "util/configparser.c"
5151     break;
5152 
5153   case 492: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
5154 #line 1975 "util/configparser.y"
5155         {
5156 		OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
5157 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5158 			yyerror("number expected");
5159 		else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
5160 		free((yyvsp[0].str));
5161 	}
5162 #line 5163 "util/configparser.c"
5163     break;
5164 
5165   case 493: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
5166 #line 1984 "util/configparser.y"
5167         {
5168 		OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
5169 		if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
5170 			yyerror("out of memory");
5171 	}
5172 #line 5173 "util/configparser.c"
5173     break;
5174 
5175   case 494: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
5176 #line 1991 "util/configparser.y"
5177         {
5178 		OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
5179 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5180 			yyerror("expected yes or no.");
5181 		else cfg_parser->cfg->donotquery_localhost =
5182 			(strcmp((yyvsp[0].str), "yes")==0);
5183 		free((yyvsp[0].str));
5184 	}
5185 #line 5186 "util/configparser.c"
5186     break;
5187 
5188   case 495: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
5189 #line 2001 "util/configparser.y"
5190         {
5191 		OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5192 		validate_acl_action((yyvsp[0].str));
5193 		if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
5194 			fatal_exit("out of memory adding acl");
5195 	}
5196 #line 5197 "util/configparser.c"
5197     break;
5198 
5199   case 496: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG  */
5200 #line 2009 "util/configparser.y"
5201         {
5202 		OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5203 		validate_acl_action((yyvsp[0].str));
5204 		if(!cfg_str2list_insert(
5205 			&cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str)))
5206 			fatal_exit("out of memory adding acl");
5207 	}
5208 #line 5209 "util/configparser.c"
5209     break;
5210 
5211   case 497: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
5212 #line 2018 "util/configparser.y"
5213         {
5214 		OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
5215 		free(cfg_parser->cfg->module_conf);
5216 		cfg_parser->cfg->module_conf = (yyvsp[0].str);
5217 	}
5218 #line 5219 "util/configparser.c"
5219     break;
5220 
5221   case 498: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
5222 #line 2025 "util/configparser.y"
5223         {
5224 		OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
5225 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5226 			cfg_parser->cfg->val_date_override = 0;
5227 		} else if(strlen((yyvsp[0].str)) == 14) {
5228 			cfg_parser->cfg->val_date_override =
5229 				cfg_convert_timeval((yyvsp[0].str));
5230 			if(!cfg_parser->cfg->val_date_override)
5231 				yyerror("bad date/time specification");
5232 		} else {
5233 			if(atoi((yyvsp[0].str)) == 0)
5234 				yyerror("number expected");
5235 			cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
5236 		}
5237 		free((yyvsp[0].str));
5238 	}
5239 #line 5240 "util/configparser.c"
5240     break;
5241 
5242   case 499: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
5243 #line 2043 "util/configparser.y"
5244         {
5245 		OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
5246 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5247 			cfg_parser->cfg->val_sig_skew_min = 0;
5248 		} else {
5249 			cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
5250 			if(!cfg_parser->cfg->val_sig_skew_min)
5251 				yyerror("number expected");
5252 		}
5253 		free((yyvsp[0].str));
5254 	}
5255 #line 5256 "util/configparser.c"
5256     break;
5257 
5258   case 500: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
5259 #line 2056 "util/configparser.y"
5260         {
5261 		OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
5262 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5263 			cfg_parser->cfg->val_sig_skew_max = 0;
5264 		} else {
5265 			cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
5266 			if(!cfg_parser->cfg->val_sig_skew_max)
5267 				yyerror("number expected");
5268 		}
5269 		free((yyvsp[0].str));
5270 	}
5271 #line 5272 "util/configparser.c"
5272     break;
5273 
5274   case 501: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG  */
5275 #line 2069 "util/configparser.y"
5276         {
5277 		OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
5278 		if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
5279 			cfg_parser->cfg->val_max_restart = 0;
5280 		} else {
5281 			cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
5282 			if(!cfg_parser->cfg->val_max_restart)
5283 				yyerror("number expected");
5284 		}
5285 		free((yyvsp[0].str));
5286 	}
5287 #line 5288 "util/configparser.c"
5288     break;
5289 
5290   case 502: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
5291 #line 2082 "util/configparser.y"
5292         {
5293 		OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
5294 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5295 			yyerror("number expected");
5296 		else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
5297 		free((yyvsp[0].str));
5298 	}
5299 #line 5300 "util/configparser.c"
5300     break;
5301 
5302   case 503: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
5303 #line 2091 "util/configparser.y"
5304         {
5305 		OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
5306 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5307 			yyerror("number expected");
5308 		else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
5309 		free((yyvsp[0].str));
5310 	}
5311 #line 5312 "util/configparser.c"
5312     break;
5313 
5314   case 504: /* server_cache_min_negative_ttl: VAR_CACHE_MIN_NEGATIVE_TTL STRING_ARG  */
5315 #line 2100 "util/configparser.y"
5316         {
5317 		OUTYY(("P(server_cache_min_negative_ttl:%s)\n", (yyvsp[0].str)));
5318 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5319 			yyerror("number expected");
5320 		else cfg_parser->cfg->min_negative_ttl = atoi((yyvsp[0].str));
5321 		free((yyvsp[0].str));
5322 	}
5323 #line 5324 "util/configparser.c"
5324     break;
5325 
5326   case 505: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
5327 #line 2109 "util/configparser.y"
5328         {
5329 		OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
5330 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5331 			yyerror("number expected");
5332 		else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
5333 		free((yyvsp[0].str));
5334 	}
5335 #line 5336 "util/configparser.c"
5336     break;
5337 
5338   case 506: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
5339 #line 2118 "util/configparser.y"
5340         {
5341 		OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
5342 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5343 			yyerror("number expected");
5344 		else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
5345 		free((yyvsp[0].str));
5346 	}
5347 #line 5348 "util/configparser.c"
5348     break;
5349 
5350   case 507: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
5351 #line 2127 "util/configparser.y"
5352         {
5353 		OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
5354 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5355 			yyerror("expected yes or no.");
5356 		else cfg_parser->cfg->val_clean_additional =
5357 			(strcmp((yyvsp[0].str), "yes")==0);
5358 		free((yyvsp[0].str));
5359 	}
5360 #line 5361 "util/configparser.c"
5361     break;
5362 
5363   case 508: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
5364 #line 2137 "util/configparser.y"
5365         {
5366 		OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
5367 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5368 			yyerror("expected yes or no.");
5369 		else cfg_parser->cfg->val_permissive_mode =
5370 			(strcmp((yyvsp[0].str), "yes")==0);
5371 		free((yyvsp[0].str));
5372 	}
5373 #line 5374 "util/configparser.c"
5374     break;
5375 
5376   case 509: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
5377 #line 2147 "util/configparser.y"
5378         {
5379 		OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
5380 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5381 			yyerror("expected yes or no.");
5382 		else
5383 			cfg_parser->cfg->aggressive_nsec =
5384 				(strcmp((yyvsp[0].str), "yes")==0);
5385 		free((yyvsp[0].str));
5386 	}
5387 #line 5388 "util/configparser.c"
5388     break;
5389 
5390   case 510: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
5391 #line 2158 "util/configparser.y"
5392         {
5393 		OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
5394 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5395 			yyerror("expected yes or no.");
5396 		else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
5397 		free((yyvsp[0].str));
5398 	}
5399 #line 5400 "util/configparser.c"
5400     break;
5401 
5402   case 511: /* server_disable_edns_do: VAR_DISABLE_EDNS_DO STRING_ARG  */
5403 #line 2167 "util/configparser.y"
5404         {
5405 		OUTYY(("P(server_disable_edns_do:%s)\n", (yyvsp[0].str)));
5406 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5407 			yyerror("expected yes or no.");
5408 		else cfg_parser->cfg->disable_edns_do = (strcmp((yyvsp[0].str), "yes")==0);
5409 		free((yyvsp[0].str));
5410 	}
5411 #line 5412 "util/configparser.c"
5412     break;
5413 
5414   case 512: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
5415 #line 2176 "util/configparser.y"
5416         {
5417 		OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
5418 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5419 			yyerror("expected yes or no.");
5420 		else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5421 		free((yyvsp[0].str));
5422 	}
5423 #line 5424 "util/configparser.c"
5424     break;
5425 
5426   case 513: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
5427 #line 2185 "util/configparser.y"
5428         {
5429 		OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
5430 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5431 			yyerror("number expected");
5432 		else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
5433 		free((yyvsp[0].str));
5434 	}
5435 #line 5436 "util/configparser.c"
5436     break;
5437 
5438   case 514: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
5439 #line 2194 "util/configparser.y"
5440         {
5441 		OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
5442 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5443 			yyerror("expected yes or no.");
5444 		else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
5445 		free((yyvsp[0].str));
5446 	}
5447 #line 5448 "util/configparser.c"
5448     break;
5449 
5450   case 515: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
5451 #line 2203 "util/configparser.y"
5452         {
5453 		OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
5454 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5455 			yyerror("number expected");
5456 		else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
5457 		free((yyvsp[0].str));
5458 	}
5459 #line 5460 "util/configparser.c"
5460     break;
5461 
5462   case 516: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
5463 #line 2212 "util/configparser.y"
5464         {
5465 		OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
5466 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5467 			yyerror("number expected");
5468 		else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
5469 		free((yyvsp[0].str));
5470 	}
5471 #line 5472 "util/configparser.c"
5472     break;
5473 
5474   case 517: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG  */
5475 #line 2221 "util/configparser.y"
5476         {
5477 		OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str)));
5478 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5479 			yyerror("expected yes or no.");
5480 		else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
5481 		free((yyvsp[0].str));
5482 	}
5483 #line 5484 "util/configparser.c"
5484     break;
5485 
5486   case 518: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
5487 #line 2230 "util/configparser.y"
5488         {
5489 		OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
5490 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5491 			yyerror("expected yes or no.");
5492 		else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
5493 		free((yyvsp[0].str));
5494 	}
5495 #line 5496 "util/configparser.c"
5496     break;
5497 
5498   case 519: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
5499 #line 2239 "util/configparser.y"
5500         {
5501 		OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
5502 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5503 			yyerror("expected yes or no.");
5504 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5505 		else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
5506 		if(fake_dsa)
5507 			log_warn("test option fake_dsa is enabled");
5508 #endif
5509 		free((yyvsp[0].str));
5510 	}
5511 #line 5512 "util/configparser.c"
5512     break;
5513 
5514   case 520: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
5515 #line 2252 "util/configparser.y"
5516         {
5517 		OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
5518 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5519 			yyerror("expected yes or no.");
5520 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
5521 		else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
5522 		if(fake_sha1)
5523 			log_warn("test option fake_sha1 is enabled");
5524 #endif
5525 		free((yyvsp[0].str));
5526 	}
5527 #line 5528 "util/configparser.c"
5528     break;
5529 
5530   case 521: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
5531 #line 2265 "util/configparser.y"
5532         {
5533 		OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
5534 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5535 			yyerror("number expected");
5536 		else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
5537 		free((yyvsp[0].str));
5538 	}
5539 #line 5540 "util/configparser.c"
5540     break;
5541 
5542   case 522: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
5543 #line 2274 "util/configparser.y"
5544         {
5545 		OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
5546 		free(cfg_parser->cfg->val_nsec3_key_iterations);
5547 		cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
5548 	}
5549 #line 5550 "util/configparser.c"
5550     break;
5551 
5552   case 523: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
5553 #line 2281 "util/configparser.y"
5554         {
5555 		OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
5556 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5557 			yyerror("expected yes or no.");
5558 		else	cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
5559 		free((yyvsp[0].str));
5560 	}
5561 #line 5562 "util/configparser.c"
5562     break;
5563 
5564   case 524: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
5565 #line 2290 "util/configparser.y"
5566         {
5567 		OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
5568 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5569 			yyerror("number expected");
5570 		else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
5571 		free((yyvsp[0].str));
5572 	}
5573 #line 5574 "util/configparser.c"
5574     break;
5575 
5576   case 525: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
5577 #line 2299 "util/configparser.y"
5578         {
5579 		OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
5580 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5581 			yyerror("number expected");
5582 		else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
5583 		free((yyvsp[0].str));
5584 	}
5585 #line 5586 "util/configparser.c"
5586     break;
5587 
5588   case 526: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
5589 #line 2308 "util/configparser.y"
5590         {
5591 		OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
5592 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
5593 			yyerror("number expected");
5594 		else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
5595 		free((yyvsp[0].str));
5596 	}
5597 #line 5598 "util/configparser.c"
5598     break;
5599 
5600   case 527: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
5601 #line 2317 "util/configparser.y"
5602         {
5603 		OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
5604 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5605 			yyerror("expected yes or no.");
5606 		else cfg_parser->cfg->permit_small_holddown =
5607 			(strcmp((yyvsp[0].str), "yes")==0);
5608 		free((yyvsp[0].str));
5609 	}
5610 #line 5611 "util/configparser.c"
5611     break;
5612 
5613   case 528: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
5614 #line 2327 "util/configparser.y"
5615         {
5616 		OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
5617 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
5618 			yyerror("memory size expected");
5619 		free((yyvsp[0].str));
5620 	}
5621 #line 5622 "util/configparser.c"
5622     break;
5623 
5624   case 529: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
5625 #line 2335 "util/configparser.y"
5626         {
5627 		OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
5628 		if(atoi((yyvsp[0].str)) == 0) {
5629 			yyerror("number expected");
5630 		} else {
5631 			cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
5632 			if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
5633 				yyerror("must be a power of 2");
5634 		}
5635 		free((yyvsp[0].str));
5636 	}
5637 #line 5638 "util/configparser.c"
5638     break;
5639 
5640   case 530: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
5641 #line 2348 "util/configparser.y"
5642         {
5643 		OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
5644 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
5645 			yyerror("memory size expected");
5646 		free((yyvsp[0].str));
5647 	}
5648 #line 5649 "util/configparser.c"
5649     break;
5650 
5651   case 531: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
5652 #line 2356 "util/configparser.y"
5653         {
5654 		OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5655 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
5656 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
5657 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
5658 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
5659 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
5660 		   && strcmp((yyvsp[0].str), "block_a")!=0
5661 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
5662 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
5663 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
5664 		   && strcmp((yyvsp[0].str), "always_deny")!=0
5665 		   && strcmp((yyvsp[0].str), "always_null")!=0
5666 		   && strcmp((yyvsp[0].str), "noview")!=0
5667 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
5668 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
5669 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
5670 			yyerror("local-zone type: expected static, deny, "
5671 				"refuse, redirect, transparent, "
5672 				"typetransparent, inform, inform_deny, "
5673 				"inform_redirect, always_transparent, block_a,"
5674 				"always_refuse, always_nxdomain, "
5675 				"always_nodata, always_deny, always_null, "
5676 				"noview, nodefault or ipset");
5677 			free((yyvsp[-1].str));
5678 			free((yyvsp[0].str));
5679 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
5680 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5681 				local_zones_nodefault, (yyvsp[-1].str)))
5682 				fatal_exit("out of memory adding local-zone");
5683 			free((yyvsp[0].str));
5684 #ifdef USE_IPSET
5685 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
5686 			size_t len = strlen((yyvsp[-1].str));
5687 			/* Make sure to add the trailing dot.
5688 			 * These are str compared to domain names. */
5689 			if((yyvsp[-1].str)[len-1] != '.') {
5690 				if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
5691 					fatal_exit("out of memory adding local-zone");
5692 				}
5693 				(yyvsp[-1].str)[len] = '.';
5694 				(yyvsp[-1].str)[len+1] = 0;
5695 			}
5696 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5697 				local_zones_ipset, (yyvsp[-1].str)))
5698 				fatal_exit("out of memory adding local-zone");
5699 			free((yyvsp[0].str));
5700 #endif
5701 		} else {
5702 			if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
5703 				(yyvsp[-1].str), (yyvsp[0].str)))
5704 				fatal_exit("out of memory adding local-zone");
5705 		}
5706 	}
5707 #line 5708 "util/configparser.c"
5708     break;
5709 
5710   case 532: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
5711 #line 2412 "util/configparser.y"
5712         {
5713 		OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
5714 		if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
5715 			fatal_exit("out of memory adding local-data");
5716 	}
5717 #line 5718 "util/configparser.c"
5718     break;
5719 
5720   case 533: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
5721 #line 2419 "util/configparser.y"
5722         {
5723 		char* ptr;
5724 		OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
5725 		ptr = cfg_ptr_reverse((yyvsp[0].str));
5726 		free((yyvsp[0].str));
5727 		if(ptr) {
5728 			if(!cfg_strlist_insert(&cfg_parser->cfg->
5729 				local_data, ptr))
5730 				fatal_exit("out of memory adding local-data");
5731 		} else {
5732 			yyerror("local-data-ptr could not be reversed");
5733 		}
5734 	}
5735 #line 5736 "util/configparser.c"
5736     break;
5737 
5738   case 534: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
5739 #line 2434 "util/configparser.y"
5740         {
5741 		OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
5742 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5743 			yyerror("expected yes or no.");
5744 		else cfg_parser->cfg->minimal_responses =
5745 			(strcmp((yyvsp[0].str), "yes")==0);
5746 		free((yyvsp[0].str));
5747 	}
5748 #line 5749 "util/configparser.c"
5749     break;
5750 
5751   case 535: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
5752 #line 2444 "util/configparser.y"
5753         {
5754 		OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
5755 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5756 			yyerror("expected yes or no.");
5757 		else cfg_parser->cfg->rrset_roundrobin =
5758 			(strcmp((yyvsp[0].str), "yes")==0);
5759 		free((yyvsp[0].str));
5760 	}
5761 #line 5762 "util/configparser.c"
5762     break;
5763 
5764   case 536: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
5765 #line 2454 "util/configparser.y"
5766         {
5767 		OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
5768 		cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
5769 		free((yyvsp[0].str));
5770 	}
5771 #line 5772 "util/configparser.c"
5772     break;
5773 
5774   case 537: /* server_discard_timeout: VAR_DISCARD_TIMEOUT STRING_ARG  */
5775 #line 2461 "util/configparser.y"
5776         {
5777 		OUTYY(("P(server_discard_timeout:%s)\n", (yyvsp[0].str)));
5778 		cfg_parser->cfg->discard_timeout = atoi((yyvsp[0].str));
5779 		free((yyvsp[0].str));
5780 	}
5781 #line 5782 "util/configparser.c"
5782     break;
5783 
5784   case 538: /* server_wait_limit: VAR_WAIT_LIMIT STRING_ARG  */
5785 #line 2468 "util/configparser.y"
5786         {
5787 		OUTYY(("P(server_wait_limit:%s)\n", (yyvsp[0].str)));
5788 		cfg_parser->cfg->wait_limit = atoi((yyvsp[0].str));
5789 		free((yyvsp[0].str));
5790 	}
5791 #line 5792 "util/configparser.c"
5792     break;
5793 
5794   case 539: /* server_wait_limit_cookie: VAR_WAIT_LIMIT_COOKIE STRING_ARG  */
5795 #line 2475 "util/configparser.y"
5796         {
5797 		OUTYY(("P(server_wait_limit_cookie:%s)\n", (yyvsp[0].str)));
5798 		cfg_parser->cfg->wait_limit_cookie = atoi((yyvsp[0].str));
5799 		free((yyvsp[0].str));
5800 	}
5801 #line 5802 "util/configparser.c"
5802     break;
5803 
5804   case 540: /* server_wait_limit_netblock: VAR_WAIT_LIMIT_NETBLOCK STRING_ARG STRING_ARG  */
5805 #line 2482 "util/configparser.y"
5806         {
5807 		OUTYY(("P(server_wait_limit_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5808 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5809 			yyerror("number expected");
5810 			free((yyvsp[-1].str));
5811 			free((yyvsp[0].str));
5812 		} else {
5813 			if(!cfg_str2list_insert(&cfg_parser->cfg->
5814 				wait_limit_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5815 				fatal_exit("out of memory adding "
5816 					"wait-limit-netblock");
5817 		}
5818 	}
5819 #line 5820 "util/configparser.c"
5820     break;
5821 
5822   case 541: /* server_wait_limit_cookie_netblock: VAR_WAIT_LIMIT_COOKIE_NETBLOCK STRING_ARG STRING_ARG  */
5823 #line 2497 "util/configparser.y"
5824         {
5825 		OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
5826 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
5827 			yyerror("number expected");
5828 			free((yyvsp[-1].str));
5829 			free((yyvsp[0].str));
5830 		} else {
5831 			if(!cfg_str2list_insert(&cfg_parser->cfg->
5832 				wait_limit_cookie_netblock, (yyvsp[-1].str), (yyvsp[0].str)))
5833 				fatal_exit("out of memory adding "
5834 					"wait-limit-cookie-netblock");
5835 		}
5836 	}
5837 #line 5838 "util/configparser.c"
5838     break;
5839 
5840   case 542: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
5841 #line 2512 "util/configparser.y"
5842         {
5843 		OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
5844 		cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
5845 		free((yyvsp[0].str));
5846 	}
5847 #line 5848 "util/configparser.c"
5848     break;
5849 
5850   case 543: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
5851 #line 2519 "util/configparser.y"
5852         {
5853 		OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
5854 		free(cfg_parser->cfg->dns64_prefix);
5855 		cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
5856 	}
5857 #line 5858 "util/configparser.c"
5858     break;
5859 
5860   case 544: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
5861 #line 2526 "util/configparser.y"
5862         {
5863 		OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
5864 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
5865 			yyerror("expected yes or no.");
5866 		else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
5867 		free((yyvsp[0].str));
5868 	}
5869 #line 5870 "util/configparser.c"
5870     break;
5871 
5872   case 545: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
5873 #line 2535 "util/configparser.y"
5874         {
5875 		OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
5876 		if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
5877 			(yyvsp[0].str)))
5878 			fatal_exit("out of memory adding dns64-ignore-aaaa");
5879 	}
5880 #line 5881 "util/configparser.c"
5881     break;
5882 
5883   case 546: /* server_nat64_prefix: VAR_NAT64_PREFIX STRING_ARG  */
5884 #line 2543 "util/configparser.y"
5885         {
5886 		OUTYY(("P(nat64_prefix:%s)\n", (yyvsp[0].str)));
5887 		free(cfg_parser->cfg->nat64_prefix);
5888 		cfg_parser->cfg->nat64_prefix = (yyvsp[0].str);
5889 	}
5890 #line 5891 "util/configparser.c"
5891     break;
5892 
5893   case 547: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
5894 #line 2550 "util/configparser.y"
5895         {
5896 		char* p, *s = (yyvsp[0].str);
5897 		OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
5898 		while((p=strsep(&s, " \t\n")) != NULL) {
5899 			if(*p) {
5900 				if(!config_add_tag(cfg_parser->cfg, p))
5901 					yyerror("could not define-tag, "
5902 						"out of memory");
5903 			}
5904 		}
5905 		free((yyvsp[0].str));
5906 	}
5907 #line 5908 "util/configparser.c"
5908     break;
5909 
5910   case 548: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
5911 #line 2564 "util/configparser.y"
5912         {
5913 		size_t len = 0;
5914 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5915 			&len);
5916 		free((yyvsp[0].str));
5917 		OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
5918 		if(!bitlist) {
5919 			yyerror("could not parse tags, (define-tag them first)");
5920 			free((yyvsp[-1].str));
5921 		}
5922 		if(bitlist) {
5923 			if(!cfg_strbytelist_insert(
5924 				&cfg_parser->cfg->local_zone_tags,
5925 				(yyvsp[-1].str), bitlist, len)) {
5926 				yyerror("out of memory");
5927 				free((yyvsp[-1].str));
5928 			}
5929 		}
5930 	}
5931 #line 5932 "util/configparser.c"
5932     break;
5933 
5934   case 549: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
5935 #line 2585 "util/configparser.y"
5936         {
5937 		size_t len = 0;
5938 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
5939 			&len);
5940 		free((yyvsp[0].str));
5941 		OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
5942 		if(!bitlist) {
5943 			yyerror("could not parse tags, (define-tag them first)");
5944 			free((yyvsp[-1].str));
5945 		}
5946 		if(bitlist) {
5947 			if(!cfg_strbytelist_insert(
5948 				&cfg_parser->cfg->acl_tags,
5949 				(yyvsp[-1].str), bitlist, len)) {
5950 				yyerror("out of memory");
5951 				free((yyvsp[-1].str));
5952 			}
5953 		}
5954 	}
5955 #line 5956 "util/configparser.c"
5956     break;
5957 
5958   case 550: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
5959 #line 2606 "util/configparser.y"
5960         {
5961 		OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5962 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
5963 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5964 			yyerror("out of memory");
5965 			free((yyvsp[-2].str));
5966 			free((yyvsp[-1].str));
5967 			free((yyvsp[0].str));
5968 		}
5969 	}
5970 #line 5971 "util/configparser.c"
5971     break;
5972 
5973   case 551: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
5974 #line 2618 "util/configparser.y"
5975         {
5976 		OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5977 		if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
5978 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5979 			yyerror("out of memory");
5980 			free((yyvsp[-2].str));
5981 			free((yyvsp[-1].str));
5982 			free((yyvsp[0].str));
5983 		}
5984 	}
5985 #line 5986 "util/configparser.c"
5986     break;
5987 
5988   case 552: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
5989 #line 2630 "util/configparser.y"
5990         {
5991 		OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
5992 		if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
5993 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
5994 			yyerror("out of memory");
5995 			free((yyvsp[-2].str));
5996 			free((yyvsp[-1].str));
5997 			free((yyvsp[0].str));
5998 		}
5999 	}
6000 #line 6001 "util/configparser.c"
6001     break;
6002 
6003   case 553: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
6004 #line 2642 "util/configparser.y"
6005         {
6006 		OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6007 		if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
6008 			(yyvsp[-1].str), (yyvsp[0].str))) {
6009 			yyerror("out of memory");
6010 		}
6011 	}
6012 #line 6013 "util/configparser.c"
6013     break;
6014 
6015   case 554: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG  */
6016 #line 2651 "util/configparser.y"
6017         {
6018 		size_t len = 0;
6019 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6020 			&len);
6021 		free((yyvsp[0].str));
6022 		OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str)));
6023 		if(!bitlist) {
6024 			yyerror("could not parse tags, (define-tag them first)");
6025 			free((yyvsp[-1].str));
6026 		}
6027 		if(bitlist) {
6028 			if(!cfg_strbytelist_insert(
6029 				&cfg_parser->cfg->interface_tags,
6030 				(yyvsp[-1].str), bitlist, len)) {
6031 				yyerror("out of memory");
6032 				free((yyvsp[-1].str));
6033 			}
6034 		}
6035 	}
6036 #line 6037 "util/configparser.c"
6037     break;
6038 
6039   case 555: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
6040 #line 2672 "util/configparser.y"
6041         {
6042 		OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6043 		if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions,
6044 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6045 			yyerror("out of memory");
6046 			free((yyvsp[-2].str));
6047 			free((yyvsp[-1].str));
6048 			free((yyvsp[0].str));
6049 		}
6050 	}
6051 #line 6052 "util/configparser.c"
6052     break;
6053 
6054   case 556: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
6055 #line 2684 "util/configparser.y"
6056         {
6057 		OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
6058 		if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas,
6059 			(yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
6060 			yyerror("out of memory");
6061 			free((yyvsp[-2].str));
6062 			free((yyvsp[-1].str));
6063 			free((yyvsp[0].str));
6064 		}
6065 	}
6066 #line 6067 "util/configparser.c"
6067     break;
6068 
6069   case 557: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG  */
6070 #line 2696 "util/configparser.y"
6071         {
6072 		OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6073 		if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view,
6074 			(yyvsp[-1].str), (yyvsp[0].str))) {
6075 			yyerror("out of memory");
6076 		}
6077 	}
6078 #line 6079 "util/configparser.c"
6079     break;
6080 
6081   case 558: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
6082 #line 2705 "util/configparser.y"
6083         {
6084 		size_t len = 0;
6085 		uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
6086 			&len);
6087 		free((yyvsp[0].str));
6088 		OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
6089 		if(!bitlist) {
6090 			yyerror("could not parse tags, (define-tag them first)");
6091 			free((yyvsp[-1].str));
6092 		}
6093 		if(bitlist) {
6094 			if(!cfg_strbytelist_insert(
6095 				&cfg_parser->cfg->respip_tags,
6096 				(yyvsp[-1].str), bitlist, len)) {
6097 				yyerror("out of memory");
6098 				free((yyvsp[-1].str));
6099 			}
6100 		}
6101 	}
6102 #line 6103 "util/configparser.c"
6103     break;
6104 
6105   case 559: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
6106 #line 2726 "util/configparser.y"
6107         {
6108 		OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
6109 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6110 			yyerror("number expected");
6111 		else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
6112 		free((yyvsp[0].str));
6113 	}
6114 #line 6115 "util/configparser.c"
6115     break;
6116 
6117   case 560: /* server_ip_ratelimit_cookie: VAR_IP_RATELIMIT_COOKIE STRING_ARG  */
6118 #line 2735 "util/configparser.y"
6119         {
6120 		OUTYY(("P(server_ip_ratelimit_cookie:%s)\n", (yyvsp[0].str)));
6121 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6122 			yyerror("number expected");
6123 		else cfg_parser->cfg->ip_ratelimit_cookie = atoi((yyvsp[0].str));
6124 		free((yyvsp[0].str));
6125 	}
6126 #line 6127 "util/configparser.c"
6127     break;
6128 
6129   case 561: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
6130 #line 2744 "util/configparser.y"
6131         {
6132 		OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
6133 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6134 			yyerror("number expected");
6135 		else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
6136 		free((yyvsp[0].str));
6137 	}
6138 #line 6139 "util/configparser.c"
6139     break;
6140 
6141   case 562: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
6142 #line 2753 "util/configparser.y"
6143         {
6144 		OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
6145 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
6146 			yyerror("memory size expected");
6147 		free((yyvsp[0].str));
6148 	}
6149 #line 6150 "util/configparser.c"
6150     break;
6151 
6152   case 563: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
6153 #line 2761 "util/configparser.y"
6154         {
6155 		OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
6156 		if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
6157 			yyerror("memory size expected");
6158 		free((yyvsp[0].str));
6159 	}
6160 #line 6161 "util/configparser.c"
6161     break;
6162 
6163   case 564: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
6164 #line 2769 "util/configparser.y"
6165         {
6166 		OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6167 		if(atoi((yyvsp[0].str)) == 0) {
6168 			yyerror("number expected");
6169 		} else {
6170 			cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
6171 			if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
6172 				yyerror("must be a power of 2");
6173 		}
6174 		free((yyvsp[0].str));
6175 	}
6176 #line 6177 "util/configparser.c"
6177     break;
6178 
6179   case 565: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
6180 #line 2782 "util/configparser.y"
6181         {
6182 		OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
6183 		if(atoi((yyvsp[0].str)) == 0) {
6184 			yyerror("number expected");
6185 		} else {
6186 			cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
6187 			if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
6188 				yyerror("must be a power of 2");
6189 		}
6190 		free((yyvsp[0].str));
6191 	}
6192 #line 6193 "util/configparser.c"
6193     break;
6194 
6195   case 566: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
6196 #line 2795 "util/configparser.y"
6197         {
6198 		OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6199 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6200 			yyerror("number expected");
6201 			free((yyvsp[-1].str));
6202 			free((yyvsp[0].str));
6203 		} else {
6204 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6205 				ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6206 				fatal_exit("out of memory adding "
6207 					"ratelimit-for-domain");
6208 		}
6209 	}
6210 #line 6211 "util/configparser.c"
6211     break;
6212 
6213   case 567: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
6214 #line 2810 "util/configparser.y"
6215         {
6216 		OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6217 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
6218 			yyerror("number expected");
6219 			free((yyvsp[-1].str));
6220 			free((yyvsp[0].str));
6221 		} else {
6222 			if(!cfg_str2list_insert(&cfg_parser->cfg->
6223 				ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
6224 				fatal_exit("out of memory adding "
6225 					"ratelimit-below-domain");
6226 		}
6227 	}
6228 #line 6229 "util/configparser.c"
6229     break;
6230 
6231   case 568: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
6232 #line 2825 "util/configparser.y"
6233         {
6234 		OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6235 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6236 			yyerror("number expected");
6237 		else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
6238 		free((yyvsp[0].str));
6239 	}
6240 #line 6241 "util/configparser.c"
6241     break;
6242 
6243   case 569: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
6244 #line 2834 "util/configparser.y"
6245         {
6246 		OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
6247 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6248 			yyerror("number expected");
6249 		else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
6250 		free((yyvsp[0].str));
6251 	}
6252 #line 6253 "util/configparser.c"
6253     break;
6254 
6255   case 570: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG  */
6256 #line 2843 "util/configparser.y"
6257         {
6258 		OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6259 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6260 			yyerror("expected yes or no.");
6261 		else cfg_parser->cfg->ip_ratelimit_backoff =
6262 			(strcmp((yyvsp[0].str), "yes")==0);
6263 		free((yyvsp[0].str));
6264 	}
6265 #line 6266 "util/configparser.c"
6266     break;
6267 
6268   case 571: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG  */
6269 #line 2853 "util/configparser.y"
6270         {
6271 		OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
6272 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6273 			yyerror("expected yes or no.");
6274 		else cfg_parser->cfg->ratelimit_backoff =
6275 			(strcmp((yyvsp[0].str), "yes")==0);
6276 		free((yyvsp[0].str));
6277 	}
6278 #line 6279 "util/configparser.c"
6279     break;
6280 
6281   case 572: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG  */
6282 #line 2863 "util/configparser.y"
6283         {
6284 		OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
6285 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6286 			yyerror("number expected");
6287 		else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
6288 		free((yyvsp[0].str));
6289 	}
6290 #line 6291 "util/configparser.c"
6291     break;
6292 
6293   case 573: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG  */
6294 #line 2872 "util/configparser.y"
6295         {
6296 		OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str)));
6297 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6298 			yyerror("number expected");
6299 		else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str));
6300 		free((yyvsp[0].str));
6301 	}
6302 #line 6303 "util/configparser.c"
6303     break;
6304 
6305   case 574: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG  */
6306 #line 2881 "util/configparser.y"
6307         {
6308 		OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str)));
6309 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6310 			yyerror("number expected");
6311 		else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str));
6312 		free((yyvsp[0].str));
6313 	}
6314 #line 6315 "util/configparser.c"
6315     break;
6316 
6317   case 575: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
6318 #line 2890 "util/configparser.y"
6319         {
6320 		OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
6321 		free((yyvsp[0].str));
6322 	}
6323 #line 6324 "util/configparser.c"
6324     break;
6325 
6326   case 576: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
6327 #line 2896 "util/configparser.y"
6328         {
6329 		OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
6330 		if(atoi((yyvsp[0].str)) <= 0)
6331 			yyerror("number expected");
6332 		else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
6333 		free((yyvsp[0].str));
6334 	}
6335 #line 6336 "util/configparser.c"
6336     break;
6337 
6338   case 577: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
6339 #line 2905 "util/configparser.y"
6340         {
6341 		OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
6342 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6343 			yyerror("number expected");
6344 		else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
6345 		free((yyvsp[0].str));
6346 	}
6347 #line 6348 "util/configparser.c"
6348     break;
6349 
6350   case 578: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
6351 #line 2914 "util/configparser.y"
6352         {
6353 		OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
6354 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6355 			yyerror("expected yes or no.");
6356 		else cfg_parser->cfg->qname_minimisation =
6357 			(strcmp((yyvsp[0].str), "yes")==0);
6358 		free((yyvsp[0].str));
6359 	}
6360 #line 6361 "util/configparser.c"
6361     break;
6362 
6363   case 579: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
6364 #line 2924 "util/configparser.y"
6365         {
6366 		OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
6367 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6368 			yyerror("expected yes or no.");
6369 		else cfg_parser->cfg->qname_minimisation_strict =
6370 			(strcmp((yyvsp[0].str), "yes")==0);
6371 		free((yyvsp[0].str));
6372 	}
6373 #line 6374 "util/configparser.c"
6374     break;
6375 
6376   case 580: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
6377 #line 2934 "util/configparser.y"
6378         {
6379 		OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
6380 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6381 			yyerror("expected yes or no.");
6382 		else cfg_parser->cfg->pad_responses =
6383 			(strcmp((yyvsp[0].str), "yes")==0);
6384 		free((yyvsp[0].str));
6385 	}
6386 #line 6387 "util/configparser.c"
6387     break;
6388 
6389   case 581: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
6390 #line 2944 "util/configparser.y"
6391         {
6392 		OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
6393 		if(atoi((yyvsp[0].str)) == 0)
6394 			yyerror("number expected");
6395 		else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
6396 		free((yyvsp[0].str));
6397 	}
6398 #line 6399 "util/configparser.c"
6399     break;
6400 
6401   case 582: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
6402 #line 2953 "util/configparser.y"
6403         {
6404 		OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
6405 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6406 			yyerror("expected yes or no.");
6407 		else cfg_parser->cfg->pad_queries =
6408 			(strcmp((yyvsp[0].str), "yes")==0);
6409 		free((yyvsp[0].str));
6410 	}
6411 #line 6412 "util/configparser.c"
6412     break;
6413 
6414   case 583: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
6415 #line 2963 "util/configparser.y"
6416         {
6417 		OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
6418 		if(atoi((yyvsp[0].str)) == 0)
6419 			yyerror("number expected");
6420 		else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
6421 		free((yyvsp[0].str));
6422 	}
6423 #line 6424 "util/configparser.c"
6424     break;
6425 
6426   case 584: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
6427 #line 2972 "util/configparser.y"
6428         {
6429 	#ifdef USE_IPSECMOD
6430 		OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
6431 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6432 			yyerror("expected yes or no.");
6433 		else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
6434 	#else
6435 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6436 	#endif
6437 		free((yyvsp[0].str));
6438 	}
6439 #line 6440 "util/configparser.c"
6440     break;
6441 
6442   case 585: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
6443 #line 2985 "util/configparser.y"
6444         {
6445 	#ifdef USE_IPSECMOD
6446 		OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
6447 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6448 			yyerror("expected yes or no.");
6449 		else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
6450 	#else
6451 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6452 	#endif
6453 		free((yyvsp[0].str));
6454 	}
6455 #line 6456 "util/configparser.c"
6456     break;
6457 
6458   case 586: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
6459 #line 2998 "util/configparser.y"
6460         {
6461 	#ifdef USE_IPSECMOD
6462 		OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
6463 		free(cfg_parser->cfg->ipsecmod_hook);
6464 		cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
6465 	#else
6466 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6467 		free((yyvsp[0].str));
6468 	#endif
6469 	}
6470 #line 6471 "util/configparser.c"
6471     break;
6472 
6473   case 587: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
6474 #line 3010 "util/configparser.y"
6475         {
6476 	#ifdef USE_IPSECMOD
6477 		OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
6478 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6479 			yyerror("number expected");
6480 		else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
6481 		free((yyvsp[0].str));
6482 	#else
6483 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6484 		free((yyvsp[0].str));
6485 	#endif
6486 	}
6487 #line 6488 "util/configparser.c"
6488     break;
6489 
6490   case 588: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
6491 #line 3024 "util/configparser.y"
6492         {
6493 	#ifdef USE_IPSECMOD
6494 		OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
6495 		if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
6496 			yyerror("out of memory");
6497 	#else
6498 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6499 		free((yyvsp[0].str));
6500 	#endif
6501 	}
6502 #line 6503 "util/configparser.c"
6503     break;
6504 
6505   case 589: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
6506 #line 3036 "util/configparser.y"
6507         {
6508 	#ifdef USE_IPSECMOD
6509 		OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
6510 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6511 			yyerror("expected yes or no.");
6512 		else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
6513 		free((yyvsp[0].str));
6514 	#else
6515 		OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
6516 		free((yyvsp[0].str));
6517 	#endif
6518 	}
6519 #line 6520 "util/configparser.c"
6520     break;
6521 
6522   case 590: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
6523 #line 3050 "util/configparser.y"
6524         {
6525 		OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6526 		if(!cfg_str2list_insert(
6527 			&cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
6528 			fatal_exit("out of memory adding "
6529 				"edns-client-string");
6530 	}
6531 #line 6532 "util/configparser.c"
6532     break;
6533 
6534   case 591: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
6535 #line 3059 "util/configparser.y"
6536         {
6537 		OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
6538 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
6539 			yyerror("option code expected");
6540 		else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
6541 			yyerror("option code must be in interval [0, 65535]");
6542 		else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
6543 		free((yyvsp[0].str));
6544 	}
6545 #line 6546 "util/configparser.c"
6546     break;
6547 
6548   case 592: /* server_ede: VAR_EDE STRING_ARG  */
6549 #line 3070 "util/configparser.y"
6550         {
6551 		OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str)));
6552 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6553 			yyerror("expected yes or no.");
6554 		else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0);
6555 		free((yyvsp[0].str));
6556 	}
6557 #line 6558 "util/configparser.c"
6558     break;
6559 
6560   case 593: /* server_dns_error_reporting: VAR_DNS_ERROR_REPORTING STRING_ARG  */
6561 #line 3079 "util/configparser.y"
6562         {
6563 		OUTYY(("P(server_dns_error_reporting:%s)\n", (yyvsp[0].str)));
6564 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6565 			yyerror("expected yes or no.");
6566 		else cfg_parser->cfg->dns_error_reporting = (strcmp((yyvsp[0].str), "yes")==0);
6567 		free((yyvsp[0].str));
6568 	}
6569 #line 6570 "util/configparser.c"
6570     break;
6571 
6572   case 594: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG  */
6573 #line 3088 "util/configparser.y"
6574         {
6575 		OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str)));
6576 		if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str)))
6577 			yyerror("out of memory");
6578 	}
6579 #line 6580 "util/configparser.c"
6580     break;
6581 
6582   case 595: /* stub_name: VAR_NAME STRING_ARG  */
6583 #line 3095 "util/configparser.y"
6584         {
6585 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6586 		if(cfg_parser->cfg->stubs->name)
6587 			yyerror("stub name override, there must be one name "
6588 				"for one stub-zone");
6589 		free(cfg_parser->cfg->stubs->name);
6590 		cfg_parser->cfg->stubs->name = (yyvsp[0].str);
6591 	}
6592 #line 6593 "util/configparser.c"
6593     break;
6594 
6595   case 596: /* stub_host: VAR_STUB_HOST STRING_ARG  */
6596 #line 3105 "util/configparser.y"
6597         {
6598 		OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
6599 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
6600 			yyerror("out of memory");
6601 	}
6602 #line 6603 "util/configparser.c"
6603     break;
6604 
6605   case 597: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
6606 #line 3112 "util/configparser.y"
6607         {
6608 		OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
6609 		if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
6610 			yyerror("out of memory");
6611 	}
6612 #line 6613 "util/configparser.c"
6613     break;
6614 
6615   case 598: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
6616 #line 3119 "util/configparser.y"
6617         {
6618 		OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
6619 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6620 			yyerror("expected yes or no.");
6621 		else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6622 		free((yyvsp[0].str));
6623 	}
6624 #line 6625 "util/configparser.c"
6625     break;
6626 
6627   case 599: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
6628 #line 3128 "util/configparser.y"
6629         {
6630 		OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
6631 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6632 			yyerror("expected yes or no.");
6633 		else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6634 		free((yyvsp[0].str));
6635 	}
6636 #line 6637 "util/configparser.c"
6637     break;
6638 
6639   case 600: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
6640 #line 3137 "util/configparser.y"
6641         {
6642 		OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
6643 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6644 			yyerror("expected yes or no.");
6645 		else cfg_parser->cfg->stubs->ssl_upstream =
6646 			(strcmp((yyvsp[0].str), "yes")==0);
6647 		free((yyvsp[0].str));
6648 	}
6649 #line 6650 "util/configparser.c"
6650     break;
6651 
6652   case 601: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG  */
6653 #line 3147 "util/configparser.y"
6654         {
6655                 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
6656                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6657                         yyerror("expected yes or no.");
6658                 else cfg_parser->cfg->stubs->tcp_upstream =
6659                         (strcmp((yyvsp[0].str), "yes")==0);
6660                 free((yyvsp[0].str));
6661         }
6662 #line 6663 "util/configparser.c"
6663     break;
6664 
6665   case 602: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
6666 #line 3157 "util/configparser.y"
6667         {
6668 		OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
6669 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6670 			yyerror("expected yes or no.");
6671 		else cfg_parser->cfg->stubs->isprime =
6672 			(strcmp((yyvsp[0].str), "yes")==0);
6673 		free((yyvsp[0].str));
6674 	}
6675 #line 6676 "util/configparser.c"
6676     break;
6677 
6678   case 603: /* forward_name: VAR_NAME STRING_ARG  */
6679 #line 3167 "util/configparser.y"
6680         {
6681 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6682 		if(cfg_parser->cfg->forwards->name)
6683 			yyerror("forward name override, there must be one "
6684 				"name for one forward-zone");
6685 		free(cfg_parser->cfg->forwards->name);
6686 		cfg_parser->cfg->forwards->name = (yyvsp[0].str);
6687 	}
6688 #line 6689 "util/configparser.c"
6689     break;
6690 
6691   case 604: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
6692 #line 3177 "util/configparser.y"
6693         {
6694 		OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
6695 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
6696 			yyerror("out of memory");
6697 	}
6698 #line 6699 "util/configparser.c"
6699     break;
6700 
6701   case 605: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
6702 #line 3184 "util/configparser.y"
6703         {
6704 		OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
6705 		if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
6706 			yyerror("out of memory");
6707 	}
6708 #line 6709 "util/configparser.c"
6709     break;
6710 
6711   case 606: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
6712 #line 3191 "util/configparser.y"
6713         {
6714 		OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
6715 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6716 			yyerror("expected yes or no.");
6717 		else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
6718 		free((yyvsp[0].str));
6719 	}
6720 #line 6721 "util/configparser.c"
6721     break;
6722 
6723   case 607: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
6724 #line 3200 "util/configparser.y"
6725         {
6726 		OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
6727 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6728 			yyerror("expected yes or no.");
6729 		else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
6730 		free((yyvsp[0].str));
6731 	}
6732 #line 6733 "util/configparser.c"
6733     break;
6734 
6735   case 608: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
6736 #line 3209 "util/configparser.y"
6737         {
6738 		OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
6739 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6740 			yyerror("expected yes or no.");
6741 		else cfg_parser->cfg->forwards->ssl_upstream =
6742 			(strcmp((yyvsp[0].str), "yes")==0);
6743 		free((yyvsp[0].str));
6744 	}
6745 #line 6746 "util/configparser.c"
6746     break;
6747 
6748   case 609: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG  */
6749 #line 3219 "util/configparser.y"
6750         {
6751                 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
6752                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6753                         yyerror("expected yes or no.");
6754                 else cfg_parser->cfg->forwards->tcp_upstream =
6755                         (strcmp((yyvsp[0].str), "yes")==0);
6756                 free((yyvsp[0].str));
6757         }
6758 #line 6759 "util/configparser.c"
6759     break;
6760 
6761   case 610: /* auth_name: VAR_NAME STRING_ARG  */
6762 #line 3229 "util/configparser.y"
6763         {
6764 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6765 		if(cfg_parser->cfg->auths->name)
6766 			yyerror("auth name override, there must be one name "
6767 				"for one auth-zone");
6768 		free(cfg_parser->cfg->auths->name);
6769 		cfg_parser->cfg->auths->name = (yyvsp[0].str);
6770 	}
6771 #line 6772 "util/configparser.c"
6772     break;
6773 
6774   case 611: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
6775 #line 3239 "util/configparser.y"
6776         {
6777 		OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
6778 		free(cfg_parser->cfg->auths->zonefile);
6779 		cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
6780 	}
6781 #line 6782 "util/configparser.c"
6782     break;
6783 
6784   case 612: /* auth_master: VAR_MASTER STRING_ARG  */
6785 #line 3246 "util/configparser.y"
6786         {
6787 		OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
6788 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
6789 			yyerror("out of memory");
6790 	}
6791 #line 6792 "util/configparser.c"
6792     break;
6793 
6794   case 613: /* auth_url: VAR_URL STRING_ARG  */
6795 #line 3253 "util/configparser.y"
6796         {
6797 		OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
6798 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
6799 			yyerror("out of memory");
6800 	}
6801 #line 6802 "util/configparser.c"
6802     break;
6803 
6804   case 614: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
6805 #line 3260 "util/configparser.y"
6806         {
6807 		OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
6808 		if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
6809 			(yyvsp[0].str)))
6810 			yyerror("out of memory");
6811 	}
6812 #line 6813 "util/configparser.c"
6813     break;
6814 
6815   case 615: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG  */
6816 #line 3268 "util/configparser.y"
6817         {
6818 		OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
6819 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6820 			yyerror("expected yes or no.");
6821 		else cfg_parser->cfg->auths->zonemd_check =
6822 			(strcmp((yyvsp[0].str), "yes")==0);
6823 		free((yyvsp[0].str));
6824 	}
6825 #line 6826 "util/configparser.c"
6826     break;
6827 
6828   case 616: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
6829 #line 3278 "util/configparser.y"
6830         {
6831 		OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
6832 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6833 			yyerror("expected yes or no.");
6834 		else cfg_parser->cfg->auths->zonemd_reject_absence =
6835 			(strcmp((yyvsp[0].str), "yes")==0);
6836 		free((yyvsp[0].str));
6837 	}
6838 #line 6839 "util/configparser.c"
6839     break;
6840 
6841   case 617: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
6842 #line 3288 "util/configparser.y"
6843         {
6844 		OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
6845 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6846 			yyerror("expected yes or no.");
6847 		else cfg_parser->cfg->auths->for_downstream =
6848 			(strcmp((yyvsp[0].str), "yes")==0);
6849 		free((yyvsp[0].str));
6850 	}
6851 #line 6852 "util/configparser.c"
6852     break;
6853 
6854   case 618: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
6855 #line 3298 "util/configparser.y"
6856         {
6857 		OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
6858 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6859 			yyerror("expected yes or no.");
6860 		else cfg_parser->cfg->auths->for_upstream =
6861 			(strcmp((yyvsp[0].str), "yes")==0);
6862 		free((yyvsp[0].str));
6863 	}
6864 #line 6865 "util/configparser.c"
6865     break;
6866 
6867   case 619: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
6868 #line 3308 "util/configparser.y"
6869         {
6870 		OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
6871 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
6872 			yyerror("expected yes or no.");
6873 		else cfg_parser->cfg->auths->fallback_enabled =
6874 			(strcmp((yyvsp[0].str), "yes")==0);
6875 		free((yyvsp[0].str));
6876 	}
6877 #line 6878 "util/configparser.c"
6878     break;
6879 
6880   case 620: /* view_name: VAR_NAME STRING_ARG  */
6881 #line 3318 "util/configparser.y"
6882         {
6883 		OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
6884 		if(cfg_parser->cfg->views->name)
6885 			yyerror("view name override, there must be one "
6886 				"name for one view");
6887 		free(cfg_parser->cfg->views->name);
6888 		cfg_parser->cfg->views->name = (yyvsp[0].str);
6889 	}
6890 #line 6891 "util/configparser.c"
6891     break;
6892 
6893   case 621: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
6894 #line 3328 "util/configparser.y"
6895         {
6896 		OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6897 		if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
6898 		   strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
6899 		   strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
6900 		   && strcmp((yyvsp[0].str), "typetransparent")!=0
6901 		   && strcmp((yyvsp[0].str), "always_transparent")!=0
6902 		   && strcmp((yyvsp[0].str), "always_refuse")!=0
6903 		   && strcmp((yyvsp[0].str), "always_nxdomain")!=0
6904 		   && strcmp((yyvsp[0].str), "always_nodata")!=0
6905 		   && strcmp((yyvsp[0].str), "always_deny")!=0
6906 		   && strcmp((yyvsp[0].str), "always_null")!=0
6907 		   && strcmp((yyvsp[0].str), "noview")!=0
6908 		   && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
6909 		   && strcmp((yyvsp[0].str), "inform_redirect") != 0
6910 		   && strcmp((yyvsp[0].str), "ipset") != 0) {
6911 			yyerror("local-zone type: expected static, deny, "
6912 				"refuse, redirect, transparent, "
6913 				"typetransparent, inform, inform_deny, "
6914 				"inform_redirect, always_transparent, "
6915 				"always_refuse, always_nxdomain, "
6916 				"always_nodata, always_deny, always_null, "
6917 				"noview, nodefault or ipset");
6918 			free((yyvsp[-1].str));
6919 			free((yyvsp[0].str));
6920 		} else if(strcmp((yyvsp[0].str), "nodefault")==0) {
6921 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6922 				local_zones_nodefault, (yyvsp[-1].str)))
6923 				fatal_exit("out of memory adding local-zone");
6924 			free((yyvsp[0].str));
6925 #ifdef USE_IPSET
6926 		} else if(strcmp((yyvsp[0].str), "ipset")==0) {
6927 			size_t len = strlen((yyvsp[-1].str));
6928 			/* Make sure to add the trailing dot.
6929 			 * These are str compared to domain names. */
6930 			if((yyvsp[-1].str)[len-1] != '.') {
6931 				if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
6932 					fatal_exit("out of memory adding local-zone");
6933 				}
6934 				(yyvsp[-1].str)[len] = '.';
6935 				(yyvsp[-1].str)[len+1] = 0;
6936 			}
6937 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6938 				local_zones_ipset, (yyvsp[-1].str)))
6939 				fatal_exit("out of memory adding local-zone");
6940 			free((yyvsp[0].str));
6941 #endif
6942 		} else {
6943 			if(!cfg_str2list_insert(
6944 				&cfg_parser->cfg->views->local_zones,
6945 				(yyvsp[-1].str), (yyvsp[0].str)))
6946 				fatal_exit("out of memory adding local-zone");
6947 		}
6948 	}
6949 #line 6950 "util/configparser.c"
6950     break;
6951 
6952   case 622: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
6953 #line 3384 "util/configparser.y"
6954         {
6955 		OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
6956 		validate_respip_action((yyvsp[0].str));
6957 		if(!cfg_str2list_insert(
6958 			&cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
6959 			fatal_exit("out of memory adding per-view "
6960 				"response-ip action");
6961 	}
6962 #line 6963 "util/configparser.c"
6963     break;
6964 
6965   case 623: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
6966 #line 3394 "util/configparser.y"
6967         {
6968 		OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
6969 		if(!cfg_str2list_insert(
6970 			&cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
6971 			fatal_exit("out of memory adding response-ip-data");
6972 	}
6973 #line 6974 "util/configparser.c"
6974     break;
6975 
6976   case 624: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
6977 #line 3402 "util/configparser.y"
6978         {
6979 		OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
6980 		if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
6981 			fatal_exit("out of memory adding local-data");
6982 		}
6983 	}
6984 #line 6985 "util/configparser.c"
6985     break;
6986 
6987   case 625: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
6988 #line 3410 "util/configparser.y"
6989         {
6990 		char* ptr;
6991 		OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
6992 		ptr = cfg_ptr_reverse((yyvsp[0].str));
6993 		free((yyvsp[0].str));
6994 		if(ptr) {
6995 			if(!cfg_strlist_insert(&cfg_parser->cfg->views->
6996 				local_data, ptr))
6997 				fatal_exit("out of memory adding local-data");
6998 		} else {
6999 			yyerror("local-data-ptr could not be reversed");
7000 		}
7001 	}
7002 #line 7003 "util/configparser.c"
7003     break;
7004 
7005   case 626: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
7006 #line 3425 "util/configparser.y"
7007         {
7008 		OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
7009 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7010 			yyerror("expected yes or no.");
7011 		else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
7012 		free((yyvsp[0].str));
7013 	}
7014 #line 7015 "util/configparser.c"
7015     break;
7016 
7017   case 627: /* rcstart: VAR_REMOTE_CONTROL  */
7018 #line 3434 "util/configparser.y"
7019         {
7020 		OUTYY(("\nP(remote-control:)\n"));
7021 		cfg_parser->started_toplevel = 1;
7022 	}
7023 #line 7024 "util/configparser.c"
7024     break;
7025 
7026   case 638: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
7027 #line 3446 "util/configparser.y"
7028         {
7029 		OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
7030 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7031 			yyerror("expected yes or no.");
7032 		else cfg_parser->cfg->remote_control_enable =
7033 			(strcmp((yyvsp[0].str), "yes")==0);
7034 		free((yyvsp[0].str));
7035 	}
7036 #line 7037 "util/configparser.c"
7037     break;
7038 
7039   case 639: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
7040 #line 3456 "util/configparser.y"
7041         {
7042 		OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
7043 		if(atoi((yyvsp[0].str)) == 0)
7044 			yyerror("control port number expected");
7045 		else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
7046 		free((yyvsp[0].str));
7047 	}
7048 #line 7049 "util/configparser.c"
7049     break;
7050 
7051   case 640: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
7052 #line 3465 "util/configparser.y"
7053         {
7054 		OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
7055 		if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
7056 			yyerror("out of memory");
7057 	}
7058 #line 7059 "util/configparser.c"
7059     break;
7060 
7061   case 641: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
7062 #line 3472 "util/configparser.y"
7063         {
7064 		OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
7065 		cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
7066 		free((yyvsp[0].str));
7067 	}
7068 #line 7069 "util/configparser.c"
7069     break;
7070 
7071   case 642: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
7072 #line 3479 "util/configparser.y"
7073         {
7074 		OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
7075 		free(cfg_parser->cfg->server_key_file);
7076 		cfg_parser->cfg->server_key_file = (yyvsp[0].str);
7077 	}
7078 #line 7079 "util/configparser.c"
7079     break;
7080 
7081   case 643: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
7082 #line 3486 "util/configparser.y"
7083         {
7084 		OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
7085 		free(cfg_parser->cfg->server_cert_file);
7086 		cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
7087 	}
7088 #line 7089 "util/configparser.c"
7089     break;
7090 
7091   case 644: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
7092 #line 3493 "util/configparser.y"
7093         {
7094 		OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
7095 		free(cfg_parser->cfg->control_key_file);
7096 		cfg_parser->cfg->control_key_file = (yyvsp[0].str);
7097 	}
7098 #line 7099 "util/configparser.c"
7099     break;
7100 
7101   case 645: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
7102 #line 3500 "util/configparser.y"
7103         {
7104 		OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
7105 		free(cfg_parser->cfg->control_cert_file);
7106 		cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
7107 	}
7108 #line 7109 "util/configparser.c"
7109     break;
7110 
7111   case 646: /* dtstart: VAR_DNSTAP  */
7112 #line 3507 "util/configparser.y"
7113         {
7114 		OUTYY(("\nP(dnstap:)\n"));
7115 		cfg_parser->started_toplevel = 1;
7116 	}
7117 #line 7118 "util/configparser.c"
7118     break;
7119 
7120   case 669: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
7121 #line 3529 "util/configparser.y"
7122         {
7123 		OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
7124 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7125 			yyerror("expected yes or no.");
7126 		else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
7127 		free((yyvsp[0].str));
7128 	}
7129 #line 7130 "util/configparser.c"
7130     break;
7131 
7132   case 670: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
7133 #line 3538 "util/configparser.y"
7134         {
7135 		OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
7136 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7137 			yyerror("expected yes or no.");
7138 		else cfg_parser->cfg->dnstap_bidirectional =
7139 			(strcmp((yyvsp[0].str), "yes")==0);
7140 		free((yyvsp[0].str));
7141 	}
7142 #line 7143 "util/configparser.c"
7143     break;
7144 
7145   case 671: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
7146 #line 3548 "util/configparser.y"
7147         {
7148 		OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
7149 		free(cfg_parser->cfg->dnstap_socket_path);
7150 		cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
7151 	}
7152 #line 7153 "util/configparser.c"
7153     break;
7154 
7155   case 672: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
7156 #line 3555 "util/configparser.y"
7157         {
7158 		OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
7159 		free(cfg_parser->cfg->dnstap_ip);
7160 		cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
7161 	}
7162 #line 7163 "util/configparser.c"
7163     break;
7164 
7165   case 673: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
7166 #line 3562 "util/configparser.y"
7167         {
7168 		OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
7169 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7170 			yyerror("expected yes or no.");
7171 		else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
7172 		free((yyvsp[0].str));
7173 	}
7174 #line 7175 "util/configparser.c"
7175     break;
7176 
7177   case 674: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
7178 #line 3571 "util/configparser.y"
7179         {
7180 		OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
7181 		free(cfg_parser->cfg->dnstap_tls_server_name);
7182 		cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
7183 	}
7184 #line 7185 "util/configparser.c"
7185     break;
7186 
7187   case 675: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
7188 #line 3578 "util/configparser.y"
7189         {
7190 		OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
7191 		free(cfg_parser->cfg->dnstap_tls_cert_bundle);
7192 		cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
7193 	}
7194 #line 7195 "util/configparser.c"
7195     break;
7196 
7197   case 676: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
7198 #line 3585 "util/configparser.y"
7199         {
7200 		OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
7201 		free(cfg_parser->cfg->dnstap_tls_client_key_file);
7202 		cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
7203 	}
7204 #line 7205 "util/configparser.c"
7205     break;
7206 
7207   case 677: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
7208 #line 3592 "util/configparser.y"
7209         {
7210 		OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
7211 		free(cfg_parser->cfg->dnstap_tls_client_cert_file);
7212 		cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
7213 	}
7214 #line 7215 "util/configparser.c"
7215     break;
7216 
7217   case 678: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
7218 #line 3599 "util/configparser.y"
7219         {
7220 		OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
7221 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7222 			yyerror("expected yes or no.");
7223 		else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
7224 		free((yyvsp[0].str));
7225 	}
7226 #line 7227 "util/configparser.c"
7227     break;
7228 
7229   case 679: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
7230 #line 3608 "util/configparser.y"
7231         {
7232 		OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
7233 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7234 			yyerror("expected yes or no.");
7235 		else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
7236 		free((yyvsp[0].str));
7237 	}
7238 #line 7239 "util/configparser.c"
7239     break;
7240 
7241   case 680: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
7242 #line 3617 "util/configparser.y"
7243         {
7244 		OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
7245 		free(cfg_parser->cfg->dnstap_identity);
7246 		cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
7247 	}
7248 #line 7249 "util/configparser.c"
7249     break;
7250 
7251   case 681: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
7252 #line 3624 "util/configparser.y"
7253         {
7254 		OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
7255 		free(cfg_parser->cfg->dnstap_version);
7256 		cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
7257 	}
7258 #line 7259 "util/configparser.c"
7259     break;
7260 
7261   case 682: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
7262 #line 3631 "util/configparser.y"
7263         {
7264 		OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
7265 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7266 			yyerror("expected yes or no.");
7267 		else cfg_parser->cfg->dnstap_log_resolver_query_messages =
7268 			(strcmp((yyvsp[0].str), "yes")==0);
7269 		free((yyvsp[0].str));
7270 	}
7271 #line 7272 "util/configparser.c"
7272     break;
7273 
7274   case 683: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
7275 #line 3641 "util/configparser.y"
7276         {
7277 		OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
7278 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7279 			yyerror("expected yes or no.");
7280 		else cfg_parser->cfg->dnstap_log_resolver_response_messages =
7281 			(strcmp((yyvsp[0].str), "yes")==0);
7282 		free((yyvsp[0].str));
7283 	}
7284 #line 7285 "util/configparser.c"
7285     break;
7286 
7287   case 684: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
7288 #line 3651 "util/configparser.y"
7289         {
7290 		OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
7291 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7292 			yyerror("expected yes or no.");
7293 		else cfg_parser->cfg->dnstap_log_client_query_messages =
7294 			(strcmp((yyvsp[0].str), "yes")==0);
7295 		free((yyvsp[0].str));
7296 	}
7297 #line 7298 "util/configparser.c"
7298     break;
7299 
7300   case 685: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
7301 #line 3661 "util/configparser.y"
7302         {
7303 		OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
7304 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7305 			yyerror("expected yes or no.");
7306 		else cfg_parser->cfg->dnstap_log_client_response_messages =
7307 			(strcmp((yyvsp[0].str), "yes")==0);
7308 		free((yyvsp[0].str));
7309 	}
7310 #line 7311 "util/configparser.c"
7311     break;
7312 
7313   case 686: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
7314 #line 3671 "util/configparser.y"
7315         {
7316 		OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
7317 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7318 			yyerror("expected yes or no.");
7319 		else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
7320 			(strcmp((yyvsp[0].str), "yes")==0);
7321 		free((yyvsp[0].str));
7322 	}
7323 #line 7324 "util/configparser.c"
7324     break;
7325 
7326   case 687: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
7327 #line 3681 "util/configparser.y"
7328         {
7329 		OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
7330 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7331 			yyerror("expected yes or no.");
7332 		else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
7333 			(strcmp((yyvsp[0].str), "yes")==0);
7334 		free((yyvsp[0].str));
7335 	}
7336 #line 7337 "util/configparser.c"
7337     break;
7338 
7339   case 688: /* dt_dnstap_sample_rate: VAR_DNSTAP_SAMPLE_RATE STRING_ARG  */
7340 #line 3691 "util/configparser.y"
7341         {
7342 		OUTYY(("P(dt_dnstap_sample_rate:%s)\n", (yyvsp[0].str)));
7343 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7344 			yyerror("number expected");
7345 		else if(atoi((yyvsp[0].str)) < 0)
7346 			yyerror("dnstap sample rate too small");
7347 		else	cfg_parser->cfg->dnstap_sample_rate = atoi((yyvsp[0].str));
7348 		free((yyvsp[0].str));
7349 	}
7350 #line 7351 "util/configparser.c"
7351     break;
7352 
7353   case 689: /* pythonstart: VAR_PYTHON  */
7354 #line 3702 "util/configparser.y"
7355         {
7356 		OUTYY(("\nP(python:)\n"));
7357 		cfg_parser->started_toplevel = 1;
7358 	}
7359 #line 7360 "util/configparser.c"
7360     break;
7361 
7362   case 693: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
7363 #line 3712 "util/configparser.y"
7364         {
7365 		OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
7366 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
7367 			yyerror("out of memory");
7368 	}
7369 #line 7370 "util/configparser.c"
7370     break;
7371 
7372   case 694: /* dynlibstart: VAR_DYNLIB  */
7373 #line 3719 "util/configparser.y"
7374         {
7375 		OUTYY(("\nP(dynlib:)\n"));
7376 		cfg_parser->started_toplevel = 1;
7377 	}
7378 #line 7379 "util/configparser.c"
7379     break;
7380 
7381   case 698: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
7382 #line 3729 "util/configparser.y"
7383         {
7384 		OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
7385 		if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
7386 			yyerror("out of memory");
7387 	}
7388 #line 7389 "util/configparser.c"
7389     break;
7390 
7391   case 699: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
7392 #line 3736 "util/configparser.y"
7393         {
7394 		OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
7395 		if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7396 			yyerror("expected yes or no.");
7397 		else cfg_parser->cfg->disable_dnssec_lame_check =
7398 			(strcmp((yyvsp[0].str), "yes")==0);
7399 		free((yyvsp[0].str));
7400 	}
7401 #line 7402 "util/configparser.c"
7402     break;
7403 
7404   case 700: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
7405 #line 3746 "util/configparser.y"
7406         {
7407 		OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
7408 		free(cfg_parser->cfg->log_identity);
7409 		cfg_parser->cfg->log_identity = (yyvsp[0].str);
7410 	}
7411 #line 7412 "util/configparser.c"
7412     break;
7413 
7414   case 701: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
7415 #line 3753 "util/configparser.y"
7416         {
7417 		OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7418 		validate_respip_action((yyvsp[0].str));
7419 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
7420 			(yyvsp[-1].str), (yyvsp[0].str)))
7421 			fatal_exit("out of memory adding response-ip");
7422 	}
7423 #line 7424 "util/configparser.c"
7424     break;
7425 
7426   case 702: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
7427 #line 3762 "util/configparser.y"
7428         {
7429 		OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
7430 		if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
7431 			(yyvsp[-1].str), (yyvsp[0].str)))
7432 			fatal_exit("out of memory adding response-ip-data");
7433 	}
7434 #line 7435 "util/configparser.c"
7435     break;
7436 
7437   case 703: /* dnscstart: VAR_DNSCRYPT  */
7438 #line 3770 "util/configparser.y"
7439         {
7440 		OUTYY(("\nP(dnscrypt:)\n"));
7441 		cfg_parser->started_toplevel = 1;
7442 	}
7443 #line 7444 "util/configparser.c"
7444     break;
7445 
7446   case 716: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
7447 #line 3787 "util/configparser.y"
7448         {
7449 		OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
7450 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7451 			yyerror("expected yes or no.");
7452 		else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
7453 		free((yyvsp[0].str));
7454 	}
7455 #line 7456 "util/configparser.c"
7456     break;
7457 
7458   case 717: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
7459 #line 3796 "util/configparser.y"
7460         {
7461 		OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
7462 		if(atoi((yyvsp[0].str)) == 0)
7463 			yyerror("port number expected");
7464 		else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
7465 		free((yyvsp[0].str));
7466 	}
7467 #line 7468 "util/configparser.c"
7468     break;
7469 
7470   case 718: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
7471 #line 3805 "util/configparser.y"
7472         {
7473 		OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
7474 		free(cfg_parser->cfg->dnscrypt_provider);
7475 		cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
7476 	}
7477 #line 7478 "util/configparser.c"
7478     break;
7479 
7480   case 719: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
7481 #line 3812 "util/configparser.y"
7482         {
7483 		OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
7484 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7485 			log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
7486 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
7487 			fatal_exit("out of memory adding dnscrypt-provider-cert");
7488 	}
7489 #line 7490 "util/configparser.c"
7490     break;
7491 
7492   case 720: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
7493 #line 3821 "util/configparser.y"
7494         {
7495 		OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
7496 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
7497 			fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
7498 	}
7499 #line 7500 "util/configparser.c"
7500     break;
7501 
7502   case 721: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
7503 #line 3828 "util/configparser.y"
7504         {
7505 		OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
7506 		if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7507 			log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
7508 		if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
7509 			fatal_exit("out of memory adding dnscrypt-secret-key");
7510 	}
7511 #line 7512 "util/configparser.c"
7512     break;
7513 
7514   case 722: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
7515 #line 3837 "util/configparser.y"
7516   {
7517 	OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
7518 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
7519 		yyerror("memory size expected");
7520 	free((yyvsp[0].str));
7521   }
7522 #line 7523 "util/configparser.c"
7523     break;
7524 
7525   case 723: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
7526 #line 3845 "util/configparser.y"
7527   {
7528 	OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
7529 	if(atoi((yyvsp[0].str)) == 0) {
7530 		yyerror("number expected");
7531 	} else {
7532 		cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
7533 		if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
7534 			yyerror("must be a power of 2");
7535 	}
7536 	free((yyvsp[0].str));
7537   }
7538 #line 7539 "util/configparser.c"
7539     break;
7540 
7541   case 724: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
7542 #line 3858 "util/configparser.y"
7543   {
7544 	OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
7545 	if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
7546 		yyerror("memory size expected");
7547 	free((yyvsp[0].str));
7548   }
7549 #line 7550 "util/configparser.c"
7550     break;
7551 
7552   case 725: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
7553 #line 3866 "util/configparser.y"
7554   {
7555 	OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
7556 	if(atoi((yyvsp[0].str)) == 0) {
7557 		yyerror("number expected");
7558 	} else {
7559 		cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
7560 		if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
7561 			yyerror("must be a power of 2");
7562 	}
7563 	free((yyvsp[0].str));
7564   }
7565 #line 7566 "util/configparser.c"
7566     break;
7567 
7568   case 726: /* cachedbstart: VAR_CACHEDB  */
7569 #line 3879 "util/configparser.y"
7570         {
7571 		OUTYY(("\nP(cachedb:)\n"));
7572 		cfg_parser->started_toplevel = 1;
7573 	}
7574 #line 7575 "util/configparser.c"
7575     break;
7576 
7577   case 750: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
7578 #line 3899 "util/configparser.y"
7579         {
7580 	#ifdef USE_CACHEDB
7581 		OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
7582 		free(cfg_parser->cfg->cachedb_backend);
7583 		cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
7584 	#else
7585 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7586 		free((yyvsp[0].str));
7587 	#endif
7588 	}
7589 #line 7590 "util/configparser.c"
7590     break;
7591 
7592   case 751: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
7593 #line 3911 "util/configparser.y"
7594         {
7595 	#ifdef USE_CACHEDB
7596 		OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
7597 		free(cfg_parser->cfg->cachedb_secret);
7598 		cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
7599 	#else
7600 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7601 		free((yyvsp[0].str));
7602 	#endif
7603 	}
7604 #line 7605 "util/configparser.c"
7605     break;
7606 
7607   case 752: /* cachedb_no_store: VAR_CACHEDB_NO_STORE STRING_ARG  */
7608 #line 3923 "util/configparser.y"
7609         {
7610 	#ifdef USE_CACHEDB
7611 		OUTYY(("P(cachedb_no_store:%s)\n", (yyvsp[0].str)));
7612 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7613 			yyerror("expected yes or no.");
7614 		else cfg_parser->cfg->cachedb_no_store = (strcmp((yyvsp[0].str), "yes")==0);
7615 	#else
7616 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7617 	#endif
7618 		free((yyvsp[0].str));
7619 	}
7620 #line 7621 "util/configparser.c"
7621     break;
7622 
7623   case 753: /* cachedb_check_when_serve_expired: VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED STRING_ARG  */
7624 #line 3936 "util/configparser.y"
7625         {
7626 	#ifdef USE_CACHEDB
7627 		OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", (yyvsp[0].str)));
7628 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7629 			yyerror("expected yes or no.");
7630 		else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
7631 	#else
7632 		OUTYY(("P(Compiled without cachedb, ignoring)\n"));
7633 	#endif
7634 		free((yyvsp[0].str));
7635 	}
7636 #line 7637 "util/configparser.c"
7637     break;
7638 
7639   case 754: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
7640 #line 3949 "util/configparser.y"
7641         {
7642 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7643 		OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
7644 		free(cfg_parser->cfg->redis_server_host);
7645 		cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
7646 	#else
7647 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7648 		free((yyvsp[0].str));
7649 	#endif
7650 	}
7651 #line 7652 "util/configparser.c"
7652     break;
7653 
7654   case 755: /* redis_replica_server_host: VAR_CACHEDB_REDISREPLICAHOST STRING_ARG  */
7655 #line 3961 "util/configparser.y"
7656         {
7657 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7658 		OUTYY(("P(redis_replica_server_host:%s)\n", (yyvsp[0].str)));
7659 		free(cfg_parser->cfg->redis_replica_server_host);
7660 		cfg_parser->cfg->redis_replica_server_host = (yyvsp[0].str);
7661 	#else
7662 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7663 		free((yyvsp[0].str));
7664 	#endif
7665 	}
7666 #line 7667 "util/configparser.c"
7667     break;
7668 
7669   case 756: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
7670 #line 3973 "util/configparser.y"
7671         {
7672 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7673 		int port;
7674 		OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
7675 		port = atoi((yyvsp[0].str));
7676 		if(port == 0 || port < 0 || port > 65535)
7677 			yyerror("valid redis server port number expected");
7678 		else cfg_parser->cfg->redis_server_port = port;
7679 	#else
7680 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7681 	#endif
7682 		free((yyvsp[0].str));
7683 	}
7684 #line 7685 "util/configparser.c"
7685     break;
7686 
7687   case 757: /* redis_replica_server_port: VAR_CACHEDB_REDISREPLICAPORT STRING_ARG  */
7688 #line 3988 "util/configparser.y"
7689         {
7690 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7691 		int port;
7692 		OUTYY(("P(redis_replica_server_port:%s)\n", (yyvsp[0].str)));
7693 		port = atoi((yyvsp[0].str));
7694 		if(port == 0 || port < 0 || port > 65535)
7695 			yyerror("valid redis server port number expected");
7696 		else cfg_parser->cfg->redis_replica_server_port = port;
7697 	#else
7698 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7699 	#endif
7700 		free((yyvsp[0].str));
7701 	}
7702 #line 7703 "util/configparser.c"
7703     break;
7704 
7705   case 758: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG  */
7706 #line 4003 "util/configparser.y"
7707         {
7708 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7709 		OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str)));
7710 		free(cfg_parser->cfg->redis_server_path);
7711 		cfg_parser->cfg->redis_server_path = (yyvsp[0].str);
7712 	#else
7713 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7714 		free((yyvsp[0].str));
7715 	#endif
7716 	}
7717 #line 7718 "util/configparser.c"
7718     break;
7719 
7720   case 759: /* redis_replica_server_path: VAR_CACHEDB_REDISREPLICAPATH STRING_ARG  */
7721 #line 4015 "util/configparser.y"
7722         {
7723 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7724 		OUTYY(("P(redis_replica_server_path:%s)\n", (yyvsp[0].str)));
7725 		free(cfg_parser->cfg->redis_replica_server_path);
7726 		cfg_parser->cfg->redis_replica_server_path = (yyvsp[0].str);
7727 	#else
7728 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7729 		free((yyvsp[0].str));
7730 	#endif
7731 	}
7732 #line 7733 "util/configparser.c"
7733     break;
7734 
7735   case 760: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG  */
7736 #line 4027 "util/configparser.y"
7737         {
7738 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7739 		OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str)));
7740 		free(cfg_parser->cfg->redis_server_password);
7741 		cfg_parser->cfg->redis_server_password = (yyvsp[0].str);
7742 	#else
7743 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7744 		free((yyvsp[0].str));
7745 	#endif
7746 	}
7747 #line 7748 "util/configparser.c"
7748     break;
7749 
7750   case 761: /* redis_replica_server_password: VAR_CACHEDB_REDISREPLICAPASSWORD STRING_ARG  */
7751 #line 4039 "util/configparser.y"
7752         {
7753 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7754 		OUTYY(("P(redis_replica_server_password:%s)\n", (yyvsp[0].str)));
7755 		free(cfg_parser->cfg->redis_replica_server_password);
7756 		cfg_parser->cfg->redis_replica_server_password = (yyvsp[0].str);
7757 	#else
7758 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7759 		free((yyvsp[0].str));
7760 	#endif
7761 	}
7762 #line 7763 "util/configparser.c"
7763     break;
7764 
7765   case 762: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
7766 #line 4051 "util/configparser.y"
7767         {
7768 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7769 		OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
7770 		if(atoi((yyvsp[0].str)) == 0)
7771 			yyerror("redis timeout value expected");
7772 		else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
7773 	#else
7774 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7775 	#endif
7776 		free((yyvsp[0].str));
7777 	}
7778 #line 7779 "util/configparser.c"
7779     break;
7780 
7781   case 763: /* redis_replica_timeout: VAR_CACHEDB_REDISREPLICATIMEOUT STRING_ARG  */
7782 #line 4064 "util/configparser.y"
7783         {
7784 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7785 		OUTYY(("P(redis_replica_timeout:%s)\n", (yyvsp[0].str)));
7786 		if(atoi((yyvsp[0].str)) == 0)
7787 			yyerror("redis timeout value expected");
7788 		else cfg_parser->cfg->redis_replica_timeout = atoi((yyvsp[0].str));
7789 	#else
7790 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7791 	#endif
7792 		free((yyvsp[0].str));
7793 	}
7794 #line 7795 "util/configparser.c"
7795     break;
7796 
7797   case 764: /* redis_command_timeout: VAR_CACHEDB_REDISCOMMANDTIMEOUT STRING_ARG  */
7798 #line 4077 "util/configparser.y"
7799         {
7800 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7801 		OUTYY(("P(redis_command_timeout:%s)\n", (yyvsp[0].str)));
7802 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7803 			yyerror("redis command timeout value expected");
7804 		else cfg_parser->cfg->redis_command_timeout = atoi((yyvsp[0].str));
7805 	#else
7806 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7807 	#endif
7808 		free((yyvsp[0].str));
7809 	}
7810 #line 7811 "util/configparser.c"
7811     break;
7812 
7813   case 765: /* redis_replica_command_timeout: VAR_CACHEDB_REDISREPLICACOMMANDTIMEOUT STRING_ARG  */
7814 #line 4090 "util/configparser.y"
7815         {
7816 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7817 		OUTYY(("P(redis_replica_command_timeout:%s)\n", (yyvsp[0].str)));
7818 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7819 			yyerror("redis command timeout value expected");
7820 		else cfg_parser->cfg->redis_replica_command_timeout = atoi((yyvsp[0].str));
7821 	#else
7822 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7823 	#endif
7824 		free((yyvsp[0].str));
7825 	}
7826 #line 7827 "util/configparser.c"
7827     break;
7828 
7829   case 766: /* redis_connect_timeout: VAR_CACHEDB_REDISCONNECTTIMEOUT STRING_ARG  */
7830 #line 4103 "util/configparser.y"
7831         {
7832 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7833 		OUTYY(("P(redis_connect_timeout:%s)\n", (yyvsp[0].str)));
7834 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7835 			yyerror("redis connect timeout value expected");
7836 		else cfg_parser->cfg->redis_connect_timeout = atoi((yyvsp[0].str));
7837 	#else
7838 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7839 	#endif
7840 		free((yyvsp[0].str));
7841 	}
7842 #line 7843 "util/configparser.c"
7843     break;
7844 
7845   case 767: /* redis_replica_connect_timeout: VAR_CACHEDB_REDISREPLICACONNECTTIMEOUT STRING_ARG  */
7846 #line 4116 "util/configparser.y"
7847         {
7848 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7849 		OUTYY(("P(redis_replica_connect_timeout:%s)\n", (yyvsp[0].str)));
7850 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7851 			yyerror("redis connect timeout value expected");
7852 		else cfg_parser->cfg->redis_replica_connect_timeout = atoi((yyvsp[0].str));
7853 	#else
7854 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7855 	#endif
7856 		free((yyvsp[0].str));
7857 	}
7858 #line 7859 "util/configparser.c"
7859     break;
7860 
7861   case 768: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
7862 #line 4129 "util/configparser.y"
7863         {
7864 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7865 		OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
7866 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7867 			yyerror("expected yes or no.");
7868 		else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
7869 	#else
7870 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7871 	#endif
7872 		free((yyvsp[0].str));
7873 	}
7874 #line 7875 "util/configparser.c"
7875     break;
7876 
7877   case 769: /* redis_logical_db: VAR_CACHEDB_REDISLOGICALDB STRING_ARG  */
7878 #line 4142 "util/configparser.y"
7879         {
7880 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7881 		int db;
7882 		OUTYY(("P(redis_logical_db:%s)\n", (yyvsp[0].str)));
7883 		db = atoi((yyvsp[0].str));
7884 		if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7885 			yyerror("valid redis logical database index expected");
7886 		else cfg_parser->cfg->redis_logical_db = db;
7887 	#else
7888 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7889 	#endif
7890 		free((yyvsp[0].str));
7891 	}
7892 #line 7893 "util/configparser.c"
7893     break;
7894 
7895   case 770: /* redis_replica_logical_db: VAR_CACHEDB_REDISREPLICALOGICALDB STRING_ARG  */
7896 #line 4157 "util/configparser.y"
7897         {
7898 	#if defined(USE_CACHEDB) && defined(USE_REDIS)
7899 		int db;
7900 		OUTYY(("P(redis_replica_logical_db:%s)\n", (yyvsp[0].str)));
7901 		db = atoi((yyvsp[0].str));
7902 		if((db == 0 && strcmp((yyvsp[0].str), "0") != 0) || db < 0)
7903 			yyerror("valid redis logical database index expected");
7904 		else cfg_parser->cfg->redis_replica_logical_db = db;
7905 	#else
7906 		OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
7907 	#endif
7908 		free((yyvsp[0].str));
7909 	}
7910 #line 7911 "util/configparser.c"
7911     break;
7912 
7913   case 771: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
7914 #line 4172 "util/configparser.y"
7915         {
7916 		OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
7917 		if (atoi((yyvsp[0].str)) < 0)
7918 			yyerror("positive number expected");
7919 		else {
7920 			if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
7921 				fatal_exit("out of memory adding tcp connection limit");
7922 		}
7923 	}
7924 #line 7925 "util/configparser.c"
7925     break;
7926 
7927   case 772: /* server_answer_cookie: VAR_ANSWER_COOKIE STRING_ARG  */
7928 #line 4183 "util/configparser.y"
7929         {
7930 		OUTYY(("P(server_answer_cookie:%s)\n", (yyvsp[0].str)));
7931 		if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
7932 			yyerror("expected yes or no.");
7933 		else cfg_parser->cfg->do_answer_cookie = (strcmp((yyvsp[0].str), "yes")==0);
7934 		free((yyvsp[0].str));
7935 	}
7936 #line 7937 "util/configparser.c"
7937     break;
7938 
7939   case 773: /* server_cookie_secret: VAR_COOKIE_SECRET STRING_ARG  */
7940 #line 4192 "util/configparser.y"
7941         {
7942 		uint8_t secret[32];
7943 		size_t secret_len = sizeof(secret);
7944 
7945 		OUTYY(("P(server_cookie_secret:%s)\n", (yyvsp[0].str)));
7946 		if(sldns_str2wire_hex_buf((yyvsp[0].str), secret, &secret_len)
7947 		|| (secret_len != 16))
7948 			yyerror("expected 128 bit hex string");
7949 		else {
7950 			cfg_parser->cfg->cookie_secret_len = secret_len;
7951 			memcpy(cfg_parser->cfg->cookie_secret, secret, sizeof(secret));
7952 		}
7953 		free((yyvsp[0].str));
7954 	}
7955 #line 7956 "util/configparser.c"
7956     break;
7957 
7958   case 774: /* server_cookie_secret_file: VAR_COOKIE_SECRET_FILE STRING_ARG  */
7959 #line 4208 "util/configparser.y"
7960         {
7961 		OUTYY(("P(cookie_secret_file:%s)\n", (yyvsp[0].str)));
7962 		free(cfg_parser->cfg->cookie_secret_file);
7963 		cfg_parser->cfg->cookie_secret_file = (yyvsp[0].str);
7964 	}
7965 #line 7966 "util/configparser.c"
7966     break;
7967 
7968   case 775: /* server_iter_scrub_ns: VAR_ITER_SCRUB_NS STRING_ARG  */
7969 #line 4215 "util/configparser.y"
7970         {
7971 		OUTYY(("P(server_iter_scrub_ns:%s)\n", (yyvsp[0].str)));
7972 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7973 			yyerror("number expected");
7974 		else cfg_parser->cfg->iter_scrub_ns = atoi((yyvsp[0].str));
7975 		free((yyvsp[0].str));
7976 	}
7977 #line 7978 "util/configparser.c"
7978     break;
7979 
7980   case 776: /* server_iter_scrub_cname: VAR_ITER_SCRUB_CNAME STRING_ARG  */
7981 #line 4224 "util/configparser.y"
7982         {
7983 		OUTYY(("P(server_iter_scrub_cname:%s)\n", (yyvsp[0].str)));
7984 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7985 			yyerror("number expected");
7986 		else cfg_parser->cfg->iter_scrub_cname = atoi((yyvsp[0].str));
7987 		free((yyvsp[0].str));
7988 	}
7989 #line 7990 "util/configparser.c"
7990     break;
7991 
7992   case 777: /* server_max_global_quota: VAR_MAX_GLOBAL_QUOTA STRING_ARG  */
7993 #line 4233 "util/configparser.y"
7994         {
7995 		OUTYY(("P(server_max_global_quota:%s)\n", (yyvsp[0].str)));
7996 		if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
7997 			yyerror("number expected");
7998 		else cfg_parser->cfg->max_global_quota = atoi((yyvsp[0].str));
7999 		free((yyvsp[0].str));
8000 	}
8001 #line 8002 "util/configparser.c"
8002     break;
8003 
8004   case 778: /* ipsetstart: VAR_IPSET  */
8005 #line 4242 "util/configparser.y"
8006         {
8007 		OUTYY(("\nP(ipset:)\n"));
8008 		cfg_parser->started_toplevel = 1;
8009 	}
8010 #line 8011 "util/configparser.c"
8011     break;
8012 
8013   case 783: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
8014 #line 4252 "util/configparser.y"
8015         {
8016 	#ifdef USE_IPSET
8017 		OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
8018 		if(cfg_parser->cfg->ipset_name_v4)
8019 			yyerror("ipset name v4 override, there must be one "
8020 				"name for ip v4");
8021 		free(cfg_parser->cfg->ipset_name_v4);
8022 		cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
8023 	#else
8024 		OUTYY(("P(Compiled without ipset, ignoring)\n"));
8025 		free((yyvsp[0].str));
8026 	#endif
8027 	}
8028 #line 8029 "util/configparser.c"
8029     break;
8030 
8031   case 784: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
8032 #line 4267 "util/configparser.y"
8033         {
8034 	#ifdef USE_IPSET
8035 		OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
8036 		if(cfg_parser->cfg->ipset_name_v6)
8037 			yyerror("ipset name v6 override, there must be one "
8038 				"name for ip v6");
8039 		free(cfg_parser->cfg->ipset_name_v6);
8040 		cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
8041 	#else
8042 		OUTYY(("P(Compiled without ipset, ignoring)\n"));
8043 		free((yyvsp[0].str));
8044 	#endif
8045 	}
8046 #line 8047 "util/configparser.c"
8047     break;
8048 
8049 
8050 #line 8051 "util/configparser.c"
8051 
8052       default: break;
8053     }
8054   /* User semantic actions sometimes alter yychar, and that requires
8055      that yytoken be updated with the new translation.  We take the
8056      approach of translating immediately before every use of yytoken.
8057      One alternative is translating here after every semantic action,
8058      but that translation would be missed if the semantic action invokes
8059      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8060      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
8061      incorrect destructor might then be invoked immediately.  In the
8062      case of YYERROR or YYBACKUP, subsequent parser actions might lead
8063      to an incorrect destructor call or verbose syntax error message
8064      before the lookahead is translated.  */
8065   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
8066 
8067   YYPOPSTACK (yylen);
8068   yylen = 0;
8069 
8070   *++yyvsp = yyval;
8071 
8072   /* Now 'shift' the result of the reduction.  Determine what state
8073      that goes to, based on the state we popped back to and the rule
8074      number reduced by.  */
8075   {
8076     const int yylhs = yyr1[yyn] - YYNTOKENS;
8077     const int yyi = yypgoto[yylhs] + *yyssp;
8078     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
8079                ? yytable[yyi]
8080                : yydefgoto[yylhs]);
8081   }
8082 
8083   goto yynewstate;
8084 
8085 
8086 /*--------------------------------------.
8087 | yyerrlab -- here on detecting error.  |
8088 `--------------------------------------*/
8089 yyerrlab:
8090   /* Make sure we have latest lookahead translation.  See comments at
8091      user semantic actions for why this is necessary.  */
8092   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
8093   /* If not already recovering from an error, report this error.  */
8094   if (!yyerrstatus)
8095     {
8096       ++yynerrs;
8097       yyerror (YY_("syntax error"));
8098     }
8099 
8100   if (yyerrstatus == 3)
8101     {
8102       /* If just tried and failed to reuse lookahead token after an
8103          error, discard it.  */
8104 
8105       if (yychar <= YYEOF)
8106         {
8107           /* Return failure if at end of input.  */
8108           if (yychar == YYEOF)
8109             YYABORT;
8110         }
8111       else
8112         {
8113           yydestruct ("Error: discarding",
8114                       yytoken, &yylval);
8115           yychar = YYEMPTY;
8116         }
8117     }
8118 
8119   /* Else will try to reuse lookahead token after shifting the error
8120      token.  */
8121   goto yyerrlab1;
8122 
8123 
8124 /*---------------------------------------------------.
8125 | yyerrorlab -- error raised explicitly by YYERROR.  |
8126 `---------------------------------------------------*/
8127 yyerrorlab:
8128   /* Pacify compilers when the user code never invokes YYERROR and the
8129      label yyerrorlab therefore never appears in user code.  */
8130   if (0)
8131     YYERROR;
8132 
8133   /* Do not reclaim the symbols of the rule whose action triggered
8134      this YYERROR.  */
8135   YYPOPSTACK (yylen);
8136   yylen = 0;
8137   YY_STACK_PRINT (yyss, yyssp);
8138   yystate = *yyssp;
8139   goto yyerrlab1;
8140 
8141 
8142 /*-------------------------------------------------------------.
8143 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
8144 `-------------------------------------------------------------*/
8145 yyerrlab1:
8146   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
8147 
8148   /* Pop stack until we find a state that shifts the error token.  */
8149   for (;;)
8150     {
8151       yyn = yypact[yystate];
8152       if (!yypact_value_is_default (yyn))
8153         {
8154           yyn += YYSYMBOL_YYerror;
8155           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
8156             {
8157               yyn = yytable[yyn];
8158               if (0 < yyn)
8159                 break;
8160             }
8161         }
8162 
8163       /* Pop the current state because it cannot handle the error token.  */
8164       if (yyssp == yyss)
8165         YYABORT;
8166 
8167 
8168       yydestruct ("Error: popping",
8169                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
8170       YYPOPSTACK (1);
8171       yystate = *yyssp;
8172       YY_STACK_PRINT (yyss, yyssp);
8173     }
8174 
8175   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8176   *++yyvsp = yylval;
8177   YY_IGNORE_MAYBE_UNINITIALIZED_END
8178 
8179 
8180   /* Shift the error token.  */
8181   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
8182 
8183   yystate = yyn;
8184   goto yynewstate;
8185 
8186 
8187 /*-------------------------------------.
8188 | yyacceptlab -- YYACCEPT comes here.  |
8189 `-------------------------------------*/
8190 yyacceptlab:
8191   yyresult = 0;
8192   goto yyreturn;
8193 
8194 
8195 /*-----------------------------------.
8196 | yyabortlab -- YYABORT comes here.  |
8197 `-----------------------------------*/
8198 yyabortlab:
8199   yyresult = 1;
8200   goto yyreturn;
8201 
8202 
8203 #if !defined yyoverflow
8204 /*-------------------------------------------------.
8205 | yyexhaustedlab -- memory exhaustion comes here.  |
8206 `-------------------------------------------------*/
8207 yyexhaustedlab:
8208   yyerror (YY_("memory exhausted"));
8209   yyresult = 2;
8210   goto yyreturn;
8211 #endif
8212 
8213 
8214 /*-------------------------------------------------------.
8215 | yyreturn -- parsing is finished, clean up and return.  |
8216 `-------------------------------------------------------*/
8217 yyreturn:
8218   if (yychar != YYEMPTY)
8219     {
8220       /* Make sure we have latest lookahead translation.  See comments at
8221          user semantic actions for why this is necessary.  */
8222       yytoken = YYTRANSLATE (yychar);
8223       yydestruct ("Cleanup: discarding lookahead",
8224                   yytoken, &yylval);
8225     }
8226   /* Do not reclaim the symbols of the rule whose action triggered
8227      this YYABORT or YYACCEPT.  */
8228   YYPOPSTACK (yylen);
8229   YY_STACK_PRINT (yyss, yyssp);
8230   while (yyssp != yyss)
8231     {
8232       yydestruct ("Cleanup: popping",
8233                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
8234       YYPOPSTACK (1);
8235     }
8236 #ifndef yyoverflow
8237   if (yyss != yyssa)
8238     YYSTACK_FREE (yyss);
8239 #endif
8240 
8241   return yyresult;
8242 }
8243 
8244 #line 4281 "util/configparser.y"
8245 
8246 
8247 /* parse helper routines could be here */
8248 static void
8249 validate_respip_action(const char* action)
8250 {
8251 	if(strcmp(action, "deny")!=0 &&
8252 		strcmp(action, "redirect")!=0 &&
8253 		strcmp(action, "inform")!=0 &&
8254 		strcmp(action, "inform_deny")!=0 &&
8255 		strcmp(action, "always_transparent")!=0 &&
8256 		strcmp(action, "always_refuse")!=0 &&
8257 		strcmp(action, "always_nxdomain")!=0)
8258 	{
8259 		yyerror("response-ip action: expected deny, redirect, "
8260 			"inform, inform_deny, always_transparent, "
8261 			"always_refuse or always_nxdomain");
8262 	}
8263 }
8264 
8265 static void
8266 validate_acl_action(const char* action)
8267 {
8268 	if(strcmp(action, "deny")!=0 &&
8269 		strcmp(action, "refuse")!=0 &&
8270 		strcmp(action, "deny_non_local")!=0 &&
8271 		strcmp(action, "refuse_non_local")!=0 &&
8272 		strcmp(action, "allow_setrd")!=0 &&
8273 		strcmp(action, "allow")!=0 &&
8274 		strcmp(action, "allow_snoop")!=0 &&
8275 		strcmp(action, "allow_cookie")!=0)
8276 	{
8277 		yyerror("expected deny, refuse, deny_non_local, "
8278 			"refuse_non_local, allow, allow_setrd, "
8279 			"allow_snoop or allow_cookie as access control action");
8280 	}
8281 }
8282