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