Coverage Report

Created: 2023-03-26 06:07

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