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