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